From 41d72a99588583365fc9a67eb3a65e29ad7f2a45 Mon Sep 17 00:00:00 2001 From: Hugo Bourgeon Date: Fri, 23 Aug 2024 16:39:38 +0200 Subject: [PATCH] Merge --- .../node_modules/.vite/deps/_metadata.json | 23 +- .../{chunk-33KXLYU5.js => chunk-IS2ZBFBB.js} | 9 +- ...-33KXLYU5.js.map => chunk-IS2ZBFBB.js.map} | 2 +- .../node_modules/.vite/deps/chunk-LBH6F3OL.js | 3334 - .../.vite/deps/chunk-LBH6F3OL.js.map | 7 - .../site/node_modules/.vite/deps/three.js | 2 +- .../three_addons_loaders_GLTFLoader__js.js | 2611 +- ...three_addons_loaders_GLTFLoader__js.js.map | 8 +- .../deps/three_examples_jsm_Addons__js.js | 117702 --------------- .../deps/three_examples_jsm_Addons__js.js.map | 7 - 10 files changed, 2622 insertions(+), 121083 deletions(-) rename site/interface/site/node_modules/.vite/deps/{chunk-33KXLYU5.js => chunk-IS2ZBFBB.js} (99%) rename site/interface/site/node_modules/.vite/deps/{chunk-33KXLYU5.js.map => chunk-IS2ZBFBB.js.map} (69%) delete mode 100644 site/interface/site/node_modules/.vite/deps/chunk-LBH6F3OL.js delete mode 100644 site/interface/site/node_modules/.vite/deps/chunk-LBH6F3OL.js.map delete mode 100644 site/interface/site/node_modules/.vite/deps/three_examples_jsm_Addons__js.js delete mode 100644 site/interface/site/node_modules/.vite/deps/three_examples_jsm_Addons__js.js.map diff --git a/site/interface/site/node_modules/.vite/deps/_metadata.json b/site/interface/site/node_modules/.vite/deps/_metadata.json index 2038327..90294ee 100644 --- a/site/interface/site/node_modules/.vite/deps/_metadata.json +++ b/site/interface/site/node_modules/.vite/deps/_metadata.json @@ -1,34 +1,25 @@ { - "hash": "86ff4072", - "configHash": "2420ea4a", + "hash": "ea0e6e05", + "configHash": "d101c033", "lockfileHash": "7685a2f8", - "browserHash": "b6f3f384", + "browserHash": "108e50fa", "optimized": { "three": { "src": "../../three/build/three.module.js", "file": "three.js", - "fileHash": "08180e93", + "fileHash": "53e4e226", "needsInterop": false }, "three/addons/loaders/GLTFLoader.js": { "src": "../../three/examples/jsm/loaders/GLTFLoader.js", "file": "three_addons_loaders_GLTFLoader__js.js", - "fileHash": "b6be6fe1", - "needsInterop": false - }, - "three/examples/jsm/Addons.js": { - "src": "../../three/examples/jsm/Addons.js", - "file": "three_examples_jsm_Addons__js.js", - "fileHash": "77d8b50e", + "fileHash": "6c89dd42", "needsInterop": false } }, "chunks": { - "chunk-LBH6F3OL": { - "file": "chunk-LBH6F3OL.js" - }, - "chunk-33KXLYU5": { - "file": "chunk-33KXLYU5.js" + "chunk-IS2ZBFBB": { + "file": "chunk-IS2ZBFBB.js" } } } \ No newline at end of file diff --git a/site/interface/site/node_modules/.vite/deps/chunk-33KXLYU5.js b/site/interface/site/node_modules/.vite/deps/chunk-IS2ZBFBB.js similarity index 99% rename from site/interface/site/node_modules/.vite/deps/chunk-33KXLYU5.js rename to site/interface/site/node_modules/.vite/deps/chunk-IS2ZBFBB.js index 14d8d68..18a4a04 100644 --- a/site/interface/site/node_modules/.vite/deps/chunk-33KXLYU5.js +++ b/site/interface/site/node_modules/.vite/deps/chunk-IS2ZBFBB.js @@ -1,9 +1,3 @@ -var __defProp = Object.defineProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; - // node_modules/three/build/three.module.js var REVISION = "167"; var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 }; @@ -30710,7 +30704,6 @@ if (typeof window !== "undefined") { } export { - __export, REVISION, MOUSE, TOUCH, @@ -31139,4 +31132,4 @@ three/build/three.module.js: * SPDX-License-Identifier: MIT *) */ -//# sourceMappingURL=chunk-33KXLYU5.js.map +//# sourceMappingURL=chunk-IS2ZBFBB.js.map diff --git a/site/interface/site/node_modules/.vite/deps/chunk-33KXLYU5.js.map b/site/interface/site/node_modules/.vite/deps/chunk-IS2ZBFBB.js.map similarity index 69% rename from site/interface/site/node_modules/.vite/deps/chunk-33KXLYU5.js.map rename to site/interface/site/node_modules/.vite/deps/chunk-IS2ZBFBB.js.map index 371ccb7..cd4aafa 100644 --- a/site/interface/site/node_modules/.vite/deps/chunk-33KXLYU5.js.map +++ b/site/interface/site/node_modules/.vite/deps/chunk-IS2ZBFBB.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../three/build/three.module.js"], "sourcesContent": ["/**\n * @license\n * Copyright 2010-2024 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '167';\n\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 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 ConstantColorFactor = 211;\nconst OneMinusConstantColorFactor = 212;\nconst ConstantAlphaFactor = 213;\nconst OneMinusConstantAlphaFactor = 214;\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;\nconst AgXToneMapping = 6;\nconst NeutralToneMapping = 7;\nconst AttachedBindMode = 'attached';\nconst DetachedBindMode = 'detached';\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 UnsignedInt5999Type = 35902;\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 RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst RGB_BPTC_SIGNED_Format = 36494;\nconst RGB_BPTC_UNSIGNED_Format = 36495;\nconst RED_RGTC1_Format = 36283;\nconst SIGNED_RED_RGTC1_Format = 36284;\nconst RED_GREEN_RGTC2_Format = 36285;\nconst SIGNED_RED_GREEN_RGTC2_Format = 36286;\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 BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst RGBDepthPacking = 3202;\nconst RGDepthPacking = 3203;\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';\nconst DisplayP3ColorSpace = 'display-p3';\nconst LinearDisplayP3ColorSpace = 'display-p3-linear';\n\nconst LinearTransfer = 'linear';\nconst SRGBTransfer = 'srgb';\n\nconst Rec709Primaries = 'rec709';\nconst P3Primaries = 'p3';\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 NeverCompare = 512;\nconst LessCompare = 513;\nconst EqualCompare = 514;\nconst LessEqualCompare = 515;\nconst GreaterCompare = 516;\nconst NotEqualCompare = 517;\nconst GreaterEqualCompare = 518;\nconst AlwaysCompare = 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 WebGLCoordinateSystem = 2000;\nconst WebGPUCoordinateSystem = 2001;\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 = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\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 Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\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 Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, - 1.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 Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\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 Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.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\nconst MathUtils = {\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\n};\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\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 ) {\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 ) {\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 = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( 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\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;\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 ) {\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\nclass Matrix3 {\n\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\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 ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\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\t//\n\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\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\nconst _m3 = /*@__PURE__*/ new Matrix3();\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; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\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 createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nconst _cache = {};\n\nfunction warnOnce( message ) {\n\n\tif ( message in _cache ) return;\n\n\t_cache[ message ] = true;\n\n\tconsole.warn( message );\n\n}\n\nfunction probeAsync( gl, sync, interval ) {\n\n\treturn new Promise( function ( resolve, reject ) {\n\n\t\tfunction probe() {\n\n\t\t\tswitch ( gl.clientWaitSync( sync, gl.SYNC_FLUSH_COMMANDS_BIT, 0 ) ) {\n\n\t\t\t\tcase gl.WAIT_FAILED:\n\t\t\t\t\treject();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase gl.TIMEOUT_EXPIRED:\n\t\t\t\t\tsetTimeout( probe, interval );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tresolve();\n\n\t\t\t}\n\n\t\t}\n\n\t\tsetTimeout( probe, interval );\n\n\t} );\n\n}\n\n/**\n * Matrices converting P3 <-> Rec. 709 primaries, without gamut mapping\n * or clipping. Based on W3C specifications for sRGB and Display P3,\n * and ICC specifications for the D50 connection space. Values in/out\n * are _linear_ sRGB and _linear_ Display P3.\n *\n * Note that both sRGB and Display P3 use the sRGB transfer functions.\n *\n * Reference:\n * - http://www.russellcottrell.com/photo/matrixCalculator.htm\n */\n\nconst LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /*@__PURE__*/ new Matrix3().set(\n\t0.8224621, 0.177538, 0.0,\n\t0.0331941, 0.9668058, 0.0,\n\t0.0170827, 0.0723974, 0.9105199,\n);\n\nconst LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /*@__PURE__*/ new Matrix3().set(\n\t1.2249401, - 0.2249404, 0.0,\n\t- 0.0420569, 1.0420571, 0.0,\n\t- 0.0196376, - 0.0786361, 1.0982735\n);\n\n/**\n * Defines supported color spaces by transfer function and primaries,\n * and provides conversions to/from the Linear-sRGB reference space.\n */\nconst COLOR_SPACES = {\n\t[ LinearSRGBColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\tluminanceCoefficients: [ 0.2126, 0.7152, 0.0722 ],\n\t\ttoReference: ( color ) => color,\n\t\tfromReference: ( color ) => color,\n\t},\n\t[ SRGBColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\tluminanceCoefficients: [ 0.2126, 0.7152, 0.0722 ],\n\t\ttoReference: ( color ) => color.convertSRGBToLinear(),\n\t\tfromReference: ( color ) => color.convertLinearToSRGB(),\n\t},\n\t[ LinearDisplayP3ColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: P3Primaries,\n\t\tluminanceCoefficients: [ 0.2289, 0.6917, 0.0793 ],\n\t\ttoReference: ( color ) => color.applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ),\n\t},\n\t[ DisplayP3ColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: P3Primaries,\n\t\tluminanceCoefficients: [ 0.2289, 0.6917, 0.0793 ],\n\t\ttoReference: ( color ) => color.convertSRGBToLinear().applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ).convertLinearToSRGB(),\n\t},\n};\n\nconst SUPPORTED_WORKING_COLOR_SPACES = new Set( [ LinearSRGBColorSpace, LinearDisplayP3ColorSpace ] );\n\nconst ColorManagement = {\n\n\tenabled: true,\n\n\t_workingColorSpace: LinearSRGBColorSpace,\n\n\tget workingColorSpace() {\n\n\t\treturn this._workingColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tif ( ! SUPPORTED_WORKING_COLOR_SPACES.has( colorSpace ) ) {\n\n\t\t\tthrow new Error( `Unsupported working color space, \"${ colorSpace }\".` );\n\n\t\t}\n\n\t\tthis._workingColorSpace = colorSpace;\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tconst sourceToReference = COLOR_SPACES[ sourceColorSpace ].toReference;\n\t\tconst targetFromReference = COLOR_SPACES[ targetColorSpace ].fromReference;\n\n\t\treturn targetFromReference( sourceToReference( color ) );\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\tgetPrimaries: function ( colorSpace ) {\n\n\t\treturn COLOR_SPACES[ colorSpace ].primaries;\n\n\t},\n\n\tgetTransfer: function ( colorSpace ) {\n\n\t\tif ( colorSpace === NoColorSpace ) return LinearTransfer;\n\n\t\treturn COLOR_SPACES[ colorSpace ].transfer;\n\n\t},\n\n\tgetLuminanceCoefficients: function ( target, colorSpace = this._workingColorSpace ) {\n\n\t\treturn target.fromArray( COLOR_SPACES[ colorSpace ].luminanceCoefficients );\n\n\t},\n\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\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\nlet _sourceId = 0;\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _sourceId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\t\tthis.dataReady = true;\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.from( 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\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 = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {\n\n\t\tsuper();\n\n\t\tthis.isTexture = true;\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\t\tthis.channel = 0;\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\tthis.colorSpace = colorSpace;\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.pmremVersion = 0; // 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 = null ) {\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\t\tthis.channel = source.channel;\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.colorSpace = source.colorSpace;\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.6,\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\t\t\tchannel: this.channel,\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\tinternalFormat: this.internalFormat,\n\t\t\ttype: this.type,\n\t\t\tcolorSpace: this.colorSpace,\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\tgenerateMipmaps: this.generateMipmaps,\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) 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\tset needsPMREMUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.pmremVersion ++;\n\n\t\t}\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.DEFAULT_ANISOTROPY = 1;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\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 ) {\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 ) {\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\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\t\tthis.w = e[ 15 ];\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 = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\t\tthis.w = Math.trunc( 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 ) {\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\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 RenderTarget extends EventDispatcher {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isRenderTarget = true;\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\toptions = Object.assign( {\n\t\t\tgenerateMipmaps: false,\n\t\t\tinternalFormat: null,\n\t\t\tminFilter: LinearFilter,\n\t\t\tdepthBuffer: true,\n\t\t\tstencilBuffer: false,\n\t\t\tresolveDepthBuffer: true,\n\t\t\tresolveStencilBuffer: true,\n\t\t\tdepthTexture: null,\n\t\t\tsamples: 0,\n\t\t\tcount: 1\n\t\t}, options );\n\n\t\tconst texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\ttexture.flipY = false;\n\t\ttexture.generateMipmaps = options.generateMipmaps;\n\t\ttexture.internalFormat = options.internalFormat;\n\n\t\tthis.textures = [];\n\n\t\tconst count = options.count;\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.textures[ i ] = texture.clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\tthis.depthBuffer = options.depthBuffer;\n\t\tthis.stencilBuffer = options.stencilBuffer;\n\n\t\tthis.resolveDepthBuffer = options.resolveDepthBuffer;\n\t\tthis.resolveStencilBuffer = options.resolveStencilBuffer;\n\n\t\tthis.depthTexture = options.depthTexture;\n\n\t\tthis.samples = options.samples;\n\n\t}\n\n\tget texture() {\n\n\t\treturn this.textures[ 0 ];\n\n\t}\n\n\tset texture( value ) {\n\n\t\tthis.textures[ 0 ] = value;\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.textures.length; i < il; i ++ ) {\n\n\t\t\t\tthis.textures[ i ].image.width = width;\n\t\t\t\tthis.textures[ i ].image.height = height;\n\t\t\t\tthis.textures[ 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}\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.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.textures.length = 0;\n\n\t\tfor ( let i = 0, il = source.textures.length; i < il; i ++ ) {\n\n\t\t\tthis.textures[ i ] = source.textures[ i ].clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\n\t\t}\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\tthis.resolveDepthBuffer = source.resolveDepthBuffer;\n\t\tthis.resolveStencilBuffer = source.resolveStencilBuffer;\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\nclass WebGLRenderTarget extends RenderTarget {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t}\n\n}\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.isDataArrayTexture = true;\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\tthis.layerUpdates = new Set();\n\n\t}\n\n\taddLayerUpdate( layerIndex ) {\n\n\t\tthis.layerUpdates.add( layerIndex );\n\n\t}\n\n\tclearLayerUpdates() {\n\n\t\tthis.layerUpdates.clear();\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\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\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.isData3DTexture = true;\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\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGL3DRenderTarget = true;\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\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\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 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 = true ) {\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 === true ) 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 ) {\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(); // normalize calls _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// sets this quaternion to a uniform random unit quaternnion\n\n\t\t// Ken Shoemake\n\t\t// Uniform random rotations\n\t\t// D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992.\n\n\t\tconst theta1 = 2 * Math.PI * Math.random();\n\t\tconst theta2 = 2 * Math.PI * Math.random();\n\n\t\tconst x0 = Math.random();\n\t\tconst r1 = Math.sqrt( 1 - x0 );\n\t\tconst r2 = Math.sqrt( x0 );\n\n\t\treturn this.set(\n\t\t\tr1 * Math.sin( theta1 ),\n\t\t\tr1 * Math.cos( theta1 ),\n\t\t\tr2 * Math.sin( theta2 ),\n\t\t\tr2 * Math.cos( theta2 ),\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\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.toArray();\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\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\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 ) {\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 ) {\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 ) {\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\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\t// quaternion q is assumed to have unit length\n\n\t\tconst vx = this.x, vy = this.y, vz = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// t = 2 * cross( q.xyz, v );\n\t\tconst tx = 2 * ( qy * vz - qz * vy );\n\t\tconst ty = 2 * ( qz * vx - qx * vz );\n\t\tconst tz = 2 * ( qx * vy - qy * vx );\n\n\t\t// v + q.w * t + cross( q.xyz, t );\n\t\tthis.x = vx + qw * tx + qy * tz - qz * ty;\n\t\tthis.y = vy + qw * ty + qz * tx - qx * tz;\n\t\tthis.z = vz + qw * tz + qx * ty - qy * tx;\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 = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( 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 ) {\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\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\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 ) {\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// https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst theta = Math.random() * Math.PI * 2;\n\t\tconst u = Math.random() * 2 - 1;\n\t\tconst c = Math.sqrt( 1 - u * u );\n\n\t\tthis.x = c * Math.cos( theta );\n\t\tthis.y = u;\n\t\tthis.z = c * Math.sin( theta );\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\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.isBox3 = true;\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\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromArray( array, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromBufferAttribute( attribute, i ) );\n\n\t\t}\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\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\t\t// precise AABB computation based on vertex data requires at least a position attribute.\n\t\t\t// instancing isn't supported so far and uses the normal (conservative) code path.\n\n\t\t\tif ( precise === true && positionAttribute !== undefined && object.isInstancedMesh !== true ) {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tif ( object.isMesh === true ) {\n\n\t\t\t\t\t\tobject.getVertexPosition( i, _vector$b );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_vector$b.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_vector$b.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 ( object.boundingBox !== undefined ) {\n\n\t\t\t\t\t// object-level bounding box\n\n\t\t\t\t\tif ( object.boundingBox === null ) {\n\n\t\t\t\t\t\tobject.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( object.boundingBox );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// geometry-level bounding box\n\n\t\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( geometry.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\t_box$4.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$4 );\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;\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;\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$3.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$4.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$3 );\n\t\t_f1.subVectors( _v2$4, _v1$7 );\n\t\t_f2.subVectors( _v0$3, _v2$4 );\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$3, _v1$7, _v2$4, _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$3, _v1$7, _v2$4, _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$3, _v1$7, _v2$4, _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\treturn this.clampPoint( point, _vector$b ).distanceTo( point );\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\ttarget.makeEmpty();\n\n\t\t} else {\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\t}\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\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$4 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$3 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$4 = /*@__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$3 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.isSphere = true;\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$3.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\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t_v1$6.subVectors( point, this.center );\n\n\t\tconst lengthSq = _v1$6.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t// calculate the minimal sphere\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\n\t\t\tconst delta = ( length - this.radius ) * 0.5;\n\n\t\t\tthis.center.addScaledVector( _v1$6, delta / length );\n\n\t\t\tthis.radius += delta;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t this.radius = Math.max( this.radius, sphere.radius );\n\n\t\t} else {\n\n\t\t\t_v2$3.subVectors( sphere.center, this.center ).setLength( sphere.radius );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _v2$3 ) );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _v2$3 ) );\n\n\t\t}\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.origin ).addScaledVector( this.direction, t );\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.origin ).addScaledVector( this.direction, directionDistance );\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.origin ).addScaledVector( this.direction, directionDistance );\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.origin ).addScaledVector( this.direction, s0 );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 );\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 t1 is behind the ray - if so, return null\n\t\tif ( 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\tif ( tymin > tmin || isNaN( tmin ) ) tmin = tymin;\n\n\t\tif ( tymax < tmax || isNaN( 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( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\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 ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\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\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\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\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\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$4.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$4.elements[ 0 ] *= invSX;\n\t\t_m1$4.elements[ 1 ] *= invSX;\n\t\t_m1$4.elements[ 2 ] *= invSX;\n\n\t\t_m1$4.elements[ 4 ] *= invSY;\n\t\t_m1$4.elements[ 5 ] *= invSY;\n\t\t_m1$4.elements[ 6 ] *= invSY;\n\n\t\t_m1$4.elements[ 8 ] *= invSZ;\n\t\t_m1$4.elements[ 9 ] *= invSZ;\n\t\t_m1$4.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$4 );\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, coordinateSystem = WebGLCoordinateSystem ) {\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\n\t\tlet c, d;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\td = ( - 2 * far * near ) / ( far - near );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tc = - far / ( far - near );\n\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\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, coordinateSystem = WebGLCoordinateSystem ) {\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\n\t\tlet z, zInv;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tz = ( far + near ) * p;\n\t\t\tzInv = - 2 * p;\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tz = near * p;\n\t\t\tzInv = - 1 * p;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0; \t\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = zInv;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\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\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$4 = /*@__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$2 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {\n\n\t\tthis.isEuler = true;\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$2.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$2, 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.DEFAULT_ORDER = 'XYZ';\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$3 = /*@__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\nconst _childaddedEvent = { type: 'childadded', child: null };\nconst _childremovedEvent = { type: 'childremoved', child: null };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\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.DEFAULT_UP.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.DEFAULT_MATRIX_AUTO_UPDATE;\n\n\t\tthis.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer\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\tonBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\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\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( _m1$3.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$3.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$3.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$3 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$3.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$3 );\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\tobject.removeFromParent();\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t\t_childaddedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t\t_childaddedEvent.child = null;\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\t_childremovedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childremovedEvent );\n\t\t\t_childremovedEvent.child = null;\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\treturn this.remove( ... this.children );\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$3.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$3.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$3 );\n\n\t\tobject.removeFromParent();\n\t\tobject.parent = this;\n\t\tthis.children.push( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t_childaddedEvent.child = object;\n\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t_childaddedEvent.child = null;\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\tgetObjectsByProperty( name, value, result = [] ) {\n\n\t\tif ( this[ name ] === value ) result.push( 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 ].getObjectsByProperty( name, value, result );\n\n\t\t}\n\n\t\treturn result;\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.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\tif ( this.parent === null ) {\n\n\t\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t\t}\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// make sure descendants are updated if required\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tchild.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.matrixWorldAutoUpdate === true ) {\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}\n\n\t\t// make sure descendants are updated\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\tconst child = children[ i ];\n\n\t\t\t\tchild.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.6,\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 ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\t\tobject.up = this.up.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\tif ( this.isBatchedMesh ) {\n\n\t\t\tobject.type = 'BatchedMesh';\n\t\t\tobject.perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\t\tobject.sortObjects = this.sortObjects;\n\n\t\t\tobject.drawRanges = this._drawRanges;\n\t\t\tobject.reservedRanges = this._reservedRanges;\n\n\t\t\tobject.visibility = this._visibility;\n\t\t\tobject.active = this._active;\n\t\t\tobject.bounds = this._bounds.map( bound => ( {\n\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\tboxMin: bound.box.min.toArray(),\n\t\t\t\tboxMax: bound.box.max.toArray(),\n\n\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\tsphereRadius: bound.sphere.radius,\n\t\t\t\tsphereCenter: bound.sphere.center.toArray()\n\t\t\t} ) );\n\n\t\t\tobject.maxInstanceCount = this._maxInstanceCount;\n\t\t\tobject.maxVertexCount = this._maxVertexCount;\n\t\t\tobject.maxIndexCount = this._maxIndexCount;\n\n\t\t\tobject.geometryInitialized = this._geometryInitialized;\n\t\t\tobject.geometryCount = this._geometryCount;\n\n\t\t\tobject.matricesTexture = this._matricesTexture.toJSON( meta );\n\n\t\t\tif ( this._colorsTexture !== null ) object.colorsTexture = this._colorsTexture.toJSON( meta );\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tobject.boundingSphere = {\n\t\t\t\t\tcenter: object.boundingSphere.center.toArray(),\n\t\t\t\t\tradius: object.boundingSphere.radius\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tobject.boundingBox = {\n\t\t\t\t\tmin: object.boundingBox.min.toArray(),\n\t\t\t\t\tmax: object.boundingBox.max.toArray()\n\t\t\t\t};\n\n\t\t\t}\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 && this.environment.isRenderTargetTexture !== true ) {\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\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\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.animations = source.animations.slice();\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.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$2 = /*@__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$2.subVectors( a, b );\n\t\ttarget.cross( _v0$2 );\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$2.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$2.dot( _v0$2 );\n\t\tconst dot01 = _v0$2.dot( _v1$3 );\n\t\tconst dot02 = _v0$2.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\ttarget.set( 0, 0, 0 );\n\t\t\treturn null;\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\t// if the triangle is degenerate then we can't contain a point\n\t\tif ( this.getBarycoord( point, a, b, c, _v3$2 ) === null ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn ( _v3$2.x >= 0 ) && ( _v3$2.y >= 0 ) && ( ( _v3$2.x + _v3$2.y ) <= 1 );\n\n\t}\n\n\tstatic getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {\n\n\t\tif ( this.getBarycoord( point, p1, p2, p3, _v3$2 ) === null ) {\n\n\t\t\ttarget.x = 0;\n\t\t\ttarget.y = 0;\n\t\t\tif ( 'z' in target ) target.z = 0;\n\t\t\tif ( 'w' in target ) target.w = 0;\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( v1, _v3$2.x );\n\t\ttarget.addScaledVector( v2, _v3$2.y );\n\t\ttarget.addScaledVector( v3, _v3$2.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$2.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$2.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$2.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$2.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\tgetInterpolation( point, v1, v2, v3, target ) {\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, 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\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction 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\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\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 = ColorManagement.workingColorSpace ) {\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 = ColorManagement.workingColorSpace ) {\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 = /^(\\w+)\\(([^\\)]*)\\)/.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\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\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\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\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\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\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\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\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\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\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\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( 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( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\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 = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.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 = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\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 } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\treturn this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );\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\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\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\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\nconst _color = /*@__PURE__*/ new Color();\n\nColor.NAMES = _colorKeywords;\n\nlet _materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\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\t\tthis.alphaHash = 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\t\tthis.blendColor = new Color( 0, 0, 0 );\n\t\tthis.blendAlpha = 0;\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\t\tthis.forceSinglePass = 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\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: parameter '${ key }' has value of undefined.` );\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.Material: '${ key }' is not a property of THREE.${ this.type }.` );\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.6,\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 !== undefined && 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.dispersion !== undefined ) data.dispersion = this.dispersion;\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;\n\t\tif ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;\n\n\t\tif ( this.anisotropyMap && this.anisotropyMap.isTexture ) {\n\n\t\t\tdata.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;\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.envMapRotation !== undefined ) data.envMapRotation = this.envMapRotation.toArray();\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 && this.attenuationDistance !== Infinity ) 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 === true ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = true;\n\n\t\tif ( this.blendSrc !== SrcAlphaFactor ) data.blendSrc = this.blendSrc;\n\t\tif ( this.blendDst !== OneMinusSrcAlphaFactor ) data.blendDst = this.blendDst;\n\t\tif ( this.blendEquation !== AddEquation ) data.blendEquation = this.blendEquation;\n\t\tif ( this.blendSrcAlpha !== null ) data.blendSrcAlpha = this.blendSrcAlpha;\n\t\tif ( this.blendDstAlpha !== null ) data.blendDstAlpha = this.blendDstAlpha;\n\t\tif ( this.blendEquationAlpha !== null ) data.blendEquationAlpha = this.blendEquationAlpha;\n\t\tif ( this.blendColor && this.blendColor.isColor ) data.blendColor = this.blendColor.getHex();\n\t\tif ( this.blendAlpha !== 0 ) data.blendAlpha = this.blendAlpha;\n\n\t\tif ( this.depthFunc !== LessEqualDepth ) data.depthFunc = this.depthFunc;\n\t\tif ( this.depthTest === false ) data.depthTest = this.depthTest;\n\t\tif ( this.depthWrite === false ) data.depthWrite = this.depthWrite;\n\t\tif ( this.colorWrite === false ) data.colorWrite = this.colorWrite;\n\n\t\tif ( this.stencilWriteMask !== 0xff ) data.stencilWriteMask = this.stencilWriteMask;\n\t\tif ( this.stencilFunc !== AlwaysStencilFunc ) data.stencilFunc = this.stencilFunc;\n\t\tif ( this.stencilRef !== 0 ) data.stencilRef = this.stencilRef;\n\t\tif ( this.stencilFuncMask !== 0xff ) data.stencilFuncMask = this.stencilFuncMask;\n\t\tif ( this.stencilFail !== KeepStencilOp ) data.stencilFail = this.stencilFail;\n\t\tif ( this.stencilZFail !== KeepStencilOp ) data.stencilZFail = this.stencilZFail;\n\t\tif ( this.stencilZPass !== KeepStencilOp ) data.stencilZPass = this.stencilZPass;\n\t\tif ( this.stencilWrite === true ) data.stencilWrite = this.stencilWrite;\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.alphaHash === true ) data.alphaHash = true;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = true;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;\n\t\tif ( this.forceSinglePass === true ) data.forceSinglePass = true;\n\n\t\tif ( this.wireframe === true ) data.wireframe = true;\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 = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) 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\t\tthis.blendColor.copy( source.blendColor );\n\t\tthis.blendAlpha = source.blendAlpha;\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.alphaHash = source.alphaHash;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\tthis.forceSinglePass = source.forceSinglePass;\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\tonBuild( /* shaderobject, renderer */ ) {\n\n\t\tconsole.warn( 'Material: onBuild() has been removed.' ); // @deprecated, r166\n\n\t}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {\n\n\t\tconsole.warn( 'Material: onBeforeRender() has been removed.' ); // @deprecated, r166\n\n\t}\n\n\n}\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\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.envMapRotation = new Euler();\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.envMapRotation.copy( source.envMapRotation );\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\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < - 27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < - 14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= ~ 0x00800000; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n// float32 to float16\n\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, - 65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n// float16 to float32\n\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\nconst DataUtils = {\n\ttoHalfFloat: toHalfFloat,\n\tfromHalfFloat: fromHalfFloat,\n};\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized = false ) {\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.isBufferAttribute = true;\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;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis._updateRange = { offset: 0, count: - 1 };\n\t\tthis.updateRanges = [];\n\t\tthis.gpuType = FloatType;\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\tget updateRange() {\n\n\t\twarnOnce( 'THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\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\t\tthis.gpuType = source.gpuType;\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\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\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.itemSize + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.array[ index * this.itemSize + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\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\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\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\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\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\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\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\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\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\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\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.from( 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\n\t\treturn data;\n\n\t}\n\n}\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\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = fromHalfFloat( this.array[ index * this.itemSize ] );\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = toHalfFloat( x );\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] );\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] );\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] );\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( 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\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( 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\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\t\tthis.array[ index + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n}\n\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\nlet _id$2 = 0;\n\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$2 = /*@__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\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$2 ++ } );\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$2.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1$2 );\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$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\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$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\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$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\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$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\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$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\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.', 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$2.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$2.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$2.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$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\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.', 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$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$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 positionAttribute = attributes.position;\n\t\tconst normalAttribute = attributes.normal;\n\t\tconst uvAttribute = attributes.uv;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * positionAttribute.count ), 4 ) );\n\n\t\t}\n\n\t\tconst tangentAttribute = this.getAttribute( 'tangent' );\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < positionAttribute.count; 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.fromBufferAttribute( positionAttribute, a );\n\t\t\tvB.fromBufferAttribute( positionAttribute, b );\n\t\t\tvC.fromBufferAttribute( positionAttribute, c );\n\n\t\t\tuvA.fromBufferAttribute( uvAttribute, a );\n\t\t\tuvB.fromBufferAttribute( uvAttribute, b );\n\t\t\tuvC.fromBufferAttribute( uvAttribute, c );\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: index.count\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\tindex.getX( j + 0 ),\n\t\t\t\t\tindex.getX( j + 1 ),\n\t\t\t\t\tindex.getX( 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.fromBufferAttribute( normalAttribute, v );\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\ttangentAttribute.setXYZW( v, tmp.x, tmp.y, tmp.z, 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( index.getX( j + 0 ) );\n\t\t\t\thandleVertex( index.getX( j + 1 ) );\n\t\t\t\thandleVertex( index.getX( 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\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.6,\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\treturn 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\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$3 = /*@__PURE__*/ new Matrix4();\nconst _ray$3 = /*@__PURE__*/ new Ray();\nconst _sphere$6 = /*@__PURE__*/ new Sphere();\nconst _sphereHitAt = /*@__PURE__*/ new Vector3();\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 _morphA = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _normalA = /*@__PURE__*/ new Vector3();\nconst _normalB = /*@__PURE__*/ new Vector3();\nconst _normalC = /*@__PURE__*/ new Vector3();\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.isMesh = true;\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, recursive ) {\n\n\t\tsuper.copy( source, recursive );\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 = Array.isArray( source.material ) ? source.material.slice() : 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\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\n\t\ttarget.fromBufferAttribute( position, index );\n\n\t\tconst morphInfluences = this.morphTargetInfluences;\n\n\t\tif ( morphPosition && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morphAttribute, index );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( target ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttarget.add( _morphA );\n\n\t\t}\n\n\t\treturn target;\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// test with bounding sphere in world space\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$6.copy( geometry.boundingSphere );\n\t\t_sphere$6.applyMatrix4( matrixWorld );\n\n\t\t// check distance from ray origin to bounding sphere\n\n\t\t_ray$3.copy( raycaster.ray ).recast( raycaster.near );\n\n\t\tif ( _sphere$6.containsPoint( _ray$3.origin ) === false ) {\n\n\t\t\tif ( _ray$3.intersectSphere( _sphere$6, _sphereHitAt ) === null ) return;\n\n\t\t\tif ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return;\n\n\t\t}\n\n\t\t// convert ray to local space of mesh\n\n\t\t_inverseMatrix$3.copy( matrixWorld ).invert();\n\t\t_ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$3 );\n\n\t}\n\n\t_computeIntersections( raycaster, intersects, rayLocalSpace ) {\n\n\t\tlet intersection;\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv1 = geometry.attributes.uv1;\n\t\tconst normal = geometry.attributes.normal;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\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\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\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\tintersection.face.materialIndex = group.materialIndex;\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 {\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 += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\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\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\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\tintersection.face.materialIndex = group.materialIndex;\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 {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\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}\n\n}\n\nfunction checkIntersection$1( 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 === FrontSide ), 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 checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, normal, a, b, c ) {\n\n\tobject.getVertexPosition( a, _vA$1 );\n\tobject.getVertexPosition( b, _vB$1 );\n\tobject.getVertexPosition( c, _vC$1 );\n\n\tconst intersection = checkIntersection$1( 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.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv1 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv1, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv1, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv1, c );\n\n\t\t\tintersection.uv1 = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( normal ) {\n\n\t\t\t_normalA.fromBufferAttribute( normal, a );\n\t\t\t_normalB.fromBufferAttribute( normal, b );\n\t\t\t_normalC.fromBufferAttribute( normal, c );\n\n\t\t\tintersection.normal = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _normalA, _normalB, _normalC, new Vector3() );\n\n\t\t\tif ( intersection.normal.dot( ray.direction ) > 0 ) {\n\n\t\t\t\tintersection.normal.multiplyScalar( - 1 );\n\n\t\t\t}\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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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\tif ( property.isRenderTargetTexture ) {\n\n\t\t\t\t\tconsole.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );\n\t\t\t\t\tdst[ u ][ p ] = null;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t\t}\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\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction getUnlitUniformColorSpace( renderer ) {\n\n\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\tif ( currentRenderTarget === null ) {\n\n\t\t// https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398\n\t\treturn renderer.outputColorSpace;\n\n\t}\n\n\t// https://github.com/mrdoob/three.js/issues/27868\n\tif ( currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\treturn currentRenderTarget.texture.colorSpace;\n\n\t}\n\n\treturn ColorManagement.workingColorSpace;\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.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\t\tthis.uniformsGroups = [];\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.forceSinglePass = true;\n\n\t\tthis.extensions = {\n\t\t\tclipCullDistance: false, // set to use vertex shader clipping\n\t\t\tmultiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID\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'uv1': [ 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\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\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\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\tdata.lights = this.lights;\n\t\tdata.clipping = this.clipping;\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\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\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\tthis.coordinateSystem = WebGLCoordinateSystem;\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\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\treturn super.getWorldDirection( target ).negate();\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\nconst _v3$1 = /*@__PURE__*/ new Vector3();\nconst _minTarget = /*@__PURE__*/ new Vector2();\nconst _maxTarget = /*@__PURE__*/ new Vector2();\n\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.isPerspectiveCamera = true;\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 * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.\n\t */\n\tgetViewBounds( distance, minTarget, maxTarget ) {\n\n\t\t_v3$1.set( - 1, - 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tminTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t\t_v3$1.set( 1, 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tmaxTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t}\n\n\t/**\n\t * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Copies the result into the target Vector2, where x is width and y is height.\n\t */\n\tgetViewSize( distance, target ) {\n\n\t\tthis.getViewBounds( distance, _minTarget, _maxTarget );\n\n\t\treturn target.subVectors( _maxTarget, _minTarget );\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, this.coordinateSystem );\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\nconst fov = - 90; // negative fov is not an error\nconst 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\tthis.renderTarget = renderTarget;\n\t\tthis.coordinateSystem = null;\n\t\tthis.activeMipmapLevel = 0;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdateCoordinateSystem() {\n\n\t\tconst coordinateSystem = this.coordinateSystem;\n\n\t\tconst cameras = this.children.concat();\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras;\n\n\t\tfor ( const camera of cameras ) this.remove( camera );\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, 1, 0 );\n\t\t\tcameraPX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, 1, 0 );\n\t\t\tcameraNX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, - 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\t\tcameraPX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\t\tcameraNX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tfor ( const camera of cameras ) {\n\n\t\t\tthis.add( camera );\n\n\t\t\tcamera.updateMatrixWorld();\n\n\t\t}\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst { renderTarget, activeMipmapLevel } = this;\n\n\t\tif ( this.coordinateSystem !== renderer.coordinateSystem ) {\n\n\t\t\tthis.coordinateSystem = renderer.coordinateSystem;\n\n\t\t\tthis.updateCoordinateSystem();\n\n\t\t}\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst currentActiveCubeFace = renderer.getActiveCubeFace();\n\t\tconst currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\t// mipmaps are generated during the last call of render()\n\t\t// at this point, all sides of the cube render target are defined\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );\n\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, colorSpace ) {\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, colorSpace );\n\n\t\tthis.isCubeTexture = true;\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\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size = 1, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\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.colorSpace );\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.colorSpace = texture.colorSpace;\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\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\tthis.isPlane = true;\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( point ).addScaledVector( this.normal, - this.distanceToPoint( 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( line.start ).addScaledVector( direction, t );\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\nconst _sphere$5 = /*@__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, coordinateSystem = WebGLCoordinateSystem ) {\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\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$5.center.set( 0, 0, 0 );\n\t\t_sphere$5.radius = 0.7071067811865476;\n\t\t_sphere$5.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$5 );\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 ) {\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\t\tconst size = array.byteLength;\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 = gl.FLOAT;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\ttype = gl.HALF_FLOAT;\n\n\t\t\t} else {\n\n\t\t\t\ttype = gl.UNSIGNED_SHORT;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = gl.SHORT;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = gl.INT;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = gl.BYTE;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\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\tsize: size\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; // @deprecated, r159\n\t\tconst updateRanges = attribute.updateRanges;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 && updateRanges.length === 0 ) {\n\n\t\t\t// Not using update ranges\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t}\n\n\t\tif ( updateRanges.length !== 0 ) {\n\n\t\t\tfor ( let i = 0, l = updateRanges.length; i < l; i ++ ) {\n\n\t\t\t\tconst range = updateRanges[ i ];\n\n\t\t\t\tgl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, range.start, range.count );\n\n\t\t\t}\n\n\t\t\tattribute.clearUpdateRanges();\n\n\t\t}\n\n\t\t// @deprecated, r159\n\t\tif ( updateRange.count !== - 1 ) {\n\n\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t\tattribute.onUploadCallback();\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\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\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\tif ( data.size !== attribute.array.byteLength ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: The size of the buffer attribute\\'s array buffer does not match the original size. Resizing buffer attributes is not supported.' );\n\n\t\t\t}\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\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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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 alphahash_fragment = \"#ifdef USE_ALPHAHASH\\n\\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\\n#endif\";\n\nvar alphahash_pars_fragment = \"#ifdef USE_ALPHAHASH\\n\\tconst float ALPHA_HASH_SCALE = 0.05;\\n\\tfloat hash2D( vec2 value ) {\\n\\t\\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\\n\\t}\\n\\tfloat hash3D( vec3 value ) {\\n\\t\\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\\n\\t}\\n\\tfloat getAlphaHashThreshold( vec3 position ) {\\n\\t\\tfloat maxDeriv = max(\\n\\t\\t\\tlength( dFdx( position.xyz ) ),\\n\\t\\t\\tlength( dFdy( position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\\n\\t\\tvec2 pixScales = vec2(\\n\\t\\t\\texp2( floor( log2( pixScale ) ) ),\\n\\t\\t\\texp2( ceil( log2( pixScale ) ) )\\n\\t\\t);\\n\\t\\tvec2 alpha = vec2(\\n\\t\\t\\thash3D( floor( pixScales.x * position.xyz ) ),\\n\\t\\t\\thash3D( floor( pixScales.y * position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat lerpFactor = fract( log2( pixScale ) );\\n\\t\\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\\n\\t\\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\\n\\t\\tvec3 cases = vec3(\\n\\t\\t\\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\\n\\t\\t\\t( x - 0.5 * a ) / ( 1.0 - a ),\\n\\t\\t\\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\\n\\t\\t);\\n\\t\\tfloat threshold = ( x < ( 1.0 - a ) )\\n\\t\\t\\t? ( ( x < a ) ? cases.x : cases.y )\\n\\t\\t\\t: cases.z;\\n\\t\\treturn clamp( threshold , 1.0e-6, 1.0 );\\n\\t}\\n#endif\";\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).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\\t#ifdef ALPHA_TO_COVERAGE\\n\\tdiffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\\n\\tif ( diffuseColor.a == 0.0 ) discard;\\n\\t#else\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n\\t#endif\\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, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_CLEARCOAT ) \\n\\t\\tclearcoatSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_SHEEN ) \\n\\t\\tsheenSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\\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 batching_pars_vertex = \"#ifdef USE_BATCHING\\n\\t#if ! defined( GL_ANGLE_multi_draw )\\n\\t#define gl_DrawID _gl_DrawID\\n\\tuniform int _gl_DrawID;\\n\\t#endif\\n\\tuniform highp sampler2D batchingTexture;\\n\\tuniform highp usampler2D batchingIdTexture;\\n\\tmat4 getBatchingMatrix( const in float i ) {\\n\\t\\tint size = textureSize( batchingTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n\\tfloat getIndirectIndex( const in int i ) {\\n\\t\\tint size = textureSize( batchingIdTexture, 0 ).x;\\n\\t\\tint x = i % size;\\n\\t\\tint y = i / size;\\n\\t\\treturn float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );\\n\\t}\\n#endif\\n#ifdef USE_BATCHING_COLOR\\n\\tuniform sampler2D batchingColorTexture;\\n\\tvec3 getBatchingColor( const in float i ) {\\n\\t\\tint size = textureSize( batchingColorTexture, 0 ).x;\\n\\t\\tint j = int( i );\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\treturn texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb;\\n\\t}\\n#endif\";\n\nvar batching_vertex = \"#ifdef USE_BATCHING\\n\\tmat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\\n#ifdef USE_ALPHAHASH\\n\\tvPosition = vec3( position );\\n#endif\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"float 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} // validated\";\n\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\\tconst mat3 XYZ_TO_REC709 = mat3(\\n\\t\\t 3.2404542, -0.9692660, 0.0556434,\\n\\t\\t-1.5371385, 1.8760108, -0.2040259,\\n\\t\\t-0.4985314, 0.0415560, 1.0572252\\n\\t);\\n\\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\\t\\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\\t\\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\\t}\\n\\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\\t}\\n\\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\\t}\\n\\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\\t\\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\\t\\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\\t\\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\\t\\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\\t\\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\\t\\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\\t\\txyz /= 1.0685e-7;\\n\\t\\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\\t\\treturn rgb;\\n\\t}\\n\\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\\t\\tvec3 I;\\n\\t\\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\\t\\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\\t\\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\\t\\tif ( cosTheta2Sq < 0.0 ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t}\\n\\t\\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\\t\\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\\t\\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\\t\\tfloat T121 = 1.0 - R12;\\n\\t\\tfloat phi12 = 0.0;\\n\\t\\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\\t\\tfloat phi21 = PI - phi12;\\n\\t\\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\\t\\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\\t\\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\\t\\tvec3 phi23 = vec3( 0.0 );\\n\\t\\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\\t\\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\\t\\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\\t\\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\\t\\tvec3 phi = vec3( phi21 ) + phi23;\\n\\t\\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\\t\\tvec3 r123 = sqrt( R123 );\\n\\t\\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\\t\\tvec3 C0 = R12 + Rs;\\n\\t\\tI = C0;\\n\\t\\tvec3 Cm = Rs - T121;\\n\\t\\tfor ( int m = 1; m <= 2; ++ m ) {\\n\\t\\t\\tCm *= r123;\\n\\t\\t\\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\\t\\t\\tI += Cm * Sm;\\n\\t\\t}\\n\\t\\treturn max( I, vec3( 0.0 ) );\\n\\t}\\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( vBumpMapUv );\\n\\t\\tvec2 dSTdy = dFdy( vBumpMapUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + 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 = normalize( dFdx( surf_pos.xyz ) );\\n\\t\\tvec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\\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#ifdef ALPHA_TO_COVERAGE\\n\\t\\tfloat distanceToPlane, distanceGradient;\\n\\t\\tfloat clipOpacity = 1.0;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\\t\\t\\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\\t\\t\\tclipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\\t\\t\\tif ( clipOpacity == 0.0 ) discard;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\t\\tfloat unionClipOpacity = 1.0;\\n\\t\\t\\t#pragma unroll_loop_start\\n\\t\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\t\\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\\t\\t\\t\\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\\t\\t\\t\\tunionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\\t\\t\\t}\\n\\t\\t\\t#pragma unroll_loop_end\\n\\t\\t\\tclipOpacity *= 1.0 - unionClipOpacity;\\n\\t\\t#endif\\n\\t\\tdiffuseColor.a *= clipOpacity;\\n\\t\\tif ( diffuseColor.a == 0.0 ) discard;\\n\\t#else\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\t\\tbool clipped = true;\\n\\t\\t\\t#pragma unroll_loop_start\\n\\t\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t\\t}\\n\\t\\t\\t#pragma unroll_loop_end\\n\\t\\t\\tif ( clipped ) discard;\\n\\t\\t#endif\\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 ) || defined( USE_BATCHING_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 ) || defined( USE_BATCHING_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#ifdef USE_BATCHING_COLOR\\n\\tvec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );\\n\\tvColor.xyz *= batchingColor.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; }\\nvec3 pow2( const in vec3 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 v ) { return dot( v, vec3( 0.3333333 ) ); }\\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};\\n#ifdef USE_ALPHAHASH\\n\\tvarying vec3 vPosition;\\n#endif\\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}\\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}\\nvec3 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 F_Schlick( const in float 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} // validated\";\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\\thighp vec2 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 cubeUV_r0 1.0\\n\\t#define cubeUV_m0 - 2.0\\n\\t#define cubeUV_r1 0.8\\n\\t#define cubeUV_m1 - 1.0\\n\\t#define cubeUV_r4 0.4\\n\\t#define cubeUV_m4 2.0\\n\\t#define cubeUV_r5 0.305\\n\\t#define cubeUV_m5 3.0\\n\\t#define cubeUV_r6 0.21\\n\\t#define cubeUV_m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= cubeUV_r1 ) {\\n\\t\\t\\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\\t\\t} else if ( roughness >= cubeUV_r4 ) {\\n\\t\\t\\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\\t\\t} else if ( roughness >= cubeUV_r5 ) {\\n\\t\\t\\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\\t\\t} else if ( roughness >= cubeUV_r6 ) {\\n\\t\\t\\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_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 ), cubeUV_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_TANGENT\\n\\tvec3 transformedTangent = objectTangent;\\n#endif\\n#ifdef USE_BATCHING\\n\\tmat3 bm = mat3( batchingMatrix );\\n\\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\\n\\ttransformedNormal = bm * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = bm * transformedTangent;\\n\\t#endif\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmat3 im = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\\n\\ttransformedNormal = im * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = im * transformedTangent;\\n\\t#endif\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 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, vDisplacementMapUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar colorspace_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar colorspace_pars_fragment = \"\\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\\n\\tvec3( 0.8224621, 0.177538, 0.0 ),\\n\\tvec3( 0.0331941, 0.9668058, 0.0 ),\\n\\tvec3( 0.0170827, 0.0723974, 0.9105199 )\\n);\\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.2249401, - 0.2249404, 0.0 ),\\n\\tvec3( - 0.0420569, 1.0420571, 0.0 ),\\n\\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\\n);\\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\\n}\\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\\n}\\nvec4 LinearTransferOETF( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 sRGBTransferOETF( 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, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\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\\tuniform mat3 envMapRotation;\\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 ) || defined( LAMBERT )\\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 ) || defined( LAMBERT )\\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\\tvec2 fw = fwidth( coord ) * 0.5;\\n\\t\\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\\t#endif\\n}\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_lambert_pars_fragment = \"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Lambert\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\n#if defined( USE_LIGHT_PROBES )\\n\\tuniform vec3 lightProbe[ 9 ];\\n#endif\\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\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n}\\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, 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 vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometryPosition;\\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 vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometryPosition;\\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 = \"#ifdef USE_ENVMAP\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * 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#ifdef 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, envMapRotation * 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\\t#ifdef USE_ANISOTROPY\\n\\t\\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\\n\\t\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\t\\tvec3 bentNormal = cross( bitangent, viewDir );\\n\\t\\t\\t\\tbentNormal = normalize( cross( bentNormal, bitangent ) );\\n\\t\\t\\t\\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\\n\\t\\t\\t\\treturn getIBLRadiance( viewDir, bentNormal, roughness );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t#endif\\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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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\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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\\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\\tmaterial.ior = ior;\\n\\t#ifdef USE_SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\\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( ( material.ior - 1.0 ) / ( material.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, vClearcoatMapUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).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_DISPERSION\\n\\tmaterial.dispersion = dispersion;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\\n\\t\\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\\n\\t\\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\\n\\t#else\\n\\t\\tvec2 anisotropyV = anisotropyVector;\\n\\t#endif\\n\\tmaterial.anisotropy = length( anisotropyV );\\n\\tif( material.anisotropy == 0.0 ) {\\n\\t\\tanisotropyV = vec2( 1.0, 0.0 );\\n\\t} else {\\n\\t\\tanisotropyV /= material.anisotropy;\\n\\t\\tmaterial.anisotropy = saturate( material.anisotropy );\\n\\t}\\n\\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\\n\\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\\n\\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\tfloat dispersion;\\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_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n\\t#ifdef IOR\\n\\t\\tfloat ior;\\n\\t#endif\\n\\t#ifdef USE_TRANSMISSION\\n\\t\\tfloat transmission;\\n\\t\\tfloat transmissionAlpha;\\n\\t\\tfloat thickness;\\n\\t\\tfloat attenuationDistance;\\n\\t\\tvec3 attenuationColor;\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat anisotropy;\\n\\t\\tfloat alphaT;\\n\\t\\tvec3 anisotropyT;\\n\\t\\tvec3 anisotropyB;\\n\\t#endif\\n};\\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\\nvec3 sheenSpecularDirect = vec3( 0.0 );\\nvec3 sheenSpecularIndirect = vec3(0.0 );\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n float x2 = x * x;\\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\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}\\n#ifdef USE_ANISOTROPY\\n\\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\\n\\t\\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\\n\\t\\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\\n\\t\\tfloat v = 0.5 / ( gv + gl );\\n\\t\\treturn saturate(v);\\n\\t}\\n\\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\\n\\t\\tfloat a2 = alphaT * alphaB;\\n\\t\\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\\n\\t\\thighp float v2 = dot( v, v );\\n\\t\\tfloat w2 = a2 / v2;\\n\\t\\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\\n\\t}\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\\n\\t\\tvec3 f0 = material.clearcoatF0;\\n\\t\\tfloat f90 = material.clearcoatF90;\\n\\t\\tfloat roughness = material.clearcoatRoughness;\\n\\t\\tfloat alpha = pow2( roughness );\\n\\t\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\t\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\t\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\t\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\t\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\t\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t\\treturn F * ( V * D );\\n\\t}\\n#endif\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\\n\\tvec3 f0 = material.specularColor;\\n\\tfloat f90 = material.specularF90;\\n\\tfloat roughness = material.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\\t#ifdef USE_IRIDESCENCE\\n\\t\\tF = mix( F, material.iridescenceFresnel, material.iridescence );\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat dotTL = dot( material.anisotropyT, lightDir );\\n\\t\\tfloat dotTV = dot( material.anisotropyT, viewDir );\\n\\t\\tfloat dotTH = dot( material.anisotropyT, halfDir );\\n\\t\\tfloat dotBL = dot( material.anisotropyB, lightDir );\\n\\t\\tfloat dotBV = dot( material.anisotropyB, viewDir );\\n\\t\\tfloat dotBH = dot( material.anisotropyB, halfDir );\\n\\t\\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\\n\\t\\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\\n\\t#else\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t#endif\\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}\\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\\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}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\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#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometryNormal;\\n\\t\\tvec3 viewDir = geometryViewDir;\\n\\t\\tvec3 position = geometryPosition;\\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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\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 = \"\\nvec3 geometryPosition = - vViewPosition;\\nvec3 geometryNormal = normal;\\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\nvec3 geometryClearcoatNormal = vec3( 0.0 );\\n#ifdef USE_CLEARCOAT\\n\\tgeometryClearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\\n\\tif ( material.iridescenceThickness == 0.0 ) {\\n\\t\\tmaterial.iridescence = 0.0;\\n\\t} else {\\n\\t\\tmaterial.iridescence = saturate( material.iridescence );\\n\\t}\\n\\tif ( material.iridescence > 0.0 ) {\\n\\t\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\t\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\\t}\\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, geometryPosition, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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\\tvec4 spotColor;\\n\\tvec3 spotLightCoord;\\n\\tbool inSpotLightMap;\\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, geometryPosition, directLight );\\n\\t\\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\\t\\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\\t\\t#else\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#endif\\n\\t\\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\\n\\t\\t\\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\\t\\t\\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\\t\\t\\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\\t\\t\\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\\t\\t#endif\\n\\t\\t#undef SPOT_LIGHT_MAP_INDEX\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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\\t#if defined( USE_LIGHT_PROBES )\\n\\t\\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\\n\\t#endif\\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 ], geometryNormal );\\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, vLightMapUv );\\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( geometryNormal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\\n\\t#else\\n\\t\\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\\tgl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\tvFragDepth = 1.0 + gl_Position.w;\\n\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\\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\\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\\t#if defined( USE_POINTS_UV )\\n\\t\\tvec2 uv = vUv;\\n\\t#else\\n\\t\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\t#endif\\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_POINTS_UV )\\n\\tvarying vec2 vUv;\\n#else\\n\\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t\\tuniform mat3 uvTransform;\\n\\t#endif\\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, vMetalnessMapUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphinstance_vertex = \"#ifdef USE_INSTANCING_MORPH\\n\\tfloat morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\tfloat morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\tmorphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\\n\\t}\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS )\\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\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t}\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\t#ifndef USE_INSTANCING_MORPH\\n\\t\\tuniform float morphTargetBaseInfluence;\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t#endif\\n\\tuniform sampler2DArray morphTargetsTexture;\\n\\tuniform ivec2 morphTargetsTextureSize;\\n\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t}\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t}\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = dFdx( vViewPosition );\\n\\tvec3 fdy = dFdy( vViewPosition );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal *= faceDirection;\\n\\t#endif\\n#endif\\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\\n\\t\\t#if defined( USE_NORMALMAP )\\n\\t\\t\\tvNormalMapUv\\n\\t\\t#elif defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tvClearcoatNormalMapUv\\n\\t\\t#else\\n\\t\\t\\tvUv\\n\\t\\t#endif\\n\\t\\t);\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn[0] *= faceDirection;\\n\\t\\ttbn[1] *= faceDirection;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn2[0] *= faceDirection;\\n\\t\\ttbn2[1] *= faceDirection;\\n\\t#endif\\n#endif\\nvec3 nonPerturbedNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tnormal = texture2D( normalMap, vNormalMapUv ).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( USE_NORMALMAP_TANGENTSPACE )\\n\\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\tnormal = normalize( tbn * mapN );\\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 USE_NORMALMAP_OBJECTSPACE\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\\n\\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( uv.st );\\n\\t\\tvec2 st1 = dFdy( uv.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 : inversesqrt( det );\\n\\t\\treturn mat3( T * scale, B * scale, N );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = nonPerturbedNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar opaque_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha;\\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.;const float ShiftRight8 = 1. / 256.;\\nconst float Inv255 = 1. / 255.;\\nconst vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );\\nconst vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );\\nconst vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );\\nconst vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tif( v <= 0.0 )\\n\\t\\treturn vec4( 0., 0., 0., 0. );\\n\\tif( v >= 1.0 )\\n\\t\\treturn vec4( 1., 1., 1., 1. );\\n\\tfloat vuf;\\n\\tfloat af = modf( v * PackFactors.a, vuf );\\n\\tfloat bf = modf( vuf * ShiftRight8, vuf );\\n\\tfloat gf = modf( vuf * ShiftRight8, vuf );\\n\\treturn vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );\\n}\\nvec3 packDepthToRGB( const in float v ) {\\n\\tif( v <= 0.0 )\\n\\t\\treturn vec3( 0., 0., 0. );\\n\\tif( v >= 1.0 )\\n\\t\\treturn vec3( 1., 1., 1. );\\n\\tfloat vuf;\\n\\tfloat bf = modf( v * PackFactors.b, vuf );\\n\\tfloat gf = modf( vuf * ShiftRight8, vuf );\\n\\treturn vec3( vuf * Inv255, gf * PackUpscale, bf );\\n}\\nvec2 packDepthToRG( const in float v ) {\\n\\tif( v <= 0.0 )\\n\\t\\treturn vec2( 0., 0. );\\n\\tif( v >= 1.0 )\\n\\t\\treturn vec2( 1., 1. );\\n\\tfloat vuf;\\n\\tfloat gf = modf( v * 256., vuf );\\n\\treturn vec2( vuf * Inv255, gf );\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors4 );\\n}\\nfloat unpackRGBToDepth( const in vec3 v ) {\\n\\treturn dot( v, UnpackFactors3 );\\n}\\nfloat unpackRGToDepth( const in vec2 v ) {\\n\\treturn v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;\\n}\\nvec4 pack2HalfToRGBA( const in 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( const in 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 depth, const in float near, const in float far ) {\\n\\treturn depth * ( 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 depth, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * depth - 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_BATCHING\\n\\tmvPosition = batchingMatrix * mvPosition;\\n#endif\\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, vRoughnessMapUv );\\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 = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n\\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#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 shadowIntensity;\\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\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowIntensity;\\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 shadowIntensity;\\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 shadowIntensity, 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\\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\\n\\t\\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\\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 mix( 1.0, shadow, shadowIntensity );\\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 shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\t\\n\\t\\tfloat lightToPositionLength = length( lightToPosition );\\n\\t\\tif ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\\n\\t\\t\\tfloat dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\t\\tdp += shadowBias;\\n\\t\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\t\\tshadow = (\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tshadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn mix( 1.0, shadow, shadowIntensity );\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#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 shadowIntensity;\\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\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowIntensity;\\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 shadowIntensity;\\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 = \"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\tvec4 shadowWorldPosition;\\n#endif\\n#if defined( USE_SHADOWMAP )\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if NUM_SPOT_LIGHT_COORDS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition;\\n\\t\\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t\\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\\t\\t#endif\\n\\t\\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\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.shadowIntensity, 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.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ 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.shadowIntensity, 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\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tint size = textureSize( boneTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\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, vSpecularMapUv );\\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 saturate( 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}\\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.6605, - 0.1246, - 0.0182 ),\\n\\tvec3( - 0.5876, 1.1329, - 0.1006 ),\\n\\tvec3( - 0.0728, - 0.0083, 1.1187 )\\n);\\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\\n\\tvec3( 0.6274, 0.0691, 0.0164 ),\\n\\tvec3( 0.3293, 0.9195, 0.0880 ),\\n\\tvec3( 0.0433, 0.0113, 0.8956 )\\n);\\nvec3 agxDefaultContrastApprox( vec3 x ) {\\n\\tvec3 x2 = x * x;\\n\\tvec3 x4 = x2 * x2;\\n\\treturn + 15.5 * x4 * x2\\n\\t\\t- 40.14 * x4 * x\\n\\t\\t+ 31.96 * x4\\n\\t\\t- 6.868 * x2 * x\\n\\t\\t+ 0.4298 * x2\\n\\t\\t+ 0.1191 * x\\n\\t\\t- 0.00232;\\n}\\nvec3 AgXToneMapping( vec3 color ) {\\n\\tconst mat3 AgXInsetMatrix = mat3(\\n\\t\\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\\n\\t\\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\\n\\t\\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\\n\\t);\\n\\tconst mat3 AgXOutsetMatrix = mat3(\\n\\t\\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\\n\\t\\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\\n\\t\\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\\n\\t);\\n\\tconst float AgxMinEv = - 12.47393;\\tconst float AgxMaxEv = 4.026069;\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\\n\\tcolor = AgXInsetMatrix * color;\\n\\tcolor = max( color, 1e-10 );\\tcolor = log2( color );\\n\\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\tcolor = agxDefaultContrastApprox( color );\\n\\tcolor = AgXOutsetMatrix * color;\\n\\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\\n\\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\treturn color;\\n}\\nvec3 NeutralToneMapping( vec3 color ) {\\n\\tconst float StartCompression = 0.8 - 0.04;\\n\\tconst float Desaturation = 0.15;\\n\\tcolor *= toneMappingExposure;\\n\\tfloat x = min( color.r, min( color.g, color.b ) );\\n\\tfloat offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\\n\\tcolor -= offset;\\n\\tfloat peak = max( color.r, max( color.g, color.b ) );\\n\\tif ( peak < StartCompression ) return color;\\n\\tfloat d = 1. - StartCompression;\\n\\tfloat newPeak = 1. - d * d / ( peak + d - StartCompression );\\n\\tcolor *= newPeak / peak;\\n\\tfloat g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\\n\\treturn mix( color, vec3( newPeak ), g );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tmaterial.transmission = transmission;\\n\\tmaterial.transmissionAlpha = 1.0;\\n\\tmaterial.thickness = thickness;\\n\\tmaterial.attenuationDistance = attenuationDistance;\\n\\tmaterial.attenuationColor = attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmitted = getIBLVolumeRefraction(\\n\\t\\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,\\n\\t\\tmaterial.attenuationColor, material.attenuationDistance );\\n\\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\\n\\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\\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\\tfloat w0( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w1( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\\n\\t}\\n\\tfloat w2( float a ){\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w3( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * a );\\n\\t}\\n\\tfloat g0( float a ) {\\n\\t\\treturn w0( a ) + w1( a );\\n\\t}\\n\\tfloat g1( float a ) {\\n\\t\\treturn w2( a ) + w3( a );\\n\\t}\\n\\tfloat h0( float a ) {\\n\\t\\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\\n\\t}\\n\\tfloat h1( float a ) {\\n\\t\\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\\n\\t}\\n\\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\\n\\t\\tuv = uv * texelSize.zw + 0.5;\\n\\t\\tvec2 iuv = floor( uv );\\n\\t\\tvec2 fuv = fract( uv );\\n\\t\\tfloat g0x = g0( fuv.x );\\n\\t\\tfloat g1x = g1( fuv.x );\\n\\t\\tfloat h0x = h0( fuv.x );\\n\\t\\tfloat h1x = h1( fuv.x );\\n\\t\\tfloat h0y = h0( fuv.y );\\n\\t\\tfloat h1y = h1( fuv.y );\\n\\t\\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\\n\\t\\t\\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\\n\\t}\\n\\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\\n\\t\\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\\n\\t\\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\\n\\t\\tvec2 fLodSizeInv = 1.0 / fLodSize;\\n\\t\\tvec2 cLodSizeInv = 1.0 / cLodSize;\\n\\t\\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\\n\\t\\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\\n\\t\\treturn mix( fSample, cSample, fract( lod ) );\\n\\t}\\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 lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\\n\\t}\\n\\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( isinf( attenuationDistance ) ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance;\\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 dispersion, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec4 transmittedLight;\\n\\t\\tvec3 transmittance;\\n\\t\\t#ifdef USE_DISPERSION\\n\\t\\t\\tfloat halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;\\n\\t\\t\\tvec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );\\n\\t\\t\\tfor ( int i = 0; i < 3; i ++ ) {\\n\\t\\t\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );\\n\\t\\t\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\t\\n\\t\\t\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\t\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\t\\t\\trefractionCoords += 1.0;\\n\\t\\t\\t\\trefractionCoords /= 2.0;\\n\\t\\t\\n\\t\\t\\t\\tvec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );\\n\\t\\t\\t\\ttransmittedLight[ i ] = transmissionSample[ i ];\\n\\t\\t\\t\\ttransmittedLight.a += transmissionSample.a;\\n\\t\\t\\t\\ttransmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];\\n\\t\\t\\t}\\n\\t\\t\\ttransmittedLight.a /= 3.0;\\n\\t\\t\\n\\t\\t#else\\n\\t\\t\\n\\t\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\t\\trefractionCoords += 1.0;\\n\\t\\t\\trefractionCoords /= 2.0;\\n\\t\\t\\ttransmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\t\\ttransmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\t\\n\\t\\t#endif\\n\\t\\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform mat3 mapTransform;\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform mat3 alphaMapTransform;\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tuniform mat3 lightMapTransform;\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tuniform mat3 aoMapTransform;\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tuniform mat3 bumpMapTransform;\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tuniform mat3 normalMapTransform;\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tuniform mat3 displacementMapTransform;\\n\\tvarying vec2 vDisplacementMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tuniform mat3 emissiveMapTransform;\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tuniform mat3 metalnessMapTransform;\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tuniform mat3 roughnessMapTransform;\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tuniform mat3 anisotropyMapTransform;\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tuniform mat3 clearcoatMapTransform;\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform mat3 clearcoatNormalMapTransform;\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform mat3 clearcoatRoughnessMapTransform;\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tuniform mat3 sheenColorMapTransform;\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tuniform mat3 sheenRoughnessMapTransform;\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tuniform mat3 iridescenceMapTransform;\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform mat3 iridescenceThicknessMapTransform;\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tuniform mat3 specularMapTransform;\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tuniform mat3 specularColorMapTransform;\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tuniform mat3 specularIntensityMapTransform;\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvUv = vec3( uv, 1 ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_BATCHING\\n\\t\\tworldPosition = batchingMatrix * worldPosition;\\n\\t#endif\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$h = \"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$h = \"uniform sampler2D t2D;\\nuniform float backgroundIntensity;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$g = \"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$g = \"#ifdef ENVMAP_TYPE_CUBE\\n\\tuniform samplerCube envMap;\\n#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\tuniform sampler2D envMap;\\n#endif\\nuniform float flipEnvMap;\\nuniform float backgroundBlurriness;\\nuniform float backgroundIntensity;\\nuniform mat3 backgroundRotation;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\\n\\t#else\\n\\t\\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\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 = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\\tgl_FragColor = texColor;\\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 \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\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 \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\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\\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#elif DEPTH_PACKING == 3202\\n\\t\\tgl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );\\n\\t#elif DEPTH_PACKING == 3203\\n\\t\\tgl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );\\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 \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\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 \\n#include \\nvoid main () {\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\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 \\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\\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 \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\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$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#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 \\nvoid main() {\\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\\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, vLightMapUv );\\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 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\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"#define LAMBERT\\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 \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\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\\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 \\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\\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 \\n#include \\nvoid main() {\\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\\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( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#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( USE_NORMALMAP_TANGENTSPACE )\\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( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\\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\\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 \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\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\\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\\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 USE_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 USE_SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_DISPERSION\\n\\tuniform float dispersion;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tuniform float iridescence;\\n\\tuniform float iridescenceIOR;\\n\\tuniform float iridescenceThicknessMinimum;\\n\\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\tuniform vec2 anisotropyVector;\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tuniform sampler2D anisotropyMap;\\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 \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\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\\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 + sheenSpecularDirect + sheenSpecularIndirect;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * 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\\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\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\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 + 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 \\n#ifdef USE_POINTS_UV\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\\nvoid main() {\\n\\t#ifdef USE_POINTS_UV\\n\\t\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\t#endif\\n\\t#include \\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 \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\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 \\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}\";\n\nconst fragment$2 = \"uniform vec3 color;\\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\\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 \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\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\talphahash_fragment: alphahash_fragment,\n\talphahash_pars_fragment: alphahash_pars_fragment,\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\tbatching_pars_vertex: batching_pars_vertex,\n\tbatching_vertex: batching_vertex,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tiridescence_fragment: iridescence_fragment,\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\tcolorspace_fragment: colorspace_fragment,\n\tcolorspace_pars_fragment: colorspace_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_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_fragment: lights_lambert_fragment,\n\tlights_lambert_pars_fragment: lights_lambert_pars_fragment,\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\tmorphinstance_vertex: morphinstance_vertex,\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\tiridescence_pars_fragment: iridescence_pars_fragment,\n\topaque_fragment: opaque_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\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$h,\n\tbackground_frag: fragment$h,\n\tbackgroundCube_vert: vertex$g,\n\tbackgroundCube_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: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\t\tspecularMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tenvMapRotation: { value: /*@__PURE__*/ new Matrix3() },\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\t\taoMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 },\n\t\tlightMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tnormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null },\n\t\temissiveMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null },\n\t\tmetalnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null },\n\t\troughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\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: /*@__PURE__*/ 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\tshadowIntensity: 1,\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\tshadowIntensity: 1,\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotLightMap: { value: [] },\n\t\tspotShadowMap: { value: [] },\n\t\tspotLightMatrix: { 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\tshadowIntensity: 1,\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: /*@__PURE__*/ 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\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ 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 }\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: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\n\tbackgroundCube: {\n\n\t\tuniforms: {\n\t\t\tenvMap: { value: null },\n\t\t\tflipEnvMap: { value: - 1 },\n\t\t\tbackgroundBlurriness: { value: 0 },\n\t\t\tbackgroundIntensity: { value: 1 },\n\t\t\tbackgroundRotation: { value: /*@__PURE__*/ new Matrix3() }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.backgroundCube_vert,\n\t\tfragmentShader: ShaderChunk.backgroundCube_frag\n\n\t},\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\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: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: /*@__PURE__*/ 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: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: /*@__PURE__*/ 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: /*@__PURE__*/ mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tclearcoatNormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tdispersion: { value: 0 },\n\t\t\tiridescence: { value: 0 },\n\t\t\tiridescenceMap: { value: null },\n\t\t\tiridescenceMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescenceIOR: { value: 1.3 },\n\t\t\tiridescenceThicknessMinimum: { value: 100 },\n\t\t\tiridescenceThicknessMaximum: { value: 400 },\n\t\t\tiridescenceThicknessMap: { value: null },\n\t\t\tiridescenceThicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\tsheenRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tthicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tspecularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t\tspecularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tanisotropyVector: { value: /*@__PURE__*/ new Vector2() },\n\t\t\tanisotropyMap: { value: null },\n\t\t\tanisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nconst _rgb = { r: 0, b: 0, g: 0 };\nconst _e1$1 = /*@__PURE__*/ new Euler();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\n\nfunction WebGLBackground( renderer, cubemaps, cubeuvmaps, 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 getBackground( scene ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tconst usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background\n\t\t\tbackground = ( usePMREM ? cubeuvmaps : cubemaps ).get( background );\n\n\t\t}\n\n\t\treturn background;\n\n\t}\n\n\tfunction render( scene ) {\n\n\t\tlet forceClear = false;\n\t\tconst background = getBackground( scene );\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\tconst environmentBlendMode = renderer.xr.getEnvironmentBlendMode();\n\n\t\tif ( environmentBlendMode === 'additive' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 1, premultipliedAlpha );\n\n\t\t} else if ( environmentBlendMode === 'alpha-blend' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 0, premultipliedAlpha );\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\t// buffers might not be writable which is required to ensure a correct clear\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t}\n\n\tfunction addToRenderList( renderList, scene ) {\n\n\t\tconst background = getBackground( scene );\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.backgroundCube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.backgroundCube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.backgroundCube.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// add \"envMap\" material property so the renderer can evaluate it like for built-in materials\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\t_e1$1.copy( scene.backgroundRotation );\n\n\t\t\t// accommodate left-handed frame\n\t\t\t_e1$1.x *= - 1; _e1$1.y *= - 1; _e1$1.z *= - 1;\n\n\t\t\tif ( background.isCubeTexture && background.isRenderTargetTexture === false ) {\n\n\t\t\t\t// environment maps which are not cube render targets or PMREMs follow a different convention\n\t\t\t\t_e1$1.y *= - 1;\n\t\t\t\t_e1$1.z *= - 1;\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\t\t\tboxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;\n\t\t\tboxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tboxMesh.material.uniforms.backgroundRotation.value.setFromMatrix4( _m1$1.makeRotationFromEuler( _e1$1 ) );\n\t\t\tboxMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\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// add \"map\" material property so the renderer can evaluate it like for built-in materials\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\t\t\tplaneMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tplaneMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\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\tcolor.getRGB( _rgb, getUnlitUniformColorSpace( renderer ) );\n\n\t\tstate.buffers.color.setClear( _rgb.r, _rgb.g, _rgb.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\t\taddToRenderList: addToRenderList\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, attributes ) {\n\n\tconst maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\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\tconst state = getBindingState( geometry, program, material );\n\n\t\tif ( currentState !== state ) {\n\n\t\t\tcurrentState = state;\n\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t}\n\n\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\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( gl.ELEMENT_ARRAY_BUFFER, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\treturn gl.createVertexArray();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\treturn gl.bindVertexArray( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\treturn gl.deleteVertexArray( 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\tgl.vertexAttribDivisor( 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, integer ) {\n\n\t\tif ( integer === true ) {\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\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\t// check for integer attributes\n\n\t\t\t\t\tconst integer = ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType );\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( gl.ARRAY_BUFFER, 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\tinteger\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( gl.ARRAY_BUFFER, 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\tinteger\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 ) {\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\tgl.drawArraysInstanced( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\textension.multiDrawArraysWEBGL( mode, starts, 0, counts, 0, drawCount );\n\n\t\tlet elementCount = 0;\n\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\telementCount += counts[ i ];\n\n\t\t}\n\n\t\tinfo.update( elementCount, mode, 1 );\n\n\t}\n\n\tfunction renderMultiDrawInstances( starts, counts, drawCount, primcount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < starts.length; i ++ ) {\n\n\t\t\t\trenderInstances( starts[ i ], counts[ i ], primcount[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawArraysInstancedWEBGL( mode, starts, 0, counts, 0, primcount, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < primcount.length; i ++ ) {\n\n\t\t\t\tinfo.update( elementCount, mode, primcount[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\tthis.renderMultiDrawInstances = renderMultiDrawInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters, utils ) {\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 textureFormatReadable( textureFormat ) {\n\n\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== gl.getParameter( gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfunction textureTypeReadable( textureType ) {\n\n\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) );\n\n\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== gl.getParameter( gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\ttextureType !== FloatType && ! halfFloatSupportedByExt ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).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( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).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\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tconst maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tconst maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tconst maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tconst maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tconst maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tconst maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tconst maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\n\tconst maxSamples = gl.getParameter( gl.MAX_SAMPLES );\n\n\treturn {\n\n\t\tisWebGL2: true, // keeping this for backwards compatibility\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\ttextureFormatReadable: textureFormatReadable,\n\t\ttextureTypeReadable: textureTypeReadable,\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\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 ) {\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\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\n\t};\n\n\tthis.setGlobalState = function ( planes, camera ) {\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\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 ) {\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 );\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.isOrthographicCamera = true;\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, this.coordinateSystem );\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\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;\nlet _oldActiveCubeFace = 0;\nlet _oldActiveMipmapLevel = 0;\nlet _oldXrEnabled = false;\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( - PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\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\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\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\t\t_oldXrEnabled = this._renderer.xr.enabled;\n\n\t\tthis._renderer.xr.enabled = false;\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 * The smallest supported equirectangular image size is 64 x 32.\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 * The smallest supported cube size is 16 x 16.\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, _oldActiveCubeFace, _oldActiveMipmapLevel );\n\t\tthis._renderer.xr.enabled = _oldXrEnabled;\n\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\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\t\t_oldXrEnabled = this._renderer.xr.enabled;\n\n\t\tthis._renderer.xr.enabled = false;\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\tcolorSpace: LinearSRGBColorSpace,\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 || this._pingPongRenderTarget.height !== height ) {\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\t\tconst n = this._lodPlanes.length;\n\n\t\tfor ( let i = 1; i < n; 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[ ( n - 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\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\tconst currentPMREMVersion = renderTarget !== undefined ? renderTarget.texture.pmremVersion : 0;\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.pmremVersion !== currentPMREMVersion ) {\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\trenderTarget.texture.pmremVersion = texture.pmremVersion;\n\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 ( renderTarget !== undefined ) {\n\n\t\t\t\t\t\treturn renderTarget.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\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\trenderTarget.texture.pmremVersion = texture.pmremVersion;\n\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 () {\n\n\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\t\t\tgetExtension( 'WEBGL_clip_cull_distance' );\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\t\t\tgetExtension( 'WEBGL_render_shared_exponent' );\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\twarnOnce( '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\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tconst array = geometry.morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.remove( array[ i ] );\n\n\t\t\t}\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 ], gl.ARRAY_BUFFER );\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 ], gl.ARRAY_BUFFER );\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 if ( geometryPosition !== undefined ) {\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} else {\n\n\t\t\treturn;\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 ) {\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\tgl.drawElementsInstanced( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\textension.multiDrawElementsWEBGL( mode, counts, 0, type, starts, 0, drawCount );\n\n\t\tlet elementCount = 0;\n\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\telementCount += counts[ i ];\n\n\t\t}\n\n\t\tinfo.update( elementCount, mode, 1 );\n\n\n\t}\n\n\tfunction renderMultiDrawInstances( starts, counts, drawCount, primcount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < starts.length; i ++ ) {\n\n\t\t\t\trenderInstances( starts[ i ] / bytesPerElement, counts[ i ], primcount[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawElementsInstancedWEBGL( mode, counts, 0, type, starts, 0, primcount, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < primcount.length; i ++ ) {\n\n\t\t\t\tinfo.update( elementCount, mode, primcount[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\tthis.renderMultiDrawInstances = renderMultiDrawInstances;\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 gl.TRIANGLES:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINES:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_STRIP:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_LOOP:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase gl.POINTS:\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.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 WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tfunction update( object, geometry, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// the following encodes morph targets into an array of data textures. Each layer represents a single morph target.\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 entry = morphTextures.get( geometry );\n\n\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\tlet vertexDataCount = 0;\n\n\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\tlet height = 1;\n\n\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t}\n\n\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\ttexture.type = FloatType;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\t// fill buffer\n\n\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tentry = {\n\t\t\t\tcount: morphTargetsCount,\n\t\t\t\ttexture: texture,\n\t\t\t\tsize: new Vector2( width, height )\n\t\t\t};\n\n\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\tfunction disposeTexture() {\n\n\t\t\t\ttexture.dispose();\n\n\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t}\n\n\t\t//\n\t\tif ( object.isInstancedMesh === true && object.morphTexture !== null ) {\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTexture', object.morphTexture, textures );\n\n\t\t} else {\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\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t}\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\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\tif ( updateMap.get( object ) !== frame ) {\n\n\t\t\t\tattributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );\n\n\t\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\t\tattributes.update( object.instanceColor, gl.ARRAY_BUFFER );\n\n\t\t\t\t}\n\n\t\t\t\tupdateMap.set( object, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( updateMap.get( skeleton ) !== frame ) {\n\n\t\t\t\tskeleton.update();\n\n\t\t\t\tupdateMap.set( skeleton, frame );\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\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, 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 = UnsignedIntType;\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.isDepthTexture = true;\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 = false;\n\n\t\tthis.compareFunction = null;\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.compareFunction = source.compareFunction;\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.compareFunction !== null ) data.compareFunction = this.compareFunction;\n\n\t\treturn data;\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\n\nconst emptyTexture = /*@__PURE__*/ new Texture();\n\nconst emptyShadowTexture = /*@__PURE__*/ new DepthTexture( 1, 1 );\n\nconst emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();\nconst empty3dTexture = /*@__PURE__*/ new Data3DTexture();\nconst emptyCubeTexture = /*@__PURE__*/ 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 or THREE.VectorN)\n\nfunction setValueV2i( 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.uniform2i( 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.uniform2iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3i( 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.uniform3i( 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 {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4i( 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.uniform4i( 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.uniform4iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\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 or THREE.VectorN)\n\nfunction setValueV2ui( 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.uniform2ui( 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.uniform2uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3ui( 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.uniform3ui( 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 {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4ui( 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.uniform4ui( 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.uniform4uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\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\tlet emptyTexture2D;\n\n\tif ( this.type === gl.SAMPLER_2D_SHADOW ) {\n\n\t\temptyShadowTexture.compareFunction = LessEqualCompare; // #28670\n\t\temptyTexture2D = emptyShadowTexture;\n\n\t} else {\n\n\t\temptyTexture2D = emptyTexture;\n\n\t}\n\n\ttextures.setTexture2D( v || emptyTexture2D, 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 cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\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 cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\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 cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\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 cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\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\nclass SingleUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass PureArrayUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass StructuredUniform {\n\n\tconstructor( id ) {\n\n\t\tthis.id = id;\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\tsetValue( gl, value, textures ) {\n\n\t\tconst seq = this.seq;\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t\t}\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\nclass WebGLUniforms {\n\n\tconstructor( gl, program ) {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t\tconst n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\t\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tsetValue( gl, name, value, textures ) {\n\n\t\tconst u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n\t}\n\n\tsetOptional( gl, object, name ) {\n\n\t\tconst v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t}\n\n\tstatic upload( gl, seq, values, textures ) {\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic seqWithValue( seq, values ) {\n\n\t\tconst r = [];\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t}\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\n// From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/\nconst COMPLETION_STATUS_KHR = 0x91B1;\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\tconst line = i + 1;\n\t\tlines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( colorSpace ) {\n\n\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\tconst encodingPrimaries = ColorManagement.getPrimaries( colorSpace );\n\n\tlet gamutMapping;\n\n\tif ( workingPrimaries === encodingPrimaries ) {\n\n\t\tgamutMapping = '';\n\n\t} else if ( workingPrimaries === P3Primaries && encodingPrimaries === Rec709Primaries ) {\n\n\t\tgamutMapping = 'LinearDisplayP3ToLinearSRGB';\n\n\t} else if ( workingPrimaries === Rec709Primaries && encodingPrimaries === P3Primaries ) {\n\n\t\tgamutMapping = 'LinearSRGBToLinearDisplayP3';\n\n\t}\n\n\tswitch ( colorSpace ) {\n\n\t\tcase LinearSRGBColorSpace:\n\t\tcase LinearDisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t\tcase SRGBColorSpace:\n\t\tcase DisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'sRGBTransferOETF' ];\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported color space:', colorSpace );\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, gl.COMPILE_STATUS );\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[ 1 ] );\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, colorSpace ) {\n\n\tconst components = getEncodingComponents( colorSpace );\n\treturn `vec4 ${functionName}( vec4 value ) { return ${components[ 0 ]}( ${components[ 1 ]}( value ) ); }`;\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 AgXToneMapping:\n\t\t\ttoneMappingName = 'AgX';\n\t\t\tbreak;\n\n\t\tcase NeutralToneMapping:\n\t\t\ttoneMappingName = 'Neutral';\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\nconst _v0$1 = /*@__PURE__*/ new Vector3();\n\nfunction getLuminanceFunction() {\n\n\tColorManagement.getLuminanceCoefficients( _v0$1 );\n\n\tconst r = _v0$1.x.toFixed( 4 );\n\tconst g = _v0$1.y.toFixed( 4 );\n\tconst b = _v0$1.z.toFixed( 4 );\n\n\treturn [\n\n\t\t'float luminance( const in vec3 rgb ) {',\n\n\t\t`\tconst vec3 weights = vec3( ${ r }, ${ g }, ${ b } );`,\n\n\t\t'\treturn dot( weights, rgb );',\n\n\t\t'}'\n\n\t].join( '\\n' );\n\n}\n\nfunction generateVertexExtensions( parameters ) {\n\n\tconst chunks = [\n\t\tparameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : '',\n\t\tparameters.extensionMultiDraw ? '#extension GL_ANGLE_multi_draw : require' : '',\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, gl.ACTIVE_ATTRIBUTES );\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 === gl.FLOAT_MAT2 ) locationSize = 2;\n\t\tif ( info.type === gl.FLOAT_MAT3 ) locationSize = 3;\n\t\tif ( info.type === gl.FLOAT_MAT4 ) 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\tconst numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\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_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords )\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_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps )\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\nconst shaderChunkMap = new Map();\n\nfunction includeReplacer( match, include ) {\n\n\tlet string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tconst newInclude = shaderChunkMap.get( include );\n\n\t\tif ( newInclude !== undefined ) {\n\n\t\t\tstring = ShaderChunk[ newInclude ];\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Shader chunk \"%s\" has been deprecated. Use \"%s\" instead.', include, newInclude );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\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.replace( unrollLoopPattern, loopReplacer );\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;\n\tprecision ${parameters.precision} int;\n\tprecision ${parameters.precision} sampler2D;\n\tprecision ${parameters.precision} samplerCube;\n\tprecision ${parameters.precision} sampler3D;\n\tprecision ${parameters.precision} sampler2DArray;\n\tprecision ${parameters.precision} sampler2DShadow;\n\tprecision ${parameters.precision} samplerCubeShadow;\n\tprecision ${parameters.precision} sampler2DArrayShadow;\n\tprecision ${parameters.precision} isampler2D;\n\tprecision ${parameters.precision} isampler3D;\n\tprecision ${parameters.precision} isamplerCube;\n\tprecision ${parameters.precision} isampler2DArray;\n\tprecision ${parameters.precision} usampler2D;\n\tprecision ${parameters.precision} usampler3D;\n\tprecision ${parameters.precision} usamplerCube;\n\tprecision ${parameters.precision} usampler2DArray;\n\t`;\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 customVertexExtensions = generateVertexExtensions( 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\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\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\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\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_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.extensionClipCullDistance ? '#define USE_CLIP_DISTANCE' : '',\n\t\t\tparameters.batching ? '#define USE_BATCHING' : '',\n\t\t\tparameters.batchingColor ? '#define USE_BATCHING_COLOR' : '',\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\t\t\tparameters.instancingMorph ? '#define USE_INSTANCING_MORPH' : '',\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.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.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\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.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\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\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\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_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\t//\n\n\t\t\tparameters.mapUv ? '#define MAP_UV ' + parameters.mapUv : '',\n\t\t\tparameters.alphaMapUv ? '#define ALPHAMAP_UV ' + parameters.alphaMapUv : '',\n\t\t\tparameters.lightMapUv ? '#define LIGHTMAP_UV ' + parameters.lightMapUv : '',\n\t\t\tparameters.aoMapUv ? '#define AOMAP_UV ' + parameters.aoMapUv : '',\n\t\t\tparameters.emissiveMapUv ? '#define EMISSIVEMAP_UV ' + parameters.emissiveMapUv : '',\n\t\t\tparameters.bumpMapUv ? '#define BUMPMAP_UV ' + parameters.bumpMapUv : '',\n\t\t\tparameters.normalMapUv ? '#define NORMALMAP_UV ' + parameters.normalMapUv : '',\n\t\t\tparameters.displacementMapUv ? '#define DISPLACEMENTMAP_UV ' + parameters.displacementMapUv : '',\n\n\t\t\tparameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '',\n\t\t\tparameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '',\n\n\t\t\tparameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '',\n\n\t\t\tparameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',\n\t\t\tparameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',\n\t\t\tparameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',\n\n\t\t\tparameters.iridescenceMapUv ? '#define IRIDESCENCEMAP_UV ' + parameters.iridescenceMapUv : '',\n\t\t\tparameters.iridescenceThicknessMapUv ? '#define IRIDESCENCE_THICKNESSMAP_UV ' + parameters.iridescenceThicknessMapUv : '',\n\n\t\t\tparameters.sheenColorMapUv ? '#define SHEEN_COLORMAP_UV ' + parameters.sheenColorMapUv : '',\n\t\t\tparameters.sheenRoughnessMapUv ? '#define SHEEN_ROUGHNESSMAP_UV ' + parameters.sheenRoughnessMapUv : '',\n\n\t\t\tparameters.specularMapUv ? '#define SPECULARMAP_UV ' + parameters.specularMapUv : '',\n\t\t\tparameters.specularColorMapUv ? '#define SPECULAR_COLORMAP_UV ' + parameters.specularColorMapUv : '',\n\t\t\tparameters.specularIntensityMapUv ? '#define SPECULAR_INTENSITYMAP_UV ' + parameters.specularIntensityMapUv : '',\n\n\t\t\tparameters.transmissionMapUv ? '#define TRANSMISSIONMAP_UV ' + parameters.transmissionMapUv : '',\n\t\t\tparameters.thicknessMapUv ? '#define THICKNESSMAP_UV ' + parameters.thicknessMapUv : '',\n\n\t\t\t//\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\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 ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 ) ? '#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.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\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'#ifdef USE_INSTANCING_MORPH',\n\n\t\t\t'\tuniform sampler2D morphTexture;',\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_UV1',\n\n\t\t\t'\tattribute vec2 uv1;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV2',\n\n\t\t\t'\tattribute vec2 uv2;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV3',\n\n\t\t\t'\tattribute vec2 uv3;',\n\n\t\t\t'#endif',\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'#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\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.alphaToCoverage ? '#define ALPHA_TO_COVERAGE' : '',\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.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\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.dispersion ? '#define USE_DISPERSION' : '',\n\n\t\t\tparameters.iridescence ? '#define USE_IRIDESCENCE' : '',\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\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\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\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.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor || parameters.batchingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\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.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\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[ 'colorspace_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.outputColorSpace ),\n\t\t\tgetLuminanceFunction(),\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.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\tcustomVertexExtensions,\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, gl.VERTEX_SHADER, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, 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\tfunction onFirstUse( self ) {\n\n\t\t// check for link errors\n\t\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\t\tlet runnable = true;\n\t\t\tlet haveDiagnostics = true;\n\n\t\t\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\t\t\trunnable = false;\n\n\t\t\t\tif ( typeof renderer.debug.onShaderError === 'function' ) {\n\n\t\t\t\t\trenderer.debug.onShaderError( gl, program, glVertexShader, glFragmentShader );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// default error reporting\n\n\t\t\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\\n\\n' +\n\t\t\t\t\t\t'Material Name: ' + self.name + '\\n' +\n\t\t\t\t\t\t'Material Type: ' + self.type + '\\n\\n' +\n\t\t\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\t\t\tfragmentErrors\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t} else if ( programLog !== '' ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\t\thaveDiagnostics = false;\n\n\t\t\t}\n\n\t\t\tif ( haveDiagnostics ) {\n\n\t\t\t\tself.diagnostics = {\n\n\t\t\t\t\trunnable: runnable,\n\n\t\t\t\t\tprogramLog: programLog,\n\n\t\t\t\t\tvertexShader: {\n\n\t\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t\t},\n\n\t\t\t\t\tfragmentShader: {\n\n\t\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Clean up\n\n\t\t// Crashes in iOS9 and iOS10. #18402\n\t\t// gl.detachShader( program, glVertexShader );\n\t\t// gl.detachShader( program, glFragmentShader );\n\n\t\tgl.deleteShader( glVertexShader );\n\t\tgl.deleteShader( glFragmentShader );\n\n\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t}\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\t// Populates cachedUniforms and cachedAttributes\n\t\t\tonFirstUse( this );\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\t// Populates cachedAttributes and cachedUniforms\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// indicate when the program is ready to be used. if the KHR_parallel_shader_compile extension isn't supported,\n\t// flag the program as ready immediately. It may cause a stall when it's first used.\n\n\tlet programReady = ( parameters.rendererExtensionParallelShaderCompile === false );\n\n\tthis.isReady = function () {\n\n\t\tif ( programReady === false ) {\n\n\t\t\tprogramReady = gl.getProgramParameter( program, COMPLETION_STATUS_KHR );\n\n\t\t}\n\n\t\treturn programReady;\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.type = parameters.shaderType;\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$1 = 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\t\tlet set = cache.get( material );\n\n\t\tif ( set === undefined ) {\n\n\t\t\tset = new Set();\n\t\t\tcache.set( material, set );\n\n\t\t}\n\n\t\treturn set;\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\t\tlet stage = cache.get( code );\n\n\t\tif ( stage === undefined ) {\n\n\t\t\tstage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn stage;\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id$1 ++;\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 _activeChannels = new Set();\n\tconst programs = [];\n\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getChannel( value ) {\n\n\t\t_activeChannels.add( value );\n\n\t\tif ( value === 0 ) return 'uv';\n\n\t\treturn `uv${ value }`;\n\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 IS_INSTANCEDMESH = object.isInstancedMesh === true;\n\t\tconst IS_BATCHEDMESH = object.isBatchedMesh === true;\n\n\t\tconst HAS_MAP = !! material.map;\n\t\tconst HAS_MATCAP = !! material.matcap;\n\t\tconst HAS_ENVMAP = !! envMap;\n\t\tconst HAS_AOMAP = !! material.aoMap;\n\t\tconst HAS_LIGHTMAP = !! material.lightMap;\n\t\tconst HAS_BUMPMAP = !! material.bumpMap;\n\t\tconst HAS_NORMALMAP = !! material.normalMap;\n\t\tconst HAS_DISPLACEMENTMAP = !! material.displacementMap;\n\t\tconst HAS_EMISSIVEMAP = !! material.emissiveMap;\n\n\t\tconst HAS_METALNESSMAP = !! material.metalnessMap;\n\t\tconst HAS_ROUGHNESSMAP = !! material.roughnessMap;\n\n\t\tconst HAS_ANISOTROPY = material.anisotropy > 0;\n\t\tconst HAS_CLEARCOAT = material.clearcoat > 0;\n\t\tconst HAS_DISPERSION = material.dispersion > 0;\n\t\tconst HAS_IRIDESCENCE = material.iridescence > 0;\n\t\tconst HAS_SHEEN = material.sheen > 0;\n\t\tconst HAS_TRANSMISSION = material.transmission > 0;\n\n\t\tconst HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap;\n\n\t\tconst HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;\n\t\tconst HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;\n\t\tconst HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;\n\n\t\tconst HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !! material.iridescenceMap;\n\t\tconst HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !! material.iridescenceThicknessMap;\n\n\t\tconst HAS_SHEEN_COLORMAP = HAS_SHEEN && !! material.sheenColorMap;\n\t\tconst HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !! material.sheenRoughnessMap;\n\n\t\tconst HAS_SPECULARMAP = !! material.specularMap;\n\t\tconst HAS_SPECULAR_COLORMAP = !! material.specularColorMap;\n\t\tconst HAS_SPECULAR_INTENSITYMAP = !! material.specularIntensityMap;\n\n\t\tconst HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !! material.transmissionMap;\n\t\tconst HAS_THICKNESSMAP = HAS_TRANSMISSION && !! material.thicknessMap;\n\n\t\tconst HAS_GRADIENTMAP = !! material.gradientMap;\n\n\t\tconst HAS_ALPHAMAP = !! material.alphaMap;\n\n\t\tconst HAS_ALPHATEST = material.alphaTest > 0;\n\n\t\tconst HAS_ALPHAHASH = !! material.alphaHash;\n\n\t\tconst HAS_EXTENSIONS = !! material.extensions;\n\n\t\tlet toneMapping = NoToneMapping;\n\n\t\tif ( material.toneMapped ) {\n\n\t\t\tif ( currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\ttoneMapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst parameters = {\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderType: material.type,\n\t\t\tshaderName: material.name,\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\tbatching: IS_BATCHEDMESH,\n\t\t\tbatchingColor: IS_BATCHEDMESH && object._colorsTexture !== null,\n\t\t\tinstancing: IS_INSTANCEDMESH,\n\t\t\tinstancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,\n\t\t\tinstancingMorph: IS_INSTANCEDMESH && object.morphTexture !== null,\n\n\t\t\tsupportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,\n\t\t\toutputColorSpace: ( currentRenderTarget === null ) ? renderer.outputColorSpace : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace ),\n\t\t\talphaToCoverage: !! material.alphaToCoverage,\n\n\t\t\tmap: HAS_MAP,\n\t\t\tmatcap: HAS_MATCAP,\n\t\t\tenvMap: HAS_ENVMAP,\n\t\t\tenvMapMode: HAS_ENVMAP && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\taoMap: HAS_AOMAP,\n\t\t\tlightMap: HAS_LIGHTMAP,\n\t\t\tbumpMap: HAS_BUMPMAP,\n\t\t\tnormalMap: HAS_NORMALMAP,\n\t\t\tdisplacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP,\n\t\t\temissiveMap: HAS_EMISSIVEMAP,\n\n\t\t\tnormalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tnormalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tmetalnessMap: HAS_METALNESSMAP,\n\t\t\troughnessMap: HAS_ROUGHNESSMAP,\n\n\t\t\tanisotropy: HAS_ANISOTROPY,\n\t\t\tanisotropyMap: HAS_ANISOTROPYMAP,\n\n\t\t\tclearcoat: HAS_CLEARCOAT,\n\t\t\tclearcoatMap: HAS_CLEARCOATMAP,\n\t\t\tclearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,\n\t\t\tclearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,\n\n\t\t\tdispersion: HAS_DISPERSION,\n\n\t\t\tiridescence: HAS_IRIDESCENCE,\n\t\t\tiridescenceMap: HAS_IRIDESCENCEMAP,\n\t\t\tiridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP,\n\n\t\t\tsheen: HAS_SHEEN,\n\t\t\tsheenColorMap: HAS_SHEEN_COLORMAP,\n\t\t\tsheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP,\n\n\t\t\tspecularMap: HAS_SPECULARMAP,\n\t\t\tspecularColorMap: HAS_SPECULAR_COLORMAP,\n\t\t\tspecularIntensityMap: HAS_SPECULAR_INTENSITYMAP,\n\n\t\t\ttransmission: HAS_TRANSMISSION,\n\t\t\ttransmissionMap: HAS_TRANSMISSIONMAP,\n\t\t\tthicknessMap: HAS_THICKNESSMAP,\n\n\t\t\tgradientMap: HAS_GRADIENTMAP,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending && material.alphaToCoverage === false,\n\n\t\t\talphaMap: HAS_ALPHAMAP,\n\t\t\talphaTest: HAS_ALPHATEST,\n\t\t\talphaHash: HAS_ALPHAHASH,\n\n\t\t\tcombine: material.combine,\n\n\t\t\t//\n\n\t\t\tmapUv: HAS_MAP && getChannel( material.map.channel ),\n\t\t\taoMapUv: HAS_AOMAP && getChannel( material.aoMap.channel ),\n\t\t\tlightMapUv: HAS_LIGHTMAP && getChannel( material.lightMap.channel ),\n\t\t\tbumpMapUv: HAS_BUMPMAP && getChannel( material.bumpMap.channel ),\n\t\t\tnormalMapUv: HAS_NORMALMAP && getChannel( material.normalMap.channel ),\n\t\t\tdisplacementMapUv: HAS_DISPLACEMENTMAP && getChannel( material.displacementMap.channel ),\n\t\t\temissiveMapUv: HAS_EMISSIVEMAP && getChannel( material.emissiveMap.channel ),\n\n\t\t\tmetalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),\n\t\t\troughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),\n\n\t\t\tanisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),\n\n\t\t\tclearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),\n\t\t\tclearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),\n\t\t\tclearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),\n\n\t\t\tiridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel( material.iridescenceMap.channel ),\n\t\t\tiridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel( material.iridescenceThicknessMap.channel ),\n\n\t\t\tsheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel( material.sheenColorMap.channel ),\n\t\t\tsheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel( material.sheenRoughnessMap.channel ),\n\n\t\t\tspecularMapUv: HAS_SPECULARMAP && getChannel( material.specularMap.channel ),\n\t\t\tspecularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel( material.specularColorMap.channel ),\n\t\t\tspecularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel( material.specularIntensityMap.channel ),\n\n\t\t\ttransmissionMapUv: HAS_TRANSMISSIONMAP && getChannel( material.transmissionMap.channel ),\n\t\t\tthicknessMapUv: HAS_THICKNESSMAP && getChannel( material.thicknessMap.channel ),\n\n\t\t\talphaMapUv: HAS_ALPHAMAP && getChannel( material.alphaMap.channel ),\n\n\t\t\t//\n\n\t\t\tvertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\n\t\t\tpointsUvs: object.isPoints === true && !! geometry.attributes.uv && ( HAS_MAP || HAS_ALPHAMAP ),\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 === true,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation === true,\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\tnumSpotLightMaps: lights.spotLightMap.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\t\t\tnumSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n\n\t\t\tnumLightProbes: lights.numLightProbes,\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: toneMapping,\n\n\t\t\tdecodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.map.colorSpace ) === SRGBTransfer ),\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 >= 0,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions.has( 'WEBGL_clip_cull_distance' ),\n\t\t\textensionMultiDraw: ( HAS_EXTENSIONS && material.extensions.multiDraw === true || IS_BATCHEDMESH ) && extensions.has( 'WEBGL_multi_draw' ),\n\n\t\t\trendererExtensionParallelShaderCompile: extensions.has( 'KHR_parallel_shader_compile' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\t// the usage of getChannel() determines the active texture channels for this shader\n\n\t\tparameters.vertexUv1s = _activeChannels.has( 1 );\n\t\tparameters.vertexUv2s = _activeChannels.has( 2 );\n\t\tparameters.vertexUv3s = _activeChannels.has( 3 );\n\n\t\t_activeChannels.clear();\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.outputColorSpace );\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.outputColorSpace );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.mapUv );\n\t\tarray.push( parameters.alphaMapUv );\n\t\tarray.push( parameters.lightMapUv );\n\t\tarray.push( parameters.aoMapUv );\n\t\tarray.push( parameters.bumpMapUv );\n\t\tarray.push( parameters.normalMapUv );\n\t\tarray.push( parameters.displacementMapUv );\n\t\tarray.push( parameters.emissiveMapUv );\n\t\tarray.push( parameters.metalnessMapUv );\n\t\tarray.push( parameters.roughnessMapUv );\n\t\tarray.push( parameters.anisotropyMapUv );\n\t\tarray.push( parameters.clearcoatMapUv );\n\t\tarray.push( parameters.clearcoatNormalMapUv );\n\t\tarray.push( parameters.clearcoatRoughnessMapUv );\n\t\tarray.push( parameters.iridescenceMapUv );\n\t\tarray.push( parameters.iridescenceThicknessMapUv );\n\t\tarray.push( parameters.sheenColorMapUv );\n\t\tarray.push( parameters.sheenRoughnessMapUv );\n\t\tarray.push( parameters.specularMapUv );\n\t\tarray.push( parameters.specularColorMapUv );\n\t\tarray.push( parameters.specularIntensityMapUv );\n\t\tarray.push( parameters.transmissionMapUv );\n\t\tarray.push( parameters.thicknessMapUv );\n\t\tarray.push( parameters.combine );\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.numSpotLightMaps );\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.numSpotLightShadowsWithMaps );\n\t\tarray.push( parameters.numLightProbes );\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.supportsVertexTextures )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingMorph )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.normalMapObjectSpace )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.normalMapTangentSpace )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.iridescence )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.vertexUv1s )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.vertexUv2s )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.vertexUv3s )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.anisotropy )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.alphaHash )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.batching )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.dispersion )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.batchingColor )\n\t\t\t_programLayers.enable( 21 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.shadowMapEnabled )\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.transmission )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.pointsUvs )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.alphaToCoverage )\n\t\t\t_programLayers.enable( 19 );\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\tconst listArray = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( listArray === undefined ) {\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 >= listArray.length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlistArray.push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = listArray[ 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\tshadowIntensity: 1,\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\tshadowIntensity: 1,\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\tshadowIntensity: 1,\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 shadowCastingAndTexturingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 2 : 0 ) - ( lightA.castShadow ? 2 : 0 ) + ( lightB.map ? 1 : 0 ) - ( lightA.map ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions ) {\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\tnumSpotMaps: - 1,\n\n\t\t\tnumLightProbes: - 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\tspotLightMap: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotLightMatrix: [],\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\t\tnumSpotLightShadowsWithMaps: 0,\n\t\tnumLightProbes: 0\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 ) {\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\t\tlet numSpotMaps = 0;\n\t\tlet numSpotShadowsWithMaps = 0;\n\n\t\tlet numLightProbes = 0;\n\n\t\t// ordering : [shadow casting + map texturing, map texturing, shadow casting, none ]\n\t\tlights.sort( shadowCastingAndTexturingLightsFirst );\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t\tnumLightProbes ++;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\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.shadowIntensity = shadow.intensity;\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 );\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\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\tif ( light.map ) {\n\n\t\t\t\t\tstate.spotLightMap[ numSpotMaps ] = light.map;\n\t\t\t\t\tnumSpotMaps ++;\n\n\t\t\t\t\t// make sure the lightMatrix is up to date\n\t\t\t\t\t// TODO : do it if required only\n\t\t\t\t\tshadow.updateMatrices( light );\n\n\t\t\t\t\tif ( light.castShadow ) numSpotShadowsWithMaps ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotLightMatrix[ spotLength ] = shadow.matrix;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowIntensity = shadow.intensity;\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\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\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\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 );\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.shadowIntensity = shadow.intensity;\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 );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\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\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\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\t\t\thash.numSpotMaps !== numSpotMaps ||\n\t\t\thash.numLightProbes !== numLightProbes ) {\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.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n\t\t\tstate.spotLightMap.length = numSpotMaps;\n\t\t\tstate.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\n\t\t\tstate.numLightProbes = numLightProbes;\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\t\t\thash.numSpotMaps = numSpotMaps;\n\n\t\t\thash.numLightProbes = numLightProbes;\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 ) {\n\n\tconst lights = new WebGLLights( extensions );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init( camera ) {\n\n\t\tstate.camera = camera;\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() {\n\n\t\tlights.setup( lightsArray );\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\tcamera: null,\n\n\t\tlights: lights,\n\n\t\ttransmissionRenderTarget: {}\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 ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tconst renderStateArray = renderStates.get( scene );\n\t\tlet renderState;\n\n\t\tif ( renderStateArray === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStateArray.length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions );\n\t\t\t\trenderStateArray.push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStateArray[ 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.isMeshDepthMaterial = true;\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\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\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.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\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 = { [ FrontSide ]: BackSide, [ BackSide ]: FrontSide, [ DoubleSide ]: 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\tlet _previousType = this.type;\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// check for shadow map type changes\n\n\t\tconst toVSM = ( _previousType !== VSMShadowMap && this.type === VSMShadowMap );\n\t\tconst fromVSM = ( _previousType === VSMShadowMap && this.type !== VSMShadowMap );\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 || toVSM === true || fromVSM === true ) {\n\n\t\t\t\tconst pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n\n\t\t\t\tif ( shadow.map !== null ) {\n\n\t\t\t\t\tshadow.map.dispose();\n\n\t\t\t\t}\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\trenderer.setRenderTarget( shadow.map );\n\t\t\trenderer.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 !== true && 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\t_previousType = this.type;\n\n\t\tscope.needsUpdate = false;\n\n\t\trenderer.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\tif ( shadow.mapPass === null ) {\n\n\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\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\trenderer.setRenderTarget( shadow.mapPass );\n\t\trenderer.clear();\n\t\trenderer.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\trenderer.setRenderTarget( shadow.map );\n\t\trenderer.clear();\n\t\trenderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, 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\tif ( ( renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||\n\t\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t\t( material.alphaMap && material.alphaTest > 0 ) ||\n\t\t\t\t( material.map && material.alphaTest > 0 ) ) {\n\n\t\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t\t// appropriate state\n\n\t\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t\t}\n\n\t\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\t\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\t}\n\n\t\t\t\tresult = cachedMaterial;\n\n\t\t\t}\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\t\tresult.map = material.map;\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\tconst materialProperties = renderer.properties.get( result );\n\t\t\tmaterialProperties.light = light;\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, type );\n\n\t\t\t\t\t\t\tobject.onBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t\trenderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\tobject.onAfterShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, 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, type );\n\n\t\t\t\t\tobject.onBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t\trenderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\tobject.onAfterShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, 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\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t// make sure to remove the unique distance/depth materials used for shadow map rendering\n\n\t\tfor ( const id in _materialCache ) {\n\n\t\t\tconst cache = _materialCache[ id ];\n\n\t\t\tconst uuid = event.target.uuid;\n\n\t\t\tif ( uuid in cache ) {\n\n\t\t\t\tconst shadowMaterial = cache[ uuid ];\n\t\t\t\tshadowMaterial.dispose();\n\t\t\t\tdelete cache[ uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl ) {\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( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\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\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\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( gl.STENCIL_TEST );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( gl.STENCIL_TEST );\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\tconst uboBindings = new WeakMap();\n\tconst uboProgramMap = new WeakMap();\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 currentBlendColor = new Color( 0, 0, 0 );\n\tlet currentBlendAlpha = 0;\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( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( gl.VERSION );\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( gl.SCISSOR_BOX );\n\tconst viewportParam = gl.getParameter( gl.VIEWPORT );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count, dimensions ) {\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, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tif ( type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tgl.texImage3D( target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t} else {\n\n\t\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\temptyTextures[ gl.TEXTURE_2D_ARRAY ] = createTexture( gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1 );\n\temptyTextures[ gl.TEXTURE_3D ] = createTexture( gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( gl.DEPTH_TEST );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( gl.CULL_FACE );\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\t// gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER\n\n\t\t\tif ( target === gl.DRAW_FRAMEBUFFER ) {\n\n\t\t\t\tcurrentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer;\n\n\t\t\t}\n\n\t\t\tif ( target === gl.FRAMEBUFFER ) {\n\n\t\t\t\tcurrentBoundFramebuffers[ gl.DRAW_FRAMEBUFFER ] = framebuffer;\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\tconst textures = renderTarget.textures;\n\n\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\tdrawBuffers[ i ] = gl.COLOR_ATTACHMENT0 + i;\n\n\t\t\t\t}\n\n\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== gl.BACK ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = gl.BACK;\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\tgl.drawBuffers( drawBuffers );\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: gl.FUNC_ADD,\n\t\t[ SubtractEquation ]: gl.FUNC_SUBTRACT,\n\t\t[ ReverseSubtractEquation ]: gl.FUNC_REVERSE_SUBTRACT\n\t};\n\n\tequationToGL[ MinEquation ] = gl.MIN;\n\tequationToGL[ MaxEquation ] = gl.MAX;\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: gl.ZERO,\n\t\t[ OneFactor ]: gl.ONE,\n\t\t[ SrcColorFactor ]: gl.SRC_COLOR,\n\t\t[ SrcAlphaFactor ]: gl.SRC_ALPHA,\n\t\t[ SrcAlphaSaturateFactor ]: gl.SRC_ALPHA_SATURATE,\n\t\t[ DstColorFactor ]: gl.DST_COLOR,\n\t\t[ DstAlphaFactor ]: gl.DST_ALPHA,\n\t\t[ OneMinusSrcColorFactor ]: gl.ONE_MINUS_SRC_COLOR,\n\t\t[ OneMinusSrcAlphaFactor ]: gl.ONE_MINUS_SRC_ALPHA,\n\t\t[ OneMinusDstColorFactor ]: gl.ONE_MINUS_DST_COLOR,\n\t\t[ OneMinusDstAlphaFactor ]: gl.ONE_MINUS_DST_ALPHA,\n\t\t[ ConstantColorFactor ]: gl.CONSTANT_COLOR,\n\t\t[ OneMinusConstantColorFactor ]: gl.ONE_MINUS_CONSTANT_COLOR,\n\t\t[ ConstantAlphaFactor ]: gl.CONSTANT_ALPHA,\n\t\t[ OneMinusConstantAlphaFactor ]: gl.ONE_MINUS_CONSTANT_ALPHA\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, blendColor, blendAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( gl.BLEND );\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( gl.BLEND );\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( gl.FUNC_ADD );\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( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\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( gl.ONE, gl.ONE );\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( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\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( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\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( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\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( gl.SRC_ALPHA, gl.ONE );\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( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\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( gl.ZERO, gl.SRC_COLOR );\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\t\t\t\tcurrentBlendColor.set( 0, 0, 0 );\n\t\t\t\tcurrentBlendAlpha = 0;\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\tif ( blendColor.equals( currentBlendColor ) === false || blendAlpha !== currentBlendAlpha ) {\n\n\t\t\tgl.blendColor( blendColor.r, blendColor.g, blendColor.b, blendAlpha );\n\n\t\t\tcurrentBlendColor.copy( blendColor );\n\t\t\tcurrentBlendAlpha = blendAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = false;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( gl.CULL_FACE )\n\t\t\t: enable( gl.CULL_FACE );\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.blendColor, material.blendAlpha, 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( gl.SAMPLE_ALPHA_TO_COVERAGE )\n\t\t\t: disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\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( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\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( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\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( gl.POLYGON_OFFSET_FILL );\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( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + 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, webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) {\n\n\t\t\tif ( currentTextureSlot === null ) {\n\n\t\t\t\twebglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\t\t} else {\n\n\t\t\t\twebglSlot = currentTextureSlot;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ webglSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ webglSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\t\tgl.activeTexture( webglSlot );\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t\t}\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 compressedTexImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage3D.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 compressedTexSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage3D.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\tfunction updateUBOMapping( uniformsGroup, program ) {\n\n\t\tlet mapping = uboProgramMap.get( program );\n\n\t\tif ( mapping === undefined ) {\n\n\t\t\tmapping = new WeakMap();\n\n\t\t\tuboProgramMap.set( program, mapping );\n\n\t\t}\n\n\t\tlet blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( blockIndex === undefined ) {\n\n\t\t\tblockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );\n\n\t\t\tmapping.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\tfunction uniformBlockBinding( uniformsGroup, program ) {\n\n\t\tconst mapping = uboProgramMap.get( program );\n\t\tconst blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( uboBindings.get( program ) !== blockIndex ) {\n\n\t\t\t// bind shader specific block index to global block point\n\t\t\tgl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );\n\n\t\t\tuboBindings.set( program, blockIndex );\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( gl.BLEND );\n\t\tgl.disable( gl.CULL_FACE );\n\t\tgl.disable( gl.DEPTH_TEST );\n\t\tgl.disable( gl.POLYGON_OFFSET_FILL );\n\t\tgl.disable( gl.SCISSOR_TEST );\n\t\tgl.disable( gl.STENCIL_TEST );\n\t\tgl.disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\tgl.blendFunc( gl.ONE, gl.ZERO );\n\t\tgl.blendFuncSeparate( gl.ONE, gl.ZERO, gl.ONE, gl.ZERO );\n\t\tgl.blendColor( 0, 0, 0, 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( gl.LESS );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( gl.ALWAYS, 0, 0xffffffff );\n\t\tgl.stencilOp( gl.KEEP, gl.KEEP, gl.KEEP );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( gl.BACK );\n\t\tgl.frontFace( gl.CCW );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( gl.TEXTURE0 );\n\n\t\tgl.bindFramebuffer( gl.FRAMEBUFFER, null );\n\t\tgl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null );\n\t\tgl.bindFramebuffer( gl.READ_FRAMEBUFFER, null );\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\tcurrentBlendColor = new Color( 0, 0, 0 );\n\t\tcurrentBlendAlpha = 0;\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\tcompressedTexImage3D: compressedTexImage3D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tupdateUBOMapping: updateUBOMapping,\n\t\tuniformBlockBinding: uniformBlockBinding,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\t\tcompressedTexSubImage3D: compressedTexSubImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction contain( texture, aspect ) {\n\n\tconst imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1;\n\n\tif ( imageAspect > aspect ) {\n\n\t\ttexture.repeat.x = 1;\n\t\ttexture.repeat.y = imageAspect / aspect;\n\n\t\ttexture.offset.x = 0;\n\t\ttexture.offset.y = ( 1 - texture.repeat.y ) / 2;\n\n\t} else {\n\n\t\ttexture.repeat.x = aspect / imageAspect;\n\t\ttexture.repeat.y = 1;\n\n\t\ttexture.offset.x = ( 1 - texture.repeat.x ) / 2;\n\t\ttexture.offset.y = 0;\n\n\t}\n\n\treturn texture;\n\n}\n\nfunction cover( texture, aspect ) {\n\n\tconst imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1;\n\n\tif ( imageAspect > aspect ) {\n\n\t\ttexture.repeat.x = aspect / imageAspect;\n\t\ttexture.repeat.y = 1;\n\n\t\ttexture.offset.x = ( 1 - texture.repeat.x ) / 2;\n\t\ttexture.offset.y = 0;\n\n\t} else {\n\n\t\ttexture.repeat.x = 1;\n\t\ttexture.repeat.y = imageAspect / aspect;\n\n\t\ttexture.offset.x = 0;\n\t\ttexture.offset.y = ( 1 - texture.repeat.y ) / 2;\n\n\t}\n\n\treturn texture;\n\n}\n\nfunction fill( texture ) {\n\n\ttexture.repeat.x = 1;\n\ttexture.repeat.y = 1;\n\n\ttexture.offset.x = 0;\n\ttexture.offset.y = 0;\n\n\treturn texture;\n\n}\n\n\n\n/**\n * Given the width, height, format, and type of a texture. Determines how many\n * bytes must be used to represent the texture.\n */\nfunction getByteLength( width, height, format, type ) {\n\n\tconst typeByteLength = getTextureTypeByteLength( type );\n\n\tswitch ( format ) {\n\n\t\t// https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml\n\t\tcase AlphaFormat:\n\t\t\treturn width * height;\n\t\tcase LuminanceFormat:\n\t\t\treturn width * height;\n\t\tcase LuminanceAlphaFormat:\n\t\t\treturn width * height * 2;\n\t\tcase RedFormat:\n\t\t\treturn ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RedIntegerFormat:\n\t\t\treturn ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGFormat:\n\t\t\treturn ( ( width * height * 2 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGIntegerFormat:\n\t\t\treturn ( ( width * height * 2 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBFormat:\n\t\t\treturn ( ( width * height * 3 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBAFormat:\n\t\t\treturn ( ( width * height * 4 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBAIntegerFormat:\n\t\t\treturn ( ( width * height * 4 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_s3tc_srgb/\n\t\tcase RGB_S3TC_DXT1_Format:\n\t\tcase RGBA_S3TC_DXT1_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8;\n\t\tcase RGBA_S3TC_DXT3_Format:\n\t\tcase RGBA_S3TC_DXT5_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_pvrtc/\n\t\tcase RGB_PVRTC_2BPPV1_Format:\n\t\tcase RGBA_PVRTC_2BPPV1_Format:\n\t\t\treturn ( Math.max( width, 16 ) * Math.max( height, 8 ) ) / 4;\n\t\tcase RGB_PVRTC_4BPPV1_Format:\n\t\tcase RGBA_PVRTC_4BPPV1_Format:\n\t\t\treturn ( Math.max( width, 8 ) * Math.max( height, 8 ) ) / 2;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc/\n\t\tcase RGB_ETC1_Format:\n\t\tcase RGB_ETC2_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8;\n\t\tcase RGBA_ETC2_EAC_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_astc/\n\t\tcase RGBA_ASTC_4x4_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\t\tcase RGBA_ASTC_5x4_Format:\n\t\t\treturn Math.floor( ( width + 4 ) / 5 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\t\tcase RGBA_ASTC_5x5_Format:\n\t\t\treturn Math.floor( ( width + 4 ) / 5 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_6x5_Format:\n\t\t\treturn Math.floor( ( width + 5 ) / 6 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_6x6_Format:\n\t\t\treturn Math.floor( ( width + 5 ) / 6 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_8x5_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_8x6_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_8x8_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 7 ) / 8 ) * 16;\n\t\tcase RGBA_ASTC_10x5_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_10x6_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_10x8_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 7 ) / 8 ) * 16;\n\t\tcase RGBA_ASTC_10x10_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 9 ) / 10 ) * 16;\n\t\tcase RGBA_ASTC_12x10_Format:\n\t\t\treturn Math.floor( ( width + 11 ) / 12 ) * Math.floor( ( height + 9 ) / 10 ) * 16;\n\t\tcase RGBA_ASTC_12x12_Format:\n\t\t\treturn Math.floor( ( width + 11 ) / 12 ) * Math.floor( ( height + 11 ) / 12 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/EXT_texture_compression_bptc/\n\t\tcase RGBA_BPTC_Format:\n\t\tcase RGB_BPTC_SIGNED_Format:\n\t\tcase RGB_BPTC_UNSIGNED_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/EXT_texture_compression_rgtc/\n\t\tcase RED_RGTC1_Format:\n\t\tcase SIGNED_RED_RGTC1_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 8;\n\t\tcase RED_GREEN_RGTC2_Format:\n\t\tcase SIGNED_RED_GREEN_RGTC2_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 16;\n\n\t}\n\n\tthrow new Error(\n\t\t`Unable to determine texture byte length for ${format} format.`,\n\t);\n\n}\n\nfunction getTextureTypeByteLength( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase UnsignedByteType:\n\t\tcase ByteType:\n\t\t\treturn { byteLength: 1, components: 1 };\n\t\tcase UnsignedShortType:\n\t\tcase ShortType:\n\t\tcase HalfFloatType:\n\t\t\treturn { byteLength: 2, components: 1 };\n\t\tcase UnsignedShort4444Type:\n\t\tcase UnsignedShort5551Type:\n\t\t\treturn { byteLength: 2, components: 4 };\n\t\tcase UnsignedIntType:\n\t\tcase IntType:\n\t\tcase FloatType:\n\t\t\treturn { byteLength: 4, components: 1 };\n\t\tcase UnsignedInt5999Type:\n\t\t\treturn { byteLength: 4, components: 3 };\n\n\t}\n\n\tthrow new Error( `Unknown texture type ${type}.` );\n\n}\n\nconst TextureUtils = {\n\tcontain,\n\tcover,\n\tfill,\n\tgetByteLength\n};\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _imageDimensions = new Vector2();\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, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\tconst dimensions = getDimensions( image );\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( dimensions.width > maxSize || dimensions.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( dimensions.width, dimensions.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 ) {\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\t\t\t\t( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) ) {\n\n\t\t\t\tconst width = Math.floor( scale * dimensions.width );\n\t\t\t\tconst height = Math.floor( scale * dimensions.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 (' + dimensions.width + 'x' + dimensions.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 (' + dimensions.width + 'x' + dimensions.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 textureNeedsGenerateMipmaps( texture ) {\n\n\t\treturn texture.generateMipmaps && texture.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, colorSpace, forceLinearTransfer = false ) {\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 === _gl.RED ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.R32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.R16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RED_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.R16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.R32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.R8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.R16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.R32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RG32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RG16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RG16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RG32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.RG8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.RG16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.RG32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGB ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_INT_5_9_9_9_REV ) internalFormat = _gl.RGB9_E5;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGBA ) {\n\n\t\t\tconst transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer( colorSpace );\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RGBA32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGBA16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = ( transfer === SRGBTransfer ) ? _gl.SRGB8_ALPHA8 : _gl.RGBA8;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_4_4_4_4 ) internalFormat = _gl.RGBA4;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_5_5_5_1 ) internalFormat = _gl.RGB5_A1;\n\n\t\t}\n\n\t\tif ( internalFormat === _gl.R16F || internalFormat === _gl.R32F ||\n\t\t\tinternalFormat === _gl.RG16F || internalFormat === _gl.RG32F ||\n\t\t\tinternalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F ) {\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 getInternalDepthFormat( useStencil, depthType ) {\n\n\t\tlet glInternalFormat;\n\t\tif ( useStencil ) {\n\n\t\t\tif ( depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\n\t\t\t} else if ( depthType === FloatType ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH32F_STENCIL8;\n\n\t\t\t} else if ( depthType === UnsignedShortType ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\t\t\t\tconsole.warn( 'DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.' );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t} else if ( depthType === FloatType ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t} else if ( depthType === UnsignedShortType ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn glInternalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture ) === 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//\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 renderTargetProperties = properties.get( renderTarget );\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\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer[ i ] ) ) {\n\n\t\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer[ i ].length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ][ level ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\n\t\t\t\t}\n\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\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer ) ) {\n\n\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ level ] );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) {\n\n\t\t\t\tfor ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tconst textures = renderTarget.textures;\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\tinfo.memory.textures --;\n\n\t\t\t}\n\n\t\t\tproperties.remove( textures[ i ] );\n\n\t\t}\n\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 >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.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.wrapR || 0 );\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.colorSpace );\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.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\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.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\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.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\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.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: _gl.REPEAT,\n\t\t[ ClampToEdgeWrapping ]: _gl.CLAMP_TO_EDGE,\n\t\t[ MirroredRepeatWrapping ]: _gl.MIRRORED_REPEAT\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: _gl.NEAREST,\n\t\t[ NearestMipmapNearestFilter ]: _gl.NEAREST_MIPMAP_NEAREST,\n\t\t[ NearestMipmapLinearFilter ]: _gl.NEAREST_MIPMAP_LINEAR,\n\n\t\t[ LinearFilter ]: _gl.LINEAR,\n\t\t[ LinearMipmapNearestFilter ]: _gl.LINEAR_MIPMAP_NEAREST,\n\t\t[ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR\n\t};\n\n\tconst compareToGL = {\n\t\t[ NeverCompare ]: _gl.NEVER,\n\t\t[ AlwaysCompare ]: _gl.ALWAYS,\n\t\t[ LessCompare ]: _gl.LESS,\n\t\t[ LessEqualCompare ]: _gl.LEQUAL,\n\t\t[ EqualCompare ]: _gl.EQUAL,\n\t\t[ GreaterEqualCompare ]: _gl.GEQUAL,\n\t\t[ GreaterCompare ]: _gl.GREATER,\n\t\t[ NotEqualCompare ]: _gl.NOTEQUAL\n\t};\n\n\tfunction setTextureParameters( textureType, texture ) {\n\n\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false &&\n\t\t\t( texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter ||\n\t\t\ttexture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter ) ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );\n\n\t\t}\n\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] );\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ] );\n\n\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ] );\n\n\t\t}\n\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ] );\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ] );\n\n\t\tif ( texture.compareFunction ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] );\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tif ( texture.magFilter === NearestFilter ) return;\n\t\t\tif ( texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter ) return;\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\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 = _gl.TEXTURE_2D;\n\n\t\tif ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;\n\t\tif ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tlet image = resizeImage( texture.image, false, capabilities.maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\n\t\t\tconst glType = utils.convert( texture.type );\n\t\t\tlet glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst dataReady = source.dataReady;\n\t\t\tconst levels = getMipLevels( texture, image );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\tglInternalFormat = getInternalDepthFormat( texture.format === DepthStencilFormat, texture.type );\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( _gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 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 ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, 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\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, 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\tstate.texImage2D( _gl.TEXTURE_2D, 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( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 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 ( texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height, image.depth );\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 ( 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\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tif ( texture.layerUpdates.size > 0 ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst layerByteLength = getByteLength( mipmap.width, mipmap.height, texture.format, texture.type );\n\n\t\t\t\t\t\t\t\t\t\t\tfor ( const layerIndex of texture.layerUpdates ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\tconst layerData = mipmap.data.subarray(\n\t\t\t\t\t\t\t\t\t\t\t\t\tlayerIndex * layerByteLength / mipmap.data.BYTES_PER_ELEMENT,\n\t\t\t\t\t\t\t\t\t\t\t\t\t( layerIndex + 1 ) * layerByteLength / mipmap.data.BYTES_PER_ELEMENT\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, layerIndex, mipmap.width, mipmap.height, 1, glFormat, layerData, 0, 0 );\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\ttexture.clearLayerUpdates();\n\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0 );\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 .uploadTexture()' );\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\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, 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\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 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} else {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, 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 ( 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\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, 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 .uploadTexture()' );\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\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, 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\tstate.texImage2D( _gl.TEXTURE_2D, i, 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 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( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\tif ( texture.layerUpdates.size > 0 ) {\n\n\t\t\t\t\t\t\tconst layerByteLength = getByteLength( image.width, image.height, texture.format, texture.type );\n\n\t\t\t\t\t\t\tfor ( const layerIndex of texture.layerUpdates ) {\n\n\t\t\t\t\t\t\t\tconst layerData = image.data.subarray(\n\t\t\t\t\t\t\t\t\tlayerIndex * layerByteLength / image.data.BYTES_PER_ELEMENT,\n\t\t\t\t\t\t\t\t\t( layerIndex + 1 ) * layerByteLength / image.data.BYTES_PER_ELEMENT\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, layerIndex, image.width, image.height, 1, glFormat, glType, layerData );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttexture.clearLayerUpdates();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\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\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, 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( _gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_3D, 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( _gl.TEXTURE_2D, 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( _gl.TEXTURE_2D, 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 ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tconst dimensions = getDimensions( mipmaps[ 0 ] );\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.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\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 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\tconst dimensions = getDimensions( image );\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 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 ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = 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.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\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 ], true, capabilities.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\tglFormat = utils.convert( texture.format, texture.colorSpace ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\n\t\t\tconst useTexStorage = ( texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst dataReady = source.dataReady;\n\t\t\tlet levels = getMipLevels( texture, image );\n\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture );\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( _gl.TEXTURE_CUBE_MAP, 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\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + 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\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, 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\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + 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\tconst dimensions = getDimensions( cubeImage[ 0 ] );\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, dimensions.width, dimensions.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\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].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\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + 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\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.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\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + 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\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + 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\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\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\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + 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 ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = 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, level ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tconst width = Math.max( 1, renderTarget.width >> level );\n\t\t\tconst height = Math.max( 1, renderTarget.height >> level );\n\n\t\t\tif ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, level );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t// retrieve the depth attachment types\n\t\t\tconst depthTexture = renderTarget.depthTexture;\n\t\t\tconst depthType = depthTexture && depthTexture.isDepthTexture ? depthTexture.type : null;\n\t\t\tconst glInternalFormat = getInternalDepthFormat( renderTarget.stencilBuffer, depthType );\n\t\t\tconst glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\n\t\t\t// set up the attachment\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\tconst isUseMultisampledRTT = useMultisampledRTT( renderTarget );\n\t\t\tif ( isUseMultisampledRTT ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( isMultisample ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst textures = renderTarget.textures;\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tconst texture = textures[ i ];\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, 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( _gl.FRAMEBUFFER, 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( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, 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( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, 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( _gl.FRAMEBUFFER, 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( _gl.FRAMEBUFFER, 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( _gl.FRAMEBUFFER, 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, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0 );\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\tconst textures = renderTarget.textures;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( textures.length > 1 );\n\n\t\tif ( ! isMultipleRenderTargets ) {\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\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\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = [];\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ][ level ] = _gl.createFramebuffer();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ level ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = [];\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tconst texture = textures[ i ];\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, renderTarget.isXRRenderTarget === true );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, 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( _gl.FRAMEBUFFER, 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( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ][ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, level );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\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( _gl.TEXTURE_2D, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_2D, attachment );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, 0 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment ) ) {\n\n\t\t\t\t\tgenerateMipmap( _gl.TEXTURE_2D );\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 = _gl.TEXTURE_2D;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture );\n\n\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0 );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\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 textures = renderTarget.textures;\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 ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\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\tconst invalidationArrayRead = [];\n\tconst invalidationArrayDraw = [];\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.samples > 0 ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tconst textures = renderTarget.textures;\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = _gl.COLOR_BUFFER_BIT;\n\t\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\t\tconst isMultipleRenderTargets = ( textures.length > 1 );\n\n\t\t\t\t// If MRT we need to remove FBO attachments\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null );\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTarget.resolveDepthBuffer ) {\n\n\t\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT;\n\n\t\t\t\t\t\t// resolving stencil is slow with a D3D backend. disable it for all transmission render targets (see #27799)\n\n\t\t\t\t\t\tif ( renderTarget.stencilBuffer && renderTarget.resolveStencilBuffer ) mask |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST );\n\n\t\t\t\t\tif ( supportsInvalidateFramebuffer === true ) {\n\n\t\t\t\t\t\tinvalidationArrayRead.length = 0;\n\t\t\t\t\t\tinvalidationArrayDraw.length = 0;\n\n\t\t\t\t\t\tinvalidationArrayRead.push( _gl.COLOR_ATTACHMENT0 + i );\n\n\t\t\t\t\t\tif ( renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false ) {\n\n\t\t\t\t\t\t\tinvalidationArrayRead.push( depthStyle );\n\t\t\t\t\t\t\tinvalidationArrayDraw.push( depthStyle );\n\n\t\t\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, invalidationArrayDraw );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, invalidationArrayRead );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );\n\n\t\t\t\t// If MRT since pre-blit we removed the FBO we need to reconstruct the attachments\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t} else {\n\n\t\t\t\tif ( renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false && supportsInvalidateFramebuffer ) {\n\n\t\t\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( capabilities.maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn 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 colorSpace = texture.colorSpace;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true ) return image;\n\n\t\tif ( colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( ColorManagement.getTransfer( colorSpace ) === SRGBTransfer ) {\n\n\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\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture color space:', colorSpace );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction getDimensions( image ) {\n\n\t\tif ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) {\n\n\t\t\t// if intrinsic data are not available, fallback to width/height\n\n\t\t\t_imageDimensions.width = image.naturalWidth || image.width;\n\t\t\t_imageDimensions.height = image.naturalHeight || image.height;\n\n\t\t} else if ( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) {\n\n\t\t\t_imageDimensions.width = image.displayWidth;\n\t\t\t_imageDimensions.height = image.displayHeight;\n\n\t\t} else {\n\n\t\t\t_imageDimensions.width = image.width;\n\t\t\t_imageDimensions.height = image.height;\n\n\t\t}\n\n\t\treturn _imageDimensions;\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 ) {\n\n\tfunction convert( p, colorSpace = NoColorSpace ) {\n\n\t\tlet extension;\n\n\t\tconst transfer = ColorManagement.getTransfer( colorSpace );\n\n\t\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\n\t\tif ( p === UnsignedInt5999Type ) return gl.UNSIGNED_INT_5_9_9_9_REV;\n\n\t\tif ( p === ByteType ) return gl.BYTE;\n\t\tif ( p === ShortType ) return gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return gl.INT;\n\t\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return gl.FLOAT;\n\t\tif ( p === HalfFloatType ) return gl.HALF_FLOAT;\n\n\t\tif ( p === AlphaFormat ) return gl.ALPHA;\n\t\tif ( p === RGBFormat ) return gl.RGB;\n\t\tif ( p === RGBAFormat ) return gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedFormat ) return gl.RED;\n\t\tif ( p === RedIntegerFormat ) return gl.RED_INTEGER;\n\t\tif ( p === RGFormat ) return gl.RG;\n\t\tif ( p === RGIntegerFormat ) return gl.RG_INTEGER;\n\t\tif ( p === RGBAIntegerFormat ) return gl.RGBA_INTEGER;\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 ( transfer === SRGBTransfer ) {\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// ETC\n\n\t\tif ( p === RGB_ETC1_Format || 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_ETC1_Format || p === RGB_ETC2_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( transfer === SRGBTransfer ) ? 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 ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( transfer === SRGBTransfer ) ? 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 || p === RGB_BPTC_SIGNED_Format || p === RGB_BPTC_UNSIGNED_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 ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\t\t\t\tif ( p === RGB_BPTC_SIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n\t\t\t\tif ( p === RGB_BPTC_UNSIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_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// RGTC\n\n\t\tif ( p === RED_RGTC1_Format || p === SIGNED_RED_RGTC1_Format || p === RED_GREEN_RGTC2_Format || p === SIGNED_RED_GREEN_RGTC2_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_rgtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return extension.COMPRESSED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === SIGNED_RED_RGTC1_Format ) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;\n\t\t\t\tif ( p === SIGNED_RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_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 ) return gl.UNSIGNED_INT_24_8;\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.isArrayCamera = true;\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\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\tconnect( inputSource ) {\n\n\t\tif ( inputSource && inputSource.hand ) {\n\n\t\t\tconst hand = this._hand;\n\n\t\t\tif ( hand ) {\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Initialize hand with joints when connected\n\t\t\t\t\tthis._getHandJoint( hand, inputjoint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.dispatchEvent( { type: 'connected', data: inputSource } );\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 ( 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\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tconst joint = this._getHandJoint( hand, inputjoint );\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.matrixWorldNeedsUpdate = true;\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\t\t\t\t\t\tgrip.matrixWorldNeedsUpdate = true;\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\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\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\t\t\t\t\ttargetRay.matrixWorldNeedsUpdate = true;\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\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\t// private method\n\n\t_getHandJoint( hand, inputjoint ) {\n\n\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\tconst joint = new Group();\n\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\tjoint.visible = false;\n\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\n\t\t\thand.add( joint );\n\n\t\t}\n\n\t\treturn hand.joints[ inputjoint.jointName ];\n\n\t}\n\n}\n\nconst _occlusion_vertex = `\nvoid main() {\n\n\tgl_Position = vec4( position, 1.0 );\n\n}`;\n\nconst _occlusion_fragment = `\nuniform sampler2DArray depthColor;\nuniform float depthWidth;\nuniform float depthHeight;\n\nvoid main() {\n\n\tvec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight );\n\n\tif ( coord.x >= 1.0 ) {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r;\n\n\t} else {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r;\n\n\t}\n\n}`;\n\nclass WebXRDepthSensing {\n\n\tconstructor() {\n\n\t\tthis.texture = null;\n\t\tthis.mesh = null;\n\n\t\tthis.depthNear = 0;\n\t\tthis.depthFar = 0;\n\n\t}\n\n\tinit( renderer, depthData, renderState ) {\n\n\t\tif ( this.texture === null ) {\n\n\t\t\tconst texture = new Texture();\n\n\t\t\tconst texProps = renderer.properties.get( texture );\n\t\t\ttexProps.__webglTexture = depthData.texture;\n\n\t\t\tif ( ( depthData.depthNear != renderState.depthNear ) || ( depthData.depthFar != renderState.depthFar ) ) {\n\n\t\t\t\tthis.depthNear = depthData.depthNear;\n\t\t\t\tthis.depthFar = depthData.depthFar;\n\n\t\t\t}\n\n\t\t\tthis.texture = texture;\n\n\t\t}\n\n\t}\n\n\tgetMesh( cameraXR ) {\n\n\t\tif ( this.texture !== null ) {\n\n\t\t\tif ( this.mesh === null ) {\n\n\t\t\t\tconst viewport = cameraXR.cameras[ 0 ].viewport;\n\t\t\t\tconst material = new ShaderMaterial( {\n\t\t\t\t\tvertexShader: _occlusion_vertex,\n\t\t\t\t\tfragmentShader: _occlusion_fragment,\n\t\t\t\t\tuniforms: {\n\t\t\t\t\t\tdepthColor: { value: this.texture },\n\t\t\t\t\t\tdepthWidth: { value: viewport.z },\n\t\t\t\t\t\tdepthHeight: { value: viewport.w }\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tthis.mesh = new Mesh( new PlaneGeometry( 20, 20 ), material );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.mesh;\n\n\t}\n\n\treset() {\n\n\t\tthis.texture = null;\n\t\tthis.mesh = null;\n\n\t}\n\n\tgetDepthTexture() {\n\n\t\treturn this.texture;\n\n\t}\n\n}\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\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\t// Set default foveation to maximum.\n\t\tlet foveation = 1.0;\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\n\t\tconst depthSensing = new WebXRDepthSensing();\n\t\tconst attributes = gl.getContextAttributes();\n\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst controllerInputSources = [];\n\n\t\tconst currentSize = new Vector2();\n\t\tlet currentPixelRatio = null;\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 cameraXR = new ArrayCamera();\n\t\tcameraXR.layers.enable( 1 );\n\t\tcameraXR.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 controllerIndex = controllerInputSources.indexOf( event.inputSource );\n\n\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\tcontroller.update( event.inputSource, event.frame, customReferenceSpace || referenceSpace );\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\tsession.removeEventListener( 'select', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'end', onSessionEnd );\n\t\t\tsession.removeEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\n\t\t\t\tif ( inputSource === null ) continue;\n\n\t\t\t\tcontrollerInputSources[ i ] = null;\n\n\t\t\t\tcontrollers[ i ].disconnect( inputSource );\n\n\t\t\t}\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\tdepthSensing.reset();\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\trenderer.setPixelRatio( currentPixelRatio );\n\t\t\trenderer.setSize( currentSize.width, currentSize.height, 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\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\t\trenderer.getSize( currentSize );\n\n\t\t\t\tif ( session.renderState.layers === undefined ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: attributes.antialias,\n\t\t\t\t\t\talpha: true,\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\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false );\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\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil\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 ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: gl.RGBA8,\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\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glProjLayer.textureWidth, glProjLayer.textureHeight, false );\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\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0,\n\t\t\t\t\t\t\tresolveDepthBuffer: ( glProjLayer.ignoreDepthValues === false )\n\t\t\t\t\t\t} );\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\tthis.setFoveation( foveation );\n\n\t\t\t\tcustomReferenceSpace = null;\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\tthis.getEnvironmentBlendMode = function () {\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\treturn session.environmentBlendMode;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getDepthTexture = function () {\n\n\t\t\treturn depthSensing.getDepthTexture();\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\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 index = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( index >= 0 ) {\n\n\t\t\t\t\tcontrollerInputSources[ index ] = null;\n\t\t\t\t\tcontrollers[ index ].disconnect( 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\n\t\t\t\tlet controllerIndex = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\t\t// Assign input source a controller that currently has no input source\n\n\t\t\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\t\tif ( i >= controllerInputSources.length ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources.push( inputSource );\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t} else if ( controllerInputSources[ i ] === null ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources[ i ] = inputSource;\n\t\t\t\t\t\t\tcontrollerIndex = 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\t// If all controllers do currently receive input we ignore new ones\n\n\t\t\t\t\tif ( controllerIndex === - 1 ) break;\n\n\t\t\t\t}\n\n\t\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.connect( 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\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\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\tif ( depthSensing.texture !== null ) {\n\n\t\t\t\tcamera.near = depthSensing.depthNear;\n\t\t\t\tcamera.far = depthSensing.depthFar;\n\n\t\t\t}\n\n\t\t\tcameraXR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraXR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.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: cameraXR.near,\n\t\t\t\t\tdepthFar: cameraXR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraXR.near;\n\t\t\t\t_currentDepthFar = cameraXR.far;\n\n\t\t\t\tcameraL.near = _currentDepthNear;\n\t\t\t\tcameraL.far = _currentDepthFar;\n\t\t\t\tcameraR.near = _currentDepthNear;\n\t\t\t\tcameraR.far = _currentDepthFar;\n\n\t\t\t\tcameraL.updateProjectionMatrix();\n\t\t\t\tcameraR.updateProjectionMatrix();\n\t\t\t\tcamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraXR.cameras;\n\n\t\t\tupdateCamera( cameraXR, 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\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraXR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraXR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t\t// update user camera and its children\n\n\t\t\tupdateUserCamera( camera, cameraXR, parent );\n\n\t\t};\n\n\t\tfunction updateUserCamera( camera, cameraXR, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrix.copy( cameraXR.matrixWorld );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrix.copy( parent.matrixWorld );\n\t\t\t\tcamera.matrix.invert();\n\t\t\t\tcamera.matrix.multiply( cameraXR.matrixWorld );\n\n\t\t\t}\n\n\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.updateMatrixWorld( true );\n\n\t\t\tcamera.projectionMatrix.copy( cameraXR.projectionMatrix );\n\t\t\tcamera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse );\n\n\t\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\t\tcamera.fov = RAD2DEG * 2 * Math.atan( 1 / camera.projectionMatrix.elements[ 5 ] );\n\t\t\t\tcamera.zoom = 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraXR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer === null && glBaseLayer === null ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn foveation;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( value ) {\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\tfoveation = value;\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.hasDepthSensing = function () {\n\n\t\t\treturn depthSensing.texture !== null;\n\n\t\t};\n\n\t\tthis.getDepthSensingMesh = function () {\n\n\t\t\treturn depthSensing.getMesh( cameraXR );\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 cameraXRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraXR's camera list\n\n\t\t\t\tif ( views.length !== cameraXR.cameras.length ) {\n\n\t\t\t\t\tcameraXR.cameras.length = 0;\n\t\t\t\t\tcameraXRNeedsUpdate = 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\tlet camera = cameras[ i ];\n\n\t\t\t\t\tif ( camera === undefined ) {\n\n\t\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\t\tcamera.layers.enable( i );\n\t\t\t\t\t\tcamera.viewport = new Vector4();\n\t\t\t\t\t\tcameras[ i ] = camera;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\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\tcameraXR.matrix.copy( camera.matrix );\n\t\t\t\t\t\tcameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraXRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraXR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tconst enabledFeatures = session.enabledFeatures;\n\n\t\t\t\tif ( enabledFeatures && enabledFeatures.includes( 'depth-sensing' ) ) {\n\n\t\t\t\t\tconst depthData = glBinding.getDepthInformation( views[ 0 ] );\n\n\t\t\t\t\tif ( depthData && depthData.isValid && depthData.texture ) {\n\n\t\t\t\t\t\tdepthSensing.init( renderer, depthData, session.renderState );\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\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\t\t\t\tconst controller = controllers[ i ];\n\n\t\t\t\tif ( inputSource !== null && 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\tif ( frame.detectedPlanes ) {\n\n\t\t\t\tscope.dispatchEvent( { type: 'planesdetected', data: frame } );\n\n\t\t\t}\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\nconst _e1 = /*@__PURE__*/ new Euler();\nconst _m1 = /*@__PURE__*/ new Matrix4();\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshTransformUniform( map, uniform ) {\n\n\t\tif ( map.matrixAutoUpdate === true ) {\n\n\t\t\tmap.updateMatrix();\n\n\t\t}\n\n\t\tuniform.value.copy( map.matrix );\n\n\t}\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tfog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) );\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\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\n\t\t\trefreshTransformUniform( material.bumpMap, uniforms.bumpMapTransform );\n\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.bumpScale.value *= - 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\n\t\t\trefreshTransformUniform( material.normalMap, uniforms.normalMapTransform );\n\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.normalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\n\t\t\trefreshTransformUniform( material.displacementMap, uniforms.displacementMapTransform );\n\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\trefreshTransformUniform( material.emissiveMap, uniforms.emissiveMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t\trefreshTransformUniform( material.specularMap, uniforms.specularMapTransform );\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 materialProperties = properties.get( material );\n\n\t\tconst envMap = materialProperties.envMap;\n\t\tconst envMapRotation = materialProperties.envMapRotation;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\t_e1.copy( envMapRotation );\n\n\t\t\t// accommodate left-handed frame\n\t\t\t_e1.x *= - 1; _e1.y *= - 1; _e1.z *= - 1;\n\n\t\t\tif ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) {\n\n\t\t\t\t// environment maps which are not cube render targets or PMREMs follow a different convention\n\t\t\t\t_e1.y *= - 1;\n\t\t\t\t_e1.z *= - 1;\n\n\t\t\t}\n\n\t\t\tuniforms.envMapRotation.value.setFromMatrix4( _m1.makeRotationFromEuler( _e1 ) );\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\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t\trefreshTransformUniform( material.lightMap, uniforms.lightMapTransform );\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\trefreshTransformUniform( material.aoMap, uniforms.aoMapTransform );\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\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\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\trefreshTransformUniform( material.map, uniforms.uvTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\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}\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\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\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}\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.metalness.value = material.metalness;\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t\trefreshTransformUniform( material.metalnessMap, uniforms.metalnessMapTransform );\n\n\t\t}\n\n\t\tuniforms.roughness.value = material.roughness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t\trefreshTransformUniform( material.roughnessMap, uniforms.roughnessMapTransform );\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\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\trefreshTransformUniform( material.sheenColorMap, uniforms.sheenColorMapTransform );\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\trefreshTransformUniform( material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform );\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\trefreshTransformUniform( material.clearcoatMap, uniforms.clearcoatMapTransform );\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\trefreshTransformUniform( material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform );\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\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.dispersion > 0 ) {\n\n\t\t\tuniforms.dispersion.value = material.dispersion;\n\n\t\t}\n\n\t\tif ( material.iridescence > 0 ) {\n\n\t\t\tuniforms.iridescence.value = material.iridescence;\n\t\t\tuniforms.iridescenceIOR.value = material.iridescenceIOR;\n\t\t\tuniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ];\n\t\t\tuniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ];\n\n\t\t\tif ( material.iridescenceMap ) {\n\n\t\t\t\tuniforms.iridescenceMap.value = material.iridescenceMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceMap, uniforms.iridescenceMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\t\tuniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform );\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\trefreshTransformUniform( material.transmissionMap, uniforms.transmissionMapTransform );\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\trefreshTransformUniform( material.thicknessMap, uniforms.thicknessMapTransform );\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\tif ( material.anisotropy > 0 ) {\n\n\t\t\tuniforms.anisotropyVector.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) );\n\n\t\t\tif ( material.anisotropyMap ) {\n\n\t\t\t\tuniforms.anisotropyMap.value = material.anisotropyMap;\n\n\t\t\t\trefreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform );\n\n\t\t\t}\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.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t\trefreshTransformUniform( material.specularColorMap, uniforms.specularColorMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t\trefreshTransformUniform( material.specularIntensityMap, uniforms.specularIntensityMapTransform );\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\tconst light = properties.get( material ).light;\n\n\t\tuniforms.referencePosition.value.setFromMatrixPosition( light.matrixWorld );\n\t\tuniforms.nearDistance.value = light.shadow.camera.near;\n\t\tuniforms.farDistance.value = light.shadow.camera.far;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLUniformsGroups( gl, info, capabilities, state ) {\n\n\tlet buffers = {};\n\tlet updateList = {};\n\tlet allocatedBindingPoints = [];\n\n\tconst maxBindingPoints = gl.getParameter( gl.MAX_UNIFORM_BUFFER_BINDINGS ); // binding points are global whereas block indices are per shader program\n\n\tfunction bind( uniformsGroup, program ) {\n\n\t\tconst webglProgram = program.program;\n\t\tstate.uniformBlockBinding( uniformsGroup, webglProgram );\n\n\t}\n\n\tfunction update( uniformsGroup, program ) {\n\n\t\tlet buffer = buffers[ uniformsGroup.id ];\n\n\t\tif ( buffer === undefined ) {\n\n\t\t\tprepareUniformsGroup( uniformsGroup );\n\n\t\t\tbuffer = createBuffer( uniformsGroup );\n\t\t\tbuffers[ uniformsGroup.id ] = buffer;\n\n\t\t\tuniformsGroup.addEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\t}\n\n\t\t// ensure to update the binding points/block indices mapping for this program\n\n\t\tconst webglProgram = program.program;\n\t\tstate.updateUBOMapping( uniformsGroup, webglProgram );\n\n\t\t// update UBO once per frame\n\n\t\tconst frame = info.render.frame;\n\n\t\tif ( updateList[ uniformsGroup.id ] !== frame ) {\n\n\t\t\tupdateBufferData( uniformsGroup );\n\n\t\t\tupdateList[ uniformsGroup.id ] = frame;\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( uniformsGroup ) {\n\n\t\t// the setup of an UBO is independent of a particular shader program but global\n\n\t\tconst bindingPointIndex = allocateBindingPointIndex();\n\t\tuniformsGroup.__bindingPointIndex = bindingPointIndex;\n\n\t\tconst buffer = gl.createBuffer();\n\t\tconst size = uniformsGroup.__size;\n\t\tconst usage = uniformsGroup.usage;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\t\tgl.bufferData( gl.UNIFORM_BUFFER, size, usage );\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\t\tgl.bindBufferBase( gl.UNIFORM_BUFFER, bindingPointIndex, buffer );\n\n\t\treturn buffer;\n\n\t}\n\n\tfunction allocateBindingPointIndex() {\n\n\t\tfor ( let i = 0; i < maxBindingPoints; i ++ ) {\n\n\t\t\tif ( allocatedBindingPoints.indexOf( i ) === - 1 ) {\n\n\t\t\t\tallocatedBindingPoints.push( i );\n\t\t\t\treturn i;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );\n\n\t\treturn 0;\n\n\t}\n\n\tfunction updateBufferData( uniformsGroup ) {\n\n\t\tconst buffer = buffers[ uniformsGroup.id ];\n\t\tconst uniforms = uniformsGroup.uniforms;\n\t\tconst cache = uniformsGroup.__cache;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\n\t\tfor ( let i = 0, il = uniforms.length; i < il; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tif ( hasUniformChanged( uniform, i, j, cache ) === true ) {\n\n\t\t\t\t\tconst offset = uniform.__offset;\n\n\t\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\t\tlet arrayOffset = 0;\n\n\t\t\t\t\tfor ( let k = 0; k < values.length; k ++ ) {\n\n\t\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t\t// TODO add integer and struct support\n\t\t\t\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value;\n\t\t\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data );\n\n\t\t\t\t\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t\t\t\t\t// manually converting 3x3 to 3x4\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value.elements[ 0 ];\n\t\t\t\t\t\t\tuniform.__data[ 1 ] = value.elements[ 1 ];\n\t\t\t\t\t\t\tuniform.__data[ 2 ] = value.elements[ 2 ];\n\t\t\t\t\t\t\tuniform.__data[ 3 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 4 ] = value.elements[ 3 ];\n\t\t\t\t\t\t\tuniform.__data[ 5 ] = value.elements[ 4 ];\n\t\t\t\t\t\t\tuniform.__data[ 6 ] = value.elements[ 5 ];\n\t\t\t\t\t\t\tuniform.__data[ 7 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 8 ] = value.elements[ 6 ];\n\t\t\t\t\t\t\tuniform.__data[ 9 ] = value.elements[ 7 ];\n\t\t\t\t\t\t\tuniform.__data[ 10 ] = value.elements[ 8 ];\n\t\t\t\t\t\t\tuniform.__data[ 11 ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvalue.toArray( uniform.__data, arrayOffset );\n\n\t\t\t\t\t\t\tarrayOffset += info.storage / Float32Array.BYTES_PER_ELEMENT;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset, uniform.__data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\n\t}\n\n\tfunction hasUniformChanged( uniform, index, indexArray, cache ) {\n\n\t\tconst value = uniform.value;\n\t\tconst indexString = index + '_' + indexArray;\n\n\t\tif ( cache[ indexString ] === undefined ) {\n\n\t\t\t// cache entry does not exist so far\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tcache[ indexString ] = value;\n\n\t\t\t} else {\n\n\t\t\t\tcache[ indexString ] = value.clone();\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t} else {\n\n\t\t\tconst cachedObject = cache[ indexString ];\n\n\t\t\t// compare current value with cached entry\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tif ( cachedObject !== value ) {\n\n\t\t\t\t\tcache[ indexString ] = value;\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( cachedObject.equals( value ) === false ) {\n\n\t\t\t\t\tcachedObject.copy( value );\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction prepareUniformsGroup( uniformsGroup ) {\n\n\t\t// determine total buffer size according to the STD140 layout\n\t\t// Hint: STD140 is the only supported layout in WebGL 2\n\n\t\tconst uniforms = uniformsGroup.uniforms;\n\n\t\tlet offset = 0; // global buffer offset in bytes\n\t\tconst chunkSize = 16; // size of a chunk in bytes\n\n\t\tfor ( let i = 0, l = uniforms.length; i < l; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\tfor ( let k = 0, kl = values.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\tconst chunkOffset = offset % chunkSize; // offset in the current chunk\n\t\t\t\t\tconst chunkPadding = chunkOffset % info.boundary; // required padding to match boundary\n\t\t\t\t\tconst chunkStart = chunkOffset + chunkPadding; // the start position in the current chunk for the data\n\n\t\t\t\t\toffset += chunkPadding;\n\n\t\t\t\t\t// Check for chunk overflow\n\t\t\t\t\tif ( chunkStart !== 0 && ( chunkSize - chunkStart ) < info.storage ) {\n\n\t\t\t\t\t\t// Add padding and adjust offset\n\t\t\t\t\t\toffset += ( chunkSize - chunkStart );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following two properties will be used for partial buffer updates\n\t\t\t\t\tuniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT );\n\t\t\t\t\tuniform.__offset = offset;\n\n\t\t\t\t\t// Update the global offset\n\t\t\t\t\toffset += info.storage;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ensure correct final padding\n\n\t\tconst chunkOffset = offset % chunkSize;\n\n\t\tif ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset );\n\n\t\t//\n\n\t\tuniformsGroup.__size = offset;\n\t\tuniformsGroup.__cache = {};\n\n\t\treturn this;\n\n\t}\n\n\tfunction getUniformSize( value ) {\n\n\t\tconst info = {\n\t\t\tboundary: 0, // bytes\n\t\t\tstorage: 0 // bytes\n\t\t};\n\n\t\t// determine sizes according to STD140\n\n\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t// float/int/bool\n\n\t\t\tinfo.boundary = 4;\n\t\t\tinfo.storage = 4;\n\n\t\t} else if ( value.isVector2 ) {\n\n\t\t\t// vec2\n\n\t\t\tinfo.boundary = 8;\n\t\t\tinfo.storage = 8;\n\n\t\t} else if ( value.isVector3 || value.isColor ) {\n\n\t\t\t// vec3\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 12; // evil: vec3 must start on a 16-byte boundary but it only consumes 12 bytes\n\n\t\t} else if ( value.isVector4 ) {\n\n\t\t\t// vec4\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 16;\n\n\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t// mat3 (in STD140 a 3x3 matrix is represented as 3x4)\n\n\t\t\tinfo.boundary = 48;\n\t\t\tinfo.storage = 48;\n\n\t\t} else if ( value.isMatrix4 ) {\n\n\t\t\t// mat4\n\n\t\t\tinfo.boundary = 64;\n\t\t\tinfo.storage = 64;\n\n\t\t} else if ( value.isTexture ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value );\n\n\t\t}\n\n\t\treturn info;\n\n\t}\n\n\tfunction onUniformsGroupsDispose( event ) {\n\n\t\tconst uniformsGroup = event.target;\n\n\t\tuniformsGroup.removeEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\tconst index = allocatedBindingPoints.indexOf( uniformsGroup.__bindingPointIndex );\n\t\tallocatedBindingPoints.splice( index, 1 );\n\n\t\tgl.deleteBuffer( buffers[ uniformsGroup.id ] );\n\n\t\tdelete buffers[ uniformsGroup.id ];\n\t\tdelete updateList[ uniformsGroup.id ];\n\n\t}\n\n\tfunction dispose() {\n\n\t\tfor ( const id in buffers ) {\n\n\t\t\tgl.deleteBuffer( buffers[ id ] );\n\n\t\t}\n\n\t\tallocatedBindingPoints = [];\n\t\tbuffers = {};\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tbind: bind,\n\t\tupdate: update,\n\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass WebGLRenderer {\n\n\tconstructor( parameters = {} ) {\n\n\t\tconst {\n\t\t\tcanvas = createCanvasElement(),\n\t\t\tcontext = null,\n\t\t\tdepth = true,\n\t\t\tstencil = false,\n\t\t\talpha = false,\n\t\t\tantialias = false,\n\t\t\tpremultipliedAlpha = true,\n\t\t\tpreserveDrawingBuffer = false,\n\t\t\tpowerPreference = 'default',\n\t\t\tfailIfMajorPerformanceCaveat = false,\n\t\t} = parameters;\n\n\t\tthis.isWebGLRenderer = true;\n\n\t\tlet _alpha;\n\n\t\tif ( context !== null ) {\n\n\t\t\tif ( typeof WebGLRenderingContext !== 'undefined' && context instanceof WebGLRenderingContext ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLRenderer: WebGL 1 is not supported since r163.' );\n\n\t\t\t}\n\n\t\t\t_alpha = context.getContextAttributes().alpha;\n\n\t\t} else {\n\n\t\t\t_alpha = alpha;\n\n\t\t}\n\n\t\tconst uintClearColor = new Uint32Array( 4 );\n\t\tconst intClearColor = new Int32Array( 4 );\n\n\t\tlet currentRenderList = null;\n\t\tlet currentRenderState = null;\n\n\t\t// render() can be called from within a callback triggered by another render.\n\t\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\t\tconst renderListStack = [];\n\t\tconst renderStateStack = [];\n\n\t\t// public properties\n\n\t\tthis.domElement = canvas;\n\n\t\t// Debug configuration container\n\t\tthis.debug = {\n\n\t\t\t/**\n\t\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tcheckShaderErrors: true,\n\t\t\t/**\n\t\t\t * Callback for custom error reporting.\n\t\t\t * @type {?Function}\n\t\t\t */\n\t\t\tonShaderError: null\n\t\t};\n\n\t\t// clearing\n\n\t\tthis.autoClear = true;\n\t\tthis.autoClearColor = true;\n\t\tthis.autoClearDepth = true;\n\t\tthis.autoClearStencil = true;\n\n\t\t// scene graph\n\n\t\tthis.sortObjects = true;\n\n\t\t// user-defined clipping\n\n\t\tthis.clippingPlanes = [];\n\t\tthis.localClippingEnabled = false;\n\n\t\t// physically based shading\n\n\t\tthis._outputColorSpace = SRGBColorSpace;\n\n\t\t// tone mapping\n\n\t\tthis.toneMapping = NoToneMapping;\n\t\tthis.toneMappingExposure = 1.0;\n\n\t\t// internal properties\n\n\t\tconst _this = this;\n\n\t\tlet _isContextLost = false;\n\n\t\t// internal state cache\n\n\t\tlet _currentActiveCubeFace = 0;\n\t\tlet _currentActiveMipmapLevel = 0;\n\t\tlet _currentRenderTarget = null;\n\t\tlet _currentMaterialId = - 1;\n\n\t\tlet _currentCamera = null;\n\n\t\tconst _currentViewport = new Vector4();\n\t\tconst _currentScissor = new Vector4();\n\t\tlet _currentScissorTest = null;\n\n\t\tconst _currentClearColor = new Color( 0x000000 );\n\t\tlet _currentClearAlpha = 0;\n\n\t\t//\n\n\t\tlet _width = canvas.width;\n\t\tlet _height = canvas.height;\n\n\t\tlet _pixelRatio = 1;\n\t\tlet _opaqueSort = null;\n\t\tlet _transparentSort = null;\n\n\t\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\t\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\t\tlet _scissorTest = false;\n\n\t\t// frustum\n\n\t\tconst _frustum = new Frustum();\n\n\t\t// clipping\n\n\t\tlet _clippingEnabled = false;\n\t\tlet _localClippingEnabled = false;\n\n\t\t// camera matrices cache\n\n\t\tconst _projScreenMatrix = new Matrix4();\n\n\t\tconst _vector3 = new Vector3();\n\n\t\tconst _vector4 = new Vector4();\n\n\t\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\t\tlet _renderBackground = false;\n\n\t\tfunction getTargetPixelRatio() {\n\n\t\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t\t}\n\n\t\t// initialize\n\n\t\tlet _gl = context;\n\n\t\tfunction getContext( contextName, contextAttributes ) {\n\n\t\t\treturn canvas.getContext( contextName, contextAttributes );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\tconst contextAttributes = {\n\t\t\t\talpha: true,\n\t\t\t\tdepth,\n\t\t\t\tstencil,\n\t\t\t\tantialias,\n\t\t\t\tpremultipliedAlpha,\n\t\t\t\tpreserveDrawingBuffer,\n\t\t\t\tpowerPreference,\n\t\t\t\tfailIfMajorPerformanceCaveat,\n\t\t\t};\n\n\t\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\t\tif ( 'setAttribute' in canvas ) canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t\tcanvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tconst contextName = 'webgl2';\n\n\t\t\t\t_gl = getContext( contextName, contextAttributes );\n\n\t\t\t\tif ( _gl === null ) {\n\n\t\t\t\t\tif ( getContext( contextName ) ) {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\t\tthrow error;\n\n\t\t}\n\n\t\tlet extensions, capabilities, state, info;\n\t\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\t\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\t\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\t\tlet utils, bindingStates, uniformsGroups;\n\n\t\tfunction initGLContext() {\n\n\t\t\textensions = new WebGLExtensions( _gl );\n\t\t\textensions.init();\n\n\t\t\tutils = new WebGLUtils( _gl, extensions );\n\n\t\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters, utils );\n\n\t\t\tstate = new WebGLState( _gl );\n\n\t\t\tinfo = new WebGLInfo( _gl );\n\t\t\tproperties = new WebGLProperties();\n\t\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\t\tattributes = new WebGLAttributes( _gl );\n\t\t\tbindingStates = new WebGLBindingStates( _gl, attributes );\n\t\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\t\tclipping = new WebGLClipping( properties );\n\t\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\t\trenderLists = new WebGLRenderLists();\n\t\t\trenderStates = new WebGLRenderStates( extensions );\n\t\t\tbackground = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha );\n\t\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\t\t\tuniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );\n\n\t\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info );\n\t\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info );\n\n\t\t\tinfo.programs = programCache.programs;\n\n\t\t\t_this.capabilities = capabilities;\n\t\t\t_this.extensions = extensions;\n\t\t\t_this.properties = properties;\n\t\t\t_this.renderLists = renderLists;\n\t\t\t_this.shadowMap = shadowMap;\n\t\t\t_this.state = state;\n\t\t\t_this.info = info;\n\n\t\t}\n\n\t\tinitGLContext();\n\n\t\t// xr\n\n\t\tconst xr = new WebXRManager( _this, _gl );\n\n\t\tthis.xr = xr;\n\n\t\t// API\n\n\t\tthis.getContext = function () {\n\n\t\t\treturn _gl;\n\n\t\t};\n\n\t\tthis.getContextAttributes = function () {\n\n\t\t\treturn _gl.getContextAttributes();\n\n\t\t};\n\n\t\tthis.forceContextLoss = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.loseContext();\n\n\t\t};\n\n\t\tthis.forceContextRestore = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.restoreContext();\n\n\t\t};\n\n\t\tthis.getPixelRatio = function () {\n\n\t\t\treturn _pixelRatio;\n\n\t\t};\n\n\t\tthis.setPixelRatio = function ( value ) {\n\n\t\t\tif ( value === undefined ) return;\n\n\t\t\t_pixelRatio = value;\n\n\t\t\tthis.setSize( _width, _height, false );\n\n\t\t};\n\n\t\tthis.getSize = function ( target ) {\n\n\t\t\treturn target.set( _width, _height );\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height, updateStyle = true ) {\n\n\t\t\tif ( xr.isPresenting ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\tcanvas.width = Math.floor( width * _pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * _pixelRatio );\n\n\t\t\tif ( updateStyle === true ) {\n\n\t\t\t\tcanvas.style.width = width + 'px';\n\t\t\t\tcanvas.style.height = height + 'px';\n\n\t\t\t}\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t\t};\n\n\t\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_pixelRatio = pixelRatio;\n\n\t\t\tcanvas.width = Math.floor( width * pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * pixelRatio );\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getCurrentViewport = function ( target ) {\n\n\t\t\treturn target.copy( _currentViewport );\n\n\t\t};\n\n\t\tthis.getViewport = function ( target ) {\n\n\t\t\treturn target.copy( _viewport );\n\n\t\t};\n\n\t\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_viewport.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).round() );\n\n\t\t};\n\n\t\tthis.getScissor = function ( target ) {\n\n\t\t\treturn target.copy( _scissor );\n\n\t\t};\n\n\t\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_scissor.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).round() );\n\n\t\t};\n\n\t\tthis.getScissorTest = function () {\n\n\t\t\treturn _scissorTest;\n\n\t\t};\n\n\t\tthis.setScissorTest = function ( boolean ) {\n\n\t\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t\t};\n\n\t\tthis.setOpaqueSort = function ( method ) {\n\n\t\t\t_opaqueSort = method;\n\n\t\t};\n\n\t\tthis.setTransparentSort = function ( method ) {\n\n\t\t\t_transparentSort = method;\n\n\t\t};\n\n\t\t// Clearing\n\n\t\tthis.getClearColor = function ( target ) {\n\n\t\t\treturn target.copy( background.getClearColor() );\n\n\t\t};\n\n\t\tthis.setClearColor = function () {\n\n\t\t\tbackground.setClearColor.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.getClearAlpha = function () {\n\n\t\t\treturn background.getClearAlpha();\n\n\t\t};\n\n\t\tthis.setClearAlpha = function () {\n\n\t\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\t\tlet bits = 0;\n\n\t\t\tif ( color ) {\n\n\t\t\t\t// check if we're trying to clear an integer target\n\t\t\t\tlet isIntegerFormat = false;\n\t\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t\tconst targetFormat = _currentRenderTarget.texture.format;\n\t\t\t\t\tisIntegerFormat = targetFormat === RGBAIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RGIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RedIntegerFormat;\n\n\t\t\t\t}\n\n\t\t\t\t// use the appropriate clear functions to clear the target if it's a signed\n\t\t\t\t// or unsigned integer target\n\t\t\t\tif ( isIntegerFormat ) {\n\n\t\t\t\t\tconst targetType = _currentRenderTarget.texture.type;\n\t\t\t\t\tconst isUnsignedType = targetType === UnsignedByteType ||\n\t\t\t\t\t\ttargetType === UnsignedIntType ||\n\t\t\t\t\t\ttargetType === UnsignedShortType ||\n\t\t\t\t\t\ttargetType === UnsignedInt248Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort4444Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort5551Type;\n\n\t\t\t\t\tconst clearColor = background.getClearColor();\n\t\t\t\t\tconst a = background.getClearAlpha();\n\t\t\t\t\tconst r = clearColor.r;\n\t\t\t\t\tconst g = clearColor.g;\n\t\t\t\t\tconst b = clearColor.b;\n\n\t\t\t\t\tif ( isUnsignedType ) {\n\n\t\t\t\t\t\tuintClearColor[ 0 ] = r;\n\t\t\t\t\t\tuintClearColor[ 1 ] = g;\n\t\t\t\t\t\tuintClearColor[ 2 ] = b;\n\t\t\t\t\t\tuintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferuiv( _gl.COLOR, 0, uintClearColor );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tintClearColor[ 0 ] = r;\n\t\t\t\t\t\tintClearColor[ 1 ] = g;\n\t\t\t\t\t\tintClearColor[ 2 ] = b;\n\t\t\t\t\t\tintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferiv( _gl.COLOR, 0, intClearColor );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbits |= _gl.COLOR_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\t\tif ( stencil ) {\n\n\t\t\t\tbits |= _gl.STENCIL_BUFFER_BIT;\n\t\t\t\tthis.state.buffers.stencil.setMask( 0xffffffff );\n\n\t\t\t}\n\n\t\t\t_gl.clear( bits );\n\n\t\t};\n\n\t\tthis.clearColor = function () {\n\n\t\t\tthis.clear( true, false, false );\n\n\t\t};\n\n\t\tthis.clearDepth = function () {\n\n\t\t\tthis.clear( false, true, false );\n\n\t\t};\n\n\t\tthis.clearStencil = function () {\n\n\t\t\tthis.clear( false, false, true );\n\n\t\t};\n\n\t\t//\n\n\t\tthis.dispose = function () {\n\n\t\t\tcanvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\trenderLists.dispose();\n\t\t\trenderStates.dispose();\n\t\t\tproperties.dispose();\n\t\t\tcubemaps.dispose();\n\t\t\tcubeuvmaps.dispose();\n\t\t\tobjects.dispose();\n\t\t\tbindingStates.dispose();\n\t\t\tuniformsGroups.dispose();\n\t\t\tprogramCache.dispose();\n\n\t\t\txr.dispose();\n\n\t\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t\tanimation.stop();\n\n\t\t};\n\n\t\t// Events\n\n\t\tfunction onContextLost( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t\t_isContextLost = true;\n\n\t\t}\n\n\t\tfunction onContextRestore( /* event */ ) {\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t\t_isContextLost = false;\n\n\t\t\tconst infoAutoReset = info.autoReset;\n\t\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\t\tconst shadowMapType = shadowMap.type;\n\n\t\t\tinitGLContext();\n\n\t\t\tinfo.autoReset = infoAutoReset;\n\t\t\tshadowMap.enabled = shadowMapEnabled;\n\t\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\t\tshadowMap.type = shadowMapType;\n\n\t\t}\n\n\t\tfunction onContextCreationError( event ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );\n\n\t\t}\n\n\t\tfunction onMaterialDispose( event ) {\n\n\t\t\tconst material = event.target;\n\n\t\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tdeallocateMaterial( material );\n\n\t\t}\n\n\t\t// Buffer deallocation\n\n\t\tfunction deallocateMaterial( material ) {\n\n\t\t\treleaseMaterialProgramReferences( material );\n\n\t\t\tproperties.remove( material );\n\n\t\t}\n\n\n\t\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\t\tconst programs = properties.get( material ).programs;\n\n\t\t\tif ( programs !== undefined ) {\n\n\t\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t\t} );\n\n\t\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Buffer rendering\n\n\t\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t\t//\n\n\t\t\tlet index = geometry.index;\n\t\t\tlet rangeFactor = 1;\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\n\t\t\t\tif ( index === undefined ) return;\n\n\t\t\t\trangeFactor = 2;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst drawRange = geometry.drawRange;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet drawStart = drawRange.start * rangeFactor;\n\t\t\tlet drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;\n\n\t\t\tif ( group !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, group.start * rangeFactor );\n\t\t\t\tdrawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );\n\n\t\t\t}\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, index.count );\n\n\t\t\t} else if ( position !== undefined && position !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, position.count );\n\n\t\t\t}\n\n\t\t\tconst drawCount = drawEnd - drawStart;\n\n\t\t\tif ( drawCount < 0 || drawCount === Infinity ) return;\n\n\t\t\t//\n\n\t\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\t\tlet attribute;\n\t\t\tlet renderer = bufferRenderer;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tattribute = attributes.get( index );\n\n\t\t\t\trenderer = indexedBufferRenderer;\n\t\t\t\trenderer.setIndex( attribute );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLine ) {\n\n\t\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_LOOP );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isPoints ) {\n\n\t\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\tif ( object._multiDrawInstances !== null ) {\n\n\t\t\t\t\trenderer.renderMultiDrawInstances( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount, object._multiDrawInstances );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ! extensions.get( 'WEBGL_multi_draw' ) ) {\n\n\t\t\t\t\t\tconst starts = object._multiDrawStarts;\n\t\t\t\t\t\tconst counts = object._multiDrawCounts;\n\t\t\t\t\t\tconst drawCount = object._multiDrawCount;\n\t\t\t\t\t\tconst bytesPerElement = index ? attributes.get( index ).bytesPerElement : 1;\n\t\t\t\t\t\tconst uniforms = properties.get( material ).currentProgram.getUniforms();\n\t\t\t\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\t\t\t\tuniforms.setValue( _gl, '_gl_DrawID', i );\n\t\t\t\t\t\t\trenderer.render( starts[ i ] / bytesPerElement, counts[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\trenderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isInstancedMesh ) {\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\t\tconst maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;\n\t\t\t\tconst instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Compile\n\n\t\tfunction prepareMaterial( material, scene, object ) {\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.compile = function ( scene, camera, targetScene = null ) {\n\n\t\t\tif ( targetScene === null ) targetScene = scene;\n\n\t\t\tcurrentRenderState = renderStates.get( targetScene );\n\t\t\tcurrentRenderState.init( camera );\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t// gather lights from both the target scene and the new object that will be added to the scene.\n\n\t\t\ttargetScene.traverseVisible( function ( object ) {\n\n\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tif ( scene !== targetScene ) {\n\n\t\t\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\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\tcurrentRenderState.setupLights();\n\n\t\t\t// Only initialize materials in the new scene, not the targetScene.\n\n\t\t\tconst materials = new Set();\n\n\t\t\tscene.traverse( function ( object ) {\n\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( material ) {\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\t\tprepareMaterial( material2, targetScene, object );\n\t\t\t\t\t\t\tmaterials.add( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tprepareMaterial( material, targetScene, object );\n\t\t\t\t\t\tmaterials.add( material );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\trenderStateStack.pop();\n\t\t\tcurrentRenderState = null;\n\n\t\t\treturn materials;\n\n\t\t};\n\n\t\t// compileAsync\n\n\t\tthis.compileAsync = function ( scene, camera, targetScene = null ) {\n\n\t\t\tconst materials = this.compile( scene, camera, targetScene );\n\n\t\t\t// Wait for all the materials in the new object to indicate that they're\n\t\t\t// ready to be used before resolving the promise.\n\n\t\t\treturn new Promise( ( resolve ) => {\n\n\t\t\t\tfunction checkMaterialsReady() {\n\n\t\t\t\t\tmaterials.forEach( function ( material ) {\n\n\t\t\t\t\t\tconst materialProperties = properties.get( material );\n\t\t\t\t\t\tconst program = materialProperties.currentProgram;\n\n\t\t\t\t\t\tif ( program.isReady() ) {\n\n\t\t\t\t\t\t\t// remove any programs that report they're ready to use from the list\n\t\t\t\t\t\t\tmaterials.delete( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\t// once the list of compiling materials is empty, call the callback\n\n\t\t\t\t\tif ( materials.size === 0 ) {\n\n\t\t\t\t\t\tresolve( scene );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// if some materials are still not ready, wait a bit and check again\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( extensions.get( 'KHR_parallel_shader_compile' ) !== null ) {\n\n\t\t\t\t\t// If we can check the compilation status of the materials without\n\t\t\t\t\t// blocking then do so right away.\n\n\t\t\t\t\tcheckMaterialsReady();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise start by waiting a bit to give the materials we just\n\t\t\t\t\t// initialized a chance to finish.\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\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 ) {\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t\t}\n\n\t\tfunction onXRSessionStart() {\n\n\t\t\tanimation.stop();\n\n\t\t}\n\n\t\tfunction onXRSessionEnd() {\n\n\t\t\tanimation.start();\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\t\t\txr.setAnimationLoop( callback );\n\n\t\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t\t};\n\n\t\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t// Rendering\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( _isContextLost === true ) return;\n\n\t\t\t// update scene graph\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t\t// update camera matrices and frustum\n\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t\t}\n\n\t\t\t//\n\t\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\t\tcurrentRenderState.init( camera );\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );\n\n\t\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\t\tcurrentRenderList.init();\n\n\t\t\trenderListStack.push( currentRenderList );\n\n\t\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\t\tconst depthSensingMesh = _this.xr.getDepthSensingMesh();\n\n\t\t\t\tif ( depthSensingMesh !== null ) {\n\n\t\t\t\t\tprojectObject( depthSensingMesh, camera, - Infinity, _this.sortObjects );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\t\tcurrentRenderList.finish();\n\n\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t\t}\n\n\t\t\t_renderBackground = xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false;\n\t\t\tif ( _renderBackground ) {\n\n\t\t\t\tbackground.addToRenderList( currentRenderList, scene );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tthis.info.render.frame ++;\n\n\t\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t\t//\n\n\t\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t\t// render scene\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\n\t\t\tcurrentRenderState.setupLights();\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tif ( transmissiveObjects.length > 0 ) {\n\n\t\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\t\trenderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( _renderBackground ) background.render( scene );\n\n\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );\n\n\t\t\t\tif ( _renderBackground ) background.render( scene );\n\n\t\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t\t// _gl.finish();\n\n\t\t\tbindingStates.resetDefaultState();\n\t\t\t_currentMaterialId = - 1;\n\t\t\t_currentCamera = null;\n\n\t\t\trenderStateStack.pop();\n\n\t\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, currentRenderState.state.camera );\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderState = null;\n\n\t\t\t}\n\n\t\t\trenderListStack.pop();\n\n\t\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderList = null;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tconst visible = object.layers.test( camera.layers );\n\n\t\t\tif ( visible ) {\n\n\t\t\t\tif ( object.isGroup ) {\n\n\t\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\t_vector4.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\t\t\t\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector4.copy( object.boundingSphere.center );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector4.copy( geometry.boundingSphere.center );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_vector4\n\t\t\t\t\t\t\t\t.applyMatrix4( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector4.z, group );\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} else if ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector4.z, 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\tconst children = object.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\tstate.setPolygonOffset( false );\n\n\t\t}\n\n\t\tfunction renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tif ( overrideMaterial !== null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( currentRenderState.state.transmissionRenderTarget[ camera.id ] === undefined ) {\n\n\t\t\t\tcurrentRenderState.state.transmissionRenderTarget[ camera.id ] = new WebGLRenderTarget( 1, 1, {\n\t\t\t\t\tgenerateMipmaps: true,\n\t\t\t\t\ttype: ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\t\tsamples: 4,\n\t\t\t\t\tstencilBuffer: stencil,\n\t\t\t\t\tresolveDepthBuffer: false,\n\t\t\t\t\tresolveStencilBuffer: false,\n\t\t\t\t\tcolorSpace: ColorManagement.workingColorSpace,\n\t\t\t\t} );\n\n\t\t\t\t// debug\n\n\t\t\t\t/*\n\t\t\t\tconst geometry = new PlaneGeometry();\n\t\t\t\tconst material = new MeshBasicMaterial( { map: _transmissionRenderTarget.texture } );\n\n\t\t\t\tconst mesh = new Mesh( geometry, material );\n\t\t\t\tscene.add( mesh );\n\t\t\t\t*/\n\n\t\t\t}\n\n\t\t\tconst transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget[ camera.id ];\n\n\t\t\tconst activeViewport = camera.viewport || _currentViewport;\n\t\t\ttransmissionRenderTarget.setSize( activeViewport.z, activeViewport.w );\n\n\t\t\t//\n\n\t\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t\t_this.setRenderTarget( transmissionRenderTarget );\n\n\t\t\t_this.getClearColor( _currentClearColor );\n\t\t\t_currentClearAlpha = _this.getClearAlpha();\n\t\t\tif ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 );\n\n\t\t\t_this.clear();\n\n\t\t\tif ( _renderBackground ) background.render( scene );\n\n\t\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\t\tconst currentToneMapping = _this.toneMapping;\n\t\t\t_this.toneMapping = NoToneMapping;\n\n\t\t\t// Remove viewport from camera to avoid nested render calls resetting viewport to it (e.g Reflector).\n\t\t\t// Transmission render pass requires viewport to match the transmissionRenderTarget.\n\t\t\tconst currentCameraViewport = camera.viewport;\n\t\t\tif ( camera.viewport !== undefined ) camera.viewport = undefined;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\ttextures.updateMultisampleRenderTarget( transmissionRenderTarget );\n\t\t\ttextures.updateRenderTargetMipmap( transmissionRenderTarget );\n\n\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === false ) { // see #28131\n\n\t\t\t\tlet renderTargetNeedsUpdate = false;\n\n\t\t\t\tfor ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst renderItem = transmissiveObjects[ i ];\n\n\t\t\t\t\tconst object = renderItem.object;\n\t\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\t\tconst material = renderItem.material;\n\t\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\t\tif ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\t\tconst currentSide = material.side;\n\n\t\t\t\t\t\tmaterial.side = BackSide;\n\t\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t\t\tmaterial.side = currentSide;\n\t\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\t\trenderTargetNeedsUpdate = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderTargetNeedsUpdate === true ) {\n\n\t\t\t\t\ttextures.updateMultisampleRenderTarget( transmissionRenderTarget );\n\t\t\t\t\ttextures.updateRenderTargetMipmap( transmissionRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t\t\t_this.setClearColor( _currentClearColor, _currentClearAlpha );\n\n\t\t\tif ( currentCameraViewport !== undefined ) camera.viewport = currentCameraViewport;\n\n\t\t\t_this.toneMapping = currentToneMapping;\n\n\t\t}\n\n\t\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t\t}\n\n\t\tfunction getProgram( material, scene, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tconst lights = currentRenderState.state.lights;\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tconst lightsStateVersion = lights.state.version;\n\n\t\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\t\tlet programs = materialProperties.programs;\n\n\t\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\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tmaterialProperties.fog = scene.fog;\n\t\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\t\t\tmaterialProperties.envMapRotation = ( materialProperties.environment !== null && material.envMap === null ) ? scene.environmentRotation : material.envMapRotation;\n\n\t\t\tif ( programs === undefined ) {\n\n\t\t\t\t// new material\n\n\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\tprograms = new Map();\n\t\t\t\tmaterialProperties.programs = programs;\n\n\t\t\t}\n\n\t\t\tlet program = programs.get( programCacheKey );\n\n\t\t\tif ( program !== undefined ) {\n\n\t\t\t\t// early out if program and light state is identical\n\n\t\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\t\treturn program;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t\t}\n\n\t\t\tconst uniforms = materialProperties.uniforms;\n\n\t\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t\t}\n\n\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t// store the light setup it was created for\n\n\t\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\t\tuniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n\t\t\t\tuniforms.spotLightMap.value = lights.state.spotLightMap;\n\t\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t\t}\n\n\t\t\tmaterialProperties.currentProgram = program;\n\t\t\tmaterialProperties.uniformsList = null;\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\tfunction getUniformList( materialProperties ) {\n\n\t\t\tif ( materialProperties.uniformsList === null ) {\n\n\t\t\t\tconst progUniforms = materialProperties.currentProgram.getUniforms();\n\t\t\t\tmaterialProperties.uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, materialProperties.uniforms );\n\n\t\t\t}\n\n\t\t\treturn materialProperties.uniformsList;\n\n\t\t}\n\n\t\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tmaterialProperties.outputColorSpace = parameters.outputColorSpace;\n\t\t\tmaterialProperties.batching = parameters.batching;\n\t\t\tmaterialProperties.batchingColor = parameters.batchingColor;\n\t\t\tmaterialProperties.instancing = parameters.instancing;\n\t\t\tmaterialProperties.instancingColor = parameters.instancingColor;\n\t\t\tmaterialProperties.instancingMorph = parameters.instancingMorph;\n\t\t\tmaterialProperties.skinning = parameters.skinning;\n\t\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t\t}\n\n\t\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\ttextures.resetTextureUnits();\n\n\t\t\tconst fog = scene.fog;\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tconst colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace );\n\t\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\t\tconst vertexTangents = !! geometry.attributes.tangent && ( !! material.normalMap || material.anisotropy > 0 );\n\t\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\t\tconst morphColors = !! geometry.morphAttributes.color;\n\n\t\t\tlet toneMapping = NoToneMapping;\n\n\t\t\tif ( material.toneMapped ) {\n\n\t\t\t\tif ( _currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\t\ttoneMapping = _this.toneMapping;\n\n\t\t\t\t}\n\n\t\t\t}\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\tconst materialProperties = properties.get( material );\n\t\t\tconst lights = currentRenderState.state.lights;\n\n\t\t\tif ( _clippingEnabled === true ) {\n\n\t\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\t\tconst useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t\t// (#8465, #8379)\n\t\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet needsProgramChange = false;\n\n\t\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.outputColorSpace !== colorSpace ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batching === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isBatchedMesh && materialProperties.batching === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batchingColor === true && object.colorTexture === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batchingColor === false && object.colorTexture !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingMorph === true && object.morphTexture === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingMorph === false && object.morphTexture !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tneedsProgramChange = true;\n\t\t\t\tmaterialProperties.__version = material.version;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet program = materialProperties.currentProgram;\n\n\t\t\tif ( needsProgramChange === true ) {\n\n\t\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t\tlet refreshProgram = false;\n\t\t\tlet refreshMaterial = false;\n\t\t\tlet refreshLights = false;\n\n\t\t\tconst p_uniforms = program.getUniforms(),\n\t\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\t\trefreshProgram = true;\n\t\t\t\trefreshMaterial = true;\n\t\t\t\trefreshLights = true;\n\n\t\t\t}\n\n\t\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t\t_currentMaterialId = material.id;\n\n\t\t\t\trefreshMaterial = true;\n\n\t\t\t}\n\n\t\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\t\t// common camera uniforms\n\n\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\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, _vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t\t}\n\n\t\t\t\t// consider moving isOrthographic to UniformLib and WebGLMaterials, see https://github.com/mrdoob/three.js/pull/26467#issuecomment-1645185067\n\n\t\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t\t}\n\n\t\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\t\tconst skeleton = object.skeleton;\n\n\t\t\t\tif ( skeleton ) {\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\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingTexture' );\n\t\t\t\tp_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures );\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingIdTexture' );\n\t\t\t\tp_uniforms.setValue( _gl, 'batchingIdTexture', object._indirectTexture, textures );\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingColorTexture' );\n\t\t\t\tif ( object._colorsTexture !== null ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'batchingColorTexture', object._colorsTexture, textures );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined ) ) {\n\n\t\t\t\tmorphtargets.update( object, geometry, program );\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t\t}\n\n\t\t\t// https://github.com/mrdoob/three.js/pull/24467#issuecomment-1209031512\n\n\t\t\tif ( material.isMeshGouraudMaterial && material.envMap !== null ) {\n\n\t\t\t\tm_uniforms.envMap.value = envMap;\n\n\t\t\t\tm_uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshStandardMaterial && material.envMap === null && scene.environment !== null ) {\n\n\t\t\t\tm_uniforms.envMapIntensity.value = scene.environmentIntensity;\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t\t// values\n\t\t\t\t\t//\n\t\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t\t// the GL state when required\n\n\t\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t\t}\n\n\t\t\t\t// refresh uniforms common to several materials\n\n\t\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, currentRenderState.state.transmissionRenderTarget[ camera.id ] );\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\n\t\t\t}\n\n\t\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\t\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t\t}\n\n\t\t\t// common matrices\n\n\t\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\t\t// UBOs\n\n\t\t\tif ( material.isShaderMaterial || material.isRawShaderMaterial ) {\n\n\t\t\t\tconst groups = material.uniformsGroups;\n\n\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\t\tuniformsGroups.update( group, program );\n\t\t\t\t\tuniformsGroups.bind( group, program );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\t\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\t\tuniforms.directionalLights.needsUpdate = value;\n\t\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\t\tuniforms.pointLights.needsUpdate = value;\n\t\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\t\tuniforms.spotLights.needsUpdate = value;\n\t\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t\t}\n\n\t\tfunction materialNeedsLights( material ) {\n\n\t\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t\t}\n\n\t\tthis.getActiveCubeFace = function () {\n\n\t\t\treturn _currentActiveCubeFace;\n\n\t\t};\n\n\t\tthis.getActiveMipmapLevel = function () {\n\n\t\t\treturn _currentActiveMipmapLevel;\n\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn _currentRenderTarget;\n\n\t\t};\n\n\t\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__hasExternalTextures = true;\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\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t\t};\n\n\t\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t\t_currentRenderTarget = renderTarget;\n\t\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\t\tlet useDefaultFramebuffer = true;\n\t\t\tlet framebuffer = null;\n\t\t\tlet isCube = false;\n\t\t\tlet isRenderTarget3D = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\t\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t\t}\n\n\t\t\t\tconst texture = renderTarget.texture;\n\n\t\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t\t}\n\n\t\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer[ activeCubeFace ] ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ][ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tisCube = true;\n\n\t\t\t\t} else if ( ( renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t} else {\n\n\t\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t}\n\n\t\t\tconst framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\tif ( framebufferBound && useDefaultFramebuffer ) {\n\n\t\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport );\n\t\t\tstate.scissor( _currentScissor );\n\t\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t\t_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t\t}\n\n\t\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t\t};\n\n\t\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t\t}\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\ttry {\n\n\t\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\t\tif ( ! capabilities.textureFormatReadable( textureFormat ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! capabilities.textureTypeReadable( textureType ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} finally {\n\n\t\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.readRenderTargetPixelsAsync = async function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t\t}\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\ttry {\n\n\t\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\t\tif ( ! capabilities.textureFormatReadable( textureFormat ) ) {\n\n\t\t\t\t\t\tthrow new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! capabilities.textureTypeReadable( textureType ) ) {\n\n\t\t\t\t\t\tthrow new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\tconst glBuffer = _gl.createBuffer();\n\t\t\t\t\t\t_gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );\n\t\t\t\t\t\t_gl.bufferData( _gl.PIXEL_PACK_BUFFER, buffer.byteLength, _gl.STREAM_READ );\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), 0 );\n\t\t\t\t\t\t_gl.flush();\n\n\t\t\t\t\t\t// check if the commands have finished every 8 ms\n\t\t\t\t\t\tconst sync = _gl.fenceSync( _gl.SYNC_GPU_COMMANDS_COMPLETE, 0 );\n\t\t\t\t\t\tawait probeAsync( _gl, sync, 4 );\n\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t_gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );\n\t\t\t\t\t\t\t_gl.getBufferSubData( _gl.PIXEL_PACK_BUFFER, 0, buffer );\n\n\t\t\t\t\t\t} finally {\n\n\t\t\t\t\t\t\t_gl.deleteBuffer( glBuffer );\n\t\t\t\t\t\t\t_gl.deleteSync( sync );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn buffer;\n\n\t\t\t\t\t}\n\n\t\t\t\t} finally {\n\n\t\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.copyFramebufferToTexture = function ( texture, position = null, level = 0 ) {\n\n\t\t\t// support previous signature with position first\n\t\t\tif ( texture.isTexture !== true ) {\n\n\t\t\t\t// @deprecated, r165\n\t\t\t\twarnOnce( 'WebGLRenderer: copyFramebufferToTexture function signature has changed.' );\n\n\t\t\t\tposition = arguments[ 0 ] || null;\n\t\t\t\ttexture = arguments[ 1 ];\n\n\t\t\t}\n\n\t\t\tconst levelScale = Math.pow( 2, - level );\n\t\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\t\tconst x = position !== null ? position.x : 0;\n\t\t\tconst y = position !== null ? position.y : 0;\n\n\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, x, y, width, height );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture = function ( srcTexture, dstTexture, srcRegion = null, dstPosition = null, level = 0 ) {\n\n\t\t\t// support previous signature with dstPosition first\n\t\t\tif ( srcTexture.isTexture !== true ) {\n\n\t\t\t\t// @deprecated, r165\n\t\t\t\twarnOnce( 'WebGLRenderer: copyTextureToTexture function signature has changed.' );\n\n\t\t\t\tdstPosition = arguments[ 0 ] || null;\n\t\t\t\tsrcTexture = arguments[ 1 ];\n\t\t\t\tdstTexture = arguments[ 2 ];\n\t\t\t\tlevel = arguments[ 3 ] || 0;\n\t\t\t\tsrcRegion = null;\n\n\t\t\t}\n\n\t\t\tlet width, height, minX, minY;\n\t\t\tlet dstX, dstY;\n\t\t\tif ( srcRegion !== null ) {\n\n\t\t\t\twidth = srcRegion.max.x - srcRegion.min.x;\n\t\t\t\theight = srcRegion.max.y - srcRegion.min.y;\n\t\t\t\tminX = srcRegion.min.x;\n\t\t\t\tminY = srcRegion.min.y;\n\n\t\t\t} else {\n\n\t\t\t\twidth = srcTexture.image.width;\n\t\t\t\theight = srcTexture.image.height;\n\t\t\t\tminX = 0;\n\t\t\t\tminY = 0;\n\n\t\t\t}\n\n\t\t\tif ( dstPosition !== null ) {\n\n\t\t\t\tdstX = dstPosition.x;\n\t\t\t\tdstY = dstPosition.y;\n\n\t\t\t} else {\n\n\t\t\t\tdstX = 0;\n\t\t\t\tdstY = 0;\n\n\t\t\t}\n\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t\t// As another texture upload may have changed pixelStorei\n\t\t\t// parameters, make sure they are correct for the dstTexture\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tconst currentUnpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );\n\t\t\tconst currentUnpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );\n\t\t\tconst currentUnpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );\n\t\t\tconst currentUnpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );\n\t\t\tconst currentUnpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );\n\n\t\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ level ] : srcTexture.image;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, minX );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, minY );\n\n\t\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, dstX, dstY, width, height, glFormat, glType, image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t\t_gl.compressedTexSubImage2D( _gl.TEXTURE_2D, level, dstX, dstY, image.width, image.height, glFormat, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, dstX, dstY, width, height, glFormat, glType, image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, currentUnpackRowLen );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, currentUnpackImageHeight );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, currentUnpackSkipPixels );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, currentUnpackSkipRows );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, currentUnpackSkipImages );\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture3D = function ( srcTexture, dstTexture, srcRegion = null, dstPosition = null, level = 0 ) {\n\n\t\t\t// support previous signature with source box first\n\t\t\tif ( srcTexture.isTexture !== true ) {\n\n\t\t\t\t// @deprecated, r165\n\t\t\t\twarnOnce( 'WebGLRenderer: copyTextureToTexture3D function signature has changed.' );\n\n\t\t\t\tsrcRegion = arguments[ 0 ] || null;\n\t\t\t\tdstPosition = arguments[ 1 ] || null;\n\t\t\t\tsrcTexture = arguments[ 2 ];\n\t\t\t\tdstTexture = arguments[ 3 ];\n\t\t\t\tlevel = arguments[ 4 ] || 0;\n\n\t\t\t}\n\n\t\t\tlet width, height, depth, minX, minY, minZ;\n\t\t\tlet dstX, dstY, dstZ;\n\t\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ level ] : srcTexture.image;\n\t\t\tif ( srcRegion !== null ) {\n\n\t\t\t\twidth = srcRegion.max.x - srcRegion.min.x;\n\t\t\t\theight = srcRegion.max.y - srcRegion.min.y;\n\t\t\t\tdepth = srcRegion.max.z - srcRegion.min.z;\n\t\t\t\tminX = srcRegion.min.x;\n\t\t\t\tminY = srcRegion.min.y;\n\t\t\t\tminZ = srcRegion.min.z;\n\n\t\t\t} else {\n\n\t\t\t\twidth = image.width;\n\t\t\t\theight = image.height;\n\t\t\t\tdepth = image.depth;\n\t\t\t\tminX = 0;\n\t\t\t\tminY = 0;\n\t\t\t\tminZ = 0;\n\n\t\t\t}\n\n\t\t\tif ( dstPosition !== null ) {\n\n\t\t\t\tdstX = dstPosition.x;\n\t\t\t\tdstY = dstPosition.y;\n\t\t\t\tdstZ = dstPosition.z;\n\n\t\t\t} else {\n\n\t\t\t\tdstX = 0;\n\t\t\t\tdstY = 0;\n\t\t\t\tdstZ = 0;\n\n\t\t\t}\n\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\t\t\tlet glTarget;\n\n\t\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_3D;\n\n\t\t\t} else if ( dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tconst currentUnpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );\n\t\t\tconst currentUnpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );\n\t\t\tconst currentUnpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );\n\t\t\tconst currentUnpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );\n\t\t\tconst currentUnpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, minX );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, minY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, minZ );\n\n\t\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, dstX, dstY, dstZ, width, height, depth, glFormat, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage3D( glTarget, level, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, currentUnpackRowLen );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, currentUnpackImageHeight );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, currentUnpackSkipPixels );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, currentUnpackSkipRows );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, currentUnpackSkipImages );\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.initRenderTarget = function ( target ) {\n\n\t\t\tif ( properties.get( target ).__webglFramebuffer === undefined ) {\n\n\t\t\t\ttextures.setupRenderTarget( target );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.initTexture = function ( texture ) {\n\n\t\t\tif ( texture.isCubeTexture ) {\n\n\t\t\t\ttextures.setTextureCube( texture, 0 );\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( texture, 0 );\n\n\t\t\t} else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( texture, 0 );\n\n\t\t\t} else {\n\n\t\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.resetState = function () {\n\n\t\t\t_currentActiveCubeFace = 0;\n\t\t\t_currentActiveMipmapLevel = 0;\n\t\t\t_currentRenderTarget = null;\n\n\t\t\tstate.reset();\n\t\t\tbindingStates.reset();\n\n\t\t};\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\tget coordinateSystem() {\n\n\t\treturn WebGLCoordinateSystem;\n\n\t}\n\n\tget outputColorSpace() {\n\n\t\treturn this._outputColorSpace;\n\n\t}\n\n\tset outputColorSpace( colorSpace ) {\n\n\t\tthis._outputColorSpace = colorSpace;\n\n\t\tconst gl = this.getContext();\n\t\tgl.drawingBufferColorSpace = colorSpace === DisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\t\tgl.unpackColorSpace = ColorManagement.workingColorSpace === LinearDisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\n\t}\n\n}\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.isFogExp2 = true;\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\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.isFog = true;\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\tname: this.name,\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\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isScene = true;\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.backgroundBlurriness = 0;\n\t\tthis.backgroundIntensity = 1;\n\t\tthis.backgroundRotation = new Euler();\n\n\t\tthis.environmentIntensity = 1;\n\t\tthis.environmentRotation = new Euler();\n\n\t\tthis.overrideMaterial = null;\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\tthis.backgroundBlurriness = source.backgroundBlurriness;\n\t\tthis.backgroundIntensity = source.backgroundIntensity;\n\t\tthis.backgroundRotation.copy( source.backgroundRotation );\n\n\t\tthis.environmentIntensity = source.environmentIntensity;\n\t\tthis.environmentRotation.copy( source.environmentRotation );\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\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\tif ( this.backgroundBlurriness > 0 ) data.object.backgroundBlurriness = this.backgroundBlurriness;\n\t\tif ( this.backgroundIntensity !== 1 ) data.object.backgroundIntensity = this.backgroundIntensity;\n\t\tdata.object.backgroundRotation = this.backgroundRotation.toArray();\n\n\t\tif ( this.environmentIntensity !== 1 ) data.object.environmentIntensity = this.environmentIntensity;\n\t\tdata.object.environmentRotation = this.environmentRotation.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.isInterleavedBuffer = true;\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\t\tthis.updateRanges = [];\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\tget updateRange() {\n\n\t\twarnOnce( 'THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\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.from( 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\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.isInterleavedBufferAttribute = true;\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;\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\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.data.stride + this.offset + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\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\tif ( this.normalized ) y = normalize( y, this.array );\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\tif ( this.normalized ) z = normalize( z, this.array );\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\tif ( this.normalized ) w = normalize( w, this.array );\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\tlet x = this.data.array[ index * this.data.stride + this.offset ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\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\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\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\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\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 interleaved buffer attribute will de-interleave 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 interleaved buffer attribute will de-interleave 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// de-interleave 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 interleaved attribute\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\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isSpriteMaterial = true;\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\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 = new SpriteMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isSprite = true;\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;\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.getInterpolation( _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, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\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, level.hysteresis );\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, hysteresis = 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, hysteresis: hysteresis, 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\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\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance < levelDistance ) {\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\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance >= levelDistance ) {\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\thysteresis: level.hysteresis\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 _vector3 = /*@__PURE__*/ new Vector3();\nconst _matrix4 = /*@__PURE__*/ new Matrix4();\nconst _vertex = /*@__PURE__*/ new Vector3();\n\nconst _sphere$4 = /*@__PURE__*/ new Sphere();\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = AttachedBindMode;\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingBox.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingSphere.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\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\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$4.copy( this.boundingSphere );\n\t\t_sphere$4.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$4 ) === false ) return;\n\n\t\t// convert ray to local space of skinned mesh\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( this.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$2 );\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tsuper.getVertexPosition( index, target );\n\n\t\tthis.applyBoneTransform( index, target );\n\n\t\treturn target;\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 === AttachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === DetachedBindMode ) {\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\tapplyBoneTransform( index, vector ) {\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( vector ).applyMatrix4( this.bindMatrix );\n\n\t\tvector.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_matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\tvector.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn vector.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isDataTexture = true;\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\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix$1 = /*@__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\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$1;\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 = Math.ceil( size / 4 ) * 4;\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\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.6,\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\tsuper( array, itemSize, normalized );\n\n\t\tthis.isInstancedBufferAttribute = true;\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\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _box3 = /*@__PURE__*/ new Box3();\nconst _identity = /*@__PURE__*/ new Matrix4();\nconst _mesh$1 = /*@__PURE__*/ new Mesh();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isInstancedMesh = true;\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\t\tthis.morphTexture = null;\n\n\t\tthis.count = count;\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.setMatrixAt( i, _identity );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\tgeometry.computeBoundingBox();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_box3.copy( geometry.boundingBox ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingBox.union( _box3 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere === null ) {\n\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_sphere$3.copy( geometry.boundingSphere ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingSphere.union( _sphere$3 );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.morphTexture !== null ) this.morphTexture = source.morphTexture.clone();\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\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\tgetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tconst len = objectInfluences.length + 1; // All influences + the baseInfluenceSum\n\n\t\tconst dataIndex = index * len + 1; // Skip the baseInfluenceSum at the beginning\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tobjectInfluences[ i ] = array[ dataIndex + i ];\n\n\t\t}\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$1.geometry = this.geometry;\n\t\t_mesh$1.material = this.material;\n\n\t\tif ( _mesh$1.material === undefined ) return;\n\n\t\t// test with bounding sphere first\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$3.copy( this.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t// now test each instance\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$1.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh$1.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 ).fill( 1 ), 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\tsetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst len = objectInfluences.length + 1; // morphBaseInfluence + all influences\n\n\t\tif ( this.morphTexture === null ) {\n\n\t\t\tthis.morphTexture = new DataTexture( new Float32Array( len * this.count ), len, this.count, RedFormat, FloatType );\n\n\t\t}\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t}\n\n\t\tconst morphBaseInfluence = this.geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tconst dataIndex = len * index;\n\n\t\tarray[ dataIndex ] = morphBaseInfluence;\n\n\t\tarray.set( objectInfluences, dataIndex + 1 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\tif ( this.morphTexture !== null ) {\n\n\t\t\tthis.morphTexture.dispose();\n\t\t\tthis.morphTexture = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction sortOpaque( a, b ) {\n\n\treturn a.z - b.z;\n\n}\n\nfunction sortTransparent( a, b ) {\n\n\treturn b.z - a.z;\n\n}\n\nclass MultiDrawRenderList {\n\n\tconstructor() {\n\n\t\tthis.index = 0;\n\t\tthis.pool = [];\n\t\tthis.list = [];\n\n\t}\n\n\tpush( drawRange, z, index ) {\n\n\t\tconst pool = this.pool;\n\t\tconst list = this.list;\n\t\tif ( this.index >= pool.length ) {\n\n\t\t\tpool.push( {\n\n\t\t\t\tstart: - 1,\n\t\t\t\tcount: - 1,\n\t\t\t\tz: - 1,\n\t\t\t\tindex: - 1,\n\n\t\t\t} );\n\n\t\t}\n\n\t\tconst item = pool[ this.index ];\n\t\tlist.push( item );\n\t\tthis.index ++;\n\n\t\titem.start = drawRange.start;\n\t\titem.count = drawRange.count;\n\t\titem.z = z;\n\t\titem.index = index;\n\n\t}\n\n\treset() {\n\n\t\tthis.list.length = 0;\n\t\tthis.index = 0;\n\n\t}\n\n}\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _invMatrixWorld = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\nconst _whiteColor = /*@__PURE__*/ new Color( 1, 1, 1 );\nconst _projScreenMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _frustum = /*@__PURE__*/ new Frustum();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _forward = /*@__PURE__*/ new Vector3();\nconst _temp = /*@__PURE__*/ new Vector3();\nconst _renderList = /*@__PURE__*/ new MultiDrawRenderList();\nconst _mesh = /*@__PURE__*/ new Mesh();\nconst _batchIntersects = [];\n\n// @TODO: SkinnedMesh support?\n// @TODO: geometry.groups support?\n// @TODO: geometry.drawRange support?\n// @TODO: geometry.morphAttributes support?\n// @TODO: Support uniform parameter per geometry\n// @TODO: Add an \"optimize\" function to pack geometry and remove data gaps\n\n// copies data from attribute \"src\" into \"target\" starting at \"targetOffset\"\nfunction copyAttributeData( src, target, targetOffset = 0 ) {\n\n\tconst itemSize = target.itemSize;\n\tif ( src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor ) {\n\n\t\t// use the component getters and setters if the array data cannot\n\t\t// be copied directly\n\t\tconst vertexCount = src.count;\n\t\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\ttarget.setComponent( i + targetOffset, c, src.getComponent( i, c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// faster copy approach using typed array set function\n\t\ttarget.array.set( src.array, targetOffset * itemSize );\n\n\t}\n\n\ttarget.needsUpdate = true;\n\n}\n\nclass BatchedMesh extends Mesh {\n\n\tget maxInstanceCount() {\n\n\t\treturn this._maxInstanceCount;\n\n\t}\n\n\tconstructor( maxInstanceCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) {\n\n\t\tsuper( new BufferGeometry(), material );\n\n\t\tthis.isBatchedMesh = true;\n\t\tthis.perObjectFrustumCulled = true;\n\t\tthis.sortObjects = true;\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\t\tthis.customSort = null;\n\n\t\t// stores visible, active, and geometry id per object\n\t\tthis._drawInfo = [];\n\n\t\t// geometry information\n\t\tthis._drawRanges = [];\n\t\tthis._reservedRanges = [];\n\t\tthis._bounds = [];\n\n\t\tthis._maxInstanceCount = maxInstanceCount;\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\tthis._geometryInitialized = false;\n\t\tthis._geometryCount = 0;\n\t\tthis._multiDrawCounts = new Int32Array( maxInstanceCount );\n\t\tthis._multiDrawStarts = new Int32Array( maxInstanceCount );\n\t\tthis._multiDrawCount = 0;\n\t\tthis._multiDrawInstances = null;\n\t\tthis._visibilityChanged = true;\n\n\t\t// Local matrix per geometry by using data texture\n\t\tthis._matricesTexture = null;\n\t\tthis._indirectTexture = null;\n\t\tthis._colorsTexture = null;\n\n\t\tthis._initMatricesTexture();\n\t\tthis._initIndirectTexture();\n\n\t}\n\n\t_initMatricesTexture() {\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 matrices * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 matrices * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 matrices * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 matrices * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst matricesArray = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tconst matricesTexture = new DataTexture( matricesArray, size, size, RGBAFormat, FloatType );\n\n\t\tthis._matricesTexture = matricesTexture;\n\n\t}\n\n\t_initIndirectTexture() {\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount );\n\t\tsize = Math.ceil( size );\n\n\t\tconst indirectArray = new Uint32Array( size * size );\n\t\tconst indirectTexture = new DataTexture( indirectArray, size, size, RedIntegerFormat, UnsignedIntType );\n\n\t\tthis._indirectTexture = indirectTexture;\n\n\t}\n\n\t_initColorsTexture() {\n\n\t\tlet size = Math.sqrt( this._maxIndexCount );\n\t\tsize = Math.ceil( size );\n\n\t\t// 4 floats per RGBA pixel initialized to white\n\t\tconst colorsArray = new Float32Array( size * size * 4 ).fill( 1 );\n\t\tconst colorsTexture = new DataTexture( colorsArray, size, size, RGBAFormat, FloatType );\n\t\tcolorsTexture.colorSpace = ColorManagement.workingColorSpace;\n\n\t\tthis._colorsTexture = colorsTexture;\n\n\t}\n\n\t_initializeGeometry( reference ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst maxVertexCount = this._maxVertexCount;\n\t\tconst maxIndexCount = this._maxIndexCount;\n\t\tif ( this._geometryInitialized === false ) {\n\n\t\t\tfor ( const attributeName in reference.attributes ) {\n\n\t\t\t\tconst srcAttribute = reference.getAttribute( attributeName );\n\t\t\t\tconst { array, itemSize, normalized } = srcAttribute;\n\n\t\t\t\tconst dstArray = new array.constructor( maxVertexCount * itemSize );\n\t\t\t\tconst dstAttribute = new BufferAttribute( dstArray, itemSize, normalized );\n\n\t\t\t\tgeometry.setAttribute( attributeName, dstAttribute );\n\n\t\t\t}\n\n\t\t\tif ( reference.getIndex() !== null ) {\n\n\t\t\t\t// Reserve last u16 index for primitive restart.\n\t\t\t\tconst indexArray = maxVertexCount > 65535\n\t\t\t\t\t? new Uint32Array( maxIndexCount )\n\t\t\t\t\t: new Uint16Array( maxIndexCount );\n\n\t\t\t\tgeometry.setIndex( new BufferAttribute( indexArray, 1 ) );\n\n\t\t\t}\n\n\t\t\tthis._geometryInitialized = true;\n\n\t\t}\n\n\t}\n\n\t// Make sure the geometry is compatible with the existing combined geometry attributes\n\t_validateGeometry( geometry ) {\n\n\t\t// check to ensure the geometries are using consistent attributes and indices\n\t\tconst batchGeometry = this.geometry;\n\t\tif ( Boolean( geometry.getIndex() ) !== Boolean( batchGeometry.getIndex() ) ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: All geometries must consistently have \"index\".' );\n\n\t\t}\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( ! geometry.hasAttribute( attributeName ) ) {\n\n\t\t\t\tthrow new Error( `BatchedMesh: Added geometry missing \"${ attributeName }\". All geometries must have consistent attributes.` );\n\n\t\t\t}\n\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tif ( srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized ) {\n\n\t\t\t\tthrow new Error( 'BatchedMesh: All attributes must have a consistent itemSize and normalized value.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tsetCustomSort( func ) {\n\n\t\tthis.customSort = func;\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 geometryCount = this._geometryCount;\n\t\tconst boundingBox = this.boundingBox;\n\t\tconst drawInfo = this._drawInfo;\n\n\t\tboundingBox.makeEmpty();\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( drawInfo[ i ].active === false ) continue;\n\n\t\t\tconst geometryId = drawInfo[ i ].geometryIndex;\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingBoxAt( geometryId, _box$1 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingBox.union( _box$1 );\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 boundingSphere = this.boundingSphere;\n\t\tconst drawInfo = this._drawInfo;\n\n\t\tboundingSphere.makeEmpty();\n\t\tfor ( let i = 0, l = drawInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( drawInfo[ i ].active === false ) continue;\n\n\t\t\tconst geometryId = drawInfo[ i ].geometryIndex;\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingSphere.union( _sphere$2 );\n\n\t\t}\n\n\t}\n\n\taddInstance( geometryId ) {\n\n\t\t// ensure we're not over geometry\n\t\tif ( this._drawInfo.length >= this._maxInstanceCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum item count reached.' );\n\n\t\t}\n\n\t\tthis._drawInfo.push( {\n\n\t\t\tvisible: true,\n\t\t\tactive: true,\n\t\t\tgeometryIndex: geometryId,\n\n\t\t} );\n\n\t\t// initialize the matrix\n\t\tconst drawId = this._drawInfo.length - 1;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = matricesTexture.image.data;\n\t\t_identityMatrix.toArray( matricesArray, drawId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\tconst colorsTexture = this._colorsTexture;\n\t\tif ( colorsTexture ) {\n\n\t\t\t_whiteColor.toArray( colorsTexture.image.data, drawId * 4 );\n\t\t\tcolorsTexture.needsUpdate = true;\n\n\t\t}\n\n\t\treturn drawId;\n\n\t}\n\n\taddGeometry( geometry, vertexCount = - 1, indexCount = - 1 ) {\n\n\t\tthis._initializeGeometry( geometry );\n\n\t\tthis._validateGeometry( geometry );\n\n\t\t// ensure we're not over geometry\n\t\tif ( this._drawInfo.length >= this._maxInstanceCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum item count reached.' );\n\n\t\t}\n\n\t\t// get the necessary range fo the geometry\n\t\tconst reservedRange = {\n\t\t\tvertexStart: - 1,\n\t\t\tvertexCount: - 1,\n\t\t\tindexStart: - 1,\n\t\t\tindexCount: - 1,\n\t\t};\n\n\t\tlet lastRange = null;\n\t\tconst reservedRanges = this._reservedRanges;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst bounds = this._bounds;\n\t\tif ( this._geometryCount !== 0 ) {\n\n\t\t\tlastRange = reservedRanges[ reservedRanges.length - 1 ];\n\n\t\t}\n\n\t\tif ( vertexCount === - 1 ) {\n\n\t\t\treservedRange.vertexCount = geometry.getAttribute( 'position' ).count;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexCount = vertexCount;\n\n\t\t}\n\n\t\tif ( lastRange === null ) {\n\n\t\t\treservedRange.vertexStart = 0;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexStart = lastRange.vertexStart + lastRange.vertexCount;\n\n\t\t}\n\n\t\tconst index = geometry.getIndex();\n\t\tconst hasIndex = index !== null;\n\t\tif ( hasIndex ) {\n\n\t\t\tif ( indexCount\t=== - 1 ) {\n\n\t\t\t\treservedRange.indexCount = index.count;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexCount = indexCount;\n\n\t\t\t}\n\n\t\t\tif ( lastRange === null ) {\n\n\t\t\t\treservedRange.indexStart = 0;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexStart = lastRange.indexStart + lastRange.indexCount;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif (\n\t\t\treservedRange.indexStart !== - 1 &&\n\t\t\treservedRange.indexStart + reservedRange.indexCount > this._maxIndexCount ||\n\t\t\treservedRange.vertexStart + reservedRange.vertexCount > this._maxVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space request exceeds the maximum buffer size.' );\n\n\t\t}\n\n\t\t// update id\n\t\tconst geometryId = this._geometryCount;\n\t\tthis._geometryCount ++;\n\n\t\t// add the reserved range and draw range objects\n\t\treservedRanges.push( reservedRange );\n\t\tdrawRanges.push( {\n\t\t\tstart: hasIndex ? reservedRange.indexStart : reservedRange.vertexStart,\n\t\t\tcount: - 1\n\t\t} );\n\t\tbounds.push( {\n\t\t\tboxInitialized: false,\n\t\t\tbox: new Box3(),\n\n\t\t\tsphereInitialized: false,\n\t\t\tsphere: new Sphere()\n\t\t} );\n\n\t\t// update the geometry\n\t\tthis.setGeometryAt( geometryId, geometry );\n\n\t\treturn geometryId;\n\n\t}\n\n\tsetGeometryAt( geometryId, geometry ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst batchGeometry = this.geometry;\n\t\tconst hasIndex = batchGeometry.getIndex() !== null;\n\t\tconst dstIndex = batchGeometry.getIndex();\n\t\tconst srcIndex = geometry.getIndex();\n\t\tconst reservedRange = this._reservedRanges[ geometryId ];\n\t\tif (\n\t\t\thasIndex &&\n\t\t\tsrcIndex.count > reservedRange.indexCount ||\n\t\t\tgeometry.attributes.position.count > reservedRange.vertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space not large enough for provided geometry.' );\n\n\t\t}\n\n\t\t// copy geometry over\n\t\tconst vertexStart = reservedRange.vertexStart;\n\t\tconst vertexCount = reservedRange.vertexCount;\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\t// copy attribute data\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tcopyAttributeData( srcAttribute, dstAttribute, vertexStart );\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tconst itemSize = srcAttribute.itemSize;\n\t\t\tfor ( let i = srcAttribute.count, l = vertexCount; i < l; i ++ ) {\n\n\t\t\t\tconst index = vertexStart + i;\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tdstAttribute.setComponent( index, c, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdstAttribute.needsUpdate = true;\n\t\t\tdstAttribute.addUpdateRange( vertexStart * itemSize, vertexCount * itemSize );\n\n\t\t}\n\n\t\t// copy index\n\t\tif ( hasIndex ) {\n\n\t\t\tconst indexStart = reservedRange.indexStart;\n\n\t\t\t// copy index data over\n\t\t\tfor ( let i = 0; i < srcIndex.count; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart + srcIndex.getX( i ) );\n\n\t\t\t}\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tfor ( let i = srcIndex.count, l = reservedRange.indexCount; i < l; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart );\n\n\t\t\t}\n\n\t\t\tdstIndex.needsUpdate = true;\n\t\t\tdstIndex.addUpdateRange( indexStart, reservedRange.indexCount );\n\n\t\t}\n\n\t\t// store the bounding boxes\n\t\tconst bound = this._bounds[ geometryId ];\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tbound.box.copy( geometry.boundingBox );\n\t\t\tbound.boxInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.boxInitialized = false;\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tbound.sphere.copy( geometry.boundingSphere );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.sphereInitialized = false;\n\n\t\t}\n\n\t\t// set drawRange count\n\t\tconst drawRange = this._drawRanges[ geometryId ];\n\t\tconst posAttr = geometry.getAttribute( 'position' );\n\t\tdrawRange.count = hasIndex ? srcIndex.count : posAttr.count;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn geometryId;\n\n\t}\n\n\t/*\n\tdeleteGeometry( geometryId ) {\n\n\t\t// TODO: delete geometry and associated instances\n\n\t}\n\t*/\n\n\t/*\n\tdeleteInstance( instanceId ) {\n\n\t\t// Note: User needs to call optimize() afterward to pack the data.\n\n\t\tconst drawInfo = this._drawInfo;\n\t\tif ( instanceId >= drawInfo.length || drawInfo[ instanceId ].active === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tdrawInfo[ instanceId ].active = false;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\t*/\n\n\t// get bounding box and compute it if it doesn't exist\n\tgetBoundingBoxAt( geometryId, target ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding box\n\t\tconst bound = this._bounds[ geometryId ];\n\t\tconst box = bound.box;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.boxInitialized === false ) {\n\n\t\t\tbox.makeEmpty();\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ geometryId ];\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\tbox.expandByPoint( _vector$5.fromBufferAttribute( position, iv ) );\n\n\t\t\t}\n\n\t\t\tbound.boxInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( box );\n\t\treturn target;\n\n\t}\n\n\t// get bounding sphere and compute it if it doesn't exist\n\tgetBoundingSphereAt( geometryId, target ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding sphere\n\t\tconst bound = this._bounds[ geometryId ];\n\t\tconst sphere = bound.sphere;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.sphereInitialized === false ) {\n\n\t\t\tsphere.makeEmpty();\n\n\t\t\tthis.getBoundingBoxAt( geometryId, _box$1 );\n\t\t\t_box$1.getCenter( sphere.center );\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ geometryId ];\n\n\t\t\tlet maxRadiusSq = 0;\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\t_vector$5.fromBufferAttribute( position, iv );\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, sphere.center.distanceToSquared( _vector$5 ) );\n\n\t\t\t}\n\n\t\t\tsphere.radius = Math.sqrt( maxRadiusSq );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( sphere );\n\t\treturn target;\n\n\t}\n\n\tsetMatrixAt( instanceId, matrix ) {\n\n\t\t// @TODO: Map geometryId to index of the arrays because\n\t\t// optimize() can make geometryId mismatch the index\n\n\t\tconst drawInfo = this._drawInfo;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tif ( instanceId >= drawInfo.length || drawInfo[ instanceId ].active === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tmatrix.toArray( matricesArray, instanceId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetMatrixAt( instanceId, matrix ) {\n\n\t\tconst drawInfo = this._drawInfo;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tif ( instanceId >= drawInfo.length || drawInfo[ instanceId ].active === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn matrix.fromArray( matricesArray, instanceId * 16 );\n\n\t}\n\n\tsetColorAt( instanceId, color ) {\n\n\t\tif ( this._colorsTexture === null ) {\n\n\t\t\tthis._initColorsTexture();\n\n\t\t}\n\n\t\t// @TODO: Map id to index of the arrays because\n\t\t// optimize() can make id mismatch the index\n\n\t\tconst colorsTexture = this._colorsTexture;\n\t\tconst colorsArray = this._colorsTexture.image.data;\n\t\tconst drawInfo = this._drawInfo;\n\t\tif ( instanceId >= drawInfo.length || drawInfo[ instanceId ].active === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tcolor.toArray( colorsArray, instanceId * 4 );\n\t\tcolorsTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( instanceId, color ) {\n\n\t\tconst colorsArray = this._colorsTexture.image.data;\n\t\tconst drawInfo = this._drawInfo;\n\t\tif ( instanceId >= drawInfo.length || drawInfo[ instanceId ].active === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn color.fromArray( colorsArray, instanceId * 4 );\n\n\t}\n\n\tsetVisibleAt( instanceId, value ) {\n\n\t\t// if the geometry is out of range, not active, or visibility state\n\t\t// does not change then return early\n\t\tconst drawInfo = this._drawInfo;\n\t\tif (\n\t\t\tinstanceId >= drawInfo.length ||\n\t\t\tdrawInfo[ instanceId ].active === false ||\n\t\t\tdrawInfo[ instanceId ].visible === value\n\t\t) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tdrawInfo[ instanceId ].visible = value;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetVisibleAt( instanceId ) {\n\n\t\t// return early if the geometry is out of range or not active\n\t\tconst drawInfo = this._drawInfo;\n\t\tif ( instanceId >= drawInfo.length || drawInfo[ instanceId ].active === false ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn drawInfo[ instanceId ].visible;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst drawInfo = this._drawInfo;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst batchGeometry = this.geometry;\n\n\t\t// iterate over each geometry\n\t\t_mesh.material = this.material;\n\t\t_mesh.geometry.index = batchGeometry.index;\n\t\t_mesh.geometry.attributes = batchGeometry.attributes;\n\t\tif ( _mesh.geometry.boundingBox === null ) {\n\n\t\t\t_mesh.geometry.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( _mesh.geometry.boundingSphere === null ) {\n\n\t\t\t_mesh.geometry.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tfor ( let i = 0, l = drawInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( ! drawInfo[ i ].visible || ! drawInfo[ i ].active ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst geometryId = drawInfo[ i ].geometryIndex;\n\t\t\tconst drawRange = drawRanges[ geometryId ];\n\t\t\t_mesh.geometry.setDrawRange( drawRange.start, drawRange.count );\n\n\t\t\t// ge the intersects\n\t\t\tthis.getMatrixAt( i, _mesh.matrixWorld ).premultiply( matrixWorld );\n\t\t\tthis.getBoundingBoxAt( geometryId, _mesh.geometry.boundingBox );\n\t\t\tthis.getBoundingSphereAt( geometryId, _mesh.geometry.boundingSphere );\n\t\t\t_mesh.raycast( raycaster, _batchIntersects );\n\n\t\t\t// add batch id to the intersects\n\t\t\tfor ( let j = 0, l = _batchIntersects.length; j < l; j ++ ) {\n\n\t\t\t\tconst intersect = _batchIntersects[ j ];\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersect.batchId = i;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_batchIntersects.length = 0;\n\n\t\t}\n\n\t\t_mesh.material = null;\n\t\t_mesh.geometry.index = null;\n\t\t_mesh.geometry.attributes = {};\n\t\t_mesh.geometry.setDrawRange( 0, Infinity );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.geometry = source.geometry.clone();\n\t\tthis.perObjectFrustumCulled = source.perObjectFrustumCulled;\n\t\tthis.sortObjects = source.sortObjects;\n\t\tthis.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;\n\t\tthis.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;\n\n\t\tthis._drawRanges = source._drawRanges.map( range => ( { ...range } ) );\n\t\tthis._reservedRanges = source._reservedRanges.map( range => ( { ...range } ) );\n\n\t\tthis._drawInfo = source._drawInfo.map( inf => ( { ...inf } ) );\n\t\tthis._bounds = source._bounds.map( bound => ( {\n\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\tbox: bound.box.clone(),\n\n\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\tsphere: bound.sphere.clone()\n\t\t} ) );\n\n\t\tthis._maxInstanceCount = source._maxInstanceCount;\n\t\tthis._maxVertexCount = source._maxVertexCount;\n\t\tthis._maxIndexCount = source._maxIndexCount;\n\n\t\tthis._geometryInitialized = source._geometryInitialized;\n\t\tthis._geometryCount = source._geometryCount;\n\t\tthis._multiDrawCounts = source._multiDrawCounts.slice();\n\t\tthis._multiDrawStarts = source._multiDrawStarts.slice();\n\n\t\tthis._matricesTexture = source._matricesTexture.clone();\n\t\tthis._matricesTexture.image.data = this._matricesTexture.image.data.slice();\n\n\t\tif ( this._colorsTexture !== null ) {\n\n\t\t\tthis._colorsTexture = source._colorsTexture.clone();\n\t\t\tthis._colorsTexture.image.data = this._colorsTexture.image.data.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\t// Assuming the geometry is not shared with other meshes\n\t\tthis.geometry.dispose();\n\n\t\tthis._matricesTexture.dispose();\n\t\tthis._matricesTexture = null;\n\n\t\tthis._indirectTexture.dispose();\n\t\tthis._indirectTexture = null;\n\n\t\tif ( this._colorsTexture !== null ) {\n\n\t\t\tthis._colorsTexture.dispose();\n\t\t\tthis._colorsTexture = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tonBeforeRender( renderer, scene, camera, geometry, material/*, _group*/ ) {\n\n\t\t// if visibility has not changed and frustum culling and object sorting is not required\n\t\t// then skip iterating over all items\n\t\tif ( ! this._visibilityChanged && ! this.perObjectFrustumCulled && ! this.sortObjects ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// the indexed version of the multi draw function requires specifying the start\n\t\t// offset in bytes.\n\t\tconst index = geometry.getIndex();\n\t\tconst bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;\n\n\t\tconst drawInfo = this._drawInfo;\n\t\tconst multiDrawStarts = this._multiDrawStarts;\n\t\tconst multiDrawCounts = this._multiDrawCounts;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\tconst indirectTexture = this._indirectTexture;\n\t\tconst indirectArray = indirectTexture.image.data;\n\n\t\t// prepare the frustum in the local frame\n\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t_projScreenMatrix$2\n\t\t\t\t.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )\n\t\t\t\t.multiply( this.matrixWorld );\n\t\t\t_frustum.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\trenderer.coordinateSystem\n\t\t\t);\n\n\t\t}\n\n\t\tlet count = 0;\n\t\tif ( this.sortObjects ) {\n\n\t\t\t// get the camera position in the local frame\n\t\t\t_invMatrixWorld.copy( this.matrixWorld ).invert();\n\t\t\t_vector$5.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4( _invMatrixWorld );\n\t\t\t_forward.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld ).transformDirection( _invMatrixWorld );\n\n\t\t\tfor ( let i = 0, l = drawInfo.length; i < l; i ++ ) {\n\n\t\t\t\tif ( drawInfo[ i ].visible && drawInfo[ i ].active ) {\n\n\t\t\t\t\tconst geometryId = drawInfo[ i ].geometryIndex;\n\n\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\t// get the distance from camera used for sorting\n\t\t\t\t\t\tconst z = _temp.subVectors( _sphere$2.center, _vector$5 ).dot( _forward );\n\t\t\t\t\t\t_renderList.push( drawRanges[ geometryId ], z, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Sort the draw ranges and prep for rendering\n\t\t\tconst list = _renderList.list;\n\t\t\tconst customSort = this.customSort;\n\t\t\tif ( customSort === null ) {\n\n\t\t\t\tlist.sort( material.transparent ? sortTransparent : sortOpaque );\n\n\t\t\t} else {\n\n\t\t\t\tcustomSort.call( this, list, camera );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = list.length; i < l; i ++ ) {\n\n\t\t\t\tconst item = list[ i ];\n\t\t\t\tmultiDrawStarts[ count ] = item.start * bytesPerElement;\n\t\t\t\tmultiDrawCounts[ count ] = item.count;\n\t\t\t\tindirectArray[ count ] = item.index;\n\t\t\t\tcount ++;\n\n\t\t\t}\n\n\t\t\t_renderList.reset();\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0, l = drawInfo.length; i < l; i ++ ) {\n\n\t\t\t\tif ( drawInfo[ i ].visible && drawInfo[ i ].active ) {\n\n\t\t\t\t\tconst geometryId = drawInfo[ i ].geometryIndex;\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\tconst range = drawRanges[ geometryId ];\n\t\t\t\t\t\tmultiDrawStarts[ count ] = range.start * bytesPerElement;\n\t\t\t\t\t\tmultiDrawCounts[ count ] = range.count;\n\t\t\t\t\t\tindirectArray[ count ] = i;\n\t\t\t\t\t\tcount ++;\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\tindirectTexture.needsUpdate = true;\n\t\tthis._multiDrawCount = count;\n\t\tthis._visibilityChanged = false;\n\n\t}\n\n\tonBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial/* , group */ ) {\n\n\t\tthis.onBeforeRender( renderer, null, shadowCamera, geometry, depthMaterial );\n\n\t}\n\n}\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\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.map = source.map;\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\nconst _vStart = /*@__PURE__*/ new Vector3();\nconst _vEnd = /*@__PURE__*/ new Vector3();\n\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nconst _intersectPointOnRay = /*@__PURE__*/ new Vector3();\nconst _intersectPointOnSegment = /*@__PURE__*/ new Vector3();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isLine = true;\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, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : 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\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_vStart.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_vEnd.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _vStart.distanceTo( _vEnd );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\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 step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst a = index.getX( end - 1 );\n\t\t\t\tconst b = index.getX( start );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, i, i + 1 );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, end - 1, start );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, raycaster, ray, thresholdSq, a, b ) {\n\n\tconst positionAttribute = object.geometry.attributes.position;\n\n\t_vStart.fromBufferAttribute( positionAttribute, a );\n\t_vEnd.fromBufferAttribute( positionAttribute, b );\n\n\tconst distSq = ray.distanceSqToSegment( _vStart, _vEnd, _intersectPointOnRay, _intersectPointOnSegment );\n\n\tif ( distSq > thresholdSq ) return;\n\n\t_intersectPointOnRay.applyMatrix4( object.matrixWorld ); // Move back to world space for distance calculation\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectPointOnRay );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\treturn {\n\n\t\tdistance: distance,\n\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t// point: raycaster.ray.at( distance ),\n\t\tpoint: _intersectPointOnSegment.clone().applyMatrix4( object.matrixWorld ),\n\t\tindex: a,\n\t\tface: null,\n\t\tfaceIndex: null,\n\t\tobject: object\n\n\t};\n\n}\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.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isPointsMaterial = true;\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\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.isPoints = true;\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, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : 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\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.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.isVideoTexture = true;\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\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.isFramebufferTexture = true;\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\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCompressedTexture = true;\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\nclass CompressedArrayTexture extends CompressedTexture {\n\n\tconstructor( mipmaps, width, height, depth, format, type ) {\n\n\t\tsuper( mipmaps, width, height, format, type );\n\n\t\tthis.isCompressedArrayTexture = true;\n\t\tthis.image.depth = depth;\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.layerUpdates = new Set();\n\n\t}\n\n\taddLayerUpdate( layerIndex ) {\n\n\t\tthis.layerUpdates.add( layerIndex );\n\n\t}\n\n\tclearLayerUpdates() {\n\n\t\tthis.layerUpdates.clear();\n\n\t}\n\n}\n\nclass CompressedCubeTexture extends CompressedTexture {\n\n\tconstructor( images, format, type ) {\n\n\t\tsuper( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );\n\n\t\tthis.isCompressedCubeTexture = true;\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.image = images;\n\n\t}\n\n}\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.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\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.6,\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.isEllipseCurve = true;\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 = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\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\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.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\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 = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ 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.isCatmullRomCurve3 = true;\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\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.isCubicBezierCurve = true;\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\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.isCubicBezierCurve3 = true;\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\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve = true;\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 = new Vector2() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\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\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\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\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 = new Vector3() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\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\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve = true;\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\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve3 = true;\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\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isSplineCurve = true;\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\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\tconst lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3';\n\t\t\tthis.curves.push( new Curves[ lineType ]( endPoint, startPoint ) );\n\n\t\t}\n\n\t\treturn this;\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\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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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\tlength: 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 = 32, 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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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 = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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 = 32, 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 subdivision 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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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.4)\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 ? 32767 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize, 0 );\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 | 0 );\n\t\t\ttriangles.push( ear.i / dim | 0 );\n\t\t\ttriangles.push( next.i / dim | 0 );\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\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\tlet p = c.next;\n\twhile ( p !== a ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, 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\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( x0, y0, minX, minY, invSize ),\n\t\tmaxZ = zOrder( x1, y1, 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.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( 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.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( 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.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( 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 | 0 );\n\t\t\ttriangles.push( p.i / dim | 0 );\n\t\t\ttriangles.push( b.i / dim | 0 );\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, 0 );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize, 0 );\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\touterNode = eliminateHole( queue[ i ], outerNode );\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\tconst bridge = findHoleBridge( hole, outerNode );\n\tif ( ! bridge ) {\n\n\t\treturn outerNode;\n\n\t}\n\n\tconst bridgeReverse = splitPolygon( bridge, hole );\n\n\t// filter collinear points around the cuts\n\tfilterPoints( bridgeReverse, bridgeReverse.next );\n\treturn filterPoints( bridge, bridge.next );\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\tqx = - Infinity,\n\t\tm;\n\n\tconst hx = hole.x, hy = hole.y;\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\tm = p.x < p.next.x ? p : p.next;\n\t\t\t\tif ( x === hx ) return m; // hole touches outer segment; pick leftmost endpoint\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\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 === 0 ) 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 = ( x - minX ) * invSize | 0;\n\ty = ( y - minY ) * invSize | 0;\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 ) &&\n ( ax - px ) * ( by - py ) >= ( bx - px ) * ( ay - py ) &&\n ( bx - px ) * ( cy - py ) >= ( cx - px ) * ( by - py );\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n ( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n ( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n equals( 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\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( 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 = 0;\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\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\tconst 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//\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 pt.clone().addScaledVector( vec, size );\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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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\tdata.options = Object.assign( {}, options );\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 = 32, 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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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\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// indices\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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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\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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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 = 12, tubularSegments = 48, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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\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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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\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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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\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\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\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\tCapsuleGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShadowMaterial = true;\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\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshStandardMaterial = true;\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.envMapRotation = new Euler();\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.envMapRotation.copy( source.envMapRotation );\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\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhysicalMaterial = true;\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.anisotropyRotation = 0;\n\t\tthis.anisotropyMap = null;\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.iridescenceMap = null;\n\t\tthis.iridescenceIOR = 1.3;\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\t\tthis.iridescenceThicknessMap = null;\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 = Infinity;\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._anisotropy = 0;\n\t\tthis._clearcoat = 0;\n\t\tthis._dispersion = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._sheen = 0.0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget anisotropy() {\n\n\t\treturn this._anisotropy;\n\n\t}\n\n\tset anisotropy( value ) {\n\n\t\tif ( this._anisotropy > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._anisotropy = 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 iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\tget dispersion() {\n\n\t\treturn this._dispersion;\n\n\t}\n\n\tset dispersion( value ) {\n\n\t\tif ( this._dispersion > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._dispersion = value;\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 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.anisotropy = source.anisotropy;\n\t\tthis.anisotropyRotation = source.anisotropyRotation;\n\t\tthis.anisotropyMap = source.anisotropyMap;\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.dispersion = source.dispersion;\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\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\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhongMaterial = true;\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.envMapRotation = new Euler();\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.envMapRotation.copy( source.envMapRotation );\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\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshToonMaterial = true;\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\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshNormalMaterial = true;\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\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshLambertMaterial = true;\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.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.envMapRotation = new Euler();\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\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.envMapRotation.copy( source.envMapRotation );\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\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshMatcapMaterial = true;\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\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineDashedMaterial = true;\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\n// converts an array to a specific type\nfunction convertArray( array, type, forceClone ) {\n\n\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t! forceClone && array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) &&\n\t\t! ( object instanceof DataView );\n\n}\n\n// returns an array by which times and values can be sorted\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n// uses the array previously returned by 'getKeyframeOrder' to sort data\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n// function for parsing AOS keyframe formats\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = interpolant.resultBuffer.slice( startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\nconst AnimationUtils = {\n\tconvertArray: convertArray,\n\tisTypedArray: isTypedArray,\n\tgetKeyframeOrder: getKeyframeOrder,\n\tsortedArray: sortedArray,\n\tflattenJSON: flattenJSON,\n\tsubclip: subclip,\n\tmakeClipAdditive: makeClipAdditive\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.copySampleValue_( i1 - 1 );\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.copySampleValue_( 0 );\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.copySampleValue_( 0 );\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.copySampleValue_( i1 - 1 );\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/**\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 = convertArray( times, this.TimeBufferType );\n\t\tthis.values = 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': convertArray( track.times, Array ),\n\t\t\t\t'values': 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 = times.slice( from, to );\n\t\t\tthis.values = this.values.slice( 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 ( 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 = this.times.slice(),\n\t\t\tvalues = this.values.slice(),\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 = times.slice( 0, writeIndex );\n\t\t\tthis.values = values.slice( 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 = this.times.slice();\n\t\tconst values = this.values.slice();\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\n\t// No interpolation parameter because only InterpolateDiscrete is valid.\n\tconstructor( name, times, values ) {\n\n\t\tsuper( name, times, values );\n\n\t}\n\n}\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\n// DefaultInterpolation is inherited;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {\n\n\t// No interpolation parameter because only InterpolateDiscrete is valid.\n\tconstructor( name, times, values ) {\n\n\t\tsuper( name, times, values );\n\n\t}\n\n}\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 = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = 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\tflattenJSON( 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\tflattenJSON( 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 = /*@__PURE__*/ 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\nLoader.DEFAULT_MATERIAL_NAME = '__DEFAULT';\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\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\n\t\t\t\t\t// Nginx needs X-File-Size check\n\t\t\t\t\t// https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content\n\t\t\t\t\tconst contentLength = response.headers.get( 'X-File-Size' ) || 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}, ( e ) => {\n\n\t\t\t\t\t\t\t\t\tcontroller.error( e );\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 new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\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\t\ttexture.colorSpace = SRGBColorSpace;\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\tlet texData;\n\n\t\t\ttry {\n\n\t\t\t\ttexData = scope.parse( buffer );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) {\n\n\t\t\t\t\tonError( error );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\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.colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = texData.colorSpace;\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.isLight = true;\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, recursive ) {\n\n\t\tsuper.copy( source, recursive );\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\t\tif ( this.target !== undefined ) data.object.target = this.target.uuid;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\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.intensity = 1;\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( _projScreenMatrix$1 );\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.intensity = source.intensity;\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.intensity !== 1 ) object.intensity = this.intensity;\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.isSpotLightShadow = true;\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\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\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;\n\n\t\tthis.map = null;\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, recursive ) {\n\n\t\tsuper.copy( source, recursive );\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\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.isPointLightShadow = true;\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\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay;\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, recursive ) {\n\n\t\tsuper.copy( source, recursive );\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\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\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\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isRectAreaLight = true;\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\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.isSphericalHarmonics3 = true;\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\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isLightProbe = true;\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\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 = MaterialLoader.createMaterialFromType( 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.dispersion !== undefined ) material.dispersion = json.dispersion;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\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.anisotropy !== undefined ) material.anisotropy = json.anisotropy;\n\t\tif ( json.anisotropyRotation !== undefined ) material.anisotropyRotation = json.anisotropyRotation;\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.alphaHash !== undefined ) material.alphaHash = json.alphaHash;\n\t\tif ( json.depthFunc !== undefined ) material.depthFunc = json.depthFunc;\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\t\tif ( json.blendSrc !== undefined ) material.blendSrc = json.blendSrc;\n\t\tif ( json.blendDst !== undefined ) material.blendDst = json.blendDst;\n\t\tif ( json.blendEquation !== undefined ) material.blendEquation = json.blendEquation;\n\t\tif ( json.blendSrcAlpha !== undefined ) material.blendSrcAlpha = json.blendSrcAlpha;\n\t\tif ( json.blendDstAlpha !== undefined ) material.blendDstAlpha = json.blendDstAlpha;\n\t\tif ( json.blendEquationAlpha !== undefined ) material.blendEquationAlpha = json.blendEquationAlpha;\n\t\tif ( json.blendColor !== undefined && material.blendColor !== undefined ) material.blendColor.setHex( json.blendColor );\n\t\tif ( json.blendAlpha !== undefined ) material.blendAlpha = json.blendAlpha;\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\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\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 !== undefined ) 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\t\tif ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass;\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\t\tif ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion;\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\tif ( json.lights !== undefined ) material.lights = json.lights;\n\t\tif ( json.clipping !== undefined ) material.clipping = json.clipping;\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.envMapRotation !== undefined ) material.envMapRotation.fromArray( json.envMapRotation );\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.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\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.anisotropyMap !== undefined ) material.anisotropyMap = getTexture( json.anisotropyMap );\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\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) { // @deprecated, r165\n\n\t\tconsole.warn( 'THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead.' );\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.isInstancedBufferGeometry = true;\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\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\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\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\tif ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\\'t load ' + url ) );\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\t\tthis.bindLightTargets( object );\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 ].data 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\t\tthis.bindLightTargets( object );\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\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 ( 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 ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\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\t\t\t\tif ( data.channel !== undefined ) texture.channel = data.channel;\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.internalFormat !== undefined ) texture.internalFormat = data.internalFormat;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.colorSpace !== undefined ) texture.colorSpace = data.colorSpace;\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.generateMipmaps !== undefined ) texture.generateMipmaps = data.generateMipmaps;\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\t\t\t\tif ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;\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\tif ( data.fog.name !== '' ) {\n\n\t\t\t\t\t\tobject.fog.name = data.fog.name;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness;\n\t\t\t\tif ( data.backgroundIntensity !== undefined ) object.backgroundIntensity = data.backgroundIntensity;\n\t\t\t\tif ( data.backgroundRotation !== undefined ) object.backgroundRotation.fromArray( data.backgroundRotation );\n\n\t\t\t\tif ( data.environmentIntensity !== undefined ) object.environmentIntensity = data.environmentIntensity;\n\t\t\t\tif ( data.environmentRotation !== undefined ) object.environmentRotation.fromArray( data.environmentRotation );\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\t\t\t\tobject.target = data.target || '';\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\t\t\t\tobject.target = data.target || '';\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 'BatchedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new BatchedMesh( data.maxInstanceCount, data.maxVertexCount, data.maxIndexCount, material );\n\t\t\t\tobject.geometry = geometry;\n\t\t\t\tobject.perObjectFrustumCulled = data.perObjectFrustumCulled;\n\t\t\t\tobject.sortObjects = data.sortObjects;\n\n\t\t\t\tobject._drawRanges = data.drawRanges;\n\t\t\t\tobject._reservedRanges = data.reservedRanges;\n\n\t\t\t\tobject._visibility = data.visibility;\n\t\t\t\tobject._active = data.active;\n\t\t\t\tobject._bounds = data.bounds.map( bound => {\n\n\t\t\t\t\tconst box = new Box3();\n\t\t\t\t\tbox.min.fromArray( bound.boxMin );\n\t\t\t\t\tbox.max.fromArray( bound.boxMax );\n\n\t\t\t\t\tconst sphere = new Sphere();\n\t\t\t\t\tsphere.radius = bound.sphereRadius;\n\t\t\t\t\tsphere.center.fromArray( bound.sphereCenter );\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\t\t\tbox: box,\n\n\t\t\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\t\t\tsphere: sphere\n\t\t\t\t\t};\n\n\t\t\t\t} );\n\n\t\t\t\tobject._maxInstanceCount = data.maxInstanceCount;\n\t\t\t\tobject._maxVertexCount = data.maxVertexCount;\n\t\t\t\tobject._maxIndexCount = data.maxIndexCount;\n\n\t\t\t\tobject._geometryInitialized = data.geometryInitialized;\n\t\t\t\tobject._geometryCount = data.geometryCount;\n\n\t\t\t\tobject._matricesTexture = getTexture( data.matricesTexture.uuid );\n\t\t\t\tif ( data.colorsTexture !== undefined ) object._colorsTexture = getTexture( data.colorsTexture.uuid );\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.up !== undefined ) object.up.fromArray( data.up );\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.intensity !== undefined ) object.shadow.intensity = data.shadow.intensity;\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, level.hysteresis );\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\tbindLightTargets( object ) {\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isDirectionalLight || child.isSpotLight ) {\n\n\t\t\t\tconst uuid = child.target;\n\n\t\t\t\tconst target = object.getObjectByProperty( 'uuid', uuid );\n\n\t\t\t\tif ( target !== undefined ) {\n\n\t\t\t\t\tchild.target = target;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.target = new Object3D();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\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\tthis.isImageBitmapLoader = true;\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\t// If cached is a promise, wait for it to resolve\n\t\t\tif ( cached.then ) {\n\n\t\t\t\tcached.then( imageBitmap => {\n\n\t\t\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} ).catch( e => {\n\n\t\t\t\t\tif ( onError ) onError( e );\n\n\t\t\t\t} );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// If cached is not a promise (i.e., it's already an imageBitmap)\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\tconst promise = fetch( 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\treturn imageBitmap;\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tCache.remove( url );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tCache.add( url, promise );\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nlet _context;\n\nclass AudioContext {\n\n\tstatic getContext() {\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\tstatic setContext( 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} ).catch( handleError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\thandleError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\tfunction handleError( 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\n\t\t}\n\n\t}\n\n}\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\tif ( this.source !== null ) {\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t}\n\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._connected === false ) {\n\n\t\t\treturn;\n\n\t\t}\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.isPlaying === true && this.source.detune !== undefined ) {\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\tconnect() {\n\n\t\tsuper.connect();\n\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 = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(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 = /*@__PURE__*/ /(?:\\.(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 = /*@__PURE__*/ /\\.(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', 'map' ];\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 );\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 );\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.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );\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\tcase 'map':\n\n\t\t\t\t\tif ( 'map' in targetObject ) {\n\n\t\t\t\t\t\ttargetObject = targetObject.map;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\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.map ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.map;\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.morphAttributes ) {\n\n\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\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\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.isAnimationObjectGroup = true;\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\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\tdeltaTime = 0;\n\n\t\t\t} else {\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\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\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\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, _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\nclass Uniform {\n\n\tconstructor( value ) {\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\nlet _id = 0;\n\nclass UniformsGroup extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isUniformsGroup = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.uniforms = [];\n\n\t}\n\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== - 1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tconst uniforms = Array.isArray( uniformsSource[ i ] ) ? uniformsSource[ i ] : [ uniformsSource[ i ] ];\n\n\t\t\tfor ( let j = 0; j < uniforms.length; j ++ ) {\n\n\t\t\t\tthis.uniforms.push( uniforms[ j ].clone() );\n\n\t\t\t}\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\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.isInstancedInterleavedBuffer = true;\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\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.isGLBufferAttribute = true;\n\n\t\tthis.name = '';\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\nconst _matrix = /*@__PURE__*/ new Matrix4();\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\tsetFromXRController( controller ) {\n\n\t\t_matrix.identity().extractRotation( controller.matrixWorld );\n\n\t\tthis.ray.origin.setFromMatrixPosition( controller.matrixWorld );\n\t\tthis.ray.direction.set( 0, 0, - 1 ).applyMatrix4( _matrix );\n\n\t\treturn this;\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersect( 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\tintersect( 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 intersect( object, raycaster, intersects, recursive ) {\n\n\tlet propagate = true;\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tconst result = object.raycast( raycaster, intersects );\n\n\t\tif ( result === false ) propagate = false;\n\n\t}\n\n\tif ( propagate === true && 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\tintersect( 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 * phi (the polar angle) is measured from the positive y-axis. The positive y-axis is up.\n * theta (the azimuthal angle) is measured from the positive z-axis.\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\nclass Matrix2 {\n\n\tconstructor( n11, n12, n21, n22 ) {\n\n\t\tMatrix2.prototype.isMatrix2 = true;\n\n\t\tthis.elements = [\n\t\t\t1, 0,\n\t\t\t0, 1,\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n21, n22 );\n\n\t\t}\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\t\t\t1, 0,\n\t\t\t0, 1,\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 4; 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\tset( n11, n12, n21, n22 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 2 ] = n12;\n\t\tte[ 1 ] = n21; te[ 3 ] = n22;\n\n\t\treturn 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.isBox2 = true;\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;\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;\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\treturn this.clampPoint( point, _vector$4 ).distanceTo( point );\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\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\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\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\n\t\tthis.light = light;\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'SpotLightHelper';\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.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t// update the local matrix based on the parent and light target transforms\n\t\tif ( this.parent ) {\n\n\t\t\tthis.parent.updateWorldMatrix( true );\n\n\t\t\tthis.matrix\n\t\t\t\t.copy( this.parent.matrixWorld )\n\t\t\t\t.invert()\n\t\t\t\t.multiply( this.light.matrixWorld );\n\n\t\t} else {\n\n\t\t\tthis.matrix.copy( this.light.matrixWorld );\n\n\t\t}\n\n\t\tthis.matrixWorld.copy( this.light.matrixWorld );\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.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\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\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\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\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\tthis.light.updateWorldMatrix( true, false );\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\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'HemisphereLightHelper';\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\tthis.light.updateWorldMatrix( true, false );\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\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, sectors = 16, rings = 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 sectors\n\n\t\tif ( sectors > 1 ) {\n\n\t\t\tfor ( let i = 0; i < sectors; i ++ ) {\n\n\t\t\t\tconst v = ( i / sectors ) * ( Math.PI * 2 );\n\n\t\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( x, 0, z );\n\n\t\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// create the rings\n\n\t\tfor ( let i = 0; i < rings; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / rings * 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\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\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\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'DirectionalLightHelper';\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\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\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// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\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\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\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\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\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, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\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 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\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\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, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 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, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\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\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\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\tdispose() {\n\n\t\tthis.line.geometry.dispose();\n\t\tthis.line.material.dispose();\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\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 ) {\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\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\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget { // @deprecated, r162\n\n\tconstructor( width = 1, height = 1, count = 1, options = {} ) {\n\n\t\tconsole.warn( 'THREE.WebGLMultipleRenderTargets has been deprecated and will be removed in r172. Use THREE.WebGLRenderTarget and set the \"count\" parameter to enable MRT.' );\n\n\t\tsuper( width, height, { ...options, count } );\n\n\t\tthis.isWebGLMultipleRenderTargets = true;\n\n\t}\n\n\tget texture() {\n\n\t\treturn this.textures;\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, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DisplayP3ColorSpace, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearDisplayP3ColorSpace, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix2, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, P3Primaries, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, 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, RGBDepthPacking, RGBFormat, RGBIntegerFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGDepthPacking, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, Rec709Primaries, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TextureUtils, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WebGPUCoordinateSystem, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, createCanvasElement };\n"], - "mappings": "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", + "mappings": "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", "names": ["tmp", "sign", "data", "tmp2", "indices", "intersects", "intersect", "width", "height", "depth", "fov", "aspect", "renderer", "scene", "alpha", "attributes", "precision", "x", "fill", "self", "_frustum", "drawBuffers", "scissor", "viewport", "_canvas", "texture", "i", "cameraL", "cameraR", "cameras", "cameraXR", "info", "chunkOffset", "_projScreenMatrix", "_vector3", "stencil", "drawCount", "materials", "currentRenderList", "parameters", "framebuffer", "l", "vertex", "detail", "radius", "azimuth", "px", "py", "bs", "contour", "p", "q", "json", "now", "shapes", "tmpPath", "tmpShape"] } diff --git a/site/interface/site/node_modules/.vite/deps/chunk-LBH6F3OL.js b/site/interface/site/node_modules/.vite/deps/chunk-LBH6F3OL.js deleted file mode 100644 index 785fc46..0000000 --- a/site/interface/site/node_modules/.vite/deps/chunk-LBH6F3OL.js +++ /dev/null @@ -1,3334 +0,0 @@ -import { - AnimationClip, - Bone, - Box3, - BufferAttribute, - BufferGeometry, - ClampToEdgeWrapping, - Color, - ColorManagement, - DirectionalLight, - DoubleSide, - FileLoader, - Float32BufferAttribute, - FrontSide, - Group, - ImageBitmapLoader, - InstancedBufferAttribute, - InstancedMesh, - InterleavedBuffer, - InterleavedBufferAttribute, - Interpolant, - InterpolateDiscrete, - InterpolateLinear, - Line, - LineBasicMaterial, - LineLoop, - LineSegments, - LinearFilter, - LinearMipmapLinearFilter, - LinearMipmapNearestFilter, - LinearSRGBColorSpace, - Loader, - LoaderUtils, - Material, - MathUtils, - Matrix4, - Mesh, - MeshBasicMaterial, - MeshPhysicalMaterial, - MeshStandardMaterial, - MirroredRepeatWrapping, - NearestFilter, - NearestMipmapLinearFilter, - NearestMipmapNearestFilter, - NumberKeyframeTrack, - Object3D, - OrthographicCamera, - PerspectiveCamera, - PointLight, - Points, - PointsMaterial, - PropertyBinding, - Quaternion, - QuaternionKeyframeTrack, - RepeatWrapping, - SRGBColorSpace, - Skeleton, - SkinnedMesh, - Sphere, - SpotLight, - Texture, - TextureLoader, - TriangleFanDrawMode, - TriangleStripDrawMode, - TrianglesDrawMode, - Vector2, - Vector3, - VectorKeyframeTrack, - __export -} from "./chunk-33KXLYU5.js"; - -// node_modules/three/examples/jsm/utils/BufferGeometryUtils.js -var BufferGeometryUtils_exports = {}; -__export(BufferGeometryUtils_exports, { - computeMikkTSpaceTangents: () => computeMikkTSpaceTangents, - computeMorphedAttributes: () => computeMorphedAttributes, - deepCloneAttribute: () => deepCloneAttribute, - deinterleaveAttribute: () => deinterleaveAttribute, - deinterleaveGeometry: () => deinterleaveGeometry, - estimateBytesUsed: () => estimateBytesUsed, - interleaveAttributes: () => interleaveAttributes, - mergeAttributes: () => mergeAttributes, - mergeGeometries: () => mergeGeometries, - mergeGroups: () => mergeGroups, - mergeVertices: () => mergeVertices, - toCreasedNormals: () => toCreasedNormals, - toTrianglesDrawMode: () => toTrianglesDrawMode -}); -function computeMikkTSpaceTangents(geometry, MikkTSpace, negateSign = true) { - if (!MikkTSpace || !MikkTSpace.isReady) { - throw new Error("BufferGeometryUtils: Initialized MikkTSpace library required."); - } - if (!geometry.hasAttribute("position") || !geometry.hasAttribute("normal") || !geometry.hasAttribute("uv")) { - throw new Error('BufferGeometryUtils: Tangents require "position", "normal", and "uv" attributes.'); - } - function getAttributeArray(attribute) { - if (attribute.normalized || attribute.isInterleavedBufferAttribute) { - const dstArray = new Float32Array(attribute.count * attribute.itemSize); - for (let i = 0, j = 0; i < attribute.count; i++) { - dstArray[j++] = attribute.getX(i); - dstArray[j++] = attribute.getY(i); - if (attribute.itemSize > 2) { - dstArray[j++] = attribute.getZ(i); - } - } - return dstArray; - } - if (attribute.array instanceof Float32Array) { - return attribute.array; - } - return new Float32Array(attribute.array); - } - const _geometry = geometry.index ? geometry.toNonIndexed() : geometry; - const tangents = MikkTSpace.generateTangents( - getAttributeArray(_geometry.attributes.position), - getAttributeArray(_geometry.attributes.normal), - getAttributeArray(_geometry.attributes.uv) - ); - if (negateSign) { - for (let i = 3; i < tangents.length; i += 4) { - tangents[i] *= -1; - } - } - _geometry.setAttribute("tangent", new BufferAttribute(tangents, 4)); - if (geometry !== _geometry) { - geometry.copy(_geometry); - } - return geometry; -} -function mergeGeometries(geometries, useGroups = false) { - const isIndexed = geometries[0].index !== null; - const attributesUsed = new Set(Object.keys(geometries[0].attributes)); - const morphAttributesUsed = new Set(Object.keys(geometries[0].morphAttributes)); - const attributes = {}; - const morphAttributes = {}; - const morphTargetsRelative = geometries[0].morphTargetsRelative; - const mergedGeometry = new BufferGeometry(); - let offset = 0; - for (let i = 0; i < geometries.length; ++i) { - const geometry = geometries[i]; - let attributesCount = 0; - if (isIndexed !== (geometry.index !== null)) { - console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + i + ". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."); - return null; - } - for (const name in geometry.attributes) { - if (!attributesUsed.has(name)) { - console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + i + '. All geometries must have compatible attributes; make sure "' + name + '" attribute exists among all geometries, or in none of them.'); - return null; - } - if (attributes[name] === void 0) attributes[name] = []; - attributes[name].push(geometry.attributes[name]); - attributesCount++; - } - if (attributesCount !== attributesUsed.size) { - console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + i + ". Make sure all geometries have the same number of attributes."); - return null; - } - if (morphTargetsRelative !== geometry.morphTargetsRelative) { - console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + i + ". .morphTargetsRelative must be consistent throughout all geometries."); - return null; - } - for (const name in geometry.morphAttributes) { - if (!morphAttributesUsed.has(name)) { - console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + i + ". .morphAttributes must be consistent throughout all geometries."); - return null; - } - if (morphAttributes[name] === void 0) morphAttributes[name] = []; - morphAttributes[name].push(geometry.morphAttributes[name]); - } - if (useGroups) { - let count; - if (isIndexed) { - count = geometry.index.count; - } else if (geometry.attributes.position !== void 0) { - count = geometry.attributes.position.count; - } else { - console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + i + ". The geometry must have either an index or a position attribute"); - return null; - } - mergedGeometry.addGroup(offset, count, i); - offset += count; - } - } - if (isIndexed) { - let indexOffset = 0; - const mergedIndex = []; - for (let i = 0; i < geometries.length; ++i) { - const index = geometries[i].index; - for (let j = 0; j < index.count; ++j) { - mergedIndex.push(index.getX(j) + indexOffset); - } - indexOffset += geometries[i].attributes.position.count; - } - mergedGeometry.setIndex(mergedIndex); - } - for (const name in attributes) { - const mergedAttribute = mergeAttributes(attributes[name]); - if (!mergedAttribute) { - console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " + name + " attribute."); - return null; - } - mergedGeometry.setAttribute(name, mergedAttribute); - } - for (const name in morphAttributes) { - const numMorphTargets = morphAttributes[name][0].length; - if (numMorphTargets === 0) break; - mergedGeometry.morphAttributes = mergedGeometry.morphAttributes || {}; - mergedGeometry.morphAttributes[name] = []; - for (let i = 0; i < numMorphTargets; ++i) { - const morphAttributesToMerge = []; - for (let j = 0; j < morphAttributes[name].length; ++j) { - morphAttributesToMerge.push(morphAttributes[name][j][i]); - } - const mergedMorphAttribute = mergeAttributes(morphAttributesToMerge); - if (!mergedMorphAttribute) { - console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " + name + " morphAttribute."); - return null; - } - mergedGeometry.morphAttributes[name].push(mergedMorphAttribute); - } - } - return mergedGeometry; -} -function mergeAttributes(attributes) { - let TypedArray; - let itemSize; - let normalized; - let gpuType = -1; - let arrayLength = 0; - for (let i = 0; i < attributes.length; ++i) { - const attribute = attributes[i]; - if (TypedArray === void 0) TypedArray = attribute.array.constructor; - if (TypedArray !== attribute.array.constructor) { - console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."); - return null; - } - if (itemSize === void 0) itemSize = attribute.itemSize; - if (itemSize !== attribute.itemSize) { - console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."); - return null; - } - if (normalized === void 0) normalized = attribute.normalized; - if (normalized !== attribute.normalized) { - console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."); - return null; - } - if (gpuType === -1) gpuType = attribute.gpuType; - if (gpuType !== attribute.gpuType) { - console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."); - return null; - } - arrayLength += attribute.count * itemSize; - } - const array = new TypedArray(arrayLength); - const result = new BufferAttribute(array, itemSize, normalized); - let offset = 0; - for (let i = 0; i < attributes.length; ++i) { - const attribute = attributes[i]; - if (attribute.isInterleavedBufferAttribute) { - const tupleOffset = offset / itemSize; - for (let j = 0, l = attribute.count; j < l; j++) { - for (let c = 0; c < itemSize; c++) { - const value = attribute.getComponent(j, c); - result.setComponent(j + tupleOffset, c, value); - } - } - } else { - array.set(attribute.array, offset); - } - offset += attribute.count * itemSize; - } - if (gpuType !== void 0) { - result.gpuType = gpuType; - } - return result; -} -function deepCloneAttribute(attribute) { - if (attribute.isInstancedInterleavedBufferAttribute || attribute.isInterleavedBufferAttribute) { - return deinterleaveAttribute(attribute); - } - if (attribute.isInstancedBufferAttribute) { - return new InstancedBufferAttribute().copy(attribute); - } - return new BufferAttribute().copy(attribute); -} -function interleaveAttributes(attributes) { - let TypedArray; - let arrayLength = 0; - let stride = 0; - for (let i = 0, l = attributes.length; i < l; ++i) { - const attribute = attributes[i]; - if (TypedArray === void 0) TypedArray = attribute.array.constructor; - if (TypedArray !== attribute.array.constructor) { - console.error("AttributeBuffers of different types cannot be interleaved"); - return null; - } - arrayLength += attribute.array.length; - stride += attribute.itemSize; - } - const interleavedBuffer = new InterleavedBuffer(new TypedArray(arrayLength), stride); - let offset = 0; - const res = []; - const getters = ["getX", "getY", "getZ", "getW"]; - const setters = ["setX", "setY", "setZ", "setW"]; - for (let j = 0, l = attributes.length; j < l; j++) { - const attribute = attributes[j]; - const itemSize = attribute.itemSize; - const count = attribute.count; - const iba = new InterleavedBufferAttribute(interleavedBuffer, itemSize, offset, attribute.normalized); - res.push(iba); - offset += itemSize; - for (let c = 0; c < count; c++) { - for (let k = 0; k < itemSize; k++) { - iba[setters[k]](c, attribute[getters[k]](c)); - } - } - } - return res; -} -function deinterleaveAttribute(attribute) { - const cons = attribute.data.array.constructor; - const count = attribute.count; - const itemSize = attribute.itemSize; - const normalized = attribute.normalized; - const array = new cons(count * itemSize); - let newAttribute; - if (attribute.isInstancedInterleavedBufferAttribute) { - newAttribute = new InstancedBufferAttribute(array, itemSize, normalized, attribute.meshPerAttribute); - } else { - newAttribute = new BufferAttribute(array, itemSize, normalized); - } - for (let i = 0; i < count; i++) { - newAttribute.setX(i, attribute.getX(i)); - if (itemSize >= 2) { - newAttribute.setY(i, attribute.getY(i)); - } - if (itemSize >= 3) { - newAttribute.setZ(i, attribute.getZ(i)); - } - if (itemSize >= 4) { - newAttribute.setW(i, attribute.getW(i)); - } - } - return newAttribute; -} -function deinterleaveGeometry(geometry) { - const attributes = geometry.attributes; - const morphTargets = geometry.morphTargets; - const attrMap = /* @__PURE__ */ new Map(); - for (const key in attributes) { - const attr = attributes[key]; - if (attr.isInterleavedBufferAttribute) { - if (!attrMap.has(attr)) { - attrMap.set(attr, deinterleaveAttribute(attr)); - } - attributes[key] = attrMap.get(attr); - } - } - for (const key in morphTargets) { - const attr = morphTargets[key]; - if (attr.isInterleavedBufferAttribute) { - if (!attrMap.has(attr)) { - attrMap.set(attr, deinterleaveAttribute(attr)); - } - morphTargets[key] = attrMap.get(attr); - } - } -} -function estimateBytesUsed(geometry) { - let mem = 0; - for (const name in geometry.attributes) { - const attr = geometry.getAttribute(name); - mem += attr.count * attr.itemSize * attr.array.BYTES_PER_ELEMENT; - } - const indices = geometry.getIndex(); - mem += indices ? indices.count * indices.itemSize * indices.array.BYTES_PER_ELEMENT : 0; - return mem; -} -function mergeVertices(geometry, tolerance = 1e-4) { - tolerance = Math.max(tolerance, Number.EPSILON); - const hashToIndex = {}; - const indices = geometry.getIndex(); - const positions = geometry.getAttribute("position"); - const vertexCount = indices ? indices.count : positions.count; - let nextIndex = 0; - const attributeNames = Object.keys(geometry.attributes); - const tmpAttributes = {}; - const tmpMorphAttributes = {}; - const newIndices = []; - const getters = ["getX", "getY", "getZ", "getW"]; - const setters = ["setX", "setY", "setZ", "setW"]; - for (let i = 0, l = attributeNames.length; i < l; i++) { - const name = attributeNames[i]; - const attr = geometry.attributes[name]; - tmpAttributes[name] = new attr.constructor( - new attr.array.constructor(attr.count * attr.itemSize), - attr.itemSize, - attr.normalized - ); - const morphAttributes = geometry.morphAttributes[name]; - if (morphAttributes) { - if (!tmpMorphAttributes[name]) tmpMorphAttributes[name] = []; - morphAttributes.forEach((morphAttr, i2) => { - const array = new morphAttr.array.constructor(morphAttr.count * morphAttr.itemSize); - tmpMorphAttributes[name][i2] = new morphAttr.constructor(array, morphAttr.itemSize, morphAttr.normalized); - }); - } - } - const halfTolerance = tolerance * 0.5; - const exponent = Math.log10(1 / tolerance); - const hashMultiplier = Math.pow(10, exponent); - const hashAdditive = halfTolerance * hashMultiplier; - for (let i = 0; i < vertexCount; i++) { - const index = indices ? indices.getX(i) : i; - let hash = ""; - for (let j = 0, l = attributeNames.length; j < l; j++) { - const name = attributeNames[j]; - const attribute = geometry.getAttribute(name); - const itemSize = attribute.itemSize; - for (let k = 0; k < itemSize; k++) { - hash += `${~~(attribute[getters[k]](index) * hashMultiplier + hashAdditive)},`; - } - } - if (hash in hashToIndex) { - newIndices.push(hashToIndex[hash]); - } else { - for (let j = 0, l = attributeNames.length; j < l; j++) { - const name = attributeNames[j]; - const attribute = geometry.getAttribute(name); - const morphAttributes = geometry.morphAttributes[name]; - const itemSize = attribute.itemSize; - const newArray = tmpAttributes[name]; - const newMorphArrays = tmpMorphAttributes[name]; - for (let k = 0; k < itemSize; k++) { - const getterFunc = getters[k]; - const setterFunc = setters[k]; - newArray[setterFunc](nextIndex, attribute[getterFunc](index)); - if (morphAttributes) { - for (let m = 0, ml = morphAttributes.length; m < ml; m++) { - newMorphArrays[m][setterFunc](nextIndex, morphAttributes[m][getterFunc](index)); - } - } - } - } - hashToIndex[hash] = nextIndex; - newIndices.push(nextIndex); - nextIndex++; - } - } - const result = geometry.clone(); - for (const name in geometry.attributes) { - const tmpAttribute = tmpAttributes[name]; - result.setAttribute(name, new tmpAttribute.constructor( - tmpAttribute.array.slice(0, nextIndex * tmpAttribute.itemSize), - tmpAttribute.itemSize, - tmpAttribute.normalized - )); - if (!(name in tmpMorphAttributes)) continue; - for (let j = 0; j < tmpMorphAttributes[name].length; j++) { - const tmpMorphAttribute = tmpMorphAttributes[name][j]; - result.morphAttributes[name][j] = new tmpMorphAttribute.constructor( - tmpMorphAttribute.array.slice(0, nextIndex * tmpMorphAttribute.itemSize), - tmpMorphAttribute.itemSize, - tmpMorphAttribute.normalized - ); - } - } - result.setIndex(newIndices); - return result; -} -function toTrianglesDrawMode(geometry, drawMode) { - if (drawMode === TrianglesDrawMode) { - console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."); - return geometry; - } - if (drawMode === TriangleFanDrawMode || drawMode === TriangleStripDrawMode) { - let index = geometry.getIndex(); - if (index === null) { - const indices = []; - const position = geometry.getAttribute("position"); - if (position !== void 0) { - for (let i = 0; i < position.count; i++) { - indices.push(i); - } - geometry.setIndex(indices); - index = geometry.getIndex(); - } else { - console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."); - return geometry; - } - } - const numberOfTriangles = index.count - 2; - const newIndices = []; - if (drawMode === TriangleFanDrawMode) { - for (let i = 1; i <= numberOfTriangles; i++) { - newIndices.push(index.getX(0)); - newIndices.push(index.getX(i)); - newIndices.push(index.getX(i + 1)); - } - } else { - for (let i = 0; i < numberOfTriangles; i++) { - if (i % 2 === 0) { - newIndices.push(index.getX(i)); - newIndices.push(index.getX(i + 1)); - newIndices.push(index.getX(i + 2)); - } else { - newIndices.push(index.getX(i + 2)); - newIndices.push(index.getX(i + 1)); - newIndices.push(index.getX(i)); - } - } - } - if (newIndices.length / 3 !== numberOfTriangles) { - console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles."); - } - const newGeometry = geometry.clone(); - newGeometry.setIndex(newIndices); - newGeometry.clearGroups(); - return newGeometry; - } else { - console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:", drawMode); - return geometry; - } -} -function computeMorphedAttributes(object) { - const _vA = new Vector3(); - const _vB = new Vector3(); - const _vC = new Vector3(); - const _tempA = new Vector3(); - const _tempB = new Vector3(); - const _tempC = new Vector3(); - const _morphA = new Vector3(); - const _morphB = new Vector3(); - const _morphC = new Vector3(); - function _calculateMorphedAttributeData(object2, attribute, morphAttribute, morphTargetsRelative2, a2, b2, c2, modifiedAttributeArray) { - _vA.fromBufferAttribute(attribute, a2); - _vB.fromBufferAttribute(attribute, b2); - _vC.fromBufferAttribute(attribute, c2); - const morphInfluences = object2.morphTargetInfluences; - if (morphAttribute && morphInfluences) { - _morphA.set(0, 0, 0); - _morphB.set(0, 0, 0); - _morphC.set(0, 0, 0); - for (let i2 = 0, il2 = morphAttribute.length; i2 < il2; i2++) { - const influence = morphInfluences[i2]; - const morph = morphAttribute[i2]; - if (influence === 0) continue; - _tempA.fromBufferAttribute(morph, a2); - _tempB.fromBufferAttribute(morph, b2); - _tempC.fromBufferAttribute(morph, c2); - if (morphTargetsRelative2) { - _morphA.addScaledVector(_tempA, influence); - _morphB.addScaledVector(_tempB, influence); - _morphC.addScaledVector(_tempC, influence); - } else { - _morphA.addScaledVector(_tempA.sub(_vA), influence); - _morphB.addScaledVector(_tempB.sub(_vB), influence); - _morphC.addScaledVector(_tempC.sub(_vC), influence); - } - } - _vA.add(_morphA); - _vB.add(_morphB); - _vC.add(_morphC); - } - if (object2.isSkinnedMesh) { - object2.applyBoneTransform(a2, _vA); - object2.applyBoneTransform(b2, _vB); - object2.applyBoneTransform(c2, _vC); - } - modifiedAttributeArray[a2 * 3 + 0] = _vA.x; - modifiedAttributeArray[a2 * 3 + 1] = _vA.y; - modifiedAttributeArray[a2 * 3 + 2] = _vA.z; - modifiedAttributeArray[b2 * 3 + 0] = _vB.x; - modifiedAttributeArray[b2 * 3 + 1] = _vB.y; - modifiedAttributeArray[b2 * 3 + 2] = _vB.z; - modifiedAttributeArray[c2 * 3 + 0] = _vC.x; - modifiedAttributeArray[c2 * 3 + 1] = _vC.y; - modifiedAttributeArray[c2 * 3 + 2] = _vC.z; - } - const geometry = object.geometry; - const material = object.material; - let a, b, c; - const index = geometry.index; - const positionAttribute = geometry.attributes.position; - const morphPosition = geometry.morphAttributes.position; - const morphTargetsRelative = geometry.morphTargetsRelative; - const normalAttribute = geometry.attributes.normal; - const morphNormal = geometry.morphAttributes.position; - const groups = geometry.groups; - const drawRange = geometry.drawRange; - let i, j, il, jl; - let group; - let start, end; - const modifiedPosition = new Float32Array(positionAttribute.count * positionAttribute.itemSize); - const modifiedNormal = new Float32Array(normalAttribute.count * normalAttribute.itemSize); - if (index !== null) { - if (Array.isArray(material)) { - for (i = 0, il = groups.length; i < il; i++) { - group = groups[i]; - start = Math.max(group.start, drawRange.start); - end = Math.min(group.start + group.count, drawRange.start + drawRange.count); - for (j = start, jl = end; j < jl; j += 3) { - a = index.getX(j); - b = index.getX(j + 1); - c = index.getX(j + 2); - _calculateMorphedAttributeData( - object, - positionAttribute, - morphPosition, - morphTargetsRelative, - a, - b, - c, - modifiedPosition - ); - _calculateMorphedAttributeData( - object, - normalAttribute, - morphNormal, - morphTargetsRelative, - a, - b, - c, - modifiedNormal - ); - } - } - } else { - start = Math.max(0, drawRange.start); - end = Math.min(index.count, drawRange.start + drawRange.count); - for (i = start, il = end; i < il; i += 3) { - a = index.getX(i); - b = index.getX(i + 1); - c = index.getX(i + 2); - _calculateMorphedAttributeData( - object, - positionAttribute, - morphPosition, - morphTargetsRelative, - a, - b, - c, - modifiedPosition - ); - _calculateMorphedAttributeData( - object, - normalAttribute, - morphNormal, - morphTargetsRelative, - a, - b, - c, - modifiedNormal - ); - } - } - } else { - if (Array.isArray(material)) { - for (i = 0, il = groups.length; i < il; i++) { - group = groups[i]; - start = Math.max(group.start, drawRange.start); - end = Math.min(group.start + group.count, drawRange.start + drawRange.count); - for (j = start, jl = end; j < jl; j += 3) { - a = j; - b = j + 1; - c = j + 2; - _calculateMorphedAttributeData( - object, - positionAttribute, - morphPosition, - morphTargetsRelative, - a, - b, - c, - modifiedPosition - ); - _calculateMorphedAttributeData( - object, - normalAttribute, - morphNormal, - morphTargetsRelative, - a, - b, - c, - modifiedNormal - ); - } - } - } else { - start = Math.max(0, drawRange.start); - end = Math.min(positionAttribute.count, drawRange.start + drawRange.count); - for (i = start, il = end; i < il; i += 3) { - a = i; - b = i + 1; - c = i + 2; - _calculateMorphedAttributeData( - object, - positionAttribute, - morphPosition, - morphTargetsRelative, - a, - b, - c, - modifiedPosition - ); - _calculateMorphedAttributeData( - object, - normalAttribute, - morphNormal, - morphTargetsRelative, - a, - b, - c, - modifiedNormal - ); - } - } - } - const morphedPositionAttribute = new Float32BufferAttribute(modifiedPosition, 3); - const morphedNormalAttribute = new Float32BufferAttribute(modifiedNormal, 3); - return { - positionAttribute, - normalAttribute, - morphedPositionAttribute, - morphedNormalAttribute - }; -} -function mergeGroups(geometry) { - if (geometry.groups.length === 0) { - console.warn("THREE.BufferGeometryUtils.mergeGroups(): No groups are defined. Nothing to merge."); - return geometry; - } - let groups = geometry.groups; - groups = groups.sort((a, b) => { - if (a.materialIndex !== b.materialIndex) return a.materialIndex - b.materialIndex; - return a.start - b.start; - }); - if (geometry.getIndex() === null) { - const positionAttribute = geometry.getAttribute("position"); - const indices = []; - for (let i = 0; i < positionAttribute.count; i += 3) { - indices.push(i, i + 1, i + 2); - } - geometry.setIndex(indices); - } - const index = geometry.getIndex(); - const newIndices = []; - for (let i = 0; i < groups.length; i++) { - const group = groups[i]; - const groupStart = group.start; - const groupLength = groupStart + group.count; - for (let j = groupStart; j < groupLength; j++) { - newIndices.push(index.getX(j)); - } - } - geometry.dispose(); - geometry.setIndex(newIndices); - let start = 0; - for (let i = 0; i < groups.length; i++) { - const group = groups[i]; - group.start = start; - start += group.count; - } - let currentGroup = groups[0]; - geometry.groups = [currentGroup]; - for (let i = 1; i < groups.length; i++) { - const group = groups[i]; - if (currentGroup.materialIndex === group.materialIndex) { - currentGroup.count += group.count; - } else { - currentGroup = group; - geometry.groups.push(currentGroup); - } - } - return geometry; -} -function toCreasedNormals(geometry, creaseAngle = Math.PI / 3) { - const creaseDot = Math.cos(creaseAngle); - const hashMultiplier = (1 + 1e-10) * 100; - const verts = [new Vector3(), new Vector3(), new Vector3()]; - const tempVec1 = new Vector3(); - const tempVec2 = new Vector3(); - const tempNorm = new Vector3(); - const tempNorm2 = new Vector3(); - function hashVertex(v) { - const x = ~~(v.x * hashMultiplier); - const y = ~~(v.y * hashMultiplier); - const z = ~~(v.z * hashMultiplier); - return `${x},${y},${z}`; - } - const resultGeometry = geometry.index ? geometry.toNonIndexed() : geometry; - const posAttr = resultGeometry.attributes.position; - const vertexMap = {}; - for (let i = 0, l = posAttr.count / 3; i < l; i++) { - const i3 = 3 * i; - const a = verts[0].fromBufferAttribute(posAttr, i3 + 0); - const b = verts[1].fromBufferAttribute(posAttr, i3 + 1); - const c = verts[2].fromBufferAttribute(posAttr, i3 + 2); - tempVec1.subVectors(c, b); - tempVec2.subVectors(a, b); - const normal = new Vector3().crossVectors(tempVec1, tempVec2).normalize(); - for (let n = 0; n < 3; n++) { - const vert = verts[n]; - const hash = hashVertex(vert); - if (!(hash in vertexMap)) { - vertexMap[hash] = []; - } - vertexMap[hash].push(normal); - } - } - const normalArray = new Float32Array(posAttr.count * 3); - const normAttr = new BufferAttribute(normalArray, 3, false); - for (let i = 0, l = posAttr.count / 3; i < l; i++) { - const i3 = 3 * i; - const a = verts[0].fromBufferAttribute(posAttr, i3 + 0); - const b = verts[1].fromBufferAttribute(posAttr, i3 + 1); - const c = verts[2].fromBufferAttribute(posAttr, i3 + 2); - tempVec1.subVectors(c, b); - tempVec2.subVectors(a, b); - tempNorm.crossVectors(tempVec1, tempVec2).normalize(); - for (let n = 0; n < 3; n++) { - const vert = verts[n]; - const hash = hashVertex(vert); - const otherNormals = vertexMap[hash]; - tempNorm2.set(0, 0, 0); - for (let k = 0, lk = otherNormals.length; k < lk; k++) { - const otherNorm = otherNormals[k]; - if (tempNorm.dot(otherNorm) > creaseDot) { - tempNorm2.add(otherNorm); - } - } - tempNorm2.normalize(); - normAttr.setXYZ(i3 + n, tempNorm2.x, tempNorm2.y, tempNorm2.z); - } - } - resultGeometry.setAttribute("normal", normAttr); - return resultGeometry; -} - -// node_modules/three/examples/jsm/loaders/GLTFLoader.js -var GLTFLoader = class extends Loader { - constructor(manager) { - super(manager); - this.dracoLoader = null; - this.ktx2Loader = null; - this.meshoptDecoder = null; - this.pluginCallbacks = []; - this.register(function(parser) { - return new GLTFMaterialsClearcoatExtension(parser); - }); - this.register(function(parser) { - return new GLTFMaterialsDispersionExtension(parser); - }); - this.register(function(parser) { - return new GLTFTextureBasisUExtension(parser); - }); - this.register(function(parser) { - return new GLTFTextureWebPExtension(parser); - }); - this.register(function(parser) { - return new GLTFTextureAVIFExtension(parser); - }); - this.register(function(parser) { - return new GLTFMaterialsSheenExtension(parser); - }); - this.register(function(parser) { - return new GLTFMaterialsTransmissionExtension(parser); - }); - this.register(function(parser) { - return new GLTFMaterialsVolumeExtension(parser); - }); - this.register(function(parser) { - return new GLTFMaterialsIorExtension(parser); - }); - this.register(function(parser) { - return new GLTFMaterialsEmissiveStrengthExtension(parser); - }); - this.register(function(parser) { - return new GLTFMaterialsSpecularExtension(parser); - }); - this.register(function(parser) { - return new GLTFMaterialsIridescenceExtension(parser); - }); - this.register(function(parser) { - return new GLTFMaterialsAnisotropyExtension(parser); - }); - this.register(function(parser) { - return new GLTFMaterialsBumpExtension(parser); - }); - this.register(function(parser) { - return new GLTFLightsExtension(parser); - }); - this.register(function(parser) { - return new GLTFMeshoptCompression(parser); - }); - this.register(function(parser) { - return new GLTFMeshGpuInstancing(parser); - }); - } - load(url, onLoad, onProgress, onError) { - const scope = this; - let resourcePath; - if (this.resourcePath !== "") { - resourcePath = this.resourcePath; - } else if (this.path !== "") { - const relativeUrl = LoaderUtils.extractUrlBase(url); - resourcePath = LoaderUtils.resolveURL(relativeUrl, this.path); - } else { - resourcePath = LoaderUtils.extractUrlBase(url); - } - this.manager.itemStart(url); - const _onError = function(e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - scope.manager.itemEnd(url); - }; - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(this.requestHeader); - loader.setWithCredentials(this.withCredentials); - loader.load(url, function(data) { - try { - scope.parse(data, resourcePath, function(gltf) { - onLoad(gltf); - scope.manager.itemEnd(url); - }, _onError); - } catch (e) { - _onError(e); - } - }, onProgress, _onError); - } - setDRACOLoader(dracoLoader) { - this.dracoLoader = dracoLoader; - return this; - } - setDDSLoader() { - throw new Error( - 'THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".' - ); - } - setKTX2Loader(ktx2Loader) { - this.ktx2Loader = ktx2Loader; - return this; - } - setMeshoptDecoder(meshoptDecoder) { - this.meshoptDecoder = meshoptDecoder; - return this; - } - register(callback) { - if (this.pluginCallbacks.indexOf(callback) === -1) { - this.pluginCallbacks.push(callback); - } - return this; - } - unregister(callback) { - if (this.pluginCallbacks.indexOf(callback) !== -1) { - this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1); - } - return this; - } - parse(data, path, onLoad, onError) { - let json; - const extensions = {}; - const plugins = {}; - const textDecoder = new TextDecoder(); - if (typeof data === "string") { - json = JSON.parse(data); - } else if (data instanceof ArrayBuffer) { - const magic = textDecoder.decode(new Uint8Array(data, 0, 4)); - if (magic === BINARY_EXTENSION_HEADER_MAGIC) { - try { - extensions[EXTENSIONS.KHR_BINARY_GLTF] = new GLTFBinaryExtension(data); - } catch (error) { - if (onError) onError(error); - return; - } - json = JSON.parse(extensions[EXTENSIONS.KHR_BINARY_GLTF].content); - } else { - json = JSON.parse(textDecoder.decode(data)); - } - } else { - json = data; - } - if (json.asset === void 0 || json.asset.version[0] < 2) { - if (onError) onError(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")); - return; - } - const parser = new GLTFParser(json, { - path: path || this.resourcePath || "", - crossOrigin: this.crossOrigin, - requestHeader: this.requestHeader, - manager: this.manager, - ktx2Loader: this.ktx2Loader, - meshoptDecoder: this.meshoptDecoder - }); - parser.fileLoader.setRequestHeader(this.requestHeader); - for (let i = 0; i < this.pluginCallbacks.length; i++) { - const plugin = this.pluginCallbacks[i](parser); - if (!plugin.name) console.error("THREE.GLTFLoader: Invalid plugin found: missing name"); - plugins[plugin.name] = plugin; - extensions[plugin.name] = true; - } - if (json.extensionsUsed) { - for (let i = 0; i < json.extensionsUsed.length; ++i) { - const extensionName = json.extensionsUsed[i]; - const extensionsRequired = json.extensionsRequired || []; - switch (extensionName) { - case EXTENSIONS.KHR_MATERIALS_UNLIT: - extensions[extensionName] = new GLTFMaterialsUnlitExtension(); - break; - case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION: - extensions[extensionName] = new GLTFDracoMeshCompressionExtension(json, this.dracoLoader); - break; - case EXTENSIONS.KHR_TEXTURE_TRANSFORM: - extensions[extensionName] = new GLTFTextureTransformExtension(); - break; - case EXTENSIONS.KHR_MESH_QUANTIZATION: - extensions[extensionName] = new GLTFMeshQuantizationExtension(); - break; - default: - if (extensionsRequired.indexOf(extensionName) >= 0 && plugins[extensionName] === void 0) { - console.warn('THREE.GLTFLoader: Unknown extension "' + extensionName + '".'); - } - } - } - } - parser.setExtensions(extensions); - parser.setPlugins(plugins); - parser.parse(onLoad, onError); - } - parseAsync(data, path) { - const scope = this; - return new Promise(function(resolve, reject) { - scope.parse(data, path, resolve, reject); - }); - } -}; -function GLTFRegistry() { - let objects = {}; - return { - get: function(key) { - return objects[key]; - }, - add: function(key, object) { - objects[key] = object; - }, - remove: function(key) { - delete objects[key]; - }, - removeAll: function() { - objects = {}; - } - }; -} -var EXTENSIONS = { - KHR_BINARY_GLTF: "KHR_binary_glTF", - KHR_DRACO_MESH_COMPRESSION: "KHR_draco_mesh_compression", - KHR_LIGHTS_PUNCTUAL: "KHR_lights_punctual", - KHR_MATERIALS_CLEARCOAT: "KHR_materials_clearcoat", - KHR_MATERIALS_DISPERSION: "KHR_materials_dispersion", - KHR_MATERIALS_IOR: "KHR_materials_ior", - KHR_MATERIALS_SHEEN: "KHR_materials_sheen", - KHR_MATERIALS_SPECULAR: "KHR_materials_specular", - KHR_MATERIALS_TRANSMISSION: "KHR_materials_transmission", - KHR_MATERIALS_IRIDESCENCE: "KHR_materials_iridescence", - KHR_MATERIALS_ANISOTROPY: "KHR_materials_anisotropy", - KHR_MATERIALS_UNLIT: "KHR_materials_unlit", - KHR_MATERIALS_VOLUME: "KHR_materials_volume", - KHR_TEXTURE_BASISU: "KHR_texture_basisu", - KHR_TEXTURE_TRANSFORM: "KHR_texture_transform", - KHR_MESH_QUANTIZATION: "KHR_mesh_quantization", - KHR_MATERIALS_EMISSIVE_STRENGTH: "KHR_materials_emissive_strength", - EXT_MATERIALS_BUMP: "EXT_materials_bump", - EXT_TEXTURE_WEBP: "EXT_texture_webp", - EXT_TEXTURE_AVIF: "EXT_texture_avif", - EXT_MESHOPT_COMPRESSION: "EXT_meshopt_compression", - EXT_MESH_GPU_INSTANCING: "EXT_mesh_gpu_instancing" -}; -var GLTFLightsExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL; - this.cache = { refs: {}, uses: {} }; - } - _markDefs() { - const parser = this.parser; - const nodeDefs = this.parser.json.nodes || []; - for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) { - const nodeDef = nodeDefs[nodeIndex]; - if (nodeDef.extensions && nodeDef.extensions[this.name] && nodeDef.extensions[this.name].light !== void 0) { - parser._addNodeRef(this.cache, nodeDef.extensions[this.name].light); - } - } - } - _loadLight(lightIndex) { - const parser = this.parser; - const cacheKey = "light:" + lightIndex; - let dependency = parser.cache.get(cacheKey); - if (dependency) return dependency; - const json = parser.json; - const extensions = json.extensions && json.extensions[this.name] || {}; - const lightDefs = extensions.lights || []; - const lightDef = lightDefs[lightIndex]; - let lightNode; - const color = new Color(16777215); - if (lightDef.color !== void 0) color.setRGB(lightDef.color[0], lightDef.color[1], lightDef.color[2], LinearSRGBColorSpace); - const range = lightDef.range !== void 0 ? lightDef.range : 0; - switch (lightDef.type) { - case "directional": - lightNode = new DirectionalLight(color); - lightNode.target.position.set(0, 0, -1); - lightNode.add(lightNode.target); - break; - case "point": - lightNode = new PointLight(color); - lightNode.distance = range; - break; - case "spot": - lightNode = new SpotLight(color); - lightNode.distance = range; - lightDef.spot = lightDef.spot || {}; - lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== void 0 ? lightDef.spot.innerConeAngle : 0; - lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== void 0 ? lightDef.spot.outerConeAngle : Math.PI / 4; - lightNode.angle = lightDef.spot.outerConeAngle; - lightNode.penumbra = 1 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle; - lightNode.target.position.set(0, 0, -1); - lightNode.add(lightNode.target); - break; - default: - throw new Error("THREE.GLTFLoader: Unexpected light type: " + lightDef.type); - } - lightNode.position.set(0, 0, 0); - lightNode.decay = 2; - assignExtrasToUserData(lightNode, lightDef); - if (lightDef.intensity !== void 0) lightNode.intensity = lightDef.intensity; - lightNode.name = parser.createUniqueName(lightDef.name || "light_" + lightIndex); - dependency = Promise.resolve(lightNode); - parser.cache.add(cacheKey, dependency); - return dependency; - } - getDependency(type, index) { - if (type !== "light") return; - return this._loadLight(index); - } - createNodeAttachment(nodeIndex) { - const self2 = this; - const parser = this.parser; - const json = parser.json; - const nodeDef = json.nodes[nodeIndex]; - const lightDef = nodeDef.extensions && nodeDef.extensions[this.name] || {}; - const lightIndex = lightDef.light; - if (lightIndex === void 0) return null; - return this._loadLight(lightIndex).then(function(light) { - return parser._getNodeRef(self2.cache, lightIndex, light); - }); - } -}; -var GLTFMaterialsUnlitExtension = class { - constructor() { - this.name = EXTENSIONS.KHR_MATERIALS_UNLIT; - } - getMaterialType() { - return MeshBasicMaterial; - } - extendParams(materialParams, materialDef, parser) { - const pending = []; - materialParams.color = new Color(1, 1, 1); - materialParams.opacity = 1; - const metallicRoughness = materialDef.pbrMetallicRoughness; - if (metallicRoughness) { - if (Array.isArray(metallicRoughness.baseColorFactor)) { - const array = metallicRoughness.baseColorFactor; - materialParams.color.setRGB(array[0], array[1], array[2], LinearSRGBColorSpace); - materialParams.opacity = array[3]; - } - if (metallicRoughness.baseColorTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "map", metallicRoughness.baseColorTexture, SRGBColorSpace)); - } - } - return Promise.all(pending); - } -}; -var GLTFMaterialsEmissiveStrengthExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH; - } - extendMaterialParams(materialIndex, materialParams) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) { - return Promise.resolve(); - } - const emissiveStrength = materialDef.extensions[this.name].emissiveStrength; - if (emissiveStrength !== void 0) { - materialParams.emissiveIntensity = emissiveStrength; - } - return Promise.resolve(); - } -}; -var GLTFMaterialsClearcoatExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT; - } - getMaterialType(materialIndex) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; - return MeshPhysicalMaterial; - } - extendMaterialParams(materialIndex, materialParams) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) { - return Promise.resolve(); - } - const pending = []; - const extension = materialDef.extensions[this.name]; - if (extension.clearcoatFactor !== void 0) { - materialParams.clearcoat = extension.clearcoatFactor; - } - if (extension.clearcoatTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "clearcoatMap", extension.clearcoatTexture)); - } - if (extension.clearcoatRoughnessFactor !== void 0) { - materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor; - } - if (extension.clearcoatRoughnessTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "clearcoatRoughnessMap", extension.clearcoatRoughnessTexture)); - } - if (extension.clearcoatNormalTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "clearcoatNormalMap", extension.clearcoatNormalTexture)); - if (extension.clearcoatNormalTexture.scale !== void 0) { - const scale = extension.clearcoatNormalTexture.scale; - materialParams.clearcoatNormalScale = new Vector2(scale, scale); - } - } - return Promise.all(pending); - } -}; -var GLTFMaterialsDispersionExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_DISPERSION; - } - getMaterialType(materialIndex) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; - return MeshPhysicalMaterial; - } - extendMaterialParams(materialIndex, materialParams) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) { - return Promise.resolve(); - } - const extension = materialDef.extensions[this.name]; - materialParams.dispersion = extension.dispersion !== void 0 ? extension.dispersion : 0; - return Promise.resolve(); - } -}; -var GLTFMaterialsIridescenceExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE; - } - getMaterialType(materialIndex) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; - return MeshPhysicalMaterial; - } - extendMaterialParams(materialIndex, materialParams) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) { - return Promise.resolve(); - } - const pending = []; - const extension = materialDef.extensions[this.name]; - if (extension.iridescenceFactor !== void 0) { - materialParams.iridescence = extension.iridescenceFactor; - } - if (extension.iridescenceTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "iridescenceMap", extension.iridescenceTexture)); - } - if (extension.iridescenceIor !== void 0) { - materialParams.iridescenceIOR = extension.iridescenceIor; - } - if (materialParams.iridescenceThicknessRange === void 0) { - materialParams.iridescenceThicknessRange = [100, 400]; - } - if (extension.iridescenceThicknessMinimum !== void 0) { - materialParams.iridescenceThicknessRange[0] = extension.iridescenceThicknessMinimum; - } - if (extension.iridescenceThicknessMaximum !== void 0) { - materialParams.iridescenceThicknessRange[1] = extension.iridescenceThicknessMaximum; - } - if (extension.iridescenceThicknessTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "iridescenceThicknessMap", extension.iridescenceThicknessTexture)); - } - return Promise.all(pending); - } -}; -var GLTFMaterialsSheenExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_SHEEN; - } - getMaterialType(materialIndex) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; - return MeshPhysicalMaterial; - } - extendMaterialParams(materialIndex, materialParams) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) { - return Promise.resolve(); - } - const pending = []; - materialParams.sheenColor = new Color(0, 0, 0); - materialParams.sheenRoughness = 0; - materialParams.sheen = 1; - const extension = materialDef.extensions[this.name]; - if (extension.sheenColorFactor !== void 0) { - const colorFactor = extension.sheenColorFactor; - materialParams.sheenColor.setRGB(colorFactor[0], colorFactor[1], colorFactor[2], LinearSRGBColorSpace); - } - if (extension.sheenRoughnessFactor !== void 0) { - materialParams.sheenRoughness = extension.sheenRoughnessFactor; - } - if (extension.sheenColorTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "sheenColorMap", extension.sheenColorTexture, SRGBColorSpace)); - } - if (extension.sheenRoughnessTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "sheenRoughnessMap", extension.sheenRoughnessTexture)); - } - return Promise.all(pending); - } -}; -var GLTFMaterialsTransmissionExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION; - } - getMaterialType(materialIndex) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; - return MeshPhysicalMaterial; - } - extendMaterialParams(materialIndex, materialParams) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) { - return Promise.resolve(); - } - const pending = []; - const extension = materialDef.extensions[this.name]; - if (extension.transmissionFactor !== void 0) { - materialParams.transmission = extension.transmissionFactor; - } - if (extension.transmissionTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "transmissionMap", extension.transmissionTexture)); - } - return Promise.all(pending); - } -}; -var GLTFMaterialsVolumeExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_VOLUME; - } - getMaterialType(materialIndex) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; - return MeshPhysicalMaterial; - } - extendMaterialParams(materialIndex, materialParams) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) { - return Promise.resolve(); - } - const pending = []; - const extension = materialDef.extensions[this.name]; - materialParams.thickness = extension.thicknessFactor !== void 0 ? extension.thicknessFactor : 0; - if (extension.thicknessTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "thicknessMap", extension.thicknessTexture)); - } - materialParams.attenuationDistance = extension.attenuationDistance || Infinity; - const colorArray = extension.attenuationColor || [1, 1, 1]; - materialParams.attenuationColor = new Color().setRGB(colorArray[0], colorArray[1], colorArray[2], LinearSRGBColorSpace); - return Promise.all(pending); - } -}; -var GLTFMaterialsIorExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_IOR; - } - getMaterialType(materialIndex) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; - return MeshPhysicalMaterial; - } - extendMaterialParams(materialIndex, materialParams) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) { - return Promise.resolve(); - } - const extension = materialDef.extensions[this.name]; - materialParams.ior = extension.ior !== void 0 ? extension.ior : 1.5; - return Promise.resolve(); - } -}; -var GLTFMaterialsSpecularExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR; - } - getMaterialType(materialIndex) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; - return MeshPhysicalMaterial; - } - extendMaterialParams(materialIndex, materialParams) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) { - return Promise.resolve(); - } - const pending = []; - const extension = materialDef.extensions[this.name]; - materialParams.specularIntensity = extension.specularFactor !== void 0 ? extension.specularFactor : 1; - if (extension.specularTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "specularIntensityMap", extension.specularTexture)); - } - const colorArray = extension.specularColorFactor || [1, 1, 1]; - materialParams.specularColor = new Color().setRGB(colorArray[0], colorArray[1], colorArray[2], LinearSRGBColorSpace); - if (extension.specularColorTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "specularColorMap", extension.specularColorTexture, SRGBColorSpace)); - } - return Promise.all(pending); - } -}; -var GLTFMaterialsBumpExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.EXT_MATERIALS_BUMP; - } - getMaterialType(materialIndex) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; - return MeshPhysicalMaterial; - } - extendMaterialParams(materialIndex, materialParams) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) { - return Promise.resolve(); - } - const pending = []; - const extension = materialDef.extensions[this.name]; - materialParams.bumpScale = extension.bumpFactor !== void 0 ? extension.bumpFactor : 1; - if (extension.bumpTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "bumpMap", extension.bumpTexture)); - } - return Promise.all(pending); - } -}; -var GLTFMaterialsAnisotropyExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_ANISOTROPY; - } - getMaterialType(materialIndex) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; - return MeshPhysicalMaterial; - } - extendMaterialParams(materialIndex, materialParams) { - const parser = this.parser; - const materialDef = parser.json.materials[materialIndex]; - if (!materialDef.extensions || !materialDef.extensions[this.name]) { - return Promise.resolve(); - } - const pending = []; - const extension = materialDef.extensions[this.name]; - if (extension.anisotropyStrength !== void 0) { - materialParams.anisotropy = extension.anisotropyStrength; - } - if (extension.anisotropyRotation !== void 0) { - materialParams.anisotropyRotation = extension.anisotropyRotation; - } - if (extension.anisotropyTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "anisotropyMap", extension.anisotropyTexture)); - } - return Promise.all(pending); - } -}; -var GLTFTextureBasisUExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.KHR_TEXTURE_BASISU; - } - loadTexture(textureIndex) { - const parser = this.parser; - const json = parser.json; - const textureDef = json.textures[textureIndex]; - if (!textureDef.extensions || !textureDef.extensions[this.name]) { - return null; - } - const extension = textureDef.extensions[this.name]; - const loader = parser.options.ktx2Loader; - if (!loader) { - if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) { - throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures"); - } else { - return null; - } - } - return parser.loadTextureImage(textureIndex, extension.source, loader); - } -}; -var GLTFTextureWebPExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.EXT_TEXTURE_WEBP; - this.isSupported = null; - } - loadTexture(textureIndex) { - const name = this.name; - const parser = this.parser; - const json = parser.json; - const textureDef = json.textures[textureIndex]; - if (!textureDef.extensions || !textureDef.extensions[name]) { - return null; - } - const extension = textureDef.extensions[name]; - const source = json.images[extension.source]; - let loader = parser.textureLoader; - if (source.uri) { - const handler = parser.options.manager.getHandler(source.uri); - if (handler !== null) loader = handler; - } - return this.detectSupport().then(function(isSupported) { - if (isSupported) return parser.loadTextureImage(textureIndex, extension.source, loader); - if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) { - throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported."); - } - return parser.loadTexture(textureIndex); - }); - } - detectSupport() { - if (!this.isSupported) { - this.isSupported = new Promise(function(resolve) { - const image = new Image(); - image.src = "data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"; - image.onload = image.onerror = function() { - resolve(image.height === 1); - }; - }); - } - return this.isSupported; - } -}; -var GLTFTextureAVIFExtension = class { - constructor(parser) { - this.parser = parser; - this.name = EXTENSIONS.EXT_TEXTURE_AVIF; - this.isSupported = null; - } - loadTexture(textureIndex) { - const name = this.name; - const parser = this.parser; - const json = parser.json; - const textureDef = json.textures[textureIndex]; - if (!textureDef.extensions || !textureDef.extensions[name]) { - return null; - } - const extension = textureDef.extensions[name]; - const source = json.images[extension.source]; - let loader = parser.textureLoader; - if (source.uri) { - const handler = parser.options.manager.getHandler(source.uri); - if (handler !== null) loader = handler; - } - return this.detectSupport().then(function(isSupported) { - if (isSupported) return parser.loadTextureImage(textureIndex, extension.source, loader); - if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) { - throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported."); - } - return parser.loadTexture(textureIndex); - }); - } - detectSupport() { - if (!this.isSupported) { - this.isSupported = new Promise(function(resolve) { - const image = new Image(); - image.src = "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI="; - image.onload = image.onerror = function() { - resolve(image.height === 1); - }; - }); - } - return this.isSupported; - } -}; -var GLTFMeshoptCompression = class { - constructor(parser) { - this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION; - this.parser = parser; - } - loadBufferView(index) { - const json = this.parser.json; - const bufferView = json.bufferViews[index]; - if (bufferView.extensions && bufferView.extensions[this.name]) { - const extensionDef = bufferView.extensions[this.name]; - const buffer = this.parser.getDependency("buffer", extensionDef.buffer); - const decoder = this.parser.options.meshoptDecoder; - if (!decoder || !decoder.supported) { - if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) { - throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files"); - } else { - return null; - } - } - return buffer.then(function(res) { - const byteOffset = extensionDef.byteOffset || 0; - const byteLength = extensionDef.byteLength || 0; - const count = extensionDef.count; - const stride = extensionDef.byteStride; - const source = new Uint8Array(res, byteOffset, byteLength); - if (decoder.decodeGltfBufferAsync) { - return decoder.decodeGltfBufferAsync(count, stride, source, extensionDef.mode, extensionDef.filter).then(function(res2) { - return res2.buffer; - }); - } else { - return decoder.ready.then(function() { - const result = new ArrayBuffer(count * stride); - decoder.decodeGltfBuffer(new Uint8Array(result), count, stride, source, extensionDef.mode, extensionDef.filter); - return result; - }); - } - }); - } else { - return null; - } - } -}; -var GLTFMeshGpuInstancing = class { - constructor(parser) { - this.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING; - this.parser = parser; - } - createNodeMesh(nodeIndex) { - const json = this.parser.json; - const nodeDef = json.nodes[nodeIndex]; - if (!nodeDef.extensions || !nodeDef.extensions[this.name] || nodeDef.mesh === void 0) { - return null; - } - const meshDef = json.meshes[nodeDef.mesh]; - for (const primitive of meshDef.primitives) { - if (primitive.mode !== WEBGL_CONSTANTS.TRIANGLES && primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP && primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN && primitive.mode !== void 0) { - return null; - } - } - const extensionDef = nodeDef.extensions[this.name]; - const attributesDef = extensionDef.attributes; - const pending = []; - const attributes = {}; - for (const key in attributesDef) { - pending.push(this.parser.getDependency("accessor", attributesDef[key]).then((accessor) => { - attributes[key] = accessor; - return attributes[key]; - })); - } - if (pending.length < 1) { - return null; - } - pending.push(this.parser.createNodeMesh(nodeIndex)); - return Promise.all(pending).then((results) => { - const nodeObject = results.pop(); - const meshes = nodeObject.isGroup ? nodeObject.children : [nodeObject]; - const count = results[0].count; - const instancedMeshes = []; - for (const mesh of meshes) { - const m = new Matrix4(); - const p = new Vector3(); - const q = new Quaternion(); - const s = new Vector3(1, 1, 1); - const instancedMesh = new InstancedMesh(mesh.geometry, mesh.material, count); - for (let i = 0; i < count; i++) { - if (attributes.TRANSLATION) { - p.fromBufferAttribute(attributes.TRANSLATION, i); - } - if (attributes.ROTATION) { - q.fromBufferAttribute(attributes.ROTATION, i); - } - if (attributes.SCALE) { - s.fromBufferAttribute(attributes.SCALE, i); - } - instancedMesh.setMatrixAt(i, m.compose(p, q, s)); - } - for (const attributeName in attributes) { - if (attributeName === "_COLOR_0") { - const attr = attributes[attributeName]; - instancedMesh.instanceColor = new InstancedBufferAttribute(attr.array, attr.itemSize, attr.normalized); - } else if (attributeName !== "TRANSLATION" && attributeName !== "ROTATION" && attributeName !== "SCALE") { - mesh.geometry.setAttribute(attributeName, attributes[attributeName]); - } - } - Object3D.prototype.copy.call(instancedMesh, mesh); - this.parser.assignFinalMaterial(instancedMesh); - instancedMeshes.push(instancedMesh); - } - if (nodeObject.isGroup) { - nodeObject.clear(); - nodeObject.add(...instancedMeshes); - return nodeObject; - } - return instancedMeshes[0]; - }); - } -}; -var BINARY_EXTENSION_HEADER_MAGIC = "glTF"; -var BINARY_EXTENSION_HEADER_LENGTH = 12; -var BINARY_EXTENSION_CHUNK_TYPES = { JSON: 1313821514, BIN: 5130562 }; -var GLTFBinaryExtension = class { - constructor(data) { - this.name = EXTENSIONS.KHR_BINARY_GLTF; - this.content = null; - this.body = null; - const headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH); - const textDecoder = new TextDecoder(); - this.header = { - magic: textDecoder.decode(new Uint8Array(data.slice(0, 4))), - version: headerView.getUint32(4, true), - length: headerView.getUint32(8, true) - }; - if (this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC) { - throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header."); - } else if (this.header.version < 2) { - throw new Error("THREE.GLTFLoader: Legacy binary file detected."); - } - const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH; - const chunkView = new DataView(data, BINARY_EXTENSION_HEADER_LENGTH); - let chunkIndex = 0; - while (chunkIndex < chunkContentsLength) { - const chunkLength = chunkView.getUint32(chunkIndex, true); - chunkIndex += 4; - const chunkType = chunkView.getUint32(chunkIndex, true); - chunkIndex += 4; - if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON) { - const contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength); - this.content = textDecoder.decode(contentArray); - } else if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN) { - const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex; - this.body = data.slice(byteOffset, byteOffset + chunkLength); - } - chunkIndex += chunkLength; - } - if (this.content === null) { - throw new Error("THREE.GLTFLoader: JSON content not found."); - } - } -}; -var GLTFDracoMeshCompressionExtension = class { - constructor(json, dracoLoader) { - if (!dracoLoader) { - throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided."); - } - this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION; - this.json = json; - this.dracoLoader = dracoLoader; - this.dracoLoader.preload(); - } - decodePrimitive(primitive, parser) { - const json = this.json; - const dracoLoader = this.dracoLoader; - const bufferViewIndex = primitive.extensions[this.name].bufferView; - const gltfAttributeMap = primitive.extensions[this.name].attributes; - const threeAttributeMap = {}; - const attributeNormalizedMap = {}; - const attributeTypeMap = {}; - for (const attributeName in gltfAttributeMap) { - const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase(); - threeAttributeMap[threeAttributeName] = gltfAttributeMap[attributeName]; - } - for (const attributeName in primitive.attributes) { - const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase(); - if (gltfAttributeMap[attributeName] !== void 0) { - const accessorDef = json.accessors[primitive.attributes[attributeName]]; - const componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType]; - attributeTypeMap[threeAttributeName] = componentType.name; - attributeNormalizedMap[threeAttributeName] = accessorDef.normalized === true; - } - } - return parser.getDependency("bufferView", bufferViewIndex).then(function(bufferView) { - return new Promise(function(resolve, reject) { - dracoLoader.decodeDracoFile(bufferView, function(geometry) { - for (const attributeName in geometry.attributes) { - const attribute = geometry.attributes[attributeName]; - const normalized = attributeNormalizedMap[attributeName]; - if (normalized !== void 0) attribute.normalized = normalized; - } - resolve(geometry); - }, threeAttributeMap, attributeTypeMap, LinearSRGBColorSpace, reject); - }); - }); - } -}; -var GLTFTextureTransformExtension = class { - constructor() { - this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM; - } - extendTexture(texture, transform) { - if ((transform.texCoord === void 0 || transform.texCoord === texture.channel) && transform.offset === void 0 && transform.rotation === void 0 && transform.scale === void 0) { - return texture; - } - texture = texture.clone(); - if (transform.texCoord !== void 0) { - texture.channel = transform.texCoord; - } - if (transform.offset !== void 0) { - texture.offset.fromArray(transform.offset); - } - if (transform.rotation !== void 0) { - texture.rotation = transform.rotation; - } - if (transform.scale !== void 0) { - texture.repeat.fromArray(transform.scale); - } - texture.needsUpdate = true; - return texture; - } -}; -var GLTFMeshQuantizationExtension = class { - constructor() { - this.name = EXTENSIONS.KHR_MESH_QUANTIZATION; - } -}; -var GLTFCubicSplineInterpolant = class extends Interpolant { - constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) { - super(parameterPositions, sampleValues, sampleSize, resultBuffer); - } - copySampleValue_(index) { - const result = this.resultBuffer, values = this.sampleValues, valueSize = this.valueSize, offset = index * valueSize * 3 + valueSize; - for (let i = 0; i !== valueSize; i++) { - result[i] = values[offset + i]; - } - return result; - } - interpolate_(i1, t0, t, t1) { - const result = this.resultBuffer; - const values = this.sampleValues; - const stride = this.valueSize; - const stride2 = stride * 2; - const stride3 = stride * 3; - const td = t1 - t0; - const p = (t - t0) / td; - const pp = p * p; - const ppp = pp * p; - const offset1 = i1 * stride3; - const offset0 = offset1 - stride3; - const s2 = -2 * ppp + 3 * pp; - const s3 = ppp - pp; - const s0 = 1 - s2; - const s1 = s3 - pp + p; - for (let i = 0; i !== stride; i++) { - const p0 = values[offset0 + i + stride]; - const m0 = values[offset0 + i + stride2] * td; - const p1 = values[offset1 + i + stride]; - const m1 = values[offset1 + i] * td; - result[i] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1; - } - return result; - } -}; -var _q = new Quaternion(); -var GLTFCubicSplineQuaternionInterpolant = class extends GLTFCubicSplineInterpolant { - interpolate_(i1, t0, t, t1) { - const result = super.interpolate_(i1, t0, t, t1); - _q.fromArray(result).normalize().toArray(result); - return result; - } -}; -var WEBGL_CONSTANTS = { - FLOAT: 5126, - //FLOAT_MAT2: 35674, - FLOAT_MAT3: 35675, - FLOAT_MAT4: 35676, - FLOAT_VEC2: 35664, - FLOAT_VEC3: 35665, - FLOAT_VEC4: 35666, - LINEAR: 9729, - REPEAT: 10497, - SAMPLER_2D: 35678, - POINTS: 0, - LINES: 1, - LINE_LOOP: 2, - LINE_STRIP: 3, - TRIANGLES: 4, - TRIANGLE_STRIP: 5, - TRIANGLE_FAN: 6, - UNSIGNED_BYTE: 5121, - UNSIGNED_SHORT: 5123 -}; -var WEBGL_COMPONENT_TYPES = { - 5120: Int8Array, - 5121: Uint8Array, - 5122: Int16Array, - 5123: Uint16Array, - 5125: Uint32Array, - 5126: Float32Array -}; -var WEBGL_FILTERS = { - 9728: NearestFilter, - 9729: LinearFilter, - 9984: NearestMipmapNearestFilter, - 9985: LinearMipmapNearestFilter, - 9986: NearestMipmapLinearFilter, - 9987: LinearMipmapLinearFilter -}; -var WEBGL_WRAPPINGS = { - 33071: ClampToEdgeWrapping, - 33648: MirroredRepeatWrapping, - 10497: RepeatWrapping -}; -var WEBGL_TYPE_SIZES = { - "SCALAR": 1, - "VEC2": 2, - "VEC3": 3, - "VEC4": 4, - "MAT2": 4, - "MAT3": 9, - "MAT4": 16 -}; -var ATTRIBUTES = { - POSITION: "position", - NORMAL: "normal", - TANGENT: "tangent", - TEXCOORD_0: "uv", - TEXCOORD_1: "uv1", - TEXCOORD_2: "uv2", - TEXCOORD_3: "uv3", - COLOR_0: "color", - WEIGHTS_0: "skinWeight", - JOINTS_0: "skinIndex" -}; -var PATH_PROPERTIES = { - scale: "scale", - translation: "position", - rotation: "quaternion", - weights: "morphTargetInfluences" -}; -var INTERPOLATION = { - CUBICSPLINE: void 0, - // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each - // keyframe track will be initialized with a default interpolation type, then modified. - LINEAR: InterpolateLinear, - STEP: InterpolateDiscrete -}; -var ALPHA_MODES = { - OPAQUE: "OPAQUE", - MASK: "MASK", - BLEND: "BLEND" -}; -function createDefaultMaterial(cache) { - if (cache["DefaultMaterial"] === void 0) { - cache["DefaultMaterial"] = new MeshStandardMaterial({ - color: 16777215, - emissive: 0, - metalness: 1, - roughness: 1, - transparent: false, - depthTest: true, - side: FrontSide - }); - } - return cache["DefaultMaterial"]; -} -function addUnknownExtensionsToUserData(knownExtensions, object, objectDef) { - for (const name in objectDef.extensions) { - if (knownExtensions[name] === void 0) { - object.userData.gltfExtensions = object.userData.gltfExtensions || {}; - object.userData.gltfExtensions[name] = objectDef.extensions[name]; - } - } -} -function assignExtrasToUserData(object, gltfDef) { - if (gltfDef.extras !== void 0) { - if (typeof gltfDef.extras === "object") { - Object.assign(object.userData, gltfDef.extras); - } else { - console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, " + gltfDef.extras); - } - } -} -function addMorphTargets(geometry, targets, parser) { - let hasMorphPosition = false; - let hasMorphNormal = false; - let hasMorphColor = false; - for (let i = 0, il = targets.length; i < il; i++) { - const target = targets[i]; - if (target.POSITION !== void 0) hasMorphPosition = true; - if (target.NORMAL !== void 0) hasMorphNormal = true; - if (target.COLOR_0 !== void 0) hasMorphColor = true; - if (hasMorphPosition && hasMorphNormal && hasMorphColor) break; - } - if (!hasMorphPosition && !hasMorphNormal && !hasMorphColor) return Promise.resolve(geometry); - const pendingPositionAccessors = []; - const pendingNormalAccessors = []; - const pendingColorAccessors = []; - for (let i = 0, il = targets.length; i < il; i++) { - const target = targets[i]; - if (hasMorphPosition) { - const pendingAccessor = target.POSITION !== void 0 ? parser.getDependency("accessor", target.POSITION) : geometry.attributes.position; - pendingPositionAccessors.push(pendingAccessor); - } - if (hasMorphNormal) { - const pendingAccessor = target.NORMAL !== void 0 ? parser.getDependency("accessor", target.NORMAL) : geometry.attributes.normal; - pendingNormalAccessors.push(pendingAccessor); - } - if (hasMorphColor) { - const pendingAccessor = target.COLOR_0 !== void 0 ? parser.getDependency("accessor", target.COLOR_0) : geometry.attributes.color; - pendingColorAccessors.push(pendingAccessor); - } - } - return Promise.all([ - Promise.all(pendingPositionAccessors), - Promise.all(pendingNormalAccessors), - Promise.all(pendingColorAccessors) - ]).then(function(accessors) { - const morphPositions = accessors[0]; - const morphNormals = accessors[1]; - const morphColors = accessors[2]; - if (hasMorphPosition) geometry.morphAttributes.position = morphPositions; - if (hasMorphNormal) geometry.morphAttributes.normal = morphNormals; - if (hasMorphColor) geometry.morphAttributes.color = morphColors; - geometry.morphTargetsRelative = true; - return geometry; - }); -} -function updateMorphTargets(mesh, meshDef) { - mesh.updateMorphTargets(); - if (meshDef.weights !== void 0) { - for (let i = 0, il = meshDef.weights.length; i < il; i++) { - mesh.morphTargetInfluences[i] = meshDef.weights[i]; - } - } - if (meshDef.extras && Array.isArray(meshDef.extras.targetNames)) { - const targetNames = meshDef.extras.targetNames; - if (mesh.morphTargetInfluences.length === targetNames.length) { - mesh.morphTargetDictionary = {}; - for (let i = 0, il = targetNames.length; i < il; i++) { - mesh.morphTargetDictionary[targetNames[i]] = i; - } - } else { - console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names."); - } - } -} -function createPrimitiveKey(primitiveDef) { - let geometryKey; - const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]; - if (dracoExtension) { - geometryKey = "draco:" + dracoExtension.bufferView + ":" + dracoExtension.indices + ":" + createAttributesKey(dracoExtension.attributes); - } else { - geometryKey = primitiveDef.indices + ":" + createAttributesKey(primitiveDef.attributes) + ":" + primitiveDef.mode; - } - if (primitiveDef.targets !== void 0) { - for (let i = 0, il = primitiveDef.targets.length; i < il; i++) { - geometryKey += ":" + createAttributesKey(primitiveDef.targets[i]); - } - } - return geometryKey; -} -function createAttributesKey(attributes) { - let attributesKey = ""; - const keys = Object.keys(attributes).sort(); - for (let i = 0, il = keys.length; i < il; i++) { - attributesKey += keys[i] + ":" + attributes[keys[i]] + ";"; - } - return attributesKey; -} -function getNormalizedComponentScale(constructor) { - switch (constructor) { - case Int8Array: - return 1 / 127; - case Uint8Array: - return 1 / 255; - case Int16Array: - return 1 / 32767; - case Uint16Array: - return 1 / 65535; - default: - throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type."); - } -} -function getImageURIMimeType(uri) { - if (uri.search(/\.jpe?g($|\?)/i) > 0 || uri.search(/^data\:image\/jpeg/) === 0) return "image/jpeg"; - if (uri.search(/\.webp($|\?)/i) > 0 || uri.search(/^data\:image\/webp/) === 0) return "image/webp"; - return "image/png"; -} -var _identityMatrix = new Matrix4(); -var GLTFParser = class { - constructor(json = {}, options = {}) { - this.json = json; - this.extensions = {}; - this.plugins = {}; - this.options = options; - this.cache = new GLTFRegistry(); - this.associations = /* @__PURE__ */ new Map(); - this.primitiveCache = {}; - this.nodeCache = {}; - this.meshCache = { refs: {}, uses: {} }; - this.cameraCache = { refs: {}, uses: {} }; - this.lightCache = { refs: {}, uses: {} }; - this.sourceCache = {}; - this.textureCache = {}; - this.nodeNamesUsed = {}; - let isSafari = false; - let safariVersion = -1; - let isFirefox = false; - let firefoxVersion = -1; - if (typeof navigator !== "undefined") { - const userAgent = navigator.userAgent; - isSafari = /^((?!chrome|android).)*safari/i.test(userAgent) === true; - const safariMatch = userAgent.match(/Version\/(\d+)/); - safariVersion = isSafari && safariMatch ? parseInt(safariMatch[1], 10) : -1; - isFirefox = userAgent.indexOf("Firefox") > -1; - firefoxVersion = isFirefox ? userAgent.match(/Firefox\/([0-9]+)\./)[1] : -1; - } - if (typeof createImageBitmap === "undefined" || isSafari && safariVersion < 17 || isFirefox && firefoxVersion < 98) { - this.textureLoader = new TextureLoader(this.options.manager); - } else { - this.textureLoader = new ImageBitmapLoader(this.options.manager); - } - this.textureLoader.setCrossOrigin(this.options.crossOrigin); - this.textureLoader.setRequestHeader(this.options.requestHeader); - this.fileLoader = new FileLoader(this.options.manager); - this.fileLoader.setResponseType("arraybuffer"); - if (this.options.crossOrigin === "use-credentials") { - this.fileLoader.setWithCredentials(true); - } - } - setExtensions(extensions) { - this.extensions = extensions; - } - setPlugins(plugins) { - this.plugins = plugins; - } - parse(onLoad, onError) { - const parser = this; - const json = this.json; - const extensions = this.extensions; - this.cache.removeAll(); - this.nodeCache = {}; - this._invokeAll(function(ext) { - return ext._markDefs && ext._markDefs(); - }); - Promise.all(this._invokeAll(function(ext) { - return ext.beforeRoot && ext.beforeRoot(); - })).then(function() { - return Promise.all([ - parser.getDependencies("scene"), - parser.getDependencies("animation"), - parser.getDependencies("camera") - ]); - }).then(function(dependencies) { - const result = { - scene: dependencies[0][json.scene || 0], - scenes: dependencies[0], - animations: dependencies[1], - cameras: dependencies[2], - asset: json.asset, - parser, - userData: {} - }; - addUnknownExtensionsToUserData(extensions, result, json); - assignExtrasToUserData(result, json); - return Promise.all(parser._invokeAll(function(ext) { - return ext.afterRoot && ext.afterRoot(result); - })).then(function() { - for (const scene of result.scenes) { - scene.updateMatrixWorld(); - } - onLoad(result); - }); - }).catch(onError); - } - /** - * Marks the special nodes/meshes in json for efficient parse. - */ - _markDefs() { - const nodeDefs = this.json.nodes || []; - const skinDefs = this.json.skins || []; - const meshDefs = this.json.meshes || []; - for (let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex++) { - const joints = skinDefs[skinIndex].joints; - for (let i = 0, il = joints.length; i < il; i++) { - nodeDefs[joints[i]].isBone = true; - } - } - for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) { - const nodeDef = nodeDefs[nodeIndex]; - if (nodeDef.mesh !== void 0) { - this._addNodeRef(this.meshCache, nodeDef.mesh); - if (nodeDef.skin !== void 0) { - meshDefs[nodeDef.mesh].isSkinnedMesh = true; - } - } - if (nodeDef.camera !== void 0) { - this._addNodeRef(this.cameraCache, nodeDef.camera); - } - } - } - /** - * Counts references to shared node / Object3D resources. These resources - * can be reused, or "instantiated", at multiple nodes in the scene - * hierarchy. Mesh, Camera, and Light instances are instantiated and must - * be marked. Non-scenegraph resources (like Materials, Geometries, and - * Textures) can be reused directly and are not marked here. - * - * Example: CesiumMilkTruck sample model reuses "Wheel" meshes. - */ - _addNodeRef(cache, index) { - if (index === void 0) return; - if (cache.refs[index] === void 0) { - cache.refs[index] = cache.uses[index] = 0; - } - cache.refs[index]++; - } - /** Returns a reference to a shared resource, cloning it if necessary. */ - _getNodeRef(cache, index, object) { - if (cache.refs[index] <= 1) return object; - const ref = object.clone(); - const updateMappings = (original, clone) => { - const mappings = this.associations.get(original); - if (mappings != null) { - this.associations.set(clone, mappings); - } - for (const [i, child] of original.children.entries()) { - updateMappings(child, clone.children[i]); - } - }; - updateMappings(object, ref); - ref.name += "_instance_" + cache.uses[index]++; - return ref; - } - _invokeOne(func) { - const extensions = Object.values(this.plugins); - extensions.push(this); - for (let i = 0; i < extensions.length; i++) { - const result = func(extensions[i]); - if (result) return result; - } - return null; - } - _invokeAll(func) { - const extensions = Object.values(this.plugins); - extensions.unshift(this); - const pending = []; - for (let i = 0; i < extensions.length; i++) { - const result = func(extensions[i]); - if (result) pending.push(result); - } - return pending; - } - /** - * Requests the specified dependency asynchronously, with caching. - * @param {string} type - * @param {number} index - * @return {Promise} - */ - getDependency(type, index) { - const cacheKey = type + ":" + index; - let dependency = this.cache.get(cacheKey); - if (!dependency) { - switch (type) { - case "scene": - dependency = this.loadScene(index); - break; - case "node": - dependency = this._invokeOne(function(ext) { - return ext.loadNode && ext.loadNode(index); - }); - break; - case "mesh": - dependency = this._invokeOne(function(ext) { - return ext.loadMesh && ext.loadMesh(index); - }); - break; - case "accessor": - dependency = this.loadAccessor(index); - break; - case "bufferView": - dependency = this._invokeOne(function(ext) { - return ext.loadBufferView && ext.loadBufferView(index); - }); - break; - case "buffer": - dependency = this.loadBuffer(index); - break; - case "material": - dependency = this._invokeOne(function(ext) { - return ext.loadMaterial && ext.loadMaterial(index); - }); - break; - case "texture": - dependency = this._invokeOne(function(ext) { - return ext.loadTexture && ext.loadTexture(index); - }); - break; - case "skin": - dependency = this.loadSkin(index); - break; - case "animation": - dependency = this._invokeOne(function(ext) { - return ext.loadAnimation && ext.loadAnimation(index); - }); - break; - case "camera": - dependency = this.loadCamera(index); - break; - default: - dependency = this._invokeOne(function(ext) { - return ext != this && ext.getDependency && ext.getDependency(type, index); - }); - if (!dependency) { - throw new Error("Unknown type: " + type); - } - break; - } - this.cache.add(cacheKey, dependency); - } - return dependency; - } - /** - * Requests all dependencies of the specified type asynchronously, with caching. - * @param {string} type - * @return {Promise>} - */ - getDependencies(type) { - let dependencies = this.cache.get(type); - if (!dependencies) { - const parser = this; - const defs = this.json[type + (type === "mesh" ? "es" : "s")] || []; - dependencies = Promise.all(defs.map(function(def, index) { - return parser.getDependency(type, index); - })); - this.cache.add(type, dependencies); - } - return dependencies; - } - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views - * @param {number} bufferIndex - * @return {Promise} - */ - loadBuffer(bufferIndex) { - const bufferDef = this.json.buffers[bufferIndex]; - const loader = this.fileLoader; - if (bufferDef.type && bufferDef.type !== "arraybuffer") { - throw new Error("THREE.GLTFLoader: " + bufferDef.type + " buffer type is not supported."); - } - if (bufferDef.uri === void 0 && bufferIndex === 0) { - return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body); - } - const options = this.options; - return new Promise(function(resolve, reject) { - loader.load(LoaderUtils.resolveURL(bufferDef.uri, options.path), resolve, void 0, function() { - reject(new Error('THREE.GLTFLoader: Failed to load buffer "' + bufferDef.uri + '".')); - }); - }); - } - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views - * @param {number} bufferViewIndex - * @return {Promise} - */ - loadBufferView(bufferViewIndex) { - const bufferViewDef = this.json.bufferViews[bufferViewIndex]; - return this.getDependency("buffer", bufferViewDef.buffer).then(function(buffer) { - const byteLength = bufferViewDef.byteLength || 0; - const byteOffset = bufferViewDef.byteOffset || 0; - return buffer.slice(byteOffset, byteOffset + byteLength); - }); - } - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors - * @param {number} accessorIndex - * @return {Promise} - */ - loadAccessor(accessorIndex) { - const parser = this; - const json = this.json; - const accessorDef = this.json.accessors[accessorIndex]; - if (accessorDef.bufferView === void 0 && accessorDef.sparse === void 0) { - const itemSize = WEBGL_TYPE_SIZES[accessorDef.type]; - const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType]; - const normalized = accessorDef.normalized === true; - const array = new TypedArray(accessorDef.count * itemSize); - return Promise.resolve(new BufferAttribute(array, itemSize, normalized)); - } - const pendingBufferViews = []; - if (accessorDef.bufferView !== void 0) { - pendingBufferViews.push(this.getDependency("bufferView", accessorDef.bufferView)); - } else { - pendingBufferViews.push(null); - } - if (accessorDef.sparse !== void 0) { - pendingBufferViews.push(this.getDependency("bufferView", accessorDef.sparse.indices.bufferView)); - pendingBufferViews.push(this.getDependency("bufferView", accessorDef.sparse.values.bufferView)); - } - return Promise.all(pendingBufferViews).then(function(bufferViews) { - const bufferView = bufferViews[0]; - const itemSize = WEBGL_TYPE_SIZES[accessorDef.type]; - const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType]; - const elementBytes = TypedArray.BYTES_PER_ELEMENT; - const itemBytes = elementBytes * itemSize; - const byteOffset = accessorDef.byteOffset || 0; - const byteStride = accessorDef.bufferView !== void 0 ? json.bufferViews[accessorDef.bufferView].byteStride : void 0; - const normalized = accessorDef.normalized === true; - let array, bufferAttribute; - if (byteStride && byteStride !== itemBytes) { - const ibSlice = Math.floor(byteOffset / byteStride); - const ibCacheKey = "InterleavedBuffer:" + accessorDef.bufferView + ":" + accessorDef.componentType + ":" + ibSlice + ":" + accessorDef.count; - let ib = parser.cache.get(ibCacheKey); - if (!ib) { - array = new TypedArray(bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes); - ib = new InterleavedBuffer(array, byteStride / elementBytes); - parser.cache.add(ibCacheKey, ib); - } - bufferAttribute = new InterleavedBufferAttribute(ib, itemSize, byteOffset % byteStride / elementBytes, normalized); - } else { - if (bufferView === null) { - array = new TypedArray(accessorDef.count * itemSize); - } else { - array = new TypedArray(bufferView, byteOffset, accessorDef.count * itemSize); - } - bufferAttribute = new BufferAttribute(array, itemSize, normalized); - } - if (accessorDef.sparse !== void 0) { - const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR; - const TypedArrayIndices = WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType]; - const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0; - const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0; - const sparseIndices = new TypedArrayIndices(bufferViews[1], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices); - const sparseValues = new TypedArray(bufferViews[2], byteOffsetValues, accessorDef.sparse.count * itemSize); - if (bufferView !== null) { - bufferAttribute = new BufferAttribute(bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized); - } - for (let i = 0, il = sparseIndices.length; i < il; i++) { - const index = sparseIndices[i]; - bufferAttribute.setX(index, sparseValues[i * itemSize]); - if (itemSize >= 2) bufferAttribute.setY(index, sparseValues[i * itemSize + 1]); - if (itemSize >= 3) bufferAttribute.setZ(index, sparseValues[i * itemSize + 2]); - if (itemSize >= 4) bufferAttribute.setW(index, sparseValues[i * itemSize + 3]); - if (itemSize >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute."); - } - } - return bufferAttribute; - }); - } - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures - * @param {number} textureIndex - * @return {Promise} - */ - loadTexture(textureIndex) { - const json = this.json; - const options = this.options; - const textureDef = json.textures[textureIndex]; - const sourceIndex = textureDef.source; - const sourceDef = json.images[sourceIndex]; - let loader = this.textureLoader; - if (sourceDef.uri) { - const handler = options.manager.getHandler(sourceDef.uri); - if (handler !== null) loader = handler; - } - return this.loadTextureImage(textureIndex, sourceIndex, loader); - } - loadTextureImage(textureIndex, sourceIndex, loader) { - const parser = this; - const json = this.json; - const textureDef = json.textures[textureIndex]; - const sourceDef = json.images[sourceIndex]; - const cacheKey = (sourceDef.uri || sourceDef.bufferView) + ":" + textureDef.sampler; - if (this.textureCache[cacheKey]) { - return this.textureCache[cacheKey]; - } - const promise = this.loadImageSource(sourceIndex, loader).then(function(texture) { - texture.flipY = false; - texture.name = textureDef.name || sourceDef.name || ""; - if (texture.name === "" && typeof sourceDef.uri === "string" && sourceDef.uri.startsWith("data:image/") === false) { - texture.name = sourceDef.uri; - } - const samplers = json.samplers || {}; - const sampler = samplers[textureDef.sampler] || {}; - texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || LinearFilter; - texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || LinearMipmapLinearFilter; - texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || RepeatWrapping; - texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || RepeatWrapping; - parser.associations.set(texture, { textures: textureIndex }); - return texture; - }).catch(function() { - return null; - }); - this.textureCache[cacheKey] = promise; - return promise; - } - loadImageSource(sourceIndex, loader) { - const parser = this; - const json = this.json; - const options = this.options; - if (this.sourceCache[sourceIndex] !== void 0) { - return this.sourceCache[sourceIndex].then((texture) => texture.clone()); - } - const sourceDef = json.images[sourceIndex]; - const URL = self.URL || self.webkitURL; - let sourceURI = sourceDef.uri || ""; - let isObjectURL = false; - if (sourceDef.bufferView !== void 0) { - sourceURI = parser.getDependency("bufferView", sourceDef.bufferView).then(function(bufferView) { - isObjectURL = true; - const blob = new Blob([bufferView], { type: sourceDef.mimeType }); - sourceURI = URL.createObjectURL(blob); - return sourceURI; - }); - } else if (sourceDef.uri === void 0) { - throw new Error("THREE.GLTFLoader: Image " + sourceIndex + " is missing URI and bufferView"); - } - const promise = Promise.resolve(sourceURI).then(function(sourceURI2) { - return new Promise(function(resolve, reject) { - let onLoad = resolve; - if (loader.isImageBitmapLoader === true) { - onLoad = function(imageBitmap) { - const texture = new Texture(imageBitmap); - texture.needsUpdate = true; - resolve(texture); - }; - } - loader.load(LoaderUtils.resolveURL(sourceURI2, options.path), onLoad, void 0, reject); - }); - }).then(function(texture) { - if (isObjectURL === true) { - URL.revokeObjectURL(sourceURI); - } - assignExtrasToUserData(texture, sourceDef); - texture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType(sourceDef.uri); - return texture; - }).catch(function(error) { - console.error("THREE.GLTFLoader: Couldn't load texture", sourceURI); - throw error; - }); - this.sourceCache[sourceIndex] = promise; - return promise; - } - /** - * Asynchronously assigns a texture to the given material parameters. - * @param {Object} materialParams - * @param {string} mapName - * @param {Object} mapDef - * @return {Promise} - */ - assignTexture(materialParams, mapName, mapDef, colorSpace) { - const parser = this; - return this.getDependency("texture", mapDef.index).then(function(texture) { - if (!texture) return null; - if (mapDef.texCoord !== void 0 && mapDef.texCoord > 0) { - texture = texture.clone(); - texture.channel = mapDef.texCoord; - } - if (parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]) { - const transform = mapDef.extensions !== void 0 ? mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM] : void 0; - if (transform) { - const gltfReference = parser.associations.get(texture); - texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform); - parser.associations.set(texture, gltfReference); - } - } - if (colorSpace !== void 0) { - texture.colorSpace = colorSpace; - } - materialParams[mapName] = texture; - return texture; - }); - } - /** - * Assigns final material to a Mesh, Line, or Points instance. The instance - * already has a material (generated from the glTF material options alone) - * but reuse of the same glTF material may require multiple threejs materials - * to accommodate different primitive types, defines, etc. New materials will - * be created if necessary, and reused from a cache. - * @param {Object3D} mesh Mesh, Line, or Points instance. - */ - assignFinalMaterial(mesh) { - const geometry = mesh.geometry; - let material = mesh.material; - const useDerivativeTangents = geometry.attributes.tangent === void 0; - const useVertexColors = geometry.attributes.color !== void 0; - const useFlatShading = geometry.attributes.normal === void 0; - if (mesh.isPoints) { - const cacheKey = "PointsMaterial:" + material.uuid; - let pointsMaterial = this.cache.get(cacheKey); - if (!pointsMaterial) { - pointsMaterial = new PointsMaterial(); - Material.prototype.copy.call(pointsMaterial, material); - pointsMaterial.color.copy(material.color); - pointsMaterial.map = material.map; - pointsMaterial.sizeAttenuation = false; - this.cache.add(cacheKey, pointsMaterial); - } - material = pointsMaterial; - } else if (mesh.isLine) { - const cacheKey = "LineBasicMaterial:" + material.uuid; - let lineMaterial = this.cache.get(cacheKey); - if (!lineMaterial) { - lineMaterial = new LineBasicMaterial(); - Material.prototype.copy.call(lineMaterial, material); - lineMaterial.color.copy(material.color); - lineMaterial.map = material.map; - this.cache.add(cacheKey, lineMaterial); - } - material = lineMaterial; - } - if (useDerivativeTangents || useVertexColors || useFlatShading) { - let cacheKey = "ClonedMaterial:" + material.uuid + ":"; - if (useDerivativeTangents) cacheKey += "derivative-tangents:"; - if (useVertexColors) cacheKey += "vertex-colors:"; - if (useFlatShading) cacheKey += "flat-shading:"; - let cachedMaterial = this.cache.get(cacheKey); - if (!cachedMaterial) { - cachedMaterial = material.clone(); - if (useVertexColors) cachedMaterial.vertexColors = true; - if (useFlatShading) cachedMaterial.flatShading = true; - if (useDerivativeTangents) { - if (cachedMaterial.normalScale) cachedMaterial.normalScale.y *= -1; - if (cachedMaterial.clearcoatNormalScale) cachedMaterial.clearcoatNormalScale.y *= -1; - } - this.cache.add(cacheKey, cachedMaterial); - this.associations.set(cachedMaterial, this.associations.get(material)); - } - material = cachedMaterial; - } - mesh.material = material; - } - getMaterialType() { - return MeshStandardMaterial; - } - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials - * @param {number} materialIndex - * @return {Promise} - */ - loadMaterial(materialIndex) { - const parser = this; - const json = this.json; - const extensions = this.extensions; - const materialDef = json.materials[materialIndex]; - let materialType; - const materialParams = {}; - const materialExtensions = materialDef.extensions || {}; - const pending = []; - if (materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]) { - const kmuExtension = extensions[EXTENSIONS.KHR_MATERIALS_UNLIT]; - materialType = kmuExtension.getMaterialType(); - pending.push(kmuExtension.extendParams(materialParams, materialDef, parser)); - } else { - const metallicRoughness = materialDef.pbrMetallicRoughness || {}; - materialParams.color = new Color(1, 1, 1); - materialParams.opacity = 1; - if (Array.isArray(metallicRoughness.baseColorFactor)) { - const array = metallicRoughness.baseColorFactor; - materialParams.color.setRGB(array[0], array[1], array[2], LinearSRGBColorSpace); - materialParams.opacity = array[3]; - } - if (metallicRoughness.baseColorTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "map", metallicRoughness.baseColorTexture, SRGBColorSpace)); - } - materialParams.metalness = metallicRoughness.metallicFactor !== void 0 ? metallicRoughness.metallicFactor : 1; - materialParams.roughness = metallicRoughness.roughnessFactor !== void 0 ? metallicRoughness.roughnessFactor : 1; - if (metallicRoughness.metallicRoughnessTexture !== void 0) { - pending.push(parser.assignTexture(materialParams, "metalnessMap", metallicRoughness.metallicRoughnessTexture)); - pending.push(parser.assignTexture(materialParams, "roughnessMap", metallicRoughness.metallicRoughnessTexture)); - } - materialType = this._invokeOne(function(ext) { - return ext.getMaterialType && ext.getMaterialType(materialIndex); - }); - pending.push(Promise.all(this._invokeAll(function(ext) { - return ext.extendMaterialParams && ext.extendMaterialParams(materialIndex, materialParams); - }))); - } - if (materialDef.doubleSided === true) { - materialParams.side = DoubleSide; - } - const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE; - if (alphaMode === ALPHA_MODES.BLEND) { - materialParams.transparent = true; - materialParams.depthWrite = false; - } else { - materialParams.transparent = false; - if (alphaMode === ALPHA_MODES.MASK) { - materialParams.alphaTest = materialDef.alphaCutoff !== void 0 ? materialDef.alphaCutoff : 0.5; - } - } - if (materialDef.normalTexture !== void 0 && materialType !== MeshBasicMaterial) { - pending.push(parser.assignTexture(materialParams, "normalMap", materialDef.normalTexture)); - materialParams.normalScale = new Vector2(1, 1); - if (materialDef.normalTexture.scale !== void 0) { - const scale = materialDef.normalTexture.scale; - materialParams.normalScale.set(scale, scale); - } - } - if (materialDef.occlusionTexture !== void 0 && materialType !== MeshBasicMaterial) { - pending.push(parser.assignTexture(materialParams, "aoMap", materialDef.occlusionTexture)); - if (materialDef.occlusionTexture.strength !== void 0) { - materialParams.aoMapIntensity = materialDef.occlusionTexture.strength; - } - } - if (materialDef.emissiveFactor !== void 0 && materialType !== MeshBasicMaterial) { - const emissiveFactor = materialDef.emissiveFactor; - materialParams.emissive = new Color().setRGB(emissiveFactor[0], emissiveFactor[1], emissiveFactor[2], LinearSRGBColorSpace); - } - if (materialDef.emissiveTexture !== void 0 && materialType !== MeshBasicMaterial) { - pending.push(parser.assignTexture(materialParams, "emissiveMap", materialDef.emissiveTexture, SRGBColorSpace)); - } - return Promise.all(pending).then(function() { - const material = new materialType(materialParams); - if (materialDef.name) material.name = materialDef.name; - assignExtrasToUserData(material, materialDef); - parser.associations.set(material, { materials: materialIndex }); - if (materialDef.extensions) addUnknownExtensionsToUserData(extensions, material, materialDef); - return material; - }); - } - /** When Object3D instances are targeted by animation, they need unique names. */ - createUniqueName(originalName) { - const sanitizedName = PropertyBinding.sanitizeNodeName(originalName || ""); - if (sanitizedName in this.nodeNamesUsed) { - return sanitizedName + "_" + ++this.nodeNamesUsed[sanitizedName]; - } else { - this.nodeNamesUsed[sanitizedName] = 0; - return sanitizedName; - } - } - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry - * - * Creates BufferGeometries from primitives. - * - * @param {Array} primitives - * @return {Promise>} - */ - loadGeometries(primitives) { - const parser = this; - const extensions = this.extensions; - const cache = this.primitiveCache; - function createDracoPrimitive(primitive) { - return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive, parser).then(function(geometry) { - return addPrimitiveAttributes(geometry, primitive, parser); - }); - } - const pending = []; - for (let i = 0, il = primitives.length; i < il; i++) { - const primitive = primitives[i]; - const cacheKey = createPrimitiveKey(primitive); - const cached = cache[cacheKey]; - if (cached) { - pending.push(cached.promise); - } else { - let geometryPromise; - if (primitive.extensions && primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) { - geometryPromise = createDracoPrimitive(primitive); - } else { - geometryPromise = addPrimitiveAttributes(new BufferGeometry(), primitive, parser); - } - cache[cacheKey] = { primitive, promise: geometryPromise }; - pending.push(geometryPromise); - } - } - return Promise.all(pending); - } - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes - * @param {number} meshIndex - * @return {Promise} - */ - loadMesh(meshIndex) { - const parser = this; - const json = this.json; - const extensions = this.extensions; - const meshDef = json.meshes[meshIndex]; - const primitives = meshDef.primitives; - const pending = []; - for (let i = 0, il = primitives.length; i < il; i++) { - const material = primitives[i].material === void 0 ? createDefaultMaterial(this.cache) : this.getDependency("material", primitives[i].material); - pending.push(material); - } - pending.push(parser.loadGeometries(primitives)); - return Promise.all(pending).then(function(results) { - const materials = results.slice(0, results.length - 1); - const geometries = results[results.length - 1]; - const meshes = []; - for (let i = 0, il = geometries.length; i < il; i++) { - const geometry = geometries[i]; - const primitive = primitives[i]; - let mesh; - const material = materials[i]; - if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || primitive.mode === void 0) { - mesh = meshDef.isSkinnedMesh === true ? new SkinnedMesh(geometry, material) : new Mesh(geometry, material); - if (mesh.isSkinnedMesh === true) { - mesh.normalizeSkinWeights(); - } - if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) { - mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleStripDrawMode); - } else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) { - mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleFanDrawMode); - } - } else if (primitive.mode === WEBGL_CONSTANTS.LINES) { - mesh = new LineSegments(geometry, material); - } else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) { - mesh = new Line(geometry, material); - } else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) { - mesh = new LineLoop(geometry, material); - } else if (primitive.mode === WEBGL_CONSTANTS.POINTS) { - mesh = new Points(geometry, material); - } else { - throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + primitive.mode); - } - if (Object.keys(mesh.geometry.morphAttributes).length > 0) { - updateMorphTargets(mesh, meshDef); - } - mesh.name = parser.createUniqueName(meshDef.name || "mesh_" + meshIndex); - assignExtrasToUserData(mesh, meshDef); - if (primitive.extensions) addUnknownExtensionsToUserData(extensions, mesh, primitive); - parser.assignFinalMaterial(mesh); - meshes.push(mesh); - } - for (let i = 0, il = meshes.length; i < il; i++) { - parser.associations.set(meshes[i], { - meshes: meshIndex, - primitives: i - }); - } - if (meshes.length === 1) { - if (meshDef.extensions) addUnknownExtensionsToUserData(extensions, meshes[0], meshDef); - return meshes[0]; - } - const group = new Group(); - if (meshDef.extensions) addUnknownExtensionsToUserData(extensions, group, meshDef); - parser.associations.set(group, { meshes: meshIndex }); - for (let i = 0, il = meshes.length; i < il; i++) { - group.add(meshes[i]); - } - return group; - }); - } - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras - * @param {number} cameraIndex - * @return {Promise} - */ - loadCamera(cameraIndex) { - let camera; - const cameraDef = this.json.cameras[cameraIndex]; - const params = cameraDef[cameraDef.type]; - if (!params) { - console.warn("THREE.GLTFLoader: Missing camera parameters."); - return; - } - if (cameraDef.type === "perspective") { - camera = new PerspectiveCamera(MathUtils.radToDeg(params.yfov), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6); - } else if (cameraDef.type === "orthographic") { - camera = new OrthographicCamera(-params.xmag, params.xmag, params.ymag, -params.ymag, params.znear, params.zfar); - } - if (cameraDef.name) camera.name = this.createUniqueName(cameraDef.name); - assignExtrasToUserData(camera, cameraDef); - return Promise.resolve(camera); - } - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins - * @param {number} skinIndex - * @return {Promise} - */ - loadSkin(skinIndex) { - const skinDef = this.json.skins[skinIndex]; - const pending = []; - for (let i = 0, il = skinDef.joints.length; i < il; i++) { - pending.push(this._loadNodeShallow(skinDef.joints[i])); - } - if (skinDef.inverseBindMatrices !== void 0) { - pending.push(this.getDependency("accessor", skinDef.inverseBindMatrices)); - } else { - pending.push(null); - } - return Promise.all(pending).then(function(results) { - const inverseBindMatrices = results.pop(); - const jointNodes = results; - const bones = []; - const boneInverses = []; - for (let i = 0, il = jointNodes.length; i < il; i++) { - const jointNode = jointNodes[i]; - if (jointNode) { - bones.push(jointNode); - const mat = new Matrix4(); - if (inverseBindMatrices !== null) { - mat.fromArray(inverseBindMatrices.array, i * 16); - } - boneInverses.push(mat); - } else { - console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', skinDef.joints[i]); - } - } - return new Skeleton(bones, boneInverses); - }); - } - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations - * @param {number} animationIndex - * @return {Promise} - */ - loadAnimation(animationIndex) { - const json = this.json; - const parser = this; - const animationDef = json.animations[animationIndex]; - const animationName = animationDef.name ? animationDef.name : "animation_" + animationIndex; - const pendingNodes = []; - const pendingInputAccessors = []; - const pendingOutputAccessors = []; - const pendingSamplers = []; - const pendingTargets = []; - for (let i = 0, il = animationDef.channels.length; i < il; i++) { - const channel = animationDef.channels[i]; - const sampler = animationDef.samplers[channel.sampler]; - const target = channel.target; - const name = target.node; - const input = animationDef.parameters !== void 0 ? animationDef.parameters[sampler.input] : sampler.input; - const output = animationDef.parameters !== void 0 ? animationDef.parameters[sampler.output] : sampler.output; - if (target.node === void 0) continue; - pendingNodes.push(this.getDependency("node", name)); - pendingInputAccessors.push(this.getDependency("accessor", input)); - pendingOutputAccessors.push(this.getDependency("accessor", output)); - pendingSamplers.push(sampler); - pendingTargets.push(target); - } - return Promise.all([ - Promise.all(pendingNodes), - Promise.all(pendingInputAccessors), - Promise.all(pendingOutputAccessors), - Promise.all(pendingSamplers), - Promise.all(pendingTargets) - ]).then(function(dependencies) { - const nodes = dependencies[0]; - const inputAccessors = dependencies[1]; - const outputAccessors = dependencies[2]; - const samplers = dependencies[3]; - const targets = dependencies[4]; - const tracks = []; - for (let i = 0, il = nodes.length; i < il; i++) { - const node = nodes[i]; - const inputAccessor = inputAccessors[i]; - const outputAccessor = outputAccessors[i]; - const sampler = samplers[i]; - const target = targets[i]; - if (node === void 0) continue; - if (node.updateMatrix) { - node.updateMatrix(); - } - const createdTracks = parser._createAnimationTracks(node, inputAccessor, outputAccessor, sampler, target); - if (createdTracks) { - for (let k = 0; k < createdTracks.length; k++) { - tracks.push(createdTracks[k]); - } - } - } - return new AnimationClip(animationName, void 0, tracks); - }); - } - createNodeMesh(nodeIndex) { - const json = this.json; - const parser = this; - const nodeDef = json.nodes[nodeIndex]; - if (nodeDef.mesh === void 0) return null; - return parser.getDependency("mesh", nodeDef.mesh).then(function(mesh) { - const node = parser._getNodeRef(parser.meshCache, nodeDef.mesh, mesh); - if (nodeDef.weights !== void 0) { - node.traverse(function(o) { - if (!o.isMesh) return; - for (let i = 0, il = nodeDef.weights.length; i < il; i++) { - o.morphTargetInfluences[i] = nodeDef.weights[i]; - } - }); - } - return node; - }); - } - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy - * @param {number} nodeIndex - * @return {Promise} - */ - loadNode(nodeIndex) { - const json = this.json; - const parser = this; - const nodeDef = json.nodes[nodeIndex]; - const nodePending = parser._loadNodeShallow(nodeIndex); - const childPending = []; - const childrenDef = nodeDef.children || []; - for (let i = 0, il = childrenDef.length; i < il; i++) { - childPending.push(parser.getDependency("node", childrenDef[i])); - } - const skeletonPending = nodeDef.skin === void 0 ? Promise.resolve(null) : parser.getDependency("skin", nodeDef.skin); - return Promise.all([ - nodePending, - Promise.all(childPending), - skeletonPending - ]).then(function(results) { - const node = results[0]; - const children = results[1]; - const skeleton = results[2]; - if (skeleton !== null) { - node.traverse(function(mesh) { - if (!mesh.isSkinnedMesh) return; - mesh.bind(skeleton, _identityMatrix); - }); - } - for (let i = 0, il = children.length; i < il; i++) { - node.add(children[i]); - } - return node; - }); - } - // ._loadNodeShallow() parses a single node. - // skin and child nodes are created and added in .loadNode() (no '_' prefix). - _loadNodeShallow(nodeIndex) { - const json = this.json; - const extensions = this.extensions; - const parser = this; - if (this.nodeCache[nodeIndex] !== void 0) { - return this.nodeCache[nodeIndex]; - } - const nodeDef = json.nodes[nodeIndex]; - const nodeName = nodeDef.name ? parser.createUniqueName(nodeDef.name) : ""; - const pending = []; - const meshPromise = parser._invokeOne(function(ext) { - return ext.createNodeMesh && ext.createNodeMesh(nodeIndex); - }); - if (meshPromise) { - pending.push(meshPromise); - } - if (nodeDef.camera !== void 0) { - pending.push(parser.getDependency("camera", nodeDef.camera).then(function(camera) { - return parser._getNodeRef(parser.cameraCache, nodeDef.camera, camera); - })); - } - parser._invokeAll(function(ext) { - return ext.createNodeAttachment && ext.createNodeAttachment(nodeIndex); - }).forEach(function(promise) { - pending.push(promise); - }); - this.nodeCache[nodeIndex] = Promise.all(pending).then(function(objects) { - let node; - if (nodeDef.isBone === true) { - node = new Bone(); - } else if (objects.length > 1) { - node = new Group(); - } else if (objects.length === 1) { - node = objects[0]; - } else { - node = new Object3D(); - } - if (node !== objects[0]) { - for (let i = 0, il = objects.length; i < il; i++) { - node.add(objects[i]); - } - } - if (nodeDef.name) { - node.userData.name = nodeDef.name; - node.name = nodeName; - } - assignExtrasToUserData(node, nodeDef); - if (nodeDef.extensions) addUnknownExtensionsToUserData(extensions, node, nodeDef); - if (nodeDef.matrix !== void 0) { - const matrix = new Matrix4(); - matrix.fromArray(nodeDef.matrix); - node.applyMatrix4(matrix); - } else { - if (nodeDef.translation !== void 0) { - node.position.fromArray(nodeDef.translation); - } - if (nodeDef.rotation !== void 0) { - node.quaternion.fromArray(nodeDef.rotation); - } - if (nodeDef.scale !== void 0) { - node.scale.fromArray(nodeDef.scale); - } - } - if (!parser.associations.has(node)) { - parser.associations.set(node, {}); - } - parser.associations.get(node).nodes = nodeIndex; - return node; - }); - return this.nodeCache[nodeIndex]; - } - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes - * @param {number} sceneIndex - * @return {Promise} - */ - loadScene(sceneIndex) { - const extensions = this.extensions; - const sceneDef = this.json.scenes[sceneIndex]; - const parser = this; - const scene = new Group(); - if (sceneDef.name) scene.name = parser.createUniqueName(sceneDef.name); - assignExtrasToUserData(scene, sceneDef); - if (sceneDef.extensions) addUnknownExtensionsToUserData(extensions, scene, sceneDef); - const nodeIds = sceneDef.nodes || []; - const pending = []; - for (let i = 0, il = nodeIds.length; i < il; i++) { - pending.push(parser.getDependency("node", nodeIds[i])); - } - return Promise.all(pending).then(function(nodes) { - for (let i = 0, il = nodes.length; i < il; i++) { - scene.add(nodes[i]); - } - const reduceAssociations = (node) => { - const reducedAssociations = /* @__PURE__ */ new Map(); - for (const [key, value] of parser.associations) { - if (key instanceof Material || key instanceof Texture) { - reducedAssociations.set(key, value); - } - } - node.traverse((node2) => { - const mappings = parser.associations.get(node2); - if (mappings != null) { - reducedAssociations.set(node2, mappings); - } - }); - return reducedAssociations; - }; - parser.associations = reduceAssociations(scene); - return scene; - }); - } - _createAnimationTracks(node, inputAccessor, outputAccessor, sampler, target) { - const tracks = []; - const targetName = node.name ? node.name : node.uuid; - const targetNames = []; - if (PATH_PROPERTIES[target.path] === PATH_PROPERTIES.weights) { - node.traverse(function(object) { - if (object.morphTargetInfluences) { - targetNames.push(object.name ? object.name : object.uuid); - } - }); - } else { - targetNames.push(targetName); - } - let TypedKeyframeTrack; - switch (PATH_PROPERTIES[target.path]) { - case PATH_PROPERTIES.weights: - TypedKeyframeTrack = NumberKeyframeTrack; - break; - case PATH_PROPERTIES.rotation: - TypedKeyframeTrack = QuaternionKeyframeTrack; - break; - case PATH_PROPERTIES.position: - case PATH_PROPERTIES.scale: - TypedKeyframeTrack = VectorKeyframeTrack; - break; - default: - switch (outputAccessor.itemSize) { - case 1: - TypedKeyframeTrack = NumberKeyframeTrack; - break; - case 2: - case 3: - default: - TypedKeyframeTrack = VectorKeyframeTrack; - break; - } - break; - } - const interpolation = sampler.interpolation !== void 0 ? INTERPOLATION[sampler.interpolation] : InterpolateLinear; - const outputArray = this._getArrayFromAccessor(outputAccessor); - for (let j = 0, jl = targetNames.length; j < jl; j++) { - const track = new TypedKeyframeTrack( - targetNames[j] + "." + PATH_PROPERTIES[target.path], - inputAccessor.array, - outputArray, - interpolation - ); - if (sampler.interpolation === "CUBICSPLINE") { - this._createCubicSplineTrackInterpolant(track); - } - tracks.push(track); - } - return tracks; - } - _getArrayFromAccessor(accessor) { - let outputArray = accessor.array; - if (accessor.normalized) { - const scale = getNormalizedComponentScale(outputArray.constructor); - const scaled = new Float32Array(outputArray.length); - for (let j = 0, jl = outputArray.length; j < jl; j++) { - scaled[j] = outputArray[j] * scale; - } - outputArray = scaled; - } - return outputArray; - } - _createCubicSplineTrackInterpolant(track) { - track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline(result) { - const interpolantType = this instanceof QuaternionKeyframeTrack ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant; - return new interpolantType(this.times, this.values, this.getValueSize() / 3, result); - }; - track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true; - } -}; -function computeBounds(geometry, primitiveDef, parser) { - const attributes = primitiveDef.attributes; - const box = new Box3(); - if (attributes.POSITION !== void 0) { - const accessor = parser.json.accessors[attributes.POSITION]; - const min = accessor.min; - const max = accessor.max; - if (min !== void 0 && max !== void 0) { - box.set( - new Vector3(min[0], min[1], min[2]), - new Vector3(max[0], max[1], max[2]) - ); - if (accessor.normalized) { - const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]); - box.min.multiplyScalar(boxScale); - box.max.multiplyScalar(boxScale); - } - } else { - console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION."); - return; - } - } else { - return; - } - const targets = primitiveDef.targets; - if (targets !== void 0) { - const maxDisplacement = new Vector3(); - const vector = new Vector3(); - for (let i = 0, il = targets.length; i < il; i++) { - const target = targets[i]; - if (target.POSITION !== void 0) { - const accessor = parser.json.accessors[target.POSITION]; - const min = accessor.min; - const max = accessor.max; - if (min !== void 0 && max !== void 0) { - vector.setX(Math.max(Math.abs(min[0]), Math.abs(max[0]))); - vector.setY(Math.max(Math.abs(min[1]), Math.abs(max[1]))); - vector.setZ(Math.max(Math.abs(min[2]), Math.abs(max[2]))); - if (accessor.normalized) { - const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]); - vector.multiplyScalar(boxScale); - } - maxDisplacement.max(vector); - } else { - console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION."); - } - } - } - box.expandByVector(maxDisplacement); - } - geometry.boundingBox = box; - const sphere = new Sphere(); - box.getCenter(sphere.center); - sphere.radius = box.min.distanceTo(box.max) / 2; - geometry.boundingSphere = sphere; -} -function addPrimitiveAttributes(geometry, primitiveDef, parser) { - const attributes = primitiveDef.attributes; - const pending = []; - function assignAttributeAccessor(accessorIndex, attributeName) { - return parser.getDependency("accessor", accessorIndex).then(function(accessor) { - geometry.setAttribute(attributeName, accessor); - }); - } - for (const gltfAttributeName in attributes) { - const threeAttributeName = ATTRIBUTES[gltfAttributeName] || gltfAttributeName.toLowerCase(); - if (threeAttributeName in geometry.attributes) continue; - pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName)); - } - if (primitiveDef.indices !== void 0 && !geometry.index) { - const accessor = parser.getDependency("accessor", primitiveDef.indices).then(function(accessor2) { - geometry.setIndex(accessor2); - }); - pending.push(accessor); - } - if (ColorManagement.workingColorSpace !== LinearSRGBColorSpace && "COLOR_0" in attributes) { - console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ColorManagement.workingColorSpace}" not supported.`); - } - assignExtrasToUserData(geometry, primitiveDef); - computeBounds(geometry, primitiveDef, parser); - return Promise.all(pending).then(function() { - return primitiveDef.targets !== void 0 ? addMorphTargets(geometry, primitiveDef.targets, parser) : geometry; - }); -} - -export { - mergeGeometries, - deepCloneAttribute, - mergeVertices, - mergeGroups, - BufferGeometryUtils_exports, - GLTFLoader -}; -//# sourceMappingURL=chunk-LBH6F3OL.js.map diff --git a/site/interface/site/node_modules/.vite/deps/chunk-LBH6F3OL.js.map b/site/interface/site/node_modules/.vite/deps/chunk-LBH6F3OL.js.map deleted file mode 100644 index 4121c2b..0000000 --- a/site/interface/site/node_modules/.vite/deps/chunk-LBH6F3OL.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../three/examples/jsm/utils/BufferGeometryUtils.js", "../../three/examples/jsm/loaders/GLTFLoader.js"], - "sourcesContent": ["import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tFloat32BufferAttribute,\n\tInstancedBufferAttribute,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tTrianglesDrawMode,\n\tVector3,\n} from 'three';\n\nfunction computeMikkTSpaceTangents( geometry, MikkTSpace, negateSign = true ) {\n\n\tif ( ! MikkTSpace || ! MikkTSpace.isReady ) {\n\n\t\tthrow new Error( 'BufferGeometryUtils: Initialized MikkTSpace library required.' );\n\n\t}\n\n\tif ( ! geometry.hasAttribute( 'position' ) || ! geometry.hasAttribute( 'normal' ) || ! geometry.hasAttribute( 'uv' ) ) {\n\n\t\tthrow new Error( 'BufferGeometryUtils: Tangents require \"position\", \"normal\", and \"uv\" attributes.' );\n\n\t}\n\n\tfunction getAttributeArray( attribute ) {\n\n\t\tif ( attribute.normalized || attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tconst dstArray = new Float32Array( attribute.count * attribute.itemSize );\n\n\t\t\tfor ( let i = 0, j = 0; i < attribute.count; i ++ ) {\n\n\t\t\t\tdstArray[ j ++ ] = attribute.getX( i );\n\t\t\t\tdstArray[ j ++ ] = attribute.getY( i );\n\n\t\t\t\tif ( attribute.itemSize > 2 ) {\n\n\t\t\t\t\tdstArray[ j ++ ] = attribute.getZ( i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn dstArray;\n\n\t\t}\n\n\t\tif ( attribute.array instanceof Float32Array ) {\n\n\t\t\treturn attribute.array;\n\n\t\t}\n\n\t\treturn new Float32Array( attribute.array );\n\n\t}\n\n\t// MikkTSpace algorithm requires non-indexed input.\n\n\tconst _geometry = geometry.index ? geometry.toNonIndexed() : geometry;\n\n\t// Compute vertex tangents.\n\n\tconst tangents = MikkTSpace.generateTangents(\n\n\t\tgetAttributeArray( _geometry.attributes.position ),\n\t\tgetAttributeArray( _geometry.attributes.normal ),\n\t\tgetAttributeArray( _geometry.attributes.uv )\n\n\t);\n\n\t// Texture coordinate convention of glTF differs from the apparent\n\t// default of the MikkTSpace library; .w component must be flipped.\n\n\tif ( negateSign ) {\n\n\t\tfor ( let i = 3; i < tangents.length; i += 4 ) {\n\n\t\t\ttangents[ i ] *= - 1;\n\n\t\t}\n\n\t}\n\n\t//\n\n\t_geometry.setAttribute( 'tangent', new BufferAttribute( tangents, 4 ) );\n\n\tif ( geometry !== _geometry ) {\n\n\t\tgeometry.copy( _geometry );\n\n\t}\n\n\treturn geometry;\n\n}\n\n/**\n * @param {Array} geometries\n * @param {Boolean} useGroups\n * @return {BufferGeometry}\n */\nfunction mergeGeometries( geometries, useGroups = false ) {\n\n\tconst isIndexed = geometries[ 0 ].index !== null;\n\n\tconst attributesUsed = new Set( Object.keys( geometries[ 0 ].attributes ) );\n\tconst morphAttributesUsed = new Set( Object.keys( geometries[ 0 ].morphAttributes ) );\n\n\tconst attributes = {};\n\tconst morphAttributes = {};\n\n\tconst morphTargetsRelative = geometries[ 0 ].morphTargetsRelative;\n\n\tconst mergedGeometry = new BufferGeometry();\n\n\tlet offset = 0;\n\n\tfor ( let i = 0; i < geometries.length; ++ i ) {\n\n\t\tconst geometry = geometries[ i ];\n\t\tlet attributesCount = 0;\n\n\t\t// ensure that all geometries are indexed, or none\n\n\t\tif ( isIndexed !== ( geometry.index !== null ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// gather attributes, exit early if they're different\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tif ( ! attributesUsed.has( name ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure \"' + name + '\" attribute exists among all geometries, or in none of them.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tif ( attributes[ name ] === undefined ) attributes[ name ] = [];\n\n\t\t\tattributes[ name ].push( geometry.attributes[ name ] );\n\n\t\t\tattributesCount ++;\n\n\t\t}\n\n\t\t// ensure geometries have the same number of attributes\n\n\t\tif ( attributesCount !== attributesUsed.size ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. Make sure all geometries have the same number of attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// gather morph attributes, exit early if they're different\n\n\t\tif ( morphTargetsRelative !== geometry.morphTargetsRelative ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. .morphTargetsRelative must be consistent throughout all geometries.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tif ( ! morphAttributesUsed.has( name ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. .morphAttributes must be consistent throughout all geometries.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tif ( morphAttributes[ name ] === undefined ) morphAttributes[ name ] = [];\n\n\t\t\tmorphAttributes[ name ].push( geometry.morphAttributes[ name ] );\n\n\t\t}\n\n\t\tif ( useGroups ) {\n\n\t\t\tlet count;\n\n\t\t\tif ( isIndexed ) {\n\n\t\t\t\tcount = geometry.index.count;\n\n\t\t\t} else if ( geometry.attributes.position !== undefined ) {\n\n\t\t\t\tcount = geometry.attributes.position.count;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. The geometry must have either an index or a position attribute' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tmergedGeometry.addGroup( offset, count, i );\n\n\t\t\toffset += count;\n\n\t\t}\n\n\t}\n\n\t// merge indices\n\n\tif ( isIndexed ) {\n\n\t\tlet indexOffset = 0;\n\t\tconst mergedIndex = [];\n\n\t\tfor ( let i = 0; i < geometries.length; ++ i ) {\n\n\t\t\tconst index = geometries[ i ].index;\n\n\t\t\tfor ( let j = 0; j < index.count; ++ j ) {\n\n\t\t\t\tmergedIndex.push( index.getX( j ) + indexOffset );\n\n\t\t\t}\n\n\t\t\tindexOffset += geometries[ i ].attributes.position.count;\n\n\t\t}\n\n\t\tmergedGeometry.setIndex( mergedIndex );\n\n\t}\n\n\t// merge attributes\n\n\tfor ( const name in attributes ) {\n\n\t\tconst mergedAttribute = mergeAttributes( attributes[ name ] );\n\n\t\tif ( ! mergedAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the ' + name + ' attribute.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tmergedGeometry.setAttribute( name, mergedAttribute );\n\n\t}\n\n\t// merge morph attributes\n\n\tfor ( const name in morphAttributes ) {\n\n\t\tconst numMorphTargets = morphAttributes[ name ][ 0 ].length;\n\n\t\tif ( numMorphTargets === 0 ) break;\n\n\t\tmergedGeometry.morphAttributes = mergedGeometry.morphAttributes || {};\n\t\tmergedGeometry.morphAttributes[ name ] = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; ++ i ) {\n\n\t\t\tconst morphAttributesToMerge = [];\n\n\t\t\tfor ( let j = 0; j < morphAttributes[ name ].length; ++ j ) {\n\n\t\t\t\tmorphAttributesToMerge.push( morphAttributes[ name ][ j ][ i ] );\n\n\t\t\t}\n\n\t\t\tconst mergedMorphAttribute = mergeAttributes( morphAttributesToMerge );\n\n\t\t\tif ( ! mergedMorphAttribute ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the ' + name + ' morphAttribute.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tmergedGeometry.morphAttributes[ name ].push( mergedMorphAttribute );\n\n\t\t}\n\n\t}\n\n\treturn mergedGeometry;\n\n}\n\n/**\n * @param {Array} attributes\n * @return {BufferAttribute}\n */\nfunction mergeAttributes( attributes ) {\n\n\tlet TypedArray;\n\tlet itemSize;\n\tlet normalized;\n\tlet gpuType = - 1;\n\tlet arrayLength = 0;\n\n\tfor ( let i = 0; i < attributes.length; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\n\t\tif ( TypedArray === undefined ) TypedArray = attribute.array.constructor;\n\t\tif ( TypedArray !== attribute.array.constructor ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( itemSize === undefined ) itemSize = attribute.itemSize;\n\t\tif ( itemSize !== attribute.itemSize ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( normalized === undefined ) normalized = attribute.normalized;\n\t\tif ( normalized !== attribute.normalized ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( gpuType === - 1 ) gpuType = attribute.gpuType;\n\t\tif ( gpuType !== attribute.gpuType ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tarrayLength += attribute.count * itemSize;\n\n\t}\n\n\tconst array = new TypedArray( arrayLength );\n\tconst result = new BufferAttribute( array, itemSize, normalized );\n\tlet offset = 0;\n\n\tfor ( let i = 0; i < attributes.length; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tconst tupleOffset = offset / itemSize;\n\t\t\tfor ( let j = 0, l = attribute.count; j < l; j ++ ) {\n\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tconst value = attribute.getComponent( j, c );\n\t\t\t\t\tresult.setComponent( j + tupleOffset, c, value );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tarray.set( attribute.array, offset );\n\n\t\t}\n\n\t\toffset += attribute.count * itemSize;\n\n\t}\n\n\tif ( gpuType !== undefined ) {\n\n\t\tresult.gpuType = gpuType;\n\n\t}\n\n\treturn result;\n\n}\n\n/**\n * @param {BufferAttribute}\n * @return {BufferAttribute}\n */\nexport function deepCloneAttribute( attribute ) {\n\n\tif ( attribute.isInstancedInterleavedBufferAttribute || attribute.isInterleavedBufferAttribute ) {\n\n\t\treturn deinterleaveAttribute( attribute );\n\n\t}\n\n\tif ( attribute.isInstancedBufferAttribute ) {\n\n\t\treturn new InstancedBufferAttribute().copy( attribute );\n\n\t}\n\n\treturn new BufferAttribute().copy( attribute );\n\n}\n\n/**\n * @param {Array} attributes\n * @return {Array}\n */\nfunction interleaveAttributes( attributes ) {\n\n\t// Interleaves the provided attributes into an InterleavedBuffer and returns\n\t// a set of InterleavedBufferAttributes for each attribute\n\tlet TypedArray;\n\tlet arrayLength = 0;\n\tlet stride = 0;\n\n\t// calculate the length and type of the interleavedBuffer\n\tfor ( let i = 0, l = attributes.length; i < l; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\n\t\tif ( TypedArray === undefined ) TypedArray = attribute.array.constructor;\n\t\tif ( TypedArray !== attribute.array.constructor ) {\n\n\t\t\tconsole.error( 'AttributeBuffers of different types cannot be interleaved' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tarrayLength += attribute.array.length;\n\t\tstride += attribute.itemSize;\n\n\t}\n\n\t// Create the set of buffer attributes\n\tconst interleavedBuffer = new InterleavedBuffer( new TypedArray( arrayLength ), stride );\n\tlet offset = 0;\n\tconst res = [];\n\tconst getters = [ 'getX', 'getY', 'getZ', 'getW' ];\n\tconst setters = [ 'setX', 'setY', 'setZ', 'setW' ];\n\n\tfor ( let j = 0, l = attributes.length; j < l; j ++ ) {\n\n\t\tconst attribute = attributes[ j ];\n\t\tconst itemSize = attribute.itemSize;\n\t\tconst count = attribute.count;\n\t\tconst iba = new InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, attribute.normalized );\n\t\tres.push( iba );\n\n\t\toffset += itemSize;\n\n\t\t// Move the data for each attribute into the new interleavedBuffer\n\t\t// at the appropriate offset\n\t\tfor ( let c = 0; c < count; c ++ ) {\n\n\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\tiba[ setters[ k ] ]( c, attribute[ getters[ k ] ]( c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn res;\n\n}\n\n// returns a new, non-interleaved version of the provided attribute\nexport function deinterleaveAttribute( attribute ) {\n\n\tconst cons = attribute.data.array.constructor;\n\tconst count = attribute.count;\n\tconst itemSize = attribute.itemSize;\n\tconst normalized = attribute.normalized;\n\n\tconst array = new cons( count * itemSize );\n\tlet newAttribute;\n\tif ( attribute.isInstancedInterleavedBufferAttribute ) {\n\n\t\tnewAttribute = new InstancedBufferAttribute( array, itemSize, normalized, attribute.meshPerAttribute );\n\n\t} else {\n\n\t\tnewAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t}\n\n\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\tnewAttribute.setX( i, attribute.getX( i ) );\n\n\t\tif ( itemSize >= 2 ) {\n\n\t\t\tnewAttribute.setY( i, attribute.getY( i ) );\n\n\t\t}\n\n\t\tif ( itemSize >= 3 ) {\n\n\t\t\tnewAttribute.setZ( i, attribute.getZ( i ) );\n\n\t\t}\n\n\t\tif ( itemSize >= 4 ) {\n\n\t\t\tnewAttribute.setW( i, attribute.getW( i ) );\n\n\t\t}\n\n\t}\n\n\treturn newAttribute;\n\n}\n\n// deinterleaves all attributes on the geometry\nexport function deinterleaveGeometry( geometry ) {\n\n\tconst attributes = geometry.attributes;\n\tconst morphTargets = geometry.morphTargets;\n\tconst attrMap = new Map();\n\n\tfor ( const key in attributes ) {\n\n\t\tconst attr = attributes[ key ];\n\t\tif ( attr.isInterleavedBufferAttribute ) {\n\n\t\t\tif ( ! attrMap.has( attr ) ) {\n\n\t\t\t\tattrMap.set( attr, deinterleaveAttribute( attr ) );\n\n\t\t\t}\n\n\t\t\tattributes[ key ] = attrMap.get( attr );\n\n\t\t}\n\n\t}\n\n\tfor ( const key in morphTargets ) {\n\n\t\tconst attr = morphTargets[ key ];\n\t\tif ( attr.isInterleavedBufferAttribute ) {\n\n\t\t\tif ( ! attrMap.has( attr ) ) {\n\n\t\t\t\tattrMap.set( attr, deinterleaveAttribute( attr ) );\n\n\t\t\t}\n\n\t\t\tmorphTargets[ key ] = attrMap.get( attr );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @return {number}\n */\nfunction estimateBytesUsed( geometry ) {\n\n\t// Return the estimated memory used by this geometry in bytes\n\t// Calculate using itemSize, count, and BYTES_PER_ELEMENT to account\n\t// for InterleavedBufferAttributes.\n\tlet mem = 0;\n\tfor ( const name in geometry.attributes ) {\n\n\t\tconst attr = geometry.getAttribute( name );\n\t\tmem += attr.count * attr.itemSize * attr.array.BYTES_PER_ELEMENT;\n\n\t}\n\n\tconst indices = geometry.getIndex();\n\tmem += indices ? indices.count * indices.itemSize * indices.array.BYTES_PER_ELEMENT : 0;\n\treturn mem;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {number} tolerance\n * @return {BufferGeometry}\n */\nfunction mergeVertices( geometry, tolerance = 1e-4 ) {\n\n\ttolerance = Math.max( tolerance, Number.EPSILON );\n\n\t// Generate an index buffer if the geometry doesn't have one, or optimize it\n\t// if it's already available.\n\tconst hashToIndex = {};\n\tconst indices = geometry.getIndex();\n\tconst positions = geometry.getAttribute( 'position' );\n\tconst vertexCount = indices ? indices.count : positions.count;\n\n\t// next value for triangle indices\n\tlet nextIndex = 0;\n\n\t// attributes and new attribute arrays\n\tconst attributeNames = Object.keys( geometry.attributes );\n\tconst tmpAttributes = {};\n\tconst tmpMorphAttributes = {};\n\tconst newIndices = [];\n\tconst getters = [ 'getX', 'getY', 'getZ', 'getW' ];\n\tconst setters = [ 'setX', 'setY', 'setZ', 'setW' ];\n\n\t// Initialize the arrays, allocating space conservatively. Extra\n\t// space will be trimmed in the last step.\n\tfor ( let i = 0, l = attributeNames.length; i < l; i ++ ) {\n\n\t\tconst name = attributeNames[ i ];\n\t\tconst attr = geometry.attributes[ name ];\n\n\t\ttmpAttributes[ name ] = new attr.constructor(\n\t\t\tnew attr.array.constructor( attr.count * attr.itemSize ),\n\t\t\tattr.itemSize,\n\t\t\tattr.normalized\n\t\t);\n\n\t\tconst morphAttributes = geometry.morphAttributes[ name ];\n\t\tif ( morphAttributes ) {\n\n\t\t\tif ( ! tmpMorphAttributes[ name ] ) tmpMorphAttributes[ name ] = [];\n\t\t\tmorphAttributes.forEach( ( morphAttr, i ) => {\n\n\t\t\t\tconst array = new morphAttr.array.constructor( morphAttr.count * morphAttr.itemSize );\n\t\t\t\ttmpMorphAttributes[ name ][ i ] = new morphAttr.constructor( array, morphAttr.itemSize, morphAttr.normalized );\n\n\t\t\t} );\n\n\t\t}\n\n\t}\n\n\t// convert the error tolerance to an amount of decimal places to truncate to\n\tconst halfTolerance = tolerance * 0.5;\n\tconst exponent = Math.log10( 1 / tolerance );\n\tconst hashMultiplier = Math.pow( 10, exponent );\n\tconst hashAdditive = halfTolerance * hashMultiplier;\n\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\tconst index = indices ? indices.getX( i ) : i;\n\n\t\t// Generate a hash for the vertex attributes at the current index 'i'\n\t\tlet hash = '';\n\t\tfor ( let j = 0, l = attributeNames.length; j < l; j ++ ) {\n\n\t\t\tconst name = attributeNames[ j ];\n\t\t\tconst attribute = geometry.getAttribute( name );\n\t\t\tconst itemSize = attribute.itemSize;\n\n\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\t// double tilde truncates the decimal value\n\t\t\t\thash += `${ ~ ~ ( attribute[ getters[ k ] ]( index ) * hashMultiplier + hashAdditive ) },`;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add another reference to the vertex if it's already\n\t\t// used by another index\n\t\tif ( hash in hashToIndex ) {\n\n\t\t\tnewIndices.push( hashToIndex[ hash ] );\n\n\t\t} else {\n\n\t\t\t// copy data to the new index in the temporary attributes\n\t\t\tfor ( let j = 0, l = attributeNames.length; j < l; j ++ ) {\n\n\t\t\t\tconst name = attributeNames[ j ];\n\t\t\t\tconst attribute = geometry.getAttribute( name );\n\t\t\t\tconst morphAttributes = geometry.morphAttributes[ name ];\n\t\t\t\tconst itemSize = attribute.itemSize;\n\t\t\t\tconst newArray = tmpAttributes[ name ];\n\t\t\t\tconst newMorphArrays = tmpMorphAttributes[ name ];\n\n\t\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\t\tconst getterFunc = getters[ k ];\n\t\t\t\t\tconst setterFunc = setters[ k ];\n\t\t\t\t\tnewArray[ setterFunc ]( nextIndex, attribute[ getterFunc ]( index ) );\n\n\t\t\t\t\tif ( morphAttributes ) {\n\n\t\t\t\t\t\tfor ( let m = 0, ml = morphAttributes.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\t\tnewMorphArrays[ m ][ setterFunc ]( nextIndex, morphAttributes[ m ][ getterFunc ]( index ) );\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\thashToIndex[ hash ] = nextIndex;\n\t\t\tnewIndices.push( nextIndex );\n\t\t\tnextIndex ++;\n\n\t\t}\n\n\t}\n\n\t// generate result BufferGeometry\n\tconst result = geometry.clone();\n\tfor ( const name in geometry.attributes ) {\n\n\t\tconst tmpAttribute = tmpAttributes[ name ];\n\n\t\tresult.setAttribute( name, new tmpAttribute.constructor(\n\t\t\ttmpAttribute.array.slice( 0, nextIndex * tmpAttribute.itemSize ),\n\t\t\ttmpAttribute.itemSize,\n\t\t\ttmpAttribute.normalized,\n\t\t) );\n\n\t\tif ( ! ( name in tmpMorphAttributes ) ) continue;\n\n\t\tfor ( let j = 0; j < tmpMorphAttributes[ name ].length; j ++ ) {\n\n\t\t\tconst tmpMorphAttribute = tmpMorphAttributes[ name ][ j ];\n\n\t\t\tresult.morphAttributes[ name ][ j ] = new tmpMorphAttribute.constructor(\n\t\t\t\ttmpMorphAttribute.array.slice( 0, nextIndex * tmpMorphAttribute.itemSize ),\n\t\t\t\ttmpMorphAttribute.itemSize,\n\t\t\t\ttmpMorphAttribute.normalized,\n\t\t\t);\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tresult.setIndex( newIndices );\n\n\treturn result;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {number} drawMode\n * @return {BufferGeometry}\n */\nfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\tif ( drawMode === TrianglesDrawMode ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.' );\n\t\treturn geometry;\n\n\t}\n\n\tif ( drawMode === TriangleFanDrawMode || drawMode === TriangleStripDrawMode ) {\n\n\t\tlet index = geometry.getIndex();\n\n\t\t// generate index if not present\n\n\t\tif ( index === null ) {\n\n\t\t\tconst indices = [];\n\n\t\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\t\t\tindices.push( i );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setIndex( indices );\n\t\t\t\tindex = geometry.getIndex();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst numberOfTriangles = index.count - 2;\n\t\tconst newIndices = [];\n\n\t\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t\t// gl.TRIANGLE_FAN\n\n\t\t\tfor ( let i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// gl.TRIANGLE_STRIP\n\n\t\t\tfor ( let i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t\t}\n\n\t\t// build final geometry\n\n\t\tconst newGeometry = geometry.clone();\n\t\tnewGeometry.setIndex( newIndices );\n\t\tnewGeometry.clearGroups();\n\n\t\treturn newGeometry;\n\n\t} else {\n\n\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:', drawMode );\n\t\treturn geometry;\n\n\t}\n\n}\n\n/**\n * Calculates the morphed attributes of a morphed/skinned BufferGeometry.\n * Helpful for Raytracing or Decals.\n * @param {Mesh | Line | Points} object An instance of Mesh, Line or Points.\n * @return {Object} An Object with original position/normal attributes and morphed ones.\n */\nfunction computeMorphedAttributes( object ) {\n\n\tconst _vA = new Vector3();\n\tconst _vB = new Vector3();\n\tconst _vC = new Vector3();\n\n\tconst _tempA = new Vector3();\n\tconst _tempB = new Vector3();\n\tconst _tempC = new Vector3();\n\n\tconst _morphA = new Vector3();\n\tconst _morphB = new Vector3();\n\tconst _morphC = new Vector3();\n\n\tfunction _calculateMorphedAttributeData(\n\t\tobject,\n\t\tattribute,\n\t\tmorphAttribute,\n\t\tmorphTargetsRelative,\n\t\ta,\n\t\tb,\n\t\tc,\n\t\tmodifiedAttributeArray\n\t) {\n\n\t\t_vA.fromBufferAttribute( attribute, a );\n\t\t_vB.fromBufferAttribute( attribute, b );\n\t\t_vC.fromBufferAttribute( attribute, c );\n\n\t\tconst morphInfluences = object.morphTargetInfluences;\n\n\t\tif ( morphAttribute && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\t\t\t_morphB.set( 0, 0, 0 );\n\t\t\t_morphC.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morph = morphAttribute[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morph, a );\n\t\t\t\t_tempB.fromBufferAttribute( morph, b );\n\t\t\t\t_tempC.fromBufferAttribute( morph, c );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_vA.add( _morphA );\n\t\t\t_vB.add( _morphB );\n\t\t\t_vC.add( _morphC );\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tobject.applyBoneTransform( a, _vA );\n\t\t\tobject.applyBoneTransform( b, _vB );\n\t\t\tobject.applyBoneTransform( c, _vC );\n\n\t\t}\n\n\t\tmodifiedAttributeArray[ a * 3 + 0 ] = _vA.x;\n\t\tmodifiedAttributeArray[ a * 3 + 1 ] = _vA.y;\n\t\tmodifiedAttributeArray[ a * 3 + 2 ] = _vA.z;\n\t\tmodifiedAttributeArray[ b * 3 + 0 ] = _vB.x;\n\t\tmodifiedAttributeArray[ b * 3 + 1 ] = _vB.y;\n\t\tmodifiedAttributeArray[ b * 3 + 2 ] = _vB.z;\n\t\tmodifiedAttributeArray[ c * 3 + 0 ] = _vC.x;\n\t\tmodifiedAttributeArray[ c * 3 + 1 ] = _vC.y;\n\t\tmodifiedAttributeArray[ c * 3 + 2 ] = _vC.z;\n\n\t}\n\n\tconst geometry = object.geometry;\n\tconst material = object.material;\n\n\tlet a, b, c;\n\tconst index = geometry.index;\n\tconst positionAttribute = geometry.attributes.position;\n\tconst morphPosition = geometry.morphAttributes.position;\n\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\tconst normalAttribute = geometry.attributes.normal;\n\tconst morphNormal = geometry.morphAttributes.position;\n\n\tconst groups = geometry.groups;\n\tconst drawRange = geometry.drawRange;\n\tlet i, j, il, jl;\n\tlet group;\n\tlet start, end;\n\n\tconst modifiedPosition = new Float32Array( positionAttribute.count * positionAttribute.itemSize );\n\tconst modifiedNormal = new Float32Array( normalAttribute.count * normalAttribute.itemSize );\n\n\tif ( index !== null ) {\n\n\t\t// indexed buffer geometry\n\n\t\tif ( Array.isArray( material ) ) {\n\n\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\tgroup = groups[ i ];\n\n\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\ta = index.getX( j );\n\t\t\t\t\tb = index.getX( j + 1 );\n\t\t\t\t\tc = index.getX( j + 2 );\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tpositionAttribute,\n\t\t\t\t\t\tmorphPosition,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedPosition\n\t\t\t\t\t);\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tnormalAttribute,\n\t\t\t\t\t\tmorphNormal,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedNormal\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\tstart = Math.max( 0, drawRange.start );\n\t\t\tend = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\ta = index.getX( i );\n\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\tc = index.getX( i + 2 );\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tpositionAttribute,\n\t\t\t\t\tmorphPosition,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedPosition\n\t\t\t\t);\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tnormalAttribute,\n\t\t\t\t\tmorphNormal,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedNormal\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// non-indexed buffer geometry\n\n\t\tif ( Array.isArray( material ) ) {\n\n\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\tgroup = groups[ i ];\n\n\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\ta = j;\n\t\t\t\t\tb = j + 1;\n\t\t\t\t\tc = j + 2;\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tpositionAttribute,\n\t\t\t\t\t\tmorphPosition,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedPosition\n\t\t\t\t\t);\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tnormalAttribute,\n\t\t\t\t\t\tmorphNormal,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedNormal\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\tstart = Math.max( 0, drawRange.start );\n\t\t\tend = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\ta = i;\n\t\t\t\tb = i + 1;\n\t\t\t\tc = i + 2;\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tpositionAttribute,\n\t\t\t\t\tmorphPosition,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedPosition\n\t\t\t\t);\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tnormalAttribute,\n\t\t\t\t\tmorphNormal,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedNormal\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tconst morphedPositionAttribute = new Float32BufferAttribute( modifiedPosition, 3 );\n\tconst morphedNormalAttribute = new Float32BufferAttribute( modifiedNormal, 3 );\n\n\treturn {\n\n\t\tpositionAttribute: positionAttribute,\n\t\tnormalAttribute: normalAttribute,\n\t\tmorphedPositionAttribute: morphedPositionAttribute,\n\t\tmorphedNormalAttribute: morphedNormalAttribute\n\n\t};\n\n}\n\nfunction mergeGroups( geometry ) {\n\n\tif ( geometry.groups.length === 0 ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometryUtils.mergeGroups(): No groups are defined. Nothing to merge.' );\n\t\treturn geometry;\n\n\t}\n\n\tlet groups = geometry.groups;\n\n\t// sort groups by material index\n\n\tgroups = groups.sort( ( a, b ) => {\n\n\t\tif ( a.materialIndex !== b.materialIndex ) return a.materialIndex - b.materialIndex;\n\n\t\treturn a.start - b.start;\n\n\t} );\n\n\t// create index for non-indexed geometries\n\n\tif ( geometry.getIndex() === null ) {\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\t\tconst indices = [];\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i += 3 ) {\n\n\t\t\tindices.push( i, i + 1, i + 2 );\n\n\t\t}\n\n\t\tgeometry.setIndex( indices );\n\n\t}\n\n\t// sort index\n\n\tconst index = geometry.getIndex();\n\n\tconst newIndices = [];\n\n\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tconst groupStart = group.start;\n\t\tconst groupLength = groupStart + group.count;\n\n\t\tfor ( let j = groupStart; j < groupLength; j ++ ) {\n\n\t\t\tnewIndices.push( index.getX( j ) );\n\n\t\t}\n\n\t}\n\n\tgeometry.dispose(); // Required to force buffer recreation\n\tgeometry.setIndex( newIndices );\n\n\t// update groups indices\n\n\tlet start = 0;\n\n\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tgroup.start = start;\n\t\tstart += group.count;\n\n\t}\n\n\t// merge groups\n\n\tlet currentGroup = groups[ 0 ];\n\n\tgeometry.groups = [ currentGroup ];\n\n\tfor ( let i = 1; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tif ( currentGroup.materialIndex === group.materialIndex ) {\n\n\t\t\tcurrentGroup.count += group.count;\n\n\t\t} else {\n\n\t\t\tcurrentGroup = group;\n\t\t\tgeometry.groups.push( currentGroup );\n\n\t\t}\n\n\t}\n\n\treturn geometry;\n\n}\n\n\n/**\n * Modifies the supplied geometry if it is non-indexed, otherwise creates a new,\n * non-indexed geometry. Returns the geometry with smooth normals everywhere except\n * faces that meet at an angle greater than the crease angle.\n *\n * @param {BufferGeometry} geometry\n * @param {number} [creaseAngle]\n * @return {BufferGeometry}\n */\nfunction toCreasedNormals( geometry, creaseAngle = Math.PI / 3 /* 60 degrees */ ) {\n\n\tconst creaseDot = Math.cos( creaseAngle );\n\tconst hashMultiplier = ( 1 + 1e-10 ) * 1e2;\n\n\t// reusable vectors\n\tconst verts = [ new Vector3(), new Vector3(), new Vector3() ];\n\tconst tempVec1 = new Vector3();\n\tconst tempVec2 = new Vector3();\n\tconst tempNorm = new Vector3();\n\tconst tempNorm2 = new Vector3();\n\n\t// hashes a vector\n\tfunction hashVertex( v ) {\n\n\t\tconst x = ~ ~ ( v.x * hashMultiplier );\n\t\tconst y = ~ ~ ( v.y * hashMultiplier );\n\t\tconst z = ~ ~ ( v.z * hashMultiplier );\n\t\treturn `${x},${y},${z}`;\n\n\t}\n\n\t// BufferGeometry.toNonIndexed() warns if the geometry is non-indexed\n\t// and returns the original geometry\n\tconst resultGeometry = geometry.index ? geometry.toNonIndexed() : geometry;\n\tconst posAttr = resultGeometry.attributes.position;\n\tconst vertexMap = {};\n\n\t// find all the normals shared by commonly located vertices\n\tfor ( let i = 0, l = posAttr.count / 3; i < l; i ++ ) {\n\n\t\tconst i3 = 3 * i;\n\t\tconst a = verts[ 0 ].fromBufferAttribute( posAttr, i3 + 0 );\n\t\tconst b = verts[ 1 ].fromBufferAttribute( posAttr, i3 + 1 );\n\t\tconst c = verts[ 2 ].fromBufferAttribute( posAttr, i3 + 2 );\n\n\t\ttempVec1.subVectors( c, b );\n\t\ttempVec2.subVectors( a, b );\n\n\t\t// add the normal to the map for all vertices\n\t\tconst normal = new Vector3().crossVectors( tempVec1, tempVec2 ).normalize();\n\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\tconst vert = verts[ n ];\n\t\t\tconst hash = hashVertex( vert );\n\t\t\tif ( ! ( hash in vertexMap ) ) {\n\n\t\t\t\tvertexMap[ hash ] = [];\n\n\t\t\t}\n\n\t\t\tvertexMap[ hash ].push( normal );\n\n\t\t}\n\n\t}\n\n\t// average normals from all vertices that share a common location if they are within the\n\t// provided crease threshold\n\tconst normalArray = new Float32Array( posAttr.count * 3 );\n\tconst normAttr = new BufferAttribute( normalArray, 3, false );\n\tfor ( let i = 0, l = posAttr.count / 3; i < l; i ++ ) {\n\n\t\t// get the face normal for this vertex\n\t\tconst i3 = 3 * i;\n\t\tconst a = verts[ 0 ].fromBufferAttribute( posAttr, i3 + 0 );\n\t\tconst b = verts[ 1 ].fromBufferAttribute( posAttr, i3 + 1 );\n\t\tconst c = verts[ 2 ].fromBufferAttribute( posAttr, i3 + 2 );\n\n\t\ttempVec1.subVectors( c, b );\n\t\ttempVec2.subVectors( a, b );\n\n\t\ttempNorm.crossVectors( tempVec1, tempVec2 ).normalize();\n\n\t\t// average all normals that meet the threshold and set the normal value\n\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\tconst vert = verts[ n ];\n\t\t\tconst hash = hashVertex( vert );\n\t\t\tconst otherNormals = vertexMap[ hash ];\n\t\t\ttempNorm2.set( 0, 0, 0 );\n\n\t\t\tfor ( let k = 0, lk = otherNormals.length; k < lk; k ++ ) {\n\n\t\t\t\tconst otherNorm = otherNormals[ k ];\n\t\t\t\tif ( tempNorm.dot( otherNorm ) > creaseDot ) {\n\n\t\t\t\t\ttempNorm2.add( otherNorm );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttempNorm2.normalize();\n\t\t\tnormAttr.setXYZ( i3 + n, tempNorm2.x, tempNorm2.y, tempNorm2.z );\n\n\t\t}\n\n\t}\n\n\tresultGeometry.setAttribute( 'normal', normAttr );\n\treturn resultGeometry;\n\n}\n\nexport {\n\tcomputeMikkTSpaceTangents,\n\tmergeGeometries,\n\tmergeAttributes,\n\tinterleaveAttributes,\n\testimateBytesUsed,\n\tmergeVertices,\n\ttoTrianglesDrawMode,\n\tcomputeMorphedAttributes,\n\tmergeGroups,\n\ttoCreasedNormals\n};\n", "import {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tColorManagement,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tImageBitmapLoader,\n\tInstancedMesh,\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\tLinearSRGBColorSpace,\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\tTexture,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tSRGBColorSpace,\n\tInstancedBufferAttribute\n} from 'three';\nimport { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js';\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 GLTFMaterialsDispersionExtension( 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 GLTFTextureAVIFExtension( 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 GLTFMaterialsIridescenceExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsAnisotropyExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsBumpExtension( 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\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMeshGpuInstancing( 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\t// If a base path is set, resources will be relative paths from that plus the relative path of the gltf file\n\t\t\t// Example path = 'https://my-cnd-server.com/', url = 'assets/models/model.gltf'\n\t\t\t// resourcePath = 'https://my-cnd-server.com/assets/models/'\n\t\t\t// referenced resource 'model.bin' will be loaded from 'https://my-cnd-server.com/assets/models/model.bin'\n\t\t\t// referenced resource '../textures/texture.png' will be loaded from 'https://my-cnd-server.com/assets/textures/texture.png'\n\t\t\tconst relativeUrl = LoaderUtils.extractUrlBase( url );\n\t\t\tresourcePath = LoaderUtils.resolveURL( relativeUrl, 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 json;\n\t\tconst extensions = {};\n\t\tconst plugins = {};\n\t\tconst textDecoder = new TextDecoder();\n\n\t\tif ( typeof data === 'string' ) {\n\n\t\t\tjson = JSON.parse( data );\n\n\t\t} else if ( data instanceof ArrayBuffer ) {\n\n\t\t\tconst magic = textDecoder.decode( 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\tjson = JSON.parse( extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content );\n\n\t\t\t} else {\n\n\t\t\t\tjson = JSON.parse( textDecoder.decode( data ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tjson = data;\n\n\t\t}\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\n\t\t\tif ( ! plugin.name ) console.error( 'THREE.GLTFLoader: Invalid plugin found: missing name' );\n\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_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_DISPERSION: 'KHR_materials_dispersion',\n\tKHR_MATERIALS_IOR: 'KHR_materials_ior',\n\tKHR_MATERIALS_SHEEN: 'KHR_materials_sheen',\n\tKHR_MATERIALS_SPECULAR: 'KHR_materials_specular',\n\tKHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n\tKHR_MATERIALS_IRIDESCENCE: 'KHR_materials_iridescence',\n\tKHR_MATERIALS_ANISOTROPY: 'KHR_materials_anisotropy',\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_MATERIALS_BUMP: 'EXT_materials_bump',\n\tEXT_TEXTURE_WEBP: 'EXT_texture_webp',\n\tEXT_TEXTURE_AVIF: 'EXT_texture_avif',\n\tEXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression',\n\tEXT_MESH_GPU_INSTANCING: 'EXT_mesh_gpu_instancing'\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.setRGB( lightDef.color[ 0 ], lightDef.color[ 1 ], lightDef.color[ 2 ], LinearSRGBColorSpace );\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\tassignExtrasToUserData( lightNode, lightDef );\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\tgetDependency( type, index ) {\n\n\t\tif ( type !== 'light' ) return;\n\n\t\treturn this._loadLight( index );\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.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace );\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, SRGBColorSpace ) );\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 * Materials dispersion Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_dispersion\n */\nclass GLTFMaterialsDispersionExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_DISPERSION;\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.dispersion = extension.dispersion !== undefined ? extension.dispersion : 0;\n\n\t\treturn Promise.resolve();\n\n\t}\n\n}\n\n/**\n * Iridescence Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence\n */\nclass GLTFMaterialsIridescenceExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE;\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.iridescenceFactor !== undefined ) {\n\n\t\t\tmaterialParams.iridescence = extension.iridescenceFactor;\n\n\t\t}\n\n\t\tif ( extension.iridescenceTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'iridescenceMap', extension.iridescenceTexture ) );\n\n\t\t}\n\n\t\tif ( extension.iridescenceIor !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceIOR = extension.iridescenceIor;\n\n\t\t}\n\n\t\tif ( materialParams.iridescenceThicknessRange === undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange = [ 100, 400 ];\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessMinimum !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange[ 0 ] = extension.iridescenceThicknessMinimum;\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessMaximum !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange[ 1 ] = extension.iridescenceThicknessMaximum;\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'iridescenceThicknessMap', extension.iridescenceThicknessTexture ) );\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\tconst colorFactor = extension.sheenColorFactor;\n\t\t\tmaterialParams.sheenColor.setRGB( colorFactor[ 0 ], colorFactor[ 1 ], colorFactor[ 2 ], LinearSRGBColorSpace );\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, SRGBColorSpace ) );\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 || Infinity;\n\n\t\tconst colorArray = extension.attenuationColor || [ 1, 1, 1 ];\n\t\tmaterialParams.attenuationColor = new Color().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace );\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().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace );\n\n\t\tif ( extension.specularColorTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture, SRGBColorSpace ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n\n/**\n * Materials bump Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_materials_bump\n */\nclass GLTFMaterialsBumpExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_MATERIALS_BUMP;\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.bumpScale = extension.bumpFactor !== undefined ? extension.bumpFactor : 1.0;\n\n\t\tif ( extension.bumpTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'bumpMap', extension.bumpTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials anisotropy Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_anisotropy\n */\nclass GLTFMaterialsAnisotropyExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_ANISOTROPY;\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.anisotropyStrength !== undefined ) {\n\n\t\t\tmaterialParams.anisotropy = extension.anisotropyStrength;\n\n\t\t}\n\n\t\tif ( extension.anisotropyRotation !== undefined ) {\n\n\t\t\tmaterialParams.anisotropyRotation = extension.anisotropyRotation;\n\n\t\t}\n\n\t\tif ( extension.anisotropyTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'anisotropyMap', extension.anisotropyTexture ) );\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 * AVIF Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_avif\n */\nclass GLTFTextureAVIFExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_AVIF;\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: AVIF 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.\n\t\t\t\timage.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=';\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 buffer.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 source = new Uint8Array( res, byteOffset, byteLength );\n\n\t\t\t\tif ( decoder.decodeGltfBufferAsync ) {\n\n\t\t\t\t\treturn decoder.decodeGltfBufferAsync( count, stride, source, extensionDef.mode, extensionDef.filter ).then( function ( res ) {\n\n\t\t\t\t\t\treturn res.buffer;\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Support for MeshoptDecoder 0.18 or earlier, without decodeGltfBufferAsync\n\t\t\t\t\treturn decoder.ready.then( function () {\n\n\t\t\t\t\t\tconst result = new ArrayBuffer( count * stride );\n\t\t\t\t\t\tdecoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter );\n\t\t\t\t\t\treturn result;\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\treturn null;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * GPU Instancing Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing\n *\n */\nclass GLTFMeshGpuInstancing {\n\n\tconstructor( parser ) {\n\n\t\tthis.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING;\n\t\tthis.parser = parser;\n\n\t}\n\n\tcreateNodeMesh( nodeIndex ) {\n\n\t\tconst json = this.parser.json;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tif ( ! nodeDef.extensions || ! nodeDef.extensions[ this.name ] ||\n\t\t\tnodeDef.mesh === undefined ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst meshDef = json.meshes[ nodeDef.mesh ];\n\n\t\t// No Points or Lines + Instancing support yet\n\n\t\tfor ( const primitive of meshDef.primitives ) {\n\n\t\t\tif ( primitive.mode !== WEBGL_CONSTANTS.TRIANGLES &&\n\t\t\t\t primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP &&\n\t\t\t\t primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN &&\n\t\t\t\t primitive.mode !== undefined ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extensionDef = nodeDef.extensions[ this.name ];\n\t\tconst attributesDef = extensionDef.attributes;\n\n\t\t// @TODO: Can we support InstancedMesh + SkinnedMesh?\n\n\t\tconst pending = [];\n\t\tconst attributes = {};\n\n\t\tfor ( const key in attributesDef ) {\n\n\t\t\tpending.push( this.parser.getDependency( 'accessor', attributesDef[ key ] ).then( accessor => {\n\n\t\t\t\tattributes[ key ] = accessor;\n\t\t\t\treturn attributes[ key ];\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tif ( pending.length < 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tpending.push( this.parser.createNodeMesh( nodeIndex ) );\n\n\t\treturn Promise.all( pending ).then( results => {\n\n\t\t\tconst nodeObject = results.pop();\n\t\t\tconst meshes = nodeObject.isGroup ? nodeObject.children : [ nodeObject ];\n\t\t\tconst count = results[ 0 ].count; // All attribute counts should be same\n\t\t\tconst instancedMeshes = [];\n\n\t\t\tfor ( const mesh of meshes ) {\n\n\t\t\t\t// Temporal variables\n\t\t\t\tconst m = new Matrix4();\n\t\t\t\tconst p = new Vector3();\n\t\t\t\tconst q = new Quaternion();\n\t\t\t\tconst s = new Vector3( 1, 1, 1 );\n\n\t\t\t\tconst instancedMesh = new InstancedMesh( mesh.geometry, mesh.material, count );\n\n\t\t\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\t\t\tif ( attributes.TRANSLATION ) {\n\n\t\t\t\t\t\tp.fromBufferAttribute( attributes.TRANSLATION, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attributes.ROTATION ) {\n\n\t\t\t\t\t\tq.fromBufferAttribute( attributes.ROTATION, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attributes.SCALE ) {\n\n\t\t\t\t\t\ts.fromBufferAttribute( attributes.SCALE, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tinstancedMesh.setMatrixAt( i, m.compose( p, q, s ) );\n\n\t\t\t\t}\n\n\t\t\t\t// Add instance attributes to the geometry, excluding TRS.\n\t\t\t\tfor ( const attributeName in attributes ) {\n\n\t\t\t\t\tif ( attributeName === '_COLOR_0' ) {\n\n\t\t\t\t\t\tconst attr = attributes[ attributeName ];\n\t\t\t\t\t\tinstancedMesh.instanceColor = new InstancedBufferAttribute( attr.array, attr.itemSize, attr.normalized );\n\n\t\t\t\t\t} else if ( attributeName !== 'TRANSLATION' &&\n\t\t\t\t\t\t attributeName !== 'ROTATION' &&\n\t\t\t\t\t\t attributeName !== 'SCALE' ) {\n\n\t\t\t\t\t\tmesh.geometry.setAttribute( attributeName, attributes[ attributeName ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// Just in case\n\t\t\t\tObject3D.prototype.copy.call( instancedMesh, mesh );\n\n\t\t\t\tthis.parser.assignFinalMaterial( instancedMesh );\n\n\t\t\t\tinstancedMeshes.push( instancedMesh );\n\n\t\t\t}\n\n\t\t\tif ( nodeObject.isGroup ) {\n\n\t\t\t\tnodeObject.clear();\n\n\t\t\t\tnodeObject.add( ... instancedMeshes );\n\n\t\t\t\treturn nodeObject;\n\n\t\t\t}\n\n\t\t\treturn instancedMeshes[ 0 ];\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\t\tconst textDecoder = new TextDecoder();\n\n\t\tthis.header = {\n\t\t\tmagic: textDecoder.decode( 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 = textDecoder.decode( 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.name;\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, reject ) {\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, LinearSRGBColorSpace, reject );\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 || transform.texCoord === texture.channel )\n\t\t\t&& transform.offset === undefined\n\t\t\t&& transform.rotation === undefined\n\t\t\t&& 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.texCoord !== undefined ) {\n\n\t\t\ttexture.channel = transform.texCoord;\n\n\t\t}\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 * 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\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer;\n\t\tconst values = this.sampleValues;\n\t\tconst stride = this.valueSize;\n\n\t\tconst stride2 = stride * 2;\n\t\tconst stride3 = stride * 3;\n\n\t\tconst td = t1 - t0;\n\n\t\tconst p = ( t - t0 ) / td;\n\t\tconst pp = p * p;\n\t\tconst ppp = pp * p;\n\n\t\tconst offset1 = i1 * stride3;\n\t\tconst offset0 = offset1 - stride3;\n\n\t\tconst s2 = - 2 * ppp + 3 * pp;\n\t\tconst s3 = ppp - pp;\n\t\tconst s0 = 1 - s2;\n\t\tconst s1 = s3 - pp + p;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( let i = 0; i !== stride; i ++ ) {\n\n\t\t\tconst p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tconst m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tconst p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tconst m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\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: 'uv1',\n\tTEXCOORD_2: 'uv2',\n\tTEXCOORD_3: 'uv3',\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\tlet geometryKey;\n\n\tconst dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\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\tif ( primitiveDef.targets !== undefined ) {\n\n\t\tfor ( let i = 0, il = primitiveDef.targets.length; i < il; i ++ ) {\n\n\t\t\tgeometryKey += ':' + createAttributesKey( primitiveDef.targets[ i ] );\n\n\t\t}\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\nconst _identityMatrix = new Matrix4();\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// Node cache\n\t\tthis.nodeCache = {};\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\tlet isSafari = false;\n\t\tlet safariVersion = - 1;\n\t\tlet isFirefox = false;\n\t\tlet firefoxVersion = - 1;\n\n\t\tif ( typeof navigator !== 'undefined' ) {\n\n\t\t\tconst userAgent = navigator.userAgent;\n\n\t\t\tisSafari = /^((?!chrome|android).)*safari/i.test( userAgent ) === true;\n\t\t\tconst safariMatch = userAgent.match( /Version\\/(\\d+)/ );\n\t\t\tsafariVersion = isSafari && safariMatch ? parseInt( safariMatch[ 1 ], 10 ) : - 1;\n\n\t\t\tisFirefox = userAgent.indexOf( 'Firefox' ) > - 1;\n\t\t\tfirefoxVersion = isFirefox ? userAgent.match( /Firefox\\/([0-9]+)\\./ )[ 1 ] : - 1;\n\n\t\t}\n\n\t\tif ( typeof createImageBitmap === 'undefined' || ( isSafari && safariVersion < 17 ) || ( 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\t\tthis.nodeCache = {};\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\treturn Promise.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\tfor ( const scene of result.scenes ) {\n\n\t\t\t\t\tscene.updateMatrixWorld();\n\n\t\t\t\t}\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._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadNode && ext.loadNode( index );\n\n\t\t\t\t\t} );\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\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext != this && ext.getDependency && ext.getDependency( type, index );\n\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( ! dependency ) {\n\n\t\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\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\tconst itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tconst TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\t\t\tconst normalized = accessorDef.normalized === true;\n\n\t\t\tconst array = new TypedArray( accessorDef.count * itemSize );\n\t\t\treturn Promise.resolve( new BufferAttribute( array, itemSize, normalized ) );\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\ttexture.name = textureDef.name || sourceDef.name || '';\n\n\t\t\tif ( texture.name === '' && typeof sourceDef.uri === 'string' && sourceDef.uri.startsWith( 'data:image/' ) === false ) {\n\n\t\t\t\ttexture.name = sourceDef.uri;\n\n\t\t\t}\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\tassignExtrasToUserData( texture, sourceDef );\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, colorSpace ) {\n\n\t\tconst parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\tif ( ! texture ) return null;\n\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord > 0 ) {\n\n\t\t\t\ttexture = texture.clone();\n\t\t\t\ttexture.channel = mapDef.texCoord;\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 ( colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = colorSpace;\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\t\t\t\tlineMaterial.map = material.map;\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 ( 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\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_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.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace );\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, SRGBColorSpace ) );\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\tconst emissiveFactor = materialDef.emissiveFactor;\n\t\t\tmaterialParams.emissive = new Color().setRGB( emissiveFactor[ 0 ], emissiveFactor[ 1 ], emissiveFactor[ 2 ], LinearSRGBColorSpace );\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, SRGBColorSpace ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tconst material = new materialType( materialParams );\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\tif ( sanitizedName in this.nodeNamesUsed ) {\n\n\t\t\treturn sanitizedName + '_' + ( ++ this.nodeNamesUsed[ sanitizedName ] );\n\n\t\t} else {\n\n\t\t\tthis.nodeNamesUsed[ sanitizedName ] = 0;\n\n\t\t\treturn sanitizedName;\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#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 ) {\n\n\t\t\t\t\t\t// normalize skin weights to fix malformed assets (see #15319)\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\tif ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, meshes[ 0 ], meshDef );\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\tif ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, group, meshDef );\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 pending = [];\n\n\t\tfor ( let i = 0, il = skinDef.joints.length; i < il; i ++ ) {\n\n\t\t\tpending.push( this._loadNodeShallow( skinDef.joints[ i ] ) );\n\n\t\t}\n\n\t\tif ( skinDef.inverseBindMatrices !== undefined ) {\n\n\t\t\tpending.push( this.getDependency( 'accessor', skinDef.inverseBindMatrices ) );\n\n\t\t} else {\n\n\t\t\tpending.push( null );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tconst inverseBindMatrices = results.pop();\n\t\t\tconst jointNodes = results;\n\n\t\t\t// Note that bones (joint nodes) may or may not be in the\n\t\t\t// scene graph at this time.\n\n\t\t\tconst bones = [];\n\t\t\tconst boneInverses = [];\n\n\t\t\tfor ( let i = 0, il = jointNodes.length; i < il; i ++ ) {\n\n\t\t\t\tconst jointNode = jointNodes[ i ];\n\n\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\tconst mat = new Matrix4();\n\n\t\t\t\t\tif ( inverseBindMatrices !== null ) {\n\n\t\t\t\t\t\tmat.fromArray( inverseBindMatrices.array, i * 16 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinDef.joints[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Skeleton( bones, boneInverses );\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\t\tconst parser = this;\n\n\t\tconst animationDef = json.animations[ animationIndex ];\n\t\tconst animationName = animationDef.name ? animationDef.name : 'animation_' + 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;\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\tif ( target.node === undefined ) continue;\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\tif ( node.updateMatrix ) {\n\n\t\t\t\t\tnode.updateMatrix();\n\n\t\t\t\t}\n\n\t\t\t\tconst createdTracks = parser._createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target );\n\n\t\t\t\tif ( createdTracks ) {\n\n\t\t\t\t\tfor ( let k = 0; k < createdTracks.length; k ++ ) {\n\n\t\t\t\t\t\ttracks.push( createdTracks[ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new AnimationClip( animationName, 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 parser = this;\n\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tconst nodePending = parser._loadNodeShallow( nodeIndex );\n\n\t\tconst childPending = [];\n\t\tconst childrenDef = nodeDef.children || [];\n\n\t\tfor ( let i = 0, il = childrenDef.length; i < il; i ++ ) {\n\n\t\t\tchildPending.push( parser.getDependency( 'node', childrenDef[ i ] ) );\n\n\t\t}\n\n\t\tconst skeletonPending = nodeDef.skin === undefined\n\t\t\t? Promise.resolve( null )\n\t\t\t: parser.getDependency( 'skin', nodeDef.skin );\n\n\t\treturn Promise.all( [\n\t\t\tnodePending,\n\t\t\tPromise.all( childPending ),\n\t\t\tskeletonPending\n\t\t] ).then( function ( results ) {\n\n\t\t\tconst node = results[ 0 ];\n\t\t\tconst children = results[ 1 ];\n\t\t\tconst skeleton = results[ 2 ];\n\n\t\t\tif ( skeleton !== null ) {\n\n\t\t\t\t// This full traverse should be fine because\n\t\t\t\t// child glTF nodes have not been added to this node yet.\n\t\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\t\tif ( ! mesh.isSkinnedMesh ) return;\n\n\t\t\t\t\tmesh.bind( skeleton, _identityMatrix );\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\tnode.add( children[ i ] );\n\n\t\t\t}\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t}\n\n\t// ._loadNodeShallow() parses a single node.\n\t// skin and child nodes are created and added in .loadNode() (no '_' prefix).\n\t_loadNodeShallow( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst parser = this;\n\n\t\t// This method is called from .loadNode() and .loadSkin().\n\t\t// Cache a node to avoid duplication.\n\n\t\tif ( this.nodeCache[ nodeIndex ] !== undefined ) {\n\n\t\t\treturn this.nodeCache[ nodeIndex ];\n\n\t\t}\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\tconst pending = [];\n\n\t\tconst meshPromise = parser._invokeOne( function ( ext ) {\n\n\t\t\treturn ext.createNodeMesh && ext.createNodeMesh( nodeIndex );\n\n\t\t} );\n\n\t\tif ( meshPromise ) {\n\n\t\t\tpending.push( meshPromise );\n\n\t\t}\n\n\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {\n\n\t\t\t\treturn parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tparser._invokeAll( function ( ext ) {\n\n\t\t\treturn ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex );\n\n\t\t} ).forEach( function ( promise ) {\n\n\t\t\tpending.push( promise );\n\n\t\t} );\n\n\t\tthis.nodeCache[ nodeIndex ] = Promise.all( pending ).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\treturn this.nodeCache[ nodeIndex ];\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 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( parser.getDependency( 'node', nodeIds[ i ] ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function ( nodes ) {\n\n\t\t\tfor ( let i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tscene.add( nodes[ i ] );\n\n\t\t\t}\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\t_createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target ) {\n\n\t\tconst tracks = [];\n\n\t\tconst targetName = node.name ? node.name : node.uuid;\n\t\tconst targetNames = [];\n\n\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\tif ( object.morphTargetInfluences ) {\n\n\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\ttargetNames.push( targetName );\n\n\t\t}\n\n\t\tlet TypedKeyframeTrack;\n\n\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\tbreak;\n\n\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\tbreak;\n\n\t\t\tcase PATH_PROPERTIES.position:\n\t\t\tcase PATH_PROPERTIES.scale:\n\n\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tswitch ( outputAccessor.itemSize ) {\n\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\tcase 3:\n\t\t\t\t\tdefault:\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\tbreak;\n\n\t\t}\n\n\t\tconst interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\n\t\tconst outputArray = this._getArrayFromAccessor( outputAccessor );\n\n\t\tfor ( let j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\tconst track = new TypedKeyframeTrack(\n\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\tinputAccessor.array,\n\t\t\t\toutputArray,\n\t\t\t\tinterpolation\n\t\t\t);\n\n\t\t\t// Override interpolation with custom factory method.\n\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\tthis._createCubicSplineTrackInterpolant( track );\n\n\t\t\t}\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\treturn tracks;\n\n\t}\n\n\t_getArrayFromAccessor( accessor ) {\n\n\t\tlet outputArray = accessor.array;\n\n\t\tif ( accessor.normalized ) {\n\n\t\t\tconst scale = getNormalizedComponentScale( outputArray.constructor );\n\t\t\tconst scaled = new Float32Array( outputArray.length );\n\n\t\t\tfor ( let j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t}\n\n\t\t\toutputArray = scaled;\n\n\t\t}\n\n\t\treturn outputArray;\n\n\t}\n\n\t_createCubicSplineTrackInterpolant( track ) {\n\n\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\tconst interpolantType = ( this instanceof QuaternionKeyframeTrack ) ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant;\n\n\t\t\treturn new interpolantType( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t};\n\n\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\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\tif ( ColorManagement.workingColorSpace !== LinearSRGBColorSpace && 'COLOR_0' in attributes ) {\n\n\t\tconsole.warn( `THREE.GLTFLoader: Converting vertex colors from \"srgb-linear\" to \"${ColorManagement.workingColorSpace}\" not supported.` );\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\nexport { GLTFLoader };\n"], - "mappings": "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", - "names": ["i", "object", "morphTargetsRelative", "a", "b", "c", "il", "self", "res", "sourceURI", "node", "accessor"] -} diff --git a/site/interface/site/node_modules/.vite/deps/three.js b/site/interface/site/node_modules/.vite/deps/three.js index 6f744c1..b18b524 100644 --- a/site/interface/site/node_modules/.vite/deps/three.js +++ b/site/interface/site/node_modules/.vite/deps/three.js @@ -417,7 +417,7 @@ import { ZeroSlopeEnding, ZeroStencilOp, createCanvasElement -} from "./chunk-33KXLYU5.js"; +} from "./chunk-IS2ZBFBB.js"; export { ACESFilmicToneMapping, AddEquation, diff --git a/site/interface/site/node_modules/.vite/deps/three_addons_loaders_GLTFLoader__js.js b/site/interface/site/node_modules/.vite/deps/three_addons_loaders_GLTFLoader__js.js index 8a0412e..952fa51 100644 --- a/site/interface/site/node_modules/.vite/deps/three_addons_loaders_GLTFLoader__js.js +++ b/site/interface/site/node_modules/.vite/deps/three_addons_loaders_GLTFLoader__js.js @@ -1,7 +1,2612 @@ import { - GLTFLoader -} from "./chunk-LBH6F3OL.js"; -import "./chunk-33KXLYU5.js"; + AnimationClip, + Bone, + Box3, + BufferAttribute, + BufferGeometry, + ClampToEdgeWrapping, + Color, + ColorManagement, + DirectionalLight, + DoubleSide, + FileLoader, + FrontSide, + Group, + ImageBitmapLoader, + InstancedBufferAttribute, + InstancedMesh, + InterleavedBuffer, + InterleavedBufferAttribute, + Interpolant, + InterpolateDiscrete, + InterpolateLinear, + Line, + LineBasicMaterial, + LineLoop, + LineSegments, + LinearFilter, + LinearMipmapLinearFilter, + LinearMipmapNearestFilter, + LinearSRGBColorSpace, + Loader, + LoaderUtils, + Material, + MathUtils, + Matrix4, + Mesh, + MeshBasicMaterial, + MeshPhysicalMaterial, + MeshStandardMaterial, + MirroredRepeatWrapping, + NearestFilter, + NearestMipmapLinearFilter, + NearestMipmapNearestFilter, + NumberKeyframeTrack, + Object3D, + OrthographicCamera, + PerspectiveCamera, + PointLight, + Points, + PointsMaterial, + PropertyBinding, + Quaternion, + QuaternionKeyframeTrack, + RepeatWrapping, + SRGBColorSpace, + Skeleton, + SkinnedMesh, + Sphere, + SpotLight, + Texture, + TextureLoader, + TriangleFanDrawMode, + TriangleStripDrawMode, + TrianglesDrawMode, + Vector2, + Vector3, + VectorKeyframeTrack +} from "./chunk-IS2ZBFBB.js"; + +// node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +function toTrianglesDrawMode(geometry, drawMode) { + if (drawMode === TrianglesDrawMode) { + console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."); + return geometry; + } + if (drawMode === TriangleFanDrawMode || drawMode === TriangleStripDrawMode) { + let index = geometry.getIndex(); + if (index === null) { + const indices = []; + const position = geometry.getAttribute("position"); + if (position !== void 0) { + for (let i = 0; i < position.count; i++) { + indices.push(i); + } + geometry.setIndex(indices); + index = geometry.getIndex(); + } else { + console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."); + return geometry; + } + } + const numberOfTriangles = index.count - 2; + const newIndices = []; + if (drawMode === TriangleFanDrawMode) { + for (let i = 1; i <= numberOfTriangles; i++) { + newIndices.push(index.getX(0)); + newIndices.push(index.getX(i)); + newIndices.push(index.getX(i + 1)); + } + } else { + for (let i = 0; i < numberOfTriangles; i++) { + if (i % 2 === 0) { + newIndices.push(index.getX(i)); + newIndices.push(index.getX(i + 1)); + newIndices.push(index.getX(i + 2)); + } else { + newIndices.push(index.getX(i + 2)); + newIndices.push(index.getX(i + 1)); + newIndices.push(index.getX(i)); + } + } + } + if (newIndices.length / 3 !== numberOfTriangles) { + console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles."); + } + const newGeometry = geometry.clone(); + newGeometry.setIndex(newIndices); + newGeometry.clearGroups(); + return newGeometry; + } else { + console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:", drawMode); + return geometry; + } +} + +// node_modules/three/examples/jsm/loaders/GLTFLoader.js +var GLTFLoader = class extends Loader { + constructor(manager) { + super(manager); + this.dracoLoader = null; + this.ktx2Loader = null; + this.meshoptDecoder = null; + this.pluginCallbacks = []; + this.register(function(parser) { + return new GLTFMaterialsClearcoatExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsDispersionExtension(parser); + }); + this.register(function(parser) { + return new GLTFTextureBasisUExtension(parser); + }); + this.register(function(parser) { + return new GLTFTextureWebPExtension(parser); + }); + this.register(function(parser) { + return new GLTFTextureAVIFExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsSheenExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsTransmissionExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsVolumeExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsIorExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsEmissiveStrengthExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsSpecularExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsIridescenceExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsAnisotropyExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsBumpExtension(parser); + }); + this.register(function(parser) { + return new GLTFLightsExtension(parser); + }); + this.register(function(parser) { + return new GLTFMeshoptCompression(parser); + }); + this.register(function(parser) { + return new GLTFMeshGpuInstancing(parser); + }); + } + load(url, onLoad, onProgress, onError) { + const scope = this; + let resourcePath; + if (this.resourcePath !== "") { + resourcePath = this.resourcePath; + } else if (this.path !== "") { + const relativeUrl = LoaderUtils.extractUrlBase(url); + resourcePath = LoaderUtils.resolveURL(relativeUrl, this.path); + } else { + resourcePath = LoaderUtils.extractUrlBase(url); + } + this.manager.itemStart(url); + const _onError = function(e) { + if (onError) { + onError(e); + } else { + console.error(e); + } + scope.manager.itemError(url); + scope.manager.itemEnd(url); + }; + const loader = new FileLoader(this.manager); + loader.setPath(this.path); + loader.setResponseType("arraybuffer"); + loader.setRequestHeader(this.requestHeader); + loader.setWithCredentials(this.withCredentials); + loader.load(url, function(data) { + try { + scope.parse(data, resourcePath, function(gltf) { + onLoad(gltf); + scope.manager.itemEnd(url); + }, _onError); + } catch (e) { + _onError(e); + } + }, onProgress, _onError); + } + setDRACOLoader(dracoLoader) { + this.dracoLoader = dracoLoader; + return this; + } + setDDSLoader() { + throw new Error( + 'THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".' + ); + } + setKTX2Loader(ktx2Loader) { + this.ktx2Loader = ktx2Loader; + return this; + } + setMeshoptDecoder(meshoptDecoder) { + this.meshoptDecoder = meshoptDecoder; + return this; + } + register(callback) { + if (this.pluginCallbacks.indexOf(callback) === -1) { + this.pluginCallbacks.push(callback); + } + return this; + } + unregister(callback) { + if (this.pluginCallbacks.indexOf(callback) !== -1) { + this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1); + } + return this; + } + parse(data, path, onLoad, onError) { + let json; + const extensions = {}; + const plugins = {}; + const textDecoder = new TextDecoder(); + if (typeof data === "string") { + json = JSON.parse(data); + } else if (data instanceof ArrayBuffer) { + const magic = textDecoder.decode(new Uint8Array(data, 0, 4)); + if (magic === BINARY_EXTENSION_HEADER_MAGIC) { + try { + extensions[EXTENSIONS.KHR_BINARY_GLTF] = new GLTFBinaryExtension(data); + } catch (error) { + if (onError) onError(error); + return; + } + json = JSON.parse(extensions[EXTENSIONS.KHR_BINARY_GLTF].content); + } else { + json = JSON.parse(textDecoder.decode(data)); + } + } else { + json = data; + } + if (json.asset === void 0 || json.asset.version[0] < 2) { + if (onError) onError(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")); + return; + } + const parser = new GLTFParser(json, { + path: path || this.resourcePath || "", + crossOrigin: this.crossOrigin, + requestHeader: this.requestHeader, + manager: this.manager, + ktx2Loader: this.ktx2Loader, + meshoptDecoder: this.meshoptDecoder + }); + parser.fileLoader.setRequestHeader(this.requestHeader); + for (let i = 0; i < this.pluginCallbacks.length; i++) { + const plugin = this.pluginCallbacks[i](parser); + if (!plugin.name) console.error("THREE.GLTFLoader: Invalid plugin found: missing name"); + plugins[plugin.name] = plugin; + extensions[plugin.name] = true; + } + if (json.extensionsUsed) { + for (let i = 0; i < json.extensionsUsed.length; ++i) { + const extensionName = json.extensionsUsed[i]; + const extensionsRequired = json.extensionsRequired || []; + switch (extensionName) { + case EXTENSIONS.KHR_MATERIALS_UNLIT: + extensions[extensionName] = new GLTFMaterialsUnlitExtension(); + break; + case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION: + extensions[extensionName] = new GLTFDracoMeshCompressionExtension(json, this.dracoLoader); + break; + case EXTENSIONS.KHR_TEXTURE_TRANSFORM: + extensions[extensionName] = new GLTFTextureTransformExtension(); + break; + case EXTENSIONS.KHR_MESH_QUANTIZATION: + extensions[extensionName] = new GLTFMeshQuantizationExtension(); + break; + default: + if (extensionsRequired.indexOf(extensionName) >= 0 && plugins[extensionName] === void 0) { + console.warn('THREE.GLTFLoader: Unknown extension "' + extensionName + '".'); + } + } + } + } + parser.setExtensions(extensions); + parser.setPlugins(plugins); + parser.parse(onLoad, onError); + } + parseAsync(data, path) { + const scope = this; + return new Promise(function(resolve, reject) { + scope.parse(data, path, resolve, reject); + }); + } +}; +function GLTFRegistry() { + let objects = {}; + return { + get: function(key) { + return objects[key]; + }, + add: function(key, object) { + objects[key] = object; + }, + remove: function(key) { + delete objects[key]; + }, + removeAll: function() { + objects = {}; + } + }; +} +var EXTENSIONS = { + KHR_BINARY_GLTF: "KHR_binary_glTF", + KHR_DRACO_MESH_COMPRESSION: "KHR_draco_mesh_compression", + KHR_LIGHTS_PUNCTUAL: "KHR_lights_punctual", + KHR_MATERIALS_CLEARCOAT: "KHR_materials_clearcoat", + KHR_MATERIALS_DISPERSION: "KHR_materials_dispersion", + KHR_MATERIALS_IOR: "KHR_materials_ior", + KHR_MATERIALS_SHEEN: "KHR_materials_sheen", + KHR_MATERIALS_SPECULAR: "KHR_materials_specular", + KHR_MATERIALS_TRANSMISSION: "KHR_materials_transmission", + KHR_MATERIALS_IRIDESCENCE: "KHR_materials_iridescence", + KHR_MATERIALS_ANISOTROPY: "KHR_materials_anisotropy", + KHR_MATERIALS_UNLIT: "KHR_materials_unlit", + KHR_MATERIALS_VOLUME: "KHR_materials_volume", + KHR_TEXTURE_BASISU: "KHR_texture_basisu", + KHR_TEXTURE_TRANSFORM: "KHR_texture_transform", + KHR_MESH_QUANTIZATION: "KHR_mesh_quantization", + KHR_MATERIALS_EMISSIVE_STRENGTH: "KHR_materials_emissive_strength", + EXT_MATERIALS_BUMP: "EXT_materials_bump", + EXT_TEXTURE_WEBP: "EXT_texture_webp", + EXT_TEXTURE_AVIF: "EXT_texture_avif", + EXT_MESHOPT_COMPRESSION: "EXT_meshopt_compression", + EXT_MESH_GPU_INSTANCING: "EXT_mesh_gpu_instancing" +}; +var GLTFLightsExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL; + this.cache = { refs: {}, uses: {} }; + } + _markDefs() { + const parser = this.parser; + const nodeDefs = this.parser.json.nodes || []; + for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) { + const nodeDef = nodeDefs[nodeIndex]; + if (nodeDef.extensions && nodeDef.extensions[this.name] && nodeDef.extensions[this.name].light !== void 0) { + parser._addNodeRef(this.cache, nodeDef.extensions[this.name].light); + } + } + } + _loadLight(lightIndex) { + const parser = this.parser; + const cacheKey = "light:" + lightIndex; + let dependency = parser.cache.get(cacheKey); + if (dependency) return dependency; + const json = parser.json; + const extensions = json.extensions && json.extensions[this.name] || {}; + const lightDefs = extensions.lights || []; + const lightDef = lightDefs[lightIndex]; + let lightNode; + const color = new Color(16777215); + if (lightDef.color !== void 0) color.setRGB(lightDef.color[0], lightDef.color[1], lightDef.color[2], LinearSRGBColorSpace); + const range = lightDef.range !== void 0 ? lightDef.range : 0; + switch (lightDef.type) { + case "directional": + lightNode = new DirectionalLight(color); + lightNode.target.position.set(0, 0, -1); + lightNode.add(lightNode.target); + break; + case "point": + lightNode = new PointLight(color); + lightNode.distance = range; + break; + case "spot": + lightNode = new SpotLight(color); + lightNode.distance = range; + lightDef.spot = lightDef.spot || {}; + lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== void 0 ? lightDef.spot.innerConeAngle : 0; + lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== void 0 ? lightDef.spot.outerConeAngle : Math.PI / 4; + lightNode.angle = lightDef.spot.outerConeAngle; + lightNode.penumbra = 1 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle; + lightNode.target.position.set(0, 0, -1); + lightNode.add(lightNode.target); + break; + default: + throw new Error("THREE.GLTFLoader: Unexpected light type: " + lightDef.type); + } + lightNode.position.set(0, 0, 0); + lightNode.decay = 2; + assignExtrasToUserData(lightNode, lightDef); + if (lightDef.intensity !== void 0) lightNode.intensity = lightDef.intensity; + lightNode.name = parser.createUniqueName(lightDef.name || "light_" + lightIndex); + dependency = Promise.resolve(lightNode); + parser.cache.add(cacheKey, dependency); + return dependency; + } + getDependency(type, index) { + if (type !== "light") return; + return this._loadLight(index); + } + createNodeAttachment(nodeIndex) { + const self2 = this; + const parser = this.parser; + const json = parser.json; + const nodeDef = json.nodes[nodeIndex]; + const lightDef = nodeDef.extensions && nodeDef.extensions[this.name] || {}; + const lightIndex = lightDef.light; + if (lightIndex === void 0) return null; + return this._loadLight(lightIndex).then(function(light) { + return parser._getNodeRef(self2.cache, lightIndex, light); + }); + } +}; +var GLTFMaterialsUnlitExtension = class { + constructor() { + this.name = EXTENSIONS.KHR_MATERIALS_UNLIT; + } + getMaterialType() { + return MeshBasicMaterial; + } + extendParams(materialParams, materialDef, parser) { + const pending = []; + materialParams.color = new Color(1, 1, 1); + materialParams.opacity = 1; + const metallicRoughness = materialDef.pbrMetallicRoughness; + if (metallicRoughness) { + if (Array.isArray(metallicRoughness.baseColorFactor)) { + const array = metallicRoughness.baseColorFactor; + materialParams.color.setRGB(array[0], array[1], array[2], LinearSRGBColorSpace); + materialParams.opacity = array[3]; + } + if (metallicRoughness.baseColorTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "map", metallicRoughness.baseColorTexture, SRGBColorSpace)); + } + } + return Promise.all(pending); + } +}; +var GLTFMaterialsEmissiveStrengthExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const emissiveStrength = materialDef.extensions[this.name].emissiveStrength; + if (emissiveStrength !== void 0) { + materialParams.emissiveIntensity = emissiveStrength; + } + return Promise.resolve(); + } +}; +var GLTFMaterialsClearcoatExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + if (extension.clearcoatFactor !== void 0) { + materialParams.clearcoat = extension.clearcoatFactor; + } + if (extension.clearcoatTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "clearcoatMap", extension.clearcoatTexture)); + } + if (extension.clearcoatRoughnessFactor !== void 0) { + materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor; + } + if (extension.clearcoatRoughnessTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "clearcoatRoughnessMap", extension.clearcoatRoughnessTexture)); + } + if (extension.clearcoatNormalTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "clearcoatNormalMap", extension.clearcoatNormalTexture)); + if (extension.clearcoatNormalTexture.scale !== void 0) { + const scale = extension.clearcoatNormalTexture.scale; + materialParams.clearcoatNormalScale = new Vector2(scale, scale); + } + } + return Promise.all(pending); + } +}; +var GLTFMaterialsDispersionExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_DISPERSION; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const extension = materialDef.extensions[this.name]; + materialParams.dispersion = extension.dispersion !== void 0 ? extension.dispersion : 0; + return Promise.resolve(); + } +}; +var GLTFMaterialsIridescenceExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + if (extension.iridescenceFactor !== void 0) { + materialParams.iridescence = extension.iridescenceFactor; + } + if (extension.iridescenceTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "iridescenceMap", extension.iridescenceTexture)); + } + if (extension.iridescenceIor !== void 0) { + materialParams.iridescenceIOR = extension.iridescenceIor; + } + if (materialParams.iridescenceThicknessRange === void 0) { + materialParams.iridescenceThicknessRange = [100, 400]; + } + if (extension.iridescenceThicknessMinimum !== void 0) { + materialParams.iridescenceThicknessRange[0] = extension.iridescenceThicknessMinimum; + } + if (extension.iridescenceThicknessMaximum !== void 0) { + materialParams.iridescenceThicknessRange[1] = extension.iridescenceThicknessMaximum; + } + if (extension.iridescenceThicknessTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "iridescenceThicknessMap", extension.iridescenceThicknessTexture)); + } + return Promise.all(pending); + } +}; +var GLTFMaterialsSheenExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_SHEEN; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + materialParams.sheenColor = new Color(0, 0, 0); + materialParams.sheenRoughness = 0; + materialParams.sheen = 1; + const extension = materialDef.extensions[this.name]; + if (extension.sheenColorFactor !== void 0) { + const colorFactor = extension.sheenColorFactor; + materialParams.sheenColor.setRGB(colorFactor[0], colorFactor[1], colorFactor[2], LinearSRGBColorSpace); + } + if (extension.sheenRoughnessFactor !== void 0) { + materialParams.sheenRoughness = extension.sheenRoughnessFactor; + } + if (extension.sheenColorTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "sheenColorMap", extension.sheenColorTexture, SRGBColorSpace)); + } + if (extension.sheenRoughnessTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "sheenRoughnessMap", extension.sheenRoughnessTexture)); + } + return Promise.all(pending); + } +}; +var GLTFMaterialsTransmissionExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + if (extension.transmissionFactor !== void 0) { + materialParams.transmission = extension.transmissionFactor; + } + if (extension.transmissionTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "transmissionMap", extension.transmissionTexture)); + } + return Promise.all(pending); + } +}; +var GLTFMaterialsVolumeExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_VOLUME; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + materialParams.thickness = extension.thicknessFactor !== void 0 ? extension.thicknessFactor : 0; + if (extension.thicknessTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "thicknessMap", extension.thicknessTexture)); + } + materialParams.attenuationDistance = extension.attenuationDistance || Infinity; + const colorArray = extension.attenuationColor || [1, 1, 1]; + materialParams.attenuationColor = new Color().setRGB(colorArray[0], colorArray[1], colorArray[2], LinearSRGBColorSpace); + return Promise.all(pending); + } +}; +var GLTFMaterialsIorExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_IOR; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const extension = materialDef.extensions[this.name]; + materialParams.ior = extension.ior !== void 0 ? extension.ior : 1.5; + return Promise.resolve(); + } +}; +var GLTFMaterialsSpecularExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + materialParams.specularIntensity = extension.specularFactor !== void 0 ? extension.specularFactor : 1; + if (extension.specularTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "specularIntensityMap", extension.specularTexture)); + } + const colorArray = extension.specularColorFactor || [1, 1, 1]; + materialParams.specularColor = new Color().setRGB(colorArray[0], colorArray[1], colorArray[2], LinearSRGBColorSpace); + if (extension.specularColorTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "specularColorMap", extension.specularColorTexture, SRGBColorSpace)); + } + return Promise.all(pending); + } +}; +var GLTFMaterialsBumpExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.EXT_MATERIALS_BUMP; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + materialParams.bumpScale = extension.bumpFactor !== void 0 ? extension.bumpFactor : 1; + if (extension.bumpTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "bumpMap", extension.bumpTexture)); + } + return Promise.all(pending); + } +}; +var GLTFMaterialsAnisotropyExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_ANISOTROPY; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + if (extension.anisotropyStrength !== void 0) { + materialParams.anisotropy = extension.anisotropyStrength; + } + if (extension.anisotropyRotation !== void 0) { + materialParams.anisotropyRotation = extension.anisotropyRotation; + } + if (extension.anisotropyTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "anisotropyMap", extension.anisotropyTexture)); + } + return Promise.all(pending); + } +}; +var GLTFTextureBasisUExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_TEXTURE_BASISU; + } + loadTexture(textureIndex) { + const parser = this.parser; + const json = parser.json; + const textureDef = json.textures[textureIndex]; + if (!textureDef.extensions || !textureDef.extensions[this.name]) { + return null; + } + const extension = textureDef.extensions[this.name]; + const loader = parser.options.ktx2Loader; + if (!loader) { + if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) { + throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures"); + } else { + return null; + } + } + return parser.loadTextureImage(textureIndex, extension.source, loader); + } +}; +var GLTFTextureWebPExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.EXT_TEXTURE_WEBP; + this.isSupported = null; + } + loadTexture(textureIndex) { + const name = this.name; + const parser = this.parser; + const json = parser.json; + const textureDef = json.textures[textureIndex]; + if (!textureDef.extensions || !textureDef.extensions[name]) { + return null; + } + const extension = textureDef.extensions[name]; + const source = json.images[extension.source]; + let loader = parser.textureLoader; + if (source.uri) { + const handler = parser.options.manager.getHandler(source.uri); + if (handler !== null) loader = handler; + } + return this.detectSupport().then(function(isSupported) { + if (isSupported) return parser.loadTextureImage(textureIndex, extension.source, loader); + if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) { + throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported."); + } + return parser.loadTexture(textureIndex); + }); + } + detectSupport() { + if (!this.isSupported) { + this.isSupported = new Promise(function(resolve) { + const image = new Image(); + image.src = "data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"; + image.onload = image.onerror = function() { + resolve(image.height === 1); + }; + }); + } + return this.isSupported; + } +}; +var GLTFTextureAVIFExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.EXT_TEXTURE_AVIF; + this.isSupported = null; + } + loadTexture(textureIndex) { + const name = this.name; + const parser = this.parser; + const json = parser.json; + const textureDef = json.textures[textureIndex]; + if (!textureDef.extensions || !textureDef.extensions[name]) { + return null; + } + const extension = textureDef.extensions[name]; + const source = json.images[extension.source]; + let loader = parser.textureLoader; + if (source.uri) { + const handler = parser.options.manager.getHandler(source.uri); + if (handler !== null) loader = handler; + } + return this.detectSupport().then(function(isSupported) { + if (isSupported) return parser.loadTextureImage(textureIndex, extension.source, loader); + if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) { + throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported."); + } + return parser.loadTexture(textureIndex); + }); + } + detectSupport() { + if (!this.isSupported) { + this.isSupported = new Promise(function(resolve) { + const image = new Image(); + image.src = "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI="; + image.onload = image.onerror = function() { + resolve(image.height === 1); + }; + }); + } + return this.isSupported; + } +}; +var GLTFMeshoptCompression = class { + constructor(parser) { + this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION; + this.parser = parser; + } + loadBufferView(index) { + const json = this.parser.json; + const bufferView = json.bufferViews[index]; + if (bufferView.extensions && bufferView.extensions[this.name]) { + const extensionDef = bufferView.extensions[this.name]; + const buffer = this.parser.getDependency("buffer", extensionDef.buffer); + const decoder = this.parser.options.meshoptDecoder; + if (!decoder || !decoder.supported) { + if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) { + throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files"); + } else { + return null; + } + } + return buffer.then(function(res) { + const byteOffset = extensionDef.byteOffset || 0; + const byteLength = extensionDef.byteLength || 0; + const count = extensionDef.count; + const stride = extensionDef.byteStride; + const source = new Uint8Array(res, byteOffset, byteLength); + if (decoder.decodeGltfBufferAsync) { + return decoder.decodeGltfBufferAsync(count, stride, source, extensionDef.mode, extensionDef.filter).then(function(res2) { + return res2.buffer; + }); + } else { + return decoder.ready.then(function() { + const result = new ArrayBuffer(count * stride); + decoder.decodeGltfBuffer(new Uint8Array(result), count, stride, source, extensionDef.mode, extensionDef.filter); + return result; + }); + } + }); + } else { + return null; + } + } +}; +var GLTFMeshGpuInstancing = class { + constructor(parser) { + this.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING; + this.parser = parser; + } + createNodeMesh(nodeIndex) { + const json = this.parser.json; + const nodeDef = json.nodes[nodeIndex]; + if (!nodeDef.extensions || !nodeDef.extensions[this.name] || nodeDef.mesh === void 0) { + return null; + } + const meshDef = json.meshes[nodeDef.mesh]; + for (const primitive of meshDef.primitives) { + if (primitive.mode !== WEBGL_CONSTANTS.TRIANGLES && primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP && primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN && primitive.mode !== void 0) { + return null; + } + } + const extensionDef = nodeDef.extensions[this.name]; + const attributesDef = extensionDef.attributes; + const pending = []; + const attributes = {}; + for (const key in attributesDef) { + pending.push(this.parser.getDependency("accessor", attributesDef[key]).then((accessor) => { + attributes[key] = accessor; + return attributes[key]; + })); + } + if (pending.length < 1) { + return null; + } + pending.push(this.parser.createNodeMesh(nodeIndex)); + return Promise.all(pending).then((results) => { + const nodeObject = results.pop(); + const meshes = nodeObject.isGroup ? nodeObject.children : [nodeObject]; + const count = results[0].count; + const instancedMeshes = []; + for (const mesh of meshes) { + const m = new Matrix4(); + const p = new Vector3(); + const q = new Quaternion(); + const s = new Vector3(1, 1, 1); + const instancedMesh = new InstancedMesh(mesh.geometry, mesh.material, count); + for (let i = 0; i < count; i++) { + if (attributes.TRANSLATION) { + p.fromBufferAttribute(attributes.TRANSLATION, i); + } + if (attributes.ROTATION) { + q.fromBufferAttribute(attributes.ROTATION, i); + } + if (attributes.SCALE) { + s.fromBufferAttribute(attributes.SCALE, i); + } + instancedMesh.setMatrixAt(i, m.compose(p, q, s)); + } + for (const attributeName in attributes) { + if (attributeName === "_COLOR_0") { + const attr = attributes[attributeName]; + instancedMesh.instanceColor = new InstancedBufferAttribute(attr.array, attr.itemSize, attr.normalized); + } else if (attributeName !== "TRANSLATION" && attributeName !== "ROTATION" && attributeName !== "SCALE") { + mesh.geometry.setAttribute(attributeName, attributes[attributeName]); + } + } + Object3D.prototype.copy.call(instancedMesh, mesh); + this.parser.assignFinalMaterial(instancedMesh); + instancedMeshes.push(instancedMesh); + } + if (nodeObject.isGroup) { + nodeObject.clear(); + nodeObject.add(...instancedMeshes); + return nodeObject; + } + return instancedMeshes[0]; + }); + } +}; +var BINARY_EXTENSION_HEADER_MAGIC = "glTF"; +var BINARY_EXTENSION_HEADER_LENGTH = 12; +var BINARY_EXTENSION_CHUNK_TYPES = { JSON: 1313821514, BIN: 5130562 }; +var GLTFBinaryExtension = class { + constructor(data) { + this.name = EXTENSIONS.KHR_BINARY_GLTF; + this.content = null; + this.body = null; + const headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH); + const textDecoder = new TextDecoder(); + this.header = { + magic: textDecoder.decode(new Uint8Array(data.slice(0, 4))), + version: headerView.getUint32(4, true), + length: headerView.getUint32(8, true) + }; + if (this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC) { + throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header."); + } else if (this.header.version < 2) { + throw new Error("THREE.GLTFLoader: Legacy binary file detected."); + } + const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH; + const chunkView = new DataView(data, BINARY_EXTENSION_HEADER_LENGTH); + let chunkIndex = 0; + while (chunkIndex < chunkContentsLength) { + const chunkLength = chunkView.getUint32(chunkIndex, true); + chunkIndex += 4; + const chunkType = chunkView.getUint32(chunkIndex, true); + chunkIndex += 4; + if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON) { + const contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength); + this.content = textDecoder.decode(contentArray); + } else if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN) { + const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex; + this.body = data.slice(byteOffset, byteOffset + chunkLength); + } + chunkIndex += chunkLength; + } + if (this.content === null) { + throw new Error("THREE.GLTFLoader: JSON content not found."); + } + } +}; +var GLTFDracoMeshCompressionExtension = class { + constructor(json, dracoLoader) { + if (!dracoLoader) { + throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided."); + } + this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION; + this.json = json; + this.dracoLoader = dracoLoader; + this.dracoLoader.preload(); + } + decodePrimitive(primitive, parser) { + const json = this.json; + const dracoLoader = this.dracoLoader; + const bufferViewIndex = primitive.extensions[this.name].bufferView; + const gltfAttributeMap = primitive.extensions[this.name].attributes; + const threeAttributeMap = {}; + const attributeNormalizedMap = {}; + const attributeTypeMap = {}; + for (const attributeName in gltfAttributeMap) { + const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase(); + threeAttributeMap[threeAttributeName] = gltfAttributeMap[attributeName]; + } + for (const attributeName in primitive.attributes) { + const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase(); + if (gltfAttributeMap[attributeName] !== void 0) { + const accessorDef = json.accessors[primitive.attributes[attributeName]]; + const componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType]; + attributeTypeMap[threeAttributeName] = componentType.name; + attributeNormalizedMap[threeAttributeName] = accessorDef.normalized === true; + } + } + return parser.getDependency("bufferView", bufferViewIndex).then(function(bufferView) { + return new Promise(function(resolve, reject) { + dracoLoader.decodeDracoFile(bufferView, function(geometry) { + for (const attributeName in geometry.attributes) { + const attribute = geometry.attributes[attributeName]; + const normalized = attributeNormalizedMap[attributeName]; + if (normalized !== void 0) attribute.normalized = normalized; + } + resolve(geometry); + }, threeAttributeMap, attributeTypeMap, LinearSRGBColorSpace, reject); + }); + }); + } +}; +var GLTFTextureTransformExtension = class { + constructor() { + this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM; + } + extendTexture(texture, transform) { + if ((transform.texCoord === void 0 || transform.texCoord === texture.channel) && transform.offset === void 0 && transform.rotation === void 0 && transform.scale === void 0) { + return texture; + } + texture = texture.clone(); + if (transform.texCoord !== void 0) { + texture.channel = transform.texCoord; + } + if (transform.offset !== void 0) { + texture.offset.fromArray(transform.offset); + } + if (transform.rotation !== void 0) { + texture.rotation = transform.rotation; + } + if (transform.scale !== void 0) { + texture.repeat.fromArray(transform.scale); + } + texture.needsUpdate = true; + return texture; + } +}; +var GLTFMeshQuantizationExtension = class { + constructor() { + this.name = EXTENSIONS.KHR_MESH_QUANTIZATION; + } +}; +var GLTFCubicSplineInterpolant = class extends Interpolant { + constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) { + super(parameterPositions, sampleValues, sampleSize, resultBuffer); + } + copySampleValue_(index) { + const result = this.resultBuffer, values = this.sampleValues, valueSize = this.valueSize, offset = index * valueSize * 3 + valueSize; + for (let i = 0; i !== valueSize; i++) { + result[i] = values[offset + i]; + } + return result; + } + interpolate_(i1, t0, t, t1) { + const result = this.resultBuffer; + const values = this.sampleValues; + const stride = this.valueSize; + const stride2 = stride * 2; + const stride3 = stride * 3; + const td = t1 - t0; + const p = (t - t0) / td; + const pp = p * p; + const ppp = pp * p; + const offset1 = i1 * stride3; + const offset0 = offset1 - stride3; + const s2 = -2 * ppp + 3 * pp; + const s3 = ppp - pp; + const s0 = 1 - s2; + const s1 = s3 - pp + p; + for (let i = 0; i !== stride; i++) { + const p0 = values[offset0 + i + stride]; + const m0 = values[offset0 + i + stride2] * td; + const p1 = values[offset1 + i + stride]; + const m1 = values[offset1 + i] * td; + result[i] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1; + } + return result; + } +}; +var _q = new Quaternion(); +var GLTFCubicSplineQuaternionInterpolant = class extends GLTFCubicSplineInterpolant { + interpolate_(i1, t0, t, t1) { + const result = super.interpolate_(i1, t0, t, t1); + _q.fromArray(result).normalize().toArray(result); + return result; + } +}; +var WEBGL_CONSTANTS = { + FLOAT: 5126, + //FLOAT_MAT2: 35674, + FLOAT_MAT3: 35675, + FLOAT_MAT4: 35676, + FLOAT_VEC2: 35664, + FLOAT_VEC3: 35665, + FLOAT_VEC4: 35666, + LINEAR: 9729, + REPEAT: 10497, + SAMPLER_2D: 35678, + POINTS: 0, + LINES: 1, + LINE_LOOP: 2, + LINE_STRIP: 3, + TRIANGLES: 4, + TRIANGLE_STRIP: 5, + TRIANGLE_FAN: 6, + UNSIGNED_BYTE: 5121, + UNSIGNED_SHORT: 5123 +}; +var WEBGL_COMPONENT_TYPES = { + 5120: Int8Array, + 5121: Uint8Array, + 5122: Int16Array, + 5123: Uint16Array, + 5125: Uint32Array, + 5126: Float32Array +}; +var WEBGL_FILTERS = { + 9728: NearestFilter, + 9729: LinearFilter, + 9984: NearestMipmapNearestFilter, + 9985: LinearMipmapNearestFilter, + 9986: NearestMipmapLinearFilter, + 9987: LinearMipmapLinearFilter +}; +var WEBGL_WRAPPINGS = { + 33071: ClampToEdgeWrapping, + 33648: MirroredRepeatWrapping, + 10497: RepeatWrapping +}; +var WEBGL_TYPE_SIZES = { + "SCALAR": 1, + "VEC2": 2, + "VEC3": 3, + "VEC4": 4, + "MAT2": 4, + "MAT3": 9, + "MAT4": 16 +}; +var ATTRIBUTES = { + POSITION: "position", + NORMAL: "normal", + TANGENT: "tangent", + TEXCOORD_0: "uv", + TEXCOORD_1: "uv1", + TEXCOORD_2: "uv2", + TEXCOORD_3: "uv3", + COLOR_0: "color", + WEIGHTS_0: "skinWeight", + JOINTS_0: "skinIndex" +}; +var PATH_PROPERTIES = { + scale: "scale", + translation: "position", + rotation: "quaternion", + weights: "morphTargetInfluences" +}; +var INTERPOLATION = { + CUBICSPLINE: void 0, + // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each + // keyframe track will be initialized with a default interpolation type, then modified. + LINEAR: InterpolateLinear, + STEP: InterpolateDiscrete +}; +var ALPHA_MODES = { + OPAQUE: "OPAQUE", + MASK: "MASK", + BLEND: "BLEND" +}; +function createDefaultMaterial(cache) { + if (cache["DefaultMaterial"] === void 0) { + cache["DefaultMaterial"] = new MeshStandardMaterial({ + color: 16777215, + emissive: 0, + metalness: 1, + roughness: 1, + transparent: false, + depthTest: true, + side: FrontSide + }); + } + return cache["DefaultMaterial"]; +} +function addUnknownExtensionsToUserData(knownExtensions, object, objectDef) { + for (const name in objectDef.extensions) { + if (knownExtensions[name] === void 0) { + object.userData.gltfExtensions = object.userData.gltfExtensions || {}; + object.userData.gltfExtensions[name] = objectDef.extensions[name]; + } + } +} +function assignExtrasToUserData(object, gltfDef) { + if (gltfDef.extras !== void 0) { + if (typeof gltfDef.extras === "object") { + Object.assign(object.userData, gltfDef.extras); + } else { + console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, " + gltfDef.extras); + } + } +} +function addMorphTargets(geometry, targets, parser) { + let hasMorphPosition = false; + let hasMorphNormal = false; + let hasMorphColor = false; + for (let i = 0, il = targets.length; i < il; i++) { + const target = targets[i]; + if (target.POSITION !== void 0) hasMorphPosition = true; + if (target.NORMAL !== void 0) hasMorphNormal = true; + if (target.COLOR_0 !== void 0) hasMorphColor = true; + if (hasMorphPosition && hasMorphNormal && hasMorphColor) break; + } + if (!hasMorphPosition && !hasMorphNormal && !hasMorphColor) return Promise.resolve(geometry); + const pendingPositionAccessors = []; + const pendingNormalAccessors = []; + const pendingColorAccessors = []; + for (let i = 0, il = targets.length; i < il; i++) { + const target = targets[i]; + if (hasMorphPosition) { + const pendingAccessor = target.POSITION !== void 0 ? parser.getDependency("accessor", target.POSITION) : geometry.attributes.position; + pendingPositionAccessors.push(pendingAccessor); + } + if (hasMorphNormal) { + const pendingAccessor = target.NORMAL !== void 0 ? parser.getDependency("accessor", target.NORMAL) : geometry.attributes.normal; + pendingNormalAccessors.push(pendingAccessor); + } + if (hasMorphColor) { + const pendingAccessor = target.COLOR_0 !== void 0 ? parser.getDependency("accessor", target.COLOR_0) : geometry.attributes.color; + pendingColorAccessors.push(pendingAccessor); + } + } + return Promise.all([ + Promise.all(pendingPositionAccessors), + Promise.all(pendingNormalAccessors), + Promise.all(pendingColorAccessors) + ]).then(function(accessors) { + const morphPositions = accessors[0]; + const morphNormals = accessors[1]; + const morphColors = accessors[2]; + if (hasMorphPosition) geometry.morphAttributes.position = morphPositions; + if (hasMorphNormal) geometry.morphAttributes.normal = morphNormals; + if (hasMorphColor) geometry.morphAttributes.color = morphColors; + geometry.morphTargetsRelative = true; + return geometry; + }); +} +function updateMorphTargets(mesh, meshDef) { + mesh.updateMorphTargets(); + if (meshDef.weights !== void 0) { + for (let i = 0, il = meshDef.weights.length; i < il; i++) { + mesh.morphTargetInfluences[i] = meshDef.weights[i]; + } + } + if (meshDef.extras && Array.isArray(meshDef.extras.targetNames)) { + const targetNames = meshDef.extras.targetNames; + if (mesh.morphTargetInfluences.length === targetNames.length) { + mesh.morphTargetDictionary = {}; + for (let i = 0, il = targetNames.length; i < il; i++) { + mesh.morphTargetDictionary[targetNames[i]] = i; + } + } else { + console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names."); + } + } +} +function createPrimitiveKey(primitiveDef) { + let geometryKey; + const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]; + if (dracoExtension) { + geometryKey = "draco:" + dracoExtension.bufferView + ":" + dracoExtension.indices + ":" + createAttributesKey(dracoExtension.attributes); + } else { + geometryKey = primitiveDef.indices + ":" + createAttributesKey(primitiveDef.attributes) + ":" + primitiveDef.mode; + } + if (primitiveDef.targets !== void 0) { + for (let i = 0, il = primitiveDef.targets.length; i < il; i++) { + geometryKey += ":" + createAttributesKey(primitiveDef.targets[i]); + } + } + return geometryKey; +} +function createAttributesKey(attributes) { + let attributesKey = ""; + const keys = Object.keys(attributes).sort(); + for (let i = 0, il = keys.length; i < il; i++) { + attributesKey += keys[i] + ":" + attributes[keys[i]] + ";"; + } + return attributesKey; +} +function getNormalizedComponentScale(constructor) { + switch (constructor) { + case Int8Array: + return 1 / 127; + case Uint8Array: + return 1 / 255; + case Int16Array: + return 1 / 32767; + case Uint16Array: + return 1 / 65535; + default: + throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type."); + } +} +function getImageURIMimeType(uri) { + if (uri.search(/\.jpe?g($|\?)/i) > 0 || uri.search(/^data\:image\/jpeg/) === 0) return "image/jpeg"; + if (uri.search(/\.webp($|\?)/i) > 0 || uri.search(/^data\:image\/webp/) === 0) return "image/webp"; + return "image/png"; +} +var _identityMatrix = new Matrix4(); +var GLTFParser = class { + constructor(json = {}, options = {}) { + this.json = json; + this.extensions = {}; + this.plugins = {}; + this.options = options; + this.cache = new GLTFRegistry(); + this.associations = /* @__PURE__ */ new Map(); + this.primitiveCache = {}; + this.nodeCache = {}; + this.meshCache = { refs: {}, uses: {} }; + this.cameraCache = { refs: {}, uses: {} }; + this.lightCache = { refs: {}, uses: {} }; + this.sourceCache = {}; + this.textureCache = {}; + this.nodeNamesUsed = {}; + let isSafari = false; + let safariVersion = -1; + let isFirefox = false; + let firefoxVersion = -1; + if (typeof navigator !== "undefined") { + const userAgent = navigator.userAgent; + isSafari = /^((?!chrome|android).)*safari/i.test(userAgent) === true; + const safariMatch = userAgent.match(/Version\/(\d+)/); + safariVersion = isSafari && safariMatch ? parseInt(safariMatch[1], 10) : -1; + isFirefox = userAgent.indexOf("Firefox") > -1; + firefoxVersion = isFirefox ? userAgent.match(/Firefox\/([0-9]+)\./)[1] : -1; + } + if (typeof createImageBitmap === "undefined" || isSafari && safariVersion < 17 || isFirefox && firefoxVersion < 98) { + this.textureLoader = new TextureLoader(this.options.manager); + } else { + this.textureLoader = new ImageBitmapLoader(this.options.manager); + } + this.textureLoader.setCrossOrigin(this.options.crossOrigin); + this.textureLoader.setRequestHeader(this.options.requestHeader); + this.fileLoader = new FileLoader(this.options.manager); + this.fileLoader.setResponseType("arraybuffer"); + if (this.options.crossOrigin === "use-credentials") { + this.fileLoader.setWithCredentials(true); + } + } + setExtensions(extensions) { + this.extensions = extensions; + } + setPlugins(plugins) { + this.plugins = plugins; + } + parse(onLoad, onError) { + const parser = this; + const json = this.json; + const extensions = this.extensions; + this.cache.removeAll(); + this.nodeCache = {}; + this._invokeAll(function(ext) { + return ext._markDefs && ext._markDefs(); + }); + Promise.all(this._invokeAll(function(ext) { + return ext.beforeRoot && ext.beforeRoot(); + })).then(function() { + return Promise.all([ + parser.getDependencies("scene"), + parser.getDependencies("animation"), + parser.getDependencies("camera") + ]); + }).then(function(dependencies) { + const result = { + scene: dependencies[0][json.scene || 0], + scenes: dependencies[0], + animations: dependencies[1], + cameras: dependencies[2], + asset: json.asset, + parser, + userData: {} + }; + addUnknownExtensionsToUserData(extensions, result, json); + assignExtrasToUserData(result, json); + return Promise.all(parser._invokeAll(function(ext) { + return ext.afterRoot && ext.afterRoot(result); + })).then(function() { + for (const scene of result.scenes) { + scene.updateMatrixWorld(); + } + onLoad(result); + }); + }).catch(onError); + } + /** + * Marks the special nodes/meshes in json for efficient parse. + */ + _markDefs() { + const nodeDefs = this.json.nodes || []; + const skinDefs = this.json.skins || []; + const meshDefs = this.json.meshes || []; + for (let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex++) { + const joints = skinDefs[skinIndex].joints; + for (let i = 0, il = joints.length; i < il; i++) { + nodeDefs[joints[i]].isBone = true; + } + } + for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) { + const nodeDef = nodeDefs[nodeIndex]; + if (nodeDef.mesh !== void 0) { + this._addNodeRef(this.meshCache, nodeDef.mesh); + if (nodeDef.skin !== void 0) { + meshDefs[nodeDef.mesh].isSkinnedMesh = true; + } + } + if (nodeDef.camera !== void 0) { + this._addNodeRef(this.cameraCache, nodeDef.camera); + } + } + } + /** + * Counts references to shared node / Object3D resources. These resources + * can be reused, or "instantiated", at multiple nodes in the scene + * hierarchy. Mesh, Camera, and Light instances are instantiated and must + * be marked. Non-scenegraph resources (like Materials, Geometries, and + * Textures) can be reused directly and are not marked here. + * + * Example: CesiumMilkTruck sample model reuses "Wheel" meshes. + */ + _addNodeRef(cache, index) { + if (index === void 0) return; + if (cache.refs[index] === void 0) { + cache.refs[index] = cache.uses[index] = 0; + } + cache.refs[index]++; + } + /** Returns a reference to a shared resource, cloning it if necessary. */ + _getNodeRef(cache, index, object) { + if (cache.refs[index] <= 1) return object; + const ref = object.clone(); + const updateMappings = (original, clone) => { + const mappings = this.associations.get(original); + if (mappings != null) { + this.associations.set(clone, mappings); + } + for (const [i, child] of original.children.entries()) { + updateMappings(child, clone.children[i]); + } + }; + updateMappings(object, ref); + ref.name += "_instance_" + cache.uses[index]++; + return ref; + } + _invokeOne(func) { + const extensions = Object.values(this.plugins); + extensions.push(this); + for (let i = 0; i < extensions.length; i++) { + const result = func(extensions[i]); + if (result) return result; + } + return null; + } + _invokeAll(func) { + const extensions = Object.values(this.plugins); + extensions.unshift(this); + const pending = []; + for (let i = 0; i < extensions.length; i++) { + const result = func(extensions[i]); + if (result) pending.push(result); + } + return pending; + } + /** + * Requests the specified dependency asynchronously, with caching. + * @param {string} type + * @param {number} index + * @return {Promise} + */ + getDependency(type, index) { + const cacheKey = type + ":" + index; + let dependency = this.cache.get(cacheKey); + if (!dependency) { + switch (type) { + case "scene": + dependency = this.loadScene(index); + break; + case "node": + dependency = this._invokeOne(function(ext) { + return ext.loadNode && ext.loadNode(index); + }); + break; + case "mesh": + dependency = this._invokeOne(function(ext) { + return ext.loadMesh && ext.loadMesh(index); + }); + break; + case "accessor": + dependency = this.loadAccessor(index); + break; + case "bufferView": + dependency = this._invokeOne(function(ext) { + return ext.loadBufferView && ext.loadBufferView(index); + }); + break; + case "buffer": + dependency = this.loadBuffer(index); + break; + case "material": + dependency = this._invokeOne(function(ext) { + return ext.loadMaterial && ext.loadMaterial(index); + }); + break; + case "texture": + dependency = this._invokeOne(function(ext) { + return ext.loadTexture && ext.loadTexture(index); + }); + break; + case "skin": + dependency = this.loadSkin(index); + break; + case "animation": + dependency = this._invokeOne(function(ext) { + return ext.loadAnimation && ext.loadAnimation(index); + }); + break; + case "camera": + dependency = this.loadCamera(index); + break; + default: + dependency = this._invokeOne(function(ext) { + return ext != this && ext.getDependency && ext.getDependency(type, index); + }); + if (!dependency) { + throw new Error("Unknown type: " + type); + } + break; + } + this.cache.add(cacheKey, dependency); + } + return dependency; + } + /** + * Requests all dependencies of the specified type asynchronously, with caching. + * @param {string} type + * @return {Promise>} + */ + getDependencies(type) { + let dependencies = this.cache.get(type); + if (!dependencies) { + const parser = this; + const defs = this.json[type + (type === "mesh" ? "es" : "s")] || []; + dependencies = Promise.all(defs.map(function(def, index) { + return parser.getDependency(type, index); + })); + this.cache.add(type, dependencies); + } + return dependencies; + } + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * @param {number} bufferIndex + * @return {Promise} + */ + loadBuffer(bufferIndex) { + const bufferDef = this.json.buffers[bufferIndex]; + const loader = this.fileLoader; + if (bufferDef.type && bufferDef.type !== "arraybuffer") { + throw new Error("THREE.GLTFLoader: " + bufferDef.type + " buffer type is not supported."); + } + if (bufferDef.uri === void 0 && bufferIndex === 0) { + return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body); + } + const options = this.options; + return new Promise(function(resolve, reject) { + loader.load(LoaderUtils.resolveURL(bufferDef.uri, options.path), resolve, void 0, function() { + reject(new Error('THREE.GLTFLoader: Failed to load buffer "' + bufferDef.uri + '".')); + }); + }); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * @param {number} bufferViewIndex + * @return {Promise} + */ + loadBufferView(bufferViewIndex) { + const bufferViewDef = this.json.bufferViews[bufferViewIndex]; + return this.getDependency("buffer", bufferViewDef.buffer).then(function(buffer) { + const byteLength = bufferViewDef.byteLength || 0; + const byteOffset = bufferViewDef.byteOffset || 0; + return buffer.slice(byteOffset, byteOffset + byteLength); + }); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors + * @param {number} accessorIndex + * @return {Promise} + */ + loadAccessor(accessorIndex) { + const parser = this; + const json = this.json; + const accessorDef = this.json.accessors[accessorIndex]; + if (accessorDef.bufferView === void 0 && accessorDef.sparse === void 0) { + const itemSize = WEBGL_TYPE_SIZES[accessorDef.type]; + const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType]; + const normalized = accessorDef.normalized === true; + const array = new TypedArray(accessorDef.count * itemSize); + return Promise.resolve(new BufferAttribute(array, itemSize, normalized)); + } + const pendingBufferViews = []; + if (accessorDef.bufferView !== void 0) { + pendingBufferViews.push(this.getDependency("bufferView", accessorDef.bufferView)); + } else { + pendingBufferViews.push(null); + } + if (accessorDef.sparse !== void 0) { + pendingBufferViews.push(this.getDependency("bufferView", accessorDef.sparse.indices.bufferView)); + pendingBufferViews.push(this.getDependency("bufferView", accessorDef.sparse.values.bufferView)); + } + return Promise.all(pendingBufferViews).then(function(bufferViews) { + const bufferView = bufferViews[0]; + const itemSize = WEBGL_TYPE_SIZES[accessorDef.type]; + const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType]; + const elementBytes = TypedArray.BYTES_PER_ELEMENT; + const itemBytes = elementBytes * itemSize; + const byteOffset = accessorDef.byteOffset || 0; + const byteStride = accessorDef.bufferView !== void 0 ? json.bufferViews[accessorDef.bufferView].byteStride : void 0; + const normalized = accessorDef.normalized === true; + let array, bufferAttribute; + if (byteStride && byteStride !== itemBytes) { + const ibSlice = Math.floor(byteOffset / byteStride); + const ibCacheKey = "InterleavedBuffer:" + accessorDef.bufferView + ":" + accessorDef.componentType + ":" + ibSlice + ":" + accessorDef.count; + let ib = parser.cache.get(ibCacheKey); + if (!ib) { + array = new TypedArray(bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes); + ib = new InterleavedBuffer(array, byteStride / elementBytes); + parser.cache.add(ibCacheKey, ib); + } + bufferAttribute = new InterleavedBufferAttribute(ib, itemSize, byteOffset % byteStride / elementBytes, normalized); + } else { + if (bufferView === null) { + array = new TypedArray(accessorDef.count * itemSize); + } else { + array = new TypedArray(bufferView, byteOffset, accessorDef.count * itemSize); + } + bufferAttribute = new BufferAttribute(array, itemSize, normalized); + } + if (accessorDef.sparse !== void 0) { + const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR; + const TypedArrayIndices = WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType]; + const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0; + const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0; + const sparseIndices = new TypedArrayIndices(bufferViews[1], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices); + const sparseValues = new TypedArray(bufferViews[2], byteOffsetValues, accessorDef.sparse.count * itemSize); + if (bufferView !== null) { + bufferAttribute = new BufferAttribute(bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized); + } + for (let i = 0, il = sparseIndices.length; i < il; i++) { + const index = sparseIndices[i]; + bufferAttribute.setX(index, sparseValues[i * itemSize]); + if (itemSize >= 2) bufferAttribute.setY(index, sparseValues[i * itemSize + 1]); + if (itemSize >= 3) bufferAttribute.setZ(index, sparseValues[i * itemSize + 2]); + if (itemSize >= 4) bufferAttribute.setW(index, sparseValues[i * itemSize + 3]); + if (itemSize >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute."); + } + } + return bufferAttribute; + }); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures + * @param {number} textureIndex + * @return {Promise} + */ + loadTexture(textureIndex) { + const json = this.json; + const options = this.options; + const textureDef = json.textures[textureIndex]; + const sourceIndex = textureDef.source; + const sourceDef = json.images[sourceIndex]; + let loader = this.textureLoader; + if (sourceDef.uri) { + const handler = options.manager.getHandler(sourceDef.uri); + if (handler !== null) loader = handler; + } + return this.loadTextureImage(textureIndex, sourceIndex, loader); + } + loadTextureImage(textureIndex, sourceIndex, loader) { + const parser = this; + const json = this.json; + const textureDef = json.textures[textureIndex]; + const sourceDef = json.images[sourceIndex]; + const cacheKey = (sourceDef.uri || sourceDef.bufferView) + ":" + textureDef.sampler; + if (this.textureCache[cacheKey]) { + return this.textureCache[cacheKey]; + } + const promise = this.loadImageSource(sourceIndex, loader).then(function(texture) { + texture.flipY = false; + texture.name = textureDef.name || sourceDef.name || ""; + if (texture.name === "" && typeof sourceDef.uri === "string" && sourceDef.uri.startsWith("data:image/") === false) { + texture.name = sourceDef.uri; + } + const samplers = json.samplers || {}; + const sampler = samplers[textureDef.sampler] || {}; + texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || LinearFilter; + texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || LinearMipmapLinearFilter; + texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || RepeatWrapping; + texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || RepeatWrapping; + parser.associations.set(texture, { textures: textureIndex }); + return texture; + }).catch(function() { + return null; + }); + this.textureCache[cacheKey] = promise; + return promise; + } + loadImageSource(sourceIndex, loader) { + const parser = this; + const json = this.json; + const options = this.options; + if (this.sourceCache[sourceIndex] !== void 0) { + return this.sourceCache[sourceIndex].then((texture) => texture.clone()); + } + const sourceDef = json.images[sourceIndex]; + const URL = self.URL || self.webkitURL; + let sourceURI = sourceDef.uri || ""; + let isObjectURL = false; + if (sourceDef.bufferView !== void 0) { + sourceURI = parser.getDependency("bufferView", sourceDef.bufferView).then(function(bufferView) { + isObjectURL = true; + const blob = new Blob([bufferView], { type: sourceDef.mimeType }); + sourceURI = URL.createObjectURL(blob); + return sourceURI; + }); + } else if (sourceDef.uri === void 0) { + throw new Error("THREE.GLTFLoader: Image " + sourceIndex + " is missing URI and bufferView"); + } + const promise = Promise.resolve(sourceURI).then(function(sourceURI2) { + return new Promise(function(resolve, reject) { + let onLoad = resolve; + if (loader.isImageBitmapLoader === true) { + onLoad = function(imageBitmap) { + const texture = new Texture(imageBitmap); + texture.needsUpdate = true; + resolve(texture); + }; + } + loader.load(LoaderUtils.resolveURL(sourceURI2, options.path), onLoad, void 0, reject); + }); + }).then(function(texture) { + if (isObjectURL === true) { + URL.revokeObjectURL(sourceURI); + } + assignExtrasToUserData(texture, sourceDef); + texture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType(sourceDef.uri); + return texture; + }).catch(function(error) { + console.error("THREE.GLTFLoader: Couldn't load texture", sourceURI); + throw error; + }); + this.sourceCache[sourceIndex] = promise; + return promise; + } + /** + * Asynchronously assigns a texture to the given material parameters. + * @param {Object} materialParams + * @param {string} mapName + * @param {Object} mapDef + * @return {Promise} + */ + assignTexture(materialParams, mapName, mapDef, colorSpace) { + const parser = this; + return this.getDependency("texture", mapDef.index).then(function(texture) { + if (!texture) return null; + if (mapDef.texCoord !== void 0 && mapDef.texCoord > 0) { + texture = texture.clone(); + texture.channel = mapDef.texCoord; + } + if (parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]) { + const transform = mapDef.extensions !== void 0 ? mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM] : void 0; + if (transform) { + const gltfReference = parser.associations.get(texture); + texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform); + parser.associations.set(texture, gltfReference); + } + } + if (colorSpace !== void 0) { + texture.colorSpace = colorSpace; + } + materialParams[mapName] = texture; + return texture; + }); + } + /** + * Assigns final material to a Mesh, Line, or Points instance. The instance + * already has a material (generated from the glTF material options alone) + * but reuse of the same glTF material may require multiple threejs materials + * to accommodate different primitive types, defines, etc. New materials will + * be created if necessary, and reused from a cache. + * @param {Object3D} mesh Mesh, Line, or Points instance. + */ + assignFinalMaterial(mesh) { + const geometry = mesh.geometry; + let material = mesh.material; + const useDerivativeTangents = geometry.attributes.tangent === void 0; + const useVertexColors = geometry.attributes.color !== void 0; + const useFlatShading = geometry.attributes.normal === void 0; + if (mesh.isPoints) { + const cacheKey = "PointsMaterial:" + material.uuid; + let pointsMaterial = this.cache.get(cacheKey); + if (!pointsMaterial) { + pointsMaterial = new PointsMaterial(); + Material.prototype.copy.call(pointsMaterial, material); + pointsMaterial.color.copy(material.color); + pointsMaterial.map = material.map; + pointsMaterial.sizeAttenuation = false; + this.cache.add(cacheKey, pointsMaterial); + } + material = pointsMaterial; + } else if (mesh.isLine) { + const cacheKey = "LineBasicMaterial:" + material.uuid; + let lineMaterial = this.cache.get(cacheKey); + if (!lineMaterial) { + lineMaterial = new LineBasicMaterial(); + Material.prototype.copy.call(lineMaterial, material); + lineMaterial.color.copy(material.color); + lineMaterial.map = material.map; + this.cache.add(cacheKey, lineMaterial); + } + material = lineMaterial; + } + if (useDerivativeTangents || useVertexColors || useFlatShading) { + let cacheKey = "ClonedMaterial:" + material.uuid + ":"; + if (useDerivativeTangents) cacheKey += "derivative-tangents:"; + if (useVertexColors) cacheKey += "vertex-colors:"; + if (useFlatShading) cacheKey += "flat-shading:"; + let cachedMaterial = this.cache.get(cacheKey); + if (!cachedMaterial) { + cachedMaterial = material.clone(); + if (useVertexColors) cachedMaterial.vertexColors = true; + if (useFlatShading) cachedMaterial.flatShading = true; + if (useDerivativeTangents) { + if (cachedMaterial.normalScale) cachedMaterial.normalScale.y *= -1; + if (cachedMaterial.clearcoatNormalScale) cachedMaterial.clearcoatNormalScale.y *= -1; + } + this.cache.add(cacheKey, cachedMaterial); + this.associations.set(cachedMaterial, this.associations.get(material)); + } + material = cachedMaterial; + } + mesh.material = material; + } + getMaterialType() { + return MeshStandardMaterial; + } + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials + * @param {number} materialIndex + * @return {Promise} + */ + loadMaterial(materialIndex) { + const parser = this; + const json = this.json; + const extensions = this.extensions; + const materialDef = json.materials[materialIndex]; + let materialType; + const materialParams = {}; + const materialExtensions = materialDef.extensions || {}; + const pending = []; + if (materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]) { + const kmuExtension = extensions[EXTENSIONS.KHR_MATERIALS_UNLIT]; + materialType = kmuExtension.getMaterialType(); + pending.push(kmuExtension.extendParams(materialParams, materialDef, parser)); + } else { + const metallicRoughness = materialDef.pbrMetallicRoughness || {}; + materialParams.color = new Color(1, 1, 1); + materialParams.opacity = 1; + if (Array.isArray(metallicRoughness.baseColorFactor)) { + const array = metallicRoughness.baseColorFactor; + materialParams.color.setRGB(array[0], array[1], array[2], LinearSRGBColorSpace); + materialParams.opacity = array[3]; + } + if (metallicRoughness.baseColorTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "map", metallicRoughness.baseColorTexture, SRGBColorSpace)); + } + materialParams.metalness = metallicRoughness.metallicFactor !== void 0 ? metallicRoughness.metallicFactor : 1; + materialParams.roughness = metallicRoughness.roughnessFactor !== void 0 ? metallicRoughness.roughnessFactor : 1; + if (metallicRoughness.metallicRoughnessTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "metalnessMap", metallicRoughness.metallicRoughnessTexture)); + pending.push(parser.assignTexture(materialParams, "roughnessMap", metallicRoughness.metallicRoughnessTexture)); + } + materialType = this._invokeOne(function(ext) { + return ext.getMaterialType && ext.getMaterialType(materialIndex); + }); + pending.push(Promise.all(this._invokeAll(function(ext) { + return ext.extendMaterialParams && ext.extendMaterialParams(materialIndex, materialParams); + }))); + } + if (materialDef.doubleSided === true) { + materialParams.side = DoubleSide; + } + const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE; + if (alphaMode === ALPHA_MODES.BLEND) { + materialParams.transparent = true; + materialParams.depthWrite = false; + } else { + materialParams.transparent = false; + if (alphaMode === ALPHA_MODES.MASK) { + materialParams.alphaTest = materialDef.alphaCutoff !== void 0 ? materialDef.alphaCutoff : 0.5; + } + } + if (materialDef.normalTexture !== void 0 && materialType !== MeshBasicMaterial) { + pending.push(parser.assignTexture(materialParams, "normalMap", materialDef.normalTexture)); + materialParams.normalScale = new Vector2(1, 1); + if (materialDef.normalTexture.scale !== void 0) { + const scale = materialDef.normalTexture.scale; + materialParams.normalScale.set(scale, scale); + } + } + if (materialDef.occlusionTexture !== void 0 && materialType !== MeshBasicMaterial) { + pending.push(parser.assignTexture(materialParams, "aoMap", materialDef.occlusionTexture)); + if (materialDef.occlusionTexture.strength !== void 0) { + materialParams.aoMapIntensity = materialDef.occlusionTexture.strength; + } + } + if (materialDef.emissiveFactor !== void 0 && materialType !== MeshBasicMaterial) { + const emissiveFactor = materialDef.emissiveFactor; + materialParams.emissive = new Color().setRGB(emissiveFactor[0], emissiveFactor[1], emissiveFactor[2], LinearSRGBColorSpace); + } + if (materialDef.emissiveTexture !== void 0 && materialType !== MeshBasicMaterial) { + pending.push(parser.assignTexture(materialParams, "emissiveMap", materialDef.emissiveTexture, SRGBColorSpace)); + } + return Promise.all(pending).then(function() { + const material = new materialType(materialParams); + if (materialDef.name) material.name = materialDef.name; + assignExtrasToUserData(material, materialDef); + parser.associations.set(material, { materials: materialIndex }); + if (materialDef.extensions) addUnknownExtensionsToUserData(extensions, material, materialDef); + return material; + }); + } + /** When Object3D instances are targeted by animation, they need unique names. */ + createUniqueName(originalName) { + const sanitizedName = PropertyBinding.sanitizeNodeName(originalName || ""); + if (sanitizedName in this.nodeNamesUsed) { + return sanitizedName + "_" + ++this.nodeNamesUsed[sanitizedName]; + } else { + this.nodeNamesUsed[sanitizedName] = 0; + return sanitizedName; + } + } + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry + * + * Creates BufferGeometries from primitives. + * + * @param {Array} primitives + * @return {Promise>} + */ + loadGeometries(primitives) { + const parser = this; + const extensions = this.extensions; + const cache = this.primitiveCache; + function createDracoPrimitive(primitive) { + return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive, parser).then(function(geometry) { + return addPrimitiveAttributes(geometry, primitive, parser); + }); + } + const pending = []; + for (let i = 0, il = primitives.length; i < il; i++) { + const primitive = primitives[i]; + const cacheKey = createPrimitiveKey(primitive); + const cached = cache[cacheKey]; + if (cached) { + pending.push(cached.promise); + } else { + let geometryPromise; + if (primitive.extensions && primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) { + geometryPromise = createDracoPrimitive(primitive); + } else { + geometryPromise = addPrimitiveAttributes(new BufferGeometry(), primitive, parser); + } + cache[cacheKey] = { primitive, promise: geometryPromise }; + pending.push(geometryPromise); + } + } + return Promise.all(pending); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes + * @param {number} meshIndex + * @return {Promise} + */ + loadMesh(meshIndex) { + const parser = this; + const json = this.json; + const extensions = this.extensions; + const meshDef = json.meshes[meshIndex]; + const primitives = meshDef.primitives; + const pending = []; + for (let i = 0, il = primitives.length; i < il; i++) { + const material = primitives[i].material === void 0 ? createDefaultMaterial(this.cache) : this.getDependency("material", primitives[i].material); + pending.push(material); + } + pending.push(parser.loadGeometries(primitives)); + return Promise.all(pending).then(function(results) { + const materials = results.slice(0, results.length - 1); + const geometries = results[results.length - 1]; + const meshes = []; + for (let i = 0, il = geometries.length; i < il; i++) { + const geometry = geometries[i]; + const primitive = primitives[i]; + let mesh; + const material = materials[i]; + if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || primitive.mode === void 0) { + mesh = meshDef.isSkinnedMesh === true ? new SkinnedMesh(geometry, material) : new Mesh(geometry, material); + if (mesh.isSkinnedMesh === true) { + mesh.normalizeSkinWeights(); + } + if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) { + mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleStripDrawMode); + } else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) { + mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleFanDrawMode); + } + } else if (primitive.mode === WEBGL_CONSTANTS.LINES) { + mesh = new LineSegments(geometry, material); + } else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) { + mesh = new Line(geometry, material); + } else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) { + mesh = new LineLoop(geometry, material); + } else if (primitive.mode === WEBGL_CONSTANTS.POINTS) { + mesh = new Points(geometry, material); + } else { + throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + primitive.mode); + } + if (Object.keys(mesh.geometry.morphAttributes).length > 0) { + updateMorphTargets(mesh, meshDef); + } + mesh.name = parser.createUniqueName(meshDef.name || "mesh_" + meshIndex); + assignExtrasToUserData(mesh, meshDef); + if (primitive.extensions) addUnknownExtensionsToUserData(extensions, mesh, primitive); + parser.assignFinalMaterial(mesh); + meshes.push(mesh); + } + for (let i = 0, il = meshes.length; i < il; i++) { + parser.associations.set(meshes[i], { + meshes: meshIndex, + primitives: i + }); + } + if (meshes.length === 1) { + if (meshDef.extensions) addUnknownExtensionsToUserData(extensions, meshes[0], meshDef); + return meshes[0]; + } + const group = new Group(); + if (meshDef.extensions) addUnknownExtensionsToUserData(extensions, group, meshDef); + parser.associations.set(group, { meshes: meshIndex }); + for (let i = 0, il = meshes.length; i < il; i++) { + group.add(meshes[i]); + } + return group; + }); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras + * @param {number} cameraIndex + * @return {Promise} + */ + loadCamera(cameraIndex) { + let camera; + const cameraDef = this.json.cameras[cameraIndex]; + const params = cameraDef[cameraDef.type]; + if (!params) { + console.warn("THREE.GLTFLoader: Missing camera parameters."); + return; + } + if (cameraDef.type === "perspective") { + camera = new PerspectiveCamera(MathUtils.radToDeg(params.yfov), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6); + } else if (cameraDef.type === "orthographic") { + camera = new OrthographicCamera(-params.xmag, params.xmag, params.ymag, -params.ymag, params.znear, params.zfar); + } + if (cameraDef.name) camera.name = this.createUniqueName(cameraDef.name); + assignExtrasToUserData(camera, cameraDef); + return Promise.resolve(camera); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins + * @param {number} skinIndex + * @return {Promise} + */ + loadSkin(skinIndex) { + const skinDef = this.json.skins[skinIndex]; + const pending = []; + for (let i = 0, il = skinDef.joints.length; i < il; i++) { + pending.push(this._loadNodeShallow(skinDef.joints[i])); + } + if (skinDef.inverseBindMatrices !== void 0) { + pending.push(this.getDependency("accessor", skinDef.inverseBindMatrices)); + } else { + pending.push(null); + } + return Promise.all(pending).then(function(results) { + const inverseBindMatrices = results.pop(); + const jointNodes = results; + const bones = []; + const boneInverses = []; + for (let i = 0, il = jointNodes.length; i < il; i++) { + const jointNode = jointNodes[i]; + if (jointNode) { + bones.push(jointNode); + const mat = new Matrix4(); + if (inverseBindMatrices !== null) { + mat.fromArray(inverseBindMatrices.array, i * 16); + } + boneInverses.push(mat); + } else { + console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', skinDef.joints[i]); + } + } + return new Skeleton(bones, boneInverses); + }); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations + * @param {number} animationIndex + * @return {Promise} + */ + loadAnimation(animationIndex) { + const json = this.json; + const parser = this; + const animationDef = json.animations[animationIndex]; + const animationName = animationDef.name ? animationDef.name : "animation_" + animationIndex; + const pendingNodes = []; + const pendingInputAccessors = []; + const pendingOutputAccessors = []; + const pendingSamplers = []; + const pendingTargets = []; + for (let i = 0, il = animationDef.channels.length; i < il; i++) { + const channel = animationDef.channels[i]; + const sampler = animationDef.samplers[channel.sampler]; + const target = channel.target; + const name = target.node; + const input = animationDef.parameters !== void 0 ? animationDef.parameters[sampler.input] : sampler.input; + const output = animationDef.parameters !== void 0 ? animationDef.parameters[sampler.output] : sampler.output; + if (target.node === void 0) continue; + pendingNodes.push(this.getDependency("node", name)); + pendingInputAccessors.push(this.getDependency("accessor", input)); + pendingOutputAccessors.push(this.getDependency("accessor", output)); + pendingSamplers.push(sampler); + pendingTargets.push(target); + } + return Promise.all([ + Promise.all(pendingNodes), + Promise.all(pendingInputAccessors), + Promise.all(pendingOutputAccessors), + Promise.all(pendingSamplers), + Promise.all(pendingTargets) + ]).then(function(dependencies) { + const nodes = dependencies[0]; + const inputAccessors = dependencies[1]; + const outputAccessors = dependencies[2]; + const samplers = dependencies[3]; + const targets = dependencies[4]; + const tracks = []; + for (let i = 0, il = nodes.length; i < il; i++) { + const node = nodes[i]; + const inputAccessor = inputAccessors[i]; + const outputAccessor = outputAccessors[i]; + const sampler = samplers[i]; + const target = targets[i]; + if (node === void 0) continue; + if (node.updateMatrix) { + node.updateMatrix(); + } + const createdTracks = parser._createAnimationTracks(node, inputAccessor, outputAccessor, sampler, target); + if (createdTracks) { + for (let k = 0; k < createdTracks.length; k++) { + tracks.push(createdTracks[k]); + } + } + } + return new AnimationClip(animationName, void 0, tracks); + }); + } + createNodeMesh(nodeIndex) { + const json = this.json; + const parser = this; + const nodeDef = json.nodes[nodeIndex]; + if (nodeDef.mesh === void 0) return null; + return parser.getDependency("mesh", nodeDef.mesh).then(function(mesh) { + const node = parser._getNodeRef(parser.meshCache, nodeDef.mesh, mesh); + if (nodeDef.weights !== void 0) { + node.traverse(function(o) { + if (!o.isMesh) return; + for (let i = 0, il = nodeDef.weights.length; i < il; i++) { + o.morphTargetInfluences[i] = nodeDef.weights[i]; + } + }); + } + return node; + }); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy + * @param {number} nodeIndex + * @return {Promise} + */ + loadNode(nodeIndex) { + const json = this.json; + const parser = this; + const nodeDef = json.nodes[nodeIndex]; + const nodePending = parser._loadNodeShallow(nodeIndex); + const childPending = []; + const childrenDef = nodeDef.children || []; + for (let i = 0, il = childrenDef.length; i < il; i++) { + childPending.push(parser.getDependency("node", childrenDef[i])); + } + const skeletonPending = nodeDef.skin === void 0 ? Promise.resolve(null) : parser.getDependency("skin", nodeDef.skin); + return Promise.all([ + nodePending, + Promise.all(childPending), + skeletonPending + ]).then(function(results) { + const node = results[0]; + const children = results[1]; + const skeleton = results[2]; + if (skeleton !== null) { + node.traverse(function(mesh) { + if (!mesh.isSkinnedMesh) return; + mesh.bind(skeleton, _identityMatrix); + }); + } + for (let i = 0, il = children.length; i < il; i++) { + node.add(children[i]); + } + return node; + }); + } + // ._loadNodeShallow() parses a single node. + // skin and child nodes are created and added in .loadNode() (no '_' prefix). + _loadNodeShallow(nodeIndex) { + const json = this.json; + const extensions = this.extensions; + const parser = this; + if (this.nodeCache[nodeIndex] !== void 0) { + return this.nodeCache[nodeIndex]; + } + const nodeDef = json.nodes[nodeIndex]; + const nodeName = nodeDef.name ? parser.createUniqueName(nodeDef.name) : ""; + const pending = []; + const meshPromise = parser._invokeOne(function(ext) { + return ext.createNodeMesh && ext.createNodeMesh(nodeIndex); + }); + if (meshPromise) { + pending.push(meshPromise); + } + if (nodeDef.camera !== void 0) { + pending.push(parser.getDependency("camera", nodeDef.camera).then(function(camera) { + return parser._getNodeRef(parser.cameraCache, nodeDef.camera, camera); + })); + } + parser._invokeAll(function(ext) { + return ext.createNodeAttachment && ext.createNodeAttachment(nodeIndex); + }).forEach(function(promise) { + pending.push(promise); + }); + this.nodeCache[nodeIndex] = Promise.all(pending).then(function(objects) { + let node; + if (nodeDef.isBone === true) { + node = new Bone(); + } else if (objects.length > 1) { + node = new Group(); + } else if (objects.length === 1) { + node = objects[0]; + } else { + node = new Object3D(); + } + if (node !== objects[0]) { + for (let i = 0, il = objects.length; i < il; i++) { + node.add(objects[i]); + } + } + if (nodeDef.name) { + node.userData.name = nodeDef.name; + node.name = nodeName; + } + assignExtrasToUserData(node, nodeDef); + if (nodeDef.extensions) addUnknownExtensionsToUserData(extensions, node, nodeDef); + if (nodeDef.matrix !== void 0) { + const matrix = new Matrix4(); + matrix.fromArray(nodeDef.matrix); + node.applyMatrix4(matrix); + } else { + if (nodeDef.translation !== void 0) { + node.position.fromArray(nodeDef.translation); + } + if (nodeDef.rotation !== void 0) { + node.quaternion.fromArray(nodeDef.rotation); + } + if (nodeDef.scale !== void 0) { + node.scale.fromArray(nodeDef.scale); + } + } + if (!parser.associations.has(node)) { + parser.associations.set(node, {}); + } + parser.associations.get(node).nodes = nodeIndex; + return node; + }); + return this.nodeCache[nodeIndex]; + } + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes + * @param {number} sceneIndex + * @return {Promise} + */ + loadScene(sceneIndex) { + const extensions = this.extensions; + const sceneDef = this.json.scenes[sceneIndex]; + const parser = this; + const scene = new Group(); + if (sceneDef.name) scene.name = parser.createUniqueName(sceneDef.name); + assignExtrasToUserData(scene, sceneDef); + if (sceneDef.extensions) addUnknownExtensionsToUserData(extensions, scene, sceneDef); + const nodeIds = sceneDef.nodes || []; + const pending = []; + for (let i = 0, il = nodeIds.length; i < il; i++) { + pending.push(parser.getDependency("node", nodeIds[i])); + } + return Promise.all(pending).then(function(nodes) { + for (let i = 0, il = nodes.length; i < il; i++) { + scene.add(nodes[i]); + } + const reduceAssociations = (node) => { + const reducedAssociations = /* @__PURE__ */ new Map(); + for (const [key, value] of parser.associations) { + if (key instanceof Material || key instanceof Texture) { + reducedAssociations.set(key, value); + } + } + node.traverse((node2) => { + const mappings = parser.associations.get(node2); + if (mappings != null) { + reducedAssociations.set(node2, mappings); + } + }); + return reducedAssociations; + }; + parser.associations = reduceAssociations(scene); + return scene; + }); + } + _createAnimationTracks(node, inputAccessor, outputAccessor, sampler, target) { + const tracks = []; + const targetName = node.name ? node.name : node.uuid; + const targetNames = []; + if (PATH_PROPERTIES[target.path] === PATH_PROPERTIES.weights) { + node.traverse(function(object) { + if (object.morphTargetInfluences) { + targetNames.push(object.name ? object.name : object.uuid); + } + }); + } else { + targetNames.push(targetName); + } + let TypedKeyframeTrack; + switch (PATH_PROPERTIES[target.path]) { + case PATH_PROPERTIES.weights: + TypedKeyframeTrack = NumberKeyframeTrack; + break; + case PATH_PROPERTIES.rotation: + TypedKeyframeTrack = QuaternionKeyframeTrack; + break; + case PATH_PROPERTIES.position: + case PATH_PROPERTIES.scale: + TypedKeyframeTrack = VectorKeyframeTrack; + break; + default: + switch (outputAccessor.itemSize) { + case 1: + TypedKeyframeTrack = NumberKeyframeTrack; + break; + case 2: + case 3: + default: + TypedKeyframeTrack = VectorKeyframeTrack; + break; + } + break; + } + const interpolation = sampler.interpolation !== void 0 ? INTERPOLATION[sampler.interpolation] : InterpolateLinear; + const outputArray = this._getArrayFromAccessor(outputAccessor); + for (let j = 0, jl = targetNames.length; j < jl; j++) { + const track = new TypedKeyframeTrack( + targetNames[j] + "." + PATH_PROPERTIES[target.path], + inputAccessor.array, + outputArray, + interpolation + ); + if (sampler.interpolation === "CUBICSPLINE") { + this._createCubicSplineTrackInterpolant(track); + } + tracks.push(track); + } + return tracks; + } + _getArrayFromAccessor(accessor) { + let outputArray = accessor.array; + if (accessor.normalized) { + const scale = getNormalizedComponentScale(outputArray.constructor); + const scaled = new Float32Array(outputArray.length); + for (let j = 0, jl = outputArray.length; j < jl; j++) { + scaled[j] = outputArray[j] * scale; + } + outputArray = scaled; + } + return outputArray; + } + _createCubicSplineTrackInterpolant(track) { + track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline(result) { + const interpolantType = this instanceof QuaternionKeyframeTrack ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant; + return new interpolantType(this.times, this.values, this.getValueSize() / 3, result); + }; + track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true; + } +}; +function computeBounds(geometry, primitiveDef, parser) { + const attributes = primitiveDef.attributes; + const box = new Box3(); + if (attributes.POSITION !== void 0) { + const accessor = parser.json.accessors[attributes.POSITION]; + const min = accessor.min; + const max = accessor.max; + if (min !== void 0 && max !== void 0) { + box.set( + new Vector3(min[0], min[1], min[2]), + new Vector3(max[0], max[1], max[2]) + ); + if (accessor.normalized) { + const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]); + box.min.multiplyScalar(boxScale); + box.max.multiplyScalar(boxScale); + } + } else { + console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION."); + return; + } + } else { + return; + } + const targets = primitiveDef.targets; + if (targets !== void 0) { + const maxDisplacement = new Vector3(); + const vector = new Vector3(); + for (let i = 0, il = targets.length; i < il; i++) { + const target = targets[i]; + if (target.POSITION !== void 0) { + const accessor = parser.json.accessors[target.POSITION]; + const min = accessor.min; + const max = accessor.max; + if (min !== void 0 && max !== void 0) { + vector.setX(Math.max(Math.abs(min[0]), Math.abs(max[0]))); + vector.setY(Math.max(Math.abs(min[1]), Math.abs(max[1]))); + vector.setZ(Math.max(Math.abs(min[2]), Math.abs(max[2]))); + if (accessor.normalized) { + const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]); + vector.multiplyScalar(boxScale); + } + maxDisplacement.max(vector); + } else { + console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION."); + } + } + } + box.expandByVector(maxDisplacement); + } + geometry.boundingBox = box; + const sphere = new Sphere(); + box.getCenter(sphere.center); + sphere.radius = box.min.distanceTo(box.max) / 2; + geometry.boundingSphere = sphere; +} +function addPrimitiveAttributes(geometry, primitiveDef, parser) { + const attributes = primitiveDef.attributes; + const pending = []; + function assignAttributeAccessor(accessorIndex, attributeName) { + return parser.getDependency("accessor", accessorIndex).then(function(accessor) { + geometry.setAttribute(attributeName, accessor); + }); + } + for (const gltfAttributeName in attributes) { + const threeAttributeName = ATTRIBUTES[gltfAttributeName] || gltfAttributeName.toLowerCase(); + if (threeAttributeName in geometry.attributes) continue; + pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName)); + } + if (primitiveDef.indices !== void 0 && !geometry.index) { + const accessor = parser.getDependency("accessor", primitiveDef.indices).then(function(accessor2) { + geometry.setIndex(accessor2); + }); + pending.push(accessor); + } + if (ColorManagement.workingColorSpace !== LinearSRGBColorSpace && "COLOR_0" in attributes) { + console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ColorManagement.workingColorSpace}" not supported.`); + } + assignExtrasToUserData(geometry, primitiveDef); + computeBounds(geometry, primitiveDef, parser); + return Promise.all(pending).then(function() { + return primitiveDef.targets !== void 0 ? addMorphTargets(geometry, primitiveDef.targets, parser) : geometry; + }); +} export { GLTFLoader }; diff --git a/site/interface/site/node_modules/.vite/deps/three_addons_loaders_GLTFLoader__js.js.map b/site/interface/site/node_modules/.vite/deps/three_addons_loaders_GLTFLoader__js.js.map index 9865211..6b7f2de 100644 --- a/site/interface/site/node_modules/.vite/deps/three_addons_loaders_GLTFLoader__js.js.map +++ b/site/interface/site/node_modules/.vite/deps/three_addons_loaders_GLTFLoader__js.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] + "sources": ["../../three/examples/jsm/utils/BufferGeometryUtils.js", "../../three/examples/jsm/loaders/GLTFLoader.js"], + "sourcesContent": ["import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tFloat32BufferAttribute,\n\tInstancedBufferAttribute,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tTrianglesDrawMode,\n\tVector3,\n} from 'three';\n\nfunction computeMikkTSpaceTangents( geometry, MikkTSpace, negateSign = true ) {\n\n\tif ( ! MikkTSpace || ! MikkTSpace.isReady ) {\n\n\t\tthrow new Error( 'BufferGeometryUtils: Initialized MikkTSpace library required.' );\n\n\t}\n\n\tif ( ! geometry.hasAttribute( 'position' ) || ! geometry.hasAttribute( 'normal' ) || ! geometry.hasAttribute( 'uv' ) ) {\n\n\t\tthrow new Error( 'BufferGeometryUtils: Tangents require \"position\", \"normal\", and \"uv\" attributes.' );\n\n\t}\n\n\tfunction getAttributeArray( attribute ) {\n\n\t\tif ( attribute.normalized || attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tconst dstArray = new Float32Array( attribute.count * attribute.itemSize );\n\n\t\t\tfor ( let i = 0, j = 0; i < attribute.count; i ++ ) {\n\n\t\t\t\tdstArray[ j ++ ] = attribute.getX( i );\n\t\t\t\tdstArray[ j ++ ] = attribute.getY( i );\n\n\t\t\t\tif ( attribute.itemSize > 2 ) {\n\n\t\t\t\t\tdstArray[ j ++ ] = attribute.getZ( i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn dstArray;\n\n\t\t}\n\n\t\tif ( attribute.array instanceof Float32Array ) {\n\n\t\t\treturn attribute.array;\n\n\t\t}\n\n\t\treturn new Float32Array( attribute.array );\n\n\t}\n\n\t// MikkTSpace algorithm requires non-indexed input.\n\n\tconst _geometry = geometry.index ? geometry.toNonIndexed() : geometry;\n\n\t// Compute vertex tangents.\n\n\tconst tangents = MikkTSpace.generateTangents(\n\n\t\tgetAttributeArray( _geometry.attributes.position ),\n\t\tgetAttributeArray( _geometry.attributes.normal ),\n\t\tgetAttributeArray( _geometry.attributes.uv )\n\n\t);\n\n\t// Texture coordinate convention of glTF differs from the apparent\n\t// default of the MikkTSpace library; .w component must be flipped.\n\n\tif ( negateSign ) {\n\n\t\tfor ( let i = 3; i < tangents.length; i += 4 ) {\n\n\t\t\ttangents[ i ] *= - 1;\n\n\t\t}\n\n\t}\n\n\t//\n\n\t_geometry.setAttribute( 'tangent', new BufferAttribute( tangents, 4 ) );\n\n\tif ( geometry !== _geometry ) {\n\n\t\tgeometry.copy( _geometry );\n\n\t}\n\n\treturn geometry;\n\n}\n\n/**\n * @param {Array} geometries\n * @param {Boolean} useGroups\n * @return {BufferGeometry}\n */\nfunction mergeGeometries( geometries, useGroups = false ) {\n\n\tconst isIndexed = geometries[ 0 ].index !== null;\n\n\tconst attributesUsed = new Set( Object.keys( geometries[ 0 ].attributes ) );\n\tconst morphAttributesUsed = new Set( Object.keys( geometries[ 0 ].morphAttributes ) );\n\n\tconst attributes = {};\n\tconst morphAttributes = {};\n\n\tconst morphTargetsRelative = geometries[ 0 ].morphTargetsRelative;\n\n\tconst mergedGeometry = new BufferGeometry();\n\n\tlet offset = 0;\n\n\tfor ( let i = 0; i < geometries.length; ++ i ) {\n\n\t\tconst geometry = geometries[ i ];\n\t\tlet attributesCount = 0;\n\n\t\t// ensure that all geometries are indexed, or none\n\n\t\tif ( isIndexed !== ( geometry.index !== null ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// gather attributes, exit early if they're different\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tif ( ! attributesUsed.has( name ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure \"' + name + '\" attribute exists among all geometries, or in none of them.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tif ( attributes[ name ] === undefined ) attributes[ name ] = [];\n\n\t\t\tattributes[ name ].push( geometry.attributes[ name ] );\n\n\t\t\tattributesCount ++;\n\n\t\t}\n\n\t\t// ensure geometries have the same number of attributes\n\n\t\tif ( attributesCount !== attributesUsed.size ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. Make sure all geometries have the same number of attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// gather morph attributes, exit early if they're different\n\n\t\tif ( morphTargetsRelative !== geometry.morphTargetsRelative ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. .morphTargetsRelative must be consistent throughout all geometries.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tif ( ! morphAttributesUsed.has( name ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. .morphAttributes must be consistent throughout all geometries.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tif ( morphAttributes[ name ] === undefined ) morphAttributes[ name ] = [];\n\n\t\t\tmorphAttributes[ name ].push( geometry.morphAttributes[ name ] );\n\n\t\t}\n\n\t\tif ( useGroups ) {\n\n\t\t\tlet count;\n\n\t\t\tif ( isIndexed ) {\n\n\t\t\t\tcount = geometry.index.count;\n\n\t\t\t} else if ( geometry.attributes.position !== undefined ) {\n\n\t\t\t\tcount = geometry.attributes.position.count;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. The geometry must have either an index or a position attribute' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tmergedGeometry.addGroup( offset, count, i );\n\n\t\t\toffset += count;\n\n\t\t}\n\n\t}\n\n\t// merge indices\n\n\tif ( isIndexed ) {\n\n\t\tlet indexOffset = 0;\n\t\tconst mergedIndex = [];\n\n\t\tfor ( let i = 0; i < geometries.length; ++ i ) {\n\n\t\t\tconst index = geometries[ i ].index;\n\n\t\t\tfor ( let j = 0; j < index.count; ++ j ) {\n\n\t\t\t\tmergedIndex.push( index.getX( j ) + indexOffset );\n\n\t\t\t}\n\n\t\t\tindexOffset += geometries[ i ].attributes.position.count;\n\n\t\t}\n\n\t\tmergedGeometry.setIndex( mergedIndex );\n\n\t}\n\n\t// merge attributes\n\n\tfor ( const name in attributes ) {\n\n\t\tconst mergedAttribute = mergeAttributes( attributes[ name ] );\n\n\t\tif ( ! mergedAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the ' + name + ' attribute.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tmergedGeometry.setAttribute( name, mergedAttribute );\n\n\t}\n\n\t// merge morph attributes\n\n\tfor ( const name in morphAttributes ) {\n\n\t\tconst numMorphTargets = morphAttributes[ name ][ 0 ].length;\n\n\t\tif ( numMorphTargets === 0 ) break;\n\n\t\tmergedGeometry.morphAttributes = mergedGeometry.morphAttributes || {};\n\t\tmergedGeometry.morphAttributes[ name ] = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; ++ i ) {\n\n\t\t\tconst morphAttributesToMerge = [];\n\n\t\t\tfor ( let j = 0; j < morphAttributes[ name ].length; ++ j ) {\n\n\t\t\t\tmorphAttributesToMerge.push( morphAttributes[ name ][ j ][ i ] );\n\n\t\t\t}\n\n\t\t\tconst mergedMorphAttribute = mergeAttributes( morphAttributesToMerge );\n\n\t\t\tif ( ! mergedMorphAttribute ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the ' + name + ' morphAttribute.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tmergedGeometry.morphAttributes[ name ].push( mergedMorphAttribute );\n\n\t\t}\n\n\t}\n\n\treturn mergedGeometry;\n\n}\n\n/**\n * @param {Array} attributes\n * @return {BufferAttribute}\n */\nfunction mergeAttributes( attributes ) {\n\n\tlet TypedArray;\n\tlet itemSize;\n\tlet normalized;\n\tlet gpuType = - 1;\n\tlet arrayLength = 0;\n\n\tfor ( let i = 0; i < attributes.length; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\n\t\tif ( TypedArray === undefined ) TypedArray = attribute.array.constructor;\n\t\tif ( TypedArray !== attribute.array.constructor ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( itemSize === undefined ) itemSize = attribute.itemSize;\n\t\tif ( itemSize !== attribute.itemSize ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( normalized === undefined ) normalized = attribute.normalized;\n\t\tif ( normalized !== attribute.normalized ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( gpuType === - 1 ) gpuType = attribute.gpuType;\n\t\tif ( gpuType !== attribute.gpuType ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tarrayLength += attribute.count * itemSize;\n\n\t}\n\n\tconst array = new TypedArray( arrayLength );\n\tconst result = new BufferAttribute( array, itemSize, normalized );\n\tlet offset = 0;\n\n\tfor ( let i = 0; i < attributes.length; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tconst tupleOffset = offset / itemSize;\n\t\t\tfor ( let j = 0, l = attribute.count; j < l; j ++ ) {\n\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tconst value = attribute.getComponent( j, c );\n\t\t\t\t\tresult.setComponent( j + tupleOffset, c, value );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tarray.set( attribute.array, offset );\n\n\t\t}\n\n\t\toffset += attribute.count * itemSize;\n\n\t}\n\n\tif ( gpuType !== undefined ) {\n\n\t\tresult.gpuType = gpuType;\n\n\t}\n\n\treturn result;\n\n}\n\n/**\n * @param {BufferAttribute}\n * @return {BufferAttribute}\n */\nexport function deepCloneAttribute( attribute ) {\n\n\tif ( attribute.isInstancedInterleavedBufferAttribute || attribute.isInterleavedBufferAttribute ) {\n\n\t\treturn deinterleaveAttribute( attribute );\n\n\t}\n\n\tif ( attribute.isInstancedBufferAttribute ) {\n\n\t\treturn new InstancedBufferAttribute().copy( attribute );\n\n\t}\n\n\treturn new BufferAttribute().copy( attribute );\n\n}\n\n/**\n * @param {Array} attributes\n * @return {Array}\n */\nfunction interleaveAttributes( attributes ) {\n\n\t// Interleaves the provided attributes into an InterleavedBuffer and returns\n\t// a set of InterleavedBufferAttributes for each attribute\n\tlet TypedArray;\n\tlet arrayLength = 0;\n\tlet stride = 0;\n\n\t// calculate the length and type of the interleavedBuffer\n\tfor ( let i = 0, l = attributes.length; i < l; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\n\t\tif ( TypedArray === undefined ) TypedArray = attribute.array.constructor;\n\t\tif ( TypedArray !== attribute.array.constructor ) {\n\n\t\t\tconsole.error( 'AttributeBuffers of different types cannot be interleaved' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tarrayLength += attribute.array.length;\n\t\tstride += attribute.itemSize;\n\n\t}\n\n\t// Create the set of buffer attributes\n\tconst interleavedBuffer = new InterleavedBuffer( new TypedArray( arrayLength ), stride );\n\tlet offset = 0;\n\tconst res = [];\n\tconst getters = [ 'getX', 'getY', 'getZ', 'getW' ];\n\tconst setters = [ 'setX', 'setY', 'setZ', 'setW' ];\n\n\tfor ( let j = 0, l = attributes.length; j < l; j ++ ) {\n\n\t\tconst attribute = attributes[ j ];\n\t\tconst itemSize = attribute.itemSize;\n\t\tconst count = attribute.count;\n\t\tconst iba = new InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, attribute.normalized );\n\t\tres.push( iba );\n\n\t\toffset += itemSize;\n\n\t\t// Move the data for each attribute into the new interleavedBuffer\n\t\t// at the appropriate offset\n\t\tfor ( let c = 0; c < count; c ++ ) {\n\n\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\tiba[ setters[ k ] ]( c, attribute[ getters[ k ] ]( c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn res;\n\n}\n\n// returns a new, non-interleaved version of the provided attribute\nexport function deinterleaveAttribute( attribute ) {\n\n\tconst cons = attribute.data.array.constructor;\n\tconst count = attribute.count;\n\tconst itemSize = attribute.itemSize;\n\tconst normalized = attribute.normalized;\n\n\tconst array = new cons( count * itemSize );\n\tlet newAttribute;\n\tif ( attribute.isInstancedInterleavedBufferAttribute ) {\n\n\t\tnewAttribute = new InstancedBufferAttribute( array, itemSize, normalized, attribute.meshPerAttribute );\n\n\t} else {\n\n\t\tnewAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t}\n\n\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\tnewAttribute.setX( i, attribute.getX( i ) );\n\n\t\tif ( itemSize >= 2 ) {\n\n\t\t\tnewAttribute.setY( i, attribute.getY( i ) );\n\n\t\t}\n\n\t\tif ( itemSize >= 3 ) {\n\n\t\t\tnewAttribute.setZ( i, attribute.getZ( i ) );\n\n\t\t}\n\n\t\tif ( itemSize >= 4 ) {\n\n\t\t\tnewAttribute.setW( i, attribute.getW( i ) );\n\n\t\t}\n\n\t}\n\n\treturn newAttribute;\n\n}\n\n// deinterleaves all attributes on the geometry\nexport function deinterleaveGeometry( geometry ) {\n\n\tconst attributes = geometry.attributes;\n\tconst morphTargets = geometry.morphTargets;\n\tconst attrMap = new Map();\n\n\tfor ( const key in attributes ) {\n\n\t\tconst attr = attributes[ key ];\n\t\tif ( attr.isInterleavedBufferAttribute ) {\n\n\t\t\tif ( ! attrMap.has( attr ) ) {\n\n\t\t\t\tattrMap.set( attr, deinterleaveAttribute( attr ) );\n\n\t\t\t}\n\n\t\t\tattributes[ key ] = attrMap.get( attr );\n\n\t\t}\n\n\t}\n\n\tfor ( const key in morphTargets ) {\n\n\t\tconst attr = morphTargets[ key ];\n\t\tif ( attr.isInterleavedBufferAttribute ) {\n\n\t\t\tif ( ! attrMap.has( attr ) ) {\n\n\t\t\t\tattrMap.set( attr, deinterleaveAttribute( attr ) );\n\n\t\t\t}\n\n\t\t\tmorphTargets[ key ] = attrMap.get( attr );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @return {number}\n */\nfunction estimateBytesUsed( geometry ) {\n\n\t// Return the estimated memory used by this geometry in bytes\n\t// Calculate using itemSize, count, and BYTES_PER_ELEMENT to account\n\t// for InterleavedBufferAttributes.\n\tlet mem = 0;\n\tfor ( const name in geometry.attributes ) {\n\n\t\tconst attr = geometry.getAttribute( name );\n\t\tmem += attr.count * attr.itemSize * attr.array.BYTES_PER_ELEMENT;\n\n\t}\n\n\tconst indices = geometry.getIndex();\n\tmem += indices ? indices.count * indices.itemSize * indices.array.BYTES_PER_ELEMENT : 0;\n\treturn mem;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {number} tolerance\n * @return {BufferGeometry}\n */\nfunction mergeVertices( geometry, tolerance = 1e-4 ) {\n\n\ttolerance = Math.max( tolerance, Number.EPSILON );\n\n\t// Generate an index buffer if the geometry doesn't have one, or optimize it\n\t// if it's already available.\n\tconst hashToIndex = {};\n\tconst indices = geometry.getIndex();\n\tconst positions = geometry.getAttribute( 'position' );\n\tconst vertexCount = indices ? indices.count : positions.count;\n\n\t// next value for triangle indices\n\tlet nextIndex = 0;\n\n\t// attributes and new attribute arrays\n\tconst attributeNames = Object.keys( geometry.attributes );\n\tconst tmpAttributes = {};\n\tconst tmpMorphAttributes = {};\n\tconst newIndices = [];\n\tconst getters = [ 'getX', 'getY', 'getZ', 'getW' ];\n\tconst setters = [ 'setX', 'setY', 'setZ', 'setW' ];\n\n\t// Initialize the arrays, allocating space conservatively. Extra\n\t// space will be trimmed in the last step.\n\tfor ( let i = 0, l = attributeNames.length; i < l; i ++ ) {\n\n\t\tconst name = attributeNames[ i ];\n\t\tconst attr = geometry.attributes[ name ];\n\n\t\ttmpAttributes[ name ] = new attr.constructor(\n\t\t\tnew attr.array.constructor( attr.count * attr.itemSize ),\n\t\t\tattr.itemSize,\n\t\t\tattr.normalized\n\t\t);\n\n\t\tconst morphAttributes = geometry.morphAttributes[ name ];\n\t\tif ( morphAttributes ) {\n\n\t\t\tif ( ! tmpMorphAttributes[ name ] ) tmpMorphAttributes[ name ] = [];\n\t\t\tmorphAttributes.forEach( ( morphAttr, i ) => {\n\n\t\t\t\tconst array = new morphAttr.array.constructor( morphAttr.count * morphAttr.itemSize );\n\t\t\t\ttmpMorphAttributes[ name ][ i ] = new morphAttr.constructor( array, morphAttr.itemSize, morphAttr.normalized );\n\n\t\t\t} );\n\n\t\t}\n\n\t}\n\n\t// convert the error tolerance to an amount of decimal places to truncate to\n\tconst halfTolerance = tolerance * 0.5;\n\tconst exponent = Math.log10( 1 / tolerance );\n\tconst hashMultiplier = Math.pow( 10, exponent );\n\tconst hashAdditive = halfTolerance * hashMultiplier;\n\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\tconst index = indices ? indices.getX( i ) : i;\n\n\t\t// Generate a hash for the vertex attributes at the current index 'i'\n\t\tlet hash = '';\n\t\tfor ( let j = 0, l = attributeNames.length; j < l; j ++ ) {\n\n\t\t\tconst name = attributeNames[ j ];\n\t\t\tconst attribute = geometry.getAttribute( name );\n\t\t\tconst itemSize = attribute.itemSize;\n\n\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\t// double tilde truncates the decimal value\n\t\t\t\thash += `${ ~ ~ ( attribute[ getters[ k ] ]( index ) * hashMultiplier + hashAdditive ) },`;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add another reference to the vertex if it's already\n\t\t// used by another index\n\t\tif ( hash in hashToIndex ) {\n\n\t\t\tnewIndices.push( hashToIndex[ hash ] );\n\n\t\t} else {\n\n\t\t\t// copy data to the new index in the temporary attributes\n\t\t\tfor ( let j = 0, l = attributeNames.length; j < l; j ++ ) {\n\n\t\t\t\tconst name = attributeNames[ j ];\n\t\t\t\tconst attribute = geometry.getAttribute( name );\n\t\t\t\tconst morphAttributes = geometry.morphAttributes[ name ];\n\t\t\t\tconst itemSize = attribute.itemSize;\n\t\t\t\tconst newArray = tmpAttributes[ name ];\n\t\t\t\tconst newMorphArrays = tmpMorphAttributes[ name ];\n\n\t\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\t\tconst getterFunc = getters[ k ];\n\t\t\t\t\tconst setterFunc = setters[ k ];\n\t\t\t\t\tnewArray[ setterFunc ]( nextIndex, attribute[ getterFunc ]( index ) );\n\n\t\t\t\t\tif ( morphAttributes ) {\n\n\t\t\t\t\t\tfor ( let m = 0, ml = morphAttributes.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\t\tnewMorphArrays[ m ][ setterFunc ]( nextIndex, morphAttributes[ m ][ getterFunc ]( index ) );\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\thashToIndex[ hash ] = nextIndex;\n\t\t\tnewIndices.push( nextIndex );\n\t\t\tnextIndex ++;\n\n\t\t}\n\n\t}\n\n\t// generate result BufferGeometry\n\tconst result = geometry.clone();\n\tfor ( const name in geometry.attributes ) {\n\n\t\tconst tmpAttribute = tmpAttributes[ name ];\n\n\t\tresult.setAttribute( name, new tmpAttribute.constructor(\n\t\t\ttmpAttribute.array.slice( 0, nextIndex * tmpAttribute.itemSize ),\n\t\t\ttmpAttribute.itemSize,\n\t\t\ttmpAttribute.normalized,\n\t\t) );\n\n\t\tif ( ! ( name in tmpMorphAttributes ) ) continue;\n\n\t\tfor ( let j = 0; j < tmpMorphAttributes[ name ].length; j ++ ) {\n\n\t\t\tconst tmpMorphAttribute = tmpMorphAttributes[ name ][ j ];\n\n\t\t\tresult.morphAttributes[ name ][ j ] = new tmpMorphAttribute.constructor(\n\t\t\t\ttmpMorphAttribute.array.slice( 0, nextIndex * tmpMorphAttribute.itemSize ),\n\t\t\t\ttmpMorphAttribute.itemSize,\n\t\t\t\ttmpMorphAttribute.normalized,\n\t\t\t);\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tresult.setIndex( newIndices );\n\n\treturn result;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {number} drawMode\n * @return {BufferGeometry}\n */\nfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\tif ( drawMode === TrianglesDrawMode ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.' );\n\t\treturn geometry;\n\n\t}\n\n\tif ( drawMode === TriangleFanDrawMode || drawMode === TriangleStripDrawMode ) {\n\n\t\tlet index = geometry.getIndex();\n\n\t\t// generate index if not present\n\n\t\tif ( index === null ) {\n\n\t\t\tconst indices = [];\n\n\t\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\t\t\tindices.push( i );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setIndex( indices );\n\t\t\t\tindex = geometry.getIndex();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst numberOfTriangles = index.count - 2;\n\t\tconst newIndices = [];\n\n\t\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t\t// gl.TRIANGLE_FAN\n\n\t\t\tfor ( let i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// gl.TRIANGLE_STRIP\n\n\t\t\tfor ( let i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t\t}\n\n\t\t// build final geometry\n\n\t\tconst newGeometry = geometry.clone();\n\t\tnewGeometry.setIndex( newIndices );\n\t\tnewGeometry.clearGroups();\n\n\t\treturn newGeometry;\n\n\t} else {\n\n\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:', drawMode );\n\t\treturn geometry;\n\n\t}\n\n}\n\n/**\n * Calculates the morphed attributes of a morphed/skinned BufferGeometry.\n * Helpful for Raytracing or Decals.\n * @param {Mesh | Line | Points} object An instance of Mesh, Line or Points.\n * @return {Object} An Object with original position/normal attributes and morphed ones.\n */\nfunction computeMorphedAttributes( object ) {\n\n\tconst _vA = new Vector3();\n\tconst _vB = new Vector3();\n\tconst _vC = new Vector3();\n\n\tconst _tempA = new Vector3();\n\tconst _tempB = new Vector3();\n\tconst _tempC = new Vector3();\n\n\tconst _morphA = new Vector3();\n\tconst _morphB = new Vector3();\n\tconst _morphC = new Vector3();\n\n\tfunction _calculateMorphedAttributeData(\n\t\tobject,\n\t\tattribute,\n\t\tmorphAttribute,\n\t\tmorphTargetsRelative,\n\t\ta,\n\t\tb,\n\t\tc,\n\t\tmodifiedAttributeArray\n\t) {\n\n\t\t_vA.fromBufferAttribute( attribute, a );\n\t\t_vB.fromBufferAttribute( attribute, b );\n\t\t_vC.fromBufferAttribute( attribute, c );\n\n\t\tconst morphInfluences = object.morphTargetInfluences;\n\n\t\tif ( morphAttribute && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\t\t\t_morphB.set( 0, 0, 0 );\n\t\t\t_morphC.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morph = morphAttribute[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morph, a );\n\t\t\t\t_tempB.fromBufferAttribute( morph, b );\n\t\t\t\t_tempC.fromBufferAttribute( morph, c );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_vA.add( _morphA );\n\t\t\t_vB.add( _morphB );\n\t\t\t_vC.add( _morphC );\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tobject.applyBoneTransform( a, _vA );\n\t\t\tobject.applyBoneTransform( b, _vB );\n\t\t\tobject.applyBoneTransform( c, _vC );\n\n\t\t}\n\n\t\tmodifiedAttributeArray[ a * 3 + 0 ] = _vA.x;\n\t\tmodifiedAttributeArray[ a * 3 + 1 ] = _vA.y;\n\t\tmodifiedAttributeArray[ a * 3 + 2 ] = _vA.z;\n\t\tmodifiedAttributeArray[ b * 3 + 0 ] = _vB.x;\n\t\tmodifiedAttributeArray[ b * 3 + 1 ] = _vB.y;\n\t\tmodifiedAttributeArray[ b * 3 + 2 ] = _vB.z;\n\t\tmodifiedAttributeArray[ c * 3 + 0 ] = _vC.x;\n\t\tmodifiedAttributeArray[ c * 3 + 1 ] = _vC.y;\n\t\tmodifiedAttributeArray[ c * 3 + 2 ] = _vC.z;\n\n\t}\n\n\tconst geometry = object.geometry;\n\tconst material = object.material;\n\n\tlet a, b, c;\n\tconst index = geometry.index;\n\tconst positionAttribute = geometry.attributes.position;\n\tconst morphPosition = geometry.morphAttributes.position;\n\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\tconst normalAttribute = geometry.attributes.normal;\n\tconst morphNormal = geometry.morphAttributes.position;\n\n\tconst groups = geometry.groups;\n\tconst drawRange = geometry.drawRange;\n\tlet i, j, il, jl;\n\tlet group;\n\tlet start, end;\n\n\tconst modifiedPosition = new Float32Array( positionAttribute.count * positionAttribute.itemSize );\n\tconst modifiedNormal = new Float32Array( normalAttribute.count * normalAttribute.itemSize );\n\n\tif ( index !== null ) {\n\n\t\t// indexed buffer geometry\n\n\t\tif ( Array.isArray( material ) ) {\n\n\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\tgroup = groups[ i ];\n\n\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\ta = index.getX( j );\n\t\t\t\t\tb = index.getX( j + 1 );\n\t\t\t\t\tc = index.getX( j + 2 );\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tpositionAttribute,\n\t\t\t\t\t\tmorphPosition,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedPosition\n\t\t\t\t\t);\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tnormalAttribute,\n\t\t\t\t\t\tmorphNormal,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedNormal\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\tstart = Math.max( 0, drawRange.start );\n\t\t\tend = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\ta = index.getX( i );\n\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\tc = index.getX( i + 2 );\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tpositionAttribute,\n\t\t\t\t\tmorphPosition,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedPosition\n\t\t\t\t);\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tnormalAttribute,\n\t\t\t\t\tmorphNormal,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedNormal\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// non-indexed buffer geometry\n\n\t\tif ( Array.isArray( material ) ) {\n\n\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\tgroup = groups[ i ];\n\n\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\ta = j;\n\t\t\t\t\tb = j + 1;\n\t\t\t\t\tc = j + 2;\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tpositionAttribute,\n\t\t\t\t\t\tmorphPosition,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedPosition\n\t\t\t\t\t);\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tnormalAttribute,\n\t\t\t\t\t\tmorphNormal,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedNormal\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\tstart = Math.max( 0, drawRange.start );\n\t\t\tend = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\ta = i;\n\t\t\t\tb = i + 1;\n\t\t\t\tc = i + 2;\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tpositionAttribute,\n\t\t\t\t\tmorphPosition,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedPosition\n\t\t\t\t);\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tnormalAttribute,\n\t\t\t\t\tmorphNormal,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedNormal\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tconst morphedPositionAttribute = new Float32BufferAttribute( modifiedPosition, 3 );\n\tconst morphedNormalAttribute = new Float32BufferAttribute( modifiedNormal, 3 );\n\n\treturn {\n\n\t\tpositionAttribute: positionAttribute,\n\t\tnormalAttribute: normalAttribute,\n\t\tmorphedPositionAttribute: morphedPositionAttribute,\n\t\tmorphedNormalAttribute: morphedNormalAttribute\n\n\t};\n\n}\n\nfunction mergeGroups( geometry ) {\n\n\tif ( geometry.groups.length === 0 ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometryUtils.mergeGroups(): No groups are defined. Nothing to merge.' );\n\t\treturn geometry;\n\n\t}\n\n\tlet groups = geometry.groups;\n\n\t// sort groups by material index\n\n\tgroups = groups.sort( ( a, b ) => {\n\n\t\tif ( a.materialIndex !== b.materialIndex ) return a.materialIndex - b.materialIndex;\n\n\t\treturn a.start - b.start;\n\n\t} );\n\n\t// create index for non-indexed geometries\n\n\tif ( geometry.getIndex() === null ) {\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\t\tconst indices = [];\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i += 3 ) {\n\n\t\t\tindices.push( i, i + 1, i + 2 );\n\n\t\t}\n\n\t\tgeometry.setIndex( indices );\n\n\t}\n\n\t// sort index\n\n\tconst index = geometry.getIndex();\n\n\tconst newIndices = [];\n\n\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tconst groupStart = group.start;\n\t\tconst groupLength = groupStart + group.count;\n\n\t\tfor ( let j = groupStart; j < groupLength; j ++ ) {\n\n\t\t\tnewIndices.push( index.getX( j ) );\n\n\t\t}\n\n\t}\n\n\tgeometry.dispose(); // Required to force buffer recreation\n\tgeometry.setIndex( newIndices );\n\n\t// update groups indices\n\n\tlet start = 0;\n\n\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tgroup.start = start;\n\t\tstart += group.count;\n\n\t}\n\n\t// merge groups\n\n\tlet currentGroup = groups[ 0 ];\n\n\tgeometry.groups = [ currentGroup ];\n\n\tfor ( let i = 1; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tif ( currentGroup.materialIndex === group.materialIndex ) {\n\n\t\t\tcurrentGroup.count += group.count;\n\n\t\t} else {\n\n\t\t\tcurrentGroup = group;\n\t\t\tgeometry.groups.push( currentGroup );\n\n\t\t}\n\n\t}\n\n\treturn geometry;\n\n}\n\n\n/**\n * Modifies the supplied geometry if it is non-indexed, otherwise creates a new,\n * non-indexed geometry. Returns the geometry with smooth normals everywhere except\n * faces that meet at an angle greater than the crease angle.\n *\n * @param {BufferGeometry} geometry\n * @param {number} [creaseAngle]\n * @return {BufferGeometry}\n */\nfunction toCreasedNormals( geometry, creaseAngle = Math.PI / 3 /* 60 degrees */ ) {\n\n\tconst creaseDot = Math.cos( creaseAngle );\n\tconst hashMultiplier = ( 1 + 1e-10 ) * 1e2;\n\n\t// reusable vectors\n\tconst verts = [ new Vector3(), new Vector3(), new Vector3() ];\n\tconst tempVec1 = new Vector3();\n\tconst tempVec2 = new Vector3();\n\tconst tempNorm = new Vector3();\n\tconst tempNorm2 = new Vector3();\n\n\t// hashes a vector\n\tfunction hashVertex( v ) {\n\n\t\tconst x = ~ ~ ( v.x * hashMultiplier );\n\t\tconst y = ~ ~ ( v.y * hashMultiplier );\n\t\tconst z = ~ ~ ( v.z * hashMultiplier );\n\t\treturn `${x},${y},${z}`;\n\n\t}\n\n\t// BufferGeometry.toNonIndexed() warns if the geometry is non-indexed\n\t// and returns the original geometry\n\tconst resultGeometry = geometry.index ? geometry.toNonIndexed() : geometry;\n\tconst posAttr = resultGeometry.attributes.position;\n\tconst vertexMap = {};\n\n\t// find all the normals shared by commonly located vertices\n\tfor ( let i = 0, l = posAttr.count / 3; i < l; i ++ ) {\n\n\t\tconst i3 = 3 * i;\n\t\tconst a = verts[ 0 ].fromBufferAttribute( posAttr, i3 + 0 );\n\t\tconst b = verts[ 1 ].fromBufferAttribute( posAttr, i3 + 1 );\n\t\tconst c = verts[ 2 ].fromBufferAttribute( posAttr, i3 + 2 );\n\n\t\ttempVec1.subVectors( c, b );\n\t\ttempVec2.subVectors( a, b );\n\n\t\t// add the normal to the map for all vertices\n\t\tconst normal = new Vector3().crossVectors( tempVec1, tempVec2 ).normalize();\n\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\tconst vert = verts[ n ];\n\t\t\tconst hash = hashVertex( vert );\n\t\t\tif ( ! ( hash in vertexMap ) ) {\n\n\t\t\t\tvertexMap[ hash ] = [];\n\n\t\t\t}\n\n\t\t\tvertexMap[ hash ].push( normal );\n\n\t\t}\n\n\t}\n\n\t// average normals from all vertices that share a common location if they are within the\n\t// provided crease threshold\n\tconst normalArray = new Float32Array( posAttr.count * 3 );\n\tconst normAttr = new BufferAttribute( normalArray, 3, false );\n\tfor ( let i = 0, l = posAttr.count / 3; i < l; i ++ ) {\n\n\t\t// get the face normal for this vertex\n\t\tconst i3 = 3 * i;\n\t\tconst a = verts[ 0 ].fromBufferAttribute( posAttr, i3 + 0 );\n\t\tconst b = verts[ 1 ].fromBufferAttribute( posAttr, i3 + 1 );\n\t\tconst c = verts[ 2 ].fromBufferAttribute( posAttr, i3 + 2 );\n\n\t\ttempVec1.subVectors( c, b );\n\t\ttempVec2.subVectors( a, b );\n\n\t\ttempNorm.crossVectors( tempVec1, tempVec2 ).normalize();\n\n\t\t// average all normals that meet the threshold and set the normal value\n\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\tconst vert = verts[ n ];\n\t\t\tconst hash = hashVertex( vert );\n\t\t\tconst otherNormals = vertexMap[ hash ];\n\t\t\ttempNorm2.set( 0, 0, 0 );\n\n\t\t\tfor ( let k = 0, lk = otherNormals.length; k < lk; k ++ ) {\n\n\t\t\t\tconst otherNorm = otherNormals[ k ];\n\t\t\t\tif ( tempNorm.dot( otherNorm ) > creaseDot ) {\n\n\t\t\t\t\ttempNorm2.add( otherNorm );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttempNorm2.normalize();\n\t\t\tnormAttr.setXYZ( i3 + n, tempNorm2.x, tempNorm2.y, tempNorm2.z );\n\n\t\t}\n\n\t}\n\n\tresultGeometry.setAttribute( 'normal', normAttr );\n\treturn resultGeometry;\n\n}\n\nexport {\n\tcomputeMikkTSpaceTangents,\n\tmergeGeometries,\n\tmergeAttributes,\n\tinterleaveAttributes,\n\testimateBytesUsed,\n\tmergeVertices,\n\ttoTrianglesDrawMode,\n\tcomputeMorphedAttributes,\n\tmergeGroups,\n\ttoCreasedNormals\n};\n", "import {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tColorManagement,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tImageBitmapLoader,\n\tInstancedMesh,\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\tLinearSRGBColorSpace,\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\tTexture,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tSRGBColorSpace,\n\tInstancedBufferAttribute\n} from 'three';\nimport { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js';\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 GLTFMaterialsDispersionExtension( 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 GLTFTextureAVIFExtension( 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 GLTFMaterialsIridescenceExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsAnisotropyExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsBumpExtension( 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\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMeshGpuInstancing( 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\t// If a base path is set, resources will be relative paths from that plus the relative path of the gltf file\n\t\t\t// Example path = 'https://my-cnd-server.com/', url = 'assets/models/model.gltf'\n\t\t\t// resourcePath = 'https://my-cnd-server.com/assets/models/'\n\t\t\t// referenced resource 'model.bin' will be loaded from 'https://my-cnd-server.com/assets/models/model.bin'\n\t\t\t// referenced resource '../textures/texture.png' will be loaded from 'https://my-cnd-server.com/assets/textures/texture.png'\n\t\t\tconst relativeUrl = LoaderUtils.extractUrlBase( url );\n\t\t\tresourcePath = LoaderUtils.resolveURL( relativeUrl, 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 json;\n\t\tconst extensions = {};\n\t\tconst plugins = {};\n\t\tconst textDecoder = new TextDecoder();\n\n\t\tif ( typeof data === 'string' ) {\n\n\t\t\tjson = JSON.parse( data );\n\n\t\t} else if ( data instanceof ArrayBuffer ) {\n\n\t\t\tconst magic = textDecoder.decode( 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\tjson = JSON.parse( extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content );\n\n\t\t\t} else {\n\n\t\t\t\tjson = JSON.parse( textDecoder.decode( data ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tjson = data;\n\n\t\t}\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\n\t\t\tif ( ! plugin.name ) console.error( 'THREE.GLTFLoader: Invalid plugin found: missing name' );\n\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_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_DISPERSION: 'KHR_materials_dispersion',\n\tKHR_MATERIALS_IOR: 'KHR_materials_ior',\n\tKHR_MATERIALS_SHEEN: 'KHR_materials_sheen',\n\tKHR_MATERIALS_SPECULAR: 'KHR_materials_specular',\n\tKHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n\tKHR_MATERIALS_IRIDESCENCE: 'KHR_materials_iridescence',\n\tKHR_MATERIALS_ANISOTROPY: 'KHR_materials_anisotropy',\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_MATERIALS_BUMP: 'EXT_materials_bump',\n\tEXT_TEXTURE_WEBP: 'EXT_texture_webp',\n\tEXT_TEXTURE_AVIF: 'EXT_texture_avif',\n\tEXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression',\n\tEXT_MESH_GPU_INSTANCING: 'EXT_mesh_gpu_instancing'\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.setRGB( lightDef.color[ 0 ], lightDef.color[ 1 ], lightDef.color[ 2 ], LinearSRGBColorSpace );\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\tassignExtrasToUserData( lightNode, lightDef );\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\tgetDependency( type, index ) {\n\n\t\tif ( type !== 'light' ) return;\n\n\t\treturn this._loadLight( index );\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.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace );\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, SRGBColorSpace ) );\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 * Materials dispersion Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_dispersion\n */\nclass GLTFMaterialsDispersionExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_DISPERSION;\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.dispersion = extension.dispersion !== undefined ? extension.dispersion : 0;\n\n\t\treturn Promise.resolve();\n\n\t}\n\n}\n\n/**\n * Iridescence Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence\n */\nclass GLTFMaterialsIridescenceExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE;\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.iridescenceFactor !== undefined ) {\n\n\t\t\tmaterialParams.iridescence = extension.iridescenceFactor;\n\n\t\t}\n\n\t\tif ( extension.iridescenceTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'iridescenceMap', extension.iridescenceTexture ) );\n\n\t\t}\n\n\t\tif ( extension.iridescenceIor !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceIOR = extension.iridescenceIor;\n\n\t\t}\n\n\t\tif ( materialParams.iridescenceThicknessRange === undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange = [ 100, 400 ];\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessMinimum !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange[ 0 ] = extension.iridescenceThicknessMinimum;\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessMaximum !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange[ 1 ] = extension.iridescenceThicknessMaximum;\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'iridescenceThicknessMap', extension.iridescenceThicknessTexture ) );\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\tconst colorFactor = extension.sheenColorFactor;\n\t\t\tmaterialParams.sheenColor.setRGB( colorFactor[ 0 ], colorFactor[ 1 ], colorFactor[ 2 ], LinearSRGBColorSpace );\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, SRGBColorSpace ) );\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 || Infinity;\n\n\t\tconst colorArray = extension.attenuationColor || [ 1, 1, 1 ];\n\t\tmaterialParams.attenuationColor = new Color().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace );\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().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace );\n\n\t\tif ( extension.specularColorTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture, SRGBColorSpace ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n\n/**\n * Materials bump Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_materials_bump\n */\nclass GLTFMaterialsBumpExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_MATERIALS_BUMP;\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.bumpScale = extension.bumpFactor !== undefined ? extension.bumpFactor : 1.0;\n\n\t\tif ( extension.bumpTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'bumpMap', extension.bumpTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials anisotropy Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_anisotropy\n */\nclass GLTFMaterialsAnisotropyExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_ANISOTROPY;\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.anisotropyStrength !== undefined ) {\n\n\t\t\tmaterialParams.anisotropy = extension.anisotropyStrength;\n\n\t\t}\n\n\t\tif ( extension.anisotropyRotation !== undefined ) {\n\n\t\t\tmaterialParams.anisotropyRotation = extension.anisotropyRotation;\n\n\t\t}\n\n\t\tif ( extension.anisotropyTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'anisotropyMap', extension.anisotropyTexture ) );\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 * AVIF Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_avif\n */\nclass GLTFTextureAVIFExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_AVIF;\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: AVIF 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.\n\t\t\t\timage.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=';\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 buffer.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 source = new Uint8Array( res, byteOffset, byteLength );\n\n\t\t\t\tif ( decoder.decodeGltfBufferAsync ) {\n\n\t\t\t\t\treturn decoder.decodeGltfBufferAsync( count, stride, source, extensionDef.mode, extensionDef.filter ).then( function ( res ) {\n\n\t\t\t\t\t\treturn res.buffer;\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Support for MeshoptDecoder 0.18 or earlier, without decodeGltfBufferAsync\n\t\t\t\t\treturn decoder.ready.then( function () {\n\n\t\t\t\t\t\tconst result = new ArrayBuffer( count * stride );\n\t\t\t\t\t\tdecoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter );\n\t\t\t\t\t\treturn result;\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\treturn null;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * GPU Instancing Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing\n *\n */\nclass GLTFMeshGpuInstancing {\n\n\tconstructor( parser ) {\n\n\t\tthis.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING;\n\t\tthis.parser = parser;\n\n\t}\n\n\tcreateNodeMesh( nodeIndex ) {\n\n\t\tconst json = this.parser.json;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tif ( ! nodeDef.extensions || ! nodeDef.extensions[ this.name ] ||\n\t\t\tnodeDef.mesh === undefined ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst meshDef = json.meshes[ nodeDef.mesh ];\n\n\t\t// No Points or Lines + Instancing support yet\n\n\t\tfor ( const primitive of meshDef.primitives ) {\n\n\t\t\tif ( primitive.mode !== WEBGL_CONSTANTS.TRIANGLES &&\n\t\t\t\t primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP &&\n\t\t\t\t primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN &&\n\t\t\t\t primitive.mode !== undefined ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extensionDef = nodeDef.extensions[ this.name ];\n\t\tconst attributesDef = extensionDef.attributes;\n\n\t\t// @TODO: Can we support InstancedMesh + SkinnedMesh?\n\n\t\tconst pending = [];\n\t\tconst attributes = {};\n\n\t\tfor ( const key in attributesDef ) {\n\n\t\t\tpending.push( this.parser.getDependency( 'accessor', attributesDef[ key ] ).then( accessor => {\n\n\t\t\t\tattributes[ key ] = accessor;\n\t\t\t\treturn attributes[ key ];\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tif ( pending.length < 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tpending.push( this.parser.createNodeMesh( nodeIndex ) );\n\n\t\treturn Promise.all( pending ).then( results => {\n\n\t\t\tconst nodeObject = results.pop();\n\t\t\tconst meshes = nodeObject.isGroup ? nodeObject.children : [ nodeObject ];\n\t\t\tconst count = results[ 0 ].count; // All attribute counts should be same\n\t\t\tconst instancedMeshes = [];\n\n\t\t\tfor ( const mesh of meshes ) {\n\n\t\t\t\t// Temporal variables\n\t\t\t\tconst m = new Matrix4();\n\t\t\t\tconst p = new Vector3();\n\t\t\t\tconst q = new Quaternion();\n\t\t\t\tconst s = new Vector3( 1, 1, 1 );\n\n\t\t\t\tconst instancedMesh = new InstancedMesh( mesh.geometry, mesh.material, count );\n\n\t\t\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\t\t\tif ( attributes.TRANSLATION ) {\n\n\t\t\t\t\t\tp.fromBufferAttribute( attributes.TRANSLATION, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attributes.ROTATION ) {\n\n\t\t\t\t\t\tq.fromBufferAttribute( attributes.ROTATION, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attributes.SCALE ) {\n\n\t\t\t\t\t\ts.fromBufferAttribute( attributes.SCALE, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tinstancedMesh.setMatrixAt( i, m.compose( p, q, s ) );\n\n\t\t\t\t}\n\n\t\t\t\t// Add instance attributes to the geometry, excluding TRS.\n\t\t\t\tfor ( const attributeName in attributes ) {\n\n\t\t\t\t\tif ( attributeName === '_COLOR_0' ) {\n\n\t\t\t\t\t\tconst attr = attributes[ attributeName ];\n\t\t\t\t\t\tinstancedMesh.instanceColor = new InstancedBufferAttribute( attr.array, attr.itemSize, attr.normalized );\n\n\t\t\t\t\t} else if ( attributeName !== 'TRANSLATION' &&\n\t\t\t\t\t\t attributeName !== 'ROTATION' &&\n\t\t\t\t\t\t attributeName !== 'SCALE' ) {\n\n\t\t\t\t\t\tmesh.geometry.setAttribute( attributeName, attributes[ attributeName ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// Just in case\n\t\t\t\tObject3D.prototype.copy.call( instancedMesh, mesh );\n\n\t\t\t\tthis.parser.assignFinalMaterial( instancedMesh );\n\n\t\t\t\tinstancedMeshes.push( instancedMesh );\n\n\t\t\t}\n\n\t\t\tif ( nodeObject.isGroup ) {\n\n\t\t\t\tnodeObject.clear();\n\n\t\t\t\tnodeObject.add( ... instancedMeshes );\n\n\t\t\t\treturn nodeObject;\n\n\t\t\t}\n\n\t\t\treturn instancedMeshes[ 0 ];\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\t\tconst textDecoder = new TextDecoder();\n\n\t\tthis.header = {\n\t\t\tmagic: textDecoder.decode( 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 = textDecoder.decode( 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.name;\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, reject ) {\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, LinearSRGBColorSpace, reject );\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 || transform.texCoord === texture.channel )\n\t\t\t&& transform.offset === undefined\n\t\t\t&& transform.rotation === undefined\n\t\t\t&& 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.texCoord !== undefined ) {\n\n\t\t\ttexture.channel = transform.texCoord;\n\n\t\t}\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 * 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\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer;\n\t\tconst values = this.sampleValues;\n\t\tconst stride = this.valueSize;\n\n\t\tconst stride2 = stride * 2;\n\t\tconst stride3 = stride * 3;\n\n\t\tconst td = t1 - t0;\n\n\t\tconst p = ( t - t0 ) / td;\n\t\tconst pp = p * p;\n\t\tconst ppp = pp * p;\n\n\t\tconst offset1 = i1 * stride3;\n\t\tconst offset0 = offset1 - stride3;\n\n\t\tconst s2 = - 2 * ppp + 3 * pp;\n\t\tconst s3 = ppp - pp;\n\t\tconst s0 = 1 - s2;\n\t\tconst s1 = s3 - pp + p;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( let i = 0; i !== stride; i ++ ) {\n\n\t\t\tconst p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tconst m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tconst p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tconst m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\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: 'uv1',\n\tTEXCOORD_2: 'uv2',\n\tTEXCOORD_3: 'uv3',\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\tlet geometryKey;\n\n\tconst dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\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\tif ( primitiveDef.targets !== undefined ) {\n\n\t\tfor ( let i = 0, il = primitiveDef.targets.length; i < il; i ++ ) {\n\n\t\t\tgeometryKey += ':' + createAttributesKey( primitiveDef.targets[ i ] );\n\n\t\t}\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\nconst _identityMatrix = new Matrix4();\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// Node cache\n\t\tthis.nodeCache = {};\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\tlet isSafari = false;\n\t\tlet safariVersion = - 1;\n\t\tlet isFirefox = false;\n\t\tlet firefoxVersion = - 1;\n\n\t\tif ( typeof navigator !== 'undefined' ) {\n\n\t\t\tconst userAgent = navigator.userAgent;\n\n\t\t\tisSafari = /^((?!chrome|android).)*safari/i.test( userAgent ) === true;\n\t\t\tconst safariMatch = userAgent.match( /Version\\/(\\d+)/ );\n\t\t\tsafariVersion = isSafari && safariMatch ? parseInt( safariMatch[ 1 ], 10 ) : - 1;\n\n\t\t\tisFirefox = userAgent.indexOf( 'Firefox' ) > - 1;\n\t\t\tfirefoxVersion = isFirefox ? userAgent.match( /Firefox\\/([0-9]+)\\./ )[ 1 ] : - 1;\n\n\t\t}\n\n\t\tif ( typeof createImageBitmap === 'undefined' || ( isSafari && safariVersion < 17 ) || ( 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\t\tthis.nodeCache = {};\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\treturn Promise.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\tfor ( const scene of result.scenes ) {\n\n\t\t\t\t\tscene.updateMatrixWorld();\n\n\t\t\t\t}\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._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadNode && ext.loadNode( index );\n\n\t\t\t\t\t} );\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\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext != this && ext.getDependency && ext.getDependency( type, index );\n\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( ! dependency ) {\n\n\t\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\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\tconst itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tconst TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\t\t\tconst normalized = accessorDef.normalized === true;\n\n\t\t\tconst array = new TypedArray( accessorDef.count * itemSize );\n\t\t\treturn Promise.resolve( new BufferAttribute( array, itemSize, normalized ) );\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\ttexture.name = textureDef.name || sourceDef.name || '';\n\n\t\t\tif ( texture.name === '' && typeof sourceDef.uri === 'string' && sourceDef.uri.startsWith( 'data:image/' ) === false ) {\n\n\t\t\t\ttexture.name = sourceDef.uri;\n\n\t\t\t}\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\tassignExtrasToUserData( texture, sourceDef );\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, colorSpace ) {\n\n\t\tconst parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\tif ( ! texture ) return null;\n\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord > 0 ) {\n\n\t\t\t\ttexture = texture.clone();\n\t\t\t\ttexture.channel = mapDef.texCoord;\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 ( colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = colorSpace;\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\t\t\t\tlineMaterial.map = material.map;\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 ( 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\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_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.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace );\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, SRGBColorSpace ) );\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\tconst emissiveFactor = materialDef.emissiveFactor;\n\t\t\tmaterialParams.emissive = new Color().setRGB( emissiveFactor[ 0 ], emissiveFactor[ 1 ], emissiveFactor[ 2 ], LinearSRGBColorSpace );\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, SRGBColorSpace ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tconst material = new materialType( materialParams );\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\tif ( sanitizedName in this.nodeNamesUsed ) {\n\n\t\t\treturn sanitizedName + '_' + ( ++ this.nodeNamesUsed[ sanitizedName ] );\n\n\t\t} else {\n\n\t\t\tthis.nodeNamesUsed[ sanitizedName ] = 0;\n\n\t\t\treturn sanitizedName;\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#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 ) {\n\n\t\t\t\t\t\t// normalize skin weights to fix malformed assets (see #15319)\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\tif ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, meshes[ 0 ], meshDef );\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\tif ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, group, meshDef );\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 pending = [];\n\n\t\tfor ( let i = 0, il = skinDef.joints.length; i < il; i ++ ) {\n\n\t\t\tpending.push( this._loadNodeShallow( skinDef.joints[ i ] ) );\n\n\t\t}\n\n\t\tif ( skinDef.inverseBindMatrices !== undefined ) {\n\n\t\t\tpending.push( this.getDependency( 'accessor', skinDef.inverseBindMatrices ) );\n\n\t\t} else {\n\n\t\t\tpending.push( null );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tconst inverseBindMatrices = results.pop();\n\t\t\tconst jointNodes = results;\n\n\t\t\t// Note that bones (joint nodes) may or may not be in the\n\t\t\t// scene graph at this time.\n\n\t\t\tconst bones = [];\n\t\t\tconst boneInverses = [];\n\n\t\t\tfor ( let i = 0, il = jointNodes.length; i < il; i ++ ) {\n\n\t\t\t\tconst jointNode = jointNodes[ i ];\n\n\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\tconst mat = new Matrix4();\n\n\t\t\t\t\tif ( inverseBindMatrices !== null ) {\n\n\t\t\t\t\t\tmat.fromArray( inverseBindMatrices.array, i * 16 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinDef.joints[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Skeleton( bones, boneInverses );\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\t\tconst parser = this;\n\n\t\tconst animationDef = json.animations[ animationIndex ];\n\t\tconst animationName = animationDef.name ? animationDef.name : 'animation_' + 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;\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\tif ( target.node === undefined ) continue;\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\tif ( node.updateMatrix ) {\n\n\t\t\t\t\tnode.updateMatrix();\n\n\t\t\t\t}\n\n\t\t\t\tconst createdTracks = parser._createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target );\n\n\t\t\t\tif ( createdTracks ) {\n\n\t\t\t\t\tfor ( let k = 0; k < createdTracks.length; k ++ ) {\n\n\t\t\t\t\t\ttracks.push( createdTracks[ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new AnimationClip( animationName, 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 parser = this;\n\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tconst nodePending = parser._loadNodeShallow( nodeIndex );\n\n\t\tconst childPending = [];\n\t\tconst childrenDef = nodeDef.children || [];\n\n\t\tfor ( let i = 0, il = childrenDef.length; i < il; i ++ ) {\n\n\t\t\tchildPending.push( parser.getDependency( 'node', childrenDef[ i ] ) );\n\n\t\t}\n\n\t\tconst skeletonPending = nodeDef.skin === undefined\n\t\t\t? Promise.resolve( null )\n\t\t\t: parser.getDependency( 'skin', nodeDef.skin );\n\n\t\treturn Promise.all( [\n\t\t\tnodePending,\n\t\t\tPromise.all( childPending ),\n\t\t\tskeletonPending\n\t\t] ).then( function ( results ) {\n\n\t\t\tconst node = results[ 0 ];\n\t\t\tconst children = results[ 1 ];\n\t\t\tconst skeleton = results[ 2 ];\n\n\t\t\tif ( skeleton !== null ) {\n\n\t\t\t\t// This full traverse should be fine because\n\t\t\t\t// child glTF nodes have not been added to this node yet.\n\t\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\t\tif ( ! mesh.isSkinnedMesh ) return;\n\n\t\t\t\t\tmesh.bind( skeleton, _identityMatrix );\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\tnode.add( children[ i ] );\n\n\t\t\t}\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t}\n\n\t// ._loadNodeShallow() parses a single node.\n\t// skin and child nodes are created and added in .loadNode() (no '_' prefix).\n\t_loadNodeShallow( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst parser = this;\n\n\t\t// This method is called from .loadNode() and .loadSkin().\n\t\t// Cache a node to avoid duplication.\n\n\t\tif ( this.nodeCache[ nodeIndex ] !== undefined ) {\n\n\t\t\treturn this.nodeCache[ nodeIndex ];\n\n\t\t}\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\tconst pending = [];\n\n\t\tconst meshPromise = parser._invokeOne( function ( ext ) {\n\n\t\t\treturn ext.createNodeMesh && ext.createNodeMesh( nodeIndex );\n\n\t\t} );\n\n\t\tif ( meshPromise ) {\n\n\t\t\tpending.push( meshPromise );\n\n\t\t}\n\n\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {\n\n\t\t\t\treturn parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tparser._invokeAll( function ( ext ) {\n\n\t\t\treturn ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex );\n\n\t\t} ).forEach( function ( promise ) {\n\n\t\t\tpending.push( promise );\n\n\t\t} );\n\n\t\tthis.nodeCache[ nodeIndex ] = Promise.all( pending ).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\treturn this.nodeCache[ nodeIndex ];\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 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( parser.getDependency( 'node', nodeIds[ i ] ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function ( nodes ) {\n\n\t\t\tfor ( let i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tscene.add( nodes[ i ] );\n\n\t\t\t}\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\t_createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target ) {\n\n\t\tconst tracks = [];\n\n\t\tconst targetName = node.name ? node.name : node.uuid;\n\t\tconst targetNames = [];\n\n\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\tif ( object.morphTargetInfluences ) {\n\n\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\ttargetNames.push( targetName );\n\n\t\t}\n\n\t\tlet TypedKeyframeTrack;\n\n\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\tbreak;\n\n\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\tbreak;\n\n\t\t\tcase PATH_PROPERTIES.position:\n\t\t\tcase PATH_PROPERTIES.scale:\n\n\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tswitch ( outputAccessor.itemSize ) {\n\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\tcase 3:\n\t\t\t\t\tdefault:\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\tbreak;\n\n\t\t}\n\n\t\tconst interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\n\t\tconst outputArray = this._getArrayFromAccessor( outputAccessor );\n\n\t\tfor ( let j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\tconst track = new TypedKeyframeTrack(\n\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\tinputAccessor.array,\n\t\t\t\toutputArray,\n\t\t\t\tinterpolation\n\t\t\t);\n\n\t\t\t// Override interpolation with custom factory method.\n\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\tthis._createCubicSplineTrackInterpolant( track );\n\n\t\t\t}\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\treturn tracks;\n\n\t}\n\n\t_getArrayFromAccessor( accessor ) {\n\n\t\tlet outputArray = accessor.array;\n\n\t\tif ( accessor.normalized ) {\n\n\t\t\tconst scale = getNormalizedComponentScale( outputArray.constructor );\n\t\t\tconst scaled = new Float32Array( outputArray.length );\n\n\t\t\tfor ( let j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t}\n\n\t\t\toutputArray = scaled;\n\n\t\t}\n\n\t\treturn outputArray;\n\n\t}\n\n\t_createCubicSplineTrackInterpolant( track ) {\n\n\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\tconst interpolantType = ( this instanceof QuaternionKeyframeTrack ) ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant;\n\n\t\t\treturn new interpolantType( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t};\n\n\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\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\tif ( ColorManagement.workingColorSpace !== LinearSRGBColorSpace && 'COLOR_0' in attributes ) {\n\n\t\tconsole.warn( `THREE.GLTFLoader: Converting vertex colors from \"srgb-linear\" to \"${ColorManagement.workingColorSpace}\" not supported.` );\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\nexport { GLTFLoader };\n"], + "mappings": "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", + "names": ["self", "res", "sourceURI", "node", "accessor"] } diff --git a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_Addons__js.js b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_Addons__js.js deleted file mode 100644 index 8ee6f60..0000000 --- a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_Addons__js.js +++ /dev/null @@ -1,117702 +0,0 @@ -import { - BufferGeometryUtils_exports, - GLTFLoader, - deepCloneAttribute, - mergeGeometries, - mergeGroups, - mergeVertices -} from "./chunk-LBH6F3OL.js"; -import { - ACESFilmicToneMapping, - AddEquation, - AddOperation, - AdditiveBlending, - AgXToneMapping, - AmbientLight, - AnimationClip, - AnimationMixer, - BackSide, - Bone, - BooleanKeyframeTrack, - Box2, - Box3, - Box3Helper, - BoxGeometry, - BufferAttribute, - BufferGeometry, - BufferGeometryLoader, - Camera, - CanvasTexture, - CapsuleGeometry, - CineonToneMapping, - ClampToEdgeWrapping, - Clock, - Color, - ColorKeyframeTrack, - ColorManagement, - CompressedArrayTexture, - CompressedCubeTexture, - CompressedTexture, - CompressedTextureLoader, - ConeGeometry, - CubeTexture, - Curve, - CustomBlending, - CylinderGeometry, - Data3DTexture, - DataTexture, - DataTextureLoader, - DataUtils, - DefaultLoadingManager, - DepthStencilFormat, - DepthTexture, - DirectionalLight, - DisplayP3ColorSpace, - DoubleSide, - DstAlphaFactor, - DstColorFactor, - DynamicDrawUsage, - EllipseCurve, - EqualStencilFunc, - EquirectangularReflectionMapping, - EquirectangularRefractionMapping, - Euler, - EventDispatcher, - ExtrudeGeometry, - FileLoader, - Float32BufferAttribute, - FloatType, - FramebufferTexture, - FrontSide, - Frustum, - GridHelper, - Group, - HalfFloatType, - IncrementStencilOp, - InstancedBufferGeometry, - InstancedInterleavedBuffer, - InstancedMesh, - Int32BufferAttribute, - InterleavedBuffer, - InterleavedBufferAttribute, - Interpolant, - InterpolateDiscrete, - InterpolateLinear, - Layers, - LightProbe, - Line, - Line3, - LineBasicMaterial, - LineSegments, - LinearDisplayP3ColorSpace, - LinearFilter, - LinearMipMapLinearFilter, - LinearMipmapLinearFilter, - LinearMipmapNearestFilter, - LinearSRGBColorSpace, - LinearToneMapping, - Loader, - LoaderUtils, - LoadingManager, - MOUSE, - Material, - MathUtils, - Matrix3, - Matrix4, - Mesh, - MeshBasicMaterial, - MeshDepthMaterial, - MeshLambertMaterial, - MeshNormalMaterial, - MeshPhongMaterial, - MeshPhysicalMaterial, - MeshStandardMaterial, - MirroredRepeatWrapping, - MultiplyOperation, - NearestFilter, - NearestMipmapLinearFilter, - NearestMipmapNearestFilter, - NeutralToneMapping, - NoBlending, - NoColorSpace, - NormalBlending, - NumberKeyframeTrack, - Object3D, - OctahedronGeometry, - OneMinusSrcAlphaFactor, - OrthographicCamera, - Path, - PerspectiveCamera, - Plane, - PlaneGeometry, - PointLight, - Points, - PointsMaterial, - PropertyBinding, - Quaternion, - QuaternionKeyframeTrack, - REVISION, - RGBADepthPacking, - RGBAFormat, - RGBA_ASTC_4x4_Format, - RGBA_ASTC_6x6_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, - RGB_BPTC_SIGNED_Format, - RGB_BPTC_UNSIGNED_Format, - 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, - SRGBColorSpace, - SRGBTransfer, - Scene, - ShaderChunk, - ShaderLib, - ShaderMaterial, - Shape, - ShapePath as ShapePath2, - ShapeUtils, - Skeleton, - SkeletonHelper, - SkinnedMesh, - Source, - Sphere, - SphereGeometry, - Spherical, - SphericalHarmonics3, - SpotLight, - Sprite, - SpriteMaterial, - SrcAlphaFactor, - StereoCamera, - TOUCH, - TangentSpaceNormalMap, - Texture, - TextureLoader, - TorusGeometry, - Triangle, - UVMapping, - Uint16BufferAttribute, - Uniform, - UniformsLib, - UniformsUtils, - UnsignedByteType, - UnsignedInt248Type, - UnsignedShortType, - Vector2, - Vector3, - Vector4, - VectorKeyframeTrack, - WebGLCubeRenderTarget, - WebGLRenderTarget, - WebGLRenderer, - WireframeGeometry, - ZeroFactor, - __export -} from "./chunk-33KXLYU5.js"; - -// node_modules/three/examples/jsm/animation/AnimationClipCreator.js -var AnimationClipCreator = class { - static CreateRotationAnimation(period, axis = "x") { - const times = [0, period], values2 = [0, 360]; - const trackName = ".rotation[" + axis + "]"; - const track = new NumberKeyframeTrack(trackName, times, values2); - return new AnimationClip(null, period, [track]); - } - static CreateScaleAxisAnimation(period, axis = "x") { - const times = [0, period], values2 = [0, 1]; - const trackName = ".scale[" + axis + "]"; - const track = new NumberKeyframeTrack(trackName, times, values2); - return new AnimationClip(null, period, [track]); - } - static CreateShakeAnimation(duration, shakeScale) { - const times = [], values2 = [], tmp = new Vector3(); - for (let i = 0; i < duration * 10; i++) { - times.push(i / 10); - tmp.set(Math.random() * 2 - 1, Math.random() * 2 - 1, Math.random() * 2 - 1).multiply(shakeScale).toArray(values2, values2.length); - } - const trackName = ".position"; - const track = new VectorKeyframeTrack(trackName, times, values2); - return new AnimationClip(null, duration, [track]); - } - static CreatePulsationAnimation(duration, pulseScale) { - const times = [], values2 = [], tmp = new Vector3(); - for (let i = 0; i < duration * 10; i++) { - times.push(i / 10); - const scaleFactor = Math.random() * pulseScale; - tmp.set(scaleFactor, scaleFactor, scaleFactor).toArray(values2, values2.length); - } - const trackName = ".scale"; - const track = new VectorKeyframeTrack(trackName, times, values2); - return new AnimationClip(null, duration, [track]); - } - static CreateVisibilityAnimation(duration) { - const times = [0, duration / 2, duration], values2 = [true, false, true]; - const trackName = ".visible"; - const track = new BooleanKeyframeTrack(trackName, times, values2); - return new AnimationClip(null, duration, [track]); - } - static CreateMaterialColorAnimation(duration, colors) { - const times = [], values2 = [], timeStep = duration / colors.length; - for (let i = 0; i < colors.length; i++) { - times.push(i * timeStep); - const color = colors[i]; - values2.push(color.r, color.g, color.b); - } - const trackName = ".material.color"; - const track = new ColorKeyframeTrack(trackName, times, values2); - return new AnimationClip(null, duration, [track]); - } -}; - -// node_modules/three/examples/jsm/animation/CCDIKSolver.js -var _q = new Quaternion(); -var _targetPos = new Vector3(); -var _targetVec = new Vector3(); -var _effectorPos = new Vector3(); -var _effectorVec = new Vector3(); -var _linkPos = new Vector3(); -var _invLinkQ = new Quaternion(); -var _linkScale = new Vector3(); -var _axis = new Vector3(); -var _vector = new Vector3(); -var _matrix = new Matrix4(); -var CCDIKSolver = class { - /** - * @param {THREE.SkinnedMesh} mesh - * @param {Array} iks - */ - constructor(mesh, iks = []) { - this.mesh = mesh; - this.iks = iks; - this._valid(); - } - /** - * Update all IK bones. - * - * @return {CCDIKSolver} - */ - update() { - const iks = this.iks; - for (let i = 0, il = iks.length; i < il; i++) { - this.updateOne(iks[i]); - } - return this; - } - /** - * Update one IK bone - * - * @param {Object} ik parameter - * @return {CCDIKSolver} - */ - updateOne(ik) { - const bones = this.mesh.skeleton.bones; - const math = Math; - const effector = bones[ik.effector]; - const target = bones[ik.target]; - _targetPos.setFromMatrixPosition(target.matrixWorld); - const links = ik.links; - const iteration = ik.iteration !== void 0 ? ik.iteration : 1; - for (let i = 0; i < iteration; i++) { - let rotated = false; - for (let j = 0, jl = links.length; j < jl; j++) { - const link = bones[links[j].index]; - if (links[j].enabled === false) break; - const limitation = links[j].limitation; - const rotationMin = links[j].rotationMin; - const rotationMax = links[j].rotationMax; - link.matrixWorld.decompose(_linkPos, _invLinkQ, _linkScale); - _invLinkQ.invert(); - _effectorPos.setFromMatrixPosition(effector.matrixWorld); - _effectorVec.subVectors(_effectorPos, _linkPos); - _effectorVec.applyQuaternion(_invLinkQ); - _effectorVec.normalize(); - _targetVec.subVectors(_targetPos, _linkPos); - _targetVec.applyQuaternion(_invLinkQ); - _targetVec.normalize(); - let angle = _targetVec.dot(_effectorVec); - if (angle > 1) { - angle = 1; - } else if (angle < -1) { - angle = -1; - } - angle = math.acos(angle); - if (angle < 1e-5) continue; - if (ik.minAngle !== void 0 && angle < ik.minAngle) { - angle = ik.minAngle; - } - if (ik.maxAngle !== void 0 && angle > ik.maxAngle) { - angle = ik.maxAngle; - } - _axis.crossVectors(_effectorVec, _targetVec); - _axis.normalize(); - _q.setFromAxisAngle(_axis, angle); - link.quaternion.multiply(_q); - if (limitation !== void 0) { - let c2 = link.quaternion.w; - if (c2 > 1) c2 = 1; - const c22 = math.sqrt(1 - c2 * c2); - link.quaternion.set( - limitation.x * c22, - limitation.y * c22, - limitation.z * c22, - c2 - ); - } - if (rotationMin !== void 0) { - link.rotation.setFromVector3(_vector.setFromEuler(link.rotation).max(rotationMin)); - } - if (rotationMax !== void 0) { - link.rotation.setFromVector3(_vector.setFromEuler(link.rotation).min(rotationMax)); - } - link.updateMatrixWorld(true); - rotated = true; - } - if (!rotated) break; - } - return this; - } - /** - * Creates Helper - * - * @param {number} sphereSize - * @return {CCDIKHelper} - */ - createHelper(sphereSize) { - return new CCDIKHelper(this.mesh, this.iks, sphereSize); - } - // private methods - _valid() { - const iks = this.iks; - const bones = this.mesh.skeleton.bones; - for (let i = 0, il = iks.length; i < il; i++) { - const ik = iks[i]; - const effector = bones[ik.effector]; - const links = ik.links; - let link0, link1; - link0 = effector; - for (let j = 0, jl = links.length; j < jl; j++) { - link1 = bones[links[j].index]; - if (link0.parent !== link1) { - console.warn("THREE.CCDIKSolver: bone " + link0.name + " is not the child of bone " + link1.name); - } - link0 = link1; - } - } - } -}; -function getPosition(bone, matrixWorldInv) { - return _vector.setFromMatrixPosition(bone.matrixWorld).applyMatrix4(matrixWorldInv); -} -function setPositionOfBoneToAttributeArray(array, index2, bone, matrixWorldInv) { - const v = getPosition(bone, matrixWorldInv); - array[index2 * 3 + 0] = v.x; - array[index2 * 3 + 1] = v.y; - array[index2 * 3 + 2] = v.z; -} -var CCDIKHelper = class extends Object3D { - constructor(mesh, iks = [], sphereSize = 0.25) { - super(); - this.root = mesh; - this.iks = iks; - this.matrix.copy(mesh.matrixWorld); - this.matrixAutoUpdate = false; - this.sphereGeometry = new SphereGeometry(sphereSize, 16, 8); - this.targetSphereMaterial = new MeshBasicMaterial({ - color: new Color(16746632), - depthTest: false, - depthWrite: false, - transparent: true - }); - this.effectorSphereMaterial = new MeshBasicMaterial({ - color: new Color(8978312), - depthTest: false, - depthWrite: false, - transparent: true - }); - this.linkSphereMaterial = new MeshBasicMaterial({ - color: new Color(8947967), - depthTest: false, - depthWrite: false, - transparent: true - }); - this.lineMaterial = new LineBasicMaterial({ - color: new Color(16711680), - depthTest: false, - depthWrite: false, - transparent: true - }); - this._init(); - } - /** - * Updates IK bones visualization. - */ - updateMatrixWorld(force) { - const mesh = this.root; - if (this.visible) { - let offset = 0; - const iks = this.iks; - const bones = mesh.skeleton.bones; - _matrix.copy(mesh.matrixWorld).invert(); - for (let i = 0, il = iks.length; i < il; i++) { - const ik = iks[i]; - const targetBone = bones[ik.target]; - const effectorBone = bones[ik.effector]; - const targetMesh = this.children[offset++]; - const effectorMesh = this.children[offset++]; - targetMesh.position.copy(getPosition(targetBone, _matrix)); - effectorMesh.position.copy(getPosition(effectorBone, _matrix)); - for (let j = 0, jl = ik.links.length; j < jl; j++) { - const link = ik.links[j]; - const linkBone = bones[link.index]; - const linkMesh = this.children[offset++]; - linkMesh.position.copy(getPosition(linkBone, _matrix)); - } - const line2 = this.children[offset++]; - const array = line2.geometry.attributes.position.array; - setPositionOfBoneToAttributeArray(array, 0, targetBone, _matrix); - setPositionOfBoneToAttributeArray(array, 1, effectorBone, _matrix); - for (let j = 0, jl = ik.links.length; j < jl; j++) { - const link = ik.links[j]; - const linkBone = bones[link.index]; - setPositionOfBoneToAttributeArray(array, j + 2, linkBone, _matrix); - } - line2.geometry.attributes.position.needsUpdate = true; - } - } - this.matrix.copy(mesh.matrixWorld); - super.updateMatrixWorld(force); - } - /** - * Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app. - */ - dispose() { - this.sphereGeometry.dispose(); - this.targetSphereMaterial.dispose(); - this.effectorSphereMaterial.dispose(); - this.linkSphereMaterial.dispose(); - this.lineMaterial.dispose(); - const children = this.children; - for (let i = 0; i < children.length; i++) { - const child = children[i]; - if (child.isLine) child.geometry.dispose(); - } - } - // private method - _init() { - const scope = this; - const iks = this.iks; - function createLineGeometry(ik) { - const geometry = new BufferGeometry(); - const vertices = new Float32Array((2 + ik.links.length) * 3); - geometry.setAttribute("position", new BufferAttribute(vertices, 3)); - return geometry; - } - function createTargetMesh() { - return new Mesh(scope.sphereGeometry, scope.targetSphereMaterial); - } - function createEffectorMesh() { - return new Mesh(scope.sphereGeometry, scope.effectorSphereMaterial); - } - function createLinkMesh() { - return new Mesh(scope.sphereGeometry, scope.linkSphereMaterial); - } - function createLine(ik) { - return new Line(createLineGeometry(ik), scope.lineMaterial); - } - for (let i = 0, il = iks.length; i < il; i++) { - const ik = iks[i]; - this.add(createTargetMesh()); - this.add(createEffectorMesh()); - for (let j = 0, jl = ik.links.length; j < jl; j++) { - this.add(createLinkMesh()); - } - this.add(createLine(ik)); - } - } -}; - -// node_modules/three/examples/jsm/animation/MMDPhysics.js -var MMDPhysics = class { - /** - * @param {THREE.SkinnedMesh} mesh - * @param {Array} rigidBodyParams - * @param {Array} (optional) constraintParams - * @param {Object} params - (optional) - * @param {Number} params.unitStep - Default is 1 / 65. - * @param {Integer} params.maxStepNum - Default is 3. - * @param {Vector3} params.gravity - Default is ( 0, - 9.8 * 10, 0 ) - */ - constructor(mesh, rigidBodyParams, constraintParams = [], params = {}) { - if (typeof Ammo === "undefined") { - throw new Error("THREE.MMDPhysics: Import ammo.js https://github.com/kripken/ammo.js"); - } - this.manager = new ResourceManager(); - this.mesh = mesh; - this.unitStep = params.unitStep !== void 0 ? params.unitStep : 1 / 65; - this.maxStepNum = params.maxStepNum !== void 0 ? params.maxStepNum : 3; - this.gravity = new Vector3(0, -9.8 * 10, 0); - if (params.gravity !== void 0) this.gravity.copy(params.gravity); - this.world = params.world !== void 0 ? params.world : null; - this.bodies = []; - this.constraints = []; - this._init(mesh, rigidBodyParams, constraintParams); - } - /** - * Advances Physics calculation and updates bones. - * - * @param {Number} delta - time in second - * @return {MMDPhysics} - */ - update(delta) { - const manager = this.manager; - const mesh = this.mesh; - let isNonDefaultScale = false; - const position2 = manager.allocThreeVector3(); - const quaternion = manager.allocThreeQuaternion(); - const scale2 = manager.allocThreeVector3(); - mesh.matrixWorld.decompose(position2, quaternion, scale2); - if (scale2.x !== 1 || scale2.y !== 1 || scale2.z !== 1) { - isNonDefaultScale = true; - } - let parent2; - if (isNonDefaultScale) { - parent2 = mesh.parent; - if (parent2 !== null) mesh.parent = null; - scale2.copy(this.mesh.scale); - mesh.scale.set(1, 1, 1); - mesh.updateMatrixWorld(true); - } - this._updateRigidBodies(); - this._stepSimulation(delta); - this._updateBones(); - if (isNonDefaultScale) { - if (parent2 !== null) mesh.parent = parent2; - mesh.scale.copy(scale2); - } - manager.freeThreeVector3(scale2); - manager.freeThreeQuaternion(quaternion); - manager.freeThreeVector3(position2); - return this; - } - /** - * Resets rigid bodies transorm to current bone's. - * - * @return {MMDPhysics} - */ - reset() { - for (let i = 0, il = this.bodies.length; i < il; i++) { - this.bodies[i].reset(); - } - return this; - } - /** - * Warm ups Rigid bodies. Calculates cycles steps. - * - * @param {Integer} cycles - * @return {MMDPhysics} - */ - warmup(cycles) { - for (let i = 0; i < cycles; i++) { - this.update(1 / 60); - } - return this; - } - /** - * Sets gravity. - * - * @param {Vector3} gravity - * @return {MMDPhysicsHelper} - */ - setGravity(gravity) { - this.world.setGravity(new Ammo.btVector3(gravity.x, gravity.y, gravity.z)); - this.gravity.copy(gravity); - return this; - } - /** - * Creates MMDPhysicsHelper - * - * @return {MMDPhysicsHelper} - */ - createHelper() { - return new MMDPhysicsHelper(this.mesh, this); - } - // private methods - _init(mesh, rigidBodyParams, constraintParams) { - const manager = this.manager; - const parent2 = mesh.parent; - if (parent2 !== null) mesh.parent = null; - const currentPosition = manager.allocThreeVector3(); - const currentQuaternion = manager.allocThreeQuaternion(); - const currentScale = manager.allocThreeVector3(); - currentPosition.copy(mesh.position); - currentQuaternion.copy(mesh.quaternion); - currentScale.copy(mesh.scale); - mesh.position.set(0, 0, 0); - mesh.quaternion.set(0, 0, 0, 1); - mesh.scale.set(1, 1, 1); - mesh.updateMatrixWorld(true); - if (this.world === null) { - this.world = this._createWorld(); - this.setGravity(this.gravity); - } - this._initRigidBodies(rigidBodyParams); - this._initConstraints(constraintParams); - if (parent2 !== null) mesh.parent = parent2; - mesh.position.copy(currentPosition); - mesh.quaternion.copy(currentQuaternion); - mesh.scale.copy(currentScale); - mesh.updateMatrixWorld(true); - this.reset(); - manager.freeThreeVector3(currentPosition); - manager.freeThreeQuaternion(currentQuaternion); - manager.freeThreeVector3(currentScale); - } - _createWorld() { - const config = new Ammo.btDefaultCollisionConfiguration(); - const dispatcher = new Ammo.btCollisionDispatcher(config); - const cache = new Ammo.btDbvtBroadphase(); - const solver = new Ammo.btSequentialImpulseConstraintSolver(); - const world2 = new Ammo.btDiscreteDynamicsWorld(dispatcher, cache, solver, config); - return world2; - } - _initRigidBodies(rigidBodies) { - for (let i = 0, il = rigidBodies.length; i < il; i++) { - this.bodies.push(new RigidBody( - this.mesh, - this.world, - rigidBodies[i], - this.manager - )); - } - } - _initConstraints(constraints) { - for (let i = 0, il = constraints.length; i < il; i++) { - const params = constraints[i]; - const bodyA = this.bodies[params.rigidBodyIndex1]; - const bodyB = this.bodies[params.rigidBodyIndex2]; - this.constraints.push(new Constraint(this.mesh, this.world, bodyA, bodyB, params, this.manager)); - } - } - _stepSimulation(delta) { - const unitStep = this.unitStep; - let stepTime = delta; - let maxStepNum = (delta / unitStep | 0) + 1; - if (stepTime < unitStep) { - stepTime = unitStep; - maxStepNum = 1; - } - if (maxStepNum > this.maxStepNum) { - maxStepNum = this.maxStepNum; - } - this.world.stepSimulation(stepTime, maxStepNum, unitStep); - } - _updateRigidBodies() { - for (let i = 0, il = this.bodies.length; i < il; i++) { - this.bodies[i].updateFromBone(); - } - } - _updateBones() { - for (let i = 0, il = this.bodies.length; i < il; i++) { - this.bodies[i].updateBone(); - } - } -}; -var ResourceManager = class { - constructor() { - this.threeVector3s = []; - this.threeMatrix4s = []; - this.threeQuaternions = []; - this.threeEulers = []; - this.transforms = []; - this.quaternions = []; - this.vector3s = []; - } - allocThreeVector3() { - return this.threeVector3s.length > 0 ? this.threeVector3s.pop() : new Vector3(); - } - freeThreeVector3(v) { - this.threeVector3s.push(v); - } - allocThreeMatrix4() { - return this.threeMatrix4s.length > 0 ? this.threeMatrix4s.pop() : new Matrix4(); - } - freeThreeMatrix4(m) { - this.threeMatrix4s.push(m); - } - allocThreeQuaternion() { - return this.threeQuaternions.length > 0 ? this.threeQuaternions.pop() : new Quaternion(); - } - freeThreeQuaternion(q2) { - this.threeQuaternions.push(q2); - } - allocThreeEuler() { - return this.threeEulers.length > 0 ? this.threeEulers.pop() : new Euler(); - } - freeThreeEuler(e) { - this.threeEulers.push(e); - } - allocTransform() { - return this.transforms.length > 0 ? this.transforms.pop() : new Ammo.btTransform(); - } - freeTransform(t3) { - this.transforms.push(t3); - } - allocQuaternion() { - return this.quaternions.length > 0 ? this.quaternions.pop() : new Ammo.btQuaternion(); - } - freeQuaternion(q2) { - this.quaternions.push(q2); - } - allocVector3() { - return this.vector3s.length > 0 ? this.vector3s.pop() : new Ammo.btVector3(); - } - freeVector3(v) { - this.vector3s.push(v); - } - setIdentity(t3) { - t3.setIdentity(); - } - getBasis(t3) { - var q2 = this.allocQuaternion(); - t3.getBasis().getRotation(q2); - return q2; - } - getBasisAsMatrix3(t3) { - var q2 = this.getBasis(t3); - var m = this.quaternionToMatrix3(q2); - this.freeQuaternion(q2); - return m; - } - getOrigin(t3) { - return t3.getOrigin(); - } - setOrigin(t3, v) { - t3.getOrigin().setValue(v.x(), v.y(), v.z()); - } - copyOrigin(t1, t22) { - var o = t22.getOrigin(); - this.setOrigin(t1, o); - } - setBasis(t3, q2) { - t3.setRotation(q2); - } - setBasisFromMatrix3(t3, m) { - var q2 = this.matrix3ToQuaternion(m); - this.setBasis(t3, q2); - this.freeQuaternion(q2); - } - setOriginFromArray3(t3, a2) { - t3.getOrigin().setValue(a2[0], a2[1], a2[2]); - } - setOriginFromThreeVector3(t3, v) { - t3.getOrigin().setValue(v.x, v.y, v.z); - } - setBasisFromArray3(t3, a2) { - var thQ = this.allocThreeQuaternion(); - var thE = this.allocThreeEuler(); - thE.set(a2[0], a2[1], a2[2]); - this.setBasisFromThreeQuaternion(t3, thQ.setFromEuler(thE)); - this.freeThreeEuler(thE); - this.freeThreeQuaternion(thQ); - } - setBasisFromThreeQuaternion(t3, a2) { - var q2 = this.allocQuaternion(); - q2.setX(a2.x); - q2.setY(a2.y); - q2.setZ(a2.z); - q2.setW(a2.w); - this.setBasis(t3, q2); - this.freeQuaternion(q2); - } - multiplyTransforms(t1, t22) { - var t3 = this.allocTransform(); - this.setIdentity(t3); - var m1 = this.getBasisAsMatrix3(t1); - var m2 = this.getBasisAsMatrix3(t22); - var o1 = this.getOrigin(t1); - var o2 = this.getOrigin(t22); - var v12 = this.multiplyMatrix3ByVector3(m1, o2); - var v2 = this.addVector3(v12, o1); - this.setOrigin(t3, v2); - var m3 = this.multiplyMatrices3(m1, m2); - this.setBasisFromMatrix3(t3, m3); - this.freeVector3(v12); - this.freeVector3(v2); - return t3; - } - inverseTransform(t3) { - var t22 = this.allocTransform(); - var m1 = this.getBasisAsMatrix3(t3); - var o = this.getOrigin(t3); - var m2 = this.transposeMatrix3(m1); - var v12 = this.negativeVector3(o); - var v2 = this.multiplyMatrix3ByVector3(m2, v12); - this.setOrigin(t22, v2); - this.setBasisFromMatrix3(t22, m2); - this.freeVector3(v12); - this.freeVector3(v2); - return t22; - } - multiplyMatrices3(m1, m2) { - var m3 = []; - var v10 = this.rowOfMatrix3(m1, 0); - var v11 = this.rowOfMatrix3(m1, 1); - var v12 = this.rowOfMatrix3(m1, 2); - var v20 = this.columnOfMatrix3(m2, 0); - var v21 = this.columnOfMatrix3(m2, 1); - var v22 = this.columnOfMatrix3(m2, 2); - m3[0] = this.dotVectors3(v10, v20); - m3[1] = this.dotVectors3(v10, v21); - m3[2] = this.dotVectors3(v10, v22); - m3[3] = this.dotVectors3(v11, v20); - m3[4] = this.dotVectors3(v11, v21); - m3[5] = this.dotVectors3(v11, v22); - m3[6] = this.dotVectors3(v12, v20); - m3[7] = this.dotVectors3(v12, v21); - m3[8] = this.dotVectors3(v12, v22); - this.freeVector3(v10); - this.freeVector3(v11); - this.freeVector3(v12); - this.freeVector3(v20); - this.freeVector3(v21); - this.freeVector3(v22); - return m3; - } - addVector3(v12, v2) { - var v = this.allocVector3(); - v.setValue(v12.x() + v2.x(), v12.y() + v2.y(), v12.z() + v2.z()); - return v; - } - dotVectors3(v12, v2) { - return v12.x() * v2.x() + v12.y() * v2.y() + v12.z() * v2.z(); - } - rowOfMatrix3(m, i) { - var v = this.allocVector3(); - v.setValue(m[i * 3 + 0], m[i * 3 + 1], m[i * 3 + 2]); - return v; - } - columnOfMatrix3(m, i) { - var v = this.allocVector3(); - v.setValue(m[i + 0], m[i + 3], m[i + 6]); - return v; - } - negativeVector3(v) { - var v2 = this.allocVector3(); - v2.setValue(-v.x(), -v.y(), -v.z()); - return v2; - } - multiplyMatrix3ByVector3(m, v) { - var v4 = this.allocVector3(); - var v0 = this.rowOfMatrix3(m, 0); - var v12 = this.rowOfMatrix3(m, 1); - var v2 = this.rowOfMatrix3(m, 2); - var x2 = this.dotVectors3(v0, v); - var y2 = this.dotVectors3(v12, v); - var z = this.dotVectors3(v2, v); - v4.setValue(x2, y2, z); - this.freeVector3(v0); - this.freeVector3(v12); - this.freeVector3(v2); - return v4; - } - transposeMatrix3(m) { - var m2 = []; - m2[0] = m[0]; - m2[1] = m[3]; - m2[2] = m[6]; - m2[3] = m[1]; - m2[4] = m[4]; - m2[5] = m[7]; - m2[6] = m[2]; - m2[7] = m[5]; - m2[8] = m[8]; - return m2; - } - quaternionToMatrix3(q2) { - var m = []; - var x2 = q2.x(); - var y2 = q2.y(); - var z = q2.z(); - var w = q2.w(); - var xx = x2 * x2; - var yy = y2 * y2; - var zz = z * z; - var xy = x2 * y2; - var yz = y2 * z; - var zx = z * x2; - var xw = x2 * w; - var yw = y2 * w; - var zw = z * w; - m[0] = 1 - 2 * (yy + zz); - m[1] = 2 * (xy - zw); - m[2] = 2 * (zx + yw); - m[3] = 2 * (xy + zw); - m[4] = 1 - 2 * (zz + xx); - m[5] = 2 * (yz - xw); - m[6] = 2 * (zx - yw); - m[7] = 2 * (yz + xw); - m[8] = 1 - 2 * (xx + yy); - return m; - } - matrix3ToQuaternion(m) { - var t3 = m[0] + m[4] + m[8]; - var s, x2, y2, z, w; - if (t3 > 0) { - s = Math.sqrt(t3 + 1) * 2; - w = 0.25 * s; - x2 = (m[7] - m[5]) / s; - y2 = (m[2] - m[6]) / s; - z = (m[3] - m[1]) / s; - } else if (m[0] > m[4] && m[0] > m[8]) { - s = Math.sqrt(1 + m[0] - m[4] - m[8]) * 2; - w = (m[7] - m[5]) / s; - x2 = 0.25 * s; - y2 = (m[1] + m[3]) / s; - z = (m[2] + m[6]) / s; - } else if (m[4] > m[8]) { - s = Math.sqrt(1 + m[4] - m[0] - m[8]) * 2; - w = (m[2] - m[6]) / s; - x2 = (m[1] + m[3]) / s; - y2 = 0.25 * s; - z = (m[5] + m[7]) / s; - } else { - s = Math.sqrt(1 + m[8] - m[0] - m[4]) * 2; - w = (m[3] - m[1]) / s; - x2 = (m[2] + m[6]) / s; - y2 = (m[5] + m[7]) / s; - z = 0.25 * s; - } - var q2 = this.allocQuaternion(); - q2.setX(x2); - q2.setY(y2); - q2.setZ(z); - q2.setW(w); - return q2; - } -}; -var RigidBody = class { - constructor(mesh, world2, params, manager) { - this.mesh = mesh; - this.world = world2; - this.params = params; - this.manager = manager; - this.body = null; - this.bone = null; - this.boneOffsetForm = null; - this.boneOffsetFormInverse = null; - this._init(); - } - /** - * Resets rigid body transform to the current bone's. - * - * @return {RigidBody} - */ - reset() { - this._setTransformFromBone(); - return this; - } - /** - * Updates rigid body's transform from the current bone. - * - * @return {RidigBody} - */ - updateFromBone() { - if (this.params.boneIndex !== -1 && this.params.type === 0) { - this._setTransformFromBone(); - } - return this; - } - /** - * Updates bone from the current ridid body's transform. - * - * @return {RidigBody} - */ - updateBone() { - if (this.params.type === 0 || this.params.boneIndex === -1) { - return this; - } - this._updateBoneRotation(); - if (this.params.type === 1) { - this._updateBonePosition(); - } - this.bone.updateMatrixWorld(true); - if (this.params.type === 2) { - this._setPositionFromBone(); - } - return this; - } - // private methods - _init() { - function generateShape(p2) { - switch (p2.shapeType) { - case 0: - return new Ammo.btSphereShape(p2.width); - case 1: - return new Ammo.btBoxShape(new Ammo.btVector3(p2.width, p2.height, p2.depth)); - case 2: - return new Ammo.btCapsuleShape(p2.width, p2.height); - default: - throw new Error("unknown shape type " + p2.shapeType); - } - } - const manager = this.manager; - const params = this.params; - const bones = this.mesh.skeleton.bones; - const bone = params.boneIndex === -1 ? new Bone() : bones[params.boneIndex]; - const shape = generateShape(params); - const weight = params.type === 0 ? 0 : params.weight; - const localInertia = manager.allocVector3(); - localInertia.setValue(0, 0, 0); - if (weight !== 0) { - shape.calculateLocalInertia(weight, localInertia); - } - const boneOffsetForm = manager.allocTransform(); - manager.setIdentity(boneOffsetForm); - manager.setOriginFromArray3(boneOffsetForm, params.position); - manager.setBasisFromArray3(boneOffsetForm, params.rotation); - const vector = manager.allocThreeVector3(); - const boneForm = manager.allocTransform(); - manager.setIdentity(boneForm); - manager.setOriginFromThreeVector3(boneForm, bone.getWorldPosition(vector)); - const form = manager.multiplyTransforms(boneForm, boneOffsetForm); - const state = new Ammo.btDefaultMotionState(form); - const info = new Ammo.btRigidBodyConstructionInfo(weight, state, shape, localInertia); - info.set_m_friction(params.friction); - info.set_m_restitution(params.restitution); - const body = new Ammo.btRigidBody(info); - if (params.type === 0) { - body.setCollisionFlags(body.getCollisionFlags() | 2); - body.setActivationState(4); - } - body.setDamping(params.positionDamping, params.rotationDamping); - body.setSleepingThresholds(0, 0); - this.world.addRigidBody(body, 1 << params.groupIndex, params.groupTarget); - this.body = body; - this.bone = bone; - this.boneOffsetForm = boneOffsetForm; - this.boneOffsetFormInverse = manager.inverseTransform(boneOffsetForm); - manager.freeVector3(localInertia); - manager.freeTransform(form); - manager.freeTransform(boneForm); - manager.freeThreeVector3(vector); - } - _getBoneTransform() { - const manager = this.manager; - const p2 = manager.allocThreeVector3(); - const q2 = manager.allocThreeQuaternion(); - const s = manager.allocThreeVector3(); - this.bone.matrixWorld.decompose(p2, q2, s); - const tr = manager.allocTransform(); - manager.setOriginFromThreeVector3(tr, p2); - manager.setBasisFromThreeQuaternion(tr, q2); - const form = manager.multiplyTransforms(tr, this.boneOffsetForm); - manager.freeTransform(tr); - manager.freeThreeVector3(s); - manager.freeThreeQuaternion(q2); - manager.freeThreeVector3(p2); - return form; - } - _getWorldTransformForBone() { - const manager = this.manager; - const tr = this.body.getCenterOfMassTransform(); - return manager.multiplyTransforms(tr, this.boneOffsetFormInverse); - } - _setTransformFromBone() { - const manager = this.manager; - const form = this._getBoneTransform(); - this.body.setCenterOfMassTransform(form); - this.body.getMotionState().setWorldTransform(form); - manager.freeTransform(form); - } - _setPositionFromBone() { - const manager = this.manager; - const form = this._getBoneTransform(); - const tr = manager.allocTransform(); - this.body.getMotionState().getWorldTransform(tr); - manager.copyOrigin(tr, form); - this.body.setCenterOfMassTransform(tr); - this.body.getMotionState().setWorldTransform(tr); - manager.freeTransform(tr); - manager.freeTransform(form); - } - _updateBoneRotation() { - const manager = this.manager; - const tr = this._getWorldTransformForBone(); - const q2 = manager.getBasis(tr); - const thQ = manager.allocThreeQuaternion(); - const thQ2 = manager.allocThreeQuaternion(); - const thQ3 = manager.allocThreeQuaternion(); - thQ.set(q2.x(), q2.y(), q2.z(), q2.w()); - thQ2.setFromRotationMatrix(this.bone.matrixWorld); - thQ2.conjugate(); - thQ2.multiply(thQ); - thQ3.setFromRotationMatrix(this.bone.matrix); - this.bone.quaternion.copy(thQ2.multiply(thQ3).normalize()); - manager.freeThreeQuaternion(thQ); - manager.freeThreeQuaternion(thQ2); - manager.freeThreeQuaternion(thQ3); - manager.freeQuaternion(q2); - manager.freeTransform(tr); - } - _updateBonePosition() { - const manager = this.manager; - const tr = this._getWorldTransformForBone(); - const thV = manager.allocThreeVector3(); - const o = manager.getOrigin(tr); - thV.set(o.x(), o.y(), o.z()); - if (this.bone.parent) { - this.bone.parent.worldToLocal(thV); - } - this.bone.position.copy(thV); - manager.freeThreeVector3(thV); - manager.freeTransform(tr); - } -}; -var Constraint = class { - /** - * @param {THREE.SkinnedMesh} mesh - * @param {Ammo.btDiscreteDynamicsWorld} world - * @param {RigidBody} bodyA - * @param {RigidBody} bodyB - * @param {Object} params - * @param {ResourceManager} manager - */ - constructor(mesh, world2, bodyA, bodyB, params, manager) { - this.mesh = mesh; - this.world = world2; - this.bodyA = bodyA; - this.bodyB = bodyB; - this.params = params; - this.manager = manager; - this.constraint = null; - this._init(); - } - // private method - _init() { - const manager = this.manager; - const params = this.params; - const bodyA = this.bodyA; - const bodyB = this.bodyB; - const form = manager.allocTransform(); - manager.setIdentity(form); - manager.setOriginFromArray3(form, params.position); - manager.setBasisFromArray3(form, params.rotation); - const formA = manager.allocTransform(); - const formB = manager.allocTransform(); - bodyA.body.getMotionState().getWorldTransform(formA); - bodyB.body.getMotionState().getWorldTransform(formB); - const formInverseA = manager.inverseTransform(formA); - const formInverseB = manager.inverseTransform(formB); - const formA2 = manager.multiplyTransforms(formInverseA, form); - const formB2 = manager.multiplyTransforms(formInverseB, form); - const constraint = new Ammo.btGeneric6DofSpringConstraint(bodyA.body, bodyB.body, formA2, formB2, true); - const lll = manager.allocVector3(); - const lul = manager.allocVector3(); - const all = manager.allocVector3(); - const aul = manager.allocVector3(); - lll.setValue( - params.translationLimitation1[0], - params.translationLimitation1[1], - params.translationLimitation1[2] - ); - lul.setValue( - params.translationLimitation2[0], - params.translationLimitation2[1], - params.translationLimitation2[2] - ); - all.setValue( - params.rotationLimitation1[0], - params.rotationLimitation1[1], - params.rotationLimitation1[2] - ); - aul.setValue( - params.rotationLimitation2[0], - params.rotationLimitation2[1], - params.rotationLimitation2[2] - ); - constraint.setLinearLowerLimit(lll); - constraint.setLinearUpperLimit(lul); - constraint.setAngularLowerLimit(all); - constraint.setAngularUpperLimit(aul); - for (let i = 0; i < 3; i++) { - if (params.springPosition[i] !== 0) { - constraint.enableSpring(i, true); - constraint.setStiffness(i, params.springPosition[i]); - } - } - for (let i = 0; i < 3; i++) { - if (params.springRotation[i] !== 0) { - constraint.enableSpring(i + 3, true); - constraint.setStiffness(i + 3, params.springRotation[i]); - } - } - if (constraint.setParam !== void 0) { - for (let i = 0; i < 6; i++) { - constraint.setParam(2, 0.475, i); - } - } - this.world.addConstraint(constraint, true); - this.constraint = constraint; - manager.freeTransform(form); - manager.freeTransform(formA); - manager.freeTransform(formB); - manager.freeTransform(formInverseA); - manager.freeTransform(formInverseB); - manager.freeTransform(formA2); - manager.freeTransform(formB2); - manager.freeVector3(lll); - manager.freeVector3(lul); - manager.freeVector3(all); - manager.freeVector3(aul); - } -}; -var _position = new Vector3(); -var _quaternion = new Quaternion(); -var _scale = new Vector3(); -var _matrixWorldInv = new Matrix4(); -var MMDPhysicsHelper = class extends Object3D { - /** - * Visualize Rigid bodies - * - * @param {THREE.SkinnedMesh} mesh - * @param {Physics} physics - */ - constructor(mesh, physics) { - super(); - this.root = mesh; - this.physics = physics; - this.matrix.copy(mesh.matrixWorld); - this.matrixAutoUpdate = false; - this.materials = []; - this.materials.push( - new MeshBasicMaterial({ - color: new Color(16746632), - wireframe: true, - depthTest: false, - depthWrite: false, - opacity: 0.25, - transparent: true - }) - ); - this.materials.push( - new MeshBasicMaterial({ - color: new Color(8978312), - wireframe: true, - depthTest: false, - depthWrite: false, - opacity: 0.25, - transparent: true - }) - ); - this.materials.push( - new MeshBasicMaterial({ - color: new Color(8947967), - wireframe: true, - depthTest: false, - depthWrite: false, - opacity: 0.25, - transparent: true - }) - ); - this._init(); - } - /** - * Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app. - */ - dispose() { - const materials = this.materials; - const children = this.children; - for (let i = 0; i < materials.length; i++) { - materials[i].dispose(); - } - for (let i = 0; i < children.length; i++) { - const child = children[i]; - if (child.isMesh) child.geometry.dispose(); - } - } - /** - * Updates Rigid Bodies visualization. - */ - updateMatrixWorld(force) { - var mesh = this.root; - if (this.visible) { - var bodies = this.physics.bodies; - _matrixWorldInv.copy(mesh.matrixWorld).decompose(_position, _quaternion, _scale).compose(_position, _quaternion, _scale.set(1, 1, 1)).invert(); - for (var i = 0, il = bodies.length; i < il; i++) { - var body = bodies[i].body; - var child = this.children[i]; - var tr = body.getCenterOfMassTransform(); - var origin = tr.getOrigin(); - var rotation2 = tr.getRotation(); - child.position.set(origin.x(), origin.y(), origin.z()).applyMatrix4(_matrixWorldInv); - child.quaternion.setFromRotationMatrix(_matrixWorldInv).multiply( - _quaternion.set(rotation2.x(), rotation2.y(), rotation2.z(), rotation2.w()) - ); - } - } - this.matrix.copy(mesh.matrixWorld).decompose(_position, _quaternion, _scale).compose(_position, _quaternion, _scale.set(1, 1, 1)); - super.updateMatrixWorld(force); - } - // private method - _init() { - var bodies = this.physics.bodies; - function createGeometry(param2) { - switch (param2.shapeType) { - case 0: - return new SphereGeometry(param2.width, 16, 8); - case 1: - return new BoxGeometry(param2.width * 2, param2.height * 2, param2.depth * 2, 8, 8, 8); - case 2: - return new CapsuleGeometry(param2.width, param2.height, 8, 16); - default: - return null; - } - } - for (var i = 0, il = bodies.length; i < il; i++) { - var param = bodies[i].params; - this.add(new Mesh(createGeometry(param), this.materials[param.type])); - } - } -}; - -// node_modules/three/examples/jsm/animation/MMDAnimationHelper.js -var MMDAnimationHelper = class { - /** - * @param {Object} params - (optional) - * @param {boolean} params.sync - Whether animation durations of added objects are synched. Default is true. - * @param {Number} params.afterglow - Default is 0.0. - * @param {boolean} params.resetPhysicsOnLoop - Default is true. - */ - constructor(params = {}) { - this.meshes = []; - this.camera = null; - this.cameraTarget = new Object3D(); - this.cameraTarget.name = "target"; - this.audio = null; - this.audioManager = null; - this.objects = /* @__PURE__ */ new WeakMap(); - this.configuration = { - sync: params.sync !== void 0 ? params.sync : true, - afterglow: params.afterglow !== void 0 ? params.afterglow : 0, - resetPhysicsOnLoop: params.resetPhysicsOnLoop !== void 0 ? params.resetPhysicsOnLoop : true, - pmxAnimation: params.pmxAnimation !== void 0 ? params.pmxAnimation : false - }; - this.enabled = { - animation: true, - ik: true, - grant: true, - physics: true, - cameraAnimation: true - }; - this.onBeforePhysics = function() { - }; - this.sharedPhysics = false; - this.masterPhysics = null; - } - /** - * Adds an Three.js Object to helper and setups animation. - * The anmation durations of added objects are synched - * if this.configuration.sync is true. - * - * @param {THREE.SkinnedMesh|THREE.Camera|THREE.Audio} object - * @param {Object} params - (optional) - * @param {THREE.AnimationClip|Array} params.animation - Only for THREE.SkinnedMesh and THREE.Camera. Default is undefined. - * @param {boolean} params.physics - Only for THREE.SkinnedMesh. Default is true. - * @param {Integer} params.warmup - Only for THREE.SkinnedMesh and physics is true. Default is 60. - * @param {Number} params.unitStep - Only for THREE.SkinnedMesh and physics is true. Default is 1 / 65. - * @param {Integer} params.maxStepNum - Only for THREE.SkinnedMesh and physics is true. Default is 3. - * @param {Vector3} params.gravity - Only for THREE.SkinnedMesh and physics is true. Default ( 0, - 9.8 * 10, 0 ). - * @param {Number} params.delayTime - Only for THREE.Audio. Default is 0.0. - * @return {MMDAnimationHelper} - */ - add(object, params = {}) { - if (object.isSkinnedMesh) { - this._addMesh(object, params); - } else if (object.isCamera) { - this._setupCamera(object, params); - } else if (object.type === "Audio") { - this._setupAudio(object, params); - } else { - throw new Error("THREE.MMDAnimationHelper.add: accepts only THREE.SkinnedMesh or THREE.Camera or THREE.Audio instance."); - } - if (this.configuration.sync) this._syncDuration(); - return this; - } - /** - * Removes an Three.js Object from helper. - * - * @param {THREE.SkinnedMesh|THREE.Camera|THREE.Audio} object - * @return {MMDAnimationHelper} - */ - remove(object) { - if (object.isSkinnedMesh) { - this._removeMesh(object); - } else if (object.isCamera) { - this._clearCamera(object); - } else if (object.type === "Audio") { - this._clearAudio(object); - } else { - throw new Error("THREE.MMDAnimationHelper.remove: accepts only THREE.SkinnedMesh or THREE.Camera or THREE.Audio instance."); - } - if (this.configuration.sync) this._syncDuration(); - return this; - } - /** - * Updates the animation. - * - * @param {Number} delta - * @return {MMDAnimationHelper} - */ - update(delta) { - if (this.audioManager !== null) this.audioManager.control(delta); - for (let i = 0; i < this.meshes.length; i++) { - this._animateMesh(this.meshes[i], delta); - } - if (this.sharedPhysics) this._updateSharedPhysics(delta); - if (this.camera !== null) this._animateCamera(this.camera, delta); - return this; - } - /** - * Changes the pose of SkinnedMesh as VPD specifies. - * - * @param {THREE.SkinnedMesh} mesh - * @param {Object} vpd - VPD content parsed MMDParser - * @param {Object} params - (optional) - * @param {boolean} params.resetPose - Default is true. - * @param {boolean} params.ik - Default is true. - * @param {boolean} params.grant - Default is true. - * @return {MMDAnimationHelper} - */ - pose(mesh, vpd, params = {}) { - if (params.resetPose !== false) mesh.pose(); - const bones = mesh.skeleton.bones; - const boneParams = vpd.bones; - const boneNameDictionary = {}; - for (let i = 0, il = bones.length; i < il; i++) { - boneNameDictionary[bones[i].name] = i; - } - const vector = new Vector3(); - const quaternion = new Quaternion(); - for (let i = 0, il = boneParams.length; i < il; i++) { - const boneParam = boneParams[i]; - const boneIndex = boneNameDictionary[boneParam.name]; - if (boneIndex === void 0) continue; - const bone = bones[boneIndex]; - bone.position.add(vector.fromArray(boneParam.translation)); - bone.quaternion.multiply(quaternion.fromArray(boneParam.quaternion)); - } - mesh.updateMatrixWorld(true); - if (this.configuration.pmxAnimation && mesh.geometry.userData.MMD && mesh.geometry.userData.MMD.format === "pmx") { - const sortedBonesData = this._sortBoneDataArray(mesh.geometry.userData.MMD.bones.slice()); - const ikSolver = params.ik !== false ? this._createCCDIKSolver(mesh) : null; - const grantSolver = params.grant !== false ? this.createGrantSolver(mesh) : null; - this._animatePMXMesh(mesh, sortedBonesData, ikSolver, grantSolver); - } else { - if (params.ik !== false) { - this._createCCDIKSolver(mesh).update(); - } - if (params.grant !== false) { - this.createGrantSolver(mesh).update(); - } - } - return this; - } - /** - * Enabes/Disables an animation feature. - * - * @param {string} key - * @param {boolean} enabled - * @return {MMDAnimationHelper} - */ - enable(key2, enabled) { - if (this.enabled[key2] === void 0) { - throw new Error("THREE.MMDAnimationHelper.enable: unknown key " + key2); - } - this.enabled[key2] = enabled; - if (key2 === "physics") { - for (let i = 0, il = this.meshes.length; i < il; i++) { - this._optimizeIK(this.meshes[i], enabled); - } - } - return this; - } - /** - * Creates an GrantSolver instance. - * - * @param {THREE.SkinnedMesh} mesh - * @return {GrantSolver} - */ - createGrantSolver(mesh) { - return new GrantSolver(mesh, mesh.geometry.userData.MMD.grants); - } - // private methods - _addMesh(mesh, params) { - if (this.meshes.indexOf(mesh) >= 0) { - throw new Error("THREE.MMDAnimationHelper._addMesh: SkinnedMesh '" + mesh.name + "' has already been added."); - } - this.meshes.push(mesh); - this.objects.set(mesh, { looped: false }); - this._setupMeshAnimation(mesh, params.animation); - if (params.physics !== false) { - this._setupMeshPhysics(mesh, params); - } - return this; - } - _setupCamera(camera, params) { - if (this.camera === camera) { - throw new Error("THREE.MMDAnimationHelper._setupCamera: Camera '" + camera.name + "' has already been set."); - } - if (this.camera) this.clearCamera(this.camera); - this.camera = camera; - camera.add(this.cameraTarget); - this.objects.set(camera, {}); - if (params.animation !== void 0) { - this._setupCameraAnimation(camera, params.animation); - } - return this; - } - _setupAudio(audio, params) { - if (this.audio === audio) { - throw new Error("THREE.MMDAnimationHelper._setupAudio: Audio '" + audio.name + "' has already been set."); - } - if (this.audio) this.clearAudio(this.audio); - this.audio = audio; - this.audioManager = new AudioManager(audio, params); - this.objects.set(this.audioManager, { - duration: this.audioManager.duration - }); - return this; - } - _removeMesh(mesh) { - let found = false; - let writeIndex = 0; - for (let i = 0, il = this.meshes.length; i < il; i++) { - if (this.meshes[i] === mesh) { - this.objects.delete(mesh); - found = true; - continue; - } - this.meshes[writeIndex++] = this.meshes[i]; - } - if (!found) { - throw new Error("THREE.MMDAnimationHelper._removeMesh: SkinnedMesh '" + mesh.name + "' has not been added yet."); - } - this.meshes.length = writeIndex; - return this; - } - _clearCamera(camera) { - if (camera !== this.camera) { - throw new Error("THREE.MMDAnimationHelper._clearCamera: Camera '" + camera.name + "' has not been set yet."); - } - this.camera.remove(this.cameraTarget); - this.objects.delete(this.camera); - this.camera = null; - return this; - } - _clearAudio(audio) { - if (audio !== this.audio) { - throw new Error("THREE.MMDAnimationHelper._clearAudio: Audio '" + audio.name + "' has not been set yet."); - } - this.objects.delete(this.audioManager); - this.audio = null; - this.audioManager = null; - return this; - } - _setupMeshAnimation(mesh, animation) { - const objects = this.objects.get(mesh); - if (animation !== void 0) { - const animations = Array.isArray(animation) ? animation : [animation]; - objects.mixer = new AnimationMixer(mesh); - for (let i = 0, il = animations.length; i < il; i++) { - objects.mixer.clipAction(animations[i]).play(); - } - objects.mixer.addEventListener("loop", function(event) { - const tracks = event.action._clip.tracks; - if (tracks.length > 0 && tracks[0].name.slice(0, 6) !== ".bones") return; - objects.looped = true; - }); - } - objects.ikSolver = this._createCCDIKSolver(mesh); - objects.grantSolver = this.createGrantSolver(mesh); - return this; - } - _setupCameraAnimation(camera, animation) { - const animations = Array.isArray(animation) ? animation : [animation]; - const objects = this.objects.get(camera); - objects.mixer = new AnimationMixer(camera); - for (let i = 0, il = animations.length; i < il; i++) { - objects.mixer.clipAction(animations[i]).play(); - } - } - _setupMeshPhysics(mesh, params) { - const objects = this.objects.get(mesh); - if (params.world === void 0 && this.sharedPhysics) { - const masterPhysics = this._getMasterPhysics(); - if (masterPhysics !== null) world = masterPhysics.world; - } - objects.physics = this._createMMDPhysics(mesh, params); - if (objects.mixer && params.animationWarmup !== false) { - this._animateMesh(mesh, 0); - objects.physics.reset(); - } - objects.physics.warmup(params.warmup !== void 0 ? params.warmup : 60); - this._optimizeIK(mesh, true); - } - _animateMesh(mesh, delta) { - const objects = this.objects.get(mesh); - const mixer = objects.mixer; - const ikSolver = objects.ikSolver; - const grantSolver = objects.grantSolver; - const physics = objects.physics; - const looped = objects.looped; - if (mixer && this.enabled.animation) { - this._restoreBones(mesh); - mixer.update(delta); - this._saveBones(mesh); - if (this.configuration.pmxAnimation && mesh.geometry.userData.MMD && mesh.geometry.userData.MMD.format === "pmx") { - if (!objects.sortedBonesData) objects.sortedBonesData = this._sortBoneDataArray(mesh.geometry.userData.MMD.bones.slice()); - this._animatePMXMesh( - mesh, - objects.sortedBonesData, - ikSolver && this.enabled.ik ? ikSolver : null, - grantSolver && this.enabled.grant ? grantSolver : null - ); - } else { - if (ikSolver && this.enabled.ik) { - mesh.updateMatrixWorld(true); - ikSolver.update(); - } - if (grantSolver && this.enabled.grant) { - grantSolver.update(); - } - } - } - if (looped === true && this.enabled.physics) { - if (physics && this.configuration.resetPhysicsOnLoop) physics.reset(); - objects.looped = false; - } - if (physics && this.enabled.physics && !this.sharedPhysics) { - this.onBeforePhysics(mesh); - physics.update(delta); - } - } - // Sort bones in order by 1. transformationClass and 2. bone index. - // In PMX animation system, bone transformations should be processed - // in this order. - _sortBoneDataArray(boneDataArray) { - return boneDataArray.sort(function(a2, b3) { - if (a2.transformationClass !== b3.transformationClass) { - return a2.transformationClass - b3.transformationClass; - } else { - return a2.index - b3.index; - } - }); - } - // PMX Animation system is a bit too complex and doesn't great match to - // Three.js Animation system. This method attempts to simulate it as much as - // possible but doesn't perfectly simulate. - // This method is more costly than the regular one so - // you are recommended to set constructor parameter "pmxAnimation: true" - // only if your PMX model animation doesn't work well. - // If you need better method you would be required to write your own. - _animatePMXMesh(mesh, sortedBonesData, ikSolver, grantSolver) { - _quaternionIndex = 0; - _grantResultMap.clear(); - for (let i = 0, il = sortedBonesData.length; i < il; i++) { - updateOne(mesh, sortedBonesData[i].index, ikSolver, grantSolver); - } - mesh.updateMatrixWorld(true); - return this; - } - _animateCamera(camera, delta) { - const mixer = this.objects.get(camera).mixer; - if (mixer && this.enabled.cameraAnimation) { - mixer.update(delta); - camera.updateProjectionMatrix(); - camera.up.set(0, 1, 0); - camera.up.applyQuaternion(camera.quaternion); - camera.lookAt(this.cameraTarget.position); - } - } - _optimizeIK(mesh, physicsEnabled) { - const iks = mesh.geometry.userData.MMD.iks; - const bones = mesh.geometry.userData.MMD.bones; - for (let i = 0, il = iks.length; i < il; i++) { - const ik = iks[i]; - const links = ik.links; - for (let j = 0, jl = links.length; j < jl; j++) { - const link = links[j]; - if (physicsEnabled === true) { - link.enabled = bones[link.index].rigidBodyType > 0 ? false : true; - } else { - link.enabled = true; - } - } - } - } - _createCCDIKSolver(mesh) { - if (CCDIKSolver === void 0) { - throw new Error("THREE.MMDAnimationHelper: Import CCDIKSolver."); - } - return new CCDIKSolver(mesh, mesh.geometry.userData.MMD.iks); - } - _createMMDPhysics(mesh, params) { - if (MMDPhysics === void 0) { - throw new Error("THREE.MMDPhysics: Import MMDPhysics."); - } - return new MMDPhysics( - mesh, - mesh.geometry.userData.MMD.rigidBodies, - mesh.geometry.userData.MMD.constraints, - params - ); - } - /* - * Detects the longest duration and then sets it to them to sync. - * TODO: Not to access private properties ( ._actions and ._clip ) - */ - _syncDuration() { - let max2 = 0; - const objects = this.objects; - const meshes = this.meshes; - const camera = this.camera; - const audioManager = this.audioManager; - for (let i = 0, il = meshes.length; i < il; i++) { - const mixer = this.objects.get(meshes[i]).mixer; - if (mixer === void 0) continue; - for (let j = 0; j < mixer._actions.length; j++) { - const clip = mixer._actions[j]._clip; - if (!objects.has(clip)) { - objects.set(clip, { - duration: clip.duration - }); - } - max2 = Math.max(max2, objects.get(clip).duration); - } - } - if (camera !== null) { - const mixer = this.objects.get(camera).mixer; - if (mixer !== void 0) { - for (let i = 0, il = mixer._actions.length; i < il; i++) { - const clip = mixer._actions[i]._clip; - if (!objects.has(clip)) { - objects.set(clip, { - duration: clip.duration - }); - } - max2 = Math.max(max2, objects.get(clip).duration); - } - } - } - if (audioManager !== null) { - max2 = Math.max(max2, objects.get(audioManager).duration); - } - max2 += this.configuration.afterglow; - for (let i = 0, il = this.meshes.length; i < il; i++) { - const mixer = this.objects.get(this.meshes[i]).mixer; - if (mixer === void 0) continue; - for (let j = 0, jl = mixer._actions.length; j < jl; j++) { - mixer._actions[j]._clip.duration = max2; - } - } - if (camera !== null) { - const mixer = this.objects.get(camera).mixer; - if (mixer !== void 0) { - for (let i = 0, il = mixer._actions.length; i < il; i++) { - mixer._actions[i]._clip.duration = max2; - } - } - } - if (audioManager !== null) { - audioManager.duration = max2; - } - } - // workaround - _updatePropertyMixersBuffer(mesh) { - const mixer = this.objects.get(mesh).mixer; - const propertyMixers = mixer._bindings; - const accuIndex = mixer._accuIndex; - for (let i = 0, il = propertyMixers.length; i < il; i++) { - const propertyMixer = propertyMixers[i]; - const buffer = propertyMixer.buffer; - const stride = propertyMixer.valueSize; - const offset = (accuIndex + 1) * stride; - propertyMixer.binding.getValue(buffer, offset); - } - } - /* - * Avoiding these two issues by restore/save bones before/after mixer animation. - * - * 1. PropertyMixer used by AnimationMixer holds cache value in .buffer. - * Calculating IK, Grant, and Physics after mixer animation can break - * the cache coherency. - * - * 2. Applying Grant two or more times without reset the posing breaks model. - */ - _saveBones(mesh) { - const objects = this.objects.get(mesh); - const bones = mesh.skeleton.bones; - let backupBones = objects.backupBones; - if (backupBones === void 0) { - backupBones = new Float32Array(bones.length * 7); - objects.backupBones = backupBones; - } - for (let i = 0, il = bones.length; i < il; i++) { - const bone = bones[i]; - bone.position.toArray(backupBones, i * 7); - bone.quaternion.toArray(backupBones, i * 7 + 3); - } - } - _restoreBones(mesh) { - const objects = this.objects.get(mesh); - const backupBones = objects.backupBones; - if (backupBones === void 0) return; - const bones = mesh.skeleton.bones; - for (let i = 0, il = bones.length; i < il; i++) { - const bone = bones[i]; - bone.position.fromArray(backupBones, i * 7); - bone.quaternion.fromArray(backupBones, i * 7 + 3); - } - } - // experimental - _getMasterPhysics() { - if (this.masterPhysics !== null) return this.masterPhysics; - for (let i = 0, il = this.meshes.length; i < il; i++) { - const physics = this.meshes[i].physics; - if (physics !== void 0 && physics !== null) { - this.masterPhysics = physics; - return this.masterPhysics; - } - } - return null; - } - _updateSharedPhysics(delta) { - if (this.meshes.length === 0 || !this.enabled.physics || !this.sharedPhysics) return; - const physics = this._getMasterPhysics(); - if (physics === null) return; - for (let i = 0, il = this.meshes.length; i < il; i++) { - const p2 = this.meshes[i].physics; - if (p2 !== null && p2 !== void 0) { - p2.updateRigidBodies(); - } - } - physics.stepSimulation(delta); - for (let i = 0, il = this.meshes.length; i < il; i++) { - const p2 = this.meshes[i].physics; - if (p2 !== null && p2 !== void 0) { - p2.updateBones(); - } - } - } -}; -var _quaternions = []; -var _quaternionIndex = 0; -function getQuaternion() { - if (_quaternionIndex >= _quaternions.length) { - _quaternions.push(new Quaternion()); - } - return _quaternions[_quaternionIndex++]; -} -var _grantResultMap = /* @__PURE__ */ new Map(); -function updateOne(mesh, boneIndex, ikSolver, grantSolver) { - const bones = mesh.skeleton.bones; - const bonesData = mesh.geometry.userData.MMD.bones; - const boneData = bonesData[boneIndex]; - const bone = bones[boneIndex]; - if (_grantResultMap.has(boneIndex)) return; - const quaternion = getQuaternion(); - _grantResultMap.set(boneIndex, quaternion.copy(bone.quaternion)); - if (grantSolver && boneData.grant && !boneData.grant.isLocal && boneData.grant.affectRotation) { - const parentIndex = boneData.grant.parentIndex; - const ratio = boneData.grant.ratio; - if (!_grantResultMap.has(parentIndex)) { - updateOne(mesh, parentIndex, ikSolver, grantSolver); - } - grantSolver.addGrantRotation(bone, _grantResultMap.get(parentIndex), ratio); - } - if (ikSolver && boneData.ik) { - mesh.updateMatrixWorld(true); - ikSolver.updateOne(boneData.ik); - const links = boneData.ik.links; - for (let i = 0, il = links.length; i < il; i++) { - const link = links[i]; - if (link.enabled === false) continue; - const linkIndex = link.index; - if (_grantResultMap.has(linkIndex)) { - _grantResultMap.set(linkIndex, _grantResultMap.get(linkIndex).copy(bones[linkIndex].quaternion)); - } - } - } - quaternion.copy(bone.quaternion); -} -var AudioManager = class { - /** - * @param {THREE.Audio} audio - * @param {Object} params - (optional) - * @param {Nuumber} params.delayTime - */ - constructor(audio, params = {}) { - this.audio = audio; - this.elapsedTime = 0; - this.currentTime = 0; - this.delayTime = params.delayTime !== void 0 ? params.delayTime : 0; - this.audioDuration = this.audio.buffer.duration; - this.duration = this.audioDuration + this.delayTime; - } - /** - * @param {Number} delta - * @return {AudioManager} - */ - control(delta) { - this.elapsed += delta; - this.currentTime += delta; - if (this._shouldStopAudio()) this.audio.stop(); - if (this._shouldStartAudio()) this.audio.play(); - return this; - } - // private methods - _shouldStartAudio() { - if (this.audio.isPlaying) return false; - while (this.currentTime >= this.duration) { - this.currentTime -= this.duration; - } - if (this.currentTime < this.delayTime) return false; - if (this.currentTime - this.delayTime > this.audioDuration) return false; - return true; - } - _shouldStopAudio() { - return this.audio.isPlaying && this.currentTime >= this.duration; - } -}; -var _q2 = new Quaternion(); -var GrantSolver = class { - constructor(mesh, grants = []) { - this.mesh = mesh; - this.grants = grants; - } - /** - * Solve all the grant bones - * @return {GrantSolver} - */ - update() { - const grants = this.grants; - for (let i = 0, il = grants.length; i < il; i++) { - this.updateOne(grants[i]); - } - return this; - } - /** - * Solve a grant bone - * @param {Object} grant - grant parameter - * @return {GrantSolver} - */ - updateOne(grant) { - const bones = this.mesh.skeleton.bones; - const bone = bones[grant.index]; - const parentBone = bones[grant.parentIndex]; - if (grant.isLocal) { - if (grant.affectPosition) { - } - if (grant.affectRotation) { - } - } else { - if (grant.affectPosition) { - } - if (grant.affectRotation) { - this.addGrantRotation(bone, parentBone.quaternion, grant.ratio); - } - } - return this; - } - addGrantRotation(bone, q2, ratio) { - _q2.set(0, 0, 0, 1); - _q2.slerp(q2, ratio); - bone.quaternion.multiply(_q2); - return this; - } -}; - -// node_modules/three/examples/jsm/shaders/BokehShader2.js -var BokehShader = { - name: "BokehShader", - uniforms: { - "textureWidth": { value: 1 }, - "textureHeight": { value: 1 }, - "focalDepth": { value: 1 }, - "focalLength": { value: 24 }, - "fstop": { value: 0.9 }, - "tColor": { value: null }, - "tDepth": { value: null }, - "maxblur": { value: 1 }, - "showFocus": { value: 0 }, - "manualdof": { value: 0 }, - "vignetting": { value: 0 }, - "depthblur": { value: 0 }, - "threshold": { value: 0.5 }, - "gain": { value: 2 }, - "bias": { value: 0.5 }, - "fringe": { value: 0.7 }, - "znear": { value: 0.1 }, - "zfar": { value: 100 }, - "noise": { value: 1 }, - "dithering": { value: 1e-4 }, - "pentagon": { value: 0 }, - "shaderFocus": { value: 1 }, - "focusCoords": { value: new Vector2() } - }, - vertexShader: ( - /* glsl */ - ` - - varying vec2 vUv; - - void main() { - - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); - - }` - ), - fragmentShader: ( - /* glsl */ - ` - - #include - - varying vec2 vUv; - - uniform sampler2D tColor; - uniform sampler2D tDepth; - uniform float textureWidth; - uniform float textureHeight; - - uniform float focalDepth; //focal distance value in meters, but you may use autofocus option below - uniform float focalLength; //focal length in mm - uniform float fstop; //f-stop value - uniform bool showFocus; //show debug focus point and focal range (red = focal point, green = focal range) - - /* - make sure that these two values are the same for your camera, otherwise distances will be wrong. - */ - - uniform float znear; // camera clipping start - uniform float zfar; // camera clipping end - - //------------------------------------------ - //user variables - - const int samples = SAMPLES; //samples on the first ring - const int rings = RINGS; //ring count - - const int maxringsamples = rings * samples; - - uniform bool manualdof; // manual dof calculation - float ndofstart = 1.0; // near dof blur start - float ndofdist = 2.0; // near dof blur falloff distance - float fdofstart = 1.0; // far dof blur start - float fdofdist = 3.0; // far dof blur falloff distance - - float CoC = 0.03; //circle of confusion size in mm (35mm film = 0.03mm) - - uniform bool vignetting; // use optical lens vignetting - - float vignout = 1.3; // vignetting outer border - float vignin = 0.0; // vignetting inner border - float vignfade = 22.0; // f-stops till vignete fades - - uniform bool shaderFocus; - // disable if you use external focalDepth value - - uniform vec2 focusCoords; - // autofocus point on screen (0.0,0.0 - left lower corner, 1.0,1.0 - upper right) - // if center of screen use vec2(0.5, 0.5); - - uniform float maxblur; - //clamp value of max blur (0.0 = no blur, 1.0 default) - - uniform float threshold; // highlight threshold; - uniform float gain; // highlight gain; - - uniform float bias; // bokeh edge bias - uniform float fringe; // bokeh chromatic aberration / fringing - - uniform bool noise; //use noise instead of pattern for sample dithering - - uniform float dithering; - - uniform bool depthblur; // blur the depth buffer - float dbsize = 1.25; // depth blur size - - /* - next part is experimental - not looking good with small sample and ring count - looks okay starting from samples = 4, rings = 4 - */ - - uniform bool pentagon; //use pentagon as bokeh shape? - float feather = 0.4; //pentagon shape feather - - //------------------------------------------ - - float penta(vec2 coords) { - //pentagonal shape - float scale = float(rings) - 1.3; - vec4 HS0 = vec4( 1.0, 0.0, 0.0, 1.0); - vec4 HS1 = vec4( 0.309016994, 0.951056516, 0.0, 1.0); - vec4 HS2 = vec4(-0.809016994, 0.587785252, 0.0, 1.0); - vec4 HS3 = vec4(-0.809016994,-0.587785252, 0.0, 1.0); - vec4 HS4 = vec4( 0.309016994,-0.951056516, 0.0, 1.0); - vec4 HS5 = vec4( 0.0 ,0.0 , 1.0, 1.0); - - vec4 one = vec4( 1.0 ); - - vec4 P = vec4((coords),vec2(scale, scale)); - - vec4 dist = vec4(0.0); - float inorout = -4.0; - - dist.x = dot( P, HS0 ); - dist.y = dot( P, HS1 ); - dist.z = dot( P, HS2 ); - dist.w = dot( P, HS3 ); - - dist = smoothstep( -feather, feather, dist ); - - inorout += dot( dist, one ); - - dist.x = dot( P, HS4 ); - dist.y = HS5.w - abs( P.z ); - - dist = smoothstep( -feather, feather, dist ); - inorout += dist.x; - - return clamp( inorout, 0.0, 1.0 ); - } - - float bdepth(vec2 coords) { - // Depth buffer blur - float d = 0.0; - float kernel[9]; - vec2 offset[9]; - - vec2 wh = vec2(1.0/textureWidth,1.0/textureHeight) * dbsize; - - offset[0] = vec2(-wh.x,-wh.y); - offset[1] = vec2( 0.0, -wh.y); - offset[2] = vec2( wh.x -wh.y); - - offset[3] = vec2(-wh.x, 0.0); - offset[4] = vec2( 0.0, 0.0); - offset[5] = vec2( wh.x, 0.0); - - offset[6] = vec2(-wh.x, wh.y); - offset[7] = vec2( 0.0, wh.y); - offset[8] = vec2( wh.x, wh.y); - - kernel[0] = 1.0/16.0; kernel[1] = 2.0/16.0; kernel[2] = 1.0/16.0; - kernel[3] = 2.0/16.0; kernel[4] = 4.0/16.0; kernel[5] = 2.0/16.0; - kernel[6] = 1.0/16.0; kernel[7] = 2.0/16.0; kernel[8] = 1.0/16.0; - - - for( int i=0; i<9; i++ ) { - float tmp = texture2D(tDepth, coords + offset[i]).r; - d += tmp * kernel[i]; - } - - return d; - } - - - vec3 color(vec2 coords,float blur) { - //processing the sample - - vec3 col = vec3(0.0); - vec2 texel = vec2(1.0/textureWidth,1.0/textureHeight); - - col.r = texture2D(tColor,coords + vec2(0.0,1.0)*texel*fringe*blur).r; - col.g = texture2D(tColor,coords + vec2(-0.866,-0.5)*texel*fringe*blur).g; - col.b = texture2D(tColor,coords + vec2(0.866,-0.5)*texel*fringe*blur).b; - - vec3 lumcoeff = vec3(0.299,0.587,0.114); - float lum = dot(col.rgb, lumcoeff); - float thresh = max((lum-threshold)*gain, 0.0); - return col+mix(vec3(0.0),col,thresh*blur); - } - - vec3 debugFocus(vec3 col, float blur, float depth) { - float edge = 0.002*depth; //distance based edge smoothing - float m = clamp(smoothstep(0.0,edge,blur),0.0,1.0); - float e = clamp(smoothstep(1.0-edge,1.0,blur),0.0,1.0); - - col = mix(col,vec3(1.0,0.5,0.0),(1.0-m)*0.6); - col = mix(col,vec3(0.0,0.5,1.0),((1.0-e)-(1.0-m))*0.2); - - return col; - } - - float linearize(float depth) { - return -zfar * znear / (depth * (zfar - znear) - zfar); - } - - float vignette() { - float dist = distance(vUv.xy, vec2(0.5,0.5)); - dist = smoothstep(vignout+(fstop/vignfade), vignin+(fstop/vignfade), dist); - return clamp(dist,0.0,1.0); - } - - float gather(float i, float j, int ringsamples, inout vec3 col, float w, float h, float blur) { - float rings2 = float(rings); - float step = PI*2.0 / float(ringsamples); - float pw = cos(j*step)*i; - float ph = sin(j*step)*i; - float p = 1.0; - if (pentagon) { - p = penta(vec2(pw,ph)); - } - col += color(vUv.xy + vec2(pw*w,ph*h), blur) * mix(1.0, i/rings2, bias) * p; - return 1.0 * mix(1.0, i /rings2, bias) * p; - } - - void main() { - //scene depth calculation - - float depth = linearize(texture2D(tDepth,vUv.xy).x); - - // Blur depth? - if ( depthblur ) { - depth = linearize(bdepth(vUv.xy)); - } - - //focal plane calculation - - float fDepth = focalDepth; - - if (shaderFocus) { - - fDepth = linearize(texture2D(tDepth,focusCoords).x); - - } - - // dof blur factor calculation - - float blur = 0.0; - - if (manualdof) { - float a = depth-fDepth; // Focal plane - float b = (a-fdofstart)/fdofdist; // Far DoF - float c = (-a-ndofstart)/ndofdist; // Near Dof - blur = (a>0.0) ? b : c; - } else { - float f = focalLength; // focal length in mm - float d = fDepth*1000.0; // focal plane in mm - float o = depth*1000.0; // depth in mm - - float a = (o*f)/(o-f); - float b = (d*f)/(d-f); - float c = (d-f)/(d*fstop*CoC); - - blur = abs(a-b)*c; - } - - blur = clamp(blur,0.0,1.0); - - // calculation of pattern for dithering - - vec2 noise = vec2(rand(vUv.xy), rand( vUv.xy + vec2( 0.4, 0.6 ) ) )*dithering*blur; - - // getting blur x and y step factor - - float w = (1.0/textureWidth)*blur*maxblur+noise.x; - float h = (1.0/textureHeight)*blur*maxblur+noise.y; - - // calculation of final color - - vec3 col = vec3(0.0); - - if(blur < 0.05) { - //some optimization thingy - col = texture2D(tColor, vUv.xy).rgb; - } else { - col = texture2D(tColor, vUv.xy).rgb; - float s = 1.0; - int ringsamples; - - for (int i = 1; i <= rings; i++) { - /*unboxstart*/ - ringsamples = i * samples; - - for (int j = 0 ; j < maxringsamples ; j++) { - if (j >= ringsamples) break; - s += gather(float(i), float(j), ringsamples, col, w, h, blur); - } - /*unboxend*/ - } - - col /= s; //divide by sample count - } - - if (showFocus) { - col = debugFocus(col, blur, depth); - } - - if (vignetting) { - col *= vignette(); - } - - gl_FragColor.rgb = col; - gl_FragColor.a = 1.0; - - #include - #include - }` - ) -}; -var BokehDepthShader = { - name: "BokehDepthShader", - uniforms: { - "mNear": { value: 1 }, - "mFar": { value: 1e3 } - }, - vertexShader: ( - /* glsl */ - ` - - varying float vViewZDepth; - - void main() { - - #include - #include - - vViewZDepth = - mvPosition.z; - - }` - ), - fragmentShader: ( - /* glsl */ - ` - - uniform float mNear; - uniform float mFar; - - varying float vViewZDepth; - - void main() { - - float color = 1.0 - smoothstep( mNear, mFar, vViewZDepth ); - gl_FragColor = vec4( vec3( color ), 1.0 ); - - }` - ) -}; - -// node_modules/three/examples/jsm/cameras/CinematicCamera.js -var CinematicCamera = class extends PerspectiveCamera { - constructor(fov, aspect, near, far) { - super(fov, aspect, near, far); - this.type = "CinematicCamera"; - this.postprocessing = { enabled: true }; - this.shaderSettings = { - rings: 3, - samples: 4 - }; - const depthShader = BokehDepthShader; - this.materialDepth = new ShaderMaterial({ - uniforms: depthShader.uniforms, - vertexShader: depthShader.vertexShader, - fragmentShader: depthShader.fragmentShader - }); - this.materialDepth.uniforms["mNear"].value = near; - this.materialDepth.uniforms["mFar"].value = far; - this.setLens(); - this.initPostProcessing(); - } - // providing fnumber and coc(Circle of Confusion) as extra arguments - // In case of cinematicCamera, having a default lens set is important - // if fnumber and coc are not provided, cinematicCamera tries to act as a basic PerspectiveCamera - setLens(focalLength = 35, filmGauge = 35, fNumber = 8, coc = 0.019) { - this.filmGauge = filmGauge; - this.setFocalLength(focalLength); - this.fNumber = fNumber; - this.coc = coc; - this.aperture = focalLength / this.fNumber; - this.hyperFocal = focalLength * focalLength / (this.aperture * this.coc); - } - linearize(depth) { - const zfar = this.far; - const znear = this.near; - return -zfar * znear / (depth * (zfar - znear) - zfar); - } - smoothstep(near, far, depth) { - const x2 = this.saturate((depth - near) / (far - near)); - return x2 * x2 * (3 - 2 * x2); - } - saturate(x2) { - return Math.max(0, Math.min(1, x2)); - } - // function for focusing at a distance from the camera - focusAt(focusDistance = 20) { - const focalLength = this.getFocalLength(); - this.focus = focusDistance; - this.nearPoint = this.hyperFocal * this.focus / (this.hyperFocal + (this.focus - focalLength)); - this.farPoint = this.hyperFocal * this.focus / (this.hyperFocal - (this.focus - focalLength)); - this.depthOfField = this.farPoint - this.nearPoint; - if (this.depthOfField < 0) this.depthOfField = 0; - this.sdistance = this.smoothstep(this.near, this.far, this.focus); - this.ldistance = this.linearize(1 - this.sdistance); - this.postprocessing.bokeh_uniforms["focalDepth"].value = this.ldistance; - } - initPostProcessing() { - if (this.postprocessing.enabled) { - this.postprocessing.scene = new Scene(); - this.postprocessing.camera = new OrthographicCamera(window.innerWidth / -2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / -2, -1e4, 1e4); - this.postprocessing.scene.add(this.postprocessing.camera); - this.postprocessing.rtTextureDepth = new WebGLRenderTarget(window.innerWidth, window.innerHeight); - this.postprocessing.rtTextureColor = new WebGLRenderTarget(window.innerWidth, window.innerHeight); - const bokeh_shader = BokehShader; - this.postprocessing.bokeh_uniforms = UniformsUtils.clone(bokeh_shader.uniforms); - this.postprocessing.bokeh_uniforms["tColor"].value = this.postprocessing.rtTextureColor.texture; - this.postprocessing.bokeh_uniforms["tDepth"].value = this.postprocessing.rtTextureDepth.texture; - this.postprocessing.bokeh_uniforms["manualdof"].value = 0; - this.postprocessing.bokeh_uniforms["shaderFocus"].value = 0; - this.postprocessing.bokeh_uniforms["fstop"].value = 2.8; - this.postprocessing.bokeh_uniforms["showFocus"].value = 1; - this.postprocessing.bokeh_uniforms["focalDepth"].value = 0.1; - this.postprocessing.bokeh_uniforms["znear"].value = this.near; - this.postprocessing.bokeh_uniforms["zfar"].value = this.near; - this.postprocessing.bokeh_uniforms["textureWidth"].value = window.innerWidth; - this.postprocessing.bokeh_uniforms["textureHeight"].value = window.innerHeight; - this.postprocessing.materialBokeh = new ShaderMaterial({ - uniforms: this.postprocessing.bokeh_uniforms, - vertexShader: bokeh_shader.vertexShader, - fragmentShader: bokeh_shader.fragmentShader, - defines: { - RINGS: this.shaderSettings.rings, - SAMPLES: this.shaderSettings.samples, - DEPTH_PACKING: 1 - } - }); - this.postprocessing.quad = new Mesh(new PlaneGeometry(window.innerWidth, window.innerHeight), this.postprocessing.materialBokeh); - this.postprocessing.quad.position.z = -500; - this.postprocessing.scene.add(this.postprocessing.quad); - } - } - renderCinematic(scene, renderer2) { - if (this.postprocessing.enabled) { - const currentRenderTarget = renderer2.getRenderTarget(); - renderer2.clear(); - scene.overrideMaterial = null; - renderer2.setRenderTarget(this.postprocessing.rtTextureColor); - renderer2.clear(); - renderer2.render(scene, this); - scene.overrideMaterial = this.materialDepth; - renderer2.setRenderTarget(this.postprocessing.rtTextureDepth); - renderer2.clear(); - renderer2.render(scene, this); - renderer2.setRenderTarget(null); - renderer2.render(this.postprocessing.scene, this.postprocessing.camera); - renderer2.setRenderTarget(currentRenderTarget); - } - } -}; - -// node_modules/three/examples/jsm/capabilities/WebGL.js -var WebGL = class { - static isWebGLAvailable() { - try { - const canvas = document.createElement("canvas"); - return !!(window.WebGLRenderingContext && (canvas.getContext("webgl") || canvas.getContext("experimental-webgl"))); - } catch (e) { - return false; - } - } - static isWebGL2Available() { - try { - const canvas = document.createElement("canvas"); - return !!(window.WebGL2RenderingContext && canvas.getContext("webgl2")); - } catch (e) { - return false; - } - } - static isColorSpaceAvailable(colorSpace) { - try { - const canvas = document.createElement("canvas"); - const ctx = window.WebGL2RenderingContext && canvas.getContext("webgl2"); - ctx.drawingBufferColorSpace = colorSpace; - return ctx.drawingBufferColorSpace === colorSpace; - } catch (e) { - return false; - } - } - static getWebGLErrorMessage() { - return this.getErrorMessage(1); - } - static getWebGL2ErrorMessage() { - return this.getErrorMessage(2); - } - static getErrorMessage(version) { - const names = { - 1: "WebGL", - 2: "WebGL 2" - }; - const contexts = { - 1: window.WebGLRenderingContext, - 2: window.WebGL2RenderingContext - }; - let message = 'Your $0 does not seem to support $1'; - const element = document.createElement("div"); - element.id = "webglmessage"; - element.style.fontFamily = "monospace"; - element.style.fontSize = "13px"; - element.style.fontWeight = "normal"; - element.style.textAlign = "center"; - element.style.background = "#fff"; - element.style.color = "#000"; - element.style.padding = "1.5em"; - element.style.width = "400px"; - element.style.margin = "5em auto 0"; - if (contexts[version]) { - message = message.replace("$0", "graphics card"); - } else { - message = message.replace("$0", "browser"); - } - message = message.replace("$1", names[version]); - element.innerHTML = message; - return element; - } -}; -var WebGL_default = WebGL; - -// node_modules/three/examples/jsm/controls/ArcballControls.js -var STATE = { - IDLE: Symbol(), - ROTATE: Symbol(), - PAN: Symbol(), - SCALE: Symbol(), - FOV: Symbol(), - FOCUS: Symbol(), - ZROTATE: Symbol(), - TOUCH_MULTI: Symbol(), - ANIMATION_FOCUS: Symbol(), - ANIMATION_ROTATE: Symbol() -}; -var INPUT = { - NONE: Symbol(), - ONE_FINGER: Symbol(), - ONE_FINGER_SWITCHED: Symbol(), - TWO_FINGER: Symbol(), - MULT_FINGER: Symbol(), - CURSOR: Symbol() -}; -var _center = { - x: 0, - y: 0 -}; -var _transformation = { - camera: new Matrix4(), - gizmos: new Matrix4() -}; -var _changeEvent = { type: "change" }; -var _startEvent = { type: "start" }; -var _endEvent = { type: "end" }; -var _raycaster = new Raycaster(); -var _offset = new Vector3(); -var _gizmoMatrixStateTemp = new Matrix4(); -var _cameraMatrixStateTemp = new Matrix4(); -var _scalePointTemp = new Vector3(); -var ArcballControls = class extends EventDispatcher { - constructor(camera, domElement, scene = null) { - super(); - this.camera = null; - this.domElement = domElement; - this.scene = scene; - this.target = new Vector3(); - this._currentTarget = new Vector3(); - this.radiusFactor = 0.67; - this.mouseActions = []; - this._mouseOp = null; - this._v2_1 = new Vector2(); - this._v3_1 = new Vector3(); - this._v3_2 = new Vector3(); - this._m4_1 = new Matrix4(); - this._m4_2 = new Matrix4(); - this._quat = new Quaternion(); - this._translationMatrix = new Matrix4(); - this._rotationMatrix = new Matrix4(); - this._scaleMatrix = new Matrix4(); - this._rotationAxis = new Vector3(); - this._cameraMatrixState = new Matrix4(); - this._cameraProjectionState = new Matrix4(); - this._fovState = 1; - this._upState = new Vector3(); - this._zoomState = 1; - this._nearPos = 0; - this._farPos = 0; - this._gizmoMatrixState = new Matrix4(); - this._up0 = new Vector3(); - this._zoom0 = 1; - this._fov0 = 0; - this._initialNear = 0; - this._nearPos0 = 0; - this._initialFar = 0; - this._farPos0 = 0; - this._cameraMatrixState0 = new Matrix4(); - this._gizmoMatrixState0 = new Matrix4(); - this._button = -1; - this._touchStart = []; - this._touchCurrent = []; - this._input = INPUT.NONE; - this._switchSensibility = 32; - this._startFingerDistance = 0; - this._currentFingerDistance = 0; - this._startFingerRotation = 0; - this._currentFingerRotation = 0; - this._devPxRatio = 0; - this._downValid = true; - this._nclicks = 0; - this._downEvents = []; - this._downStart = 0; - this._clickStart = 0; - this._maxDownTime = 250; - this._maxInterval = 300; - this._posThreshold = 24; - this._movementThreshold = 24; - this._currentCursorPosition = new Vector3(); - this._startCursorPosition = new Vector3(); - this._grid = null; - this._gridPosition = new Vector3(); - this._gizmos = new Group(); - this._curvePts = 128; - this._timeStart = -1; - this._animationId = -1; - this.focusAnimationTime = 500; - this._timePrev = 0; - this._timeCurrent = 0; - this._anglePrev = 0; - this._angleCurrent = 0; - this._cursorPosPrev = new Vector3(); - this._cursorPosCurr = new Vector3(); - this._wPrev = 0; - this._wCurr = 0; - this.adjustNearFar = false; - this.scaleFactor = 1.1; - this.dampingFactor = 25; - this.wMax = 20; - this.enableAnimations = true; - this.enableGrid = false; - this.cursorZoom = false; - this.minFov = 5; - this.maxFov = 90; - this.rotateSpeed = 1; - this.enabled = true; - this.enablePan = true; - this.enableRotate = true; - this.enableZoom = true; - this.enableGizmos = true; - this.minDistance = 0; - this.maxDistance = Infinity; - this.minZoom = 0; - this.maxZoom = Infinity; - this._tbRadius = 1; - this._state = STATE.IDLE; - this.setCamera(camera); - if (this.scene != null) { - this.scene.add(this._gizmos); - } - this.domElement.style.touchAction = "none"; - this._devPxRatio = window.devicePixelRatio; - this.initializeMouseActions(); - this._onContextMenu = onContextMenu.bind(this); - this._onWheel = onWheel.bind(this); - this._onPointerUp = onPointerUp.bind(this); - this._onPointerMove = onPointerMove.bind(this); - this._onPointerDown = onPointerDown.bind(this); - this._onPointerCancel = onPointerCancel.bind(this); - this._onWindowResize = onWindowResize.bind(this); - this.domElement.addEventListener("contextmenu", this._onContextMenu); - this.domElement.addEventListener("wheel", this._onWheel); - this.domElement.addEventListener("pointerdown", this._onPointerDown); - this.domElement.addEventListener("pointercancel", this._onPointerCancel); - window.addEventListener("resize", this._onWindowResize); - } - onSinglePanStart(event, operation) { - if (this.enabled) { - this.dispatchEvent(_startEvent); - this.setCenter(event.clientX, event.clientY); - switch (operation) { - case "PAN": - if (!this.enablePan) { - return; - } - if (this._animationId != -1) { - cancelAnimationFrame(this._animationId); - this._animationId = -1; - this._timeStart = -1; - this.activateGizmos(false); - this.dispatchEvent(_changeEvent); - } - this.updateTbState(STATE.PAN, true); - this._startCursorPosition.copy(this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement)); - if (this.enableGrid) { - this.drawGrid(); - this.dispatchEvent(_changeEvent); - } - break; - case "ROTATE": - if (!this.enableRotate) { - return; - } - if (this._animationId != -1) { - cancelAnimationFrame(this._animationId); - this._animationId = -1; - this._timeStart = -1; - } - this.updateTbState(STATE.ROTATE, true); - this._startCursorPosition.copy(this.unprojectOnTbSurface(this.camera, _center.x, _center.y, this.domElement, this._tbRadius)); - this.activateGizmos(true); - if (this.enableAnimations) { - this._timePrev = this._timeCurrent = performance.now(); - this._angleCurrent = this._anglePrev = 0; - this._cursorPosPrev.copy(this._startCursorPosition); - this._cursorPosCurr.copy(this._cursorPosPrev); - this._wCurr = 0; - this._wPrev = this._wCurr; - } - this.dispatchEvent(_changeEvent); - break; - case "FOV": - if (!this.camera.isPerspectiveCamera || !this.enableZoom) { - return; - } - if (this._animationId != -1) { - cancelAnimationFrame(this._animationId); - this._animationId = -1; - this._timeStart = -1; - this.activateGizmos(false); - this.dispatchEvent(_changeEvent); - } - this.updateTbState(STATE.FOV, true); - this._startCursorPosition.setY(this.getCursorNDC(_center.x, _center.y, this.domElement).y * 0.5); - this._currentCursorPosition.copy(this._startCursorPosition); - break; - case "ZOOM": - if (!this.enableZoom) { - return; - } - if (this._animationId != -1) { - cancelAnimationFrame(this._animationId); - this._animationId = -1; - this._timeStart = -1; - this.activateGizmos(false); - this.dispatchEvent(_changeEvent); - } - this.updateTbState(STATE.SCALE, true); - this._startCursorPosition.setY(this.getCursorNDC(_center.x, _center.y, this.domElement).y * 0.5); - this._currentCursorPosition.copy(this._startCursorPosition); - break; - } - } - } - onSinglePanMove(event, opState) { - if (this.enabled) { - const restart = opState != this._state; - this.setCenter(event.clientX, event.clientY); - switch (opState) { - case STATE.PAN: - if (this.enablePan) { - if (restart) { - this.dispatchEvent(_endEvent); - this.dispatchEvent(_startEvent); - this.updateTbState(opState, true); - this._startCursorPosition.copy(this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement)); - if (this.enableGrid) { - this.drawGrid(); - } - this.activateGizmos(false); - } else { - this._currentCursorPosition.copy(this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement)); - this.applyTransformMatrix(this.pan(this._startCursorPosition, this._currentCursorPosition)); - } - } - break; - case STATE.ROTATE: - if (this.enableRotate) { - if (restart) { - this.dispatchEvent(_endEvent); - this.dispatchEvent(_startEvent); - this.updateTbState(opState, true); - this._startCursorPosition.copy(this.unprojectOnTbSurface(this.camera, _center.x, _center.y, this.domElement, this._tbRadius)); - if (this.enableGrid) { - this.disposeGrid(); - } - this.activateGizmos(true); - } else { - this._currentCursorPosition.copy(this.unprojectOnTbSurface(this.camera, _center.x, _center.y, this.domElement, this._tbRadius)); - const distance = this._startCursorPosition.distanceTo(this._currentCursorPosition); - const angle = this._startCursorPosition.angleTo(this._currentCursorPosition); - const amount = Math.max(distance / this._tbRadius, angle) * this.rotateSpeed; - this.applyTransformMatrix(this.rotate(this.calculateRotationAxis(this._startCursorPosition, this._currentCursorPosition), amount)); - if (this.enableAnimations) { - this._timePrev = this._timeCurrent; - this._timeCurrent = performance.now(); - this._anglePrev = this._angleCurrent; - this._angleCurrent = amount; - this._cursorPosPrev.copy(this._cursorPosCurr); - this._cursorPosCurr.copy(this._currentCursorPosition); - this._wPrev = this._wCurr; - this._wCurr = this.calculateAngularSpeed(this._anglePrev, this._angleCurrent, this._timePrev, this._timeCurrent); - } - } - } - break; - case STATE.SCALE: - if (this.enableZoom) { - if (restart) { - this.dispatchEvent(_endEvent); - this.dispatchEvent(_startEvent); - this.updateTbState(opState, true); - this._startCursorPosition.setY(this.getCursorNDC(_center.x, _center.y, this.domElement).y * 0.5); - this._currentCursorPosition.copy(this._startCursorPosition); - if (this.enableGrid) { - this.disposeGrid(); - } - this.activateGizmos(false); - } else { - const screenNotches = 8; - this._currentCursorPosition.setY(this.getCursorNDC(_center.x, _center.y, this.domElement).y * 0.5); - const movement = this._currentCursorPosition.y - this._startCursorPosition.y; - let size2 = 1; - if (movement < 0) { - size2 = 1 / Math.pow(this.scaleFactor, -movement * screenNotches); - } else if (movement > 0) { - size2 = Math.pow(this.scaleFactor, movement * screenNotches); - } - this._v3_1.setFromMatrixPosition(this._gizmoMatrixState); - this.applyTransformMatrix(this.scale(size2, this._v3_1)); - } - } - break; - case STATE.FOV: - if (this.enableZoom && this.camera.isPerspectiveCamera) { - if (restart) { - this.dispatchEvent(_endEvent); - this.dispatchEvent(_startEvent); - this.updateTbState(opState, true); - this._startCursorPosition.setY(this.getCursorNDC(_center.x, _center.y, this.domElement).y * 0.5); - this._currentCursorPosition.copy(this._startCursorPosition); - if (this.enableGrid) { - this.disposeGrid(); - } - this.activateGizmos(false); - } else { - const screenNotches = 8; - this._currentCursorPosition.setY(this.getCursorNDC(_center.x, _center.y, this.domElement).y * 0.5); - const movement = this._currentCursorPosition.y - this._startCursorPosition.y; - let size2 = 1; - if (movement < 0) { - size2 = 1 / Math.pow(this.scaleFactor, -movement * screenNotches); - } else if (movement > 0) { - size2 = Math.pow(this.scaleFactor, movement * screenNotches); - } - this._v3_1.setFromMatrixPosition(this._cameraMatrixState); - const x2 = this._v3_1.distanceTo(this._gizmos.position); - let xNew = x2 / size2; - xNew = MathUtils.clamp(xNew, this.minDistance, this.maxDistance); - const y2 = x2 * Math.tan(MathUtils.DEG2RAD * this._fovState * 0.5); - let newFov = MathUtils.RAD2DEG * (Math.atan(y2 / xNew) * 2); - newFov = MathUtils.clamp(newFov, this.minFov, this.maxFov); - const newDistance = y2 / Math.tan(MathUtils.DEG2RAD * (newFov / 2)); - size2 = x2 / newDistance; - this._v3_2.setFromMatrixPosition(this._gizmoMatrixState); - this.setFov(newFov); - this.applyTransformMatrix(this.scale(size2, this._v3_2, false)); - _offset.copy(this._gizmos.position).sub(this.camera.position).normalize().multiplyScalar(newDistance / x2); - this._m4_1.makeTranslation(_offset.x, _offset.y, _offset.z); - } - } - break; - } - this.dispatchEvent(_changeEvent); - } - } - onSinglePanEnd() { - if (this._state == STATE.ROTATE) { - if (!this.enableRotate) { - return; - } - if (this.enableAnimations) { - const deltaTime = performance.now() - this._timeCurrent; - if (deltaTime < 120) { - const w = Math.abs((this._wPrev + this._wCurr) / 2); - const self2 = this; - this._animationId = window.requestAnimationFrame(function(t3) { - self2.updateTbState(STATE.ANIMATION_ROTATE, true); - const rotationAxis = self2.calculateRotationAxis(self2._cursorPosPrev, self2._cursorPosCurr); - self2.onRotationAnim(t3, rotationAxis, Math.min(w, self2.wMax)); - }); - } else { - this.updateTbState(STATE.IDLE, false); - this.activateGizmos(false); - this.dispatchEvent(_changeEvent); - } - } else { - this.updateTbState(STATE.IDLE, false); - this.activateGizmos(false); - this.dispatchEvent(_changeEvent); - } - } else if (this._state == STATE.PAN || this._state == STATE.IDLE) { - this.updateTbState(STATE.IDLE, false); - if (this.enableGrid) { - this.disposeGrid(); - } - this.activateGizmos(false); - this.dispatchEvent(_changeEvent); - } - this.dispatchEvent(_endEvent); - } - onDoubleTap(event) { - if (this.enabled && this.enablePan && this.scene != null) { - this.dispatchEvent(_startEvent); - this.setCenter(event.clientX, event.clientY); - const hitP = this.unprojectOnObj(this.getCursorNDC(_center.x, _center.y, this.domElement), this.camera); - if (hitP != null && this.enableAnimations) { - const self2 = this; - if (this._animationId != -1) { - window.cancelAnimationFrame(this._animationId); - } - this._timeStart = -1; - this._animationId = window.requestAnimationFrame(function(t3) { - self2.updateTbState(STATE.ANIMATION_FOCUS, true); - self2.onFocusAnim(t3, hitP, self2._cameraMatrixState, self2._gizmoMatrixState); - }); - } else if (hitP != null && !this.enableAnimations) { - this.updateTbState(STATE.FOCUS, true); - this.focus(hitP, this.scaleFactor); - this.updateTbState(STATE.IDLE, false); - this.dispatchEvent(_changeEvent); - } - } - this.dispatchEvent(_endEvent); - } - onDoublePanStart() { - if (this.enabled && this.enablePan) { - this.dispatchEvent(_startEvent); - this.updateTbState(STATE.PAN, true); - this.setCenter((this._touchCurrent[0].clientX + this._touchCurrent[1].clientX) / 2, (this._touchCurrent[0].clientY + this._touchCurrent[1].clientY) / 2); - this._startCursorPosition.copy(this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement, true)); - this._currentCursorPosition.copy(this._startCursorPosition); - this.activateGizmos(false); - } - } - onDoublePanMove() { - if (this.enabled && this.enablePan) { - this.setCenter((this._touchCurrent[0].clientX + this._touchCurrent[1].clientX) / 2, (this._touchCurrent[0].clientY + this._touchCurrent[1].clientY) / 2); - if (this._state != STATE.PAN) { - this.updateTbState(STATE.PAN, true); - this._startCursorPosition.copy(this._currentCursorPosition); - } - this._currentCursorPosition.copy(this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement, true)); - this.applyTransformMatrix(this.pan(this._startCursorPosition, this._currentCursorPosition, true)); - this.dispatchEvent(_changeEvent); - } - } - onDoublePanEnd() { - this.updateTbState(STATE.IDLE, false); - this.dispatchEvent(_endEvent); - } - onRotateStart() { - if (this.enabled && this.enableRotate) { - this.dispatchEvent(_startEvent); - this.updateTbState(STATE.ZROTATE, true); - this._startFingerRotation = this.getAngle(this._touchCurrent[1], this._touchCurrent[0]) + this.getAngle(this._touchStart[1], this._touchStart[0]); - this._currentFingerRotation = this._startFingerRotation; - this.camera.getWorldDirection(this._rotationAxis); - if (!this.enablePan && !this.enableZoom) { - this.activateGizmos(true); - } - } - } - onRotateMove() { - if (this.enabled && this.enableRotate) { - this.setCenter((this._touchCurrent[0].clientX + this._touchCurrent[1].clientX) / 2, (this._touchCurrent[0].clientY + this._touchCurrent[1].clientY) / 2); - let rotationPoint; - if (this._state != STATE.ZROTATE) { - this.updateTbState(STATE.ZROTATE, true); - this._startFingerRotation = this._currentFingerRotation; - } - this._currentFingerRotation = this.getAngle(this._touchCurrent[1], this._touchCurrent[0]) + this.getAngle(this._touchStart[1], this._touchStart[0]); - if (!this.enablePan) { - rotationPoint = new Vector3().setFromMatrixPosition(this._gizmoMatrixState); - } else { - this._v3_2.setFromMatrixPosition(this._gizmoMatrixState); - rotationPoint = this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement).applyQuaternion(this.camera.quaternion).multiplyScalar(1 / this.camera.zoom).add(this._v3_2); - } - const amount = MathUtils.DEG2RAD * (this._startFingerRotation - this._currentFingerRotation); - this.applyTransformMatrix(this.zRotate(rotationPoint, amount)); - this.dispatchEvent(_changeEvent); - } - } - onRotateEnd() { - this.updateTbState(STATE.IDLE, false); - this.activateGizmos(false); - this.dispatchEvent(_endEvent); - } - onPinchStart() { - if (this.enabled && this.enableZoom) { - this.dispatchEvent(_startEvent); - this.updateTbState(STATE.SCALE, true); - this._startFingerDistance = this.calculatePointersDistance(this._touchCurrent[0], this._touchCurrent[1]); - this._currentFingerDistance = this._startFingerDistance; - this.activateGizmos(false); - } - } - onPinchMove() { - if (this.enabled && this.enableZoom) { - this.setCenter((this._touchCurrent[0].clientX + this._touchCurrent[1].clientX) / 2, (this._touchCurrent[0].clientY + this._touchCurrent[1].clientY) / 2); - const minDistance = 12; - if (this._state != STATE.SCALE) { - this._startFingerDistance = this._currentFingerDistance; - this.updateTbState(STATE.SCALE, true); - } - this._currentFingerDistance = Math.max(this.calculatePointersDistance(this._touchCurrent[0], this._touchCurrent[1]), minDistance * this._devPxRatio); - const amount = this._currentFingerDistance / this._startFingerDistance; - let scalePoint; - if (!this.enablePan) { - scalePoint = this._gizmos.position; - } else { - if (this.camera.isOrthographicCamera) { - scalePoint = this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement).applyQuaternion(this.camera.quaternion).multiplyScalar(1 / this.camera.zoom).add(this._gizmos.position); - } else if (this.camera.isPerspectiveCamera) { - scalePoint = this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement).applyQuaternion(this.camera.quaternion).add(this._gizmos.position); - } - } - this.applyTransformMatrix(this.scale(amount, scalePoint)); - this.dispatchEvent(_changeEvent); - } - } - onPinchEnd() { - this.updateTbState(STATE.IDLE, false); - this.dispatchEvent(_endEvent); - } - onTriplePanStart() { - if (this.enabled && this.enableZoom) { - this.dispatchEvent(_startEvent); - this.updateTbState(STATE.SCALE, true); - let clientX = 0; - let clientY = 0; - const nFingers = this._touchCurrent.length; - for (let i = 0; i < nFingers; i++) { - clientX += this._touchCurrent[i].clientX; - clientY += this._touchCurrent[i].clientY; - } - this.setCenter(clientX / nFingers, clientY / nFingers); - this._startCursorPosition.setY(this.getCursorNDC(_center.x, _center.y, this.domElement).y * 0.5); - this._currentCursorPosition.copy(this._startCursorPosition); - } - } - onTriplePanMove() { - if (this.enabled && this.enableZoom) { - let clientX = 0; - let clientY = 0; - const nFingers = this._touchCurrent.length; - for (let i = 0; i < nFingers; i++) { - clientX += this._touchCurrent[i].clientX; - clientY += this._touchCurrent[i].clientY; - } - this.setCenter(clientX / nFingers, clientY / nFingers); - const screenNotches = 8; - this._currentCursorPosition.setY(this.getCursorNDC(_center.x, _center.y, this.domElement).y * 0.5); - const movement = this._currentCursorPosition.y - this._startCursorPosition.y; - let size2 = 1; - if (movement < 0) { - size2 = 1 / Math.pow(this.scaleFactor, -movement * screenNotches); - } else if (movement > 0) { - size2 = Math.pow(this.scaleFactor, movement * screenNotches); - } - this._v3_1.setFromMatrixPosition(this._cameraMatrixState); - const x2 = this._v3_1.distanceTo(this._gizmos.position); - let xNew = x2 / size2; - xNew = MathUtils.clamp(xNew, this.minDistance, this.maxDistance); - const y2 = x2 * Math.tan(MathUtils.DEG2RAD * this._fovState * 0.5); - let newFov = MathUtils.RAD2DEG * (Math.atan(y2 / xNew) * 2); - newFov = MathUtils.clamp(newFov, this.minFov, this.maxFov); - const newDistance = y2 / Math.tan(MathUtils.DEG2RAD * (newFov / 2)); - size2 = x2 / newDistance; - this._v3_2.setFromMatrixPosition(this._gizmoMatrixState); - this.setFov(newFov); - this.applyTransformMatrix(this.scale(size2, this._v3_2, false)); - _offset.copy(this._gizmos.position).sub(this.camera.position).normalize().multiplyScalar(newDistance / x2); - this._m4_1.makeTranslation(_offset.x, _offset.y, _offset.z); - this.dispatchEvent(_changeEvent); - } - } - onTriplePanEnd() { - this.updateTbState(STATE.IDLE, false); - this.dispatchEvent(_endEvent); - } - /** - * Set _center's x/y coordinates - * @param {Number} clientX - * @param {Number} clientY - */ - setCenter(clientX, clientY) { - _center.x = clientX; - _center.y = clientY; - } - /** - * Set default mouse actions - */ - initializeMouseActions() { - this.setMouseAction("PAN", 0, "CTRL"); - this.setMouseAction("PAN", 2); - this.setMouseAction("ROTATE", 0); - this.setMouseAction("ZOOM", "WHEEL"); - this.setMouseAction("ZOOM", 1); - this.setMouseAction("FOV", "WHEEL", "SHIFT"); - this.setMouseAction("FOV", 1, "SHIFT"); - } - /** - * Compare two mouse actions - * @param {Object} action1 - * @param {Object} action2 - * @returns {Boolean} True if action1 and action 2 are the same mouse action, false otherwise - */ - compareMouseAction(action1, action2) { - if (action1.operation == action2.operation) { - if (action1.mouse == action2.mouse && action1.key == action2.key) { - return true; - } else { - return false; - } - } else { - return false; - } - } - /** - * Set a new mouse action by specifying the operation to be performed and a mouse/key combination. In case of conflict, replaces the existing one - * @param {String} operation The operation to be performed ('PAN', 'ROTATE', 'ZOOM', 'FOV) - * @param {*} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches - * @param {*} key The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed - * @returns {Boolean} True if the mouse action has been successfully added, false otherwise - */ - setMouseAction(operation, mouse, key2 = null) { - const operationInput = ["PAN", "ROTATE", "ZOOM", "FOV"]; - const mouseInput = [0, 1, 2, "WHEEL"]; - const keyInput = ["CTRL", "SHIFT", null]; - let state; - if (!operationInput.includes(operation) || !mouseInput.includes(mouse) || !keyInput.includes(key2)) { - return false; - } - if (mouse == "WHEEL") { - if (operation != "ZOOM" && operation != "FOV") { - return false; - } - } - switch (operation) { - case "PAN": - state = STATE.PAN; - break; - case "ROTATE": - state = STATE.ROTATE; - break; - case "ZOOM": - state = STATE.SCALE; - break; - case "FOV": - state = STATE.FOV; - break; - } - const action = { - operation, - mouse, - key: key2, - state - }; - for (let i = 0; i < this.mouseActions.length; i++) { - if (this.mouseActions[i].mouse == action.mouse && this.mouseActions[i].key == action.key) { - this.mouseActions.splice(i, 1, action); - return true; - } - } - this.mouseActions.push(action); - return true; - } - /** - * Remove a mouse action by specifying its mouse/key combination - * @param {*} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches - * @param {*} key The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed - * @returns {Boolean} True if the operation has been succesfully removed, false otherwise - */ - unsetMouseAction(mouse, key2 = null) { - for (let i = 0; i < this.mouseActions.length; i++) { - if (this.mouseActions[i].mouse == mouse && this.mouseActions[i].key == key2) { - this.mouseActions.splice(i, 1); - return true; - } - } - return false; - } - /** - * Return the operation associated to a mouse/keyboard combination - * @param {*} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches - * @param {*} key The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed - * @returns The operation if it has been found, null otherwise - */ - getOpFromAction(mouse, key2) { - let action; - for (let i = 0; i < this.mouseActions.length; i++) { - action = this.mouseActions[i]; - if (action.mouse == mouse && action.key == key2) { - return action.operation; - } - } - if (key2 != null) { - for (let i = 0; i < this.mouseActions.length; i++) { - action = this.mouseActions[i]; - if (action.mouse == mouse && action.key == null) { - return action.operation; - } - } - } - return null; - } - /** - * Get the operation associated to mouse and key combination and returns the corresponding FSA state - * @param {Number} mouse Mouse button - * @param {String} key Keyboard modifier - * @returns The FSA state obtained from the operation associated to mouse/keyboard combination - */ - getOpStateFromAction(mouse, key2) { - let action; - for (let i = 0; i < this.mouseActions.length; i++) { - action = this.mouseActions[i]; - if (action.mouse == mouse && action.key == key2) { - return action.state; - } - } - if (key2 != null) { - for (let i = 0; i < this.mouseActions.length; i++) { - action = this.mouseActions[i]; - if (action.mouse == mouse && action.key == null) { - return action.state; - } - } - } - return null; - } - /** - * Calculate the angle between two pointers - * @param {PointerEvent} p1 - * @param {PointerEvent} p2 - * @returns {Number} The angle between two pointers in degrees - */ - getAngle(p1, p2) { - return Math.atan2(p2.clientY - p1.clientY, p2.clientX - p1.clientX) * 180 / Math.PI; - } - /** - * Update a PointerEvent inside current pointerevents array - * @param {PointerEvent} event - */ - updateTouchEvent(event) { - for (let i = 0; i < this._touchCurrent.length; i++) { - if (this._touchCurrent[i].pointerId == event.pointerId) { - this._touchCurrent.splice(i, 1, event); - break; - } - } - } - /** - * Apply a transformation matrix, to the camera and gizmos - * @param {Object} transformation Object containing matrices to apply to camera and gizmos - */ - applyTransformMatrix(transformation) { - if (transformation.camera != null) { - this._m4_1.copy(this._cameraMatrixState).premultiply(transformation.camera); - this._m4_1.decompose(this.camera.position, this.camera.quaternion, this.camera.scale); - this.camera.updateMatrix(); - if (this._state == STATE.ROTATE || this._state == STATE.ZROTATE || this._state == STATE.ANIMATION_ROTATE) { - this.camera.up.copy(this._upState).applyQuaternion(this.camera.quaternion); - } - } - if (transformation.gizmos != null) { - this._m4_1.copy(this._gizmoMatrixState).premultiply(transformation.gizmos); - this._m4_1.decompose(this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale); - this._gizmos.updateMatrix(); - } - if (this._state == STATE.SCALE || this._state == STATE.FOCUS || this._state == STATE.ANIMATION_FOCUS) { - this._tbRadius = this.calculateTbRadius(this.camera); - if (this.adjustNearFar) { - const cameraDistance = this.camera.position.distanceTo(this._gizmos.position); - const bb = new Box3(); - bb.setFromObject(this._gizmos); - const sphere = new Sphere(); - bb.getBoundingSphere(sphere); - const adjustedNearPosition = Math.max(this._nearPos0, sphere.radius + sphere.center.length()); - const regularNearPosition = cameraDistance - this._initialNear; - const minNearPos = Math.min(adjustedNearPosition, regularNearPosition); - this.camera.near = cameraDistance - minNearPos; - const adjustedFarPosition = Math.min(this._farPos0, -sphere.radius + sphere.center.length()); - const regularFarPosition = cameraDistance - this._initialFar; - const minFarPos = Math.min(adjustedFarPosition, regularFarPosition); - this.camera.far = cameraDistance - minFarPos; - this.camera.updateProjectionMatrix(); - } else { - let update = false; - if (this.camera.near != this._initialNear) { - this.camera.near = this._initialNear; - update = true; - } - if (this.camera.far != this._initialFar) { - this.camera.far = this._initialFar; - update = true; - } - if (update) { - this.camera.updateProjectionMatrix(); - } - } - } - } - /** - * Calculate the angular speed - * @param {Number} p0 Position at t0 - * @param {Number} p1 Position at t1 - * @param {Number} t0 Initial time in milliseconds - * @param {Number} t1 Ending time in milliseconds - */ - calculateAngularSpeed(p0, p1, t0, t1) { - const s = p1 - p0; - const t3 = (t1 - t0) / 1e3; - if (t3 == 0) { - return 0; - } - return s / t3; - } - /** - * Calculate the distance between two pointers - * @param {PointerEvent} p0 The first pointer - * @param {PointerEvent} p1 The second pointer - * @returns {number} The distance between the two pointers - */ - calculatePointersDistance(p0, p1) { - return Math.sqrt(Math.pow(p1.clientX - p0.clientX, 2) + Math.pow(p1.clientY - p0.clientY, 2)); - } - /** - * Calculate the rotation axis as the vector perpendicular between two vectors - * @param {Vector3} vec1 The first vector - * @param {Vector3} vec2 The second vector - * @returns {Vector3} The normalized rotation axis - */ - calculateRotationAxis(vec1, vec2) { - this._rotationMatrix.extractRotation(this._cameraMatrixState); - this._quat.setFromRotationMatrix(this._rotationMatrix); - this._rotationAxis.crossVectors(vec1, vec2).applyQuaternion(this._quat); - return this._rotationAxis.normalize().clone(); - } - /** - * Calculate the trackball radius so that gizmo's diamater will be 2/3 of the minimum side of the camera frustum - * @param {Camera} camera - * @returns {Number} The trackball radius - */ - calculateTbRadius(camera) { - const distance = camera.position.distanceTo(this._gizmos.position); - if (camera.type == "PerspectiveCamera") { - const halfFovV = MathUtils.DEG2RAD * camera.fov * 0.5; - const halfFovH = Math.atan(camera.aspect * Math.tan(halfFovV)); - return Math.tan(Math.min(halfFovV, halfFovH)) * distance * this.radiusFactor; - } else if (camera.type == "OrthographicCamera") { - return Math.min(camera.top, camera.right) * this.radiusFactor; - } - } - /** - * Focus operation consist of positioning the point of interest in front of the camera and a slightly zoom in - * @param {Vector3} point The point of interest - * @param {Number} size Scale factor - * @param {Number} amount Amount of operation to be completed (used for focus animations, default is complete full operation) - */ - focus(point, size2, amount = 1) { - _offset.copy(point).sub(this._gizmos.position).multiplyScalar(amount); - this._translationMatrix.makeTranslation(_offset.x, _offset.y, _offset.z); - _gizmoMatrixStateTemp.copy(this._gizmoMatrixState); - this._gizmoMatrixState.premultiply(this._translationMatrix); - this._gizmoMatrixState.decompose(this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale); - _cameraMatrixStateTemp.copy(this._cameraMatrixState); - this._cameraMatrixState.premultiply(this._translationMatrix); - this._cameraMatrixState.decompose(this.camera.position, this.camera.quaternion, this.camera.scale); - if (this.enableZoom) { - this.applyTransformMatrix(this.scale(size2, this._gizmos.position)); - } - this._gizmoMatrixState.copy(_gizmoMatrixStateTemp); - this._cameraMatrixState.copy(_cameraMatrixStateTemp); - } - /** - * Draw a grid and add it to the scene - */ - drawGrid() { - if (this.scene != null) { - const color = 8947848; - const multiplier = 3; - let size2, divisions, maxLength, tick; - if (this.camera.isOrthographicCamera) { - const width2 = this.camera.right - this.camera.left; - const height2 = this.camera.bottom - this.camera.top; - maxLength = Math.max(width2, height2); - tick = maxLength / 20; - size2 = maxLength / this.camera.zoom * multiplier; - divisions = size2 / tick * this.camera.zoom; - } else if (this.camera.isPerspectiveCamera) { - const distance = this.camera.position.distanceTo(this._gizmos.position); - const halfFovV = MathUtils.DEG2RAD * this.camera.fov * 0.5; - const halfFovH = Math.atan(this.camera.aspect * Math.tan(halfFovV)); - maxLength = Math.tan(Math.max(halfFovV, halfFovH)) * distance * 2; - tick = maxLength / 20; - size2 = maxLength * multiplier; - divisions = size2 / tick; - } - if (this._grid == null) { - this._grid = new GridHelper(size2, divisions, color, color); - this._grid.position.copy(this._gizmos.position); - this._gridPosition.copy(this._grid.position); - this._grid.quaternion.copy(this.camera.quaternion); - this._grid.rotateX(Math.PI * 0.5); - this.scene.add(this._grid); - } - } - } - /** - * Remove all listeners, stop animations and clean scene - */ - dispose() { - if (this._animationId != -1) { - window.cancelAnimationFrame(this._animationId); - } - this.domElement.removeEventListener("pointerdown", this._onPointerDown); - this.domElement.removeEventListener("pointercancel", this._onPointerCancel); - this.domElement.removeEventListener("wheel", this._onWheel); - this.domElement.removeEventListener("contextmenu", this._onContextMenu); - window.removeEventListener("pointermove", this._onPointerMove); - window.removeEventListener("pointerup", this._onPointerUp); - window.removeEventListener("resize", this._onWindowResize); - if (this.scene !== null) this.scene.remove(this._gizmos); - this.disposeGrid(); - } - /** - * remove the grid from the scene - */ - disposeGrid() { - if (this._grid != null && this.scene != null) { - this.scene.remove(this._grid); - this._grid = null; - } - } - /** - * Compute the easing out cubic function for ease out effect in animation - * @param {Number} t The absolute progress of the animation in the bound of 0 (beginning of the) and 1 (ending of animation) - * @returns {Number} Result of easing out cubic at time t - */ - easeOutCubic(t3) { - return 1 - Math.pow(1 - t3, 3); - } - /** - * Make rotation gizmos more or less visible - * @param {Boolean} isActive If true, make gizmos more visible - */ - activateGizmos(isActive) { - const gizmoX = this._gizmos.children[0]; - const gizmoY = this._gizmos.children[1]; - const gizmoZ = this._gizmos.children[2]; - if (isActive) { - gizmoX.material.setValues({ opacity: 1 }); - gizmoY.material.setValues({ opacity: 1 }); - gizmoZ.material.setValues({ opacity: 1 }); - } else { - gizmoX.material.setValues({ opacity: 0.6 }); - gizmoY.material.setValues({ opacity: 0.6 }); - gizmoZ.material.setValues({ opacity: 0.6 }); - } - } - /** - * Calculate the cursor position in NDC - * @param {number} x Cursor horizontal coordinate within the canvas - * @param {number} y Cursor vertical coordinate within the canvas - * @param {HTMLElement} canvas The canvas where the renderer draws its output - * @returns {Vector2} Cursor normalized position inside the canvas - */ - getCursorNDC(cursorX, cursorY, canvas) { - const canvasRect = canvas.getBoundingClientRect(); - this._v2_1.setX((cursorX - canvasRect.left) / canvasRect.width * 2 - 1); - this._v2_1.setY((canvasRect.bottom - cursorY) / canvasRect.height * 2 - 1); - return this._v2_1.clone(); - } - /** - * Calculate the cursor position inside the canvas x/y coordinates with the origin being in the center of the canvas - * @param {Number} x Cursor horizontal coordinate within the canvas - * @param {Number} y Cursor vertical coordinate within the canvas - * @param {HTMLElement} canvas The canvas where the renderer draws its output - * @returns {Vector2} Cursor position inside the canvas - */ - getCursorPosition(cursorX, cursorY, canvas) { - this._v2_1.copy(this.getCursorNDC(cursorX, cursorY, canvas)); - this._v2_1.x *= (this.camera.right - this.camera.left) * 0.5; - this._v2_1.y *= (this.camera.top - this.camera.bottom) * 0.5; - return this._v2_1.clone(); - } - /** - * Set the camera to be controlled - * @param {Camera} camera The virtual camera to be controlled - */ - setCamera(camera) { - camera.lookAt(this.target); - camera.updateMatrix(); - if (camera.type == "PerspectiveCamera") { - this._fov0 = camera.fov; - this._fovState = camera.fov; - } - this._cameraMatrixState0.copy(camera.matrix); - this._cameraMatrixState.copy(this._cameraMatrixState0); - this._cameraProjectionState.copy(camera.projectionMatrix); - this._zoom0 = camera.zoom; - this._zoomState = this._zoom0; - this._initialNear = camera.near; - this._nearPos0 = camera.position.distanceTo(this.target) - camera.near; - this._nearPos = this._initialNear; - this._initialFar = camera.far; - this._farPos0 = camera.position.distanceTo(this.target) - camera.far; - this._farPos = this._initialFar; - this._up0.copy(camera.up); - this._upState.copy(camera.up); - this.camera = camera; - this.camera.updateProjectionMatrix(); - this._tbRadius = this.calculateTbRadius(camera); - this.makeGizmos(this.target, this._tbRadius); - } - /** - * Set gizmos visibility - * @param {Boolean} value Value of gizmos visibility - */ - setGizmosVisible(value2) { - this._gizmos.visible = value2; - this.dispatchEvent(_changeEvent); - } - /** - * Set gizmos radius factor and redraws gizmos - * @param {Float} value Value of radius factor - */ - setTbRadius(value2) { - this.radiusFactor = value2; - this._tbRadius = this.calculateTbRadius(this.camera); - const curve = new EllipseCurve(0, 0, this._tbRadius, this._tbRadius); - const points = curve.getPoints(this._curvePts); - const curveGeometry = new BufferGeometry().setFromPoints(points); - for (const gizmo in this._gizmos.children) { - this._gizmos.children[gizmo].geometry = curveGeometry; - } - this.dispatchEvent(_changeEvent); - } - /** - * Creates the rotation gizmos matching trackball center and radius - * @param {Vector3} tbCenter The trackball center - * @param {number} tbRadius The trackball radius - */ - makeGizmos(tbCenter, tbRadius) { - const curve = new EllipseCurve(0, 0, tbRadius, tbRadius); - const points = curve.getPoints(this._curvePts); - const curveGeometry = new BufferGeometry().setFromPoints(points); - const curveMaterialX = new LineBasicMaterial({ color: 16744576, fog: false, transparent: true, opacity: 0.6 }); - const curveMaterialY = new LineBasicMaterial({ color: 8454016, fog: false, transparent: true, opacity: 0.6 }); - const curveMaterialZ = new LineBasicMaterial({ color: 8421631, fog: false, transparent: true, opacity: 0.6 }); - const gizmoX = new Line(curveGeometry, curveMaterialX); - const gizmoY = new Line(curveGeometry, curveMaterialY); - const gizmoZ = new Line(curveGeometry, curveMaterialZ); - const rotation2 = Math.PI * 0.5; - gizmoX.rotation.x = rotation2; - gizmoY.rotation.y = rotation2; - this._gizmoMatrixState0.identity().setPosition(tbCenter); - this._gizmoMatrixState.copy(this._gizmoMatrixState0); - if (this.camera.zoom !== 1) { - const size2 = 1 / this.camera.zoom; - this._scaleMatrix.makeScale(size2, size2, size2); - this._translationMatrix.makeTranslation(-tbCenter.x, -tbCenter.y, -tbCenter.z); - this._gizmoMatrixState.premultiply(this._translationMatrix).premultiply(this._scaleMatrix); - this._translationMatrix.makeTranslation(tbCenter.x, tbCenter.y, tbCenter.z); - this._gizmoMatrixState.premultiply(this._translationMatrix); - } - this._gizmoMatrixState.decompose(this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale); - this._gizmos.traverse(function(object) { - if (object.isLine) { - object.geometry.dispose(); - object.material.dispose(); - } - }); - this._gizmos.clear(); - this._gizmos.add(gizmoX); - this._gizmos.add(gizmoY); - this._gizmos.add(gizmoZ); - } - /** - * Perform animation for focus operation - * @param {Number} time Instant in which this function is called as performance.now() - * @param {Vector3} point Point of interest for focus operation - * @param {Matrix4} cameraMatrix Camera matrix - * @param {Matrix4} gizmoMatrix Gizmos matrix - */ - onFocusAnim(time2, point, cameraMatrix, gizmoMatrix) { - if (this._timeStart == -1) { - this._timeStart = time2; - } - if (this._state == STATE.ANIMATION_FOCUS) { - const deltaTime = time2 - this._timeStart; - const animTime = deltaTime / this.focusAnimationTime; - this._gizmoMatrixState.copy(gizmoMatrix); - if (animTime >= 1) { - this._gizmoMatrixState.decompose(this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale); - this.focus(point, this.scaleFactor); - this._timeStart = -1; - this.updateTbState(STATE.IDLE, false); - this.activateGizmos(false); - this.dispatchEvent(_changeEvent); - } else { - const amount = this.easeOutCubic(animTime); - const size2 = 1 - amount + this.scaleFactor * amount; - this._gizmoMatrixState.decompose(this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale); - this.focus(point, size2, amount); - this.dispatchEvent(_changeEvent); - const self2 = this; - this._animationId = window.requestAnimationFrame(function(t3) { - self2.onFocusAnim(t3, point, cameraMatrix, gizmoMatrix.clone()); - }); - } - } else { - this._animationId = -1; - this._timeStart = -1; - } - } - /** - * Perform animation for rotation operation - * @param {Number} time Instant in which this function is called as performance.now() - * @param {Vector3} rotationAxis Rotation axis - * @param {number} w0 Initial angular velocity - */ - onRotationAnim(time2, rotationAxis, w0) { - if (this._timeStart == -1) { - this._anglePrev = 0; - this._angleCurrent = 0; - this._timeStart = time2; - } - if (this._state == STATE.ANIMATION_ROTATE) { - const deltaTime = (time2 - this._timeStart) / 1e3; - const w = w0 + -this.dampingFactor * deltaTime; - if (w > 0) { - this._angleCurrent = 0.5 * -this.dampingFactor * Math.pow(deltaTime, 2) + w0 * deltaTime + 0; - this.applyTransformMatrix(this.rotate(rotationAxis, this._angleCurrent)); - this.dispatchEvent(_changeEvent); - const self2 = this; - this._animationId = window.requestAnimationFrame(function(t3) { - self2.onRotationAnim(t3, rotationAxis, w0); - }); - } else { - this._animationId = -1; - this._timeStart = -1; - this.updateTbState(STATE.IDLE, false); - this.activateGizmos(false); - this.dispatchEvent(_changeEvent); - } - } else { - this._animationId = -1; - this._timeStart = -1; - if (this._state != STATE.ROTATE) { - this.activateGizmos(false); - this.dispatchEvent(_changeEvent); - } - } - } - /** - * Perform pan operation moving camera between two points - * @param {Vector3} p0 Initial point - * @param {Vector3} p1 Ending point - * @param {Boolean} adjust If movement should be adjusted considering camera distance (Perspective only) - */ - pan(p0, p1, adjust = false) { - const movement = p0.clone().sub(p1); - if (this.camera.isOrthographicCamera) { - movement.multiplyScalar(1 / this.camera.zoom); - } else if (this.camera.isPerspectiveCamera && adjust) { - this._v3_1.setFromMatrixPosition(this._cameraMatrixState0); - this._v3_2.setFromMatrixPosition(this._gizmoMatrixState0); - const distanceFactor = this._v3_1.distanceTo(this._v3_2) / this.camera.position.distanceTo(this._gizmos.position); - movement.multiplyScalar(1 / distanceFactor); - } - this._v3_1.set(movement.x, movement.y, 0).applyQuaternion(this.camera.quaternion); - this._m4_1.makeTranslation(this._v3_1.x, this._v3_1.y, this._v3_1.z); - this.setTransformationMatrices(this._m4_1, this._m4_1); - return _transformation; - } - /** - * Reset trackball - */ - reset() { - this.camera.zoom = this._zoom0; - if (this.camera.isPerspectiveCamera) { - this.camera.fov = this._fov0; - } - this.camera.near = this._nearPos; - this.camera.far = this._farPos; - this._cameraMatrixState.copy(this._cameraMatrixState0); - this._cameraMatrixState.decompose(this.camera.position, this.camera.quaternion, this.camera.scale); - this.camera.up.copy(this._up0); - this.camera.updateMatrix(); - this.camera.updateProjectionMatrix(); - this._gizmoMatrixState.copy(this._gizmoMatrixState0); - this._gizmoMatrixState0.decompose(this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale); - this._gizmos.updateMatrix(); - this._tbRadius = this.calculateTbRadius(this.camera); - this.makeGizmos(this._gizmos.position, this._tbRadius); - this.camera.lookAt(this._gizmos.position); - this.updateTbState(STATE.IDLE, false); - this.dispatchEvent(_changeEvent); - } - /** - * Rotate the camera around an axis passing by trackball's center - * @param {Vector3} axis Rotation axis - * @param {number} angle Angle in radians - * @returns {Object} Object with 'camera' field containing transformation matrix resulting from the operation to be applied to the camera - */ - rotate(axis, angle) { - const point = this._gizmos.position; - this._translationMatrix.makeTranslation(-point.x, -point.y, -point.z); - this._rotationMatrix.makeRotationAxis(axis, -angle); - this._m4_1.makeTranslation(point.x, point.y, point.z); - this._m4_1.multiply(this._rotationMatrix); - this._m4_1.multiply(this._translationMatrix); - this.setTransformationMatrices(this._m4_1); - return _transformation; - } - copyState() { - let state; - if (this.camera.isOrthographicCamera) { - state = JSON.stringify({ arcballState: { - cameraFar: this.camera.far, - cameraMatrix: this.camera.matrix, - cameraNear: this.camera.near, - cameraUp: this.camera.up, - cameraZoom: this.camera.zoom, - gizmoMatrix: this._gizmos.matrix - } }); - } else if (this.camera.isPerspectiveCamera) { - state = JSON.stringify({ arcballState: { - cameraFar: this.camera.far, - cameraFov: this.camera.fov, - cameraMatrix: this.camera.matrix, - cameraNear: this.camera.near, - cameraUp: this.camera.up, - cameraZoom: this.camera.zoom, - gizmoMatrix: this._gizmos.matrix - } }); - } - navigator.clipboard.writeText(state); - } - pasteState() { - const self2 = this; - navigator.clipboard.readText().then(function resolved(value2) { - self2.setStateFromJSON(value2); - }); - } - /** - * Save the current state of the control. This can later be recover with .reset - */ - saveState() { - this._cameraMatrixState0.copy(this.camera.matrix); - this._gizmoMatrixState0.copy(this._gizmos.matrix); - this._nearPos = this.camera.near; - this._farPos = this.camera.far; - this._zoom0 = this.camera.zoom; - this._up0.copy(this.camera.up); - if (this.camera.isPerspectiveCamera) { - this._fov0 = this.camera.fov; - } - } - /** - * Perform uniform scale operation around a given point - * @param {Number} size Scale factor - * @param {Vector3} point Point around which scale - * @param {Boolean} scaleGizmos If gizmos should be scaled (Perspective only) - * @returns {Object} Object with 'camera' and 'gizmo' fields containing transformation matrices resulting from the operation to be applied to the camera and gizmos - */ - scale(size2, point, scaleGizmos = true) { - _scalePointTemp.copy(point); - let sizeInverse = 1 / size2; - if (this.camera.isOrthographicCamera) { - this.camera.zoom = this._zoomState; - this.camera.zoom *= size2; - if (this.camera.zoom > this.maxZoom) { - this.camera.zoom = this.maxZoom; - sizeInverse = this._zoomState / this.maxZoom; - } else if (this.camera.zoom < this.minZoom) { - this.camera.zoom = this.minZoom; - sizeInverse = this._zoomState / this.minZoom; - } - this.camera.updateProjectionMatrix(); - this._v3_1.setFromMatrixPosition(this._gizmoMatrixState); - this._scaleMatrix.makeScale(sizeInverse, sizeInverse, sizeInverse); - this._translationMatrix.makeTranslation(-this._v3_1.x, -this._v3_1.y, -this._v3_1.z); - this._m4_2.makeTranslation(this._v3_1.x, this._v3_1.y, this._v3_1.z).multiply(this._scaleMatrix); - this._m4_2.multiply(this._translationMatrix); - _scalePointTemp.sub(this._v3_1); - const amount = _scalePointTemp.clone().multiplyScalar(sizeInverse); - _scalePointTemp.sub(amount); - this._m4_1.makeTranslation(_scalePointTemp.x, _scalePointTemp.y, _scalePointTemp.z); - this._m4_2.premultiply(this._m4_1); - this.setTransformationMatrices(this._m4_1, this._m4_2); - return _transformation; - } else if (this.camera.isPerspectiveCamera) { - this._v3_1.setFromMatrixPosition(this._cameraMatrixState); - this._v3_2.setFromMatrixPosition(this._gizmoMatrixState); - let distance = this._v3_1.distanceTo(_scalePointTemp); - let amount = distance - distance * sizeInverse; - const newDistance = distance - amount; - if (newDistance < this.minDistance) { - sizeInverse = this.minDistance / distance; - amount = distance - distance * sizeInverse; - } else if (newDistance > this.maxDistance) { - sizeInverse = this.maxDistance / distance; - amount = distance - distance * sizeInverse; - } - _offset.copy(_scalePointTemp).sub(this._v3_1).normalize().multiplyScalar(amount); - this._m4_1.makeTranslation(_offset.x, _offset.y, _offset.z); - if (scaleGizmos) { - const pos = this._v3_2; - distance = pos.distanceTo(_scalePointTemp); - amount = distance - distance * sizeInverse; - _offset.copy(_scalePointTemp).sub(this._v3_2).normalize().multiplyScalar(amount); - this._translationMatrix.makeTranslation(pos.x, pos.y, pos.z); - this._scaleMatrix.makeScale(sizeInverse, sizeInverse, sizeInverse); - this._m4_2.makeTranslation(_offset.x, _offset.y, _offset.z).multiply(this._translationMatrix); - this._m4_2.multiply(this._scaleMatrix); - this._translationMatrix.makeTranslation(-pos.x, -pos.y, -pos.z); - this._m4_2.multiply(this._translationMatrix); - this.setTransformationMatrices(this._m4_1, this._m4_2); - } else { - this.setTransformationMatrices(this._m4_1); - } - return _transformation; - } - } - /** - * Set camera fov - * @param {Number} value fov to be setted - */ - setFov(value2) { - if (this.camera.isPerspectiveCamera) { - this.camera.fov = MathUtils.clamp(value2, this.minFov, this.maxFov); - this.camera.updateProjectionMatrix(); - } - } - /** - * Set values in transformation object - * @param {Matrix4} camera Transformation to be applied to the camera - * @param {Matrix4} gizmos Transformation to be applied to gizmos - */ - setTransformationMatrices(camera = null, gizmos = null) { - if (camera != null) { - if (_transformation.camera != null) { - _transformation.camera.copy(camera); - } else { - _transformation.camera = camera.clone(); - } - } else { - _transformation.camera = null; - } - if (gizmos != null) { - if (_transformation.gizmos != null) { - _transformation.gizmos.copy(gizmos); - } else { - _transformation.gizmos = gizmos.clone(); - } - } else { - _transformation.gizmos = null; - } - } - /** - * Rotate camera around its direction axis passing by a given point by a given angle - * @param {Vector3} point The point where the rotation axis is passing trough - * @param {Number} angle Angle in radians - * @returns The computed transormation matix - */ - zRotate(point, angle) { - this._rotationMatrix.makeRotationAxis(this._rotationAxis, angle); - this._translationMatrix.makeTranslation(-point.x, -point.y, -point.z); - this._m4_1.makeTranslation(point.x, point.y, point.z); - this._m4_1.multiply(this._rotationMatrix); - this._m4_1.multiply(this._translationMatrix); - this._v3_1.setFromMatrixPosition(this._gizmoMatrixState).sub(point); - this._v3_2.copy(this._v3_1).applyAxisAngle(this._rotationAxis, angle); - this._v3_2.sub(this._v3_1); - this._m4_2.makeTranslation(this._v3_2.x, this._v3_2.y, this._v3_2.z); - this.setTransformationMatrices(this._m4_1, this._m4_2); - return _transformation; - } - getRaycaster() { - return _raycaster; - } - /** - * Unproject the cursor on the 3D object surface - * @param {Vector2} cursor Cursor coordinates in NDC - * @param {Camera} camera Virtual camera - * @returns {Vector3} The point of intersection with the model, if exist, null otherwise - */ - unprojectOnObj(cursor, camera) { - const raycaster = this.getRaycaster(); - raycaster.near = camera.near; - raycaster.far = camera.far; - raycaster.setFromCamera(cursor, camera); - const intersect = raycaster.intersectObjects(this.scene.children, true); - for (let i = 0; i < intersect.length; i++) { - if (intersect[i].object.uuid != this._gizmos.uuid && intersect[i].face != null) { - return intersect[i].point.clone(); - } - } - return null; - } - /** - * Unproject the cursor on the trackball surface - * @param {Camera} camera The virtual camera - * @param {Number} cursorX Cursor horizontal coordinate on screen - * @param {Number} cursorY Cursor vertical coordinate on screen - * @param {HTMLElement} canvas The canvas where the renderer draws its output - * @param {number} tbRadius The trackball radius - * @returns {Vector3} The unprojected point on the trackball surface - */ - unprojectOnTbSurface(camera, cursorX, cursorY, canvas, tbRadius) { - if (camera.type == "OrthographicCamera") { - this._v2_1.copy(this.getCursorPosition(cursorX, cursorY, canvas)); - this._v3_1.set(this._v2_1.x, this._v2_1.y, 0); - const x2 = Math.pow(this._v2_1.x, 2); - const y2 = Math.pow(this._v2_1.y, 2); - const r2 = Math.pow(this._tbRadius, 2); - if (x2 + y2 <= r2 * 0.5) { - this._v3_1.setZ(Math.sqrt(r2 - (x2 + y2))); - } else { - this._v3_1.setZ(r2 * 0.5 / Math.sqrt(x2 + y2)); - } - return this._v3_1; - } else if (camera.type == "PerspectiveCamera") { - this._v2_1.copy(this.getCursorNDC(cursorX, cursorY, canvas)); - this._v3_1.set(this._v2_1.x, this._v2_1.y, -1); - this._v3_1.applyMatrix4(camera.projectionMatrixInverse); - const rayDir = this._v3_1.clone().normalize(); - const cameraGizmoDistance = camera.position.distanceTo(this._gizmos.position); - const radius2 = Math.pow(tbRadius, 2); - const h = this._v3_1.z; - const l2 = Math.sqrt(Math.pow(this._v3_1.x, 2) + Math.pow(this._v3_1.y, 2)); - if (l2 == 0) { - rayDir.set(this._v3_1.x, this._v3_1.y, tbRadius); - return rayDir; - } - const m = h / l2; - const q2 = cameraGizmoDistance; - let a2 = Math.pow(m, 2) + 1; - let b3 = 2 * m * q2; - let c2 = Math.pow(q2, 2) - radius2; - let delta = Math.pow(b3, 2) - 4 * a2 * c2; - if (delta >= 0) { - this._v2_1.setX((-b3 - Math.sqrt(delta)) / (2 * a2)); - this._v2_1.setY(m * this._v2_1.x + q2); - const angle = MathUtils.RAD2DEG * this._v2_1.angle(); - if (angle >= 45) { - const rayLength2 = Math.sqrt(Math.pow(this._v2_1.x, 2) + Math.pow(cameraGizmoDistance - this._v2_1.y, 2)); - rayDir.multiplyScalar(rayLength2); - rayDir.z += cameraGizmoDistance; - return rayDir; - } - } - a2 = m; - b3 = q2; - c2 = -radius2 * 0.5; - delta = Math.pow(b3, 2) - 4 * a2 * c2; - this._v2_1.setX((-b3 - Math.sqrt(delta)) / (2 * a2)); - this._v2_1.setY(m * this._v2_1.x + q2); - const rayLength = Math.sqrt(Math.pow(this._v2_1.x, 2) + Math.pow(cameraGizmoDistance - this._v2_1.y, 2)); - rayDir.multiplyScalar(rayLength); - rayDir.z += cameraGizmoDistance; - return rayDir; - } - } - /** - * Unproject the cursor on the plane passing through the center of the trackball orthogonal to the camera - * @param {Camera} camera The virtual camera - * @param {Number} cursorX Cursor horizontal coordinate on screen - * @param {Number} cursorY Cursor vertical coordinate on screen - * @param {HTMLElement} canvas The canvas where the renderer draws its output - * @param {Boolean} initialDistance If initial distance between camera and gizmos should be used for calculations instead of current (Perspective only) - * @returns {Vector3} The unprojected point on the trackball plane - */ - unprojectOnTbPlane(camera, cursorX, cursorY, canvas, initialDistance = false) { - if (camera.type == "OrthographicCamera") { - this._v2_1.copy(this.getCursorPosition(cursorX, cursorY, canvas)); - this._v3_1.set(this._v2_1.x, this._v2_1.y, 0); - return this._v3_1.clone(); - } else if (camera.type == "PerspectiveCamera") { - this._v2_1.copy(this.getCursorNDC(cursorX, cursorY, canvas)); - this._v3_1.set(this._v2_1.x, this._v2_1.y, -1); - this._v3_1.applyMatrix4(camera.projectionMatrixInverse); - const rayDir = this._v3_1.clone().normalize(); - const h = this._v3_1.z; - const l2 = Math.sqrt(Math.pow(this._v3_1.x, 2) + Math.pow(this._v3_1.y, 2)); - let cameraGizmoDistance; - if (initialDistance) { - cameraGizmoDistance = this._v3_1.setFromMatrixPosition(this._cameraMatrixState0).distanceTo(this._v3_2.setFromMatrixPosition(this._gizmoMatrixState0)); - } else { - cameraGizmoDistance = camera.position.distanceTo(this._gizmos.position); - } - if (l2 == 0) { - rayDir.set(0, 0, 0); - return rayDir; - } - const m = h / l2; - const q2 = cameraGizmoDistance; - const x2 = -q2 / m; - const rayLength = Math.sqrt(Math.pow(q2, 2) + Math.pow(x2, 2)); - rayDir.multiplyScalar(rayLength); - rayDir.z = 0; - return rayDir; - } - } - /** - * Update camera and gizmos state - */ - updateMatrixState() { - this._cameraMatrixState.copy(this.camera.matrix); - this._gizmoMatrixState.copy(this._gizmos.matrix); - if (this.camera.isOrthographicCamera) { - this._cameraProjectionState.copy(this.camera.projectionMatrix); - this.camera.updateProjectionMatrix(); - this._zoomState = this.camera.zoom; - } else if (this.camera.isPerspectiveCamera) { - this._fovState = this.camera.fov; - } - } - /** - * Update the trackball FSA - * @param {STATE} newState New state of the FSA - * @param {Boolean} updateMatrices If matriices state should be updated - */ - updateTbState(newState, updateMatrices) { - this._state = newState; - if (updateMatrices) { - this.updateMatrixState(); - } - } - update() { - const EPS2 = 1e-6; - if (this.target.equals(this._currentTarget) === false) { - this._gizmos.position.copy(this.target); - this._tbRadius = this.calculateTbRadius(this.camera); - this.makeGizmos(this.target, this._tbRadius); - this._currentTarget.copy(this.target); - } - if (this.camera.isOrthographicCamera) { - if (this.camera.zoom > this.maxZoom || this.camera.zoom < this.minZoom) { - const newZoom = MathUtils.clamp(this.camera.zoom, this.minZoom, this.maxZoom); - this.applyTransformMatrix(this.scale(newZoom / this.camera.zoom, this._gizmos.position, true)); - } - } else if (this.camera.isPerspectiveCamera) { - const distance = this.camera.position.distanceTo(this._gizmos.position); - if (distance > this.maxDistance + EPS2 || distance < this.minDistance - EPS2) { - const newDistance = MathUtils.clamp(distance, this.minDistance, this.maxDistance); - this.applyTransformMatrix(this.scale(newDistance / distance, this._gizmos.position)); - this.updateMatrixState(); - } - if (this.camera.fov < this.minFov || this.camera.fov > this.maxFov) { - this.camera.fov = MathUtils.clamp(this.camera.fov, this.minFov, this.maxFov); - this.camera.updateProjectionMatrix(); - } - const oldRadius = this._tbRadius; - this._tbRadius = this.calculateTbRadius(this.camera); - if (oldRadius < this._tbRadius - EPS2 || oldRadius > this._tbRadius + EPS2) { - const scale2 = (this._gizmos.scale.x + this._gizmos.scale.y + this._gizmos.scale.z) / 3; - const newRadius = this._tbRadius / scale2; - const curve = new EllipseCurve(0, 0, newRadius, newRadius); - const points = curve.getPoints(this._curvePts); - const curveGeometry = new BufferGeometry().setFromPoints(points); - for (const gizmo in this._gizmos.children) { - this._gizmos.children[gizmo].geometry = curveGeometry; - } - } - } - this.camera.lookAt(this._gizmos.position); - } - setStateFromJSON(json) { - const state = JSON.parse(json); - if (state.arcballState != void 0) { - this._cameraMatrixState.fromArray(state.arcballState.cameraMatrix.elements); - this._cameraMatrixState.decompose(this.camera.position, this.camera.quaternion, this.camera.scale); - this.camera.up.copy(state.arcballState.cameraUp); - this.camera.near = state.arcballState.cameraNear; - this.camera.far = state.arcballState.cameraFar; - this.camera.zoom = state.arcballState.cameraZoom; - if (this.camera.isPerspectiveCamera) { - this.camera.fov = state.arcballState.cameraFov; - } - this._gizmoMatrixState.fromArray(state.arcballState.gizmoMatrix.elements); - this._gizmoMatrixState.decompose(this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale); - this.camera.updateMatrix(); - this.camera.updateProjectionMatrix(); - this._gizmos.updateMatrix(); - this._tbRadius = this.calculateTbRadius(this.camera); - const gizmoTmp = new Matrix4().copy(this._gizmoMatrixState0); - this.makeGizmos(this._gizmos.position, this._tbRadius); - this._gizmoMatrixState0.copy(gizmoTmp); - this.camera.lookAt(this._gizmos.position); - this.updateTbState(STATE.IDLE, false); - this.dispatchEvent(_changeEvent); - } - } -}; -function onWindowResize() { - const scale2 = (this._gizmos.scale.x + this._gizmos.scale.y + this._gizmos.scale.z) / 3; - this._tbRadius = this.calculateTbRadius(this.camera); - const newRadius = this._tbRadius / scale2; - const curve = new EllipseCurve(0, 0, newRadius, newRadius); - const points = curve.getPoints(this._curvePts); - const curveGeometry = new BufferGeometry().setFromPoints(points); - for (const gizmo in this._gizmos.children) { - this._gizmos.children[gizmo].geometry = curveGeometry; - } - this.dispatchEvent(_changeEvent); -} -function onContextMenu(event) { - if (!this.enabled) { - return; - } - for (let i = 0; i < this.mouseActions.length; i++) { - if (this.mouseActions[i].mouse == 2) { - event.preventDefault(); - break; - } - } -} -function onPointerCancel() { - this._touchStart.splice(0, this._touchStart.length); - this._touchCurrent.splice(0, this._touchCurrent.length); - this._input = INPUT.NONE; -} -function onPointerDown(event) { - if (event.button == 0 && event.isPrimary) { - this._downValid = true; - this._downEvents.push(event); - this._downStart = performance.now(); - } else { - this._downValid = false; - } - if (event.pointerType == "touch" && this._input != INPUT.CURSOR) { - this._touchStart.push(event); - this._touchCurrent.push(event); - switch (this._input) { - case INPUT.NONE: - this._input = INPUT.ONE_FINGER; - this.onSinglePanStart(event, "ROTATE"); - window.addEventListener("pointermove", this._onPointerMove); - window.addEventListener("pointerup", this._onPointerUp); - break; - case INPUT.ONE_FINGER: - case INPUT.ONE_FINGER_SWITCHED: - this._input = INPUT.TWO_FINGER; - this.onRotateStart(); - this.onPinchStart(); - this.onDoublePanStart(); - break; - case INPUT.TWO_FINGER: - this._input = INPUT.MULT_FINGER; - this.onTriplePanStart(event); - break; - } - } else if (event.pointerType != "touch" && this._input == INPUT.NONE) { - let modifier = null; - if (event.ctrlKey || event.metaKey) { - modifier = "CTRL"; - } else if (event.shiftKey) { - modifier = "SHIFT"; - } - this._mouseOp = this.getOpFromAction(event.button, modifier); - if (this._mouseOp != null) { - window.addEventListener("pointermove", this._onPointerMove); - window.addEventListener("pointerup", this._onPointerUp); - this._input = INPUT.CURSOR; - this._button = event.button; - this.onSinglePanStart(event, this._mouseOp); - } - } -} -function onPointerMove(event) { - if (event.pointerType == "touch" && this._input != INPUT.CURSOR) { - switch (this._input) { - case INPUT.ONE_FINGER: - this.updateTouchEvent(event); - this.onSinglePanMove(event, STATE.ROTATE); - break; - case INPUT.ONE_FINGER_SWITCHED: - const movement = this.calculatePointersDistance(this._touchCurrent[0], event) * this._devPxRatio; - if (movement >= this._switchSensibility) { - this._input = INPUT.ONE_FINGER; - this.updateTouchEvent(event); - this.onSinglePanStart(event, "ROTATE"); - break; - } - break; - case INPUT.TWO_FINGER: - this.updateTouchEvent(event); - this.onRotateMove(); - this.onPinchMove(); - this.onDoublePanMove(); - break; - case INPUT.MULT_FINGER: - this.updateTouchEvent(event); - this.onTriplePanMove(event); - break; - } - } else if (event.pointerType != "touch" && this._input == INPUT.CURSOR) { - let modifier = null; - if (event.ctrlKey || event.metaKey) { - modifier = "CTRL"; - } else if (event.shiftKey) { - modifier = "SHIFT"; - } - const mouseOpState = this.getOpStateFromAction(this._button, modifier); - if (mouseOpState != null) { - this.onSinglePanMove(event, mouseOpState); - } - } - if (this._downValid) { - const movement = this.calculatePointersDistance(this._downEvents[this._downEvents.length - 1], event) * this._devPxRatio; - if (movement > this._movementThreshold) { - this._downValid = false; - } - } -} -function onPointerUp(event) { - if (event.pointerType == "touch" && this._input != INPUT.CURSOR) { - const nTouch = this._touchCurrent.length; - for (let i = 0; i < nTouch; i++) { - if (this._touchCurrent[i].pointerId == event.pointerId) { - this._touchCurrent.splice(i, 1); - this._touchStart.splice(i, 1); - break; - } - } - switch (this._input) { - case INPUT.ONE_FINGER: - case INPUT.ONE_FINGER_SWITCHED: - window.removeEventListener("pointermove", this._onPointerMove); - window.removeEventListener("pointerup", this._onPointerUp); - this._input = INPUT.NONE; - this.onSinglePanEnd(); - break; - case INPUT.TWO_FINGER: - this.onDoublePanEnd(event); - this.onPinchEnd(event); - this.onRotateEnd(event); - this._input = INPUT.ONE_FINGER_SWITCHED; - break; - case INPUT.MULT_FINGER: - if (this._touchCurrent.length == 0) { - window.removeEventListener("pointermove", this._onPointerMove); - window.removeEventListener("pointerup", this._onPointerUp); - this._input = INPUT.NONE; - this.onTriplePanEnd(); - } - break; - } - } else if (event.pointerType != "touch" && this._input == INPUT.CURSOR) { - window.removeEventListener("pointermove", this._onPointerMove); - window.removeEventListener("pointerup", this._onPointerUp); - this._input = INPUT.NONE; - this.onSinglePanEnd(); - this._button = -1; - } - if (event.isPrimary) { - if (this._downValid) { - const downTime = event.timeStamp - this._downEvents[this._downEvents.length - 1].timeStamp; - if (downTime <= this._maxDownTime) { - if (this._nclicks == 0) { - this._nclicks = 1; - this._clickStart = performance.now(); - } else { - const clickInterval = event.timeStamp - this._clickStart; - const movement = this.calculatePointersDistance(this._downEvents[1], this._downEvents[0]) * this._devPxRatio; - if (clickInterval <= this._maxInterval && movement <= this._posThreshold) { - this._nclicks = 0; - this._downEvents.splice(0, this._downEvents.length); - this.onDoubleTap(event); - } else { - this._nclicks = 1; - this._downEvents.shift(); - this._clickStart = performance.now(); - } - } - } else { - this._downValid = false; - this._nclicks = 0; - this._downEvents.splice(0, this._downEvents.length); - } - } else { - this._nclicks = 0; - this._downEvents.splice(0, this._downEvents.length); - } - } -} -function onWheel(event) { - if (this.enabled && this.enableZoom) { - let modifier = null; - if (event.ctrlKey || event.metaKey) { - modifier = "CTRL"; - } else if (event.shiftKey) { - modifier = "SHIFT"; - } - const mouseOp = this.getOpFromAction("WHEEL", modifier); - if (mouseOp != null) { - event.preventDefault(); - this.dispatchEvent(_startEvent); - const notchDeltaY = 125; - let sgn = event.deltaY / notchDeltaY; - let size2 = 1; - if (sgn > 0) { - size2 = 1 / this.scaleFactor; - } else if (sgn < 0) { - size2 = this.scaleFactor; - } - switch (mouseOp) { - case "ZOOM": - this.updateTbState(STATE.SCALE, true); - if (sgn > 0) { - size2 = 1 / Math.pow(this.scaleFactor, sgn); - } else if (sgn < 0) { - size2 = Math.pow(this.scaleFactor, -sgn); - } - if (this.cursorZoom && this.enablePan) { - let scalePoint; - if (this.camera.isOrthographicCamera) { - scalePoint = this.unprojectOnTbPlane(this.camera, event.clientX, event.clientY, this.domElement).applyQuaternion(this.camera.quaternion).multiplyScalar(1 / this.camera.zoom).add(this._gizmos.position); - } else if (this.camera.isPerspectiveCamera) { - scalePoint = this.unprojectOnTbPlane(this.camera, event.clientX, event.clientY, this.domElement).applyQuaternion(this.camera.quaternion).add(this._gizmos.position); - } - this.applyTransformMatrix(this.scale(size2, scalePoint)); - } else { - this.applyTransformMatrix(this.scale(size2, this._gizmos.position)); - } - if (this._grid != null) { - this.disposeGrid(); - this.drawGrid(); - } - this.updateTbState(STATE.IDLE, false); - this.dispatchEvent(_changeEvent); - this.dispatchEvent(_endEvent); - break; - case "FOV": - if (this.camera.isPerspectiveCamera) { - this.updateTbState(STATE.FOV, true); - if (event.deltaX != 0) { - sgn = event.deltaX / notchDeltaY; - size2 = 1; - if (sgn > 0) { - size2 = 1 / Math.pow(this.scaleFactor, sgn); - } else if (sgn < 0) { - size2 = Math.pow(this.scaleFactor, -sgn); - } - } - this._v3_1.setFromMatrixPosition(this._cameraMatrixState); - const x2 = this._v3_1.distanceTo(this._gizmos.position); - let xNew = x2 / size2; - xNew = MathUtils.clamp(xNew, this.minDistance, this.maxDistance); - const y2 = x2 * Math.tan(MathUtils.DEG2RAD * this.camera.fov * 0.5); - let newFov = MathUtils.RAD2DEG * (Math.atan(y2 / xNew) * 2); - if (newFov > this.maxFov) { - newFov = this.maxFov; - } else if (newFov < this.minFov) { - newFov = this.minFov; - } - const newDistance = y2 / Math.tan(MathUtils.DEG2RAD * (newFov / 2)); - size2 = x2 / newDistance; - this.setFov(newFov); - this.applyTransformMatrix(this.scale(size2, this._gizmos.position, false)); - } - if (this._grid != null) { - this.disposeGrid(); - this.drawGrid(); - } - this.updateTbState(STATE.IDLE, false); - this.dispatchEvent(_changeEvent); - this.dispatchEvent(_endEvent); - break; - } - } - } -} - -// node_modules/three/examples/jsm/controls/DragControls.js -var _plane = new Plane(); -var _raycaster2 = new Raycaster(); -var _pointer = new Vector2(); -var _offset2 = new Vector3(); -var _diff = new Vector2(); -var _previousPointer = new Vector2(); -var _intersection = new Vector3(); -var _worldPosition = new Vector3(); -var _inverseMatrix = new Matrix4(); -var _up = new Vector3(); -var _right = new Vector3(); -var DragControls = class extends EventDispatcher { - constructor(_objects, _camera2, _domElement) { - super(); - _domElement.style.touchAction = "none"; - let _selected = null, _hovered = null; - const _intersections = []; - this.mode = "translate"; - this.rotateSpeed = 1; - const scope = this; - function activate() { - _domElement.addEventListener("pointermove", onPointerMove3); - _domElement.addEventListener("pointerdown", onPointerDown3); - _domElement.addEventListener("pointerup", onPointerCancel2); - _domElement.addEventListener("pointerleave", onPointerCancel2); - } - function deactivate() { - _domElement.removeEventListener("pointermove", onPointerMove3); - _domElement.removeEventListener("pointerdown", onPointerDown3); - _domElement.removeEventListener("pointerup", onPointerCancel2); - _domElement.removeEventListener("pointerleave", onPointerCancel2); - _domElement.style.cursor = ""; - } - function dispose() { - deactivate(); - } - function getObjects() { - return _objects; - } - function setObjects(objects) { - _objects = objects; - } - function getRaycaster() { - return _raycaster2; - } - function onPointerMove3(event) { - if (scope.enabled === false) return; - updatePointer(event); - _raycaster2.setFromCamera(_pointer, _camera2); - if (_selected) { - if (scope.mode === "translate") { - if (_raycaster2.ray.intersectPlane(_plane, _intersection)) { - _selected.position.copy(_intersection.sub(_offset2).applyMatrix4(_inverseMatrix)); - } - } else if (scope.mode === "rotate") { - _diff.subVectors(_pointer, _previousPointer).multiplyScalar(scope.rotateSpeed); - _selected.rotateOnWorldAxis(_up, _diff.x); - _selected.rotateOnWorldAxis(_right.normalize(), -_diff.y); - } - scope.dispatchEvent({ type: "drag", object: _selected }); - _previousPointer.copy(_pointer); - } else { - if (event.pointerType === "mouse" || event.pointerType === "pen") { - _intersections.length = 0; - _raycaster2.setFromCamera(_pointer, _camera2); - _raycaster2.intersectObjects(_objects, scope.recursive, _intersections); - if (_intersections.length > 0) { - const object = _intersections[0].object; - _plane.setFromNormalAndCoplanarPoint(_camera2.getWorldDirection(_plane.normal), _worldPosition.setFromMatrixPosition(object.matrixWorld)); - if (_hovered !== object && _hovered !== null) { - scope.dispatchEvent({ type: "hoveroff", object: _hovered }); - _domElement.style.cursor = "auto"; - _hovered = null; - } - if (_hovered !== object) { - scope.dispatchEvent({ type: "hoveron", object }); - _domElement.style.cursor = "pointer"; - _hovered = object; - } - } else { - if (_hovered !== null) { - scope.dispatchEvent({ type: "hoveroff", object: _hovered }); - _domElement.style.cursor = "auto"; - _hovered = null; - } - } - } - } - _previousPointer.copy(_pointer); - } - function onPointerDown3(event) { - if (scope.enabled === false) return; - updatePointer(event); - _intersections.length = 0; - _raycaster2.setFromCamera(_pointer, _camera2); - _raycaster2.intersectObjects(_objects, scope.recursive, _intersections); - if (_intersections.length > 0) { - if (scope.transformGroup === true) { - _selected = findGroup(_intersections[0].object); - } else { - _selected = _intersections[0].object; - } - _plane.setFromNormalAndCoplanarPoint(_camera2.getWorldDirection(_plane.normal), _worldPosition.setFromMatrixPosition(_selected.matrixWorld)); - if (_raycaster2.ray.intersectPlane(_plane, _intersection)) { - if (scope.mode === "translate") { - _inverseMatrix.copy(_selected.parent.matrixWorld).invert(); - _offset2.copy(_intersection).sub(_worldPosition.setFromMatrixPosition(_selected.matrixWorld)); - } else if (scope.mode === "rotate") { - _up.set(0, 1, 0).applyQuaternion(_camera2.quaternion).normalize(); - _right.set(1, 0, 0).applyQuaternion(_camera2.quaternion).normalize(); - } - } - _domElement.style.cursor = "move"; - scope.dispatchEvent({ type: "dragstart", object: _selected }); - } - _previousPointer.copy(_pointer); - } - function onPointerCancel2() { - if (scope.enabled === false) return; - if (_selected) { - scope.dispatchEvent({ type: "dragend", object: _selected }); - _selected = null; - } - _domElement.style.cursor = _hovered ? "pointer" : "auto"; - } - function updatePointer(event) { - const rect = _domElement.getBoundingClientRect(); - _pointer.x = (event.clientX - rect.left) / rect.width * 2 - 1; - _pointer.y = -(event.clientY - rect.top) / rect.height * 2 + 1; - } - function findGroup(obj, group = null) { - if (obj.isGroup) group = obj; - if (obj.parent === null) return group; - return findGroup(obj.parent, group); - } - activate(); - this.enabled = true; - this.recursive = true; - this.transformGroup = false; - this.activate = activate; - this.deactivate = deactivate; - this.dispose = dispose; - this.getObjects = getObjects; - this.getRaycaster = getRaycaster; - this.setObjects = setObjects; - } -}; - -// node_modules/three/examples/jsm/controls/FirstPersonControls.js -var _lookDirection = new Vector3(); -var _spherical = new Spherical(); -var _target = new Vector3(); -var FirstPersonControls = class { - constructor(object, domElement) { - this.object = object; - this.domElement = domElement; - this.enabled = true; - this.movementSpeed = 1; - this.lookSpeed = 5e-3; - this.lookVertical = true; - this.autoForward = false; - this.activeLook = true; - this.heightSpeed = false; - this.heightCoef = 1; - this.heightMin = 0; - this.heightMax = 1; - this.constrainVertical = false; - this.verticalMin = 0; - this.verticalMax = Math.PI; - this.mouseDragOn = false; - this.autoSpeedFactor = 0; - this.pointerX = 0; - this.pointerY = 0; - this.moveForward = false; - this.moveBackward = false; - this.moveLeft = false; - this.moveRight = false; - this.viewHalfX = 0; - this.viewHalfY = 0; - let lat = 0; - let lon = 0; - this.handleResize = function() { - if (this.domElement === document) { - this.viewHalfX = window.innerWidth / 2; - this.viewHalfY = window.innerHeight / 2; - } else { - this.viewHalfX = this.domElement.offsetWidth / 2; - this.viewHalfY = this.domElement.offsetHeight / 2; - } - }; - this.onPointerDown = function(event) { - if (this.domElement !== document) { - this.domElement.focus(); - } - if (this.activeLook) { - switch (event.button) { - case 0: - this.moveForward = true; - break; - case 2: - this.moveBackward = true; - break; - } - } - this.mouseDragOn = true; - }; - this.onPointerUp = function(event) { - if (this.activeLook) { - switch (event.button) { - case 0: - this.moveForward = false; - break; - case 2: - this.moveBackward = false; - break; - } - } - this.mouseDragOn = false; - }; - this.onPointerMove = function(event) { - if (this.domElement === document) { - this.pointerX = event.pageX - this.viewHalfX; - this.pointerY = event.pageY - this.viewHalfY; - } else { - this.pointerX = event.pageX - this.domElement.offsetLeft - this.viewHalfX; - this.pointerY = event.pageY - this.domElement.offsetTop - this.viewHalfY; - } - }; - this.onKeyDown = function(event) { - switch (event.code) { - case "ArrowUp": - case "KeyW": - this.moveForward = true; - break; - case "ArrowLeft": - case "KeyA": - this.moveLeft = true; - break; - case "ArrowDown": - case "KeyS": - this.moveBackward = true; - break; - case "ArrowRight": - case "KeyD": - this.moveRight = true; - break; - case "KeyR": - this.moveUp = true; - break; - case "KeyF": - this.moveDown = true; - break; - } - }; - this.onKeyUp = function(event) { - switch (event.code) { - case "ArrowUp": - case "KeyW": - this.moveForward = false; - break; - case "ArrowLeft": - case "KeyA": - this.moveLeft = false; - break; - case "ArrowDown": - case "KeyS": - this.moveBackward = false; - break; - case "ArrowRight": - case "KeyD": - this.moveRight = false; - break; - case "KeyR": - this.moveUp = false; - break; - case "KeyF": - this.moveDown = false; - break; - } - }; - this.lookAt = function(x2, y2, z) { - if (x2.isVector3) { - _target.copy(x2); - } else { - _target.set(x2, y2, z); - } - this.object.lookAt(_target); - setOrientation(this); - return this; - }; - this.update = function() { - const targetPosition = new Vector3(); - return function update(delta) { - if (this.enabled === false) return; - if (this.heightSpeed) { - const y2 = MathUtils.clamp(this.object.position.y, this.heightMin, this.heightMax); - const heightDelta = y2 - this.heightMin; - this.autoSpeedFactor = delta * (heightDelta * this.heightCoef); - } else { - this.autoSpeedFactor = 0; - } - const actualMoveSpeed = delta * this.movementSpeed; - if (this.moveForward || this.autoForward && !this.moveBackward) this.object.translateZ(-(actualMoveSpeed + this.autoSpeedFactor)); - if (this.moveBackward) this.object.translateZ(actualMoveSpeed); - if (this.moveLeft) this.object.translateX(-actualMoveSpeed); - if (this.moveRight) this.object.translateX(actualMoveSpeed); - if (this.moveUp) this.object.translateY(actualMoveSpeed); - if (this.moveDown) this.object.translateY(-actualMoveSpeed); - let actualLookSpeed = delta * this.lookSpeed; - if (!this.activeLook) { - actualLookSpeed = 0; - } - let verticalLookRatio = 1; - if (this.constrainVertical) { - verticalLookRatio = Math.PI / (this.verticalMax - this.verticalMin); - } - lon -= this.pointerX * actualLookSpeed; - if (this.lookVertical) lat -= this.pointerY * actualLookSpeed * verticalLookRatio; - lat = Math.max(-85, Math.min(85, lat)); - let phi = MathUtils.degToRad(90 - lat); - const theta = MathUtils.degToRad(lon); - if (this.constrainVertical) { - phi = MathUtils.mapLinear(phi, 0, Math.PI, this.verticalMin, this.verticalMax); - } - const position2 = this.object.position; - targetPosition.setFromSphericalCoords(1, phi, theta).add(position2); - this.object.lookAt(targetPosition); - }; - }(); - this.dispose = function() { - this.domElement.removeEventListener("contextmenu", contextmenu); - this.domElement.removeEventListener("pointerdown", _onPointerDown); - this.domElement.removeEventListener("pointermove", _onPointerMove); - this.domElement.removeEventListener("pointerup", _onPointerUp); - window.removeEventListener("keydown", _onKeyDown); - window.removeEventListener("keyup", _onKeyUp); - }; - const _onPointerMove = this.onPointerMove.bind(this); - const _onPointerDown = this.onPointerDown.bind(this); - const _onPointerUp = this.onPointerUp.bind(this); - const _onKeyDown = this.onKeyDown.bind(this); - const _onKeyUp = this.onKeyUp.bind(this); - this.domElement.addEventListener("contextmenu", contextmenu); - this.domElement.addEventListener("pointerdown", _onPointerDown); - this.domElement.addEventListener("pointermove", _onPointerMove); - this.domElement.addEventListener("pointerup", _onPointerUp); - window.addEventListener("keydown", _onKeyDown); - window.addEventListener("keyup", _onKeyUp); - function setOrientation(controls) { - const quaternion = controls.object.quaternion; - _lookDirection.set(0, 0, -1).applyQuaternion(quaternion); - _spherical.setFromVector3(_lookDirection); - lat = 90 - MathUtils.radToDeg(_spherical.phi); - lon = MathUtils.radToDeg(_spherical.theta); - } - this.handleResize(); - setOrientation(this); - } -}; -function contextmenu(event) { - event.preventDefault(); -} - -// node_modules/three/examples/jsm/controls/FlyControls.js -var _changeEvent2 = { type: "change" }; -var FlyControls = class extends EventDispatcher { - constructor(object, domElement) { - super(); - this.object = object; - this.domElement = domElement; - this.enabled = true; - this.movementSpeed = 1; - this.rollSpeed = 5e-3; - this.dragToLook = false; - this.autoForward = false; - const scope = this; - const EPS2 = 1e-6; - const lastQuaternion = new Quaternion(); - const lastPosition = new Vector3(); - this.tmpQuaternion = new Quaternion(); - this.status = 0; - this.moveState = { up: 0, down: 0, left: 0, right: 0, forward: 0, back: 0, pitchUp: 0, pitchDown: 0, yawLeft: 0, yawRight: 0, rollLeft: 0, rollRight: 0 }; - this.moveVector = new Vector3(0, 0, 0); - this.rotationVector = new Vector3(0, 0, 0); - this.keydown = function(event) { - if (event.altKey || this.enabled === false) { - return; - } - switch (event.code) { - case "ShiftLeft": - case "ShiftRight": - this.movementSpeedMultiplier = 0.1; - break; - case "KeyW": - this.moveState.forward = 1; - break; - case "KeyS": - this.moveState.back = 1; - break; - case "KeyA": - this.moveState.left = 1; - break; - case "KeyD": - this.moveState.right = 1; - break; - case "KeyR": - this.moveState.up = 1; - break; - case "KeyF": - this.moveState.down = 1; - break; - case "ArrowUp": - this.moveState.pitchUp = 1; - break; - case "ArrowDown": - this.moveState.pitchDown = 1; - break; - case "ArrowLeft": - this.moveState.yawLeft = 1; - break; - case "ArrowRight": - this.moveState.yawRight = 1; - break; - case "KeyQ": - this.moveState.rollLeft = 1; - break; - case "KeyE": - this.moveState.rollRight = 1; - break; - } - this.updateMovementVector(); - this.updateRotationVector(); - }; - this.keyup = function(event) { - if (this.enabled === false) return; - switch (event.code) { - case "ShiftLeft": - case "ShiftRight": - this.movementSpeedMultiplier = 1; - break; - case "KeyW": - this.moveState.forward = 0; - break; - case "KeyS": - this.moveState.back = 0; - break; - case "KeyA": - this.moveState.left = 0; - break; - case "KeyD": - this.moveState.right = 0; - break; - case "KeyR": - this.moveState.up = 0; - break; - case "KeyF": - this.moveState.down = 0; - break; - case "ArrowUp": - this.moveState.pitchUp = 0; - break; - case "ArrowDown": - this.moveState.pitchDown = 0; - break; - case "ArrowLeft": - this.moveState.yawLeft = 0; - break; - case "ArrowRight": - this.moveState.yawRight = 0; - break; - case "KeyQ": - this.moveState.rollLeft = 0; - break; - case "KeyE": - this.moveState.rollRight = 0; - break; - } - this.updateMovementVector(); - this.updateRotationVector(); - }; - this.pointerdown = function(event) { - if (this.enabled === false) return; - if (this.dragToLook) { - this.status++; - } else { - switch (event.button) { - case 0: - this.moveState.forward = 1; - break; - case 2: - this.moveState.back = 1; - break; - } - this.updateMovementVector(); - } - }; - this.pointermove = function(event) { - if (this.enabled === false) return; - if (!this.dragToLook || this.status > 0) { - const container = this.getContainerDimensions(); - const halfWidth = container.size[0] / 2; - const halfHeight = container.size[1] / 2; - this.moveState.yawLeft = -(event.pageX - container.offset[0] - halfWidth) / halfWidth; - this.moveState.pitchDown = (event.pageY - container.offset[1] - halfHeight) / halfHeight; - this.updateRotationVector(); - } - }; - this.pointerup = function(event) { - if (this.enabled === false) return; - if (this.dragToLook) { - this.status--; - this.moveState.yawLeft = this.moveState.pitchDown = 0; - } else { - switch (event.button) { - case 0: - this.moveState.forward = 0; - break; - case 2: - this.moveState.back = 0; - break; - } - this.updateMovementVector(); - } - this.updateRotationVector(); - }; - this.pointercancel = function() { - if (this.enabled === false) return; - if (this.dragToLook) { - this.status = 0; - this.moveState.yawLeft = this.moveState.pitchDown = 0; - } else { - this.moveState.forward = 0; - this.moveState.back = 0; - this.updateMovementVector(); - } - this.updateRotationVector(); - }; - this.contextMenu = function(event) { - if (this.enabled === false) return; - event.preventDefault(); - }; - this.update = function(delta) { - if (this.enabled === false) return; - const moveMult = delta * scope.movementSpeed; - const rotMult = delta * scope.rollSpeed; - scope.object.translateX(scope.moveVector.x * moveMult); - scope.object.translateY(scope.moveVector.y * moveMult); - scope.object.translateZ(scope.moveVector.z * moveMult); - scope.tmpQuaternion.set(scope.rotationVector.x * rotMult, scope.rotationVector.y * rotMult, scope.rotationVector.z * rotMult, 1).normalize(); - scope.object.quaternion.multiply(scope.tmpQuaternion); - if (lastPosition.distanceToSquared(scope.object.position) > EPS2 || 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS2) { - scope.dispatchEvent(_changeEvent2); - lastQuaternion.copy(scope.object.quaternion); - lastPosition.copy(scope.object.position); - } - }; - this.updateMovementVector = function() { - const forward = this.moveState.forward || this.autoForward && !this.moveState.back ? 1 : 0; - this.moveVector.x = -this.moveState.left + this.moveState.right; - this.moveVector.y = -this.moveState.down + this.moveState.up; - this.moveVector.z = -forward + this.moveState.back; - }; - this.updateRotationVector = function() { - this.rotationVector.x = -this.moveState.pitchDown + this.moveState.pitchUp; - this.rotationVector.y = -this.moveState.yawRight + this.moveState.yawLeft; - this.rotationVector.z = -this.moveState.rollRight + this.moveState.rollLeft; - }; - this.getContainerDimensions = function() { - if (this.domElement != document) { - return { - size: [this.domElement.offsetWidth, this.domElement.offsetHeight], - offset: [this.domElement.offsetLeft, this.domElement.offsetTop] - }; - } else { - return { - size: [window.innerWidth, window.innerHeight], - offset: [0, 0] - }; - } - }; - this.dispose = function() { - this.domElement.removeEventListener("contextmenu", _contextmenu); - this.domElement.removeEventListener("pointerdown", _pointerdown); - this.domElement.removeEventListener("pointermove", _pointermove); - this.domElement.removeEventListener("pointerup", _pointerup); - this.domElement.removeEventListener("pointercancel", _pointercancel); - window.removeEventListener("keydown", _keydown); - window.removeEventListener("keyup", _keyup); - }; - const _contextmenu = this.contextMenu.bind(this); - const _pointermove = this.pointermove.bind(this); - const _pointerdown = this.pointerdown.bind(this); - const _pointerup = this.pointerup.bind(this); - const _pointercancel = this.pointercancel.bind(this); - const _keydown = this.keydown.bind(this); - const _keyup = this.keyup.bind(this); - this.domElement.addEventListener("contextmenu", _contextmenu); - this.domElement.addEventListener("pointerdown", _pointerdown); - this.domElement.addEventListener("pointermove", _pointermove); - this.domElement.addEventListener("pointerup", _pointerup); - this.domElement.addEventListener("pointercancel", _pointercancel); - window.addEventListener("keydown", _keydown); - window.addEventListener("keyup", _keyup); - this.updateMovementVector(); - this.updateRotationVector(); - } -}; - -// node_modules/three/examples/jsm/controls/OrbitControls.js -var _changeEvent3 = { type: "change" }; -var _startEvent2 = { type: "start" }; -var _endEvent2 = { type: "end" }; -var _ray = new Ray(); -var _plane2 = new Plane(); -var TILT_LIMIT = Math.cos(70 * MathUtils.DEG2RAD); -var OrbitControls = class extends EventDispatcher { - constructor(object, domElement) { - super(); - this.object = object; - this.domElement = domElement; - this.domElement.style.touchAction = "none"; - this.enabled = true; - this.target = new Vector3(); - this.cursor = new Vector3(); - this.minDistance = 0; - this.maxDistance = Infinity; - this.minZoom = 0; - this.maxZoom = Infinity; - this.minTargetRadius = 0; - this.maxTargetRadius = Infinity; - this.minPolarAngle = 0; - this.maxPolarAngle = Math.PI; - this.minAzimuthAngle = -Infinity; - this.maxAzimuthAngle = Infinity; - this.enableDamping = false; - this.dampingFactor = 0.05; - this.enableZoom = true; - this.zoomSpeed = 1; - this.enableRotate = true; - this.rotateSpeed = 1; - this.enablePan = true; - this.panSpeed = 1; - this.screenSpacePanning = true; - this.keyPanSpeed = 7; - this.zoomToCursor = false; - this.autoRotate = false; - this.autoRotateSpeed = 2; - this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" }; - this.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN }; - this.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN }; - this.target0 = this.target.clone(); - this.position0 = this.object.position.clone(); - this.zoom0 = this.object.zoom; - this._domElementKeyEvents = null; - this.getPolarAngle = function() { - return spherical.phi; - }; - this.getAzimuthalAngle = function() { - return spherical.theta; - }; - this.getDistance = function() { - return this.object.position.distanceTo(this.target); - }; - this.listenToKeyEvents = function(domElement2) { - domElement2.addEventListener("keydown", onKeyDown); - this._domElementKeyEvents = domElement2; - }; - this.stopListenToKeyEvents = function() { - this._domElementKeyEvents.removeEventListener("keydown", onKeyDown); - this._domElementKeyEvents = null; - }; - this.saveState = function() { - scope.target0.copy(scope.target); - scope.position0.copy(scope.object.position); - scope.zoom0 = scope.object.zoom; - }; - this.reset = function() { - scope.target.copy(scope.target0); - scope.object.position.copy(scope.position0); - scope.object.zoom = scope.zoom0; - scope.object.updateProjectionMatrix(); - scope.dispatchEvent(_changeEvent3); - scope.update(); - state = STATE2.NONE; - }; - this.update = function() { - const offset = new Vector3(); - const quat = new Quaternion().setFromUnitVectors(object.up, new Vector3(0, 1, 0)); - const quatInverse = quat.clone().invert(); - const lastPosition = new Vector3(); - const lastQuaternion = new Quaternion(); - const lastTargetPosition = new Vector3(); - const twoPI = 2 * Math.PI; - return function update(deltaTime = null) { - const position2 = scope.object.position; - offset.copy(position2).sub(scope.target); - offset.applyQuaternion(quat); - spherical.setFromVector3(offset); - if (scope.autoRotate && state === STATE2.NONE) { - rotateLeft(getAutoRotationAngle(deltaTime)); - } - if (scope.enableDamping) { - spherical.theta += sphericalDelta.theta * scope.dampingFactor; - spherical.phi += sphericalDelta.phi * scope.dampingFactor; - } else { - spherical.theta += sphericalDelta.theta; - spherical.phi += sphericalDelta.phi; - } - let min = scope.minAzimuthAngle; - let max2 = scope.maxAzimuthAngle; - if (isFinite(min) && isFinite(max2)) { - if (min < -Math.PI) min += twoPI; - else if (min > Math.PI) min -= twoPI; - if (max2 < -Math.PI) max2 += twoPI; - else if (max2 > Math.PI) max2 -= twoPI; - if (min <= max2) { - spherical.theta = Math.max(min, Math.min(max2, spherical.theta)); - } else { - spherical.theta = spherical.theta > (min + max2) / 2 ? Math.max(min, spherical.theta) : Math.min(max2, spherical.theta); - } - } - spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi)); - spherical.makeSafe(); - if (scope.enableDamping === true) { - scope.target.addScaledVector(panOffset, scope.dampingFactor); - } else { - scope.target.add(panOffset); - } - scope.target.sub(scope.cursor); - scope.target.clampLength(scope.minTargetRadius, scope.maxTargetRadius); - scope.target.add(scope.cursor); - let zoomChanged = false; - if (scope.zoomToCursor && performCursorZoom || scope.object.isOrthographicCamera) { - spherical.radius = clampDistance(spherical.radius); - } else { - const prevRadius = spherical.radius; - spherical.radius = clampDistance(spherical.radius * scale2); - zoomChanged = prevRadius != spherical.radius; - } - offset.setFromSpherical(spherical); - offset.applyQuaternion(quatInverse); - position2.copy(scope.target).add(offset); - scope.object.lookAt(scope.target); - if (scope.enableDamping === true) { - sphericalDelta.theta *= 1 - scope.dampingFactor; - sphericalDelta.phi *= 1 - scope.dampingFactor; - panOffset.multiplyScalar(1 - scope.dampingFactor); - } else { - sphericalDelta.set(0, 0, 0); - panOffset.set(0, 0, 0); - } - if (scope.zoomToCursor && performCursorZoom) { - let newRadius = null; - if (scope.object.isPerspectiveCamera) { - const prevRadius = offset.length(); - newRadius = clampDistance(prevRadius * scale2); - const radiusDelta = prevRadius - newRadius; - scope.object.position.addScaledVector(dollyDirection, radiusDelta); - scope.object.updateMatrixWorld(); - zoomChanged = !!radiusDelta; - } else if (scope.object.isOrthographicCamera) { - const mouseBefore = new Vector3(mouse.x, mouse.y, 0); - mouseBefore.unproject(scope.object); - const prevZoom = scope.object.zoom; - scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / scale2)); - scope.object.updateProjectionMatrix(); - zoomChanged = prevZoom !== scope.object.zoom; - const mouseAfter = new Vector3(mouse.x, mouse.y, 0); - mouseAfter.unproject(scope.object); - scope.object.position.sub(mouseAfter).add(mouseBefore); - scope.object.updateMatrixWorld(); - newRadius = offset.length(); - } else { - console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."); - scope.zoomToCursor = false; - } - if (newRadius !== null) { - if (this.screenSpacePanning) { - scope.target.set(0, 0, -1).transformDirection(scope.object.matrix).multiplyScalar(newRadius).add(scope.object.position); - } else { - _ray.origin.copy(scope.object.position); - _ray.direction.set(0, 0, -1).transformDirection(scope.object.matrix); - if (Math.abs(scope.object.up.dot(_ray.direction)) < TILT_LIMIT) { - object.lookAt(scope.target); - } else { - _plane2.setFromNormalAndCoplanarPoint(scope.object.up, scope.target); - _ray.intersectPlane(_plane2, scope.target); - } - } - } - } else if (scope.object.isOrthographicCamera) { - const prevZoom = scope.object.zoom; - scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / scale2)); - if (prevZoom !== scope.object.zoom) { - scope.object.updateProjectionMatrix(); - zoomChanged = true; - } - } - scale2 = 1; - performCursorZoom = false; - if (zoomChanged || lastPosition.distanceToSquared(scope.object.position) > EPS2 || 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS2 || lastTargetPosition.distanceToSquared(scope.target) > EPS2) { - scope.dispatchEvent(_changeEvent3); - lastPosition.copy(scope.object.position); - lastQuaternion.copy(scope.object.quaternion); - lastTargetPosition.copy(scope.target); - return true; - } - return false; - }; - }(); - this.dispose = function() { - scope.domElement.removeEventListener("contextmenu", onContextMenu2); - scope.domElement.removeEventListener("pointerdown", onPointerDown3); - scope.domElement.removeEventListener("pointercancel", onPointerUp3); - scope.domElement.removeEventListener("wheel", onMouseWheel); - scope.domElement.removeEventListener("pointermove", onPointerMove3); - scope.domElement.removeEventListener("pointerup", onPointerUp3); - const document3 = scope.domElement.getRootNode(); - document3.removeEventListener("keydown", interceptControlDown, { capture: true }); - if (scope._domElementKeyEvents !== null) { - scope._domElementKeyEvents.removeEventListener("keydown", onKeyDown); - scope._domElementKeyEvents = null; - } - }; - const scope = this; - const STATE2 = { - NONE: -1, - ROTATE: 0, - DOLLY: 1, - PAN: 2, - TOUCH_ROTATE: 3, - TOUCH_PAN: 4, - TOUCH_DOLLY_PAN: 5, - TOUCH_DOLLY_ROTATE: 6 - }; - let state = STATE2.NONE; - const EPS2 = 1e-6; - const spherical = new Spherical(); - const sphericalDelta = new Spherical(); - let scale2 = 1; - const panOffset = new Vector3(); - const rotateStart = new Vector2(); - const rotateEnd = new Vector2(); - const rotateDelta = new Vector2(); - const panStart = new Vector2(); - const panEnd = new Vector2(); - const panDelta = new Vector2(); - const dollyStart = new Vector2(); - const dollyEnd = new Vector2(); - const dollyDelta = new Vector2(); - const dollyDirection = new Vector3(); - const mouse = new Vector2(); - let performCursorZoom = false; - const pointers = []; - const pointerPositions = {}; - let controlActive = false; - function getAutoRotationAngle(deltaTime) { - if (deltaTime !== null) { - return 2 * Math.PI / 60 * scope.autoRotateSpeed * deltaTime; - } else { - return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; - } - } - function getZoomScale(delta) { - const normalizedDelta = Math.abs(delta * 0.01); - return Math.pow(0.95, scope.zoomSpeed * normalizedDelta); - } - function rotateLeft(angle) { - sphericalDelta.theta -= angle; - } - function rotateUp(angle) { - sphericalDelta.phi -= angle; - } - const panLeft = function() { - const v = new Vector3(); - return function panLeft2(distance, objectMatrix) { - v.setFromMatrixColumn(objectMatrix, 0); - v.multiplyScalar(-distance); - panOffset.add(v); - }; - }(); - const panUp = function() { - const v = new Vector3(); - return function panUp2(distance, objectMatrix) { - if (scope.screenSpacePanning === true) { - v.setFromMatrixColumn(objectMatrix, 1); - } else { - v.setFromMatrixColumn(objectMatrix, 0); - v.crossVectors(scope.object.up, v); - } - v.multiplyScalar(distance); - panOffset.add(v); - }; - }(); - const pan = function() { - const offset = new Vector3(); - return function pan2(deltaX, deltaY) { - const element = scope.domElement; - if (scope.object.isPerspectiveCamera) { - const position2 = scope.object.position; - offset.copy(position2).sub(scope.target); - let targetDistance = offset.length(); - targetDistance *= Math.tan(scope.object.fov / 2 * Math.PI / 180); - panLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix); - panUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix); - } else if (scope.object.isOrthographicCamera) { - panLeft(deltaX * (scope.object.right - scope.object.left) / scope.object.zoom / element.clientWidth, scope.object.matrix); - panUp(deltaY * (scope.object.top - scope.object.bottom) / scope.object.zoom / element.clientHeight, scope.object.matrix); - } else { - console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."); - scope.enablePan = false; - } - }; - }(); - function dollyOut(dollyScale) { - if (scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera) { - scale2 /= dollyScale; - } else { - console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."); - scope.enableZoom = false; - } - } - function dollyIn(dollyScale) { - if (scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera) { - scale2 *= dollyScale; - } else { - console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."); - scope.enableZoom = false; - } - } - function updateZoomParameters(x2, y2) { - if (!scope.zoomToCursor) { - return; - } - performCursorZoom = true; - const rect = scope.domElement.getBoundingClientRect(); - const dx = x2 - rect.left; - const dy = y2 - rect.top; - const w = rect.width; - const h = rect.height; - mouse.x = dx / w * 2 - 1; - mouse.y = -(dy / h) * 2 + 1; - dollyDirection.set(mouse.x, mouse.y, 1).unproject(scope.object).sub(scope.object.position).normalize(); - } - function clampDistance(dist) { - return Math.max(scope.minDistance, Math.min(scope.maxDistance, dist)); - } - function handleMouseDownRotate(event) { - rotateStart.set(event.clientX, event.clientY); - } - function handleMouseDownDolly(event) { - updateZoomParameters(event.clientX, event.clientX); - dollyStart.set(event.clientX, event.clientY); - } - function handleMouseDownPan(event) { - panStart.set(event.clientX, event.clientY); - } - function handleMouseMoveRotate(event) { - rotateEnd.set(event.clientX, event.clientY); - rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed); - const element = scope.domElement; - rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); - rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight); - rotateStart.copy(rotateEnd); - scope.update(); - } - function handleMouseMoveDolly(event) { - dollyEnd.set(event.clientX, event.clientY); - dollyDelta.subVectors(dollyEnd, dollyStart); - if (dollyDelta.y > 0) { - dollyOut(getZoomScale(dollyDelta.y)); - } else if (dollyDelta.y < 0) { - dollyIn(getZoomScale(dollyDelta.y)); - } - dollyStart.copy(dollyEnd); - scope.update(); - } - function handleMouseMovePan(event) { - panEnd.set(event.clientX, event.clientY); - panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed); - pan(panDelta.x, panDelta.y); - panStart.copy(panEnd); - scope.update(); - } - function handleMouseWheel(event) { - updateZoomParameters(event.clientX, event.clientY); - if (event.deltaY < 0) { - dollyIn(getZoomScale(event.deltaY)); - } else if (event.deltaY > 0) { - dollyOut(getZoomScale(event.deltaY)); - } - scope.update(); - } - function handleKeyDown(event) { - let needsUpdate = false; - switch (event.code) { - case scope.keys.UP: - if (event.ctrlKey || event.metaKey || event.shiftKey) { - rotateUp(2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight); - } else { - pan(0, scope.keyPanSpeed); - } - needsUpdate = true; - break; - case scope.keys.BOTTOM: - if (event.ctrlKey || event.metaKey || event.shiftKey) { - rotateUp(-2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight); - } else { - pan(0, -scope.keyPanSpeed); - } - needsUpdate = true; - break; - case scope.keys.LEFT: - if (event.ctrlKey || event.metaKey || event.shiftKey) { - rotateLeft(2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight); - } else { - pan(scope.keyPanSpeed, 0); - } - needsUpdate = true; - break; - case scope.keys.RIGHT: - if (event.ctrlKey || event.metaKey || event.shiftKey) { - rotateLeft(-2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight); - } else { - pan(-scope.keyPanSpeed, 0); - } - needsUpdate = true; - break; - } - if (needsUpdate) { - event.preventDefault(); - scope.update(); - } - } - function handleTouchStartRotate(event) { - if (pointers.length === 1) { - rotateStart.set(event.pageX, event.pageY); - } else { - const position2 = getSecondPointerPosition(event); - const x2 = 0.5 * (event.pageX + position2.x); - const y2 = 0.5 * (event.pageY + position2.y); - rotateStart.set(x2, y2); - } - } - function handleTouchStartPan(event) { - if (pointers.length === 1) { - panStart.set(event.pageX, event.pageY); - } else { - const position2 = getSecondPointerPosition(event); - const x2 = 0.5 * (event.pageX + position2.x); - const y2 = 0.5 * (event.pageY + position2.y); - panStart.set(x2, y2); - } - } - function handleTouchStartDolly(event) { - const position2 = getSecondPointerPosition(event); - const dx = event.pageX - position2.x; - const dy = event.pageY - position2.y; - const distance = Math.sqrt(dx * dx + dy * dy); - dollyStart.set(0, distance); - } - function handleTouchStartDollyPan(event) { - if (scope.enableZoom) handleTouchStartDolly(event); - if (scope.enablePan) handleTouchStartPan(event); - } - function handleTouchStartDollyRotate(event) { - if (scope.enableZoom) handleTouchStartDolly(event); - if (scope.enableRotate) handleTouchStartRotate(event); - } - function handleTouchMoveRotate(event) { - if (pointers.length == 1) { - rotateEnd.set(event.pageX, event.pageY); - } else { - const position2 = getSecondPointerPosition(event); - const x2 = 0.5 * (event.pageX + position2.x); - const y2 = 0.5 * (event.pageY + position2.y); - rotateEnd.set(x2, y2); - } - rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed); - const element = scope.domElement; - rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); - rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight); - rotateStart.copy(rotateEnd); - } - function handleTouchMovePan(event) { - if (pointers.length === 1) { - panEnd.set(event.pageX, event.pageY); - } else { - const position2 = getSecondPointerPosition(event); - const x2 = 0.5 * (event.pageX + position2.x); - const y2 = 0.5 * (event.pageY + position2.y); - panEnd.set(x2, y2); - } - panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed); - pan(panDelta.x, panDelta.y); - panStart.copy(panEnd); - } - function handleTouchMoveDolly(event) { - const position2 = getSecondPointerPosition(event); - const dx = event.pageX - position2.x; - const dy = event.pageY - position2.y; - const distance = Math.sqrt(dx * dx + dy * dy); - dollyEnd.set(0, distance); - dollyDelta.set(0, Math.pow(dollyEnd.y / dollyStart.y, scope.zoomSpeed)); - dollyOut(dollyDelta.y); - dollyStart.copy(dollyEnd); - const centerX = (event.pageX + position2.x) * 0.5; - const centerY = (event.pageY + position2.y) * 0.5; - updateZoomParameters(centerX, centerY); - } - function handleTouchMoveDollyPan(event) { - if (scope.enableZoom) handleTouchMoveDolly(event); - if (scope.enablePan) handleTouchMovePan(event); - } - function handleTouchMoveDollyRotate(event) { - if (scope.enableZoom) handleTouchMoveDolly(event); - if (scope.enableRotate) handleTouchMoveRotate(event); - } - function onPointerDown3(event) { - if (scope.enabled === false) return; - if (pointers.length === 0) { - scope.domElement.setPointerCapture(event.pointerId); - scope.domElement.addEventListener("pointermove", onPointerMove3); - scope.domElement.addEventListener("pointerup", onPointerUp3); - } - if (isTrackingPointer(event)) return; - addPointer(event); - if (event.pointerType === "touch") { - onTouchStart(event); - } else { - onMouseDown(event); - } - } - function onPointerMove3(event) { - if (scope.enabled === false) return; - if (event.pointerType === "touch") { - onTouchMove(event); - } else { - onMouseMove2(event); - } - } - function onPointerUp3(event) { - removePointer(event); - switch (pointers.length) { - case 0: - scope.domElement.releasePointerCapture(event.pointerId); - scope.domElement.removeEventListener("pointermove", onPointerMove3); - scope.domElement.removeEventListener("pointerup", onPointerUp3); - scope.dispatchEvent(_endEvent2); - state = STATE2.NONE; - break; - case 1: - const pointerId = pointers[0]; - const position2 = pointerPositions[pointerId]; - onTouchStart({ pointerId, pageX: position2.x, pageY: position2.y }); - break; - } - } - function onMouseDown(event) { - let mouseAction; - switch (event.button) { - case 0: - mouseAction = scope.mouseButtons.LEFT; - break; - case 1: - mouseAction = scope.mouseButtons.MIDDLE; - break; - case 2: - mouseAction = scope.mouseButtons.RIGHT; - break; - default: - mouseAction = -1; - } - switch (mouseAction) { - case MOUSE.DOLLY: - if (scope.enableZoom === false) return; - handleMouseDownDolly(event); - state = STATE2.DOLLY; - break; - case MOUSE.ROTATE: - if (event.ctrlKey || event.metaKey || event.shiftKey) { - if (scope.enablePan === false) return; - handleMouseDownPan(event); - state = STATE2.PAN; - } else { - if (scope.enableRotate === false) return; - handleMouseDownRotate(event); - state = STATE2.ROTATE; - } - break; - case MOUSE.PAN: - if (event.ctrlKey || event.metaKey || event.shiftKey) { - if (scope.enableRotate === false) return; - handleMouseDownRotate(event); - state = STATE2.ROTATE; - } else { - if (scope.enablePan === false) return; - handleMouseDownPan(event); - state = STATE2.PAN; - } - break; - default: - state = STATE2.NONE; - } - if (state !== STATE2.NONE) { - scope.dispatchEvent(_startEvent2); - } - } - function onMouseMove2(event) { - switch (state) { - case STATE2.ROTATE: - if (scope.enableRotate === false) return; - handleMouseMoveRotate(event); - break; - case STATE2.DOLLY: - if (scope.enableZoom === false) return; - handleMouseMoveDolly(event); - break; - case STATE2.PAN: - if (scope.enablePan === false) return; - handleMouseMovePan(event); - break; - } - } - function onMouseWheel(event) { - if (scope.enabled === false || scope.enableZoom === false || state !== STATE2.NONE) return; - event.preventDefault(); - scope.dispatchEvent(_startEvent2); - handleMouseWheel(customWheelEvent(event)); - scope.dispatchEvent(_endEvent2); - } - function customWheelEvent(event) { - const mode = event.deltaMode; - const newEvent = { - clientX: event.clientX, - clientY: event.clientY, - deltaY: event.deltaY - }; - switch (mode) { - case 1: - newEvent.deltaY *= 16; - break; - case 2: - newEvent.deltaY *= 100; - break; - } - if (event.ctrlKey && !controlActive) { - newEvent.deltaY *= 10; - } - return newEvent; - } - function interceptControlDown(event) { - if (event.key === "Control") { - controlActive = true; - const document3 = scope.domElement.getRootNode(); - document3.addEventListener("keyup", interceptControlUp, { passive: true, capture: true }); - } - } - function interceptControlUp(event) { - if (event.key === "Control") { - controlActive = false; - const document3 = scope.domElement.getRootNode(); - document3.removeEventListener("keyup", interceptControlUp, { passive: true, capture: true }); - } - } - function onKeyDown(event) { - if (scope.enabled === false || scope.enablePan === false) return; - handleKeyDown(event); - } - function onTouchStart(event) { - trackPointer(event); - switch (pointers.length) { - case 1: - switch (scope.touches.ONE) { - case TOUCH.ROTATE: - if (scope.enableRotate === false) return; - handleTouchStartRotate(event); - state = STATE2.TOUCH_ROTATE; - break; - case TOUCH.PAN: - if (scope.enablePan === false) return; - handleTouchStartPan(event); - state = STATE2.TOUCH_PAN; - break; - default: - state = STATE2.NONE; - } - break; - case 2: - switch (scope.touches.TWO) { - case TOUCH.DOLLY_PAN: - if (scope.enableZoom === false && scope.enablePan === false) return; - handleTouchStartDollyPan(event); - state = STATE2.TOUCH_DOLLY_PAN; - break; - case TOUCH.DOLLY_ROTATE: - if (scope.enableZoom === false && scope.enableRotate === false) return; - handleTouchStartDollyRotate(event); - state = STATE2.TOUCH_DOLLY_ROTATE; - break; - default: - state = STATE2.NONE; - } - break; - default: - state = STATE2.NONE; - } - if (state !== STATE2.NONE) { - scope.dispatchEvent(_startEvent2); - } - } - function onTouchMove(event) { - trackPointer(event); - switch (state) { - case STATE2.TOUCH_ROTATE: - if (scope.enableRotate === false) return; - handleTouchMoveRotate(event); - scope.update(); - break; - case STATE2.TOUCH_PAN: - if (scope.enablePan === false) return; - handleTouchMovePan(event); - scope.update(); - break; - case STATE2.TOUCH_DOLLY_PAN: - if (scope.enableZoom === false && scope.enablePan === false) return; - handleTouchMoveDollyPan(event); - scope.update(); - break; - case STATE2.TOUCH_DOLLY_ROTATE: - if (scope.enableZoom === false && scope.enableRotate === false) return; - handleTouchMoveDollyRotate(event); - scope.update(); - break; - default: - state = STATE2.NONE; - } - } - function onContextMenu2(event) { - if (scope.enabled === false) return; - event.preventDefault(); - } - function addPointer(event) { - pointers.push(event.pointerId); - } - function removePointer(event) { - delete pointerPositions[event.pointerId]; - for (let i = 0; i < pointers.length; i++) { - if (pointers[i] == event.pointerId) { - pointers.splice(i, 1); - return; - } - } - } - function isTrackingPointer(event) { - for (let i = 0; i < pointers.length; i++) { - if (pointers[i] == event.pointerId) return true; - } - return false; - } - function trackPointer(event) { - let position2 = pointerPositions[event.pointerId]; - if (position2 === void 0) { - position2 = new Vector2(); - pointerPositions[event.pointerId] = position2; - } - position2.set(event.pageX, event.pageY); - } - function getSecondPointerPosition(event) { - const pointerId = event.pointerId === pointers[0] ? pointers[1] : pointers[0]; - return pointerPositions[pointerId]; - } - scope.domElement.addEventListener("contextmenu", onContextMenu2); - scope.domElement.addEventListener("pointerdown", onPointerDown3); - scope.domElement.addEventListener("pointercancel", onPointerUp3); - scope.domElement.addEventListener("wheel", onMouseWheel, { passive: false }); - const document2 = scope.domElement.getRootNode(); - document2.addEventListener("keydown", interceptControlDown, { passive: true, capture: true }); - this.update(); - } -}; - -// node_modules/three/examples/jsm/controls/MapControls.js -var MapControls = class extends OrbitControls { - constructor(object, domElement) { - super(object, domElement); - this.screenSpacePanning = false; - this.mouseButtons = { LEFT: MOUSE.PAN, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.ROTATE }; - this.touches = { ONE: TOUCH.PAN, TWO: TOUCH.DOLLY_ROTATE }; - } -}; - -// node_modules/three/examples/jsm/controls/PointerLockControls.js -var _euler = new Euler(0, 0, 0, "YXZ"); -var _vector2 = new Vector3(); -var _changeEvent4 = { type: "change" }; -var _lockEvent = { type: "lock" }; -var _unlockEvent = { type: "unlock" }; -var _PI_2 = Math.PI / 2; -var PointerLockControls = class extends EventDispatcher { - constructor(camera, domElement) { - super(); - this.camera = camera; - this.domElement = domElement; - this.isLocked = false; - this.minPolarAngle = 0; - this.maxPolarAngle = Math.PI; - this.pointerSpeed = 1; - this._onMouseMove = onMouseMove.bind(this); - this._onPointerlockChange = onPointerlockChange.bind(this); - this._onPointerlockError = onPointerlockError.bind(this); - this.connect(); - } - connect() { - this.domElement.ownerDocument.addEventListener("mousemove", this._onMouseMove); - this.domElement.ownerDocument.addEventListener("pointerlockchange", this._onPointerlockChange); - this.domElement.ownerDocument.addEventListener("pointerlockerror", this._onPointerlockError); - } - disconnect() { - this.domElement.ownerDocument.removeEventListener("mousemove", this._onMouseMove); - this.domElement.ownerDocument.removeEventListener("pointerlockchange", this._onPointerlockChange); - this.domElement.ownerDocument.removeEventListener("pointerlockerror", this._onPointerlockError); - } - dispose() { - this.disconnect(); - } - getObject() { - return this.camera; - } - getDirection(v) { - return v.set(0, 0, -1).applyQuaternion(this.camera.quaternion); - } - moveForward(distance) { - const camera = this.camera; - _vector2.setFromMatrixColumn(camera.matrix, 0); - _vector2.crossVectors(camera.up, _vector2); - camera.position.addScaledVector(_vector2, distance); - } - moveRight(distance) { - const camera = this.camera; - _vector2.setFromMatrixColumn(camera.matrix, 0); - camera.position.addScaledVector(_vector2, distance); - } - lock() { - this.domElement.requestPointerLock(); - } - unlock() { - this.domElement.ownerDocument.exitPointerLock(); - } -}; -function onMouseMove(event) { - if (this.isLocked === false) return; - const movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0; - const movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0; - const camera = this.camera; - _euler.setFromQuaternion(camera.quaternion); - _euler.y -= movementX * 2e-3 * this.pointerSpeed; - _euler.x -= movementY * 2e-3 * this.pointerSpeed; - _euler.x = Math.max(_PI_2 - this.maxPolarAngle, Math.min(_PI_2 - this.minPolarAngle, _euler.x)); - camera.quaternion.setFromEuler(_euler); - this.dispatchEvent(_changeEvent4); -} -function onPointerlockChange() { - if (this.domElement.ownerDocument.pointerLockElement === this.domElement) { - this.dispatchEvent(_lockEvent); - this.isLocked = true; - } else { - this.dispatchEvent(_unlockEvent); - this.isLocked = false; - } -} -function onPointerlockError() { - console.error("THREE.PointerLockControls: Unable to use Pointer Lock API"); -} - -// node_modules/three/examples/jsm/controls/TrackballControls.js -var _changeEvent5 = { type: "change" }; -var _startEvent3 = { type: "start" }; -var _endEvent3 = { type: "end" }; -var TrackballControls = class extends EventDispatcher { - constructor(object, domElement) { - super(); - const scope = this; - const STATE2 = { NONE: -1, ROTATE: 0, ZOOM: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PAN: 4 }; - this.object = object; - this.domElement = domElement; - this.domElement.style.touchAction = "none"; - this.enabled = true; - this.screen = { left: 0, top: 0, width: 0, height: 0 }; - this.rotateSpeed = 1; - this.zoomSpeed = 1.2; - this.panSpeed = 0.3; - this.noRotate = false; - this.noZoom = false; - this.noPan = false; - this.staticMoving = false; - this.dynamicDampingFactor = 0.2; - this.minDistance = 0; - this.maxDistance = Infinity; - this.minZoom = 0; - this.maxZoom = Infinity; - this.keys = [ - "KeyA", - "KeyS", - "KeyD" - /*D*/ - ]; - this.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN }; - this.target = new Vector3(); - const EPS2 = 1e-6; - const lastPosition = new Vector3(); - let lastZoom = 1; - let _state = STATE2.NONE, _keyState = STATE2.NONE, _touchZoomDistanceStart = 0, _touchZoomDistanceEnd = 0, _lastAngle = 0; - const _eye = new Vector3(), _movePrev = new Vector2(), _moveCurr = new Vector2(), _lastAxis = new Vector3(), _zoomStart = new Vector2(), _zoomEnd = new Vector2(), _panStart = new Vector2(), _panEnd = new Vector2(), _pointers = [], _pointerPositions = {}; - this.target0 = this.target.clone(); - this.position0 = this.object.position.clone(); - this.up0 = this.object.up.clone(); - this.zoom0 = this.object.zoom; - this.handleResize = function() { - const box = scope.domElement.getBoundingClientRect(); - const d = scope.domElement.ownerDocument.documentElement; - scope.screen.left = box.left + window.pageXOffset - d.clientLeft; - scope.screen.top = box.top + window.pageYOffset - d.clientTop; - scope.screen.width = box.width; - scope.screen.height = box.height; - }; - const getMouseOnScreen = function() { - const vector = new Vector2(); - return function getMouseOnScreen2(pageX, pageY) { - vector.set( - (pageX - scope.screen.left) / scope.screen.width, - (pageY - scope.screen.top) / scope.screen.height - ); - return vector; - }; - }(); - const getMouseOnCircle = function() { - const vector = new Vector2(); - return function getMouseOnCircle2(pageX, pageY) { - vector.set( - (pageX - scope.screen.width * 0.5 - scope.screen.left) / (scope.screen.width * 0.5), - (scope.screen.height + 2 * (scope.screen.top - pageY)) / scope.screen.width - // screen.width intentional - ); - return vector; - }; - }(); - this.rotateCamera = function() { - const axis = new Vector3(), quaternion = new Quaternion(), eyeDirection = new Vector3(), objectUpDirection = new Vector3(), objectSidewaysDirection = new Vector3(), moveDirection = new Vector3(); - return function rotateCamera() { - moveDirection.set(_moveCurr.x - _movePrev.x, _moveCurr.y - _movePrev.y, 0); - let angle = moveDirection.length(); - if (angle) { - _eye.copy(scope.object.position).sub(scope.target); - eyeDirection.copy(_eye).normalize(); - objectUpDirection.copy(scope.object.up).normalize(); - objectSidewaysDirection.crossVectors(objectUpDirection, eyeDirection).normalize(); - objectUpDirection.setLength(_moveCurr.y - _movePrev.y); - objectSidewaysDirection.setLength(_moveCurr.x - _movePrev.x); - moveDirection.copy(objectUpDirection.add(objectSidewaysDirection)); - axis.crossVectors(moveDirection, _eye).normalize(); - angle *= scope.rotateSpeed; - quaternion.setFromAxisAngle(axis, angle); - _eye.applyQuaternion(quaternion); - scope.object.up.applyQuaternion(quaternion); - _lastAxis.copy(axis); - _lastAngle = angle; - } else if (!scope.staticMoving && _lastAngle) { - _lastAngle *= Math.sqrt(1 - scope.dynamicDampingFactor); - _eye.copy(scope.object.position).sub(scope.target); - quaternion.setFromAxisAngle(_lastAxis, _lastAngle); - _eye.applyQuaternion(quaternion); - scope.object.up.applyQuaternion(quaternion); - } - _movePrev.copy(_moveCurr); - }; - }(); - this.zoomCamera = function() { - let factor; - if (_state === STATE2.TOUCH_ZOOM_PAN) { - factor = _touchZoomDistanceStart / _touchZoomDistanceEnd; - _touchZoomDistanceStart = _touchZoomDistanceEnd; - if (scope.object.isPerspectiveCamera) { - _eye.multiplyScalar(factor); - } else if (scope.object.isOrthographicCamera) { - scope.object.zoom = MathUtils.clamp(scope.object.zoom / factor, scope.minZoom, scope.maxZoom); - if (lastZoom !== scope.object.zoom) { - scope.object.updateProjectionMatrix(); - } - } else { - console.warn("THREE.TrackballControls: Unsupported camera type"); - } - } else { - factor = 1 + (_zoomEnd.y - _zoomStart.y) * scope.zoomSpeed; - if (factor !== 1 && factor > 0) { - if (scope.object.isPerspectiveCamera) { - _eye.multiplyScalar(factor); - } else if (scope.object.isOrthographicCamera) { - scope.object.zoom = MathUtils.clamp(scope.object.zoom / factor, scope.minZoom, scope.maxZoom); - if (lastZoom !== scope.object.zoom) { - scope.object.updateProjectionMatrix(); - } - } else { - console.warn("THREE.TrackballControls: Unsupported camera type"); - } - } - if (scope.staticMoving) { - _zoomStart.copy(_zoomEnd); - } else { - _zoomStart.y += (_zoomEnd.y - _zoomStart.y) * this.dynamicDampingFactor; - } - } - }; - this.panCamera = function() { - const mouseChange = new Vector2(), objectUp = new Vector3(), pan = new Vector3(); - return function panCamera() { - mouseChange.copy(_panEnd).sub(_panStart); - if (mouseChange.lengthSq()) { - if (scope.object.isOrthographicCamera) { - const scale_x = (scope.object.right - scope.object.left) / scope.object.zoom / scope.domElement.clientWidth; - const scale_y = (scope.object.top - scope.object.bottom) / scope.object.zoom / scope.domElement.clientWidth; - mouseChange.x *= scale_x; - mouseChange.y *= scale_y; - } - mouseChange.multiplyScalar(_eye.length() * scope.panSpeed); - pan.copy(_eye).cross(scope.object.up).setLength(mouseChange.x); - pan.add(objectUp.copy(scope.object.up).setLength(mouseChange.y)); - scope.object.position.add(pan); - scope.target.add(pan); - if (scope.staticMoving) { - _panStart.copy(_panEnd); - } else { - _panStart.add(mouseChange.subVectors(_panEnd, _panStart).multiplyScalar(scope.dynamicDampingFactor)); - } - } - }; - }(); - this.checkDistances = function() { - if (!scope.noZoom || !scope.noPan) { - if (_eye.lengthSq() > scope.maxDistance * scope.maxDistance) { - scope.object.position.addVectors(scope.target, _eye.setLength(scope.maxDistance)); - _zoomStart.copy(_zoomEnd); - } - if (_eye.lengthSq() < scope.minDistance * scope.minDistance) { - scope.object.position.addVectors(scope.target, _eye.setLength(scope.minDistance)); - _zoomStart.copy(_zoomEnd); - } - } - }; - this.update = function() { - _eye.subVectors(scope.object.position, scope.target); - if (!scope.noRotate) { - scope.rotateCamera(); - } - if (!scope.noZoom) { - scope.zoomCamera(); - } - if (!scope.noPan) { - scope.panCamera(); - } - scope.object.position.addVectors(scope.target, _eye); - if (scope.object.isPerspectiveCamera) { - scope.checkDistances(); - scope.object.lookAt(scope.target); - if (lastPosition.distanceToSquared(scope.object.position) > EPS2) { - scope.dispatchEvent(_changeEvent5); - lastPosition.copy(scope.object.position); - } - } else if (scope.object.isOrthographicCamera) { - scope.object.lookAt(scope.target); - if (lastPosition.distanceToSquared(scope.object.position) > EPS2 || lastZoom !== scope.object.zoom) { - scope.dispatchEvent(_changeEvent5); - lastPosition.copy(scope.object.position); - lastZoom = scope.object.zoom; - } - } else { - console.warn("THREE.TrackballControls: Unsupported camera type"); - } - }; - this.reset = function() { - _state = STATE2.NONE; - _keyState = STATE2.NONE; - scope.target.copy(scope.target0); - scope.object.position.copy(scope.position0); - scope.object.up.copy(scope.up0); - scope.object.zoom = scope.zoom0; - scope.object.updateProjectionMatrix(); - _eye.subVectors(scope.object.position, scope.target); - scope.object.lookAt(scope.target); - scope.dispatchEvent(_changeEvent5); - lastPosition.copy(scope.object.position); - lastZoom = scope.object.zoom; - }; - function onPointerDown3(event) { - if (scope.enabled === false) return; - if (_pointers.length === 0) { - scope.domElement.setPointerCapture(event.pointerId); - scope.domElement.addEventListener("pointermove", onPointerMove3); - scope.domElement.addEventListener("pointerup", onPointerUp3); - } - addPointer(event); - if (event.pointerType === "touch") { - onTouchStart(event); - } else { - onMouseDown(event); - } - } - function onPointerMove3(event) { - if (scope.enabled === false) return; - if (event.pointerType === "touch") { - onTouchMove(event); - } else { - onMouseMove2(event); - } - } - function onPointerUp3(event) { - if (scope.enabled === false) return; - if (event.pointerType === "touch") { - onTouchEnd(event); - } else { - onMouseUp(); - } - removePointer(event); - if (_pointers.length === 0) { - scope.domElement.releasePointerCapture(event.pointerId); - scope.domElement.removeEventListener("pointermove", onPointerMove3); - scope.domElement.removeEventListener("pointerup", onPointerUp3); - } - } - function onPointerCancel2(event) { - removePointer(event); - } - function keydown(event) { - if (scope.enabled === false) return; - window.removeEventListener("keydown", keydown); - if (_keyState !== STATE2.NONE) { - return; - } else if (event.code === scope.keys[STATE2.ROTATE] && !scope.noRotate) { - _keyState = STATE2.ROTATE; - } else if (event.code === scope.keys[STATE2.ZOOM] && !scope.noZoom) { - _keyState = STATE2.ZOOM; - } else if (event.code === scope.keys[STATE2.PAN] && !scope.noPan) { - _keyState = STATE2.PAN; - } - } - function keyup() { - if (scope.enabled === false) return; - _keyState = STATE2.NONE; - window.addEventListener("keydown", keydown); - } - function onMouseDown(event) { - if (_state === STATE2.NONE) { - switch (event.button) { - case scope.mouseButtons.LEFT: - _state = STATE2.ROTATE; - break; - case scope.mouseButtons.MIDDLE: - _state = STATE2.ZOOM; - break; - case scope.mouseButtons.RIGHT: - _state = STATE2.PAN; - break; - } - } - const state = _keyState !== STATE2.NONE ? _keyState : _state; - if (state === STATE2.ROTATE && !scope.noRotate) { - _moveCurr.copy(getMouseOnCircle(event.pageX, event.pageY)); - _movePrev.copy(_moveCurr); - } else if (state === STATE2.ZOOM && !scope.noZoom) { - _zoomStart.copy(getMouseOnScreen(event.pageX, event.pageY)); - _zoomEnd.copy(_zoomStart); - } else if (state === STATE2.PAN && !scope.noPan) { - _panStart.copy(getMouseOnScreen(event.pageX, event.pageY)); - _panEnd.copy(_panStart); - } - scope.dispatchEvent(_startEvent3); - } - function onMouseMove2(event) { - const state = _keyState !== STATE2.NONE ? _keyState : _state; - if (state === STATE2.ROTATE && !scope.noRotate) { - _movePrev.copy(_moveCurr); - _moveCurr.copy(getMouseOnCircle(event.pageX, event.pageY)); - } else if (state === STATE2.ZOOM && !scope.noZoom) { - _zoomEnd.copy(getMouseOnScreen(event.pageX, event.pageY)); - } else if (state === STATE2.PAN && !scope.noPan) { - _panEnd.copy(getMouseOnScreen(event.pageX, event.pageY)); - } - } - function onMouseUp() { - _state = STATE2.NONE; - scope.dispatchEvent(_endEvent3); - } - function onMouseWheel(event) { - if (scope.enabled === false) return; - if (scope.noZoom === true) return; - event.preventDefault(); - switch (event.deltaMode) { - case 2: - _zoomStart.y -= event.deltaY * 0.025; - break; - case 1: - _zoomStart.y -= event.deltaY * 0.01; - break; - default: - _zoomStart.y -= event.deltaY * 25e-5; - break; - } - scope.dispatchEvent(_startEvent3); - scope.dispatchEvent(_endEvent3); - } - function onTouchStart(event) { - trackPointer(event); - switch (_pointers.length) { - case 1: - _state = STATE2.TOUCH_ROTATE; - _moveCurr.copy(getMouseOnCircle(_pointers[0].pageX, _pointers[0].pageY)); - _movePrev.copy(_moveCurr); - break; - default: - _state = STATE2.TOUCH_ZOOM_PAN; - const dx = _pointers[0].pageX - _pointers[1].pageX; - const dy = _pointers[0].pageY - _pointers[1].pageY; - _touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt(dx * dx + dy * dy); - const x2 = (_pointers[0].pageX + _pointers[1].pageX) / 2; - const y2 = (_pointers[0].pageY + _pointers[1].pageY) / 2; - _panStart.copy(getMouseOnScreen(x2, y2)); - _panEnd.copy(_panStart); - break; - } - scope.dispatchEvent(_startEvent3); - } - function onTouchMove(event) { - trackPointer(event); - switch (_pointers.length) { - case 1: - _movePrev.copy(_moveCurr); - _moveCurr.copy(getMouseOnCircle(event.pageX, event.pageY)); - break; - default: - const position2 = getSecondPointerPosition(event); - const dx = event.pageX - position2.x; - const dy = event.pageY - position2.y; - _touchZoomDistanceEnd = Math.sqrt(dx * dx + dy * dy); - const x2 = (event.pageX + position2.x) / 2; - const y2 = (event.pageY + position2.y) / 2; - _panEnd.copy(getMouseOnScreen(x2, y2)); - break; - } - } - function onTouchEnd(event) { - switch (_pointers.length) { - case 0: - _state = STATE2.NONE; - break; - case 1: - _state = STATE2.TOUCH_ROTATE; - _moveCurr.copy(getMouseOnCircle(event.pageX, event.pageY)); - _movePrev.copy(_moveCurr); - break; - case 2: - _state = STATE2.TOUCH_ZOOM_PAN; - for (let i = 0; i < _pointers.length; i++) { - if (_pointers[i].pointerId !== event.pointerId) { - const position2 = _pointerPositions[_pointers[i].pointerId]; - _moveCurr.copy(getMouseOnCircle(position2.x, position2.y)); - _movePrev.copy(_moveCurr); - break; - } - } - break; - } - scope.dispatchEvent(_endEvent3); - } - function contextmenu2(event) { - if (scope.enabled === false) return; - event.preventDefault(); - } - function addPointer(event) { - _pointers.push(event); - } - function removePointer(event) { - delete _pointerPositions[event.pointerId]; - for (let i = 0; i < _pointers.length; i++) { - if (_pointers[i].pointerId == event.pointerId) { - _pointers.splice(i, 1); - return; - } - } - } - function trackPointer(event) { - let position2 = _pointerPositions[event.pointerId]; - if (position2 === void 0) { - position2 = new Vector2(); - _pointerPositions[event.pointerId] = position2; - } - position2.set(event.pageX, event.pageY); - } - function getSecondPointerPosition(event) { - const pointer = event.pointerId === _pointers[0].pointerId ? _pointers[1] : _pointers[0]; - return _pointerPositions[pointer.pointerId]; - } - this.dispose = function() { - scope.domElement.removeEventListener("contextmenu", contextmenu2); - scope.domElement.removeEventListener("pointerdown", onPointerDown3); - scope.domElement.removeEventListener("pointercancel", onPointerCancel2); - scope.domElement.removeEventListener("wheel", onMouseWheel); - scope.domElement.removeEventListener("pointermove", onPointerMove3); - scope.domElement.removeEventListener("pointerup", onPointerUp3); - window.removeEventListener("keydown", keydown); - window.removeEventListener("keyup", keyup); - }; - this.domElement.addEventListener("contextmenu", contextmenu2); - this.domElement.addEventListener("pointerdown", onPointerDown3); - this.domElement.addEventListener("pointercancel", onPointerCancel2); - this.domElement.addEventListener("wheel", onMouseWheel, { passive: false }); - window.addEventListener("keydown", keydown); - window.addEventListener("keyup", keyup); - this.handleResize(); - this.update(); - } -}; - -// node_modules/three/examples/jsm/controls/TransformControls.js -var _raycaster3 = new Raycaster(); -var _tempVector = new Vector3(); -var _tempVector2 = new Vector3(); -var _tempQuaternion = new Quaternion(); -var _unit = { - X: new Vector3(1, 0, 0), - Y: new Vector3(0, 1, 0), - Z: new Vector3(0, 0, 1) -}; -var _changeEvent6 = { type: "change" }; -var _mouseDownEvent = { type: "mouseDown", mode: null }; -var _mouseUpEvent = { type: "mouseUp", mode: null }; -var _objectChangeEvent = { type: "objectChange" }; -var TransformControls = class extends Object3D { - constructor(camera, domElement) { - super(); - if (domElement === void 0) { - console.warn('THREE.TransformControls: The second parameter "domElement" is now mandatory.'); - domElement = document; - } - this.isTransformControls = true; - this.visible = false; - this.domElement = domElement; - this.domElement.style.touchAction = "none"; - const _gizmo = new TransformControlsGizmo(); - this._gizmo = _gizmo; - this.add(_gizmo); - const _plane5 = new TransformControlsPlane(); - this._plane = _plane5; - this.add(_plane5); - const scope = this; - function defineProperty(propName, defaultValue) { - let propValue = defaultValue; - Object.defineProperty(scope, propName, { - get: function() { - return propValue !== void 0 ? propValue : defaultValue; - }, - set: function(value2) { - if (propValue !== value2) { - propValue = value2; - _plane5[propName] = value2; - _gizmo[propName] = value2; - scope.dispatchEvent({ type: propName + "-changed", value: value2 }); - scope.dispatchEvent(_changeEvent6); - } - } - }); - scope[propName] = defaultValue; - _plane5[propName] = defaultValue; - _gizmo[propName] = defaultValue; - } - defineProperty("camera", camera); - defineProperty("object", void 0); - defineProperty("enabled", true); - defineProperty("axis", null); - defineProperty("mode", "translate"); - defineProperty("translationSnap", null); - defineProperty("rotationSnap", null); - defineProperty("scaleSnap", null); - defineProperty("space", "world"); - defineProperty("size", 1); - defineProperty("dragging", false); - defineProperty("showX", true); - defineProperty("showY", true); - defineProperty("showZ", true); - const worldPosition = new Vector3(); - const worldPositionStart = new Vector3(); - const worldQuaternion = new Quaternion(); - const worldQuaternionStart = new Quaternion(); - const cameraPosition = new Vector3(); - const cameraQuaternion = new Quaternion(); - const pointStart = new Vector3(); - const pointEnd = new Vector3(); - const rotationAxis = new Vector3(); - const rotationAngle = 0; - const eye = new Vector3(); - defineProperty("worldPosition", worldPosition); - defineProperty("worldPositionStart", worldPositionStart); - defineProperty("worldQuaternion", worldQuaternion); - defineProperty("worldQuaternionStart", worldQuaternionStart); - defineProperty("cameraPosition", cameraPosition); - defineProperty("cameraQuaternion", cameraQuaternion); - defineProperty("pointStart", pointStart); - defineProperty("pointEnd", pointEnd); - defineProperty("rotationAxis", rotationAxis); - defineProperty("rotationAngle", rotationAngle); - defineProperty("eye", eye); - this._offset = new Vector3(); - this._startNorm = new Vector3(); - this._endNorm = new Vector3(); - this._cameraScale = new Vector3(); - this._parentPosition = new Vector3(); - this._parentQuaternion = new Quaternion(); - this._parentQuaternionInv = new Quaternion(); - this._parentScale = new Vector3(); - this._worldScaleStart = new Vector3(); - this._worldQuaternionInv = new Quaternion(); - this._worldScale = new Vector3(); - this._positionStart = new Vector3(); - this._quaternionStart = new Quaternion(); - this._scaleStart = new Vector3(); - this._getPointer = getPointer.bind(this); - this._onPointerDown = onPointerDown2.bind(this); - this._onPointerHover = onPointerHover.bind(this); - this._onPointerMove = onPointerMove2.bind(this); - this._onPointerUp = onPointerUp2.bind(this); - this.domElement.addEventListener("pointerdown", this._onPointerDown); - this.domElement.addEventListener("pointermove", this._onPointerHover); - this.domElement.addEventListener("pointerup", this._onPointerUp); - } - // updateMatrixWorld updates key transformation variables - updateMatrixWorld(force) { - if (this.object !== void 0) { - this.object.updateMatrixWorld(); - if (this.object.parent === null) { - console.error("TransformControls: The attached 3D object must be a part of the scene graph."); - } else { - this.object.parent.matrixWorld.decompose(this._parentPosition, this._parentQuaternion, this._parentScale); - } - this.object.matrixWorld.decompose(this.worldPosition, this.worldQuaternion, this._worldScale); - this._parentQuaternionInv.copy(this._parentQuaternion).invert(); - this._worldQuaternionInv.copy(this.worldQuaternion).invert(); - } - this.camera.updateMatrixWorld(); - this.camera.matrixWorld.decompose(this.cameraPosition, this.cameraQuaternion, this._cameraScale); - if (this.camera.isOrthographicCamera) { - this.camera.getWorldDirection(this.eye).negate(); - } else { - this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize(); - } - super.updateMatrixWorld(force); - } - pointerHover(pointer) { - if (this.object === void 0 || this.dragging === true) return; - if (pointer !== null) _raycaster3.setFromCamera(pointer, this.camera); - const intersect = intersectObjectWithRay(this._gizmo.picker[this.mode], _raycaster3); - if (intersect) { - this.axis = intersect.object.name; - } else { - this.axis = null; - } - } - pointerDown(pointer) { - if (this.object === void 0 || this.dragging === true || pointer != null && pointer.button !== 0) return; - if (this.axis !== null) { - if (pointer !== null) _raycaster3.setFromCamera(pointer, this.camera); - const planeIntersect = intersectObjectWithRay(this._plane, _raycaster3, true); - if (planeIntersect) { - this.object.updateMatrixWorld(); - this.object.parent.updateMatrixWorld(); - this._positionStart.copy(this.object.position); - this._quaternionStart.copy(this.object.quaternion); - this._scaleStart.copy(this.object.scale); - this.object.matrixWorld.decompose(this.worldPositionStart, this.worldQuaternionStart, this._worldScaleStart); - this.pointStart.copy(planeIntersect.point).sub(this.worldPositionStart); - } - this.dragging = true; - _mouseDownEvent.mode = this.mode; - this.dispatchEvent(_mouseDownEvent); - } - } - pointerMove(pointer) { - const axis = this.axis; - const mode = this.mode; - const object = this.object; - let space = this.space; - if (mode === "scale") { - space = "local"; - } else if (axis === "E" || axis === "XYZE" || axis === "XYZ") { - space = "world"; - } - if (object === void 0 || axis === null || this.dragging === false || pointer !== null && pointer.button !== -1) return; - if (pointer !== null) _raycaster3.setFromCamera(pointer, this.camera); - const planeIntersect = intersectObjectWithRay(this._plane, _raycaster3, true); - if (!planeIntersect) return; - this.pointEnd.copy(planeIntersect.point).sub(this.worldPositionStart); - if (mode === "translate") { - this._offset.copy(this.pointEnd).sub(this.pointStart); - if (space === "local" && axis !== "XYZ") { - this._offset.applyQuaternion(this._worldQuaternionInv); - } - if (axis.indexOf("X") === -1) this._offset.x = 0; - if (axis.indexOf("Y") === -1) this._offset.y = 0; - if (axis.indexOf("Z") === -1) this._offset.z = 0; - if (space === "local" && axis !== "XYZ") { - this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale); - } else { - this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale); - } - object.position.copy(this._offset).add(this._positionStart); - if (this.translationSnap) { - if (space === "local") { - object.position.applyQuaternion(_tempQuaternion.copy(this._quaternionStart).invert()); - if (axis.search("X") !== -1) { - object.position.x = Math.round(object.position.x / this.translationSnap) * this.translationSnap; - } - if (axis.search("Y") !== -1) { - object.position.y = Math.round(object.position.y / this.translationSnap) * this.translationSnap; - } - if (axis.search("Z") !== -1) { - object.position.z = Math.round(object.position.z / this.translationSnap) * this.translationSnap; - } - object.position.applyQuaternion(this._quaternionStart); - } - if (space === "world") { - if (object.parent) { - object.position.add(_tempVector.setFromMatrixPosition(object.parent.matrixWorld)); - } - if (axis.search("X") !== -1) { - object.position.x = Math.round(object.position.x / this.translationSnap) * this.translationSnap; - } - if (axis.search("Y") !== -1) { - object.position.y = Math.round(object.position.y / this.translationSnap) * this.translationSnap; - } - if (axis.search("Z") !== -1) { - object.position.z = Math.round(object.position.z / this.translationSnap) * this.translationSnap; - } - if (object.parent) { - object.position.sub(_tempVector.setFromMatrixPosition(object.parent.matrixWorld)); - } - } - } - } else if (mode === "scale") { - if (axis.search("XYZ") !== -1) { - let d = this.pointEnd.length() / this.pointStart.length(); - if (this.pointEnd.dot(this.pointStart) < 0) d *= -1; - _tempVector2.set(d, d, d); - } else { - _tempVector.copy(this.pointStart); - _tempVector2.copy(this.pointEnd); - _tempVector.applyQuaternion(this._worldQuaternionInv); - _tempVector2.applyQuaternion(this._worldQuaternionInv); - _tempVector2.divide(_tempVector); - if (axis.search("X") === -1) { - _tempVector2.x = 1; - } - if (axis.search("Y") === -1) { - _tempVector2.y = 1; - } - if (axis.search("Z") === -1) { - _tempVector2.z = 1; - } - } - object.scale.copy(this._scaleStart).multiply(_tempVector2); - if (this.scaleSnap) { - if (axis.search("X") !== -1) { - object.scale.x = Math.round(object.scale.x / this.scaleSnap) * this.scaleSnap || this.scaleSnap; - } - if (axis.search("Y") !== -1) { - object.scale.y = Math.round(object.scale.y / this.scaleSnap) * this.scaleSnap || this.scaleSnap; - } - if (axis.search("Z") !== -1) { - object.scale.z = Math.round(object.scale.z / this.scaleSnap) * this.scaleSnap || this.scaleSnap; - } - } - } else if (mode === "rotate") { - this._offset.copy(this.pointEnd).sub(this.pointStart); - const ROTATION_SPEED = 20 / this.worldPosition.distanceTo(_tempVector.setFromMatrixPosition(this.camera.matrixWorld)); - let _inPlaneRotation = false; - if (axis === "XYZE") { - this.rotationAxis.copy(this._offset).cross(this.eye).normalize(); - this.rotationAngle = this._offset.dot(_tempVector.copy(this.rotationAxis).cross(this.eye)) * ROTATION_SPEED; - } else if (axis === "X" || axis === "Y" || axis === "Z") { - this.rotationAxis.copy(_unit[axis]); - _tempVector.copy(_unit[axis]); - if (space === "local") { - _tempVector.applyQuaternion(this.worldQuaternion); - } - _tempVector.cross(this.eye); - if (_tempVector.length() === 0) { - _inPlaneRotation = true; - } else { - this.rotationAngle = this._offset.dot(_tempVector.normalize()) * ROTATION_SPEED; - } - } - if (axis === "E" || _inPlaneRotation) { - this.rotationAxis.copy(this.eye); - this.rotationAngle = this.pointEnd.angleTo(this.pointStart); - this._startNorm.copy(this.pointStart).normalize(); - this._endNorm.copy(this.pointEnd).normalize(); - this.rotationAngle *= this._endNorm.cross(this._startNorm).dot(this.eye) < 0 ? 1 : -1; - } - if (this.rotationSnap) this.rotationAngle = Math.round(this.rotationAngle / this.rotationSnap) * this.rotationSnap; - if (space === "local" && axis !== "E" && axis !== "XYZE") { - object.quaternion.copy(this._quaternionStart); - object.quaternion.multiply(_tempQuaternion.setFromAxisAngle(this.rotationAxis, this.rotationAngle)).normalize(); - } else { - this.rotationAxis.applyQuaternion(this._parentQuaternionInv); - object.quaternion.copy(_tempQuaternion.setFromAxisAngle(this.rotationAxis, this.rotationAngle)); - object.quaternion.multiply(this._quaternionStart).normalize(); - } - } - this.dispatchEvent(_changeEvent6); - this.dispatchEvent(_objectChangeEvent); - } - pointerUp(pointer) { - if (pointer !== null && pointer.button !== 0) return; - if (this.dragging && this.axis !== null) { - _mouseUpEvent.mode = this.mode; - this.dispatchEvent(_mouseUpEvent); - } - this.dragging = false; - this.axis = null; - } - dispose() { - this.domElement.removeEventListener("pointerdown", this._onPointerDown); - this.domElement.removeEventListener("pointermove", this._onPointerHover); - this.domElement.removeEventListener("pointermove", this._onPointerMove); - this.domElement.removeEventListener("pointerup", this._onPointerUp); - this.traverse(function(child) { - if (child.geometry) child.geometry.dispose(); - if (child.material) child.material.dispose(); - }); - } - // Set current object - attach(object) { - this.object = object; - this.visible = true; - return this; - } - // Detach from object - detach() { - this.object = void 0; - this.visible = false; - this.axis = null; - return this; - } - reset() { - if (!this.enabled) return; - if (this.dragging) { - this.object.position.copy(this._positionStart); - this.object.quaternion.copy(this._quaternionStart); - this.object.scale.copy(this._scaleStart); - this.dispatchEvent(_changeEvent6); - this.dispatchEvent(_objectChangeEvent); - this.pointStart.copy(this.pointEnd); - } - } - getRaycaster() { - return _raycaster3; - } - // TODO: deprecate - getMode() { - return this.mode; - } - setMode(mode) { - this.mode = mode; - } - setTranslationSnap(translationSnap) { - this.translationSnap = translationSnap; - } - setRotationSnap(rotationSnap) { - this.rotationSnap = rotationSnap; - } - setScaleSnap(scaleSnap) { - this.scaleSnap = scaleSnap; - } - setSize(size2) { - this.size = size2; - } - setSpace(space) { - this.space = space; - } -}; -function getPointer(event) { - if (this.domElement.ownerDocument.pointerLockElement) { - return { - x: 0, - y: 0, - button: event.button - }; - } else { - const rect = this.domElement.getBoundingClientRect(); - return { - x: (event.clientX - rect.left) / rect.width * 2 - 1, - y: -(event.clientY - rect.top) / rect.height * 2 + 1, - button: event.button - }; - } -} -function onPointerHover(event) { - if (!this.enabled) return; - switch (event.pointerType) { - case "mouse": - case "pen": - this.pointerHover(this._getPointer(event)); - break; - } -} -function onPointerDown2(event) { - if (!this.enabled) return; - if (!document.pointerLockElement) { - this.domElement.setPointerCapture(event.pointerId); - } - this.domElement.addEventListener("pointermove", this._onPointerMove); - this.pointerHover(this._getPointer(event)); - this.pointerDown(this._getPointer(event)); -} -function onPointerMove2(event) { - if (!this.enabled) return; - this.pointerMove(this._getPointer(event)); -} -function onPointerUp2(event) { - if (!this.enabled) return; - this.domElement.releasePointerCapture(event.pointerId); - this.domElement.removeEventListener("pointermove", this._onPointerMove); - this.pointerUp(this._getPointer(event)); -} -function intersectObjectWithRay(object, raycaster, includeInvisible) { - const allIntersections = raycaster.intersectObject(object, true); - for (let i = 0; i < allIntersections.length; i++) { - if (allIntersections[i].object.visible || includeInvisible) { - return allIntersections[i]; - } - } - return false; -} -var _tempEuler = new Euler(); -var _alignVector = new Vector3(0, 1, 0); -var _zeroVector = new Vector3(0, 0, 0); -var _lookAtMatrix = new Matrix4(); -var _tempQuaternion2 = new Quaternion(); -var _identityQuaternion = new Quaternion(); -var _dirVector = new Vector3(); -var _tempMatrix = new Matrix4(); -var _unitX = new Vector3(1, 0, 0); -var _unitY = new Vector3(0, 1, 0); -var _unitZ = new Vector3(0, 0, 1); -var _v1 = new Vector3(); -var _v2 = new Vector3(); -var _v3 = new Vector3(); -var TransformControlsGizmo = class extends Object3D { - constructor() { - super(); - this.isTransformControlsGizmo = true; - this.type = "TransformControlsGizmo"; - const gizmoMaterial = new MeshBasicMaterial({ - depthTest: false, - depthWrite: false, - fog: false, - toneMapped: false, - transparent: true - }); - const gizmoLineMaterial = new LineBasicMaterial({ - depthTest: false, - depthWrite: false, - fog: false, - toneMapped: false, - transparent: true - }); - const matInvisible = gizmoMaterial.clone(); - matInvisible.opacity = 0.15; - const matHelper = gizmoLineMaterial.clone(); - matHelper.opacity = 0.5; - const matRed = gizmoMaterial.clone(); - matRed.color.setHex(16711680); - const matGreen = gizmoMaterial.clone(); - matGreen.color.setHex(65280); - const matBlue = gizmoMaterial.clone(); - matBlue.color.setHex(255); - const matRedTransparent = gizmoMaterial.clone(); - matRedTransparent.color.setHex(16711680); - matRedTransparent.opacity = 0.5; - const matGreenTransparent = gizmoMaterial.clone(); - matGreenTransparent.color.setHex(65280); - matGreenTransparent.opacity = 0.5; - const matBlueTransparent = gizmoMaterial.clone(); - matBlueTransparent.color.setHex(255); - matBlueTransparent.opacity = 0.5; - const matWhiteTransparent = gizmoMaterial.clone(); - matWhiteTransparent.opacity = 0.25; - const matYellowTransparent = gizmoMaterial.clone(); - matYellowTransparent.color.setHex(16776960); - matYellowTransparent.opacity = 0.25; - const matYellow = gizmoMaterial.clone(); - matYellow.color.setHex(16776960); - const matGray = gizmoMaterial.clone(); - matGray.color.setHex(7895160); - const arrowGeometry = new CylinderGeometry(0, 0.04, 0.1, 12); - arrowGeometry.translate(0, 0.05, 0); - const scaleHandleGeometry = new BoxGeometry(0.08, 0.08, 0.08); - scaleHandleGeometry.translate(0, 0.04, 0); - const lineGeometry = new BufferGeometry(); - lineGeometry.setAttribute("position", new Float32BufferAttribute([0, 0, 0, 1, 0, 0], 3)); - const lineGeometry2 = new CylinderGeometry(75e-4, 75e-4, 0.5, 3); - lineGeometry2.translate(0, 0.25, 0); - function CircleGeometry(radius, arc) { - const geometry = new TorusGeometry(radius, 75e-4, 3, 64, arc * Math.PI * 2); - geometry.rotateY(Math.PI / 2); - geometry.rotateX(Math.PI / 2); - return geometry; - } - function TranslateHelperGeometry() { - const geometry = new BufferGeometry(); - geometry.setAttribute("position", new Float32BufferAttribute([0, 0, 0, 1, 1, 1], 3)); - return geometry; - } - const gizmoTranslate = { - X: [ - [new Mesh(arrowGeometry, matRed), [0.5, 0, 0], [0, 0, -Math.PI / 2]], - [new Mesh(arrowGeometry, matRed), [-0.5, 0, 0], [0, 0, Math.PI / 2]], - [new Mesh(lineGeometry2, matRed), [0, 0, 0], [0, 0, -Math.PI / 2]] - ], - Y: [ - [new Mesh(arrowGeometry, matGreen), [0, 0.5, 0]], - [new Mesh(arrowGeometry, matGreen), [0, -0.5, 0], [Math.PI, 0, 0]], - [new Mesh(lineGeometry2, matGreen)] - ], - Z: [ - [new Mesh(arrowGeometry, matBlue), [0, 0, 0.5], [Math.PI / 2, 0, 0]], - [new Mesh(arrowGeometry, matBlue), [0, 0, -0.5], [-Math.PI / 2, 0, 0]], - [new Mesh(lineGeometry2, matBlue), null, [Math.PI / 2, 0, 0]] - ], - XYZ: [ - [new Mesh(new OctahedronGeometry(0.1, 0), matWhiteTransparent.clone()), [0, 0, 0]] - ], - XY: [ - [new Mesh(new BoxGeometry(0.15, 0.15, 0.01), matBlueTransparent.clone()), [0.15, 0.15, 0]] - ], - YZ: [ - [new Mesh(new BoxGeometry(0.15, 0.15, 0.01), matRedTransparent.clone()), [0, 0.15, 0.15], [0, Math.PI / 2, 0]] - ], - XZ: [ - [new Mesh(new BoxGeometry(0.15, 0.15, 0.01), matGreenTransparent.clone()), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]] - ] - }; - const pickerTranslate = { - X: [ - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0.3, 0, 0], [0, 0, -Math.PI / 2]], - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [-0.3, 0, 0], [0, 0, Math.PI / 2]] - ], - Y: [ - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, 0.3, 0]], - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, -0.3, 0], [0, 0, Math.PI]] - ], - Z: [ - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, 0, 0.3], [Math.PI / 2, 0, 0]], - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, 0, -0.3], [-Math.PI / 2, 0, 0]] - ], - XYZ: [ - [new Mesh(new OctahedronGeometry(0.2, 0), matInvisible)] - ], - XY: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.01), matInvisible), [0.15, 0.15, 0]] - ], - YZ: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.01), matInvisible), [0, 0.15, 0.15], [0, Math.PI / 2, 0]] - ], - XZ: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.01), matInvisible), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]] - ] - }; - const helperTranslate = { - START: [ - [new Mesh(new OctahedronGeometry(0.01, 2), matHelper), null, null, null, "helper"] - ], - END: [ - [new Mesh(new OctahedronGeometry(0.01, 2), matHelper), null, null, null, "helper"] - ], - DELTA: [ - [new Line(TranslateHelperGeometry(), matHelper), null, null, null, "helper"] - ], - X: [ - [new Line(lineGeometry, matHelper.clone()), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"] - ], - Y: [ - [new Line(lineGeometry, matHelper.clone()), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], "helper"] - ], - Z: [ - [new Line(lineGeometry, matHelper.clone()), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], "helper"] - ] - }; - const gizmoRotate = { - XYZE: [ - [new Mesh(CircleGeometry(0.5, 1), matGray), null, [0, Math.PI / 2, 0]] - ], - X: [ - [new Mesh(CircleGeometry(0.5, 0.5), matRed)] - ], - Y: [ - [new Mesh(CircleGeometry(0.5, 0.5), matGreen), null, [0, 0, -Math.PI / 2]] - ], - Z: [ - [new Mesh(CircleGeometry(0.5, 0.5), matBlue), null, [0, Math.PI / 2, 0]] - ], - E: [ - [new Mesh(CircleGeometry(0.75, 1), matYellowTransparent), null, [0, Math.PI / 2, 0]] - ] - }; - const helperRotate = { - AXIS: [ - [new Line(lineGeometry, matHelper.clone()), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"] - ] - }; - const pickerRotate = { - XYZE: [ - [new Mesh(new SphereGeometry(0.25, 10, 8), matInvisible)] - ], - X: [ - [new Mesh(new TorusGeometry(0.5, 0.1, 4, 24), matInvisible), [0, 0, 0], [0, -Math.PI / 2, -Math.PI / 2]] - ], - Y: [ - [new Mesh(new TorusGeometry(0.5, 0.1, 4, 24), matInvisible), [0, 0, 0], [Math.PI / 2, 0, 0]] - ], - Z: [ - [new Mesh(new TorusGeometry(0.5, 0.1, 4, 24), matInvisible), [0, 0, 0], [0, 0, -Math.PI / 2]] - ], - E: [ - [new Mesh(new TorusGeometry(0.75, 0.1, 2, 24), matInvisible)] - ] - }; - const gizmoScale = { - X: [ - [new Mesh(scaleHandleGeometry, matRed), [0.5, 0, 0], [0, 0, -Math.PI / 2]], - [new Mesh(lineGeometry2, matRed), [0, 0, 0], [0, 0, -Math.PI / 2]], - [new Mesh(scaleHandleGeometry, matRed), [-0.5, 0, 0], [0, 0, Math.PI / 2]] - ], - Y: [ - [new Mesh(scaleHandleGeometry, matGreen), [0, 0.5, 0]], - [new Mesh(lineGeometry2, matGreen)], - [new Mesh(scaleHandleGeometry, matGreen), [0, -0.5, 0], [0, 0, Math.PI]] - ], - Z: [ - [new Mesh(scaleHandleGeometry, matBlue), [0, 0, 0.5], [Math.PI / 2, 0, 0]], - [new Mesh(lineGeometry2, matBlue), [0, 0, 0], [Math.PI / 2, 0, 0]], - [new Mesh(scaleHandleGeometry, matBlue), [0, 0, -0.5], [-Math.PI / 2, 0, 0]] - ], - XY: [ - [new Mesh(new BoxGeometry(0.15, 0.15, 0.01), matBlueTransparent), [0.15, 0.15, 0]] - ], - YZ: [ - [new Mesh(new BoxGeometry(0.15, 0.15, 0.01), matRedTransparent), [0, 0.15, 0.15], [0, Math.PI / 2, 0]] - ], - XZ: [ - [new Mesh(new BoxGeometry(0.15, 0.15, 0.01), matGreenTransparent), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]] - ], - XYZ: [ - [new Mesh(new BoxGeometry(0.1, 0.1, 0.1), matWhiteTransparent.clone())] - ] - }; - const pickerScale = { - X: [ - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0.3, 0, 0], [0, 0, -Math.PI / 2]], - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [-0.3, 0, 0], [0, 0, Math.PI / 2]] - ], - Y: [ - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, 0.3, 0]], - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, -0.3, 0], [0, 0, Math.PI]] - ], - Z: [ - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, 0, 0.3], [Math.PI / 2, 0, 0]], - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, 0, -0.3], [-Math.PI / 2, 0, 0]] - ], - XY: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.01), matInvisible), [0.15, 0.15, 0]] - ], - YZ: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.01), matInvisible), [0, 0.15, 0.15], [0, Math.PI / 2, 0]] - ], - XZ: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.01), matInvisible), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]] - ], - XYZ: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.2), matInvisible), [0, 0, 0]] - ] - }; - const helperScale = { - X: [ - [new Line(lineGeometry, matHelper.clone()), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"] - ], - Y: [ - [new Line(lineGeometry, matHelper.clone()), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], "helper"] - ], - Z: [ - [new Line(lineGeometry, matHelper.clone()), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], "helper"] - ] - }; - function setupGizmo(gizmoMap) { - const gizmo = new Object3D(); - for (const name2 in gizmoMap) { - for (let i = gizmoMap[name2].length; i--; ) { - const object = gizmoMap[name2][i][0].clone(); - const position2 = gizmoMap[name2][i][1]; - const rotation2 = gizmoMap[name2][i][2]; - const scale2 = gizmoMap[name2][i][3]; - const tag = gizmoMap[name2][i][4]; - object.name = name2; - object.tag = tag; - if (position2) { - object.position.set(position2[0], position2[1], position2[2]); - } - if (rotation2) { - object.rotation.set(rotation2[0], rotation2[1], rotation2[2]); - } - if (scale2) { - object.scale.set(scale2[0], scale2[1], scale2[2]); - } - object.updateMatrix(); - const tempGeometry = object.geometry.clone(); - tempGeometry.applyMatrix4(object.matrix); - object.geometry = tempGeometry; - object.renderOrder = Infinity; - object.position.set(0, 0, 0); - object.rotation.set(0, 0, 0); - object.scale.set(1, 1, 1); - gizmo.add(object); - } - } - return gizmo; - } - this.gizmo = {}; - this.picker = {}; - this.helper = {}; - this.add(this.gizmo["translate"] = setupGizmo(gizmoTranslate)); - this.add(this.gizmo["rotate"] = setupGizmo(gizmoRotate)); - this.add(this.gizmo["scale"] = setupGizmo(gizmoScale)); - this.add(this.picker["translate"] = setupGizmo(pickerTranslate)); - this.add(this.picker["rotate"] = setupGizmo(pickerRotate)); - this.add(this.picker["scale"] = setupGizmo(pickerScale)); - this.add(this.helper["translate"] = setupGizmo(helperTranslate)); - this.add(this.helper["rotate"] = setupGizmo(helperRotate)); - this.add(this.helper["scale"] = setupGizmo(helperScale)); - this.picker["translate"].visible = false; - this.picker["rotate"].visible = false; - this.picker["scale"].visible = false; - } - // updateMatrixWorld will update transformations and appearance of individual handles - updateMatrixWorld(force) { - const space = this.mode === "scale" ? "local" : this.space; - const quaternion = space === "local" ? this.worldQuaternion : _identityQuaternion; - this.gizmo["translate"].visible = this.mode === "translate"; - this.gizmo["rotate"].visible = this.mode === "rotate"; - this.gizmo["scale"].visible = this.mode === "scale"; - this.helper["translate"].visible = this.mode === "translate"; - this.helper["rotate"].visible = this.mode === "rotate"; - this.helper["scale"].visible = this.mode === "scale"; - let handles = []; - handles = handles.concat(this.picker[this.mode].children); - handles = handles.concat(this.gizmo[this.mode].children); - handles = handles.concat(this.helper[this.mode].children); - for (let i = 0; i < handles.length; i++) { - const handle = handles[i]; - handle.visible = true; - handle.rotation.set(0, 0, 0); - handle.position.copy(this.worldPosition); - let factor; - if (this.camera.isOrthographicCamera) { - factor = (this.camera.top - this.camera.bottom) / this.camera.zoom; - } else { - factor = this.worldPosition.distanceTo(this.cameraPosition) * Math.min(1.9 * Math.tan(Math.PI * this.camera.fov / 360) / this.camera.zoom, 7); - } - handle.scale.set(1, 1, 1).multiplyScalar(factor * this.size / 4); - if (handle.tag === "helper") { - handle.visible = false; - if (handle.name === "AXIS") { - handle.visible = !!this.axis; - if (this.axis === "X") { - _tempQuaternion.setFromEuler(_tempEuler.set(0, 0, 0)); - handle.quaternion.copy(quaternion).multiply(_tempQuaternion); - if (Math.abs(_alignVector.copy(_unitX).applyQuaternion(quaternion).dot(this.eye)) > 0.9) { - handle.visible = false; - } - } - if (this.axis === "Y") { - _tempQuaternion.setFromEuler(_tempEuler.set(0, 0, Math.PI / 2)); - handle.quaternion.copy(quaternion).multiply(_tempQuaternion); - if (Math.abs(_alignVector.copy(_unitY).applyQuaternion(quaternion).dot(this.eye)) > 0.9) { - handle.visible = false; - } - } - if (this.axis === "Z") { - _tempQuaternion.setFromEuler(_tempEuler.set(0, Math.PI / 2, 0)); - handle.quaternion.copy(quaternion).multiply(_tempQuaternion); - if (Math.abs(_alignVector.copy(_unitZ).applyQuaternion(quaternion).dot(this.eye)) > 0.9) { - handle.visible = false; - } - } - if (this.axis === "XYZE") { - _tempQuaternion.setFromEuler(_tempEuler.set(0, Math.PI / 2, 0)); - _alignVector.copy(this.rotationAxis); - handle.quaternion.setFromRotationMatrix(_lookAtMatrix.lookAt(_zeroVector, _alignVector, _unitY)); - handle.quaternion.multiply(_tempQuaternion); - handle.visible = this.dragging; - } - if (this.axis === "E") { - handle.visible = false; - } - } else if (handle.name === "START") { - handle.position.copy(this.worldPositionStart); - handle.visible = this.dragging; - } else if (handle.name === "END") { - handle.position.copy(this.worldPosition); - handle.visible = this.dragging; - } else if (handle.name === "DELTA") { - handle.position.copy(this.worldPositionStart); - handle.quaternion.copy(this.worldQuaternionStart); - _tempVector.set(1e-10, 1e-10, 1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1); - _tempVector.applyQuaternion(this.worldQuaternionStart.clone().invert()); - handle.scale.copy(_tempVector); - handle.visible = this.dragging; - } else { - handle.quaternion.copy(quaternion); - if (this.dragging) { - handle.position.copy(this.worldPositionStart); - } else { - handle.position.copy(this.worldPosition); - } - if (this.axis) { - handle.visible = this.axis.search(handle.name) !== -1; - } - } - continue; - } - handle.quaternion.copy(quaternion); - if (this.mode === "translate" || this.mode === "scale") { - const AXIS_HIDE_THRESHOLD = 0.99; - const PLANE_HIDE_THRESHOLD = 0.2; - if (handle.name === "X") { - if (Math.abs(_alignVector.copy(_unitX).applyQuaternion(quaternion).dot(this.eye)) > AXIS_HIDE_THRESHOLD) { - handle.scale.set(1e-10, 1e-10, 1e-10); - handle.visible = false; - } - } - if (handle.name === "Y") { - if (Math.abs(_alignVector.copy(_unitY).applyQuaternion(quaternion).dot(this.eye)) > AXIS_HIDE_THRESHOLD) { - handle.scale.set(1e-10, 1e-10, 1e-10); - handle.visible = false; - } - } - if (handle.name === "Z") { - if (Math.abs(_alignVector.copy(_unitZ).applyQuaternion(quaternion).dot(this.eye)) > AXIS_HIDE_THRESHOLD) { - handle.scale.set(1e-10, 1e-10, 1e-10); - handle.visible = false; - } - } - if (handle.name === "XY") { - if (Math.abs(_alignVector.copy(_unitZ).applyQuaternion(quaternion).dot(this.eye)) < PLANE_HIDE_THRESHOLD) { - handle.scale.set(1e-10, 1e-10, 1e-10); - handle.visible = false; - } - } - if (handle.name === "YZ") { - if (Math.abs(_alignVector.copy(_unitX).applyQuaternion(quaternion).dot(this.eye)) < PLANE_HIDE_THRESHOLD) { - handle.scale.set(1e-10, 1e-10, 1e-10); - handle.visible = false; - } - } - if (handle.name === "XZ") { - if (Math.abs(_alignVector.copy(_unitY).applyQuaternion(quaternion).dot(this.eye)) < PLANE_HIDE_THRESHOLD) { - handle.scale.set(1e-10, 1e-10, 1e-10); - handle.visible = false; - } - } - } else if (this.mode === "rotate") { - _tempQuaternion2.copy(quaternion); - _alignVector.copy(this.eye).applyQuaternion(_tempQuaternion.copy(quaternion).invert()); - if (handle.name.search("E") !== -1) { - handle.quaternion.setFromRotationMatrix(_lookAtMatrix.lookAt(this.eye, _zeroVector, _unitY)); - } - if (handle.name === "X") { - _tempQuaternion.setFromAxisAngle(_unitX, Math.atan2(-_alignVector.y, _alignVector.z)); - _tempQuaternion.multiplyQuaternions(_tempQuaternion2, _tempQuaternion); - handle.quaternion.copy(_tempQuaternion); - } - if (handle.name === "Y") { - _tempQuaternion.setFromAxisAngle(_unitY, Math.atan2(_alignVector.x, _alignVector.z)); - _tempQuaternion.multiplyQuaternions(_tempQuaternion2, _tempQuaternion); - handle.quaternion.copy(_tempQuaternion); - } - if (handle.name === "Z") { - _tempQuaternion.setFromAxisAngle(_unitZ, Math.atan2(_alignVector.y, _alignVector.x)); - _tempQuaternion.multiplyQuaternions(_tempQuaternion2, _tempQuaternion); - handle.quaternion.copy(_tempQuaternion); - } - } - handle.visible = handle.visible && (handle.name.indexOf("X") === -1 || this.showX); - handle.visible = handle.visible && (handle.name.indexOf("Y") === -1 || this.showY); - handle.visible = handle.visible && (handle.name.indexOf("Z") === -1 || this.showZ); - handle.visible = handle.visible && (handle.name.indexOf("E") === -1 || this.showX && this.showY && this.showZ); - handle.material._color = handle.material._color || handle.material.color.clone(); - handle.material._opacity = handle.material._opacity || handle.material.opacity; - handle.material.color.copy(handle.material._color); - handle.material.opacity = handle.material._opacity; - if (this.enabled && this.axis) { - if (handle.name === this.axis) { - handle.material.color.setHex(16776960); - handle.material.opacity = 1; - } else if (this.axis.split("").some(function(a2) { - return handle.name === a2; - })) { - handle.material.color.setHex(16776960); - handle.material.opacity = 1; - } - } - } - super.updateMatrixWorld(force); - } -}; -var TransformControlsPlane = class extends Mesh { - constructor() { - super( - new PlaneGeometry(1e5, 1e5, 2, 2), - new MeshBasicMaterial({ visible: false, wireframe: true, side: DoubleSide, transparent: true, opacity: 0.1, toneMapped: false }) - ); - this.isTransformControlsPlane = true; - this.type = "TransformControlsPlane"; - } - updateMatrixWorld(force) { - let space = this.space; - this.position.copy(this.worldPosition); - if (this.mode === "scale") space = "local"; - _v1.copy(_unitX).applyQuaternion(space === "local" ? this.worldQuaternion : _identityQuaternion); - _v2.copy(_unitY).applyQuaternion(space === "local" ? this.worldQuaternion : _identityQuaternion); - _v3.copy(_unitZ).applyQuaternion(space === "local" ? this.worldQuaternion : _identityQuaternion); - _alignVector.copy(_v2); - switch (this.mode) { - case "translate": - case "scale": - switch (this.axis) { - case "X": - _alignVector.copy(this.eye).cross(_v1); - _dirVector.copy(_v1).cross(_alignVector); - break; - case "Y": - _alignVector.copy(this.eye).cross(_v2); - _dirVector.copy(_v2).cross(_alignVector); - break; - case "Z": - _alignVector.copy(this.eye).cross(_v3); - _dirVector.copy(_v3).cross(_alignVector); - break; - case "XY": - _dirVector.copy(_v3); - break; - case "YZ": - _dirVector.copy(_v1); - break; - case "XZ": - _alignVector.copy(_v3); - _dirVector.copy(_v2); - break; - case "XYZ": - case "E": - _dirVector.set(0, 0, 0); - break; - } - break; - case "rotate": - default: - _dirVector.set(0, 0, 0); - } - if (_dirVector.length() === 0) { - this.quaternion.copy(this.cameraQuaternion); - } else { - _tempMatrix.lookAt(_tempVector.set(0, 0, 0), _dirVector, _alignVector); - this.quaternion.setFromRotationMatrix(_tempMatrix); - } - super.updateMatrixWorld(force); - } -}; - -// node_modules/three/examples/jsm/csm/CSMFrustum.js -var inverseProjectionMatrix = new Matrix4(); -var CSMFrustum = class _CSMFrustum { - constructor(data2) { - data2 = data2 || {}; - this.vertices = { - near: [ - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3() - ], - far: [ - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3() - ] - }; - if (data2.projectionMatrix !== void 0) { - this.setFromProjectionMatrix(data2.projectionMatrix, data2.maxFar || 1e4); - } - } - setFromProjectionMatrix(projectionMatrix, maxFar) { - const isOrthographic = projectionMatrix.elements[2 * 4 + 3] === 0; - inverseProjectionMatrix.copy(projectionMatrix).invert(); - this.vertices.near[0].set(1, 1, -1); - this.vertices.near[1].set(1, -1, -1); - this.vertices.near[2].set(-1, -1, -1); - this.vertices.near[3].set(-1, 1, -1); - this.vertices.near.forEach(function(v) { - v.applyMatrix4(inverseProjectionMatrix); - }); - this.vertices.far[0].set(1, 1, 1); - this.vertices.far[1].set(1, -1, 1); - this.vertices.far[2].set(-1, -1, 1); - this.vertices.far[3].set(-1, 1, 1); - this.vertices.far.forEach(function(v) { - v.applyMatrix4(inverseProjectionMatrix); - const absZ = Math.abs(v.z); - if (isOrthographic) { - v.z *= Math.min(maxFar / absZ, 1); - } else { - v.multiplyScalar(Math.min(maxFar / absZ, 1)); - } - }); - return this.vertices; - } - split(breaks, target) { - while (breaks.length > target.length) { - target.push(new _CSMFrustum()); - } - target.length = breaks.length; - for (let i = 0; i < breaks.length; i++) { - const cascade = target[i]; - if (i === 0) { - for (let j = 0; j < 4; j++) { - cascade.vertices.near[j].copy(this.vertices.near[j]); - } - } else { - for (let j = 0; j < 4; j++) { - cascade.vertices.near[j].lerpVectors(this.vertices.near[j], this.vertices.far[j], breaks[i - 1]); - } - } - if (i === breaks.length - 1) { - for (let j = 0; j < 4; j++) { - cascade.vertices.far[j].copy(this.vertices.far[j]); - } - } else { - for (let j = 0; j < 4; j++) { - cascade.vertices.far[j].lerpVectors(this.vertices.near[j], this.vertices.far[j], breaks[i]); - } - } - } - } - toSpace(cameraMatrix, target) { - for (let i = 0; i < 4; i++) { - target.vertices.near[i].copy(this.vertices.near[i]).applyMatrix4(cameraMatrix); - target.vertices.far[i].copy(this.vertices.far[i]).applyMatrix4(cameraMatrix); - } - } -}; - -// node_modules/three/examples/jsm/csm/CSMShader.js -var CSMShader = { - lights_fragment_begin: ( - /* glsl */ - ` -vec3 geometryPosition = - vViewPosition; -vec3 geometryNormal = normal; -vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); - -vec3 geometryClearcoatNormal = vec3( 0.0 ); - -#ifdef USE_CLEARCOAT - - geometryClearcoatNormal = clearcoatNormal; - -#endif - -#ifdef USE_IRIDESCENCE - float dotNVi = saturate( dot( normal, geometryViewDir ) ); - if ( material.iridescenceThickness == 0.0 ) { - material.iridescence = 0.0; - } else { - material.iridescence = saturate( material.iridescence ); - } - if ( material.iridescence > 0.0 ) { - material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); - // Iridescence F0 approximation - material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); - } -#endif - -IncidentLight directLight; - -#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) - - PointLight pointLight; - #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 - PointLightShadow pointLightShadow; - #endif - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { - - pointLight = pointLights[ i ]; - - getPointLightInfo( pointLight, geometryPosition, directLight ); - - #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) - pointLightShadow = pointLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; - #endif - - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - } - #pragma unroll_loop_end - -#endif - -#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) - - SpotLight spotLight; - vec4 spotColor; - vec3 spotLightCoord; - bool inSpotLightMap; - - #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 - SpotLightShadow spotLightShadow; - #endif - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { - - spotLight = spotLights[ i ]; - - getSpotLightInfo( spotLight, geometryPosition, directLight ); - - // spot lights are ordered [shadows with maps, shadows without maps, maps without shadows, none] - #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) - #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX - #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) - #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS - #else - #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) - #endif - #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) - spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; - inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); - spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); - directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; - #endif - #undef SPOT_LIGHT_MAP_INDEX - - #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) - spotLightShadow = spotLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; - - #endif - - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - } - #pragma unroll_loop_end - -#endif - -#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) && defined( USE_CSM ) && defined( CSM_CASCADES ) - - DirectionalLight directionalLight; - float linearDepth = (vViewPosition.z) / (shadowFar - cameraNear); - #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 - DirectionalLightShadow directionalLightShadow; - #endif - - #if defined( USE_SHADOWMAP ) && defined( CSM_FADE ) - vec2 cascade; - float cascadeCenter; - float closestEdge; - float margin; - float csmx; - float csmy; - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { - - directionalLight = directionalLights[ i ]; - getDirectionalLightInfo( directionalLight, directLight ); - - #if ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) - // NOTE: Depth gets larger away from the camera. - // cascade.x is closer, cascade.y is further - cascade = CSM_cascades[ i ]; - cascadeCenter = ( cascade.x + cascade.y ) / 2.0; - closestEdge = linearDepth < cascadeCenter ? cascade.x : cascade.y; - margin = 0.25 * pow( closestEdge, 2.0 ); - csmx = cascade.x - margin / 2.0; - csmy = cascade.y + margin / 2.0; - if( linearDepth >= csmx && ( linearDepth < csmy || UNROLLED_LOOP_INDEX == CSM_CASCADES - 1 ) ) { - - float dist = min( linearDepth - csmx, csmy - linearDepth ); - float ratio = clamp( dist / margin, 0.0, 1.0 ); - - vec3 prevColor = directLight.color; - directionalLightShadow = directionalLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; - - bool shouldFadeLastCascade = UNROLLED_LOOP_INDEX == CSM_CASCADES - 1 && linearDepth > cascadeCenter; - directLight.color = mix( prevColor, directLight.color, shouldFadeLastCascade ? ratio : 1.0 ); - - ReflectedLight prevLight = reflectedLight; - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - bool shouldBlend = UNROLLED_LOOP_INDEX != CSM_CASCADES - 1 || UNROLLED_LOOP_INDEX == CSM_CASCADES - 1 && linearDepth < cascadeCenter; - float blendRatio = shouldBlend ? ratio : 1.0; - - reflectedLight.directDiffuse = mix( prevLight.directDiffuse, reflectedLight.directDiffuse, blendRatio ); - reflectedLight.directSpecular = mix( prevLight.directSpecular, reflectedLight.directSpecular, blendRatio ); - reflectedLight.indirectDiffuse = mix( prevLight.indirectDiffuse, reflectedLight.indirectDiffuse, blendRatio ); - reflectedLight.indirectSpecular = mix( prevLight.indirectSpecular, reflectedLight.indirectSpecular, blendRatio ); - - } - #endif - - } - #pragma unroll_loop_end - #elif defined (USE_SHADOWMAP) - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { - - directionalLight = directionalLights[ i ]; - getDirectionalLightInfo( directionalLight, directLight ); - - #if ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) - - directionalLightShadow = directionalLightShadows[ i ]; - if(linearDepth >= CSM_cascades[UNROLLED_LOOP_INDEX].x && linearDepth < CSM_cascades[UNROLLED_LOOP_INDEX].y) directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; - - if(linearDepth >= CSM_cascades[UNROLLED_LOOP_INDEX].x && (linearDepth < CSM_cascades[UNROLLED_LOOP_INDEX].y || UNROLLED_LOOP_INDEX == CSM_CASCADES - 1)) RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - #endif - - } - #pragma unroll_loop_end - - #elif ( NUM_DIR_LIGHT_SHADOWS > 0 ) - // note: no loop here - all CSM lights are in fact one light only - getDirectionalLightInfo( directionalLights[0], directLight ); - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - #endif - - #if ( NUM_DIR_LIGHTS > NUM_DIR_LIGHT_SHADOWS) - // compute the lights not casting shadows (if any) - - #pragma unroll_loop_start - for ( int i = NUM_DIR_LIGHT_SHADOWS; i < NUM_DIR_LIGHTS; i ++ ) { - - directionalLight = directionalLights[ i ]; - - getDirectionalLightInfo( directionalLight, directLight ); - - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - } - #pragma unroll_loop_end - - #endif - -#endif - - -#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) && !defined( USE_CSM ) && !defined( CSM_CASCADES ) - - DirectionalLight directionalLight; - #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 - DirectionalLightShadow directionalLightShadow; - #endif - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { - - directionalLight = directionalLights[ i ]; - - getDirectionalLightInfo( directionalLight, directLight ); - - #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) - directionalLightShadow = directionalLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; - #endif - - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - } - #pragma unroll_loop_end - -#endif - -#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) - - RectAreaLight rectAreaLight; - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { - - rectAreaLight = rectAreaLights[ i ]; - RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - } - #pragma unroll_loop_end - -#endif - -#if defined( RE_IndirectDiffuse ) - - vec3 iblIrradiance = vec3( 0.0 ); - - vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); - - #if defined( USE_LIGHT_PROBES ) - - irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); - - #endif - - #if ( NUM_HEMI_LIGHTS > 0 ) - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { - - irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); - - } - #pragma unroll_loop_end - - #endif - -#endif - -#if defined( RE_IndirectSpecular ) - - vec3 radiance = vec3( 0.0 ); - vec3 clearcoatRadiance = vec3( 0.0 ); - -#endif -` - ), - lights_pars_begin: ( - /* glsl */ - ` -#if defined( USE_CSM ) && defined( CSM_CASCADES ) -uniform vec2 CSM_cascades[CSM_CASCADES]; -uniform float cameraNear; -uniform float shadowFar; -#endif - ` + ShaderChunk.lights_pars_begin - ) -}; - -// node_modules/three/examples/jsm/csm/CSM.js -var _cameraToLightMatrix = new Matrix4(); -var _lightSpaceFrustum = new CSMFrustum(); -var _center2 = new Vector3(); -var _bbox = new Box3(); -var _uniformArray = []; -var _logArray = []; -var _lightOrientationMatrix = new Matrix4(); -var _lightOrientationMatrixInverse = new Matrix4(); -var _up2 = new Vector3(0, 1, 0); -var CSM = class { - constructor(data2) { - this.camera = data2.camera; - this.parent = data2.parent; - this.cascades = data2.cascades || 3; - this.maxFar = data2.maxFar || 1e5; - this.mode = data2.mode || "practical"; - this.shadowMapSize = data2.shadowMapSize || 2048; - this.shadowBias = data2.shadowBias || 1e-6; - this.lightDirection = data2.lightDirection || new Vector3(1, -1, 1).normalize(); - this.lightIntensity = data2.lightIntensity || 3; - this.lightNear = data2.lightNear || 1; - this.lightFar = data2.lightFar || 2e3; - this.lightMargin = data2.lightMargin || 200; - this.customSplitsCallback = data2.customSplitsCallback; - this.fade = false; - this.mainFrustum = new CSMFrustum(); - this.frustums = []; - this.breaks = []; - this.lights = []; - this.shaders = /* @__PURE__ */ new Map(); - this.createLights(); - this.updateFrustums(); - this.injectInclude(); - } - createLights() { - for (let i = 0; i < this.cascades; i++) { - const light = new DirectionalLight(16777215, this.lightIntensity); - light.castShadow = true; - light.shadow.mapSize.width = this.shadowMapSize; - light.shadow.mapSize.height = this.shadowMapSize; - light.shadow.camera.near = this.lightNear; - light.shadow.camera.far = this.lightFar; - light.shadow.bias = this.shadowBias; - this.parent.add(light); - this.parent.add(light.target); - this.lights.push(light); - } - } - initCascades() { - const camera = this.camera; - camera.updateProjectionMatrix(); - this.mainFrustum.setFromProjectionMatrix(camera.projectionMatrix, this.maxFar); - this.mainFrustum.split(this.breaks, this.frustums); - } - updateShadowBounds() { - const frustums = this.frustums; - for (let i = 0; i < frustums.length; i++) { - const light = this.lights[i]; - const shadowCam = light.shadow.camera; - const frustum = this.frustums[i]; - const nearVerts = frustum.vertices.near; - const farVerts = frustum.vertices.far; - const point1 = farVerts[0]; - let point2; - if (point1.distanceTo(farVerts[2]) > point1.distanceTo(nearVerts[2])) { - point2 = farVerts[2]; - } else { - point2 = nearVerts[2]; - } - let squaredBBWidth = point1.distanceTo(point2); - if (this.fade) { - const camera = this.camera; - const far = Math.max(camera.far, this.maxFar); - const linearDepth = frustum.vertices.far[0].z / (far - camera.near); - const margin = 0.25 * Math.pow(linearDepth, 2) * (far - camera.near); - squaredBBWidth += margin; - } - shadowCam.left = -squaredBBWidth / 2; - shadowCam.right = squaredBBWidth / 2; - shadowCam.top = squaredBBWidth / 2; - shadowCam.bottom = -squaredBBWidth / 2; - shadowCam.updateProjectionMatrix(); - } - } - getBreaks() { - const camera = this.camera; - const far = Math.min(camera.far, this.maxFar); - this.breaks.length = 0; - switch (this.mode) { - case "uniform": - uniformSplit(this.cascades, camera.near, far, this.breaks); - break; - case "logarithmic": - logarithmicSplit(this.cascades, camera.near, far, this.breaks); - break; - case "practical": - practicalSplit(this.cascades, camera.near, far, 0.5, this.breaks); - break; - case "custom": - if (this.customSplitsCallback === void 0) console.error("CSM: Custom split scheme callback not defined."); - this.customSplitsCallback(this.cascades, camera.near, far, this.breaks); - break; - } - function uniformSplit(amount, near, far2, target) { - for (let i = 1; i < amount; i++) { - target.push((near + (far2 - near) * i / amount) / far2); - } - target.push(1); - } - function logarithmicSplit(amount, near, far2, target) { - for (let i = 1; i < amount; i++) { - target.push(near * (far2 / near) ** (i / amount) / far2); - } - target.push(1); - } - function practicalSplit(amount, near, far2, lambda, target) { - _uniformArray.length = 0; - _logArray.length = 0; - logarithmicSplit(amount, near, far2, _logArray); - uniformSplit(amount, near, far2, _uniformArray); - for (let i = 1; i < amount; i++) { - target.push(MathUtils.lerp(_uniformArray[i - 1], _logArray[i - 1], lambda)); - } - target.push(1); - } - } - update() { - const camera = this.camera; - const frustums = this.frustums; - _lightOrientationMatrix.lookAt(new Vector3(), this.lightDirection, _up2); - _lightOrientationMatrixInverse.copy(_lightOrientationMatrix).invert(); - for (let i = 0; i < frustums.length; i++) { - const light = this.lights[i]; - const shadowCam = light.shadow.camera; - const texelWidth = (shadowCam.right - shadowCam.left) / this.shadowMapSize; - const texelHeight = (shadowCam.top - shadowCam.bottom) / this.shadowMapSize; - _cameraToLightMatrix.multiplyMatrices(_lightOrientationMatrixInverse, camera.matrixWorld); - frustums[i].toSpace(_cameraToLightMatrix, _lightSpaceFrustum); - const nearVerts = _lightSpaceFrustum.vertices.near; - const farVerts = _lightSpaceFrustum.vertices.far; - _bbox.makeEmpty(); - for (let j = 0; j < 4; j++) { - _bbox.expandByPoint(nearVerts[j]); - _bbox.expandByPoint(farVerts[j]); - } - _bbox.getCenter(_center2); - _center2.z = _bbox.max.z + this.lightMargin; - _center2.x = Math.floor(_center2.x / texelWidth) * texelWidth; - _center2.y = Math.floor(_center2.y / texelHeight) * texelHeight; - _center2.applyMatrix4(_lightOrientationMatrix); - light.position.copy(_center2); - light.target.position.copy(_center2); - light.target.position.x += this.lightDirection.x; - light.target.position.y += this.lightDirection.y; - light.target.position.z += this.lightDirection.z; - } - } - injectInclude() { - ShaderChunk.lights_fragment_begin = CSMShader.lights_fragment_begin; - ShaderChunk.lights_pars_begin = CSMShader.lights_pars_begin; - } - setupMaterial(material) { - material.defines = material.defines || {}; - material.defines.USE_CSM = 1; - material.defines.CSM_CASCADES = this.cascades; - if (this.fade) { - material.defines.CSM_FADE = ""; - } - const breaksVec2 = []; - const scope = this; - const shaders2 = this.shaders; - material.onBeforeCompile = function(shader) { - const far = Math.min(scope.camera.far, scope.maxFar); - scope.getExtendedBreaks(breaksVec2); - shader.uniforms.CSM_cascades = { value: breaksVec2 }; - shader.uniforms.cameraNear = { value: scope.camera.near }; - shader.uniforms.shadowFar = { value: far }; - shaders2.set(material, shader); - }; - shaders2.set(material, null); - } - updateUniforms() { - const far = Math.min(this.camera.far, this.maxFar); - const shaders2 = this.shaders; - shaders2.forEach(function(shader, material) { - if (shader !== null) { - const uniforms = shader.uniforms; - this.getExtendedBreaks(uniforms.CSM_cascades.value); - uniforms.cameraNear.value = this.camera.near; - uniforms.shadowFar.value = far; - } - if (!this.fade && "CSM_FADE" in material.defines) { - delete material.defines.CSM_FADE; - material.needsUpdate = true; - } else if (this.fade && !("CSM_FADE" in material.defines)) { - material.defines.CSM_FADE = ""; - material.needsUpdate = true; - } - }, this); - } - getExtendedBreaks(target) { - while (target.length < this.breaks.length) { - target.push(new Vector2()); - } - target.length = this.breaks.length; - for (let i = 0; i < this.cascades; i++) { - const amount = this.breaks[i]; - const prev = this.breaks[i - 1] || 0; - target[i].x = prev; - target[i].y = amount; - } - } - updateFrustums() { - this.getBreaks(); - this.initCascades(); - this.updateShadowBounds(); - this.updateUniforms(); - } - remove() { - for (let i = 0; i < this.lights.length; i++) { - this.parent.remove(this.lights[i].target); - this.parent.remove(this.lights[i]); - } - } - dispose() { - const shaders2 = this.shaders; - shaders2.forEach(function(shader, material) { - delete material.onBeforeCompile; - delete material.defines.USE_CSM; - delete material.defines.CSM_CASCADES; - delete material.defines.CSM_FADE; - if (shader !== null) { - delete shader.uniforms.CSM_cascades; - delete shader.uniforms.cameraNear; - delete shader.uniforms.shadowFar; - } - material.needsUpdate = true; - }); - shaders2.clear(); - } -}; - -// node_modules/three/examples/jsm/csm/CSMHelper.js -var CSMHelper = class extends Group { - constructor(csm) { - super(); - this.csm = csm; - this.displayFrustum = true; - this.displayPlanes = true; - this.displayShadowBounds = true; - const 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]); - const positions = new Float32Array(24); - const frustumGeometry = new BufferGeometry(); - frustumGeometry.setIndex(new BufferAttribute(indices, 1)); - frustumGeometry.setAttribute("position", new BufferAttribute(positions, 3, false)); - const frustumLines = new LineSegments(frustumGeometry, new LineBasicMaterial()); - this.add(frustumLines); - this.frustumLines = frustumLines; - this.cascadeLines = []; - this.cascadePlanes = []; - this.shadowLines = []; - } - updateVisibility() { - const displayFrustum = this.displayFrustum; - const displayPlanes = this.displayPlanes; - const displayShadowBounds = this.displayShadowBounds; - const frustumLines = this.frustumLines; - const cascadeLines = this.cascadeLines; - const cascadePlanes = this.cascadePlanes; - const shadowLines = this.shadowLines; - for (let i = 0, l2 = cascadeLines.length; i < l2; i++) { - const cascadeLine = cascadeLines[i]; - const cascadePlane = cascadePlanes[i]; - const shadowLineGroup = shadowLines[i]; - cascadeLine.visible = displayFrustum; - cascadePlane.visible = displayFrustum && displayPlanes; - shadowLineGroup.visible = displayShadowBounds; - } - frustumLines.visible = displayFrustum; - } - update() { - const csm = this.csm; - const camera = csm.camera; - const cascades = csm.cascades; - const mainFrustum = csm.mainFrustum; - const frustums = csm.frustums; - const lights = csm.lights; - const frustumLines = this.frustumLines; - const frustumLinePositions = frustumLines.geometry.getAttribute("position"); - const cascadeLines = this.cascadeLines; - const cascadePlanes = this.cascadePlanes; - const shadowLines = this.shadowLines; - this.position.copy(camera.position); - this.quaternion.copy(camera.quaternion); - this.scale.copy(camera.scale); - this.updateMatrixWorld(true); - while (cascadeLines.length > cascades) { - this.remove(cascadeLines.pop()); - this.remove(cascadePlanes.pop()); - this.remove(shadowLines.pop()); - } - while (cascadeLines.length < cascades) { - const cascadeLine = new Box3Helper(new Box3(), 16777215); - const planeMat = new MeshBasicMaterial({ transparent: true, opacity: 0.1, depthWrite: false, side: DoubleSide }); - const cascadePlane = new Mesh(new PlaneGeometry(), planeMat); - const shadowLineGroup = new Group(); - const shadowLine = new Box3Helper(new Box3(), 16776960); - shadowLineGroup.add(shadowLine); - this.add(cascadeLine); - this.add(cascadePlane); - this.add(shadowLineGroup); - cascadeLines.push(cascadeLine); - cascadePlanes.push(cascadePlane); - shadowLines.push(shadowLineGroup); - } - for (let i = 0; i < cascades; i++) { - const frustum = frustums[i]; - const light = lights[i]; - const shadowCam = light.shadow.camera; - const farVerts2 = frustum.vertices.far; - const cascadeLine = cascadeLines[i]; - const cascadePlane = cascadePlanes[i]; - const shadowLineGroup = shadowLines[i]; - const shadowLine = shadowLineGroup.children[0]; - cascadeLine.box.min.copy(farVerts2[2]); - cascadeLine.box.max.copy(farVerts2[0]); - cascadeLine.box.max.z += 1e-4; - cascadePlane.position.addVectors(farVerts2[0], farVerts2[2]); - cascadePlane.position.multiplyScalar(0.5); - cascadePlane.scale.subVectors(farVerts2[0], farVerts2[2]); - cascadePlane.scale.z = 1e-4; - this.remove(shadowLineGroup); - shadowLineGroup.position.copy(shadowCam.position); - shadowLineGroup.quaternion.copy(shadowCam.quaternion); - shadowLineGroup.scale.copy(shadowCam.scale); - shadowLineGroup.updateMatrixWorld(true); - this.attach(shadowLineGroup); - shadowLine.box.min.set(shadowCam.bottom, shadowCam.left, -shadowCam.far); - shadowLine.box.max.set(shadowCam.top, shadowCam.right, -shadowCam.near); - } - const nearVerts = mainFrustum.vertices.near; - const farVerts = mainFrustum.vertices.far; - frustumLinePositions.setXYZ(0, farVerts[0].x, farVerts[0].y, farVerts[0].z); - frustumLinePositions.setXYZ(1, farVerts[3].x, farVerts[3].y, farVerts[3].z); - frustumLinePositions.setXYZ(2, farVerts[2].x, farVerts[2].y, farVerts[2].z); - frustumLinePositions.setXYZ(3, farVerts[1].x, farVerts[1].y, farVerts[1].z); - frustumLinePositions.setXYZ(4, nearVerts[0].x, nearVerts[0].y, nearVerts[0].z); - frustumLinePositions.setXYZ(5, nearVerts[3].x, nearVerts[3].y, nearVerts[3].z); - frustumLinePositions.setXYZ(6, nearVerts[2].x, nearVerts[2].y, nearVerts[2].z); - frustumLinePositions.setXYZ(7, nearVerts[1].x, nearVerts[1].y, nearVerts[1].z); - frustumLinePositions.needsUpdate = true; - } - dispose() { - const frustumLines = this.frustumLines; - const cascadeLines = this.cascadeLines; - const cascadePlanes = this.cascadePlanes; - const shadowLines = this.shadowLines; - frustumLines.geometry.dispose(); - frustumLines.material.dispose(); - const cascades = this.csm.cascades; - for (let i = 0; i < cascades; i++) { - const cascadeLine = cascadeLines[i]; - const cascadePlane = cascadePlanes[i]; - const shadowLineGroup = shadowLines[i]; - const shadowLine = shadowLineGroup.children[0]; - cascadeLine.dispose(); - cascadePlane.geometry.dispose(); - cascadePlane.material.dispose(); - shadowLine.dispose(); - } - } -}; - -// node_modules/three/examples/jsm/curves/CurveExtras.js -var CurveExtras_exports = {}; -__export(CurveExtras_exports, { - CinquefoilKnot: () => CinquefoilKnot, - DecoratedTorusKnot4a: () => DecoratedTorusKnot4a, - DecoratedTorusKnot4b: () => DecoratedTorusKnot4b, - DecoratedTorusKnot5a: () => DecoratedTorusKnot5a, - DecoratedTorusKnot5c: () => DecoratedTorusKnot5c, - FigureEightPolynomialKnot: () => FigureEightPolynomialKnot, - GrannyKnot: () => GrannyKnot, - HeartCurve: () => HeartCurve, - HelixCurve: () => HelixCurve, - KnotCurve: () => KnotCurve, - TorusKnot: () => TorusKnot, - TrefoilKnot: () => TrefoilKnot, - TrefoilPolynomialKnot: () => TrefoilPolynomialKnot, - VivianiCurve: () => VivianiCurve -}); -var GrannyKnot = class extends Curve { - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - t3 = 2 * Math.PI * t3; - const x2 = -0.22 * Math.cos(t3) - 1.28 * Math.sin(t3) - 0.44 * Math.cos(3 * t3) - 0.78 * Math.sin(3 * t3); - const y2 = -0.1 * Math.cos(2 * t3) - 0.27 * Math.sin(2 * t3) + 0.38 * Math.cos(4 * t3) + 0.46 * Math.sin(4 * t3); - const z = 0.7 * Math.cos(3 * t3) - 0.4 * Math.sin(3 * t3); - return point.set(x2, y2, z).multiplyScalar(20); - } -}; -var HeartCurve = class extends Curve { - constructor(scale2 = 5) { - super(); - this.scale = scale2; - } - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - t3 *= 2 * Math.PI; - const x2 = 16 * Math.pow(Math.sin(t3), 3); - const y2 = 13 * Math.cos(t3) - 5 * Math.cos(2 * t3) - 2 * Math.cos(3 * t3) - Math.cos(4 * t3); - const z = 0; - return point.set(x2, y2, z).multiplyScalar(this.scale); - } -}; -var VivianiCurve = class extends Curve { - constructor(scale2 = 70) { - super(); - this.scale = scale2; - } - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - t3 = t3 * 4 * Math.PI; - const a2 = this.scale / 2; - const x2 = a2 * (1 + Math.cos(t3)); - const y2 = a2 * Math.sin(t3); - const z = 2 * a2 * Math.sin(t3 / 2); - return point.set(x2, y2, z); - } -}; -var KnotCurve = class extends Curve { - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - t3 *= 2 * Math.PI; - const R4 = 10; - const s = 50; - const x2 = s * Math.sin(t3); - const y2 = Math.cos(t3) * (R4 + s * Math.cos(t3)); - const z = Math.sin(t3) * (R4 + s * Math.cos(t3)); - return point.set(x2, y2, z); - } -}; -var HelixCurve = class extends Curve { - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - const a2 = 30; - const b3 = 150; - const t22 = 2 * Math.PI * t3 * b3 / 30; - const x2 = Math.cos(t22) * a2; - const y2 = Math.sin(t22) * a2; - const z = b3 * t3; - return point.set(x2, y2, z); - } -}; -var TrefoilKnot = class extends Curve { - constructor(scale2 = 10) { - super(); - this.scale = scale2; - } - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - t3 *= Math.PI * 2; - const x2 = (2 + Math.cos(3 * t3)) * Math.cos(2 * t3); - const y2 = (2 + Math.cos(3 * t3)) * Math.sin(2 * t3); - const z = Math.sin(3 * t3); - return point.set(x2, y2, z).multiplyScalar(this.scale); - } -}; -var TorusKnot = class extends Curve { - constructor(scale2 = 10) { - super(); - this.scale = scale2; - } - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - const p2 = 3; - const q2 = 4; - t3 *= Math.PI * 2; - const x2 = (2 + Math.cos(q2 * t3)) * Math.cos(p2 * t3); - const y2 = (2 + Math.cos(q2 * t3)) * Math.sin(p2 * t3); - const z = Math.sin(q2 * t3); - return point.set(x2, y2, z).multiplyScalar(this.scale); - } -}; -var CinquefoilKnot = class extends Curve { - constructor(scale2 = 10) { - super(); - this.scale = scale2; - } - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - const p2 = 2; - const q2 = 5; - t3 *= Math.PI * 2; - const x2 = (2 + Math.cos(q2 * t3)) * Math.cos(p2 * t3); - const y2 = (2 + Math.cos(q2 * t3)) * Math.sin(p2 * t3); - const z = Math.sin(q2 * t3); - return point.set(x2, y2, z).multiplyScalar(this.scale); - } -}; -var TrefoilPolynomialKnot = class extends Curve { - constructor(scale2 = 10) { - super(); - this.scale = scale2; - } - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - t3 = t3 * 4 - 2; - const x2 = Math.pow(t3, 3) - 3 * t3; - const y2 = Math.pow(t3, 4) - 4 * t3 * t3; - const z = 1 / 5 * Math.pow(t3, 5) - 2 * t3; - return point.set(x2, y2, z).multiplyScalar(this.scale); - } -}; -function scaleTo(x2, y2, t3) { - const r = y2 - x2; - return t3 * r + x2; -} -var FigureEightPolynomialKnot = class extends Curve { - constructor(scale2 = 1) { - super(); - this.scale = scale2; - } - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - t3 = scaleTo(-4, 4, t3); - const x2 = 2 / 5 * t3 * (t3 * t3 - 7) * (t3 * t3 - 10); - const y2 = Math.pow(t3, 4) - 13 * t3 * t3; - const z = 1 / 10 * t3 * (t3 * t3 - 4) * (t3 * t3 - 9) * (t3 * t3 - 12); - return point.set(x2, y2, z).multiplyScalar(this.scale); - } -}; -var DecoratedTorusKnot4a = class extends Curve { - constructor(scale2 = 40) { - super(); - this.scale = scale2; - } - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - t3 *= Math.PI * 2; - const x2 = Math.cos(2 * t3) * (1 + 0.6 * (Math.cos(5 * t3) + 0.75 * Math.cos(10 * t3))); - const y2 = Math.sin(2 * t3) * (1 + 0.6 * (Math.cos(5 * t3) + 0.75 * Math.cos(10 * t3))); - const z = 0.35 * Math.sin(5 * t3); - return point.set(x2, y2, z).multiplyScalar(this.scale); - } -}; -var DecoratedTorusKnot4b = class extends Curve { - constructor(scale2 = 40) { - super(); - this.scale = scale2; - } - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - const fi = t3 * Math.PI * 2; - const x2 = Math.cos(2 * fi) * (1 + 0.45 * Math.cos(3 * fi) + 0.4 * Math.cos(9 * fi)); - const y2 = Math.sin(2 * fi) * (1 + 0.45 * Math.cos(3 * fi) + 0.4 * Math.cos(9 * fi)); - const z = 0.2 * Math.sin(9 * fi); - return point.set(x2, y2, z).multiplyScalar(this.scale); - } -}; -var DecoratedTorusKnot5a = class extends Curve { - constructor(scale2 = 40) { - super(); - this.scale = scale2; - } - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - const fi = t3 * Math.PI * 2; - const x2 = Math.cos(3 * fi) * (1 + 0.3 * Math.cos(5 * fi) + 0.5 * Math.cos(10 * fi)); - const y2 = Math.sin(3 * fi) * (1 + 0.3 * Math.cos(5 * fi) + 0.5 * Math.cos(10 * fi)); - const z = 0.2 * Math.sin(20 * fi); - return point.set(x2, y2, z).multiplyScalar(this.scale); - } -}; -var DecoratedTorusKnot5c = class extends Curve { - constructor(scale2 = 40) { - super(); - this.scale = scale2; - } - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - const fi = t3 * Math.PI * 2; - const x2 = Math.cos(4 * fi) * (1 + 0.5 * (Math.cos(5 * fi) + 0.4 * Math.cos(20 * fi))); - const y2 = Math.sin(4 * fi) * (1 + 0.5 * (Math.cos(5 * fi) + 0.4 * Math.cos(20 * fi))); - const z = 0.35 * Math.sin(15 * fi); - return point.set(x2, y2, z).multiplyScalar(this.scale); - } -}; - -// node_modules/three/examples/jsm/curves/NURBSUtils.js -var NURBSUtils_exports = {}; -__export(NURBSUtils_exports, { - calcBSplineDerivatives: () => calcBSplineDerivatives, - calcBSplinePoint: () => calcBSplinePoint, - calcBasisFunctionDerivatives: () => calcBasisFunctionDerivatives, - calcBasisFunctions: () => calcBasisFunctions, - calcKoverI: () => calcKoverI, - calcNURBSDerivatives: () => calcNURBSDerivatives, - calcRationalCurveDerivatives: () => calcRationalCurveDerivatives, - calcSurfacePoint: () => calcSurfacePoint, - calcVolumePoint: () => calcVolumePoint, - findSpan: () => findSpan -}); -function findSpan(p2, u, U) { - const n2 = U.length - p2 - 1; - if (u >= U[n2]) { - return n2 - 1; - } - if (u <= U[p2]) { - return p2; - } - let low = p2; - let high = n2; - let mid = Math.floor((low + high) / 2); - while (u < U[mid] || u >= U[mid + 1]) { - if (u < U[mid]) { - high = mid; - } else { - low = mid; - } - mid = Math.floor((low + high) / 2); - } - return mid; -} -function calcBasisFunctions(span, u, p2, U) { - const N = []; - const left = []; - const right = []; - N[0] = 1; - for (let j = 1; j <= p2; ++j) { - left[j] = u - U[span + 1 - j]; - right[j] = U[span + j] - u; - let saved = 0; - for (let r = 0; r < j; ++r) { - const rv = right[r + 1]; - const lv = left[j - r]; - const temp = N[r] / (rv + lv); - N[r] = saved + rv * temp; - saved = lv * temp; - } - N[j] = saved; - } - return N; -} -function calcBSplinePoint(p2, U, P, u) { - const span = findSpan(p2, u, U); - const N = calcBasisFunctions(span, u, p2, U); - const C2 = new Vector4(0, 0, 0, 0); - for (let j = 0; j <= p2; ++j) { - const point = P[span - p2 + j]; - const Nj = N[j]; - const wNj = point.w * Nj; - C2.x += point.x * wNj; - C2.y += point.y * wNj; - C2.z += point.z * wNj; - C2.w += point.w * Nj; - } - return C2; -} -function calcBasisFunctionDerivatives(span, u, p2, n2, U) { - const zeroArr = []; - for (let i = 0; i <= p2; ++i) - zeroArr[i] = 0; - const ders = []; - for (let i = 0; i <= n2; ++i) - ders[i] = zeroArr.slice(0); - const ndu = []; - for (let i = 0; i <= p2; ++i) - ndu[i] = zeroArr.slice(0); - ndu[0][0] = 1; - const left = zeroArr.slice(0); - const right = zeroArr.slice(0); - for (let j = 1; j <= p2; ++j) { - left[j] = u - U[span + 1 - j]; - right[j] = U[span + j] - u; - let saved = 0; - for (let r2 = 0; r2 < j; ++r2) { - const rv = right[r2 + 1]; - const lv = left[j - r2]; - ndu[j][r2] = rv + lv; - const temp = ndu[r2][j - 1] / ndu[j][r2]; - ndu[r2][j] = saved + rv * temp; - saved = lv * temp; - } - ndu[j][j] = saved; - } - for (let j = 0; j <= p2; ++j) { - ders[0][j] = ndu[j][p2]; - } - for (let r2 = 0; r2 <= p2; ++r2) { - let s1 = 0; - let s2 = 1; - const a2 = []; - for (let i = 0; i <= p2; ++i) { - a2[i] = zeroArr.slice(0); - } - a2[0][0] = 1; - for (let k2 = 1; k2 <= n2; ++k2) { - let d = 0; - const rk = r2 - k2; - const pk = p2 - k2; - if (r2 >= k2) { - a2[s2][0] = a2[s1][0] / ndu[pk + 1][rk]; - d = a2[s2][0] * ndu[rk][pk]; - } - const j1 = rk >= -1 ? 1 : -rk; - const j2 = r2 - 1 <= pk ? k2 - 1 : p2 - r2; - for (let j3 = j1; j3 <= j2; ++j3) { - a2[s2][j3] = (a2[s1][j3] - a2[s1][j3 - 1]) / ndu[pk + 1][rk + j3]; - d += a2[s2][j3] * ndu[rk + j3][pk]; - } - if (r2 <= pk) { - a2[s2][k2] = -a2[s1][k2 - 1] / ndu[pk + 1][r2]; - d += a2[s2][k2] * ndu[r2][pk]; - } - ders[k2][r2] = d; - const j = s1; - s1 = s2; - s2 = j; - } - } - let r = p2; - for (let k2 = 1; k2 <= n2; ++k2) { - for (let j = 0; j <= p2; ++j) { - ders[k2][j] *= r; - } - r *= p2 - k2; - } - return ders; -} -function calcBSplineDerivatives(p2, U, P, u, nd) { - const du = nd < p2 ? nd : p2; - const CK = []; - const span = findSpan(p2, u, U); - const nders = calcBasisFunctionDerivatives(span, u, p2, du, U); - const Pw = []; - for (let i = 0; i < P.length; ++i) { - const point = P[i].clone(); - const w = point.w; - point.x *= w; - point.y *= w; - point.z *= w; - Pw[i] = point; - } - for (let k2 = 0; k2 <= du; ++k2) { - const point = Pw[span - p2].clone().multiplyScalar(nders[k2][0]); - for (let j = 1; j <= p2; ++j) { - point.add(Pw[span - p2 + j].clone().multiplyScalar(nders[k2][j])); - } - CK[k2] = point; - } - for (let k2 = du + 1; k2 <= nd + 1; ++k2) { - CK[k2] = new Vector4(0, 0, 0); - } - return CK; -} -function calcKoverI(k2, i) { - let nom = 1; - for (let j = 2; j <= k2; ++j) { - nom *= j; - } - let denom = 1; - for (let j = 2; j <= i; ++j) { - denom *= j; - } - for (let j = 2; j <= k2 - i; ++j) { - denom *= j; - } - return nom / denom; -} -function calcRationalCurveDerivatives(Pders) { - const nd = Pders.length; - const Aders = []; - const wders = []; - for (let i = 0; i < nd; ++i) { - const point = Pders[i]; - Aders[i] = new Vector3(point.x, point.y, point.z); - wders[i] = point.w; - } - const CK = []; - for (let k2 = 0; k2 < nd; ++k2) { - const v = Aders[k2].clone(); - for (let i = 1; i <= k2; ++i) { - v.sub(CK[k2 - i].clone().multiplyScalar(calcKoverI(k2, i) * wders[i])); - } - CK[k2] = v.divideScalar(wders[0]); - } - return CK; -} -function calcNURBSDerivatives(p2, U, P, u, nd) { - const Pders = calcBSplineDerivatives(p2, U, P, u, nd); - return calcRationalCurveDerivatives(Pders); -} -function calcSurfacePoint(p2, q2, U, V, P, u, v, target) { - const uspan = findSpan(p2, u, U); - const vspan = findSpan(q2, v, V); - const Nu = calcBasisFunctions(uspan, u, p2, U); - const Nv = calcBasisFunctions(vspan, v, q2, V); - const temp = []; - for (let l2 = 0; l2 <= q2; ++l2) { - temp[l2] = new Vector4(0, 0, 0, 0); - for (let k2 = 0; k2 <= p2; ++k2) { - const point = P[uspan - p2 + k2][vspan - q2 + l2].clone(); - const w = point.w; - point.x *= w; - point.y *= w; - point.z *= w; - temp[l2].add(point.multiplyScalar(Nu[k2])); - } - } - const Sw = new Vector4(0, 0, 0, 0); - for (let l2 = 0; l2 <= q2; ++l2) { - Sw.add(temp[l2].multiplyScalar(Nv[l2])); - } - Sw.divideScalar(Sw.w); - target.set(Sw.x, Sw.y, Sw.z); -} -function calcVolumePoint(p2, q2, r, U, V, W, P, u, v, w, target) { - const uspan = findSpan(p2, u, U); - const vspan = findSpan(q2, v, V); - const wspan = findSpan(r, w, W); - const Nu = calcBasisFunctions(uspan, u, p2, U); - const Nv = calcBasisFunctions(vspan, v, q2, V); - const Nw = calcBasisFunctions(wspan, w, r, W); - const temp = []; - for (let m = 0; m <= r; ++m) { - temp[m] = []; - for (let l2 = 0; l2 <= q2; ++l2) { - temp[m][l2] = new Vector4(0, 0, 0, 0); - for (let k2 = 0; k2 <= p2; ++k2) { - const point = P[uspan - p2 + k2][vspan - q2 + l2][wspan - r + m].clone(); - const w2 = point.w; - point.x *= w2; - point.y *= w2; - point.z *= w2; - temp[m][l2].add(point.multiplyScalar(Nu[k2])); - } - } - } - const Sw = new Vector4(0, 0, 0, 0); - for (let m = 0; m <= r; ++m) { - for (let l2 = 0; l2 <= q2; ++l2) { - Sw.add(temp[m][l2].multiplyScalar(Nw[m]).multiplyScalar(Nv[l2])); - } - } - Sw.divideScalar(Sw.w); - target.set(Sw.x, Sw.y, Sw.z); -} - -// node_modules/three/examples/jsm/curves/NURBSCurve.js -var NURBSCurve = class extends Curve { - constructor(degree, knots, controlPoints, startKnot, endKnot) { - super(); - this.degree = degree; - this.knots = knots; - this.controlPoints = []; - this.startKnot = startKnot || 0; - this.endKnot = endKnot || this.knots.length - 1; - for (let i = 0; i < controlPoints.length; ++i) { - const point = controlPoints[i]; - this.controlPoints[i] = new Vector4(point.x, point.y, point.z, point.w); - } - } - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - const u = this.knots[this.startKnot] + t3 * (this.knots[this.endKnot] - this.knots[this.startKnot]); - const hpoint = calcBSplinePoint(this.degree, this.knots, this.controlPoints, u); - if (hpoint.w !== 1) { - hpoint.divideScalar(hpoint.w); - } - return point.set(hpoint.x, hpoint.y, hpoint.z); - } - getTangent(t3, optionalTarget = new Vector3()) { - const tangent = optionalTarget; - const u = this.knots[0] + t3 * (this.knots[this.knots.length - 1] - this.knots[0]); - const ders = calcNURBSDerivatives(this.degree, this.knots, this.controlPoints, u, 1); - tangent.copy(ders[1]).normalize(); - return tangent; - } -}; - -// node_modules/three/examples/jsm/curves/NURBSSurface.js -var NURBSSurface = class { - constructor(degree1, degree2, knots1, knots2, controlPoints) { - this.degree1 = degree1; - this.degree2 = degree2; - this.knots1 = knots1; - this.knots2 = knots2; - this.controlPoints = []; - const len1 = knots1.length - degree1 - 1; - const len2 = knots2.length - degree2 - 1; - for (let i = 0; i < len1; ++i) { - this.controlPoints[i] = []; - for (let j = 0; j < len2; ++j) { - const point = controlPoints[i][j]; - this.controlPoints[i][j] = new Vector4(point.x, point.y, point.z, point.w); - } - } - } - getPoint(t1, t22, target) { - const u = this.knots1[0] + t1 * (this.knots1[this.knots1.length - 1] - this.knots1[0]); - const v = this.knots2[0] + t22 * (this.knots2[this.knots2.length - 1] - this.knots2[0]); - calcSurfacePoint(this.degree1, this.degree2, this.knots1, this.knots2, this.controlPoints, u, v, target); - } -}; - -// node_modules/three/examples/jsm/curves/NURBSVolume.js -var NURBSVolume = class { - constructor(degree1, degree2, degree3, knots1, knots2, knots3, controlPoints) { - this.degree1 = degree1; - this.degree2 = degree2; - this.degree3 = degree3; - this.knots1 = knots1; - this.knots2 = knots2; - this.knots3 = knots3; - this.controlPoints = []; - const len1 = knots1.length - degree1 - 1; - const len2 = knots2.length - degree2 - 1; - const len3 = knots3.length - degree3 - 1; - for (let i = 0; i < len1; ++i) { - this.controlPoints[i] = []; - for (let j = 0; j < len2; ++j) { - this.controlPoints[i][j] = []; - for (let k2 = 0; k2 < len3; ++k2) { - const point = controlPoints[i][j][k2]; - this.controlPoints[i][j][k2] = new Vector4(point.x, point.y, point.z, point.w); - } - } - } - } - getPoint(t1, t22, t3, target) { - const u = this.knots1[0] + t1 * (this.knots1[this.knots1.length - 1] - this.knots1[0]); - const v = this.knots2[0] + t22 * (this.knots2[this.knots2.length - 1] - this.knots2[0]); - const w = this.knots3[0] + t3 * (this.knots3[this.knots3.length - 1] - this.knots3[0]); - calcVolumePoint(this.degree1, this.degree2, this.degree3, this.knots1, this.knots2, this.knots3, this.controlPoints, u, v, w, target); - } -}; - -// node_modules/three/examples/jsm/effects/AnaglyphEffect.js -var AnaglyphEffect = class { - constructor(renderer2, width2 = 512, height2 = 512) { - this.colorMatrixLeft = new Matrix3().fromArray([ - 0.4561, - -0.0400822, - -0.0152161, - 0.500484, - -0.0378246, - -0.0205971, - 0.176381, - -0.0157589, - -546856e-8 - ]); - this.colorMatrixRight = new Matrix3().fromArray([ - -0.0434706, - 0.378476, - -0.0721527, - -0.0879388, - 0.73364, - -0.112961, - -155529e-8, - -0.0184503, - 1.2264 - ]); - const _camera2 = new OrthographicCamera(-1, 1, 1, -1, 0, 1); - const _scene = new Scene(); - const _stereo = new StereoCamera(); - const _params = { minFilter: LinearFilter, magFilter: NearestFilter, format: RGBAFormat }; - const _renderTargetL = new WebGLRenderTarget(width2, height2, _params); - const _renderTargetR = new WebGLRenderTarget(width2, height2, _params); - const _material = new ShaderMaterial({ - uniforms: { - "mapLeft": { value: _renderTargetL.texture }, - "mapRight": { value: _renderTargetR.texture }, - "colorMatrixLeft": { value: this.colorMatrixLeft }, - "colorMatrixRight": { value: this.colorMatrixRight } - }, - vertexShader: [ - "varying vec2 vUv;", - "void main() {", - " vUv = vec2( uv.x, uv.y );", - " gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", - "}" - ].join("\n"), - fragmentShader: [ - "uniform sampler2D mapLeft;", - "uniform sampler2D mapRight;", - "varying vec2 vUv;", - "uniform mat3 colorMatrixLeft;", - "uniform mat3 colorMatrixRight;", - "void main() {", - " vec2 uv = vUv;", - " vec4 colorL = texture2D( mapLeft, uv );", - " vec4 colorR = texture2D( mapRight, uv );", - " vec3 color = clamp(", - " colorMatrixLeft * colorL.rgb +", - " colorMatrixRight * colorR.rgb, 0., 1. );", - " gl_FragColor = vec4(", - " color.r, color.g, color.b,", - " max( colorL.a, colorR.a ) );", - " #include ", - " #include ", - "}" - ].join("\n") - }); - const _mesh = new Mesh(new PlaneGeometry(2, 2), _material); - _scene.add(_mesh); - this.setSize = function(width3, height3) { - renderer2.setSize(width3, height3); - const pixelRatio = renderer2.getPixelRatio(); - _renderTargetL.setSize(width3 * pixelRatio, height3 * pixelRatio); - _renderTargetR.setSize(width3 * pixelRatio, height3 * pixelRatio); - }; - this.render = function(scene, camera) { - const currentRenderTarget = renderer2.getRenderTarget(); - if (scene.matrixWorldAutoUpdate === true) scene.updateMatrixWorld(); - if (camera.parent === null && camera.matrixWorldAutoUpdate === true) camera.updateMatrixWorld(); - _stereo.update(camera); - renderer2.setRenderTarget(_renderTargetL); - renderer2.clear(); - renderer2.render(scene, _stereo.cameraL); - renderer2.setRenderTarget(_renderTargetR); - renderer2.clear(); - renderer2.render(scene, _stereo.cameraR); - renderer2.setRenderTarget(null); - renderer2.render(_scene, _camera2); - renderer2.setRenderTarget(currentRenderTarget); - }; - this.dispose = function() { - _renderTargetL.dispose(); - _renderTargetR.dispose(); - _mesh.geometry.dispose(); - _mesh.material.dispose(); - }; - } -}; - -// node_modules/three/examples/jsm/effects/AsciiEffect.js -var AsciiEffect = class { - constructor(renderer2, charSet = " .:-=+*#%@", options = {}) { - const fResolution = options["resolution"] || 0.15; - const iScale = options["scale"] || 1; - const bColor = options["color"] || false; - const bAlpha = options["alpha"] || false; - const bBlock = options["block"] || false; - const bInvert = options["invert"] || false; - const strResolution = options["strResolution"] || "low"; - let width2, height2; - const domElement = document.createElement("div"); - domElement.style.cursor = "default"; - const oAscii = document.createElement("table"); - domElement.appendChild(oAscii); - let iWidth, iHeight; - let oImg; - this.setSize = function(w, h) { - width2 = w; - height2 = h; - renderer2.setSize(w, h); - initAsciiSize(); - }; - this.render = function(scene, camera) { - renderer2.render(scene, camera); - asciifyImage(oAscii); - }; - this.domElement = domElement; - function initAsciiSize() { - iWidth = Math.floor(width2 * fResolution); - iHeight = Math.floor(height2 * fResolution); - oCanvas.width = iWidth; - oCanvas.height = iHeight; - oImg = renderer2.domElement; - if (oImg.style.backgroundColor) { - oAscii.rows[0].cells[0].style.backgroundColor = oImg.style.backgroundColor; - oAscii.rows[0].cells[0].style.color = oImg.style.color; - } - oAscii.cellSpacing = 0; - oAscii.cellPadding = 0; - const oStyle = oAscii.style; - oStyle.whiteSpace = "pre"; - oStyle.margin = "0px"; - oStyle.padding = "0px"; - oStyle.letterSpacing = fLetterSpacing + "px"; - oStyle.fontFamily = strFont; - oStyle.fontSize = fFontSize + "px"; - oStyle.lineHeight = fLineHeight + "px"; - oStyle.textAlign = "left"; - oStyle.textDecoration = "none"; - } - const aDefaultCharList = " .,:;i1tfLCG08@".split(""); - const aDefaultColorCharList = " CGO08@".split(""); - const strFont = "courier new, monospace"; - const oCanvasImg = renderer2.domElement; - const oCanvas = document.createElement("canvas"); - if (!oCanvas.getContext) { - return; - } - const oCtx = oCanvas.getContext("2d"); - if (!oCtx.getImageData) { - return; - } - let aCharList = bColor ? aDefaultColorCharList : aDefaultCharList; - if (charSet) aCharList = charSet; - const fFontSize = 2 / fResolution * iScale; - const fLineHeight = 2 / fResolution * iScale; - let fLetterSpacing = 0; - if (strResolution == "low") { - switch (iScale) { - case 1: - fLetterSpacing = -1; - break; - case 2: - case 3: - fLetterSpacing = -2.1; - break; - case 4: - fLetterSpacing = -3.1; - break; - case 5: - fLetterSpacing = -4.15; - break; - } - } - if (strResolution == "medium") { - switch (iScale) { - case 1: - fLetterSpacing = 0; - break; - case 2: - fLetterSpacing = -1; - break; - case 3: - fLetterSpacing = -1.04; - break; - case 4: - case 5: - fLetterSpacing = -2.1; - break; - } - } - if (strResolution == "high") { - switch (iScale) { - case 1: - case 2: - fLetterSpacing = 0; - break; - case 3: - case 4: - case 5: - fLetterSpacing = -1; - break; - } - } - function asciifyImage(oAscii2) { - oCtx.clearRect(0, 0, iWidth, iHeight); - oCtx.drawImage(oCanvasImg, 0, 0, iWidth, iHeight); - const oImgData = oCtx.getImageData(0, 0, iWidth, iHeight).data; - let strChars = ""; - for (let y2 = 0; y2 < iHeight; y2 += 2) { - for (let x2 = 0; x2 < iWidth; x2++) { - const iOffset = (y2 * iWidth + x2) * 4; - const iRed = oImgData[iOffset]; - const iGreen = oImgData[iOffset + 1]; - const iBlue = oImgData[iOffset + 2]; - const iAlpha = oImgData[iOffset + 3]; - let iCharIdx; - let fBrightness; - fBrightness = (0.3 * iRed + 0.59 * iGreen + 0.11 * iBlue) / 255; - if (iAlpha == 0) { - fBrightness = 1; - } - iCharIdx = Math.floor((1 - fBrightness) * (aCharList.length - 1)); - if (bInvert) { - iCharIdx = aCharList.length - iCharIdx - 1; - } - let strThisChar = aCharList[iCharIdx]; - if (strThisChar === void 0 || strThisChar == " ") - strThisChar = " "; - if (bColor) { - strChars += "" + strThisChar + ""; - } else { - strChars += strThisChar; - } - } - strChars += "
"; - } - oAscii2.innerHTML = `${strChars}`; - } - } -}; - -// node_modules/three/examples/jsm/effects/OutlineEffect.js -var OutlineEffect = class { - constructor(renderer2, parameters = {}) { - this.enabled = true; - const defaultThickness = parameters.defaultThickness !== void 0 ? parameters.defaultThickness : 3e-3; - const defaultColor = new Color().fromArray(parameters.defaultColor !== void 0 ? parameters.defaultColor : [0, 0, 0]); - const defaultAlpha = parameters.defaultAlpha !== void 0 ? parameters.defaultAlpha : 1; - const defaultKeepAlive = parameters.defaultKeepAlive !== void 0 ? parameters.defaultKeepAlive : false; - const cache = {}; - const removeThresholdCount = 60; - const originalMaterials = {}; - const originalOnBeforeRenders = {}; - const uniformsOutline = { - outlineThickness: { value: defaultThickness }, - outlineColor: { value: defaultColor }, - outlineAlpha: { value: defaultAlpha } - }; - const vertexShader = [ - "#include ", - "#include ", - "#include ", - "#include ", - "#include ", - "#include ", - "#include ", - "#include ", - "uniform float outlineThickness;", - "vec4 calculateOutline( vec4 pos, vec3 normal, vec4 skinned ) {", - " float thickness = outlineThickness;", - " const float ratio = 1.0;", - // TODO: support outline thickness ratio for each vertex - " vec4 pos2 = projectionMatrix * modelViewMatrix * vec4( skinned.xyz + normal, 1.0 );", - // NOTE: subtract pos2 from pos because BackSide objectNormal is negative - " vec4 norm = normalize( pos - pos2 );", - " return pos + norm * thickness * pos.w * ratio;", - "}", - "void main() {", - " #include ", - " #include ", - " #include ", - " #include ", - " #include ", - " #include ", - " #include ", - " #include ", - " #include ", - " #include ", - " vec3 outlineNormal = - objectNormal;", - // the outline material is always rendered with BackSide - " gl_Position = calculateOutline( gl_Position, outlineNormal, vec4( transformed, 1.0 ) );", - " #include ", - " #include ", - " #include ", - "}" - ].join("\n"); - const fragmentShader = [ - "#include ", - "#include ", - "#include ", - "#include ", - "uniform vec3 outlineColor;", - "uniform float outlineAlpha;", - "void main() {", - " #include ", - " #include ", - " gl_FragColor = vec4( outlineColor, outlineAlpha );", - " #include ", - " #include ", - " #include ", - " #include ", - "}" - ].join("\n"); - function createMaterial() { - return new ShaderMaterial({ - type: "OutlineEffect", - uniforms: UniformsUtils.merge([ - UniformsLib["fog"], - UniformsLib["displacementmap"], - uniformsOutline - ]), - vertexShader, - fragmentShader, - side: BackSide - }); - } - function getOutlineMaterialFromCache(originalMaterial) { - let data2 = cache[originalMaterial.uuid]; - if (data2 === void 0) { - data2 = { - material: createMaterial(), - used: true, - keepAlive: defaultKeepAlive, - count: 0 - }; - cache[originalMaterial.uuid] = data2; - } - data2.used = true; - return data2.material; - } - function getOutlineMaterial(originalMaterial) { - const outlineMaterial = getOutlineMaterialFromCache(originalMaterial); - originalMaterials[outlineMaterial.uuid] = originalMaterial; - updateOutlineMaterial(outlineMaterial, originalMaterial); - return outlineMaterial; - } - function isCompatible(object) { - const geometry = object.geometry; - const hasNormals = geometry !== void 0 && geometry.attributes.normal !== void 0; - return object.isMesh === true && object.material !== void 0 && hasNormals === true; - } - function setOutlineMaterial(object) { - if (isCompatible(object) === false) return; - if (Array.isArray(object.material)) { - for (let i = 0, il = object.material.length; i < il; i++) { - object.material[i] = getOutlineMaterial(object.material[i]); - } - } else { - object.material = getOutlineMaterial(object.material); - } - originalOnBeforeRenders[object.uuid] = object.onBeforeRender; - object.onBeforeRender = onBeforeRender; - } - function restoreOriginalMaterial(object) { - if (isCompatible(object) === false) return; - if (Array.isArray(object.material)) { - for (let i = 0, il = object.material.length; i < il; i++) { - object.material[i] = originalMaterials[object.material[i].uuid]; - } - } else { - object.material = originalMaterials[object.material.uuid]; - } - object.onBeforeRender = originalOnBeforeRenders[object.uuid]; - } - function onBeforeRender(renderer3, scene, camera, geometry, material) { - const originalMaterial = originalMaterials[material.uuid]; - if (originalMaterial === void 0) return; - updateUniforms(material, originalMaterial); - } - function updateUniforms(material, originalMaterial) { - const outlineParameters = originalMaterial.userData.outlineParameters; - material.uniforms.outlineAlpha.value = originalMaterial.opacity; - if (outlineParameters !== void 0) { - if (outlineParameters.thickness !== void 0) material.uniforms.outlineThickness.value = outlineParameters.thickness; - if (outlineParameters.color !== void 0) material.uniforms.outlineColor.value.fromArray(outlineParameters.color); - if (outlineParameters.alpha !== void 0) material.uniforms.outlineAlpha.value = outlineParameters.alpha; - } - if (originalMaterial.displacementMap) { - material.uniforms.displacementMap.value = originalMaterial.displacementMap; - material.uniforms.displacementScale.value = originalMaterial.displacementScale; - material.uniforms.displacementBias.value = originalMaterial.displacementBias; - } - } - function updateOutlineMaterial(material, originalMaterial) { - if (material.name === "invisible") return; - const outlineParameters = originalMaterial.userData.outlineParameters; - material.fog = originalMaterial.fog; - material.toneMapped = originalMaterial.toneMapped; - material.premultipliedAlpha = originalMaterial.premultipliedAlpha; - material.displacementMap = originalMaterial.displacementMap; - if (outlineParameters !== void 0) { - if (originalMaterial.visible === false) { - material.visible = false; - } else { - material.visible = outlineParameters.visible !== void 0 ? outlineParameters.visible : true; - } - material.transparent = outlineParameters.alpha !== void 0 && outlineParameters.alpha < 1 ? true : originalMaterial.transparent; - if (outlineParameters.keepAlive !== void 0) cache[originalMaterial.uuid].keepAlive = outlineParameters.keepAlive; - } else { - material.transparent = originalMaterial.transparent; - material.visible = originalMaterial.visible; - } - if (originalMaterial.wireframe === true || originalMaterial.depthTest === false) material.visible = false; - if (originalMaterial.clippingPlanes) { - material.clipping = true; - material.clippingPlanes = originalMaterial.clippingPlanes; - material.clipIntersection = originalMaterial.clipIntersection; - material.clipShadows = originalMaterial.clipShadows; - } - material.version = originalMaterial.version; - } - function cleanupCache() { - let keys2; - keys2 = Object.keys(originalMaterials); - for (let i = 0, il = keys2.length; i < il; i++) { - originalMaterials[keys2[i]] = void 0; - } - keys2 = Object.keys(originalOnBeforeRenders); - for (let i = 0, il = keys2.length; i < il; i++) { - originalOnBeforeRenders[keys2[i]] = void 0; - } - keys2 = Object.keys(cache); - for (let i = 0, il = keys2.length; i < il; i++) { - const key2 = keys2[i]; - if (cache[key2].used === false) { - cache[key2].count++; - if (cache[key2].keepAlive === false && cache[key2].count > removeThresholdCount) { - delete cache[key2]; - } - } else { - cache[key2].used = false; - cache[key2].count = 0; - } - } - } - this.render = function(scene, camera) { - if (this.enabled === false) { - renderer2.render(scene, camera); - return; - } - const currentAutoClear = renderer2.autoClear; - renderer2.autoClear = this.autoClear; - renderer2.render(scene, camera); - renderer2.autoClear = currentAutoClear; - this.renderOutline(scene, camera); - }; - this.renderOutline = function(scene, camera) { - const currentAutoClear = renderer2.autoClear; - const currentSceneAutoUpdate = scene.matrixWorldAutoUpdate; - const currentSceneBackground = scene.background; - const currentShadowMapEnabled = renderer2.shadowMap.enabled; - scene.matrixWorldAutoUpdate = false; - scene.background = null; - renderer2.autoClear = false; - renderer2.shadowMap.enabled = false; - scene.traverse(setOutlineMaterial); - renderer2.render(scene, camera); - scene.traverse(restoreOriginalMaterial); - cleanupCache(); - scene.matrixWorldAutoUpdate = currentSceneAutoUpdate; - scene.background = currentSceneBackground; - renderer2.autoClear = currentAutoClear; - renderer2.shadowMap.enabled = currentShadowMapEnabled; - }; - this.autoClear = renderer2.autoClear; - this.domElement = renderer2.domElement; - this.shadowMap = renderer2.shadowMap; - this.clear = function(color, depth, stencil) { - renderer2.clear(color, depth, stencil); - }; - this.getPixelRatio = function() { - return renderer2.getPixelRatio(); - }; - this.setPixelRatio = function(value2) { - renderer2.setPixelRatio(value2); - }; - this.getSize = function(target) { - return renderer2.getSize(target); - }; - this.setSize = function(width2, height2, updateStyle) { - renderer2.setSize(width2, height2, updateStyle); - }; - this.setViewport = function(x2, y2, width2, height2) { - renderer2.setViewport(x2, y2, width2, height2); - }; - this.setScissor = function(x2, y2, width2, height2) { - renderer2.setScissor(x2, y2, width2, height2); - }; - this.setScissorTest = function(boolean) { - renderer2.setScissorTest(boolean); - }; - this.setRenderTarget = function(renderTarget) { - renderer2.setRenderTarget(renderTarget); - }; - } -}; - -// node_modules/three/examples/jsm/effects/ParallaxBarrierEffect.js -var ParallaxBarrierEffect = class { - constructor(renderer2) { - const _camera2 = new OrthographicCamera(-1, 1, 1, -1, 0, 1); - const _scene = new Scene(); - const _stereo = new StereoCamera(); - const _params = { minFilter: LinearFilter, magFilter: NearestFilter, format: RGBAFormat }; - const _renderTargetL = new WebGLRenderTarget(512, 512, _params); - const _renderTargetR = new WebGLRenderTarget(512, 512, _params); - const _material = new ShaderMaterial({ - uniforms: { - "mapLeft": { value: _renderTargetL.texture }, - "mapRight": { value: _renderTargetR.texture } - }, - vertexShader: [ - "varying vec2 vUv;", - "void main() {", - " vUv = vec2( uv.x, uv.y );", - " gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", - "}" - ].join("\n"), - fragmentShader: [ - "uniform sampler2D mapLeft;", - "uniform sampler2D mapRight;", - "varying vec2 vUv;", - "void main() {", - " vec2 uv = vUv;", - " if ( ( mod( gl_FragCoord.y, 2.0 ) ) > 1.00 ) {", - " gl_FragColor = texture2D( mapLeft, uv );", - " } else {", - " gl_FragColor = texture2D( mapRight, uv );", - " }", - " #include ", - " #include ", - "}" - ].join("\n") - }); - const mesh = new Mesh(new PlaneGeometry(2, 2), _material); - _scene.add(mesh); - this.setSize = function(width2, height2) { - renderer2.setSize(width2, height2); - const pixelRatio = renderer2.getPixelRatio(); - _renderTargetL.setSize(width2 * pixelRatio, height2 * pixelRatio); - _renderTargetR.setSize(width2 * pixelRatio, height2 * pixelRatio); - }; - this.render = function(scene, camera) { - if (scene.matrixWorldAutoUpdate === true) scene.updateMatrixWorld(); - if (camera.parent === null && camera.matrixWorldAutoUpdate === true) camera.updateMatrixWorld(); - _stereo.update(camera); - renderer2.setRenderTarget(_renderTargetL); - renderer2.clear(); - renderer2.render(scene, _stereo.cameraL); - renderer2.setRenderTarget(_renderTargetR); - renderer2.clear(); - renderer2.render(scene, _stereo.cameraR); - renderer2.setRenderTarget(null); - renderer2.render(_scene, _camera2); - }; - } -}; - -// node_modules/three/examples/jsm/effects/PeppersGhostEffect.js -var PeppersGhostEffect = class { - constructor(renderer2) { - const scope = this; - scope.cameraDistance = 15; - scope.reflectFromAbove = false; - let _halfWidth, _width, _height; - const _cameraF = new PerspectiveCamera(); - const _cameraB = new PerspectiveCamera(); - const _cameraL = new PerspectiveCamera(); - const _cameraR = new PerspectiveCamera(); - const _position3 = new Vector3(); - const _quaternion4 = new Quaternion(); - const _scale5 = new Vector3(); - renderer2.autoClear = false; - this.setSize = function(width2, height2) { - _halfWidth = width2 / 2; - if (width2 < height2) { - _width = width2 / 3; - _height = width2 / 3; - } else { - _width = height2 / 3; - _height = height2 / 3; - } - renderer2.setSize(width2, height2); - }; - this.render = function(scene, camera) { - if (scene.matrixWorldAutoUpdate === true) scene.updateMatrixWorld(); - if (camera.parent === null && camera.matrixWorldAutoUpdate === true) camera.updateMatrixWorld(); - camera.matrixWorld.decompose(_position3, _quaternion4, _scale5); - _cameraF.position.copy(_position3); - _cameraF.quaternion.copy(_quaternion4); - _cameraF.translateZ(scope.cameraDistance); - _cameraF.lookAt(scene.position); - _cameraB.position.copy(_position3); - _cameraB.quaternion.copy(_quaternion4); - _cameraB.translateZ(-scope.cameraDistance); - _cameraB.lookAt(scene.position); - _cameraB.rotation.z += 180 * (Math.PI / 180); - _cameraL.position.copy(_position3); - _cameraL.quaternion.copy(_quaternion4); - _cameraL.translateX(-scope.cameraDistance); - _cameraL.lookAt(scene.position); - _cameraL.rotation.x += 90 * (Math.PI / 180); - _cameraR.position.copy(_position3); - _cameraR.quaternion.copy(_quaternion4); - _cameraR.translateX(scope.cameraDistance); - _cameraR.lookAt(scene.position); - _cameraR.rotation.x += 90 * (Math.PI / 180); - renderer2.clear(); - renderer2.setScissorTest(true); - renderer2.setScissor(_halfWidth - _width / 2, _height * 2, _width, _height); - renderer2.setViewport(_halfWidth - _width / 2, _height * 2, _width, _height); - if (scope.reflectFromAbove) { - renderer2.render(scene, _cameraB); - } else { - renderer2.render(scene, _cameraF); - } - renderer2.setScissor(_halfWidth - _width / 2, 0, _width, _height); - renderer2.setViewport(_halfWidth - _width / 2, 0, _width, _height); - if (scope.reflectFromAbove) { - renderer2.render(scene, _cameraF); - } else { - renderer2.render(scene, _cameraB); - } - renderer2.setScissor(_halfWidth - _width / 2 - _width, _height, _width, _height); - renderer2.setViewport(_halfWidth - _width / 2 - _width, _height, _width, _height); - if (scope.reflectFromAbove) { - renderer2.render(scene, _cameraR); - } else { - renderer2.render(scene, _cameraL); - } - renderer2.setScissor(_halfWidth + _width / 2, _height, _width, _height); - renderer2.setViewport(_halfWidth + _width / 2, _height, _width, _height); - if (scope.reflectFromAbove) { - renderer2.render(scene, _cameraL); - } else { - renderer2.render(scene, _cameraR); - } - renderer2.setScissorTest(false); - }; - } -}; - -// node_modules/three/examples/jsm/effects/StereoEffect.js -var StereoEffect = class { - constructor(renderer2) { - const _stereo = new StereoCamera(); - _stereo.aspect = 0.5; - const size2 = new Vector2(); - this.setEyeSeparation = function(eyeSep) { - _stereo.eyeSep = eyeSep; - }; - this.setSize = function(width2, height2) { - renderer2.setSize(width2, height2); - }; - this.render = function(scene, camera) { - if (scene.matrixWorldAutoUpdate === true) scene.updateMatrixWorld(); - if (camera.parent === null && camera.matrixWorldAutoUpdate === true) camera.updateMatrixWorld(); - _stereo.update(camera); - renderer2.getSize(size2); - if (renderer2.autoClear) renderer2.clear(); - renderer2.setScissorTest(true); - renderer2.setScissor(0, 0, size2.width / 2, size2.height); - renderer2.setViewport(0, 0, size2.width / 2, size2.height); - renderer2.render(scene, _stereo.cameraL); - renderer2.setScissor(size2.width / 2, 0, size2.width / 2, size2.height); - renderer2.setViewport(size2.width / 2, 0, size2.width / 2, size2.height); - renderer2.render(scene, _stereo.cameraR); - renderer2.setScissorTest(false); - }; - } -}; - -// node_modules/three/examples/jsm/environments/DebugEnvironment.js -var DebugEnvironment = class extends Scene { - constructor() { - super(); - const geometry = new BoxGeometry(); - geometry.deleteAttribute("uv"); - const roomMaterial = new MeshStandardMaterial({ metalness: 0, side: BackSide }); - const room = new Mesh(geometry, roomMaterial); - room.scale.setScalar(10); - this.add(room); - const mainLight = new PointLight(16777215, 50, 0, 2); - this.add(mainLight); - const material1 = new MeshLambertMaterial({ color: 16711680, emissive: 16777215, emissiveIntensity: 10 }); - const light1 = new Mesh(geometry, material1); - light1.position.set(-5, 2, 0); - light1.scale.set(0.1, 1, 1); - this.add(light1); - const material2 = new MeshLambertMaterial({ color: 65280, emissive: 16777215, emissiveIntensity: 10 }); - const light2 = new Mesh(geometry, material2); - light2.position.set(0, 5, 0); - light2.scale.set(1, 0.1, 1); - this.add(light2); - const material3 = new MeshLambertMaterial({ color: 255, emissive: 16777215, emissiveIntensity: 10 }); - const light3 = new Mesh(geometry, material3); - light3.position.set(2, 1, 5); - light3.scale.set(1.5, 2, 0.1); - this.add(light3); - } -}; - -// node_modules/three/examples/jsm/environments/RoomEnvironment.js -var RoomEnvironment = class extends Scene { - constructor(renderer2 = null) { - super(); - const geometry = new BoxGeometry(); - geometry.deleteAttribute("uv"); - const roomMaterial = new MeshStandardMaterial({ side: BackSide }); - const boxMaterial = new MeshStandardMaterial(); - const mainLight = new PointLight(16777215, 900, 28, 2); - mainLight.position.set(0.418, 16.199, 0.3); - this.add(mainLight); - const room = new Mesh(geometry, roomMaterial); - room.position.set(-0.757, 13.219, 0.717); - room.scale.set(31.713, 28.305, 28.591); - this.add(room); - const box1 = new Mesh(geometry, boxMaterial); - box1.position.set(-10.906, 2.009, 1.846); - box1.rotation.set(0, -0.195, 0); - box1.scale.set(2.328, 7.905, 4.651); - this.add(box1); - const box2 = new Mesh(geometry, boxMaterial); - box2.position.set(-5.607, -0.754, -0.758); - box2.rotation.set(0, 0.994, 0); - box2.scale.set(1.97, 1.534, 3.955); - this.add(box2); - const box3 = new Mesh(geometry, boxMaterial); - box3.position.set(6.167, 0.857, 7.803); - box3.rotation.set(0, 0.561, 0); - box3.scale.set(3.927, 6.285, 3.687); - this.add(box3); - const box4 = new Mesh(geometry, boxMaterial); - box4.position.set(-2.017, 0.018, 6.124); - box4.rotation.set(0, 0.333, 0); - box4.scale.set(2.002, 4.566, 2.064); - this.add(box4); - const box5 = new Mesh(geometry, boxMaterial); - box5.position.set(2.291, -0.756, -2.621); - box5.rotation.set(0, -0.286, 0); - box5.scale.set(1.546, 1.552, 1.496); - this.add(box5); - const box6 = new Mesh(geometry, boxMaterial); - box6.position.set(-2.193, -0.369, -5.547); - box6.rotation.set(0, 0.516, 0); - box6.scale.set(3.875, 3.487, 2.986); - this.add(box6); - const light1 = new Mesh(geometry, createAreaLightMaterial(50)); - light1.position.set(-16.116, 14.37, 8.208); - light1.scale.set(0.1, 2.428, 2.739); - this.add(light1); - const light2 = new Mesh(geometry, createAreaLightMaterial(50)); - light2.position.set(-16.109, 18.021, -8.207); - light2.scale.set(0.1, 2.425, 2.751); - this.add(light2); - const light3 = new Mesh(geometry, createAreaLightMaterial(17)); - light3.position.set(14.904, 12.198, -1.832); - light3.scale.set(0.15, 4.265, 6.331); - this.add(light3); - const light4 = new Mesh(geometry, createAreaLightMaterial(43)); - light4.position.set(-0.462, 8.89, 14.52); - light4.scale.set(4.38, 5.441, 0.088); - this.add(light4); - const light5 = new Mesh(geometry, createAreaLightMaterial(20)); - light5.position.set(3.235, 11.486, -12.541); - light5.scale.set(2.5, 2, 0.1); - this.add(light5); - const light6 = new Mesh(geometry, createAreaLightMaterial(100)); - light6.position.set(0, 20, 0); - light6.scale.set(1, 0.1, 1); - this.add(light6); - } - dispose() { - const resources = /* @__PURE__ */ new Set(); - this.traverse((object) => { - if (object.isMesh) { - resources.add(object.geometry); - resources.add(object.material); - } - }); - for (const resource of resources) { - resource.dispose(); - } - } -}; -function createAreaLightMaterial(intensity) { - const material = new MeshBasicMaterial(); - material.color.setScalar(intensity); - return material; -} - -// node_modules/three/examples/jsm/exporters/DRACOExporter.js -var DRACOExporter = class _DRACOExporter { - parse(object, options = {}) { - options = Object.assign({ - decodeSpeed: 5, - encodeSpeed: 5, - encoderMethod: _DRACOExporter.MESH_EDGEBREAKER_ENCODING, - quantization: [16, 8, 8, 8, 8], - exportUvs: true, - exportNormals: true, - exportColor: false - }, options); - if (DracoEncoderModule === void 0) { - throw new Error("THREE.DRACOExporter: required the draco_encoder to work."); - } - const geometry = object.geometry; - const dracoEncoder = DracoEncoderModule(); - const encoder = new dracoEncoder.Encoder(); - let builder; - let dracoObject; - if (object.isMesh === true) { - builder = new dracoEncoder.MeshBuilder(); - dracoObject = new dracoEncoder.Mesh(); - const vertices = geometry.getAttribute("position"); - builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array); - const faces = geometry.getIndex(); - if (faces !== null) { - builder.AddFacesToMesh(dracoObject, faces.count / 3, faces.array); - } else { - const faces2 = new (vertices.count > 65535 ? Uint32Array : Uint16Array)(vertices.count); - for (let i = 0; i < faces2.length; i++) { - faces2[i] = i; - } - builder.AddFacesToMesh(dracoObject, vertices.count, faces2); - } - if (options.exportNormals === true) { - const normals = geometry.getAttribute("normal"); - if (normals !== void 0) { - builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.NORMAL, normals.count, normals.itemSize, normals.array); - } - } - if (options.exportUvs === true) { - const uvs = geometry.getAttribute("uv"); - if (uvs !== void 0) { - builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.TEX_COORD, uvs.count, uvs.itemSize, uvs.array); - } - } - if (options.exportColor === true) { - const colors = geometry.getAttribute("color"); - if (colors !== void 0) { - const array = createVertexColorSRGBArray(colors); - builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, array); - } - } - } else if (object.isPoints === true) { - builder = new dracoEncoder.PointCloudBuilder(); - dracoObject = new dracoEncoder.PointCloud(); - const vertices = geometry.getAttribute("position"); - builder.AddFloatAttribute(dracoObject, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array); - if (options.exportColor === true) { - const colors = geometry.getAttribute("color"); - if (colors !== void 0) { - const array = createVertexColorSRGBArray(colors); - builder.AddFloatAttribute(dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, array); - } - } - } else { - throw new Error("DRACOExporter: Unsupported object type."); - } - const encodedData = new dracoEncoder.DracoInt8Array(); - const encodeSpeed = options.encodeSpeed !== void 0 ? options.encodeSpeed : 5; - const decodeSpeed = options.decodeSpeed !== void 0 ? options.decodeSpeed : 5; - encoder.SetSpeedOptions(encodeSpeed, decodeSpeed); - if (options.encoderMethod !== void 0) { - encoder.SetEncodingMethod(options.encoderMethod); - } - if (options.quantization !== void 0) { - for (let i = 0; i < 5; i++) { - if (options.quantization[i] !== void 0) { - encoder.SetAttributeQuantization(i, options.quantization[i]); - } - } - } - let length2; - if (object.isMesh === true) { - length2 = encoder.EncodeMeshToDracoBuffer(dracoObject, encodedData); - } else { - length2 = encoder.EncodePointCloudToDracoBuffer(dracoObject, true, encodedData); - } - dracoEncoder.destroy(dracoObject); - if (length2 === 0) { - throw new Error("THREE.DRACOExporter: Draco encoding failed."); - } - const outputData = new Int8Array(new ArrayBuffer(length2)); - for (let i = 0; i < length2; i++) { - outputData[i] = encodedData.GetValue(i); - } - dracoEncoder.destroy(encodedData); - dracoEncoder.destroy(encoder); - dracoEncoder.destroy(builder); - return outputData; - } -}; -function createVertexColorSRGBArray(attribute) { - const _color5 = new Color(); - const count = attribute.count; - const itemSize = attribute.itemSize; - const array = new Float32Array(count * itemSize); - for (let i = 0, il = count; i < il; i++) { - _color5.fromBufferAttribute(attribute, i).convertLinearToSRGB(); - array[i * itemSize] = _color5.r; - array[i * itemSize + 1] = _color5.g; - array[i * itemSize + 2] = _color5.b; - if (itemSize === 4) { - array[i * itemSize + 3] = attribute.getW(i); - } - } - return array; -} -DRACOExporter.MESH_EDGEBREAKER_ENCODING = 1; -DRACOExporter.MESH_SEQUENTIAL_ENCODING = 0; -DRACOExporter.POINT_CLOUD = 0; -DRACOExporter.TRIANGULAR_MESH = 1; -DRACOExporter.INVALID = -1; -DRACOExporter.POSITION = 0; -DRACOExporter.NORMAL = 1; -DRACOExporter.COLOR = 2; -DRACOExporter.TEX_COORD = 3; -DRACOExporter.GENERIC = 4; - -// node_modules/three/examples/jsm/libs/fflate.module.js -var ch2 = {}; -var wk = function(c2, id, msg, transfer, cb) { - var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([ - c2 + ';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})' - ], { type: "text/javascript" })))); - w.onmessage = function(e) { - var d = e.data, ed = d.$e$; - if (ed) { - var err2 = new Error(ed[0]); - err2["code"] = ed[1]; - err2.stack = ed[2]; - cb(err2, null); - } else - cb(null, d); - }; - w.postMessage(msg, transfer); - return w; -}; -var u8 = Uint8Array; -var u16 = Uint16Array; -var i32 = Int32Array; -var fleb = new u8([ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1, - 2, - 2, - 2, - 2, - 3, - 3, - 3, - 3, - 4, - 4, - 4, - 4, - 5, - 5, - 5, - 5, - 0, - /* unused */ - 0, - 0, - /* impossible */ - 0 -]); -var fdeb = new u8([ - 0, - 0, - 0, - 0, - 1, - 1, - 2, - 2, - 3, - 3, - 4, - 4, - 5, - 5, - 6, - 6, - 7, - 7, - 8, - 8, - 9, - 9, - 10, - 10, - 11, - 11, - 12, - 12, - 13, - 13, - /* unused */ - 0, - 0 -]); -var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); -var freb = function(eb, start) { - var b3 = new u16(31); - for (var i = 0; i < 31; ++i) { - b3[i] = start += 1 << eb[i - 1]; - } - var r = new i32(b3[30]); - for (var i = 1; i < 30; ++i) { - for (var j = b3[i]; j < b3[i + 1]; ++j) { - r[j] = j - b3[i] << 5 | i; - } - } - return { b: b3, r }; -}; -var _a = freb(fleb, 2); -var fl = _a.b; -var revfl = _a.r; -fl[28] = 258, revfl[258] = 28; -var _b = freb(fdeb, 0); -var fd = _b.b; -var revfd = _b.r; -var rev = new u16(32768); -for (i = 0; i < 32768; ++i) { - x2 = (i & 43690) >> 1 | (i & 21845) << 1; - x2 = (x2 & 52428) >> 2 | (x2 & 13107) << 2; - x2 = (x2 & 61680) >> 4 | (x2 & 3855) << 4; - rev[i] = ((x2 & 65280) >> 8 | (x2 & 255) << 8) >> 1; -} -var x2; -var i; -var hMap = function(cd, mb, r) { - var s = cd.length; - var i = 0; - var l2 = new u16(mb); - for (; i < s; ++i) { - if (cd[i]) - ++l2[cd[i] - 1]; - } - var le = new u16(mb); - for (i = 1; i < mb; ++i) { - le[i] = le[i - 1] + l2[i - 1] << 1; - } - var co; - if (r) { - co = new u16(1 << mb); - var rvb = 15 - mb; - for (i = 0; i < s; ++i) { - if (cd[i]) { - var sv = i << 4 | cd[i]; - var r_1 = mb - cd[i]; - var v = le[cd[i] - 1]++ << r_1; - for (var m = v | (1 << r_1) - 1; v <= m; ++v) { - co[rev[v] >> rvb] = sv; - } - } - } - } else { - co = new u16(s); - for (i = 0; i < s; ++i) { - if (cd[i]) { - co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i]; - } - } - } - return co; -}; -var flt = new u8(288); -for (i = 0; i < 144; ++i) - flt[i] = 8; -var i; -for (i = 144; i < 256; ++i) - flt[i] = 9; -var i; -for (i = 256; i < 280; ++i) - flt[i] = 7; -var i; -for (i = 280; i < 288; ++i) - flt[i] = 8; -var i; -var fdt = new u8(32); -for (i = 0; i < 32; ++i) - fdt[i] = 5; -var i; -var flm = hMap(flt, 9, 0); -var flrm = hMap(flt, 9, 1); -var fdm = hMap(fdt, 5, 0); -var fdrm = hMap(fdt, 5, 1); -var max = function(a2) { - var m = a2[0]; - for (var i = 1; i < a2.length; ++i) { - if (a2[i] > m) - m = a2[i]; - } - return m; -}; -var bits = function(d, p2, m) { - var o = p2 / 8 | 0; - return (d[o] | d[o + 1] << 8) >> (p2 & 7) & m; -}; -var bits16 = function(d, p2) { - var o = p2 / 8 | 0; - return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p2 & 7); -}; -var shft = function(p2) { - return (p2 + 7) / 8 | 0; -}; -var slc = function(v, s, e) { - if (s == null || s < 0) - s = 0; - if (e == null || e > v.length) - e = v.length; - return new u8(v.subarray(s, e)); -}; -var ec = [ - "unexpected EOF", - "invalid block type", - "invalid length/literal", - "invalid distance", - "stream finished", - "no stream handler", - , - "no callback", - "invalid UTF-8 data", - "extra field too long", - "date not in range 1980-2099", - "filename too long", - "stream finishing", - "invalid zip data" - // determined by unknown compression method -]; -var err = function(ind, msg, nt2) { - var e = new Error(msg || ec[ind]); - e.code = ind; - if (Error.captureStackTrace) - Error.captureStackTrace(e, err); - if (!nt2) - throw e; - return e; -}; -var inflt = function(dat, st, buf, dict) { - var sl = dat.length, dl = dict ? dict.length : 0; - if (!sl || st.f && !st.l) - return buf || new u8(0); - var noBuf = !buf; - var resize = noBuf || st.i != 2; - var noSt = st.i; - if (noBuf) - buf = new u8(sl * 3); - var cbuf = function(l3) { - var bl = buf.length; - if (l3 > bl) { - var nbuf = new u8(Math.max(bl * 2, l3)); - nbuf.set(buf); - buf = nbuf; - } - }; - var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n; - var tbts = sl * 8; - do { - if (!lm) { - final = bits(dat, pos, 1); - var type = bits(dat, pos + 1, 3); - pos += 3; - if (!type) { - var s = shft(pos) + 4, l2 = dat[s - 4] | dat[s - 3] << 8, t3 = s + l2; - if (t3 > sl) { - if (noSt) - err(0); - break; - } - if (resize) - cbuf(bt + l2); - buf.set(dat.subarray(s, t3), bt); - st.b = bt += l2, st.p = pos = t3 * 8, st.f = final; - continue; - } else if (type == 1) - lm = flrm, dm = fdrm, lbt = 9, dbt = 5; - else if (type == 2) { - var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4; - var tl = hLit + bits(dat, pos + 5, 31) + 1; - pos += 14; - var ldt = new u8(tl); - var clt = new u8(19); - for (var i = 0; i < hcLen; ++i) { - clt[clim[i]] = bits(dat, pos + i * 3, 7); - } - pos += hcLen * 3; - var clb = max(clt), clbmsk = (1 << clb) - 1; - var clm = hMap(clt, clb, 1); - for (var i = 0; i < tl; ) { - var r = clm[bits(dat, pos, clbmsk)]; - pos += r & 15; - var s = r >> 4; - if (s < 16) { - ldt[i++] = s; - } else { - var c2 = 0, n2 = 0; - if (s == 16) - n2 = 3 + bits(dat, pos, 3), pos += 2, c2 = ldt[i - 1]; - else if (s == 17) - n2 = 3 + bits(dat, pos, 7), pos += 3; - else if (s == 18) - n2 = 11 + bits(dat, pos, 127), pos += 7; - while (n2--) - ldt[i++] = c2; - } - } - var lt = ldt.subarray(0, hLit), dt2 = ldt.subarray(hLit); - lbt = max(lt); - dbt = max(dt2); - lm = hMap(lt, lbt, 1); - dm = hMap(dt2, dbt, 1); - } else - err(1); - if (pos > tbts) { - if (noSt) - err(0); - break; - } - } - if (resize) - cbuf(bt + 131072); - var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1; - var lpos = pos; - for (; ; lpos = pos) { - var c2 = lm[bits16(dat, pos) & lms], sym = c2 >> 4; - pos += c2 & 15; - if (pos > tbts) { - if (noSt) - err(0); - break; - } - if (!c2) - err(2); - if (sym < 256) - buf[bt++] = sym; - else if (sym == 256) { - lpos = pos, lm = null; - break; - } else { - var add2 = sym - 254; - if (sym > 264) { - var i = sym - 257, b3 = fleb[i]; - add2 = bits(dat, pos, (1 << b3) - 1) + fl[i]; - pos += b3; - } - var d = dm[bits16(dat, pos) & dms], dsym = d >> 4; - if (!d) - err(3); - pos += d & 15; - var dt2 = fd[dsym]; - if (dsym > 3) { - var b3 = fdeb[dsym]; - dt2 += bits16(dat, pos) & (1 << b3) - 1, pos += b3; - } - if (pos > tbts) { - if (noSt) - err(0); - break; - } - if (resize) - cbuf(bt + 131072); - var end = bt + add2; - if (bt < dt2) { - var shift = dl - dt2, dend = Math.min(dt2, end); - if (shift + bt < 0) - err(3); - for (; bt < dend; ++bt) - buf[bt] = dict[shift + bt]; - } - for (; bt < end; ++bt) - buf[bt] = buf[bt - dt2]; - } - } - st.l = lm, st.p = lpos, st.b = bt, st.f = final; - if (lm) - final = 1, st.m = lbt, st.d = dm, st.n = dbt; - } while (!final); - return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt); -}; -var wbits = function(d, p2, v) { - v <<= p2 & 7; - var o = p2 / 8 | 0; - d[o] |= v; - d[o + 1] |= v >> 8; -}; -var wbits16 = function(d, p2, v) { - v <<= p2 & 7; - var o = p2 / 8 | 0; - d[o] |= v; - d[o + 1] |= v >> 8; - d[o + 2] |= v >> 16; -}; -var hTree = function(d, mb) { - var t3 = []; - for (var i = 0; i < d.length; ++i) { - if (d[i]) - t3.push({ s: i, f: d[i] }); - } - var s = t3.length; - var t22 = t3.slice(); - if (!s) - return { t: et, l: 0 }; - if (s == 1) { - var v = new u8(t3[0].s + 1); - v[t3[0].s] = 1; - return { t: v, l: 1 }; - } - t3.sort(function(a2, b3) { - return a2.f - b3.f; - }); - t3.push({ s: -1, f: 25001 }); - var l2 = t3[0], r = t3[1], i0 = 0, i1 = 1, i2 = 2; - t3[0] = { s: -1, f: l2.f + r.f, l: l2, r }; - while (i1 != s - 1) { - l2 = t3[t3[i0].f < t3[i2].f ? i0++ : i2++]; - r = t3[i0 != i1 && t3[i0].f < t3[i2].f ? i0++ : i2++]; - t3[i1++] = { s: -1, f: l2.f + r.f, l: l2, r }; - } - var maxSym = t22[0].s; - for (var i = 1; i < s; ++i) { - if (t22[i].s > maxSym) - maxSym = t22[i].s; - } - var tr = new u16(maxSym + 1); - var mbt = ln(t3[i1 - 1], tr, 0); - if (mbt > mb) { - var i = 0, dt2 = 0; - var lft = mbt - mb, cst = 1 << lft; - t22.sort(function(a2, b3) { - return tr[b3.s] - tr[a2.s] || a2.f - b3.f; - }); - for (; i < s; ++i) { - var i2_1 = t22[i].s; - if (tr[i2_1] > mb) { - dt2 += cst - (1 << mbt - tr[i2_1]); - tr[i2_1] = mb; - } else - break; - } - dt2 >>= lft; - while (dt2 > 0) { - var i2_2 = t22[i].s; - if (tr[i2_2] < mb) - dt2 -= 1 << mb - tr[i2_2]++ - 1; - else - ++i; - } - for (; i >= 0 && dt2; --i) { - var i2_3 = t22[i].s; - if (tr[i2_3] == mb) { - --tr[i2_3]; - ++dt2; - } - } - mbt = mb; - } - return { t: new u8(tr), l: mbt }; -}; -var ln = function(n2, l2, d) { - return n2.s == -1 ? Math.max(ln(n2.l, l2, d + 1), ln(n2.r, l2, d + 1)) : l2[n2.s] = d; -}; -var lc = function(c2) { - var s = c2.length; - while (s && !c2[--s]) - ; - var cl = new u16(++s); - var cli = 0, cln = c2[0], cls = 1; - var w = function(v) { - cl[cli++] = v; - }; - for (var i = 1; i <= s; ++i) { - if (c2[i] == cln && i != s) - ++cls; - else { - if (!cln && cls > 2) { - for (; cls > 138; cls -= 138) - w(32754); - if (cls > 2) { - w(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305); - cls = 0; - } - } else if (cls > 3) { - w(cln), --cls; - for (; cls > 6; cls -= 6) - w(8304); - if (cls > 2) - w(cls - 3 << 5 | 8208), cls = 0; - } - while (cls--) - w(cln); - cls = 1; - cln = c2[i]; - } - } - return { c: cl.subarray(0, cli), n: s }; -}; -var clen = function(cf, cl) { - var l2 = 0; - for (var i = 0; i < cl.length; ++i) - l2 += cf[i] * cl[i]; - return l2; -}; -var wfblk = function(out, pos, dat) { - var s = dat.length; - var o = shft(pos + 2); - out[o] = s & 255; - out[o + 1] = s >> 8; - out[o + 2] = out[o] ^ 255; - out[o + 3] = out[o + 1] ^ 255; - for (var i = 0; i < s; ++i) - out[o + i + 4] = dat[i]; - return (o + 4 + s) * 8; -}; -var wblk = function(dat, out, final, syms, lf, df, eb, li, bs, bl, p2) { - wbits(out, p2++, final); - ++lf[256]; - var _a3 = hTree(lf, 15), dlt = _a3.t, mlb = _a3.l; - var _b3 = hTree(df, 15), ddt = _b3.t, mdb = _b3.l; - var _c = lc(dlt), lclt = _c.c, nlc = _c.n; - var _d = lc(ddt), lcdt = _d.c, ndc = _d.n; - var lcfreq = new u16(19); - for (var i = 0; i < lclt.length; ++i) - ++lcfreq[lclt[i] & 31]; - for (var i = 0; i < lcdt.length; ++i) - ++lcfreq[lcdt[i] & 31]; - var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l; - var nlcc = 19; - for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc) - ; - var flen = bl + 5 << 3; - var ftlen = clen(lf, flt) + clen(df, fdt) + eb; - var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]; - if (bs >= 0 && flen <= ftlen && flen <= dtlen) - return wfblk(out, p2, dat.subarray(bs, bs + bl)); - var lm, ll, dm, dl; - wbits(out, p2, 1 + (dtlen < ftlen)), p2 += 2; - if (dtlen < ftlen) { - lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt; - var llm = hMap(lct, mlcb, 0); - wbits(out, p2, nlc - 257); - wbits(out, p2 + 5, ndc - 1); - wbits(out, p2 + 10, nlcc - 4); - p2 += 14; - for (var i = 0; i < nlcc; ++i) - wbits(out, p2 + 3 * i, lct[clim[i]]); - p2 += 3 * nlcc; - var lcts = [lclt, lcdt]; - for (var it = 0; it < 2; ++it) { - var clct = lcts[it]; - for (var i = 0; i < clct.length; ++i) { - var len = clct[i] & 31; - wbits(out, p2, llm[len]), p2 += lct[len]; - if (len > 15) - wbits(out, p2, clct[i] >> 5 & 127), p2 += clct[i] >> 12; - } - } - } else { - lm = flm, ll = flt, dm = fdm, dl = fdt; - } - for (var i = 0; i < li; ++i) { - var sym = syms[i]; - if (sym > 255) { - var len = sym >> 18 & 31; - wbits16(out, p2, lm[len + 257]), p2 += ll[len + 257]; - if (len > 7) - wbits(out, p2, sym >> 23 & 31), p2 += fleb[len]; - var dst = sym & 31; - wbits16(out, p2, dm[dst]), p2 += dl[dst]; - if (dst > 3) - wbits16(out, p2, sym >> 5 & 8191), p2 += fdeb[dst]; - } else { - wbits16(out, p2, lm[sym]), p2 += ll[sym]; - } - } - wbits16(out, p2, lm[256]); - return p2 + ll[256]; -}; -var deo = new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]); -var et = new u8(0); -var dflt = function(dat, lvl, plvl, pre, post2, st) { - var s = st.z || dat.length; - var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7e3)) + post2); - var w = o.subarray(pre, o.length - post2); - var lst = st.l; - var pos = (st.r || 0) & 7; - if (lvl) { - if (pos) - w[0] = st.r >> 3; - var opt = deo[lvl - 1]; - var n2 = opt >> 13, c2 = opt & 8191; - var msk_1 = (1 << plvl) - 1; - var prev = st.p || new u16(32768), head2 = st.h || new u16(msk_1 + 1); - var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1; - var hsh = function(i2) { - return (dat[i2] ^ dat[i2 + 1] << bs1_1 ^ dat[i2 + 2] << bs2_1) & msk_1; - }; - var syms = new i32(25e3); - var lf = new u16(288), df = new u16(32); - var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0; - for (; i + 2 < s; ++i) { - var hv = hsh(i); - var imod = i & 32767, pimod = head2[hv]; - prev[imod] = pimod; - head2[hv] = imod; - if (wi <= i) { - var rem = s - i; - if ((lc_1 > 7e3 || li > 24576) && (rem > 423 || !lst)) { - pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos); - li = lc_1 = eb = 0, bs = i; - for (var j = 0; j < 286; ++j) - lf[j] = 0; - for (var j = 0; j < 30; ++j) - df[j] = 0; - } - var l2 = 2, d = 0, ch_1 = c2, dif = imod - pimod & 32767; - if (rem > 2 && hv == hsh(i - dif)) { - var maxn = Math.min(n2, rem) - 1; - var maxd = Math.min(32767, i); - var ml = Math.min(258, rem); - while (dif <= maxd && --ch_1 && imod != pimod) { - if (dat[i + l2] == dat[i + l2 - dif]) { - var nl = 0; - for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl) - ; - if (nl > l2) { - l2 = nl, d = dif; - if (nl > maxn) - break; - var mmd = Math.min(dif, nl - 2); - var md = 0; - for (var j = 0; j < mmd; ++j) { - var ti = i - dif + j & 32767; - var pti = prev[ti]; - var cd = ti - pti & 32767; - if (cd > md) - md = cd, pimod = ti; - } - } - } - imod = pimod, pimod = prev[imod]; - dif += imod - pimod & 32767; - } - } - if (d) { - syms[li++] = 268435456 | revfl[l2] << 18 | revfd[d]; - var lin = revfl[l2] & 31, din = revfd[d] & 31; - eb += fleb[lin] + fdeb[din]; - ++lf[257 + lin]; - ++df[din]; - wi = i + l2; - ++lc_1; - } else { - syms[li++] = dat[i]; - ++lf[dat[i]]; - } - } - } - for (i = Math.max(i, wi); i < s; ++i) { - syms[li++] = dat[i]; - ++lf[dat[i]]; - } - pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos); - if (!lst) { - st.r = pos & 7 | w[pos / 8 | 0] << 3; - pos -= 7; - st.h = head2, st.p = prev, st.i = i, st.w = wi; - } - } else { - for (var i = st.w || 0; i < s + lst; i += 65535) { - var e = i + 65535; - if (e >= s) { - w[pos / 8 | 0] = lst; - e = s; - } - pos = wfblk(w, pos + 1, dat.subarray(i, e)); - } - st.i = s; - } - return slc(o, 0, pre + shft(pos) + post2); -}; -var crct = function() { - var t3 = new Int32Array(256); - for (var i = 0; i < 256; ++i) { - var c2 = i, k2 = 9; - while (--k2) - c2 = (c2 & 1 && -306674912) ^ c2 >>> 1; - t3[i] = c2; - } - return t3; -}(); -var crc = function() { - var c2 = -1; - return { - p: function(d) { - var cr = c2; - for (var i = 0; i < d.length; ++i) - cr = crct[cr & 255 ^ d[i]] ^ cr >>> 8; - c2 = cr; - }, - d: function() { - return ~c2; - } - }; -}; -var adler = function() { - var a2 = 1, b3 = 0; - return { - p: function(d) { - var n2 = a2, m = b3; - var l2 = d.length | 0; - for (var i = 0; i != l2; ) { - var e = Math.min(i + 2655, l2); - for (; i < e; ++i) - m += n2 += d[i]; - n2 = (n2 & 65535) + 15 * (n2 >> 16), m = (m & 65535) + 15 * (m >> 16); - } - a2 = n2, b3 = m; - }, - d: function() { - a2 %= 65521, b3 %= 65521; - return (a2 & 255) << 24 | (a2 & 65280) << 8 | (b3 & 255) << 8 | b3 >> 8; - } - }; -}; -var dopt = function(dat, opt, pre, post2, st) { - if (!st) { - st = { l: 1 }; - if (opt.dictionary) { - var dict = opt.dictionary.subarray(-32768); - var newDat = new u8(dict.length + dat.length); - newDat.set(dict); - newDat.set(dat, dict.length); - dat = newDat; - st.w = dict.length; - } - } - return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20 : 12 + opt.mem, pre, post2, st); -}; -var mrg = function(a2, b3) { - var o = {}; - for (var k2 in a2) - o[k2] = a2[k2]; - for (var k2 in b3) - o[k2] = b3[k2]; - return o; -}; -var wcln = function(fn, fnStr, td2) { - var dt2 = fn(); - var st = fn.toString(); - var ks = st.slice(st.indexOf("[") + 1, st.lastIndexOf("]")).replace(/\s+/g, "").split(","); - for (var i = 0; i < dt2.length; ++i) { - var v = dt2[i], k2 = ks[i]; - if (typeof v == "function") { - fnStr += ";" + k2 + "="; - var st_1 = v.toString(); - if (v.prototype) { - if (st_1.indexOf("[native code]") != -1) { - var spInd = st_1.indexOf(" ", 8) + 1; - fnStr += st_1.slice(spInd, st_1.indexOf("(", spInd)); - } else { - fnStr += st_1; - for (var t3 in v.prototype) - fnStr += ";" + k2 + ".prototype." + t3 + "=" + v.prototype[t3].toString(); - } - } else - fnStr += st_1; - } else - td2[k2] = v; - } - return fnStr; -}; -var ch = []; -var cbfs = function(v) { - var tl = []; - for (var k2 in v) { - if (v[k2].buffer) { - tl.push((v[k2] = new v[k2].constructor(v[k2])).buffer); - } - } - return tl; -}; -var wrkr = function(fns, init, id, cb) { - if (!ch[id]) { - var fnStr = "", td_1 = {}, m = fns.length - 1; - for (var i = 0; i < m; ++i) - fnStr = wcln(fns[i], fnStr, td_1); - ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 }; - } - var td2 = mrg({}, ch[id].e); - return wk(ch[id].c + ";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=" + init.toString() + "}", id, td2, cbfs(td2), cb); -}; -var bInflt = function() { - return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; -}; -var bDflt = function() { - return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; -}; -var guze = function() { - return [gzs, gzl]; -}; -var zule = function() { - return [zls]; -}; -var pbf = function(msg) { - return postMessage(msg, [msg.buffer]); -}; -var gopt = function(o) { - return o && { - out: o.size && new u8(o.size), - dictionary: o.dictionary - }; -}; -var astrm = function(strm) { - strm.ondata = function(dat, final) { - return postMessage([dat, final], [dat.buffer]); - }; - return function(ev) { - if (ev.data.length) { - strm.push(ev.data[0], ev.data[1]); - postMessage([ev.data[0].length]); - } else - strm.flush(); - }; -}; -var astrmify = function(fns, strm, opts, init, id, flush, ext) { - var t3; - var w = wrkr(fns, init, id, function(err2, dat) { - if (err2) - w.terminate(), strm.ondata.call(strm, err2); - else if (!Array.isArray(dat)) - ext(dat); - else if (dat.length == 1) { - strm.queuedSize -= dat[0]; - if (strm.ondrain) - strm.ondrain(dat[0]); - } else { - if (dat[1]) - w.terminate(); - strm.ondata.call(strm, err2, dat[0], dat[1]); - } - }); - w.postMessage(opts); - strm.queuedSize = 0; - strm.push = function(d, f) { - if (!strm.ondata) - err(5); - if (t3) - strm.ondata(err(4, 0, 1), null, !!f); - strm.queuedSize += d.length; - w.postMessage([d, t3 = f], [d.buffer]); - }; - strm.terminate = function() { - w.terminate(); - }; - if (flush) { - strm.flush = function() { - w.postMessage([]); - }; - } -}; -var b2 = function(d, b3) { - return d[b3] | d[b3 + 1] << 8; -}; -var b4 = function(d, b3) { - return (d[b3] | d[b3 + 1] << 8 | d[b3 + 2] << 16 | d[b3 + 3] << 24) >>> 0; -}; -var b8 = function(d, b3) { - return b4(d, b3) + b4(d, b3 + 4) * 4294967296; -}; -var wbytes = function(d, b3, v) { - for (; v; ++b3) - d[b3] = v, v >>>= 8; -}; -var gzh = function(c2, o) { - var fn = o.filename; - c2[0] = 31, c2[1] = 139, c2[2] = 8, c2[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c2[9] = 3; - if (o.mtime != 0) - wbytes(c2, 4, Math.floor(new Date(o.mtime || Date.now()) / 1e3)); - if (fn) { - c2[3] = 8; - for (var i = 0; i <= fn.length; ++i) - c2[i + 10] = fn.charCodeAt(i); - } -}; -var gzs = function(d) { - if (d[0] != 31 || d[1] != 139 || d[2] != 8) - err(6, "invalid gzip data"); - var flg = d[3]; - var st = 10; - if (flg & 4) - st += (d[10] | d[11] << 8) + 2; - for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++]) - ; - return st + (flg & 2); -}; -var gzl = function(d) { - var l2 = d.length; - return (d[l2 - 4] | d[l2 - 3] << 8 | d[l2 - 2] << 16 | d[l2 - 1] << 24) >>> 0; -}; -var gzhl = function(o) { - return 10 + (o.filename ? o.filename.length + 1 : 0); -}; -var zlh = function(c2, o) { - var lv = o.level, fl2 = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2; - c2[0] = 120, c2[1] = fl2 << 6 | (o.dictionary && 32); - c2[1] |= 31 - (c2[0] << 8 | c2[1]) % 31; - if (o.dictionary) { - var h = adler(); - h.p(o.dictionary); - wbytes(c2, 2, h.d()); - } -}; -var zls = function(d, dict) { - if ((d[0] & 15) != 8 || d[0] >> 4 > 7 || (d[0] << 8 | d[1]) % 31) - err(6, "invalid zlib data"); - if ((d[1] >> 5 & 1) == +!dict) - err(6, "invalid zlib data: " + (d[1] & 32 ? "need" : "unexpected") + " dictionary"); - return (d[1] >> 3 & 4) + 2; -}; -function StrmOpt(opts, cb) { - if (typeof opts == "function") - cb = opts, opts = {}; - this.ondata = cb; - return opts; -} -var Deflate = function() { - function Deflate2(opts, cb) { - if (typeof opts == "function") - cb = opts, opts = {}; - this.ondata = cb; - this.o = opts || {}; - this.s = { l: 0, i: 32768, w: 32768, z: 32768 }; - this.b = new u8(98304); - if (this.o.dictionary) { - var dict = this.o.dictionary.subarray(-32768); - this.b.set(dict, 32768 - dict.length); - this.s.i = 32768 - dict.length; - } - } - Deflate2.prototype.p = function(c2, f) { - this.ondata(dopt(c2, this.o, 0, 0, this.s), f); - }; - Deflate2.prototype.push = function(chunk, final) { - if (!this.ondata) - err(5); - if (this.s.l) - err(4); - var endLen = chunk.length + this.s.z; - if (endLen > this.b.length) { - if (endLen > 2 * this.b.length - 32768) { - var newBuf = new u8(endLen & -32768); - newBuf.set(this.b.subarray(0, this.s.z)); - this.b = newBuf; - } - var split = this.b.length - this.s.z; - this.b.set(chunk.subarray(0, split), this.s.z); - this.s.z = this.b.length; - this.p(this.b, false); - this.b.set(this.b.subarray(-32768)); - this.b.set(chunk.subarray(split), 32768); - this.s.z = chunk.length - split + 32768; - this.s.i = 32766, this.s.w = 32768; - } else { - this.b.set(chunk, this.s.z); - this.s.z += chunk.length; - } - this.s.l = final & 1; - if (this.s.z > this.s.w + 8191 || final) { - this.p(this.b, final || false); - this.s.w = this.s.i, this.s.i -= 2; - } - }; - Deflate2.prototype.flush = function() { - if (!this.ondata) - err(5); - if (this.s.l) - err(4); - this.p(this.b, false); - this.s.w = this.s.i, this.s.i -= 2; - }; - return Deflate2; -}(); -var AsyncDeflate = /* @__PURE__ */ function() { - function AsyncDeflate2(opts, cb) { - astrmify([ - bDflt, - function() { - return [astrm, Deflate]; - } - ], this, StrmOpt.call(this, opts, cb), function(ev) { - var strm = new Deflate(ev.data); - onmessage = astrm(strm); - }, 6, 1); - } - return AsyncDeflate2; -}(); -function deflateSync(data2, opts) { - return dopt(data2, opts || {}, 0, 0); -} -var Inflate = function() { - function Inflate2(opts, cb) { - if (typeof opts == "function") - cb = opts, opts = {}; - this.ondata = cb; - var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768); - this.s = { i: 0, b: dict ? dict.length : 0 }; - this.o = new u8(32768); - this.p = new u8(0); - if (dict) - this.o.set(dict); - } - Inflate2.prototype.e = function(c2) { - if (!this.ondata) - err(5); - if (this.d) - err(4); - if (!this.p.length) - this.p = c2; - else if (c2.length) { - var n2 = new u8(this.p.length + c2.length); - n2.set(this.p), n2.set(c2, this.p.length), this.p = n2; - } - }; - Inflate2.prototype.c = function(final) { - this.s.i = +(this.d = final || false); - var bts = this.s.b; - var dt2 = inflt(this.p, this.s, this.o); - this.ondata(slc(dt2, bts, this.s.b), this.d); - this.o = slc(dt2, this.s.b - 32768), this.s.b = this.o.length; - this.p = slc(this.p, this.s.p / 8 | 0), this.s.p &= 7; - }; - Inflate2.prototype.push = function(chunk, final) { - this.e(chunk), this.c(final); - }; - return Inflate2; -}(); -var AsyncInflate = /* @__PURE__ */ function() { - function AsyncInflate2(opts, cb) { - astrmify([ - bInflt, - function() { - return [astrm, Inflate]; - } - ], this, StrmOpt.call(this, opts, cb), function(ev) { - var strm = new Inflate(ev.data); - onmessage = astrm(strm); - }, 7, 0); - } - return AsyncInflate2; -}(); -function inflateSync(data2, opts) { - return inflt(data2, { i: 2 }, opts && opts.out, opts && opts.dictionary); -} -var Gzip = function() { - function Gzip2(opts, cb) { - this.c = crc(); - this.l = 0; - this.v = 1; - Deflate.call(this, opts, cb); - } - Gzip2.prototype.push = function(chunk, final) { - this.c.p(chunk); - this.l += chunk.length; - Deflate.prototype.push.call(this, chunk, final); - }; - Gzip2.prototype.p = function(c2, f) { - var raw = dopt(c2, this.o, this.v && gzhl(this.o), f && 8, this.s); - if (this.v) - gzh(raw, this.o), this.v = 0; - if (f) - wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l); - this.ondata(raw, f); - }; - Gzip2.prototype.flush = function() { - Deflate.prototype.flush.call(this); - }; - return Gzip2; -}(); -var Gunzip = function() { - function Gunzip2(opts, cb) { - this.v = 1; - this.r = 0; - Inflate.call(this, opts, cb); - } - Gunzip2.prototype.push = function(chunk, final) { - Inflate.prototype.e.call(this, chunk); - this.r += chunk.length; - if (this.v) { - var p2 = this.p.subarray(this.v - 1); - var s = p2.length > 3 ? gzs(p2) : 4; - if (s > p2.length) { - if (!final) - return; - } else if (this.v > 1 && this.onmember) { - this.onmember(this.r - p2.length); - } - this.p = p2.subarray(s), this.v = 0; - } - Inflate.prototype.c.call(this, final); - if (this.s.f && !this.s.l && !final) { - this.v = shft(this.s.p) + 9; - this.s = { i: 0 }; - this.o = new u8(0); - this.push(new u8(0), final); - } - }; - return Gunzip2; -}(); -var AsyncGunzip = /* @__PURE__ */ function() { - function AsyncGunzip2(opts, cb) { - var _this = this; - astrmify([ - bInflt, - guze, - function() { - return [astrm, Inflate, Gunzip]; - } - ], this, StrmOpt.call(this, opts, cb), function(ev) { - var strm = new Gunzip(ev.data); - strm.onmember = function(offset) { - return postMessage(offset); - }; - onmessage = astrm(strm); - }, 9, 0, function(offset) { - return _this.onmember && _this.onmember(offset); - }); - } - return AsyncGunzip2; -}(); -function gunzipSync(data2, opts) { - var st = gzs(data2); - if (st + 8 > data2.length) - err(6, "invalid gzip data"); - return inflt(data2.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data2)), opts && opts.dictionary); -} -var Zlib = function() { - function Zlib2(opts, cb) { - this.c = adler(); - this.v = 1; - Deflate.call(this, opts, cb); - } - Zlib2.prototype.push = function(chunk, final) { - this.c.p(chunk); - Deflate.prototype.push.call(this, chunk, final); - }; - Zlib2.prototype.p = function(c2, f) { - var raw = dopt(c2, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s); - if (this.v) - zlh(raw, this.o), this.v = 0; - if (f) - wbytes(raw, raw.length - 4, this.c.d()); - this.ondata(raw, f); - }; - Zlib2.prototype.flush = function() { - Deflate.prototype.flush.call(this); - }; - return Zlib2; -}(); -function zlibSync(data2, opts) { - if (!opts) - opts = {}; - var a2 = adler(); - a2.p(data2); - var d = dopt(data2, opts, opts.dictionary ? 6 : 2, 4); - return zlh(d, opts), wbytes(d, d.length - 4, a2.d()), d; -} -var Unzlib = function() { - function Unzlib2(opts, cb) { - Inflate.call(this, opts, cb); - this.v = opts && opts.dictionary ? 2 : 1; - } - Unzlib2.prototype.push = function(chunk, final) { - Inflate.prototype.e.call(this, chunk); - if (this.v) { - if (this.p.length < 6 && !final) - return; - this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0; - } - if (final) { - if (this.p.length < 4) - err(6, "invalid zlib data"); - this.p = this.p.subarray(0, -4); - } - Inflate.prototype.c.call(this, final); - }; - return Unzlib2; -}(); -var AsyncUnzlib = /* @__PURE__ */ function() { - function AsyncUnzlib2(opts, cb) { - astrmify([ - bInflt, - zule, - function() { - return [astrm, Inflate, Unzlib]; - } - ], this, StrmOpt.call(this, opts, cb), function(ev) { - var strm = new Unzlib(ev.data); - onmessage = astrm(strm); - }, 11, 0); - } - return AsyncUnzlib2; -}(); -function unzlibSync(data2, opts) { - return inflt(data2.subarray(zls(data2, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary); -} -var Decompress = function() { - function Decompress2(opts, cb) { - this.o = StrmOpt.call(this, opts, cb) || {}; - this.G = Gunzip; - this.I = Inflate; - this.Z = Unzlib; - } - Decompress2.prototype.i = function() { - var _this = this; - this.s.ondata = function(dat, final) { - _this.ondata(dat, final); - }; - }; - Decompress2.prototype.push = function(chunk, final) { - if (!this.ondata) - err(5); - if (!this.s) { - if (this.p && this.p.length) { - var n2 = new u8(this.p.length + chunk.length); - n2.set(this.p), n2.set(chunk, this.p.length); - } else - this.p = chunk; - if (this.p.length > 2) { - this.s = this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8 ? new this.G(this.o) : (this.p[0] & 15) != 8 || this.p[0] >> 4 > 7 || (this.p[0] << 8 | this.p[1]) % 31 ? new this.I(this.o) : new this.Z(this.o); - this.i(); - this.s.push(this.p, final); - this.p = null; - } - } else - this.s.push(chunk, final); - }; - return Decompress2; -}(); -var AsyncDecompress = function() { - function AsyncDecompress2(opts, cb) { - Decompress.call(this, opts, cb); - this.queuedSize = 0; - this.G = AsyncGunzip; - this.I = AsyncInflate; - this.Z = AsyncUnzlib; - } - AsyncDecompress2.prototype.i = function() { - var _this = this; - this.s.ondata = function(err2, dat, final) { - _this.ondata(err2, dat, final); - }; - this.s.ondrain = function(size2) { - _this.queuedSize -= size2; - if (_this.ondrain) - _this.ondrain(size2); - }; - }; - AsyncDecompress2.prototype.push = function(chunk, final) { - this.queuedSize += chunk.length; - Decompress.prototype.push.call(this, chunk, final); - }; - return AsyncDecompress2; -}(); -var fltn = function(d, p2, t3, o) { - for (var k2 in d) { - var val2 = d[k2], n2 = p2 + k2, op = o; - if (Array.isArray(val2)) - op = mrg(o, val2[1]), val2 = val2[0]; - if (val2 instanceof u8) - t3[n2] = [val2, op]; - else { - t3[n2 += "/"] = [new u8(0), op]; - fltn(val2, n2, t3, o); - } - } -}; -var te = typeof TextEncoder != "undefined" && new TextEncoder(); -var td = typeof TextDecoder != "undefined" && new TextDecoder(); -var tds = 0; -try { - td.decode(et, { stream: true }); - tds = 1; -} catch (e) { -} -var dutf8 = function(d) { - for (var r = "", i = 0; ; ) { - var c2 = d[i++]; - var eb = (c2 > 127) + (c2 > 223) + (c2 > 239); - if (i + eb > d.length) - return { s: r, r: slc(d, i - 1) }; - if (!eb) - r += String.fromCharCode(c2); - else if (eb == 3) { - c2 = ((c2 & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | d[i++] & 63) - 65536, r += String.fromCharCode(55296 | c2 >> 10, 56320 | c2 & 1023); - } else if (eb & 1) - r += String.fromCharCode((c2 & 31) << 6 | d[i++] & 63); - else - r += String.fromCharCode((c2 & 15) << 12 | (d[i++] & 63) << 6 | d[i++] & 63); - } -}; -var DecodeUTF8 = function() { - function DecodeUTF82(cb) { - this.ondata = cb; - if (tds) - this.t = new TextDecoder(); - else - this.p = et; - } - DecodeUTF82.prototype.push = function(chunk, final) { - if (!this.ondata) - err(5); - final = !!final; - if (this.t) { - this.ondata(this.t.decode(chunk, { stream: true }), final); - if (final) { - if (this.t.decode().length) - err(8); - this.t = null; - } - return; - } - if (!this.p) - err(4); - var dat = new u8(this.p.length + chunk.length); - dat.set(this.p); - dat.set(chunk, this.p.length); - var _a3 = dutf8(dat), s = _a3.s, r = _a3.r; - if (final) { - if (r.length) - err(8); - this.p = null; - } else - this.p = r; - this.ondata(s, final); - }; - return DecodeUTF82; -}(); -var EncodeUTF8 = function() { - function EncodeUTF82(cb) { - this.ondata = cb; - } - EncodeUTF82.prototype.push = function(chunk, final) { - if (!this.ondata) - err(5); - if (this.d) - err(4); - this.ondata(strToU8(chunk), this.d = final || false); - }; - return EncodeUTF82; -}(); -function strToU8(str, latin1) { - if (latin1) { - var ar_1 = new u8(str.length); - for (var i = 0; i < str.length; ++i) - ar_1[i] = str.charCodeAt(i); - return ar_1; - } - if (te) - return te.encode(str); - var l2 = str.length; - var ar = new u8(str.length + (str.length >> 1)); - var ai = 0; - var w = function(v) { - ar[ai++] = v; - }; - for (var i = 0; i < l2; ++i) { - if (ai + 5 > ar.length) { - var n2 = new u8(ai + 8 + (l2 - i << 1)); - n2.set(ar); - ar = n2; - } - var c2 = str.charCodeAt(i); - if (c2 < 128 || latin1) - w(c2); - else if (c2 < 2048) - w(192 | c2 >> 6), w(128 | c2 & 63); - else if (c2 > 55295 && c2 < 57344) - c2 = 65536 + (c2 & 1023 << 10) | str.charCodeAt(++i) & 1023, w(240 | c2 >> 18), w(128 | c2 >> 12 & 63), w(128 | c2 >> 6 & 63), w(128 | c2 & 63); - else - w(224 | c2 >> 12), w(128 | c2 >> 6 & 63), w(128 | c2 & 63); - } - return slc(ar, 0, ai); -} -function strFromU8(dat, latin1) { - if (latin1) { - var r = ""; - for (var i = 0; i < dat.length; i += 16384) - r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384)); - return r; - } else if (td) { - return td.decode(dat); - } else { - var _a3 = dutf8(dat), s = _a3.s, r = _a3.r; - if (r.length) - err(8); - return s; - } -} -var dbf = function(l2) { - return l2 == 1 ? 3 : l2 < 6 ? 2 : l2 == 9 ? 1 : 0; -}; -var slzh = function(d, b3) { - return b3 + 30 + b2(d, b3 + 26) + b2(d, b3 + 28); -}; -var zh = function(d, b3, z) { - var fnl = b2(d, b3 + 28), fn = strFromU8(d.subarray(b3 + 46, b3 + 46 + fnl), !(b2(d, b3 + 8) & 2048)), es = b3 + 46 + fnl, bs = b4(d, b3 + 20); - var _a3 = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b3 + 24), b4(d, b3 + 42)], sc = _a3[0], su = _a3[1], off = _a3[2]; - return [b2(d, b3 + 10), sc, su, fn, es + b2(d, b3 + 30) + b2(d, b3 + 32), off]; -}; -var z64e = function(d, b3) { - for (; b2(d, b3) != 1; b3 += 4 + b2(d, b3 + 2)) - ; - return [b8(d, b3 + 12), b8(d, b3 + 4), b8(d, b3 + 20)]; -}; -var exfl = function(ex) { - var le = 0; - if (ex) { - for (var k2 in ex) { - var l2 = ex[k2].length; - if (l2 > 65535) - err(9); - le += l2 + 4; - } - } - return le; -}; -var wzh = function(d, b3, f, fn, u, c2, ce2, co) { - var fl2 = fn.length, ex = f.extra, col = co && co.length; - var exl = exfl(ex); - wbytes(d, b3, ce2 != null ? 33639248 : 67324752), b3 += 4; - if (ce2 != null) - d[b3++] = 20, d[b3++] = f.os; - d[b3] = 20, b3 += 2; - d[b3++] = f.flag << 1 | (c2 < 0 && 8), d[b3++] = u && 8; - d[b3++] = f.compression & 255, d[b3++] = f.compression >> 8; - var dt2 = new Date(f.mtime == null ? Date.now() : f.mtime), y2 = dt2.getFullYear() - 1980; - if (y2 < 0 || y2 > 119) - err(10); - wbytes(d, b3, y2 << 25 | dt2.getMonth() + 1 << 21 | dt2.getDate() << 16 | dt2.getHours() << 11 | dt2.getMinutes() << 5 | dt2.getSeconds() >> 1), b3 += 4; - if (c2 != -1) { - wbytes(d, b3, f.crc); - wbytes(d, b3 + 4, c2 < 0 ? -c2 - 2 : c2); - wbytes(d, b3 + 8, f.size); - } - wbytes(d, b3 + 12, fl2); - wbytes(d, b3 + 14, exl), b3 += 16; - if (ce2 != null) { - wbytes(d, b3, col); - wbytes(d, b3 + 6, f.attrs); - wbytes(d, b3 + 10, ce2), b3 += 14; - } - d.set(fn, b3); - b3 += fl2; - if (exl) { - for (var k2 in ex) { - var exf = ex[k2], l2 = exf.length; - wbytes(d, b3, +k2); - wbytes(d, b3 + 2, l2); - d.set(exf, b3 + 4), b3 += 4 + l2; - } - } - if (col) - d.set(co, b3), b3 += col; - return b3; -}; -var wzf = function(o, b3, c2, d, e) { - wbytes(o, b3, 101010256); - wbytes(o, b3 + 8, c2); - wbytes(o, b3 + 10, c2); - wbytes(o, b3 + 12, d); - wbytes(o, b3 + 16, e); -}; -var ZipPassThrough = function() { - function ZipPassThrough2(filename) { - this.filename = filename; - this.c = crc(); - this.size = 0; - this.compression = 0; - } - ZipPassThrough2.prototype.process = function(chunk, final) { - this.ondata(null, chunk, final); - }; - ZipPassThrough2.prototype.push = function(chunk, final) { - if (!this.ondata) - err(5); - this.c.p(chunk); - this.size += chunk.length; - if (final) - this.crc = this.c.d(); - this.process(chunk, final || false); - }; - return ZipPassThrough2; -}(); -var ZipDeflate = function() { - function ZipDeflate2(filename, opts) { - var _this = this; - if (!opts) - opts = {}; - ZipPassThrough.call(this, filename); - this.d = new Deflate(opts, function(dat, final) { - _this.ondata(null, dat, final); - }); - this.compression = 8; - this.flag = dbf(opts.level); - } - ZipDeflate2.prototype.process = function(chunk, final) { - try { - this.d.push(chunk, final); - } catch (e) { - this.ondata(e, null, final); - } - }; - ZipDeflate2.prototype.push = function(chunk, final) { - ZipPassThrough.prototype.push.call(this, chunk, final); - }; - return ZipDeflate2; -}(); -var AsyncZipDeflate = function() { - function AsyncZipDeflate2(filename, opts) { - var _this = this; - if (!opts) - opts = {}; - ZipPassThrough.call(this, filename); - this.d = new AsyncDeflate(opts, function(err2, dat, final) { - _this.ondata(err2, dat, final); - }); - this.compression = 8; - this.flag = dbf(opts.level); - this.terminate = this.d.terminate; - } - AsyncZipDeflate2.prototype.process = function(chunk, final) { - this.d.push(chunk, final); - }; - AsyncZipDeflate2.prototype.push = function(chunk, final) { - ZipPassThrough.prototype.push.call(this, chunk, final); - }; - return AsyncZipDeflate2; -}(); -var Zip = function() { - function Zip2(cb) { - this.ondata = cb; - this.u = []; - this.d = 1; - } - Zip2.prototype.add = function(file) { - var _this = this; - if (!this.ondata) - err(5); - if (this.d & 2) - this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false); - else { - var f = strToU8(file.filename), fl_1 = f.length; - var com = file.comment, o = com && strToU8(com); - var u = fl_1 != file.filename.length || o && com.length != o.length; - var hl_1 = fl_1 + exfl(file.extra) + 30; - if (fl_1 > 65535) - this.ondata(err(11, 0, 1), null, false); - var header = new u8(hl_1); - wzh(header, 0, file, f, u, -1); - var chks_1 = [header]; - var pAll_1 = function() { - for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) { - var chk = chks_2[_i]; - _this.ondata(null, chk, false); - } - chks_1 = []; - }; - var tr_1 = this.d; - this.d = 0; - var ind_1 = this.u.length; - var uf_1 = mrg(file, { - f, - u, - o, - t: function() { - if (file.terminate) - file.terminate(); - }, - r: function() { - pAll_1(); - if (tr_1) { - var nxt = _this.u[ind_1 + 1]; - if (nxt) - nxt.r(); - else - _this.d = 1; - } - tr_1 = 1; - } - }); - var cl_1 = 0; - file.ondata = function(err2, dat, final) { - if (err2) { - _this.ondata(err2, dat, final); - _this.terminate(); - } else { - cl_1 += dat.length; - chks_1.push(dat); - if (final) { - var dd = new u8(16); - wbytes(dd, 0, 134695760); - wbytes(dd, 4, file.crc); - wbytes(dd, 8, cl_1); - wbytes(dd, 12, file.size); - chks_1.push(dd); - uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size; - if (tr_1) - uf_1.r(); - tr_1 = 1; - } else if (tr_1) - pAll_1(); - } - }; - this.u.push(uf_1); - } - }; - Zip2.prototype.end = function() { - var _this = this; - if (this.d & 2) { - this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true); - return; - } - if (this.d) - this.e(); - else - this.u.push({ - r: function() { - if (!(_this.d & 1)) - return; - _this.u.splice(-1, 1); - _this.e(); - }, - t: function() { - } - }); - this.d = 3; - }; - Zip2.prototype.e = function() { - var bt = 0, l2 = 0, tl = 0; - for (var _i = 0, _a3 = this.u; _i < _a3.length; _i++) { - var f = _a3[_i]; - tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0); - } - var out = new u8(tl + 22); - for (var _b3 = 0, _c = this.u; _b3 < _c.length; _b3++) { - var f = _c[_b3]; - wzh(out, bt, f, f.f, f.u, -f.c - 2, l2, f.o); - bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l2 += f.b; - } - wzf(out, bt, this.u.length, tl, l2); - this.ondata(null, out, true); - this.d = 2; - }; - Zip2.prototype.terminate = function() { - for (var _i = 0, _a3 = this.u; _i < _a3.length; _i++) { - var f = _a3[_i]; - f.t(); - } - this.d = 2; - }; - return Zip2; -}(); -function zipSync(data2, opts) { - if (!opts) - opts = {}; - var r = {}; - var files = []; - fltn(data2, "", r, opts); - var o = 0; - var tot = 0; - for (var fn in r) { - var _a3 = r[fn], file = _a3[0], p2 = _a3[1]; - var compression = p2.level == 0 ? 0 : 8; - var f = strToU8(fn), s = f.length; - var com = p2.comment, m = com && strToU8(com), ms = m && m.length; - var exl = exfl(p2.extra); - if (s > 65535) - err(11); - var d = compression ? deflateSync(file, p2) : file, l2 = d.length; - var c2 = crc(); - c2.p(file); - files.push(mrg(p2, { - size: file.length, - crc: c2.d(), - c: d, - f, - m, - u: s != fn.length || m && com.length != ms, - o, - compression - })); - o += 30 + s + exl + l2; - tot += 76 + 2 * (s + exl) + (ms || 0) + l2; - } - var out = new u8(tot + 22), oe = o, cdl = tot - o; - for (var i = 0; i < files.length; ++i) { - var f = files[i]; - wzh(out, f.o, f, f.f, f.u, f.c.length); - var badd = 30 + f.f.length + exfl(f.extra); - out.set(f.c, f.o + badd); - wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0); - } - wzf(out, o, files.length, cdl, oe); - return out; -} -var UnzipPassThrough = function() { - function UnzipPassThrough2() { - } - UnzipPassThrough2.prototype.push = function(data2, final) { - this.ondata(null, data2, final); - }; - UnzipPassThrough2.compression = 0; - return UnzipPassThrough2; -}(); -var UnzipInflate = function() { - function UnzipInflate2() { - var _this = this; - this.i = new Inflate(function(dat, final) { - _this.ondata(null, dat, final); - }); - } - UnzipInflate2.prototype.push = function(data2, final) { - try { - this.i.push(data2, final); - } catch (e) { - this.ondata(e, null, final); - } - }; - UnzipInflate2.compression = 8; - return UnzipInflate2; -}(); -var AsyncUnzipInflate = function() { - function AsyncUnzipInflate2(_, sz) { - var _this = this; - if (sz < 32e4) { - this.i = new Inflate(function(dat, final) { - _this.ondata(null, dat, final); - }); - } else { - this.i = new AsyncInflate(function(err2, dat, final) { - _this.ondata(err2, dat, final); - }); - this.terminate = this.i.terminate; - } - } - AsyncUnzipInflate2.prototype.push = function(data2, final) { - if (this.i.terminate) - data2 = slc(data2, 0); - this.i.push(data2, final); - }; - AsyncUnzipInflate2.compression = 8; - return AsyncUnzipInflate2; -}(); -var Unzip = function() { - function Unzip2(cb) { - this.onfile = cb; - this.k = []; - this.o = { - 0: UnzipPassThrough - }; - this.p = et; - } - Unzip2.prototype.push = function(chunk, final) { - var _this = this; - if (!this.onfile) - err(5); - if (!this.p) - err(4); - if (this.c > 0) { - var len = Math.min(this.c, chunk.length); - var toAdd = chunk.subarray(0, len); - this.c -= len; - if (this.d) - this.d.push(toAdd, !this.c); - else - this.k[0].push(toAdd); - chunk = chunk.subarray(len); - if (chunk.length) - return this.push(chunk, final); - } else { - var f = 0, i = 0, is = void 0, buf = void 0; - if (!this.p.length) - buf = chunk; - else if (!chunk.length) - buf = this.p; - else { - buf = new u8(this.p.length + chunk.length); - buf.set(this.p), buf.set(chunk, this.p.length); - } - var l2 = buf.length, oc = this.c, add2 = oc && this.d; - var _loop_2 = function() { - var _a3; - var sig = b4(buf, i); - if (sig == 67324752) { - f = 1, is = i; - this_1.d = null; - this_1.c = 0; - var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28); - if (l2 > i + 30 + fnl + es) { - var chks_3 = []; - this_1.k.unshift(chks_3); - f = 2; - var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22); - var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u); - if (sc_1 == 4294967295) { - _a3 = dd ? [-2] : z64e(buf, i), sc_1 = _a3[0], su_1 = _a3[1]; - } else if (dd) - sc_1 = -1; - i += es; - this_1.c = sc_1; - var d_1; - var file_1 = { - name: fn_1, - compression: cmp_1, - start: function() { - if (!file_1.ondata) - err(5); - if (!sc_1) - file_1.ondata(null, et, true); - else { - var ctr = _this.o[cmp_1]; - if (!ctr) - file_1.ondata(err(14, "unknown compression type " + cmp_1, 1), null, false); - d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1); - d_1.ondata = function(err2, dat3, final2) { - file_1.ondata(err2, dat3, final2); - }; - for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) { - var dat2 = chks_4[_i]; - d_1.push(dat2, false); - } - if (_this.k[0] == chks_3 && _this.c) - _this.d = d_1; - else - d_1.push(et, true); - } - }, - terminate: function() { - if (d_1 && d_1.terminate) - d_1.terminate(); - } - }; - if (sc_1 >= 0) - file_1.size = sc_1, file_1.originalSize = su_1; - this_1.onfile(file_1); - } - return "break"; - } else if (oc) { - if (sig == 134695760) { - is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0; - return "break"; - } else if (sig == 33639248) { - is = i -= 4, f = 3, this_1.c = 0; - return "break"; - } - } - }; - var this_1 = this; - for (; i < l2 - 4; ++i) { - var state_1 = _loop_2(); - if (state_1 === "break") - break; - } - this.p = et; - if (oc < 0) { - var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 134695760 && 4)) : buf.subarray(0, i); - if (add2) - add2.push(dat, !!f); - else - this.k[+(f == 2)].push(dat); - } - if (f & 2) - return this.push(buf.subarray(i), final); - this.p = buf.subarray(i); - } - if (final) { - if (this.c) - err(13); - this.p = null; - } - }; - Unzip2.prototype.register = function(decoder) { - this.o[decoder.compression] = decoder; - }; - return Unzip2; -}(); -function unzipSync(data2, opts) { - var files = {}; - var e = data2.length - 22; - for (; b4(data2, e) != 101010256; --e) { - if (!e || data2.length - e > 65558) - err(13); - } - ; - var c2 = b2(data2, e + 8); - if (!c2) - return {}; - var o = b4(data2, e + 16); - var z = o == 4294967295 || c2 == 65535; - if (z) { - var ze = b4(data2, e - 12); - z = b4(data2, ze) == 101075792; - if (z) { - c2 = b4(data2, ze + 32); - o = b4(data2, ze + 48); - } - } - var fltr = opts && opts.filter; - for (var i = 0; i < c2; ++i) { - var _a3 = zh(data2, o, z), c_2 = _a3[0], sc = _a3[1], su = _a3[2], fn = _a3[3], no = _a3[4], off = _a3[5], b3 = slzh(data2, off); - o = no; - if (!fltr || fltr({ - name: fn, - size: sc, - originalSize: su, - compression: c_2 - })) { - if (!c_2) - files[fn] = slc(data2, b3, b3 + sc); - else if (c_2 == 8) - files[fn] = inflateSync(data2.subarray(b3, b3 + sc), { out: new u8(su) }); - else - err(14, "unknown compression type " + c_2); - } - } - return files; -} - -// node_modules/three/examples/jsm/exporters/EXRExporter.js -var textEncoder = new TextEncoder(); -var NO_COMPRESSION = 0; -var ZIPS_COMPRESSION = 2; -var ZIP_COMPRESSION = 3; -var EXRExporter = class { - parse(arg1, arg2, arg3) { - if (!arg1 || !(arg1.isWebGLRenderer || arg1.isDataTexture)) { - throw Error("EXRExporter.parse: Unsupported first parameter, expected instance of WebGLRenderer or DataTexture."); - } else if (arg1.isWebGLRenderer) { - const renderer2 = arg1, renderTarget = arg2, options = arg3; - supportedRTT(renderTarget); - const info = buildInfoRTT(renderTarget, options), dataBuffer = getPixelData(renderer2, renderTarget, info), rawContentBuffer = reorganizeDataBuffer(dataBuffer, info), chunks = compressData(rawContentBuffer, info); - return fillData(chunks, info); - } else if (arg1.isDataTexture) { - const texture = arg1, options = arg2; - supportedDT(texture); - const info = buildInfoDT(texture, options), dataBuffer = texture.image.data, rawContentBuffer = reorganizeDataBuffer(dataBuffer, info), chunks = compressData(rawContentBuffer, info); - return fillData(chunks, info); - } - } -}; -function supportedRTT(renderTarget) { - if (!renderTarget || !renderTarget.isWebGLRenderTarget) { - throw Error("EXRExporter.parse: Unsupported second parameter, expected instance of WebGLRenderTarget."); - } - if (renderTarget.isWebGLCubeRenderTarget || renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget) { - throw Error("EXRExporter.parse: Unsupported render target type, expected instance of WebGLRenderTarget."); - } - if (renderTarget.texture.type !== FloatType && renderTarget.texture.type !== HalfFloatType) { - throw Error("EXRExporter.parse: Unsupported WebGLRenderTarget texture type."); - } - if (renderTarget.texture.format !== RGBAFormat) { - throw Error("EXRExporter.parse: Unsupported WebGLRenderTarget texture format, expected RGBAFormat."); - } -} -function supportedDT(texture) { - if (texture.type !== FloatType && texture.type !== HalfFloatType) { - throw Error("EXRExporter.parse: Unsupported DataTexture texture type."); - } - if (texture.format !== RGBAFormat) { - throw Error("EXRExporter.parse: Unsupported DataTexture texture format, expected RGBAFormat."); - } - if (!texture.image.data) { - throw Error("EXRExporter.parse: Invalid DataTexture image data."); - } - if (texture.type === FloatType && texture.image.data.constructor.name !== "Float32Array") { - throw Error("EXRExporter.parse: DataTexture image data doesn't match type, expected 'Float32Array'."); - } - if (texture.type === HalfFloatType && texture.image.data.constructor.name !== "Uint16Array") { - throw Error("EXRExporter.parse: DataTexture image data doesn't match type, expected 'Uint16Array'."); - } -} -function buildInfoRTT(renderTarget, options = {}) { - const compressionSizes = { - 0: 1, - 2: 1, - 3: 16 - }; - const WIDTH = renderTarget.width, HEIGHT = renderTarget.height, TYPE = renderTarget.texture.type, FORMAT = renderTarget.texture.format, COMPRESSION = options.compression !== void 0 ? options.compression : ZIP_COMPRESSION, EXPORTER_TYPE = options.type !== void 0 ? options.type : HalfFloatType, OUT_TYPE = EXPORTER_TYPE === FloatType ? 2 : 1, COMPRESSION_SIZE = compressionSizes[COMPRESSION], NUM_CHANNELS = 4; - return { - width: WIDTH, - height: HEIGHT, - type: TYPE, - format: FORMAT, - compression: COMPRESSION, - blockLines: COMPRESSION_SIZE, - dataType: OUT_TYPE, - dataSize: 2 * OUT_TYPE, - numBlocks: Math.ceil(HEIGHT / COMPRESSION_SIZE), - numInputChannels: 4, - numOutputChannels: NUM_CHANNELS - }; -} -function buildInfoDT(texture, options = {}) { - const compressionSizes = { - 0: 1, - 2: 1, - 3: 16 - }; - const WIDTH = texture.image.width, HEIGHT = texture.image.height, TYPE = texture.type, FORMAT = texture.format, COMPRESSION = options.compression !== void 0 ? options.compression : ZIP_COMPRESSION, EXPORTER_TYPE = options.type !== void 0 ? options.type : HalfFloatType, OUT_TYPE = EXPORTER_TYPE === FloatType ? 2 : 1, COMPRESSION_SIZE = compressionSizes[COMPRESSION], NUM_CHANNELS = 4; - return { - width: WIDTH, - height: HEIGHT, - type: TYPE, - format: FORMAT, - compression: COMPRESSION, - blockLines: COMPRESSION_SIZE, - dataType: OUT_TYPE, - dataSize: 2 * OUT_TYPE, - numBlocks: Math.ceil(HEIGHT / COMPRESSION_SIZE), - numInputChannels: 4, - numOutputChannels: NUM_CHANNELS - }; -} -function getPixelData(renderer2, rtt, info) { - let dataBuffer; - if (info.type === FloatType) { - dataBuffer = new Float32Array(info.width * info.height * info.numInputChannels); - } else { - dataBuffer = new Uint16Array(info.width * info.height * info.numInputChannels); - } - renderer2.readRenderTargetPixels(rtt, 0, 0, info.width, info.height, dataBuffer); - return dataBuffer; -} -function reorganizeDataBuffer(inBuffer, info) { - const w = info.width, h = info.height, dec = { r: 0, g: 0, b: 0, a: 0 }, offset = { value: 0 }, cOffset = info.numOutputChannels == 4 ? 1 : 0, getValue = info.type == FloatType ? getFloat32 : getFloat16, setValue = info.dataType == 1 ? setFloat16 : setFloat32, outBuffer = new Uint8Array(info.width * info.height * info.numOutputChannels * info.dataSize), dv = new DataView(outBuffer.buffer); - for (let y2 = 0; y2 < h; ++y2) { - for (let x2 = 0; x2 < w; ++x2) { - const i = y2 * w * 4 + x2 * 4; - const r = getValue(inBuffer, i); - const g2 = getValue(inBuffer, i + 1); - const b3 = getValue(inBuffer, i + 2); - const a2 = getValue(inBuffer, i + 3); - const line2 = (h - y2 - 1) * w * (3 + cOffset) * info.dataSize; - decodeLinear(dec, r, g2, b3, a2); - offset.value = line2 + x2 * info.dataSize; - setValue(dv, dec.a, offset); - offset.value = line2 + cOffset * w * info.dataSize + x2 * info.dataSize; - setValue(dv, dec.b, offset); - offset.value = line2 + (1 + cOffset) * w * info.dataSize + x2 * info.dataSize; - setValue(dv, dec.g, offset); - offset.value = line2 + (2 + cOffset) * w * info.dataSize + x2 * info.dataSize; - setValue(dv, dec.r, offset); - } - } - return outBuffer; -} -function compressData(inBuffer, info) { - let compress, tmpBuffer, sum2 = 0; - const chunks = { data: new Array(), totalSize: 0 }, size2 = info.width * info.numOutputChannels * info.blockLines * info.dataSize; - switch (info.compression) { - case 0: - compress = compressNONE; - break; - case 2: - case 3: - compress = compressZIP; - break; - } - if (info.compression !== 0) { - tmpBuffer = new Uint8Array(size2); - } - for (let i = 0; i < info.numBlocks; ++i) { - const arr = inBuffer.subarray(size2 * i, size2 * (i + 1)); - const block = compress(arr, tmpBuffer); - sum2 += block.length; - chunks.data.push({ dataChunk: block, size: block.length }); - } - chunks.totalSize = sum2; - return chunks; -} -function compressNONE(data2) { - return data2; -} -function compressZIP(data2, tmpBuffer) { - let t1 = 0, t22 = Math.floor((data2.length + 1) / 2), s = 0; - const stop = data2.length - 1; - while (true) { - if (s > stop) break; - tmpBuffer[t1++] = data2[s++]; - if (s > stop) break; - tmpBuffer[t22++] = data2[s++]; - } - let p2 = tmpBuffer[0]; - for (let t3 = 1; t3 < tmpBuffer.length; t3++) { - const d = tmpBuffer[t3] - p2 + (128 + 256); - p2 = tmpBuffer[t3]; - tmpBuffer[t3] = d; - } - const deflate = zlibSync(tmpBuffer); - return deflate; -} -function fillHeader(outBuffer, chunks, info) { - const offset = { value: 0 }; - const dv = new DataView(outBuffer.buffer); - setUint32(dv, 20000630, offset); - setUint32(dv, 2, offset); - setString(dv, "compression", offset); - setString(dv, "compression", offset); - setUint32(dv, 1, offset); - setUint8(dv, info.compression, offset); - setString(dv, "screenWindowCenter", offset); - setString(dv, "v2f", offset); - setUint32(dv, 8, offset); - setUint32(dv, 0, offset); - setUint32(dv, 0, offset); - setString(dv, "screenWindowWidth", offset); - setString(dv, "float", offset); - setUint32(dv, 4, offset); - setFloat32(dv, 1, offset); - setString(dv, "pixelAspectRatio", offset); - setString(dv, "float", offset); - setUint32(dv, 4, offset); - setFloat32(dv, 1, offset); - setString(dv, "lineOrder", offset); - setString(dv, "lineOrder", offset); - setUint32(dv, 1, offset); - setUint8(dv, 0, offset); - setString(dv, "dataWindow", offset); - setString(dv, "box2i", offset); - setUint32(dv, 16, offset); - setUint32(dv, 0, offset); - setUint32(dv, 0, offset); - setUint32(dv, info.width - 1, offset); - setUint32(dv, info.height - 1, offset); - setString(dv, "displayWindow", offset); - setString(dv, "box2i", offset); - setUint32(dv, 16, offset); - setUint32(dv, 0, offset); - setUint32(dv, 0, offset); - setUint32(dv, info.width - 1, offset); - setUint32(dv, info.height - 1, offset); - setString(dv, "channels", offset); - setString(dv, "chlist", offset); - setUint32(dv, info.numOutputChannels * 18 + 1, offset); - setString(dv, "A", offset); - setUint32(dv, info.dataType, offset); - offset.value += 4; - setUint32(dv, 1, offset); - setUint32(dv, 1, offset); - setString(dv, "B", offset); - setUint32(dv, info.dataType, offset); - offset.value += 4; - setUint32(dv, 1, offset); - setUint32(dv, 1, offset); - setString(dv, "G", offset); - setUint32(dv, info.dataType, offset); - offset.value += 4; - setUint32(dv, 1, offset); - setUint32(dv, 1, offset); - setString(dv, "R", offset); - setUint32(dv, info.dataType, offset); - offset.value += 4; - setUint32(dv, 1, offset); - setUint32(dv, 1, offset); - setUint8(dv, 0, offset); - setUint8(dv, 0, offset); - let sum2 = offset.value + info.numBlocks * 8; - for (let i = 0; i < chunks.data.length; ++i) { - setUint64(dv, sum2, offset); - sum2 += chunks.data[i].size + 8; - } -} -function fillData(chunks, info) { - const TableSize = info.numBlocks * 8, HeaderSize = 259 + 18 * info.numOutputChannels, offset = { value: HeaderSize + TableSize }, outBuffer = new Uint8Array(HeaderSize + TableSize + chunks.totalSize + info.numBlocks * 8), dv = new DataView(outBuffer.buffer); - fillHeader(outBuffer, chunks, info); - for (let i = 0; i < chunks.data.length; ++i) { - const data2 = chunks.data[i].dataChunk; - const size2 = chunks.data[i].size; - setUint32(dv, i * info.blockLines, offset); - setUint32(dv, size2, offset); - outBuffer.set(data2, offset.value); - offset.value += size2; - } - return outBuffer; -} -function decodeLinear(dec, r, g2, b3, a2) { - dec.r = r; - dec.g = g2; - dec.b = b3; - dec.a = a2; -} -function setUint8(dv, value2, offset) { - dv.setUint8(offset.value, value2); - offset.value += 1; -} -function setUint32(dv, value2, offset) { - dv.setUint32(offset.value, value2, true); - offset.value += 4; -} -function setFloat16(dv, value2, offset) { - dv.setUint16(offset.value, DataUtils.toHalfFloat(value2), true); - offset.value += 2; -} -function setFloat32(dv, value2, offset) { - dv.setFloat32(offset.value, value2, true); - offset.value += 4; -} -function setUint64(dv, value2, offset) { - dv.setBigUint64(offset.value, BigInt(value2), true); - offset.value += 8; -} -function setString(dv, string, offset) { - const tmp = textEncoder.encode(string + "\0"); - for (let i = 0; i < tmp.length; ++i) { - setUint8(dv, tmp[i], offset); - } -} -function decodeFloat16(binary) { - const exponent = (binary & 31744) >> 10, fraction = binary & 1023; - return (binary >> 15 ? -1 : 1) * (exponent ? exponent === 31 ? fraction ? NaN : Infinity : Math.pow(2, exponent - 15) * (1 + fraction / 1024) : 6103515625e-14 * (fraction / 1024)); -} -function getFloat16(arr, i) { - return decodeFloat16(arr[i]); -} -function getFloat32(arr, i) { - return arr[i]; -} - -// node_modules/three/examples/jsm/utils/TextureUtils.js -var _renderer; -var fullscreenQuadGeometry; -var fullscreenQuadMaterial; -var fullscreenQuad; -function decompress(texture, maxTextureSize = Infinity, renderer2 = null) { - if (!fullscreenQuadGeometry) fullscreenQuadGeometry = new PlaneGeometry(2, 2, 1, 1); - if (!fullscreenQuadMaterial) fullscreenQuadMaterial = new ShaderMaterial({ - uniforms: { blitTexture: new Uniform(texture) }, - vertexShader: ` - varying vec2 vUv; - void main(){ - vUv = uv; - gl_Position = vec4(position.xy * 1.0,0.,.999999); - }`, - fragmentShader: ` - uniform sampler2D blitTexture; - varying vec2 vUv; - - void main(){ - gl_FragColor = vec4(vUv.xy, 0, 1); - - #ifdef IS_SRGB - gl_FragColor = sRGBTransferOETF( texture2D( blitTexture, vUv) ); - #else - gl_FragColor = texture2D( blitTexture, vUv); - #endif - }` - }); - fullscreenQuadMaterial.uniforms.blitTexture.value = texture; - fullscreenQuadMaterial.defines.IS_SRGB = texture.colorSpace == SRGBColorSpace; - fullscreenQuadMaterial.needsUpdate = true; - if (!fullscreenQuad) { - fullscreenQuad = new Mesh(fullscreenQuadGeometry, fullscreenQuadMaterial); - fullscreenQuad.frustumCulled = false; - } - const _camera2 = new PerspectiveCamera(); - const _scene = new Scene(); - _scene.add(fullscreenQuad); - if (renderer2 === null) { - renderer2 = _renderer = new WebGLRenderer({ antialias: false }); - } - const width2 = Math.min(texture.image.width, maxTextureSize); - const height2 = Math.min(texture.image.height, maxTextureSize); - renderer2.setSize(width2, height2); - renderer2.clear(); - renderer2.render(_scene, _camera2); - const canvas = document.createElement("canvas"); - const context = canvas.getContext("2d"); - canvas.width = width2; - canvas.height = height2; - context.drawImage(renderer2.domElement, 0, 0, width2, height2); - const readableTexture = new CanvasTexture(canvas); - readableTexture.minFilter = texture.minFilter; - readableTexture.magFilter = texture.magFilter; - readableTexture.wrapS = texture.wrapS; - readableTexture.wrapT = texture.wrapT; - readableTexture.name = texture.name; - if (_renderer) { - _renderer.forceContextLoss(); - _renderer.dispose(); - _renderer = null; - } - return readableTexture; -} - -// node_modules/three/examples/jsm/exporters/GLTFExporter.js -var KHR_mesh_quantization_ExtraAttrTypes = { - POSITION: [ - "byte", - "byte normalized", - "unsigned byte", - "unsigned byte normalized", - "short", - "short normalized", - "unsigned short", - "unsigned short normalized" - ], - NORMAL: [ - "byte normalized", - "short normalized" - ], - TANGENT: [ - "byte normalized", - "short normalized" - ], - TEXCOORD: [ - "byte", - "byte normalized", - "unsigned byte", - "short", - "short normalized", - "unsigned short" - ] -}; -var GLTFExporter = class { - constructor() { - this.pluginCallbacks = []; - this.register(function(writer) { - return new GLTFLightExtension(writer); - }); - this.register(function(writer) { - return new GLTFMaterialsUnlitExtension(writer); - }); - this.register(function(writer) { - return new GLTFMaterialsTransmissionExtension(writer); - }); - this.register(function(writer) { - return new GLTFMaterialsVolumeExtension(writer); - }); - this.register(function(writer) { - return new GLTFMaterialsIorExtension(writer); - }); - this.register(function(writer) { - return new GLTFMaterialsSpecularExtension(writer); - }); - this.register(function(writer) { - return new GLTFMaterialsClearcoatExtension(writer); - }); - this.register(function(writer) { - return new GLTFMaterialsDispersionExtension(writer); - }); - this.register(function(writer) { - return new GLTFMaterialsIridescenceExtension(writer); - }); - this.register(function(writer) { - return new GLTFMaterialsSheenExtension(writer); - }); - this.register(function(writer) { - return new GLTFMaterialsAnisotropyExtension(writer); - }); - this.register(function(writer) { - return new GLTFMaterialsEmissiveStrengthExtension(writer); - }); - this.register(function(writer) { - return new GLTFMaterialsBumpExtension(writer); - }); - this.register(function(writer) { - return new GLTFMeshGpuInstancing(writer); - }); - } - register(callback) { - if (this.pluginCallbacks.indexOf(callback) === -1) { - this.pluginCallbacks.push(callback); - } - return this; - } - unregister(callback) { - if (this.pluginCallbacks.indexOf(callback) !== -1) { - this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1); - } - return this; - } - /** - * Parse scenes and generate GLTF output - * @param {Scene or [THREE.Scenes]} input Scene or Array of THREE.Scenes - * @param {Function} onDone Callback on completed - * @param {Function} onError Callback on errors - * @param {Object} options options - */ - parse(input, onDone, onError, options) { - const writer = new GLTFWriter(); - const plugins = []; - for (let i = 0, il = this.pluginCallbacks.length; i < il; i++) { - plugins.push(this.pluginCallbacks[i](writer)); - } - writer.setPlugins(plugins); - writer.write(input, onDone, options).catch(onError); - } - parseAsync(input, options) { - const scope = this; - return new Promise(function(resolve, reject2) { - scope.parse(input, resolve, reject2, options); - }); - } -}; -var WEBGL_CONSTANTS = { - POINTS: 0, - LINES: 1, - LINE_LOOP: 2, - LINE_STRIP: 3, - TRIANGLES: 4, - TRIANGLE_STRIP: 5, - TRIANGLE_FAN: 6, - BYTE: 5120, - UNSIGNED_BYTE: 5121, - SHORT: 5122, - UNSIGNED_SHORT: 5123, - INT: 5124, - UNSIGNED_INT: 5125, - FLOAT: 5126, - ARRAY_BUFFER: 34962, - ELEMENT_ARRAY_BUFFER: 34963, - NEAREST: 9728, - LINEAR: 9729, - NEAREST_MIPMAP_NEAREST: 9984, - LINEAR_MIPMAP_NEAREST: 9985, - NEAREST_MIPMAP_LINEAR: 9986, - LINEAR_MIPMAP_LINEAR: 9987, - CLAMP_TO_EDGE: 33071, - MIRRORED_REPEAT: 33648, - REPEAT: 10497 -}; -var KHR_MESH_QUANTIZATION = "KHR_mesh_quantization"; -var THREE_TO_WEBGL = {}; -THREE_TO_WEBGL[NearestFilter] = WEBGL_CONSTANTS.NEAREST; -THREE_TO_WEBGL[NearestMipmapNearestFilter] = WEBGL_CONSTANTS.NEAREST_MIPMAP_NEAREST; -THREE_TO_WEBGL[NearestMipmapLinearFilter] = WEBGL_CONSTANTS.NEAREST_MIPMAP_LINEAR; -THREE_TO_WEBGL[LinearFilter] = WEBGL_CONSTANTS.LINEAR; -THREE_TO_WEBGL[LinearMipmapNearestFilter] = WEBGL_CONSTANTS.LINEAR_MIPMAP_NEAREST; -THREE_TO_WEBGL[LinearMipmapLinearFilter] = WEBGL_CONSTANTS.LINEAR_MIPMAP_LINEAR; -THREE_TO_WEBGL[ClampToEdgeWrapping] = WEBGL_CONSTANTS.CLAMP_TO_EDGE; -THREE_TO_WEBGL[RepeatWrapping] = WEBGL_CONSTANTS.REPEAT; -THREE_TO_WEBGL[MirroredRepeatWrapping] = WEBGL_CONSTANTS.MIRRORED_REPEAT; -var PATH_PROPERTIES = { - scale: "scale", - position: "translation", - quaternion: "rotation", - morphTargetInfluences: "weights" -}; -var DEFAULT_SPECULAR_COLOR = new Color(); -var GLB_HEADER_BYTES = 12; -var GLB_HEADER_MAGIC = 1179937895; -var GLB_VERSION = 2; -var GLB_CHUNK_PREFIX_BYTES = 8; -var GLB_CHUNK_TYPE_JSON = 1313821514; -var GLB_CHUNK_TYPE_BIN = 5130562; -function equalArray(array1, array2) { - return array1.length === array2.length && array1.every(function(element, index2) { - return element === array2[index2]; - }); -} -function stringToArrayBuffer(text2) { - return new TextEncoder().encode(text2).buffer; -} -function isIdentityMatrix(matrix3) { - return equalArray(matrix3.elements, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]); -} -function getMinMax(attribute, start, count) { - const output = { - min: new Array(attribute.itemSize).fill(Number.POSITIVE_INFINITY), - max: new Array(attribute.itemSize).fill(Number.NEGATIVE_INFINITY) - }; - for (let i = start; i < start + count; i++) { - for (let a2 = 0; a2 < attribute.itemSize; a2++) { - let value2; - if (attribute.itemSize > 4) { - value2 = attribute.array[i * attribute.itemSize + a2]; - } else { - if (a2 === 0) value2 = attribute.getX(i); - else if (a2 === 1) value2 = attribute.getY(i); - else if (a2 === 2) value2 = attribute.getZ(i); - else if (a2 === 3) value2 = attribute.getW(i); - if (attribute.normalized === true) { - value2 = MathUtils.normalize(value2, attribute.array); - } - } - output.min[a2] = Math.min(output.min[a2], value2); - output.max[a2] = Math.max(output.max[a2], value2); - } - } - return output; -} -function getPaddedBufferSize(bufferSize) { - return Math.ceil(bufferSize / 4) * 4; -} -function getPaddedArrayBuffer(arrayBuffer, paddingByte = 0) { - const paddedLength = getPaddedBufferSize(arrayBuffer.byteLength); - if (paddedLength !== arrayBuffer.byteLength) { - const array = new Uint8Array(paddedLength); - array.set(new Uint8Array(arrayBuffer)); - if (paddingByte !== 0) { - for (let i = arrayBuffer.byteLength; i < paddedLength; i++) { - array[i] = paddingByte; - } - } - return array.buffer; - } - return arrayBuffer; -} -function getCanvas() { - if (typeof document === "undefined" && typeof OffscreenCanvas !== "undefined") { - return new OffscreenCanvas(1, 1); - } - return document.createElement("canvas"); -} -function getToBlobPromise(canvas, mimeType) { - if (canvas.toBlob !== void 0) { - return new Promise((resolve) => canvas.toBlob(resolve, mimeType)); - } - let quality; - if (mimeType === "image/jpeg") { - quality = 0.92; - } else if (mimeType === "image/webp") { - quality = 0.8; - } - return canvas.convertToBlob({ - type: mimeType, - quality - }); -} -var GLTFWriter = class { - constructor() { - this.plugins = []; - this.options = {}; - this.pending = []; - this.buffers = []; - this.byteOffset = 0; - this.buffers = []; - this.nodeMap = /* @__PURE__ */ new Map(); - this.skins = []; - this.extensionsUsed = {}; - this.extensionsRequired = {}; - this.uids = /* @__PURE__ */ new Map(); - this.uid = 0; - this.json = { - asset: { - version: "2.0", - generator: "THREE.GLTFExporter r" + REVISION - } - }; - this.cache = { - meshes: /* @__PURE__ */ new Map(), - attributes: /* @__PURE__ */ new Map(), - attributesNormalized: /* @__PURE__ */ new Map(), - materials: /* @__PURE__ */ new Map(), - textures: /* @__PURE__ */ new Map(), - images: /* @__PURE__ */ new Map() - }; - } - setPlugins(plugins) { - this.plugins = plugins; - } - /** - * Parse scenes and generate GLTF output - * @param {Scene or [THREE.Scenes]} input Scene or Array of THREE.Scenes - * @param {Function} onDone Callback on completed - * @param {Object} options options - */ - async write(input, onDone, options = {}) { - this.options = Object.assign({ - // default options - binary: false, - trs: false, - onlyVisible: true, - maxTextureSize: Infinity, - animations: [], - includeCustomExtensions: false - }, options); - if (this.options.animations.length > 0) { - this.options.trs = true; - } - this.processInput(input); - await Promise.all(this.pending); - const writer = this; - const buffers = writer.buffers; - const json = writer.json; - options = writer.options; - const extensionsUsed = writer.extensionsUsed; - const extensionsRequired = writer.extensionsRequired; - const blob = new Blob(buffers, { type: "application/octet-stream" }); - const extensionsUsedList = Object.keys(extensionsUsed); - const extensionsRequiredList = Object.keys(extensionsRequired); - if (extensionsUsedList.length > 0) json.extensionsUsed = extensionsUsedList; - if (extensionsRequiredList.length > 0) json.extensionsRequired = extensionsRequiredList; - if (json.buffers && json.buffers.length > 0) json.buffers[0].byteLength = blob.size; - if (options.binary === true) { - const reader = new FileReader(); - reader.readAsArrayBuffer(blob); - reader.onloadend = function() { - const binaryChunk = getPaddedArrayBuffer(reader.result); - const binaryChunkPrefix = new DataView(new ArrayBuffer(GLB_CHUNK_PREFIX_BYTES)); - binaryChunkPrefix.setUint32(0, binaryChunk.byteLength, true); - binaryChunkPrefix.setUint32(4, GLB_CHUNK_TYPE_BIN, true); - const jsonChunk = getPaddedArrayBuffer(stringToArrayBuffer(JSON.stringify(json)), 32); - const jsonChunkPrefix = new DataView(new ArrayBuffer(GLB_CHUNK_PREFIX_BYTES)); - jsonChunkPrefix.setUint32(0, jsonChunk.byteLength, true); - jsonChunkPrefix.setUint32(4, GLB_CHUNK_TYPE_JSON, true); - const header = new ArrayBuffer(GLB_HEADER_BYTES); - const headerView = new DataView(header); - headerView.setUint32(0, GLB_HEADER_MAGIC, true); - headerView.setUint32(4, GLB_VERSION, true); - const totalByteLength = GLB_HEADER_BYTES + jsonChunkPrefix.byteLength + jsonChunk.byteLength + binaryChunkPrefix.byteLength + binaryChunk.byteLength; - headerView.setUint32(8, totalByteLength, true); - const glbBlob = new Blob([ - header, - jsonChunkPrefix, - jsonChunk, - binaryChunkPrefix, - binaryChunk - ], { type: "application/octet-stream" }); - const glbReader = new FileReader(); - glbReader.readAsArrayBuffer(glbBlob); - glbReader.onloadend = function() { - onDone(glbReader.result); - }; - }; - } else { - if (json.buffers && json.buffers.length > 0) { - const reader = new FileReader(); - reader.readAsDataURL(blob); - reader.onloadend = function() { - const base64data = reader.result; - json.buffers[0].uri = base64data; - onDone(json); - }; - } else { - onDone(json); - } - } - } - /** - * Serializes a userData. - * - * @param {THREE.Object3D|THREE.Material} object - * @param {Object} objectDef - */ - serializeUserData(object, objectDef) { - if (Object.keys(object.userData).length === 0) return; - const options = this.options; - const extensionsUsed = this.extensionsUsed; - try { - const json = JSON.parse(JSON.stringify(object.userData)); - if (options.includeCustomExtensions && json.gltfExtensions) { - if (objectDef.extensions === void 0) objectDef.extensions = {}; - for (const extensionName in json.gltfExtensions) { - objectDef.extensions[extensionName] = json.gltfExtensions[extensionName]; - extensionsUsed[extensionName] = true; - } - delete json.gltfExtensions; - } - if (Object.keys(json).length > 0) objectDef.extras = json; - } catch (error) { - console.warn("THREE.GLTFExporter: userData of '" + object.name + "' won't be serialized because of JSON.stringify error - " + error.message); - } - } - /** - * Returns ids for buffer attributes. - * @param {Object} object - * @return {Integer} - */ - getUID(attribute, isRelativeCopy = false) { - if (this.uids.has(attribute) === false) { - const uids2 = /* @__PURE__ */ new Map(); - uids2.set(true, this.uid++); - uids2.set(false, this.uid++); - this.uids.set(attribute, uids2); - } - const uids = this.uids.get(attribute); - return uids.get(isRelativeCopy); - } - /** - * Checks if normal attribute values are normalized. - * - * @param {BufferAttribute} normal - * @returns {Boolean} - */ - isNormalizedNormalAttribute(normal) { - const cache = this.cache; - if (cache.attributesNormalized.has(normal)) return false; - const v = new Vector3(); - for (let i = 0, il = normal.count; i < il; i++) { - if (Math.abs(v.fromBufferAttribute(normal, i).length() - 1) > 5e-4) return false; - } - return true; - } - /** - * Creates normalized normal buffer attribute. - * - * @param {BufferAttribute} normal - * @returns {BufferAttribute} - * - */ - createNormalizedNormalAttribute(normal) { - const cache = this.cache; - if (cache.attributesNormalized.has(normal)) return cache.attributesNormalized.get(normal); - const attribute = normal.clone(); - const v = new Vector3(); - for (let i = 0, il = attribute.count; i < il; i++) { - v.fromBufferAttribute(attribute, i); - if (v.x === 0 && v.y === 0 && v.z === 0) { - v.setX(1); - } else { - v.normalize(); - } - attribute.setXYZ(i, v.x, v.y, v.z); - } - cache.attributesNormalized.set(normal, attribute); - return attribute; - } - /** - * Applies a texture transform, if present, to the map definition. Requires - * the KHR_texture_transform extension. - * - * @param {Object} mapDef - * @param {THREE.Texture} texture - */ - applyTextureTransform(mapDef, texture) { - let didTransform = false; - const transformDef = {}; - if (texture.offset.x !== 0 || texture.offset.y !== 0) { - transformDef.offset = texture.offset.toArray(); - didTransform = true; - } - if (texture.rotation !== 0) { - transformDef.rotation = texture.rotation; - didTransform = true; - } - if (texture.repeat.x !== 1 || texture.repeat.y !== 1) { - transformDef.scale = texture.repeat.toArray(); - didTransform = true; - } - if (didTransform) { - mapDef.extensions = mapDef.extensions || {}; - mapDef.extensions["KHR_texture_transform"] = transformDef; - this.extensionsUsed["KHR_texture_transform"] = true; - } - } - buildMetalRoughTexture(metalnessMap, roughnessMap) { - if (metalnessMap === roughnessMap) return metalnessMap; - function getEncodingConversion(map2) { - if (map2.colorSpace === SRGBColorSpace) { - return function SRGBToLinear(c2) { - return c2 < 0.04045 ? c2 * 0.0773993808 : Math.pow(c2 * 0.9478672986 + 0.0521327014, 2.4); - }; - } - return function LinearToLinear(c2) { - return c2; - }; - } - console.warn("THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures."); - if (metalnessMap instanceof CompressedTexture) { - metalnessMap = decompress(metalnessMap); - } - if (roughnessMap instanceof CompressedTexture) { - roughnessMap = decompress(roughnessMap); - } - const metalness = metalnessMap ? metalnessMap.image : null; - const roughness = roughnessMap ? roughnessMap.image : null; - const width2 = Math.max(metalness ? metalness.width : 0, roughness ? roughness.width : 0); - const height2 = Math.max(metalness ? metalness.height : 0, roughness ? roughness.height : 0); - const canvas = getCanvas(); - canvas.width = width2; - canvas.height = height2; - const context = canvas.getContext("2d", { - willReadFrequently: true - }); - context.fillStyle = "#00ffff"; - context.fillRect(0, 0, width2, height2); - const composite = context.getImageData(0, 0, width2, height2); - if (metalness) { - context.drawImage(metalness, 0, 0, width2, height2); - const convert = getEncodingConversion(metalnessMap); - const data2 = context.getImageData(0, 0, width2, height2).data; - for (let i = 2; i < data2.length; i += 4) { - composite.data[i] = convert(data2[i] / 256) * 256; - } - } - if (roughness) { - context.drawImage(roughness, 0, 0, width2, height2); - const convert = getEncodingConversion(roughnessMap); - const data2 = context.getImageData(0, 0, width2, height2).data; - for (let i = 1; i < data2.length; i += 4) { - composite.data[i] = convert(data2[i] / 256) * 256; - } - } - context.putImageData(composite, 0, 0); - const reference = metalnessMap || roughnessMap; - const texture = reference.clone(); - texture.source = new Source(canvas); - texture.colorSpace = NoColorSpace; - texture.channel = (metalnessMap || roughnessMap).channel; - if (metalnessMap && roughnessMap && metalnessMap.channel !== roughnessMap.channel) { - console.warn("THREE.GLTFExporter: UV channels for metalnessMap and roughnessMap textures must match."); - } - return texture; - } - /** - * Process a buffer to append to the default one. - * @param {ArrayBuffer} buffer - * @return {Integer} - */ - processBuffer(buffer) { - const json = this.json; - const buffers = this.buffers; - if (!json.buffers) json.buffers = [{ byteLength: 0 }]; - buffers.push(buffer); - return 0; - } - /** - * Process and generate a BufferView - * @param {BufferAttribute} attribute - * @param {number} componentType - * @param {number} start - * @param {number} count - * @param {number} target (Optional) Target usage of the BufferView - * @return {Object} - */ - processBufferView(attribute, componentType, start, count, target) { - const json = this.json; - if (!json.bufferViews) json.bufferViews = []; - let componentSize; - switch (componentType) { - case WEBGL_CONSTANTS.BYTE: - case WEBGL_CONSTANTS.UNSIGNED_BYTE: - componentSize = 1; - break; - case WEBGL_CONSTANTS.SHORT: - case WEBGL_CONSTANTS.UNSIGNED_SHORT: - componentSize = 2; - break; - default: - componentSize = 4; - } - let byteStride = attribute.itemSize * componentSize; - if (target === WEBGL_CONSTANTS.ARRAY_BUFFER) { - byteStride = Math.ceil(byteStride / 4) * 4; - } - const byteLength = getPaddedBufferSize(count * byteStride); - const dataView = new DataView(new ArrayBuffer(byteLength)); - let offset = 0; - for (let i = start; i < start + count; i++) { - for (let a2 = 0; a2 < attribute.itemSize; a2++) { - let value2; - if (attribute.itemSize > 4) { - value2 = attribute.array[i * attribute.itemSize + a2]; - } else { - if (a2 === 0) value2 = attribute.getX(i); - else if (a2 === 1) value2 = attribute.getY(i); - else if (a2 === 2) value2 = attribute.getZ(i); - else if (a2 === 3) value2 = attribute.getW(i); - if (attribute.normalized === true) { - value2 = MathUtils.normalize(value2, attribute.array); - } - } - if (componentType === WEBGL_CONSTANTS.FLOAT) { - dataView.setFloat32(offset, value2, true); - } else if (componentType === WEBGL_CONSTANTS.INT) { - dataView.setInt32(offset, value2, true); - } else if (componentType === WEBGL_CONSTANTS.UNSIGNED_INT) { - dataView.setUint32(offset, value2, true); - } else if (componentType === WEBGL_CONSTANTS.SHORT) { - dataView.setInt16(offset, value2, true); - } else if (componentType === WEBGL_CONSTANTS.UNSIGNED_SHORT) { - dataView.setUint16(offset, value2, true); - } else if (componentType === WEBGL_CONSTANTS.BYTE) { - dataView.setInt8(offset, value2); - } else if (componentType === WEBGL_CONSTANTS.UNSIGNED_BYTE) { - dataView.setUint8(offset, value2); - } - offset += componentSize; - } - if (offset % byteStride !== 0) { - offset += byteStride - offset % byteStride; - } - } - const bufferViewDef = { - buffer: this.processBuffer(dataView.buffer), - byteOffset: this.byteOffset, - byteLength - }; - if (target !== void 0) bufferViewDef.target = target; - if (target === WEBGL_CONSTANTS.ARRAY_BUFFER) { - bufferViewDef.byteStride = byteStride; - } - this.byteOffset += byteLength; - json.bufferViews.push(bufferViewDef); - const output = { - id: json.bufferViews.length - 1, - byteLength: 0 - }; - return output; - } - /** - * Process and generate a BufferView from an image Blob. - * @param {Blob} blob - * @return {Promise} - */ - processBufferViewImage(blob) { - const writer = this; - const json = writer.json; - if (!json.bufferViews) json.bufferViews = []; - return new Promise(function(resolve) { - const reader = new FileReader(); - reader.readAsArrayBuffer(blob); - reader.onloadend = function() { - const buffer = getPaddedArrayBuffer(reader.result); - const bufferViewDef = { - buffer: writer.processBuffer(buffer), - byteOffset: writer.byteOffset, - byteLength: buffer.byteLength - }; - writer.byteOffset += buffer.byteLength; - resolve(json.bufferViews.push(bufferViewDef) - 1); - }; - }); - } - /** - * Process attribute to generate an accessor - * @param {BufferAttribute} attribute Attribute to process - * @param {THREE.BufferGeometry} geometry (Optional) Geometry used for truncated draw range - * @param {Integer} start (Optional) - * @param {Integer} count (Optional) - * @return {Integer|null} Index of the processed accessor on the "accessors" array - */ - processAccessor(attribute, geometry, start, count) { - const json = this.json; - const types = { - 1: "SCALAR", - 2: "VEC2", - 3: "VEC3", - 4: "VEC4", - 9: "MAT3", - 16: "MAT4" - }; - let componentType; - if (attribute.array.constructor === Float32Array) { - componentType = WEBGL_CONSTANTS.FLOAT; - } else if (attribute.array.constructor === Int32Array) { - componentType = WEBGL_CONSTANTS.INT; - } else if (attribute.array.constructor === Uint32Array) { - componentType = WEBGL_CONSTANTS.UNSIGNED_INT; - } else if (attribute.array.constructor === Int16Array) { - componentType = WEBGL_CONSTANTS.SHORT; - } else if (attribute.array.constructor === Uint16Array) { - componentType = WEBGL_CONSTANTS.UNSIGNED_SHORT; - } else if (attribute.array.constructor === Int8Array) { - componentType = WEBGL_CONSTANTS.BYTE; - } else if (attribute.array.constructor === Uint8Array) { - componentType = WEBGL_CONSTANTS.UNSIGNED_BYTE; - } else { - throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type: " + attribute.array.constructor.name); - } - if (start === void 0) start = 0; - if (count === void 0 || count === Infinity) count = attribute.count; - if (count === 0) return null; - const minMax = getMinMax(attribute, start, count); - let bufferViewTarget; - if (geometry !== void 0) { - bufferViewTarget = attribute === geometry.index ? WEBGL_CONSTANTS.ELEMENT_ARRAY_BUFFER : WEBGL_CONSTANTS.ARRAY_BUFFER; - } - const bufferView = this.processBufferView(attribute, componentType, start, count, bufferViewTarget); - const accessorDef = { - bufferView: bufferView.id, - byteOffset: bufferView.byteOffset, - componentType, - count, - max: minMax.max, - min: minMax.min, - type: types[attribute.itemSize] - }; - if (attribute.normalized === true) accessorDef.normalized = true; - if (!json.accessors) json.accessors = []; - return json.accessors.push(accessorDef) - 1; - } - /** - * Process image - * @param {Image} image to process - * @param {Integer} format of the image (RGBAFormat) - * @param {Boolean} flipY before writing out the image - * @param {String} mimeType export format - * @return {Integer} Index of the processed texture in the "images" array - */ - processImage(image, format, flipY, mimeType = "image/png") { - if (image !== null) { - const writer = this; - const cache = writer.cache; - const json = writer.json; - const options = writer.options; - const pending = writer.pending; - if (!cache.images.has(image)) cache.images.set(image, {}); - const cachedImages = cache.images.get(image); - const key2 = mimeType + ":flipY/" + flipY.toString(); - if (cachedImages[key2] !== void 0) return cachedImages[key2]; - if (!json.images) json.images = []; - const imageDef = { mimeType }; - const canvas = getCanvas(); - canvas.width = Math.min(image.width, options.maxTextureSize); - canvas.height = Math.min(image.height, options.maxTextureSize); - const ctx = canvas.getContext("2d", { - willReadFrequently: true - }); - if (flipY === true) { - ctx.translate(0, canvas.height); - ctx.scale(1, -1); - } - if (image.data !== void 0) { - if (format !== RGBAFormat) { - console.error("GLTFExporter: Only RGBAFormat is supported.", format); - } - if (image.width > options.maxTextureSize || image.height > options.maxTextureSize) { - console.warn("GLTFExporter: Image size is bigger than maxTextureSize", image); - } - const data2 = new Uint8ClampedArray(image.height * image.width * 4); - for (let i = 0; i < data2.length; i += 4) { - data2[i + 0] = image.data[i + 0]; - data2[i + 1] = image.data[i + 1]; - data2[i + 2] = image.data[i + 2]; - data2[i + 3] = image.data[i + 3]; - } - ctx.putImageData(new ImageData(data2, image.width, image.height), 0, 0); - } else { - if (typeof HTMLImageElement !== "undefined" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== "undefined" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== "undefined" && image instanceof ImageBitmap || typeof OffscreenCanvas !== "undefined" && image instanceof OffscreenCanvas) { - ctx.drawImage(image, 0, 0, canvas.width, canvas.height); - } else { - throw new Error("THREE.GLTFExporter: Invalid image type. Use HTMLImageElement, HTMLCanvasElement, ImageBitmap or OffscreenCanvas."); - } - } - if (options.binary === true) { - pending.push( - getToBlobPromise(canvas, mimeType).then((blob) => writer.processBufferViewImage(blob)).then((bufferViewIndex) => { - imageDef.bufferView = bufferViewIndex; - }) - ); - } else { - if (canvas.toDataURL !== void 0) { - imageDef.uri = canvas.toDataURL(mimeType); - } else { - pending.push( - getToBlobPromise(canvas, mimeType).then((blob) => new FileReader().readAsDataURL(blob)).then((dataURL) => { - imageDef.uri = dataURL; - }) - ); - } - } - const index2 = json.images.push(imageDef) - 1; - cachedImages[key2] = index2; - return index2; - } else { - throw new Error("THREE.GLTFExporter: No valid image data found. Unable to process texture."); - } - } - /** - * Process sampler - * @param {Texture} map Texture to process - * @return {Integer} Index of the processed texture in the "samplers" array - */ - processSampler(map2) { - const json = this.json; - if (!json.samplers) json.samplers = []; - const samplerDef = { - magFilter: THREE_TO_WEBGL[map2.magFilter], - minFilter: THREE_TO_WEBGL[map2.minFilter], - wrapS: THREE_TO_WEBGL[map2.wrapS], - wrapT: THREE_TO_WEBGL[map2.wrapT] - }; - return json.samplers.push(samplerDef) - 1; - } - /** - * Process texture - * @param {Texture} map Map to process - * @return {Integer} Index of the processed texture in the "textures" array - */ - processTexture(map2) { - const writer = this; - const options = writer.options; - const cache = this.cache; - const json = this.json; - if (cache.textures.has(map2)) return cache.textures.get(map2); - if (!json.textures) json.textures = []; - if (map2 instanceof CompressedTexture) { - map2 = decompress(map2, options.maxTextureSize); - } - let mimeType = map2.userData.mimeType; - if (mimeType === "image/webp") mimeType = "image/png"; - const textureDef = { - sampler: this.processSampler(map2), - source: this.processImage(map2.image, map2.format, map2.flipY, mimeType) - }; - if (map2.name) textureDef.name = map2.name; - this._invokeAll(function(ext) { - ext.writeTexture && ext.writeTexture(map2, textureDef); - }); - const index2 = json.textures.push(textureDef) - 1; - cache.textures.set(map2, index2); - return index2; - } - /** - * Process material - * @param {THREE.Material} material Material to process - * @return {Integer|null} Index of the processed material in the "materials" array - */ - processMaterial(material) { - const cache = this.cache; - const json = this.json; - if (cache.materials.has(material)) return cache.materials.get(material); - if (material.isShaderMaterial) { - console.warn("GLTFExporter: THREE.ShaderMaterial not supported."); - return null; - } - if (!json.materials) json.materials = []; - const materialDef = { pbrMetallicRoughness: {} }; - if (material.isMeshStandardMaterial !== true && material.isMeshBasicMaterial !== true) { - console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results."); - } - const color = material.color.toArray().concat([material.opacity]); - if (!equalArray(color, [1, 1, 1, 1])) { - materialDef.pbrMetallicRoughness.baseColorFactor = color; - } - if (material.isMeshStandardMaterial) { - materialDef.pbrMetallicRoughness.metallicFactor = material.metalness; - materialDef.pbrMetallicRoughness.roughnessFactor = material.roughness; - } else { - materialDef.pbrMetallicRoughness.metallicFactor = 0.5; - materialDef.pbrMetallicRoughness.roughnessFactor = 0.5; - } - if (material.metalnessMap || material.roughnessMap) { - const metalRoughTexture = this.buildMetalRoughTexture(material.metalnessMap, material.roughnessMap); - const metalRoughMapDef = { - index: this.processTexture(metalRoughTexture), - channel: metalRoughTexture.channel - }; - this.applyTextureTransform(metalRoughMapDef, metalRoughTexture); - materialDef.pbrMetallicRoughness.metallicRoughnessTexture = metalRoughMapDef; - } - if (material.map) { - const baseColorMapDef = { - index: this.processTexture(material.map), - texCoord: material.map.channel - }; - this.applyTextureTransform(baseColorMapDef, material.map); - materialDef.pbrMetallicRoughness.baseColorTexture = baseColorMapDef; - } - if (material.emissive) { - const emissive = material.emissive; - const maxEmissiveComponent = Math.max(emissive.r, emissive.g, emissive.b); - if (maxEmissiveComponent > 0) { - materialDef.emissiveFactor = material.emissive.toArray(); - } - if (material.emissiveMap) { - const emissiveMapDef = { - index: this.processTexture(material.emissiveMap), - texCoord: material.emissiveMap.channel - }; - this.applyTextureTransform(emissiveMapDef, material.emissiveMap); - materialDef.emissiveTexture = emissiveMapDef; - } - } - if (material.normalMap) { - const normalMapDef = { - index: this.processTexture(material.normalMap), - texCoord: material.normalMap.channel - }; - if (material.normalScale && material.normalScale.x !== 1) { - normalMapDef.scale = material.normalScale.x; - } - this.applyTextureTransform(normalMapDef, material.normalMap); - materialDef.normalTexture = normalMapDef; - } - if (material.aoMap) { - const occlusionMapDef = { - index: this.processTexture(material.aoMap), - texCoord: material.aoMap.channel - }; - if (material.aoMapIntensity !== 1) { - occlusionMapDef.strength = material.aoMapIntensity; - } - this.applyTextureTransform(occlusionMapDef, material.aoMap); - materialDef.occlusionTexture = occlusionMapDef; - } - if (material.transparent) { - materialDef.alphaMode = "BLEND"; - } else { - if (material.alphaTest > 0) { - materialDef.alphaMode = "MASK"; - materialDef.alphaCutoff = material.alphaTest; - } - } - if (material.side === DoubleSide) materialDef.doubleSided = true; - if (material.name !== "") materialDef.name = material.name; - this.serializeUserData(material, materialDef); - this._invokeAll(function(ext) { - ext.writeMaterial && ext.writeMaterial(material, materialDef); - }); - const index2 = json.materials.push(materialDef) - 1; - cache.materials.set(material, index2); - return index2; - } - /** - * Process mesh - * @param {THREE.Mesh} mesh Mesh to process - * @return {Integer|null} Index of the processed mesh in the "meshes" array - */ - processMesh(mesh) { - const cache = this.cache; - const json = this.json; - const meshCacheKeyParts = [mesh.geometry.uuid]; - if (Array.isArray(mesh.material)) { - for (let i = 0, l2 = mesh.material.length; i < l2; i++) { - meshCacheKeyParts.push(mesh.material[i].uuid); - } - } else { - meshCacheKeyParts.push(mesh.material.uuid); - } - const meshCacheKey = meshCacheKeyParts.join(":"); - if (cache.meshes.has(meshCacheKey)) return cache.meshes.get(meshCacheKey); - const geometry = mesh.geometry; - let mode; - if (mesh.isLineSegments) { - mode = WEBGL_CONSTANTS.LINES; - } else if (mesh.isLineLoop) { - mode = WEBGL_CONSTANTS.LINE_LOOP; - } else if (mesh.isLine) { - mode = WEBGL_CONSTANTS.LINE_STRIP; - } else if (mesh.isPoints) { - mode = WEBGL_CONSTANTS.POINTS; - } else { - mode = mesh.material.wireframe ? WEBGL_CONSTANTS.LINES : WEBGL_CONSTANTS.TRIANGLES; - } - const meshDef = {}; - const attributes = {}; - const primitives = []; - const targets = []; - const nameConversion = { - uv: "TEXCOORD_0", - uv1: "TEXCOORD_1", - uv2: "TEXCOORD_2", - uv3: "TEXCOORD_3", - color: "COLOR_0", - skinWeight: "WEIGHTS_0", - skinIndex: "JOINTS_0" - }; - const originalNormal = geometry.getAttribute("normal"); - if (originalNormal !== void 0 && !this.isNormalizedNormalAttribute(originalNormal)) { - console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."); - geometry.setAttribute("normal", this.createNormalizedNormalAttribute(originalNormal)); - } - let modifiedAttribute = null; - for (let attributeName in geometry.attributes) { - if (attributeName.slice(0, 5) === "morph") continue; - const attribute = geometry.attributes[attributeName]; - attributeName = nameConversion[attributeName] || attributeName.toUpperCase(); - const validVertexAttributes = /^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/; - if (!validVertexAttributes.test(attributeName)) attributeName = "_" + attributeName; - if (cache.attributes.has(this.getUID(attribute))) { - attributes[attributeName] = cache.attributes.get(this.getUID(attribute)); - continue; - } - modifiedAttribute = null; - const array = attribute.array; - if (attributeName === "JOINTS_0" && !(array instanceof Uint16Array) && !(array instanceof Uint8Array)) { - console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'); - modifiedAttribute = new BufferAttribute(new Uint16Array(array), attribute.itemSize, attribute.normalized); - } - const accessor = this.processAccessor(modifiedAttribute || attribute, geometry); - if (accessor !== null) { - if (!attributeName.startsWith("_")) { - this.detectMeshQuantization(attributeName, attribute); - } - attributes[attributeName] = accessor; - cache.attributes.set(this.getUID(attribute), accessor); - } - } - if (originalNormal !== void 0) geometry.setAttribute("normal", originalNormal); - if (Object.keys(attributes).length === 0) return null; - if (mesh.morphTargetInfluences !== void 0 && mesh.morphTargetInfluences.length > 0) { - const weights = []; - const targetNames = []; - const reverseDictionary = {}; - if (mesh.morphTargetDictionary !== void 0) { - for (const key2 in mesh.morphTargetDictionary) { - reverseDictionary[mesh.morphTargetDictionary[key2]] = key2; - } - } - for (let i = 0; i < mesh.morphTargetInfluences.length; ++i) { - const target = {}; - let warned = false; - for (const attributeName in geometry.morphAttributes) { - if (attributeName !== "position" && attributeName !== "normal") { - if (!warned) { - console.warn("GLTFExporter: Only POSITION and NORMAL morph are supported."); - warned = true; - } - continue; - } - const attribute = geometry.morphAttributes[attributeName][i]; - const gltfAttributeName = attributeName.toUpperCase(); - const baseAttribute = geometry.attributes[attributeName]; - if (cache.attributes.has(this.getUID(attribute, true))) { - target[gltfAttributeName] = cache.attributes.get(this.getUID(attribute, true)); - continue; - } - const relativeAttribute = attribute.clone(); - if (!geometry.morphTargetsRelative) { - for (let j = 0, jl = attribute.count; j < jl; j++) { - for (let a2 = 0; a2 < attribute.itemSize; a2++) { - if (a2 === 0) relativeAttribute.setX(j, attribute.getX(j) - baseAttribute.getX(j)); - if (a2 === 1) relativeAttribute.setY(j, attribute.getY(j) - baseAttribute.getY(j)); - if (a2 === 2) relativeAttribute.setZ(j, attribute.getZ(j) - baseAttribute.getZ(j)); - if (a2 === 3) relativeAttribute.setW(j, attribute.getW(j) - baseAttribute.getW(j)); - } - } - } - target[gltfAttributeName] = this.processAccessor(relativeAttribute, geometry); - cache.attributes.set(this.getUID(baseAttribute, true), target[gltfAttributeName]); - } - targets.push(target); - weights.push(mesh.morphTargetInfluences[i]); - if (mesh.morphTargetDictionary !== void 0) targetNames.push(reverseDictionary[i]); - } - meshDef.weights = weights; - if (targetNames.length > 0) { - meshDef.extras = {}; - meshDef.extras.targetNames = targetNames; - } - } - const isMultiMaterial = Array.isArray(mesh.material); - if (isMultiMaterial && geometry.groups.length === 0) return null; - let didForceIndices = false; - if (isMultiMaterial && geometry.index === null) { - const indices = []; - for (let i = 0, il = geometry.attributes.position.count; i < il; i++) { - indices[i] = i; - } - geometry.setIndex(indices); - didForceIndices = true; - } - const materials = isMultiMaterial ? mesh.material : [mesh.material]; - const groups = isMultiMaterial ? geometry.groups : [{ materialIndex: 0, start: void 0, count: void 0 }]; - for (let i = 0, il = groups.length; i < il; i++) { - const primitive = { - mode, - attributes - }; - this.serializeUserData(geometry, primitive); - if (targets.length > 0) primitive.targets = targets; - if (geometry.index !== null) { - let cacheKey = this.getUID(geometry.index); - if (groups[i].start !== void 0 || groups[i].count !== void 0) { - cacheKey += ":" + groups[i].start + ":" + groups[i].count; - } - if (cache.attributes.has(cacheKey)) { - primitive.indices = cache.attributes.get(cacheKey); - } else { - primitive.indices = this.processAccessor(geometry.index, geometry, groups[i].start, groups[i].count); - cache.attributes.set(cacheKey, primitive.indices); - } - if (primitive.indices === null) delete primitive.indices; - } - const material = this.processMaterial(materials[groups[i].materialIndex]); - if (material !== null) primitive.material = material; - primitives.push(primitive); - } - if (didForceIndices === true) { - geometry.setIndex(null); - } - meshDef.primitives = primitives; - if (!json.meshes) json.meshes = []; - this._invokeAll(function(ext) { - ext.writeMesh && ext.writeMesh(mesh, meshDef); - }); - const index2 = json.meshes.push(meshDef) - 1; - cache.meshes.set(meshCacheKey, index2); - return index2; - } - /** - * If a vertex attribute with a - * [non-standard data type](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#meshes-overview) - * is used, it is checked whether it is a valid data type according to the - * [KHR_mesh_quantization](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_mesh_quantization/README.md) - * extension. - * In this case the extension is automatically added to the list of used extensions. - * - * @param {string} attributeName - * @param {THREE.BufferAttribute} attribute - */ - detectMeshQuantization(attributeName, attribute) { - if (this.extensionsUsed[KHR_MESH_QUANTIZATION]) return; - let attrType = void 0; - switch (attribute.array.constructor) { - case Int8Array: - attrType = "byte"; - break; - case Uint8Array: - attrType = "unsigned byte"; - break; - case Int16Array: - attrType = "short"; - break; - case Uint16Array: - attrType = "unsigned short"; - break; - default: - return; - } - if (attribute.normalized) attrType += " normalized"; - const attrNamePrefix = attributeName.split("_", 1)[0]; - if (KHR_mesh_quantization_ExtraAttrTypes[attrNamePrefix] && KHR_mesh_quantization_ExtraAttrTypes[attrNamePrefix].includes(attrType)) { - this.extensionsUsed[KHR_MESH_QUANTIZATION] = true; - this.extensionsRequired[KHR_MESH_QUANTIZATION] = true; - } - } - /** - * Process camera - * @param {THREE.Camera} camera Camera to process - * @return {Integer} Index of the processed mesh in the "camera" array - */ - processCamera(camera) { - const json = this.json; - if (!json.cameras) json.cameras = []; - const isOrtho = camera.isOrthographicCamera; - const cameraDef = { - type: isOrtho ? "orthographic" : "perspective" - }; - if (isOrtho) { - cameraDef.orthographic = { - xmag: camera.right * 2, - ymag: camera.top * 2, - zfar: camera.far <= 0 ? 1e-3 : camera.far, - znear: camera.near < 0 ? 0 : camera.near - }; - } else { - cameraDef.perspective = { - aspectRatio: camera.aspect, - yfov: MathUtils.degToRad(camera.fov), - zfar: camera.far <= 0 ? 1e-3 : camera.far, - znear: camera.near < 0 ? 0 : camera.near - }; - } - if (camera.name !== "") cameraDef.name = camera.type; - return json.cameras.push(cameraDef) - 1; - } - /** - * Creates glTF animation entry from AnimationClip object. - * - * Status: - * - Only properties listed in PATH_PROPERTIES may be animated. - * - * @param {THREE.AnimationClip} clip - * @param {THREE.Object3D} root - * @return {number|null} - */ - processAnimation(clip, root) { - const json = this.json; - const nodeMap = this.nodeMap; - if (!json.animations) json.animations = []; - clip = GLTFExporter.Utils.mergeMorphTargetTracks(clip.clone(), root); - const tracks = clip.tracks; - const channels = []; - const samplers = []; - for (let i = 0; i < tracks.length; ++i) { - const track = tracks[i]; - const trackBinding = PropertyBinding.parseTrackName(track.name); - let trackNode = PropertyBinding.findNode(root, trackBinding.nodeName); - const trackProperty = PATH_PROPERTIES[trackBinding.propertyName]; - if (trackBinding.objectName === "bones") { - if (trackNode.isSkinnedMesh === true) { - trackNode = trackNode.skeleton.getBoneByName(trackBinding.objectIndex); - } else { - trackNode = void 0; - } - } - if (!trackNode || !trackProperty) { - console.warn('THREE.GLTFExporter: Could not export animation track "%s".', track.name); - continue; - } - const inputItemSize = 1; - let outputItemSize = track.values.length / track.times.length; - if (trackProperty === PATH_PROPERTIES.morphTargetInfluences) { - outputItemSize /= trackNode.morphTargetInfluences.length; - } - let interpolation; - if (track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline === true) { - interpolation = "CUBICSPLINE"; - outputItemSize /= 3; - } else if (track.getInterpolation() === InterpolateDiscrete) { - interpolation = "STEP"; - } else { - interpolation = "LINEAR"; - } - samplers.push({ - input: this.processAccessor(new BufferAttribute(track.times, inputItemSize)), - output: this.processAccessor(new BufferAttribute(track.values, outputItemSize)), - interpolation - }); - channels.push({ - sampler: samplers.length - 1, - target: { - node: nodeMap.get(trackNode), - path: trackProperty - } - }); - } - json.animations.push({ - name: clip.name || "clip_" + json.animations.length, - samplers, - channels - }); - return json.animations.length - 1; - } - /** - * @param {THREE.Object3D} object - * @return {number|null} - */ - processSkin(object) { - const json = this.json; - const nodeMap = this.nodeMap; - const node = json.nodes[nodeMap.get(object)]; - const skeleton = object.skeleton; - if (skeleton === void 0) return null; - const rootJoint = object.skeleton.bones[0]; - if (rootJoint === void 0) return null; - const joints = []; - const inverseBindMatrices = new Float32Array(skeleton.bones.length * 16); - const temporaryBoneInverse = new Matrix4(); - for (let i = 0; i < skeleton.bones.length; ++i) { - joints.push(nodeMap.get(skeleton.bones[i])); - temporaryBoneInverse.copy(skeleton.boneInverses[i]); - temporaryBoneInverse.multiply(object.bindMatrix).toArray(inverseBindMatrices, i * 16); - } - if (json.skins === void 0) json.skins = []; - json.skins.push({ - inverseBindMatrices: this.processAccessor(new BufferAttribute(inverseBindMatrices, 16)), - joints, - skeleton: nodeMap.get(rootJoint) - }); - const skinIndex = node.skin = json.skins.length - 1; - return skinIndex; - } - /** - * Process Object3D node - * @param {THREE.Object3D} node Object3D to processNode - * @return {Integer} Index of the node in the nodes list - */ - processNode(object) { - const json = this.json; - const options = this.options; - const nodeMap = this.nodeMap; - if (!json.nodes) json.nodes = []; - const nodeDef = {}; - if (options.trs) { - const rotation2 = object.quaternion.toArray(); - const position2 = object.position.toArray(); - const scale2 = object.scale.toArray(); - if (!equalArray(rotation2, [0, 0, 0, 1])) { - nodeDef.rotation = rotation2; - } - if (!equalArray(position2, [0, 0, 0])) { - nodeDef.translation = position2; - } - if (!equalArray(scale2, [1, 1, 1])) { - nodeDef.scale = scale2; - } - } else { - if (object.matrixAutoUpdate) { - object.updateMatrix(); - } - if (isIdentityMatrix(object.matrix) === false) { - nodeDef.matrix = object.matrix.elements; - } - } - if (object.name !== "") nodeDef.name = String(object.name); - this.serializeUserData(object, nodeDef); - if (object.isMesh || object.isLine || object.isPoints) { - const meshIndex = this.processMesh(object); - if (meshIndex !== null) nodeDef.mesh = meshIndex; - } else if (object.isCamera) { - nodeDef.camera = this.processCamera(object); - } - if (object.isSkinnedMesh) this.skins.push(object); - if (object.children.length > 0) { - const children = []; - for (let i = 0, l2 = object.children.length; i < l2; i++) { - const child = object.children[i]; - if (child.visible || options.onlyVisible === false) { - const nodeIndex2 = this.processNode(child); - if (nodeIndex2 !== null) children.push(nodeIndex2); - } - } - if (children.length > 0) nodeDef.children = children; - } - this._invokeAll(function(ext) { - ext.writeNode && ext.writeNode(object, nodeDef); - }); - const nodeIndex = json.nodes.push(nodeDef) - 1; - nodeMap.set(object, nodeIndex); - return nodeIndex; - } - /** - * Process Scene - * @param {Scene} node Scene to process - */ - processScene(scene) { - const json = this.json; - const options = this.options; - if (!json.scenes) { - json.scenes = []; - json.scene = 0; - } - const sceneDef = {}; - if (scene.name !== "") sceneDef.name = scene.name; - json.scenes.push(sceneDef); - const nodes = []; - for (let i = 0, l2 = scene.children.length; i < l2; i++) { - const child = scene.children[i]; - if (child.visible || options.onlyVisible === false) { - const nodeIndex = this.processNode(child); - if (nodeIndex !== null) nodes.push(nodeIndex); - } - } - if (nodes.length > 0) sceneDef.nodes = nodes; - this.serializeUserData(scene, sceneDef); - } - /** - * Creates a Scene to hold a list of objects and parse it - * @param {Array} objects List of objects to process - */ - processObjects(objects) { - const scene = new Scene(); - scene.name = "AuxScene"; - for (let i = 0; i < objects.length; i++) { - scene.children.push(objects[i]); - } - this.processScene(scene); - } - /** - * @param {THREE.Object3D|Array} input - */ - processInput(input) { - const options = this.options; - input = input instanceof Array ? input : [input]; - this._invokeAll(function(ext) { - ext.beforeParse && ext.beforeParse(input); - }); - const objectsWithoutScene = []; - for (let i = 0; i < input.length; i++) { - if (input[i] instanceof Scene) { - this.processScene(input[i]); - } else { - objectsWithoutScene.push(input[i]); - } - } - if (objectsWithoutScene.length > 0) this.processObjects(objectsWithoutScene); - for (let i = 0; i < this.skins.length; ++i) { - this.processSkin(this.skins[i]); - } - for (let i = 0; i < options.animations.length; ++i) { - this.processAnimation(options.animations[i], input[0]); - } - this._invokeAll(function(ext) { - ext.afterParse && ext.afterParse(input); - }); - } - _invokeAll(func) { - for (let i = 0, il = this.plugins.length; i < il; i++) { - func(this.plugins[i]); - } - } -}; -var GLTFLightExtension = class { - constructor(writer) { - this.writer = writer; - this.name = "KHR_lights_punctual"; - } - writeNode(light, nodeDef) { - if (!light.isLight) return; - if (!light.isDirectionalLight && !light.isPointLight && !light.isSpotLight) { - console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.", light); - return; - } - const writer = this.writer; - const json = writer.json; - const extensionsUsed = writer.extensionsUsed; - const lightDef = {}; - if (light.name) lightDef.name = light.name; - lightDef.color = light.color.toArray(); - lightDef.intensity = light.intensity; - if (light.isDirectionalLight) { - lightDef.type = "directional"; - } else if (light.isPointLight) { - lightDef.type = "point"; - if (light.distance > 0) lightDef.range = light.distance; - } else if (light.isSpotLight) { - lightDef.type = "spot"; - if (light.distance > 0) lightDef.range = light.distance; - lightDef.spot = {}; - lightDef.spot.innerConeAngle = (1 - light.penumbra) * light.angle; - lightDef.spot.outerConeAngle = light.angle; - } - if (light.decay !== void 0 && light.decay !== 2) { - console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."); - } - if (light.target && (light.target.parent !== light || light.target.position.x !== 0 || light.target.position.y !== 0 || light.target.position.z !== -1)) { - console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."); - } - if (!extensionsUsed[this.name]) { - json.extensions = json.extensions || {}; - json.extensions[this.name] = { lights: [] }; - extensionsUsed[this.name] = true; - } - const lights = json.extensions[this.name].lights; - lights.push(lightDef); - nodeDef.extensions = nodeDef.extensions || {}; - nodeDef.extensions[this.name] = { light: lights.length - 1 }; - } -}; -var GLTFMaterialsUnlitExtension = class { - constructor(writer) { - this.writer = writer; - this.name = "KHR_materials_unlit"; - } - writeMaterial(material, materialDef) { - if (!material.isMeshBasicMaterial) return; - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[this.name] = {}; - extensionsUsed[this.name] = true; - materialDef.pbrMetallicRoughness.metallicFactor = 0; - materialDef.pbrMetallicRoughness.roughnessFactor = 0.9; - } -}; -var GLTFMaterialsClearcoatExtension = class { - constructor(writer) { - this.writer = writer; - this.name = "KHR_materials_clearcoat"; - } - writeMaterial(material, materialDef) { - if (!material.isMeshPhysicalMaterial || material.clearcoat === 0) return; - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - const extensionDef = {}; - extensionDef.clearcoatFactor = material.clearcoat; - if (material.clearcoatMap) { - const clearcoatMapDef = { - index: writer.processTexture(material.clearcoatMap), - texCoord: material.clearcoatMap.channel - }; - writer.applyTextureTransform(clearcoatMapDef, material.clearcoatMap); - extensionDef.clearcoatTexture = clearcoatMapDef; - } - extensionDef.clearcoatRoughnessFactor = material.clearcoatRoughness; - if (material.clearcoatRoughnessMap) { - const clearcoatRoughnessMapDef = { - index: writer.processTexture(material.clearcoatRoughnessMap), - texCoord: material.clearcoatRoughnessMap.channel - }; - writer.applyTextureTransform(clearcoatRoughnessMapDef, material.clearcoatRoughnessMap); - extensionDef.clearcoatRoughnessTexture = clearcoatRoughnessMapDef; - } - if (material.clearcoatNormalMap) { - const clearcoatNormalMapDef = { - index: writer.processTexture(material.clearcoatNormalMap), - texCoord: material.clearcoatNormalMap.channel - }; - if (material.clearcoatNormalScale.x !== 1) clearcoatNormalMapDef.scale = material.clearcoatNormalScale.x; - writer.applyTextureTransform(clearcoatNormalMapDef, material.clearcoatNormalMap); - extensionDef.clearcoatNormalTexture = clearcoatNormalMapDef; - } - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[this.name] = extensionDef; - extensionsUsed[this.name] = true; - } -}; -var GLTFMaterialsDispersionExtension = class { - constructor(writer) { - this.writer = writer; - this.name = "KHR_materials_dispersion"; - } - writeMaterial(material, materialDef) { - if (!material.isMeshPhysicalMaterial || material.dispersion === 0) return; - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - const extensionDef = {}; - extensionDef.dispersion = material.dispersion; - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[this.name] = extensionDef; - extensionsUsed[this.name] = true; - } -}; -var GLTFMaterialsIridescenceExtension = class { - constructor(writer) { - this.writer = writer; - this.name = "KHR_materials_iridescence"; - } - writeMaterial(material, materialDef) { - if (!material.isMeshPhysicalMaterial || material.iridescence === 0) return; - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - const extensionDef = {}; - extensionDef.iridescenceFactor = material.iridescence; - if (material.iridescenceMap) { - const iridescenceMapDef = { - index: writer.processTexture(material.iridescenceMap), - texCoord: material.iridescenceMap.channel - }; - writer.applyTextureTransform(iridescenceMapDef, material.iridescenceMap); - extensionDef.iridescenceTexture = iridescenceMapDef; - } - extensionDef.iridescenceIor = material.iridescenceIOR; - extensionDef.iridescenceThicknessMinimum = material.iridescenceThicknessRange[0]; - extensionDef.iridescenceThicknessMaximum = material.iridescenceThicknessRange[1]; - if (material.iridescenceThicknessMap) { - const iridescenceThicknessMapDef = { - index: writer.processTexture(material.iridescenceThicknessMap), - texCoord: material.iridescenceThicknessMap.channel - }; - writer.applyTextureTransform(iridescenceThicknessMapDef, material.iridescenceThicknessMap); - extensionDef.iridescenceThicknessTexture = iridescenceThicknessMapDef; - } - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[this.name] = extensionDef; - extensionsUsed[this.name] = true; - } -}; -var GLTFMaterialsTransmissionExtension = class { - constructor(writer) { - this.writer = writer; - this.name = "KHR_materials_transmission"; - } - writeMaterial(material, materialDef) { - if (!material.isMeshPhysicalMaterial || material.transmission === 0) return; - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - const extensionDef = {}; - extensionDef.transmissionFactor = material.transmission; - if (material.transmissionMap) { - const transmissionMapDef = { - index: writer.processTexture(material.transmissionMap), - texCoord: material.transmissionMap.channel - }; - writer.applyTextureTransform(transmissionMapDef, material.transmissionMap); - extensionDef.transmissionTexture = transmissionMapDef; - } - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[this.name] = extensionDef; - extensionsUsed[this.name] = true; - } -}; -var GLTFMaterialsVolumeExtension = class { - constructor(writer) { - this.writer = writer; - this.name = "KHR_materials_volume"; - } - writeMaterial(material, materialDef) { - if (!material.isMeshPhysicalMaterial || material.transmission === 0) return; - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - const extensionDef = {}; - extensionDef.thicknessFactor = material.thickness; - if (material.thicknessMap) { - const thicknessMapDef = { - index: writer.processTexture(material.thicknessMap), - texCoord: material.thicknessMap.channel - }; - writer.applyTextureTransform(thicknessMapDef, material.thicknessMap); - extensionDef.thicknessTexture = thicknessMapDef; - } - extensionDef.attenuationDistance = material.attenuationDistance; - extensionDef.attenuationColor = material.attenuationColor.toArray(); - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[this.name] = extensionDef; - extensionsUsed[this.name] = true; - } -}; -var GLTFMaterialsIorExtension = class { - constructor(writer) { - this.writer = writer; - this.name = "KHR_materials_ior"; - } - writeMaterial(material, materialDef) { - if (!material.isMeshPhysicalMaterial || material.ior === 1.5) return; - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - const extensionDef = {}; - extensionDef.ior = material.ior; - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[this.name] = extensionDef; - extensionsUsed[this.name] = true; - } -}; -var GLTFMaterialsSpecularExtension = class { - constructor(writer) { - this.writer = writer; - this.name = "KHR_materials_specular"; - } - writeMaterial(material, materialDef) { - if (!material.isMeshPhysicalMaterial || material.specularIntensity === 1 && material.specularColor.equals(DEFAULT_SPECULAR_COLOR) && !material.specularIntensityMap && !material.specularColorMap) return; - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - const extensionDef = {}; - if (material.specularIntensityMap) { - const specularIntensityMapDef = { - index: writer.processTexture(material.specularIntensityMap), - texCoord: material.specularIntensityMap.channel - }; - writer.applyTextureTransform(specularIntensityMapDef, material.specularIntensityMap); - extensionDef.specularTexture = specularIntensityMapDef; - } - if (material.specularColorMap) { - const specularColorMapDef = { - index: writer.processTexture(material.specularColorMap), - texCoord: material.specularColorMap.channel - }; - writer.applyTextureTransform(specularColorMapDef, material.specularColorMap); - extensionDef.specularColorTexture = specularColorMapDef; - } - extensionDef.specularFactor = material.specularIntensity; - extensionDef.specularColorFactor = material.specularColor.toArray(); - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[this.name] = extensionDef; - extensionsUsed[this.name] = true; - } -}; -var GLTFMaterialsSheenExtension = class { - constructor(writer) { - this.writer = writer; - this.name = "KHR_materials_sheen"; - } - writeMaterial(material, materialDef) { - if (!material.isMeshPhysicalMaterial || material.sheen == 0) return; - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - const extensionDef = {}; - if (material.sheenRoughnessMap) { - const sheenRoughnessMapDef = { - index: writer.processTexture(material.sheenRoughnessMap), - texCoord: material.sheenRoughnessMap.channel - }; - writer.applyTextureTransform(sheenRoughnessMapDef, material.sheenRoughnessMap); - extensionDef.sheenRoughnessTexture = sheenRoughnessMapDef; - } - if (material.sheenColorMap) { - const sheenColorMapDef = { - index: writer.processTexture(material.sheenColorMap), - texCoord: material.sheenColorMap.channel - }; - writer.applyTextureTransform(sheenColorMapDef, material.sheenColorMap); - extensionDef.sheenColorTexture = sheenColorMapDef; - } - extensionDef.sheenRoughnessFactor = material.sheenRoughness; - extensionDef.sheenColorFactor = material.sheenColor.toArray(); - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[this.name] = extensionDef; - extensionsUsed[this.name] = true; - } -}; -var GLTFMaterialsAnisotropyExtension = class { - constructor(writer) { - this.writer = writer; - this.name = "KHR_materials_anisotropy"; - } - writeMaterial(material, materialDef) { - if (!material.isMeshPhysicalMaterial || material.anisotropy == 0) return; - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - const extensionDef = {}; - if (material.anisotropyMap) { - const anisotropyMapDef = { index: writer.processTexture(material.anisotropyMap) }; - writer.applyTextureTransform(anisotropyMapDef, material.anisotropyMap); - extensionDef.anisotropyTexture = anisotropyMapDef; - } - extensionDef.anisotropyStrength = material.anisotropy; - extensionDef.anisotropyRotation = material.anisotropyRotation; - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[this.name] = extensionDef; - extensionsUsed[this.name] = true; - } -}; -var GLTFMaterialsEmissiveStrengthExtension = class { - constructor(writer) { - this.writer = writer; - this.name = "KHR_materials_emissive_strength"; - } - writeMaterial(material, materialDef) { - if (!material.isMeshStandardMaterial || material.emissiveIntensity === 1) return; - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - const extensionDef = {}; - extensionDef.emissiveStrength = material.emissiveIntensity; - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[this.name] = extensionDef; - extensionsUsed[this.name] = true; - } -}; -var GLTFMaterialsBumpExtension = class { - constructor(writer) { - this.writer = writer; - this.name = "EXT_materials_bump"; - } - writeMaterial(material, materialDef) { - if (!material.isMeshStandardMaterial || material.bumpScale === 1 && !material.bumpMap) return; - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - const extensionDef = {}; - if (material.bumpMap) { - const bumpMapDef = { - index: writer.processTexture(material.bumpMap), - texCoord: material.bumpMap.channel - }; - writer.applyTextureTransform(bumpMapDef, material.bumpMap); - extensionDef.bumpTexture = bumpMapDef; - } - extensionDef.bumpFactor = material.bumpScale; - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[this.name] = extensionDef; - extensionsUsed[this.name] = true; - } -}; -var GLTFMeshGpuInstancing = class { - constructor(writer) { - this.writer = writer; - this.name = "EXT_mesh_gpu_instancing"; - } - writeNode(object, nodeDef) { - if (!object.isInstancedMesh) return; - const writer = this.writer; - const mesh = object; - const translationAttr = new Float32Array(mesh.count * 3); - const rotationAttr = new Float32Array(mesh.count * 4); - const scaleAttr = new Float32Array(mesh.count * 3); - const matrix3 = new Matrix4(); - const position2 = new Vector3(); - const quaternion = new Quaternion(); - const scale2 = new Vector3(); - for (let i = 0; i < mesh.count; i++) { - mesh.getMatrixAt(i, matrix3); - matrix3.decompose(position2, quaternion, scale2); - position2.toArray(translationAttr, i * 3); - quaternion.toArray(rotationAttr, i * 4); - scale2.toArray(scaleAttr, i * 3); - } - const attributes = { - TRANSLATION: writer.processAccessor(new BufferAttribute(translationAttr, 3)), - ROTATION: writer.processAccessor(new BufferAttribute(rotationAttr, 4)), - SCALE: writer.processAccessor(new BufferAttribute(scaleAttr, 3)) - }; - if (mesh.instanceColor) - attributes._COLOR_0 = writer.processAccessor(mesh.instanceColor); - nodeDef.extensions = nodeDef.extensions || {}; - nodeDef.extensions[this.name] = { attributes }; - writer.extensionsUsed[this.name] = true; - writer.extensionsRequired[this.name] = true; - } -}; -GLTFExporter.Utils = { - insertKeyframe: function(track, time2) { - const tolerance = 1e-3; - const valueSize = track.getValueSize(); - const times = new track.TimeBufferType(track.times.length + 1); - const values2 = new track.ValueBufferType(track.values.length + valueSize); - const interpolant = track.createInterpolant(new track.ValueBufferType(valueSize)); - let index2; - if (track.times.length === 0) { - times[0] = time2; - for (let i = 0; i < valueSize; i++) { - values2[i] = 0; - } - index2 = 0; - } else if (time2 < track.times[0]) { - if (Math.abs(track.times[0] - time2) < tolerance) return 0; - times[0] = time2; - times.set(track.times, 1); - values2.set(interpolant.evaluate(time2), 0); - values2.set(track.values, valueSize); - index2 = 0; - } else if (time2 > track.times[track.times.length - 1]) { - if (Math.abs(track.times[track.times.length - 1] - time2) < tolerance) { - return track.times.length - 1; - } - times[times.length - 1] = time2; - times.set(track.times, 0); - values2.set(track.values, 0); - values2.set(interpolant.evaluate(time2), track.values.length); - index2 = times.length - 1; - } else { - for (let i = 0; i < track.times.length; i++) { - if (Math.abs(track.times[i] - time2) < tolerance) return i; - if (track.times[i] < time2 && track.times[i + 1] > time2) { - times.set(track.times.slice(0, i + 1), 0); - times[i + 1] = time2; - times.set(track.times.slice(i + 1), i + 2); - values2.set(track.values.slice(0, (i + 1) * valueSize), 0); - values2.set(interpolant.evaluate(time2), (i + 1) * valueSize); - values2.set(track.values.slice((i + 1) * valueSize), (i + 2) * valueSize); - index2 = i + 1; - break; - } - } - } - track.times = times; - track.values = values2; - return index2; - }, - mergeMorphTargetTracks: function(clip, root) { - const tracks = []; - const mergedTracks = {}; - const sourceTracks = clip.tracks; - for (let i = 0; i < sourceTracks.length; ++i) { - let sourceTrack = sourceTracks[i]; - const sourceTrackBinding = PropertyBinding.parseTrackName(sourceTrack.name); - const sourceTrackNode = PropertyBinding.findNode(root, sourceTrackBinding.nodeName); - if (sourceTrackBinding.propertyName !== "morphTargetInfluences" || sourceTrackBinding.propertyIndex === void 0) { - tracks.push(sourceTrack); - continue; - } - if (sourceTrack.createInterpolant !== sourceTrack.InterpolantFactoryMethodDiscrete && sourceTrack.createInterpolant !== sourceTrack.InterpolantFactoryMethodLinear) { - if (sourceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) { - throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation."); - } - console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."); - sourceTrack = sourceTrack.clone(); - sourceTrack.setInterpolation(InterpolateLinear); - } - const targetCount = sourceTrackNode.morphTargetInfluences.length; - const targetIndex = sourceTrackNode.morphTargetDictionary[sourceTrackBinding.propertyIndex]; - if (targetIndex === void 0) { - throw new Error("THREE.GLTFExporter: Morph target name not found: " + sourceTrackBinding.propertyIndex); - } - let mergedTrack; - if (mergedTracks[sourceTrackNode.uuid] === void 0) { - mergedTrack = sourceTrack.clone(); - const values2 = new mergedTrack.ValueBufferType(targetCount * mergedTrack.times.length); - for (let j = 0; j < mergedTrack.times.length; j++) { - values2[j * targetCount + targetIndex] = mergedTrack.values[j]; - } - mergedTrack.name = (sourceTrackBinding.nodeName || "") + ".morphTargetInfluences"; - mergedTrack.values = values2; - mergedTracks[sourceTrackNode.uuid] = mergedTrack; - tracks.push(mergedTrack); - continue; - } - const sourceInterpolant = sourceTrack.createInterpolant(new sourceTrack.ValueBufferType(1)); - mergedTrack = mergedTracks[sourceTrackNode.uuid]; - for (let j = 0; j < mergedTrack.times.length; j++) { - mergedTrack.values[j * targetCount + targetIndex] = sourceInterpolant.evaluate(mergedTrack.times[j]); - } - for (let j = 0; j < sourceTrack.times.length; j++) { - const keyframeIndex = this.insertKeyframe(mergedTrack, sourceTrack.times[j]); - mergedTrack.values[keyframeIndex * targetCount + targetIndex] = sourceTrack.values[j]; - } - } - clip.tracks = tracks; - return clip; - } -}; - -// node_modules/three/examples/jsm/libs/ktx-parse.module.js -var t = 0; -var n = 2; -var l = 1; -var p = 1; -var y = 1; -var x = 2; -var E = 0; -var F = 1; -var X = 10; -var R = 0; -var Y = 1; -var q = 2; -var Q = 15; -var Z = 128; -var $ = 64; -var et2 = 16; -var nt = 0; -var ct = 9; -var gt = 15; -var yt = 16; -var dt = 22; -var Ot = 37; -var Ft = 43; -var $t = 76; -var se = 83; -var pe = 97; -var xe = 100; -var de = 103; -var Ae = 109; -var Sn = 165; -var In = 166; -var Si = class { - constructor() { - this.vkFormat = 0, this.typeSize = 1, this.pixelWidth = 0, this.pixelHeight = 0, this.pixelDepth = 0, this.layerCount = 0, this.faceCount = 1, this.supercompressionScheme = 0, this.levels = [], this.dataFormatDescriptor = [{ vendorId: 0, descriptorType: 0, descriptorBlockSize: 0, versionNumber: 2, colorModel: 0, colorPrimaries: 1, transferFunction: 2, flags: 0, texelBlockDimension: [0, 0, 0, 0], bytesPlane: [0, 0, 0, 0, 0, 0, 0, 0], samples: [] }], this.keyValue = {}, this.globalData = null; - } -}; -var Ii = class { - constructor(t3, e, n2, i) { - this._dataView = new DataView(t3.buffer, t3.byteOffset + e, n2), this._littleEndian = i, this._offset = 0; - } - _nextUint8() { - const t3 = this._dataView.getUint8(this._offset); - return this._offset += 1, t3; - } - _nextUint16() { - const t3 = this._dataView.getUint16(this._offset, this._littleEndian); - return this._offset += 2, t3; - } - _nextUint32() { - const t3 = this._dataView.getUint32(this._offset, this._littleEndian); - return this._offset += 4, t3; - } - _nextUint64() { - const t3 = this._dataView.getUint32(this._offset, this._littleEndian) + 2 ** 32 * this._dataView.getUint32(this._offset + 4, this._littleEndian); - return this._offset += 8, t3; - } - _nextInt32() { - const t3 = this._dataView.getInt32(this._offset, this._littleEndian); - return this._offset += 4, t3; - } - _skip(t3) { - return this._offset += t3, this; - } - _scan(t3, e = 0) { - const n2 = this._offset; - let i = 0; - for (; this._dataView.getUint8(this._offset) !== e && i < t3; ) i++, this._offset++; - return i < t3 && this._offset++, new Uint8Array(this._dataView.buffer, this._dataView.byteOffset + n2, i); - } -}; -var Oi = new Uint8Array([0]); -var Ti = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10]; -function Vi(t3) { - return "undefined" != typeof TextEncoder ? new TextEncoder().encode(t3) : Buffer.from(t3); -} -function Ei(t3) { - return "undefined" != typeof TextDecoder ? new TextDecoder().decode(t3) : Buffer.from(t3).toString("utf8"); -} -function Fi(t3) { - let e = 0; - for (const n3 of t3) e += n3.byteLength; - const n2 = new Uint8Array(e); - let i = 0; - for (const e2 of t3) n2.set(new Uint8Array(e2), i), i += e2.byteLength; - return n2; -} -function Pi(t3) { - const e = new Uint8Array(t3.buffer, t3.byteOffset, Ti.length); - if (e[0] !== Ti[0] || e[1] !== Ti[1] || e[2] !== Ti[2] || e[3] !== Ti[3] || e[4] !== Ti[4] || e[5] !== Ti[5] || e[6] !== Ti[6] || e[7] !== Ti[7] || e[8] !== Ti[8] || e[9] !== Ti[9] || e[10] !== Ti[10] || e[11] !== Ti[11]) throw new Error("Missing KTX 2.0 identifier."); - const n2 = new Si(), i = 17 * Uint32Array.BYTES_PER_ELEMENT, s = new Ii(t3, Ti.length, i, true); - n2.vkFormat = s._nextUint32(), n2.typeSize = s._nextUint32(), n2.pixelWidth = s._nextUint32(), n2.pixelHeight = s._nextUint32(), n2.pixelDepth = s._nextUint32(), n2.layerCount = s._nextUint32(), n2.faceCount = s._nextUint32(); - const a2 = s._nextUint32(); - n2.supercompressionScheme = s._nextUint32(); - const r = s._nextUint32(), o = s._nextUint32(), l2 = s._nextUint32(), f = s._nextUint32(), U = s._nextUint64(), c2 = s._nextUint64(), h = new Ii(t3, Ti.length + i, 3 * a2 * 8, true); - for (let e2 = 0; e2 < a2; e2++) n2.levels.push({ levelData: new Uint8Array(t3.buffer, t3.byteOffset + h._nextUint64(), h._nextUint64()), uncompressedByteLength: h._nextUint64() }); - const _ = new Ii(t3, r, o, true), p2 = { vendorId: _._skip(4)._nextUint16(), descriptorType: _._nextUint16(), versionNumber: _._nextUint16(), descriptorBlockSize: _._nextUint16(), colorModel: _._nextUint8(), colorPrimaries: _._nextUint8(), transferFunction: _._nextUint8(), flags: _._nextUint8(), texelBlockDimension: [_._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8()], bytesPlane: [_._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8()], samples: [] }, g2 = (p2.descriptorBlockSize / 4 - 6) / 4; - for (let t4 = 0; t4 < g2; t4++) { - const e2 = { bitOffset: _._nextUint16(), bitLength: _._nextUint8(), channelType: _._nextUint8(), samplePosition: [_._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8()], sampleLower: -Infinity, sampleUpper: Infinity }; - 64 & e2.channelType ? (e2.sampleLower = _._nextInt32(), e2.sampleUpper = _._nextInt32()) : (e2.sampleLower = _._nextUint32(), e2.sampleUpper = _._nextUint32()), p2.samples[t4] = e2; - } - n2.dataFormatDescriptor.length = 0, n2.dataFormatDescriptor.push(p2); - const y2 = new Ii(t3, l2, f, true); - for (; y2._offset < f; ) { - const t4 = y2._nextUint32(), e2 = y2._scan(t4), i2 = Ei(e2), s2 = y2._scan(t4 - e2.byteLength); - n2.keyValue[i2] = i2.match(/^ktx/i) ? Ei(s2) : s2, y2._offset % 4 && y2._skip(4 - y2._offset % 4); - } - if (c2 <= 0) return n2; - const x2 = new Ii(t3, U, c2, true), u = x2._nextUint16(), b3 = x2._nextUint16(), d = x2._nextUint32(), m = x2._nextUint32(), w = x2._nextUint32(), D = x2._nextUint32(), B2 = []; - for (let t4 = 0; t4 < a2; t4++) B2.push({ imageFlags: x2._nextUint32(), rgbSliceByteOffset: x2._nextUint32(), rgbSliceByteLength: x2._nextUint32(), alphaSliceByteOffset: x2._nextUint32(), alphaSliceByteLength: x2._nextUint32() }); - const L = U + x2._offset, A2 = L + d, k2 = A2 + m, v = k2 + w, S = new Uint8Array(t3.buffer, t3.byteOffset + L, d), I2 = new Uint8Array(t3.buffer, t3.byteOffset + A2, m), O = new Uint8Array(t3.buffer, t3.byteOffset + k2, w), T = new Uint8Array(t3.buffer, t3.byteOffset + v, D); - return n2.globalData = { endpointCount: u, selectorCount: b3, imageDescs: B2, endpointsData: S, selectorsData: I2, tablesData: O, extendedData: T }, n2; -} -function Ci() { - return (Ci = Object.assign || function(t3) { - for (var e = 1; e < arguments.length; e++) { - var n2 = arguments[e]; - for (var i in n2) Object.prototype.hasOwnProperty.call(n2, i) && (t3[i] = n2[i]); - } - return t3; - }).apply(this, arguments); -} -var zi = { keepWriter: false }; -function Mi(t3, e = {}) { - e = Ci({}, zi, e); - let n2 = new ArrayBuffer(0); - if (t3.globalData) { - const e2 = new ArrayBuffer(20 + 5 * t3.globalData.imageDescs.length * 4), i2 = new DataView(e2); - i2.setUint16(0, t3.globalData.endpointCount, true), i2.setUint16(2, t3.globalData.selectorCount, true), i2.setUint32(4, t3.globalData.endpointsData.byteLength, true), i2.setUint32(8, t3.globalData.selectorsData.byteLength, true), i2.setUint32(12, t3.globalData.tablesData.byteLength, true), i2.setUint32(16, t3.globalData.extendedData.byteLength, true); - for (let e3 = 0; e3 < t3.globalData.imageDescs.length; e3++) { - const n3 = t3.globalData.imageDescs[e3]; - i2.setUint32(20 + 5 * e3 * 4 + 0, n3.imageFlags, true), i2.setUint32(20 + 5 * e3 * 4 + 4, n3.rgbSliceByteOffset, true), i2.setUint32(20 + 5 * e3 * 4 + 8, n3.rgbSliceByteLength, true), i2.setUint32(20 + 5 * e3 * 4 + 12, n3.alphaSliceByteOffset, true), i2.setUint32(20 + 5 * e3 * 4 + 16, n3.alphaSliceByteLength, true); - } - n2 = Fi([e2, t3.globalData.endpointsData, t3.globalData.selectorsData, t3.globalData.tablesData, t3.globalData.extendedData]); - } - const i = []; - let s = t3.keyValue; - e.keepWriter || (s = Ci({}, t3.keyValue, { KTXwriter: "KTX-Parse v0.3.1" })); - for (const t4 in s) { - const e2 = s[t4], n3 = Vi(t4), a3 = "string" == typeof e2 ? Vi(e2) : e2, r2 = n3.byteLength + 1 + a3.byteLength + 1, o2 = r2 % 4 ? 4 - r2 % 4 : 0; - i.push(Fi([new Uint32Array([r2]), n3, Oi, a3, Oi, new Uint8Array(o2).fill(0)])); - } - const a2 = Fi(i); - if (1 !== t3.dataFormatDescriptor.length || 0 !== t3.dataFormatDescriptor[0].descriptorType) throw new Error("Only BASICFORMAT Data Format Descriptor output supported."); - const r = t3.dataFormatDescriptor[0], o = new ArrayBuffer(28 + 16 * r.samples.length), l2 = new DataView(o), f = 24 + 16 * r.samples.length; - if (l2.setUint32(0, o.byteLength, true), l2.setUint16(4, r.vendorId, true), l2.setUint16(6, r.descriptorType, true), l2.setUint16(8, r.versionNumber, true), l2.setUint16(10, f, true), l2.setUint8(12, r.colorModel), l2.setUint8(13, r.colorPrimaries), l2.setUint8(14, r.transferFunction), l2.setUint8(15, r.flags), !Array.isArray(r.texelBlockDimension)) throw new Error("texelBlockDimension is now an array. For dimensionality `d`, set `d - 1`."); - l2.setUint8(16, r.texelBlockDimension[0]), l2.setUint8(17, r.texelBlockDimension[1]), l2.setUint8(18, r.texelBlockDimension[2]), l2.setUint8(19, r.texelBlockDimension[3]); - for (let t4 = 0; t4 < 8; t4++) l2.setUint8(20 + t4, r.bytesPlane[t4]); - for (let t4 = 0; t4 < r.samples.length; t4++) { - const e2 = r.samples[t4], n3 = 28 + 16 * t4; - if (e2.channelID) throw new Error("channelID has been renamed to channelType."); - l2.setUint16(n3 + 0, e2.bitOffset, true), l2.setUint8(n3 + 2, e2.bitLength), l2.setUint8(n3 + 3, e2.channelType), l2.setUint8(n3 + 4, e2.samplePosition[0]), l2.setUint8(n3 + 5, e2.samplePosition[1]), l2.setUint8(n3 + 6, e2.samplePosition[2]), l2.setUint8(n3 + 7, e2.samplePosition[3]), 64 & e2.channelType ? (l2.setInt32(n3 + 8, e2.sampleLower, true), l2.setInt32(n3 + 12, e2.sampleUpper, true)) : (l2.setUint32(n3 + 8, e2.sampleLower, true), l2.setUint32(n3 + 12, e2.sampleUpper, true)); - } - const U = Ti.length + 68 + 3 * t3.levels.length * 8, c2 = U + o.byteLength; - let h = n2.byteLength > 0 ? c2 + a2.byteLength : 0; - h % 8 && (h += 8 - h % 8); - const _ = [], p2 = new DataView(new ArrayBuffer(3 * t3.levels.length * 8)); - let g2 = (h || c2 + a2.byteLength) + n2.byteLength; - for (let e2 = 0; e2 < t3.levels.length; e2++) { - const n3 = t3.levels[e2]; - _.push(n3.levelData), p2.setBigUint64(24 * e2 + 0, BigInt(g2), true), p2.setBigUint64(24 * e2 + 8, BigInt(n3.levelData.byteLength), true), p2.setBigUint64(24 * e2 + 16, BigInt(n3.uncompressedByteLength), true), g2 += n3.levelData.byteLength; - } - const y2 = new ArrayBuffer(68), x2 = new DataView(y2); - return x2.setUint32(0, t3.vkFormat, true), x2.setUint32(4, t3.typeSize, true), x2.setUint32(8, t3.pixelWidth, true), x2.setUint32(12, t3.pixelHeight, true), x2.setUint32(16, t3.pixelDepth, true), x2.setUint32(20, t3.layerCount, true), x2.setUint32(24, t3.faceCount, true), x2.setUint32(28, t3.levels.length, true), x2.setUint32(32, t3.supercompressionScheme, true), x2.setUint32(36, U, true), x2.setUint32(40, o.byteLength, true), x2.setUint32(44, c2, true), x2.setUint32(48, a2.byteLength, true), x2.setBigUint64(52, BigInt(n2.byteLength > 0 ? h : 0), true), x2.setBigUint64(60, BigInt(n2.byteLength), true), new Uint8Array(Fi([new Uint8Array(Ti).buffer, y2, p2.buffer, o, a2, h > 0 ? new ArrayBuffer(h - (c2 + a2.byteLength)) : new ArrayBuffer(0), n2, ..._])); -} - -// node_modules/three/examples/jsm/exporters/KTX2Exporter.js -var VK_FORMAT_MAP = { - [RGBAFormat]: { - [FloatType]: { - [NoColorSpace]: Ae, - [LinearSRGBColorSpace]: Ae - }, - [HalfFloatType]: { - [NoColorSpace]: pe, - [LinearSRGBColorSpace]: pe - }, - [UnsignedByteType]: { - [NoColorSpace]: Ot, - [LinearSRGBColorSpace]: Ot, - [SRGBColorSpace]: Ft - } - }, - [RGFormat]: { - [FloatType]: { - [NoColorSpace]: de, - [LinearSRGBColorSpace]: de - }, - [HalfFloatType]: { - [NoColorSpace]: se, - [LinearSRGBColorSpace]: se - }, - [UnsignedByteType]: { - [NoColorSpace]: yt, - [LinearSRGBColorSpace]: yt, - [SRGBColorSpace]: dt - } - }, - [RedFormat]: { - [FloatType]: { - [NoColorSpace]: xe, - [LinearSRGBColorSpace]: xe - }, - [HalfFloatType]: { - [NoColorSpace]: $t, - [LinearSRGBColorSpace]: $t - }, - [UnsignedByteType]: { - [NoColorSpace]: ct, - [LinearSRGBColorSpace]: ct, - [SRGBColorSpace]: gt - } - } -}; -var KHR_DF_CHANNEL_MAP = { - 0: R, - 1: Y, - 2: q, - 3: Q -}; -var ERROR_INPUT = "THREE.KTX2Exporter: Supported inputs are DataTexture, Data3DTexture, or WebGLRenderer and WebGLRenderTarget."; -var ERROR_FORMAT = "THREE.KTX2Exporter: Supported formats are RGBAFormat, RGFormat, or RedFormat."; -var ERROR_TYPE = 'THREE.KTX2Exporter: Supported types are FloatType, HalfFloatType, or UnsignedByteType."'; -var ERROR_COLOR_SPACE = "THREE.KTX2Exporter: Supported color spaces are SRGBColorSpace (UnsignedByteType only), LinearSRGBColorSpace, or NoColorSpace."; -var KTX2Exporter = class { - parse(arg1, arg2) { - let texture; - if (arg1.isDataTexture || arg1.isData3DTexture) { - texture = arg1; - } else if (arg1.isWebGLRenderer && arg2.isWebGLRenderTarget) { - texture = toDataTexture(arg1, arg2); - } else { - throw new Error(ERROR_INPUT); - } - if (VK_FORMAT_MAP[texture.format] === void 0) { - throw new Error(ERROR_FORMAT); - } - if (VK_FORMAT_MAP[texture.format][texture.type] === void 0) { - throw new Error(ERROR_TYPE); - } - if (VK_FORMAT_MAP[texture.format][texture.type][texture.colorSpace] === void 0) { - throw new Error(ERROR_COLOR_SPACE); - } - const array = texture.image.data; - const channelCount = getChannelCount(texture); - const container = new Si(); - container.vkFormat = VK_FORMAT_MAP[texture.format][texture.type][texture.colorSpace]; - container.typeSize = array.BYTES_PER_ELEMENT; - container.pixelWidth = texture.image.width; - container.pixelHeight = texture.image.height; - if (texture.isData3DTexture) { - container.pixelDepth = texture.image.depth; - } - const basicDesc = container.dataFormatDescriptor[0]; - basicDesc.colorModel = l; - basicDesc.colorPrimaries = texture.colorSpace === NoColorSpace ? E : F; - basicDesc.transferFunction = texture.colorSpace === SRGBColorSpace ? x : y; - basicDesc.texelBlockDimension = [0, 0, 0, 0]; - basicDesc.bytesPlane = [ - container.typeSize * channelCount, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ]; - for (let i = 0; i < channelCount; ++i) { - let channelType = KHR_DF_CHANNEL_MAP[i]; - if (texture.colorSpace === LinearSRGBColorSpace || texture.colorSpace === NoColorSpace) { - channelType |= et2; - } - if (texture.type === FloatType || texture.type === HalfFloatType) { - channelType |= Z; - channelType |= $; - } - basicDesc.samples.push({ - channelType, - bitOffset: i * array.BYTES_PER_ELEMENT, - bitLength: array.BYTES_PER_ELEMENT * 8 - 1, - samplePosition: [0, 0, 0, 0], - sampleLower: texture.type === UnsignedByteType ? 0 : -1, - sampleUpper: texture.type === UnsignedByteType ? 255 : 1 - }); - } - container.levels = [{ - levelData: new Uint8Array(array.buffer, array.byteOffset, array.byteLength), - uncompressedByteLength: array.byteLength - }]; - container.keyValue["KTXwriter"] = `three.js ${REVISION}`; - return Mi(container, { keepWriter: true }); - } -}; -function toDataTexture(renderer2, rtt) { - const channelCount = getChannelCount(rtt.texture); - let view; - if (rtt.texture.type === FloatType) { - view = new Float32Array(rtt.width * rtt.height * channelCount); - } else if (rtt.texture.type === HalfFloatType) { - view = new Uint16Array(rtt.width * rtt.height * channelCount); - } else if (rtt.texture.type === UnsignedByteType) { - view = new Uint8Array(rtt.width * rtt.height * channelCount); - } else { - throw new Error(ERROR_TYPE); - } - renderer2.readRenderTargetPixels(rtt, 0, 0, rtt.width, rtt.height, view); - return new DataTexture(view, rtt.width, rtt.height, rtt.texture.format, rtt.texture.type); -} -function getChannelCount(texture) { - switch (texture.format) { - case RGBAFormat: - return 4; - case RGFormat: - case RGIntegerFormat: - return 2; - case RedFormat: - case RedIntegerFormat: - return 1; - default: - throw new Error(ERROR_FORMAT); - } -} - -// node_modules/three/examples/jsm/libs/mmdparser.module.js -function CharsetEncoder() { -} -CharsetEncoder.prototype.s2u = function(uint8Array) { - var t3 = this.s2uTable; - var str = ""; - var p2 = 0; - while (p2 < uint8Array.length) { - var key2 = uint8Array[p2++]; - if (!(key2 >= 0 && key2 <= 126 || key2 >= 161 && key2 <= 223) && p2 < uint8Array.length) { - key2 = key2 << 8 | uint8Array[p2++]; - } - if (t3[key2] === void 0) { - console.error("unknown char code " + key2 + "."); - return str; - } - str += String.fromCharCode(t3[key2]); - } - return str; -}; -CharsetEncoder.prototype.s2uTable = { - 0: 0, - 1: 1, - 2: 2, - 3: 3, - 4: 4, - 5: 5, - 6: 6, - 7: 7, - 8: 8, - 9: 9, - 10: 10, - 11: 11, - 12: 12, - 13: 13, - 14: 14, - 15: 15, - 16: 16, - 17: 17, - 18: 18, - 19: 19, - 20: 20, - 21: 21, - 22: 22, - 23: 23, - 24: 24, - 25: 25, - 26: 26, - 27: 27, - 28: 28, - 29: 29, - 30: 30, - 31: 31, - 32: 32, - 33: 33, - 34: 34, - 35: 35, - 36: 36, - 37: 37, - 38: 38, - 39: 39, - 40: 40, - 41: 41, - 42: 42, - 43: 43, - 44: 44, - 45: 45, - 46: 46, - 47: 47, - 48: 48, - 49: 49, - 50: 50, - 51: 51, - 52: 52, - 53: 53, - 54: 54, - 55: 55, - 56: 56, - 57: 57, - 58: 58, - 59: 59, - 60: 60, - 61: 61, - 62: 62, - 63: 63, - 64: 64, - 65: 65, - 66: 66, - 67: 67, - 68: 68, - 69: 69, - 70: 70, - 71: 71, - 72: 72, - 73: 73, - 74: 74, - 75: 75, - 76: 76, - 77: 77, - 78: 78, - 79: 79, - 80: 80, - 81: 81, - 82: 82, - 83: 83, - 84: 84, - 85: 85, - 86: 86, - 87: 87, - 88: 88, - 89: 89, - 90: 90, - 91: 91, - 92: 92, - 93: 93, - 94: 94, - 95: 95, - 96: 96, - 97: 97, - 98: 98, - 99: 99, - 100: 100, - 101: 101, - 102: 102, - 103: 103, - 104: 104, - 105: 105, - 106: 106, - 107: 107, - 108: 108, - 109: 109, - 110: 110, - 111: 111, - 112: 112, - 113: 113, - 114: 114, - 115: 115, - 116: 116, - 117: 117, - 118: 118, - 119: 119, - 120: 120, - 121: 121, - 122: 122, - 123: 123, - 124: 124, - 125: 125, - 126: 126, - 161: 65377, - 162: 65378, - 163: 65379, - 164: 65380, - 165: 65381, - 166: 65382, - 167: 65383, - 168: 65384, - 169: 65385, - 170: 65386, - 171: 65387, - 172: 65388, - 173: 65389, - 174: 65390, - 175: 65391, - 176: 65392, - 177: 65393, - 178: 65394, - 179: 65395, - 180: 65396, - 181: 65397, - 182: 65398, - 183: 65399, - 184: 65400, - 185: 65401, - 186: 65402, - 187: 65403, - 188: 65404, - 189: 65405, - 190: 65406, - 191: 65407, - 192: 65408, - 193: 65409, - 194: 65410, - 195: 65411, - 196: 65412, - 197: 65413, - 198: 65414, - 199: 65415, - 200: 65416, - 201: 65417, - 202: 65418, - 203: 65419, - 204: 65420, - 205: 65421, - 206: 65422, - 207: 65423, - 208: 65424, - 209: 65425, - 210: 65426, - 211: 65427, - 212: 65428, - 213: 65429, - 214: 65430, - 215: 65431, - 216: 65432, - 217: 65433, - 218: 65434, - 219: 65435, - 220: 65436, - 221: 65437, - 222: 65438, - 223: 65439, - 33088: 12288, - 33089: 12289, - 33090: 12290, - 33091: 65292, - 33092: 65294, - 33093: 12539, - 33094: 65306, - 33095: 65307, - 33096: 65311, - 33097: 65281, - 33098: 12443, - 33099: 12444, - 33100: 180, - 33101: 65344, - 33102: 168, - 33103: 65342, - 33104: 65507, - 33105: 65343, - 33106: 12541, - 33107: 12542, - 33108: 12445, - 33109: 12446, - 33110: 12291, - 33111: 20189, - 33112: 12293, - 33113: 12294, - 33114: 12295, - 33115: 12540, - 33116: 8213, - 33117: 8208, - 33118: 65295, - 33119: 65340, - 33120: 65374, - 33121: 8741, - 33122: 65372, - 33123: 8230, - 33124: 8229, - 33125: 8216, - 33126: 8217, - 33127: 8220, - 33128: 8221, - 33129: 65288, - 33130: 65289, - 33131: 12308, - 33132: 12309, - 33133: 65339, - 33134: 65341, - 33135: 65371, - 33136: 65373, - 33137: 12296, - 33138: 12297, - 33139: 12298, - 33140: 12299, - 33141: 12300, - 33142: 12301, - 33143: 12302, - 33144: 12303, - 33145: 12304, - 33146: 12305, - 33147: 65291, - 33148: 65293, - 33149: 177, - 33150: 215, - 33152: 247, - 33153: 65309, - 33154: 8800, - 33155: 65308, - 33156: 65310, - 33157: 8806, - 33158: 8807, - 33159: 8734, - 33160: 8756, - 33161: 9794, - 33162: 9792, - 33163: 176, - 33164: 8242, - 33165: 8243, - 33166: 8451, - 33167: 65509, - 33168: 65284, - 33169: 65504, - 33170: 65505, - 33171: 65285, - 33172: 65283, - 33173: 65286, - 33174: 65290, - 33175: 65312, - 33176: 167, - 33177: 9734, - 33178: 9733, - 33179: 9675, - 33180: 9679, - 33181: 9678, - 33182: 9671, - 33183: 9670, - 33184: 9633, - 33185: 9632, - 33186: 9651, - 33187: 9650, - 33188: 9661, - 33189: 9660, - 33190: 8251, - 33191: 12306, - 33192: 8594, - 33193: 8592, - 33194: 8593, - 33195: 8595, - 33196: 12307, - 33208: 8712, - 33209: 8715, - 33210: 8838, - 33211: 8839, - 33212: 8834, - 33213: 8835, - 33214: 8746, - 33215: 8745, - 33224: 8743, - 33225: 8744, - 33226: 65506, - 33227: 8658, - 33228: 8660, - 33229: 8704, - 33230: 8707, - 33242: 8736, - 33243: 8869, - 33244: 8978, - 33245: 8706, - 33246: 8711, - 33247: 8801, - 33248: 8786, - 33249: 8810, - 33250: 8811, - 33251: 8730, - 33252: 8765, - 33253: 8733, - 33254: 8757, - 33255: 8747, - 33256: 8748, - 33264: 8491, - 33265: 8240, - 33266: 9839, - 33267: 9837, - 33268: 9834, - 33269: 8224, - 33270: 8225, - 33271: 182, - 33276: 9711, - 33359: 65296, - 33360: 65297, - 33361: 65298, - 33362: 65299, - 33363: 65300, - 33364: 65301, - 33365: 65302, - 33366: 65303, - 33367: 65304, - 33368: 65305, - 33376: 65313, - 33377: 65314, - 33378: 65315, - 33379: 65316, - 33380: 65317, - 33381: 65318, - 33382: 65319, - 33383: 65320, - 33384: 65321, - 33385: 65322, - 33386: 65323, - 33387: 65324, - 33388: 65325, - 33389: 65326, - 33390: 65327, - 33391: 65328, - 33392: 65329, - 33393: 65330, - 33394: 65331, - 33395: 65332, - 33396: 65333, - 33397: 65334, - 33398: 65335, - 33399: 65336, - 33400: 65337, - 33401: 65338, - 33409: 65345, - 33410: 65346, - 33411: 65347, - 33412: 65348, - 33413: 65349, - 33414: 65350, - 33415: 65351, - 33416: 65352, - 33417: 65353, - 33418: 65354, - 33419: 65355, - 33420: 65356, - 33421: 65357, - 33422: 65358, - 33423: 65359, - 33424: 65360, - 33425: 65361, - 33426: 65362, - 33427: 65363, - 33428: 65364, - 33429: 65365, - 33430: 65366, - 33431: 65367, - 33432: 65368, - 33433: 65369, - 33434: 65370, - 33439: 12353, - 33440: 12354, - 33441: 12355, - 33442: 12356, - 33443: 12357, - 33444: 12358, - 33445: 12359, - 33446: 12360, - 33447: 12361, - 33448: 12362, - 33449: 12363, - 33450: 12364, - 33451: 12365, - 33452: 12366, - 33453: 12367, - 33454: 12368, - 33455: 12369, - 33456: 12370, - 33457: 12371, - 33458: 12372, - 33459: 12373, - 33460: 12374, - 33461: 12375, - 33462: 12376, - 33463: 12377, - 33464: 12378, - 33465: 12379, - 33466: 12380, - 33467: 12381, - 33468: 12382, - 33469: 12383, - 33470: 12384, - 33471: 12385, - 33472: 12386, - 33473: 12387, - 33474: 12388, - 33475: 12389, - 33476: 12390, - 33477: 12391, - 33478: 12392, - 33479: 12393, - 33480: 12394, - 33481: 12395, - 33482: 12396, - 33483: 12397, - 33484: 12398, - 33485: 12399, - 33486: 12400, - 33487: 12401, - 33488: 12402, - 33489: 12403, - 33490: 12404, - 33491: 12405, - 33492: 12406, - 33493: 12407, - 33494: 12408, - 33495: 12409, - 33496: 12410, - 33497: 12411, - 33498: 12412, - 33499: 12413, - 33500: 12414, - 33501: 12415, - 33502: 12416, - 33503: 12417, - 33504: 12418, - 33505: 12419, - 33506: 12420, - 33507: 12421, - 33508: 12422, - 33509: 12423, - 33510: 12424, - 33511: 12425, - 33512: 12426, - 33513: 12427, - 33514: 12428, - 33515: 12429, - 33516: 12430, - 33517: 12431, - 33518: 12432, - 33519: 12433, - 33520: 12434, - 33521: 12435, - 33600: 12449, - 33601: 12450, - 33602: 12451, - 33603: 12452, - 33604: 12453, - 33605: 12454, - 33606: 12455, - 33607: 12456, - 33608: 12457, - 33609: 12458, - 33610: 12459, - 33611: 12460, - 33612: 12461, - 33613: 12462, - 33614: 12463, - 33615: 12464, - 33616: 12465, - 33617: 12466, - 33618: 12467, - 33619: 12468, - 33620: 12469, - 33621: 12470, - 33622: 12471, - 33623: 12472, - 33624: 12473, - 33625: 12474, - 33626: 12475, - 33627: 12476, - 33628: 12477, - 33629: 12478, - 33630: 12479, - 33631: 12480, - 33632: 12481, - 33633: 12482, - 33634: 12483, - 33635: 12484, - 33636: 12485, - 33637: 12486, - 33638: 12487, - 33639: 12488, - 33640: 12489, - 33641: 12490, - 33642: 12491, - 33643: 12492, - 33644: 12493, - 33645: 12494, - 33646: 12495, - 33647: 12496, - 33648: 12497, - 33649: 12498, - 33650: 12499, - 33651: 12500, - 33652: 12501, - 33653: 12502, - 33654: 12503, - 33655: 12504, - 33656: 12505, - 33657: 12506, - 33658: 12507, - 33659: 12508, - 33660: 12509, - 33661: 12510, - 33662: 12511, - 33664: 12512, - 33665: 12513, - 33666: 12514, - 33667: 12515, - 33668: 12516, - 33669: 12517, - 33670: 12518, - 33671: 12519, - 33672: 12520, - 33673: 12521, - 33674: 12522, - 33675: 12523, - 33676: 12524, - 33677: 12525, - 33678: 12526, - 33679: 12527, - 33680: 12528, - 33681: 12529, - 33682: 12530, - 33683: 12531, - 33684: 12532, - 33685: 12533, - 33686: 12534, - 33695: 913, - 33696: 914, - 33697: 915, - 33698: 916, - 33699: 917, - 33700: 918, - 33701: 919, - 33702: 920, - 33703: 921, - 33704: 922, - 33705: 923, - 33706: 924, - 33707: 925, - 33708: 926, - 33709: 927, - 33710: 928, - 33711: 929, - 33712: 931, - 33713: 932, - 33714: 933, - 33715: 934, - 33716: 935, - 33717: 936, - 33718: 937, - 33727: 945, - 33728: 946, - 33729: 947, - 33730: 948, - 33731: 949, - 33732: 950, - 33733: 951, - 33734: 952, - 33735: 953, - 33736: 954, - 33737: 955, - 33738: 956, - 33739: 957, - 33740: 958, - 33741: 959, - 33742: 960, - 33743: 961, - 33744: 963, - 33745: 964, - 33746: 965, - 33747: 966, - 33748: 967, - 33749: 968, - 33750: 969, - 33856: 1040, - 33857: 1041, - 33858: 1042, - 33859: 1043, - 33860: 1044, - 33861: 1045, - 33862: 1025, - 33863: 1046, - 33864: 1047, - 33865: 1048, - 33866: 1049, - 33867: 1050, - 33868: 1051, - 33869: 1052, - 33870: 1053, - 33871: 1054, - 33872: 1055, - 33873: 1056, - 33874: 1057, - 33875: 1058, - 33876: 1059, - 33877: 1060, - 33878: 1061, - 33879: 1062, - 33880: 1063, - 33881: 1064, - 33882: 1065, - 33883: 1066, - 33884: 1067, - 33885: 1068, - 33886: 1069, - 33887: 1070, - 33888: 1071, - 33904: 1072, - 33905: 1073, - 33906: 1074, - 33907: 1075, - 33908: 1076, - 33909: 1077, - 33910: 1105, - 33911: 1078, - 33912: 1079, - 33913: 1080, - 33914: 1081, - 33915: 1082, - 33916: 1083, - 33917: 1084, - 33918: 1085, - 33920: 1086, - 33921: 1087, - 33922: 1088, - 33923: 1089, - 33924: 1090, - 33925: 1091, - 33926: 1092, - 33927: 1093, - 33928: 1094, - 33929: 1095, - 33930: 1096, - 33931: 1097, - 33932: 1098, - 33933: 1099, - 33934: 1100, - 33935: 1101, - 33936: 1102, - 33937: 1103, - 33951: 9472, - 33952: 9474, - 33953: 9484, - 33954: 9488, - 33955: 9496, - 33956: 9492, - 33957: 9500, - 33958: 9516, - 33959: 9508, - 33960: 9524, - 33961: 9532, - 33962: 9473, - 33963: 9475, - 33964: 9487, - 33965: 9491, - 33966: 9499, - 33967: 9495, - 33968: 9507, - 33969: 9523, - 33970: 9515, - 33971: 9531, - 33972: 9547, - 33973: 9504, - 33974: 9519, - 33975: 9512, - 33976: 9527, - 33977: 9535, - 33978: 9501, - 33979: 9520, - 33980: 9509, - 33981: 9528, - 33982: 9538, - 34624: 9312, - 34625: 9313, - 34626: 9314, - 34627: 9315, - 34628: 9316, - 34629: 9317, - 34630: 9318, - 34631: 9319, - 34632: 9320, - 34633: 9321, - 34634: 9322, - 34635: 9323, - 34636: 9324, - 34637: 9325, - 34638: 9326, - 34639: 9327, - 34640: 9328, - 34641: 9329, - 34642: 9330, - 34643: 9331, - 34644: 8544, - 34645: 8545, - 34646: 8546, - 34647: 8547, - 34648: 8548, - 34649: 8549, - 34650: 8550, - 34651: 8551, - 34652: 8552, - 34653: 8553, - 34655: 13129, - 34656: 13076, - 34657: 13090, - 34658: 13133, - 34659: 13080, - 34660: 13095, - 34661: 13059, - 34662: 13110, - 34663: 13137, - 34664: 13143, - 34665: 13069, - 34666: 13094, - 34667: 13091, - 34668: 13099, - 34669: 13130, - 34670: 13115, - 34671: 13212, - 34672: 13213, - 34673: 13214, - 34674: 13198, - 34675: 13199, - 34676: 13252, - 34677: 13217, - 34686: 13179, - 34688: 12317, - 34689: 12319, - 34690: 8470, - 34691: 13261, - 34692: 8481, - 34693: 12964, - 34694: 12965, - 34695: 12966, - 34696: 12967, - 34697: 12968, - 34698: 12849, - 34699: 12850, - 34700: 12857, - 34701: 13182, - 34702: 13181, - 34703: 13180, - 34704: 8786, - 34705: 8801, - 34706: 8747, - 34707: 8750, - 34708: 8721, - 34709: 8730, - 34710: 8869, - 34711: 8736, - 34712: 8735, - 34713: 8895, - 34714: 8757, - 34715: 8745, - 34716: 8746, - 34975: 20124, - 34976: 21782, - 34977: 23043, - 34978: 38463, - 34979: 21696, - 34980: 24859, - 34981: 25384, - 34982: 23030, - 34983: 36898, - 34984: 33909, - 34985: 33564, - 34986: 31312, - 34987: 24746, - 34988: 25569, - 34989: 28197, - 34990: 26093, - 34991: 33894, - 34992: 33446, - 34993: 39925, - 34994: 26771, - 34995: 22311, - 34996: 26017, - 34997: 25201, - 34998: 23451, - 34999: 22992, - 35e3: 34427, - 35001: 39156, - 35002: 32098, - 35003: 32190, - 35004: 39822, - 35005: 25110, - 35006: 31903, - 35007: 34999, - 35008: 23433, - 35009: 24245, - 35010: 25353, - 35011: 26263, - 35012: 26696, - 35013: 38343, - 35014: 38797, - 35015: 26447, - 35016: 20197, - 35017: 20234, - 35018: 20301, - 35019: 20381, - 35020: 20553, - 35021: 22258, - 35022: 22839, - 35023: 22996, - 35024: 23041, - 35025: 23561, - 35026: 24799, - 35027: 24847, - 35028: 24944, - 35029: 26131, - 35030: 26885, - 35031: 28858, - 35032: 30031, - 35033: 30064, - 35034: 31227, - 35035: 32173, - 35036: 32239, - 35037: 32963, - 35038: 33806, - 35039: 34915, - 35040: 35586, - 35041: 36949, - 35042: 36986, - 35043: 21307, - 35044: 20117, - 35045: 20133, - 35046: 22495, - 35047: 32946, - 35048: 37057, - 35049: 30959, - 35050: 19968, - 35051: 22769, - 35052: 28322, - 35053: 36920, - 35054: 31282, - 35055: 33576, - 35056: 33419, - 35057: 39983, - 35058: 20801, - 35059: 21360, - 35060: 21693, - 35061: 21729, - 35062: 22240, - 35063: 23035, - 35064: 24341, - 35065: 39154, - 35066: 28139, - 35067: 32996, - 35068: 34093, - 35136: 38498, - 35137: 38512, - 35138: 38560, - 35139: 38907, - 35140: 21515, - 35141: 21491, - 35142: 23431, - 35143: 28879, - 35144: 32701, - 35145: 36802, - 35146: 38632, - 35147: 21359, - 35148: 40284, - 35149: 31418, - 35150: 19985, - 35151: 30867, - 35152: 33276, - 35153: 28198, - 35154: 22040, - 35155: 21764, - 35156: 27421, - 35157: 34074, - 35158: 39995, - 35159: 23013, - 35160: 21417, - 35161: 28006, - 35162: 29916, - 35163: 38287, - 35164: 22082, - 35165: 20113, - 35166: 36939, - 35167: 38642, - 35168: 33615, - 35169: 39180, - 35170: 21473, - 35171: 21942, - 35172: 23344, - 35173: 24433, - 35174: 26144, - 35175: 26355, - 35176: 26628, - 35177: 27704, - 35178: 27891, - 35179: 27945, - 35180: 29787, - 35181: 30408, - 35182: 31310, - 35183: 38964, - 35184: 33521, - 35185: 34907, - 35186: 35424, - 35187: 37613, - 35188: 28082, - 35189: 30123, - 35190: 30410, - 35191: 39365, - 35192: 24742, - 35193: 35585, - 35194: 36234, - 35195: 38322, - 35196: 27022, - 35197: 21421, - 35198: 20870, - 35200: 22290, - 35201: 22576, - 35202: 22852, - 35203: 23476, - 35204: 24310, - 35205: 24616, - 35206: 25513, - 35207: 25588, - 35208: 27839, - 35209: 28436, - 35210: 28814, - 35211: 28948, - 35212: 29017, - 35213: 29141, - 35214: 29503, - 35215: 32257, - 35216: 33398, - 35217: 33489, - 35218: 34199, - 35219: 36960, - 35220: 37467, - 35221: 40219, - 35222: 22633, - 35223: 26044, - 35224: 27738, - 35225: 29989, - 35226: 20985, - 35227: 22830, - 35228: 22885, - 35229: 24448, - 35230: 24540, - 35231: 25276, - 35232: 26106, - 35233: 27178, - 35234: 27431, - 35235: 27572, - 35236: 29579, - 35237: 32705, - 35238: 35158, - 35239: 40236, - 35240: 40206, - 35241: 40644, - 35242: 23713, - 35243: 27798, - 35244: 33659, - 35245: 20740, - 35246: 23627, - 35247: 25014, - 35248: 33222, - 35249: 26742, - 35250: 29281, - 35251: 20057, - 35252: 20474, - 35253: 21368, - 35254: 24681, - 35255: 28201, - 35256: 31311, - 35257: 38899, - 35258: 19979, - 35259: 21270, - 35260: 20206, - 35261: 20309, - 35262: 20285, - 35263: 20385, - 35264: 20339, - 35265: 21152, - 35266: 21487, - 35267: 22025, - 35268: 22799, - 35269: 23233, - 35270: 23478, - 35271: 23521, - 35272: 31185, - 35273: 26247, - 35274: 26524, - 35275: 26550, - 35276: 27468, - 35277: 27827, - 35278: 28779, - 35279: 29634, - 35280: 31117, - 35281: 31166, - 35282: 31292, - 35283: 31623, - 35284: 33457, - 35285: 33499, - 35286: 33540, - 35287: 33655, - 35288: 33775, - 35289: 33747, - 35290: 34662, - 35291: 35506, - 35292: 22057, - 35293: 36008, - 35294: 36838, - 35295: 36942, - 35296: 38686, - 35297: 34442, - 35298: 20420, - 35299: 23784, - 35300: 25105, - 35301: 29273, - 35302: 30011, - 35303: 33253, - 35304: 33469, - 35305: 34558, - 35306: 36032, - 35307: 38597, - 35308: 39187, - 35309: 39381, - 35310: 20171, - 35311: 20250, - 35312: 35299, - 35313: 22238, - 35314: 22602, - 35315: 22730, - 35316: 24315, - 35317: 24555, - 35318: 24618, - 35319: 24724, - 35320: 24674, - 35321: 25040, - 35322: 25106, - 35323: 25296, - 35324: 25913, - 35392: 39745, - 35393: 26214, - 35394: 26800, - 35395: 28023, - 35396: 28784, - 35397: 30028, - 35398: 30342, - 35399: 32117, - 35400: 33445, - 35401: 34809, - 35402: 38283, - 35403: 38542, - 35404: 35997, - 35405: 20977, - 35406: 21182, - 35407: 22806, - 35408: 21683, - 35409: 23475, - 35410: 23830, - 35411: 24936, - 35412: 27010, - 35413: 28079, - 35414: 30861, - 35415: 33995, - 35416: 34903, - 35417: 35442, - 35418: 37799, - 35419: 39608, - 35420: 28012, - 35421: 39336, - 35422: 34521, - 35423: 22435, - 35424: 26623, - 35425: 34510, - 35426: 37390, - 35427: 21123, - 35428: 22151, - 35429: 21508, - 35430: 24275, - 35431: 25313, - 35432: 25785, - 35433: 26684, - 35434: 26680, - 35435: 27579, - 35436: 29554, - 35437: 30906, - 35438: 31339, - 35439: 35226, - 35440: 35282, - 35441: 36203, - 35442: 36611, - 35443: 37101, - 35444: 38307, - 35445: 38548, - 35446: 38761, - 35447: 23398, - 35448: 23731, - 35449: 27005, - 35450: 38989, - 35451: 38990, - 35452: 25499, - 35453: 31520, - 35454: 27179, - 35456: 27263, - 35457: 26806, - 35458: 39949, - 35459: 28511, - 35460: 21106, - 35461: 21917, - 35462: 24688, - 35463: 25324, - 35464: 27963, - 35465: 28167, - 35466: 28369, - 35467: 33883, - 35468: 35088, - 35469: 36676, - 35470: 19988, - 35471: 39993, - 35472: 21494, - 35473: 26907, - 35474: 27194, - 35475: 38788, - 35476: 26666, - 35477: 20828, - 35478: 31427, - 35479: 33970, - 35480: 37340, - 35481: 37772, - 35482: 22107, - 35483: 40232, - 35484: 26658, - 35485: 33541, - 35486: 33841, - 35487: 31909, - 35488: 21e3, - 35489: 33477, - 35490: 29926, - 35491: 20094, - 35492: 20355, - 35493: 20896, - 35494: 23506, - 35495: 21002, - 35496: 21208, - 35497: 21223, - 35498: 24059, - 35499: 21914, - 35500: 22570, - 35501: 23014, - 35502: 23436, - 35503: 23448, - 35504: 23515, - 35505: 24178, - 35506: 24185, - 35507: 24739, - 35508: 24863, - 35509: 24931, - 35510: 25022, - 35511: 25563, - 35512: 25954, - 35513: 26577, - 35514: 26707, - 35515: 26874, - 35516: 27454, - 35517: 27475, - 35518: 27735, - 35519: 28450, - 35520: 28567, - 35521: 28485, - 35522: 29872, - 35523: 29976, - 35524: 30435, - 35525: 30475, - 35526: 31487, - 35527: 31649, - 35528: 31777, - 35529: 32233, - 35530: 32566, - 35531: 32752, - 35532: 32925, - 35533: 33382, - 35534: 33694, - 35535: 35251, - 35536: 35532, - 35537: 36011, - 35538: 36996, - 35539: 37969, - 35540: 38291, - 35541: 38289, - 35542: 38306, - 35543: 38501, - 35544: 38867, - 35545: 39208, - 35546: 33304, - 35547: 20024, - 35548: 21547, - 35549: 23736, - 35550: 24012, - 35551: 29609, - 35552: 30284, - 35553: 30524, - 35554: 23721, - 35555: 32747, - 35556: 36107, - 35557: 38593, - 35558: 38929, - 35559: 38996, - 35560: 39e3, - 35561: 20225, - 35562: 20238, - 35563: 21361, - 35564: 21916, - 35565: 22120, - 35566: 22522, - 35567: 22855, - 35568: 23305, - 35569: 23492, - 35570: 23696, - 35571: 24076, - 35572: 24190, - 35573: 24524, - 35574: 25582, - 35575: 26426, - 35576: 26071, - 35577: 26082, - 35578: 26399, - 35579: 26827, - 35580: 26820, - 35648: 27231, - 35649: 24112, - 35650: 27589, - 35651: 27671, - 35652: 27773, - 35653: 30079, - 35654: 31048, - 35655: 23395, - 35656: 31232, - 35657: 32e3, - 35658: 24509, - 35659: 35215, - 35660: 35352, - 35661: 36020, - 35662: 36215, - 35663: 36556, - 35664: 36637, - 35665: 39138, - 35666: 39438, - 35667: 39740, - 35668: 20096, - 35669: 20605, - 35670: 20736, - 35671: 22931, - 35672: 23452, - 35673: 25135, - 35674: 25216, - 35675: 25836, - 35676: 27450, - 35677: 29344, - 35678: 30097, - 35679: 31047, - 35680: 32681, - 35681: 34811, - 35682: 35516, - 35683: 35696, - 35684: 25516, - 35685: 33738, - 35686: 38816, - 35687: 21513, - 35688: 21507, - 35689: 21931, - 35690: 26708, - 35691: 27224, - 35692: 35440, - 35693: 30759, - 35694: 26485, - 35695: 40653, - 35696: 21364, - 35697: 23458, - 35698: 33050, - 35699: 34384, - 35700: 36870, - 35701: 19992, - 35702: 20037, - 35703: 20167, - 35704: 20241, - 35705: 21450, - 35706: 21560, - 35707: 23470, - 35708: 24339, - 35709: 24613, - 35710: 25937, - 35712: 26429, - 35713: 27714, - 35714: 27762, - 35715: 27875, - 35716: 28792, - 35717: 29699, - 35718: 31350, - 35719: 31406, - 35720: 31496, - 35721: 32026, - 35722: 31998, - 35723: 32102, - 35724: 26087, - 35725: 29275, - 35726: 21435, - 35727: 23621, - 35728: 24040, - 35729: 25298, - 35730: 25312, - 35731: 25369, - 35732: 28192, - 35733: 34394, - 35734: 35377, - 35735: 36317, - 35736: 37624, - 35737: 28417, - 35738: 31142, - 35739: 39770, - 35740: 20136, - 35741: 20139, - 35742: 20140, - 35743: 20379, - 35744: 20384, - 35745: 20689, - 35746: 20807, - 35747: 31478, - 35748: 20849, - 35749: 20982, - 35750: 21332, - 35751: 21281, - 35752: 21375, - 35753: 21483, - 35754: 21932, - 35755: 22659, - 35756: 23777, - 35757: 24375, - 35758: 24394, - 35759: 24623, - 35760: 24656, - 35761: 24685, - 35762: 25375, - 35763: 25945, - 35764: 27211, - 35765: 27841, - 35766: 29378, - 35767: 29421, - 35768: 30703, - 35769: 33016, - 35770: 33029, - 35771: 33288, - 35772: 34126, - 35773: 37111, - 35774: 37857, - 35775: 38911, - 35776: 39255, - 35777: 39514, - 35778: 20208, - 35779: 20957, - 35780: 23597, - 35781: 26241, - 35782: 26989, - 35783: 23616, - 35784: 26354, - 35785: 26997, - 35786: 29577, - 35787: 26704, - 35788: 31873, - 35789: 20677, - 35790: 21220, - 35791: 22343, - 35792: 24062, - 35793: 37670, - 35794: 26020, - 35795: 27427, - 35796: 27453, - 35797: 29748, - 35798: 31105, - 35799: 31165, - 35800: 31563, - 35801: 32202, - 35802: 33465, - 35803: 33740, - 35804: 34943, - 35805: 35167, - 35806: 35641, - 35807: 36817, - 35808: 37329, - 35809: 21535, - 35810: 37504, - 35811: 20061, - 35812: 20534, - 35813: 21477, - 35814: 21306, - 35815: 29399, - 35816: 29590, - 35817: 30697, - 35818: 33510, - 35819: 36527, - 35820: 39366, - 35821: 39368, - 35822: 39378, - 35823: 20855, - 35824: 24858, - 35825: 34398, - 35826: 21936, - 35827: 31354, - 35828: 20598, - 35829: 23507, - 35830: 36935, - 35831: 38533, - 35832: 20018, - 35833: 27355, - 35834: 37351, - 35835: 23633, - 35836: 23624, - 35904: 25496, - 35905: 31391, - 35906: 27795, - 35907: 38772, - 35908: 36705, - 35909: 31402, - 35910: 29066, - 35911: 38536, - 35912: 31874, - 35913: 26647, - 35914: 32368, - 35915: 26705, - 35916: 37740, - 35917: 21234, - 35918: 21531, - 35919: 34219, - 35920: 35347, - 35921: 32676, - 35922: 36557, - 35923: 37089, - 35924: 21350, - 35925: 34952, - 35926: 31041, - 35927: 20418, - 35928: 20670, - 35929: 21009, - 35930: 20804, - 35931: 21843, - 35932: 22317, - 35933: 29674, - 35934: 22411, - 35935: 22865, - 35936: 24418, - 35937: 24452, - 35938: 24693, - 35939: 24950, - 35940: 24935, - 35941: 25001, - 35942: 25522, - 35943: 25658, - 35944: 25964, - 35945: 26223, - 35946: 26690, - 35947: 28179, - 35948: 30054, - 35949: 31293, - 35950: 31995, - 35951: 32076, - 35952: 32153, - 35953: 32331, - 35954: 32619, - 35955: 33550, - 35956: 33610, - 35957: 34509, - 35958: 35336, - 35959: 35427, - 35960: 35686, - 35961: 36605, - 35962: 38938, - 35963: 40335, - 35964: 33464, - 35965: 36814, - 35966: 39912, - 35968: 21127, - 35969: 25119, - 35970: 25731, - 35971: 28608, - 35972: 38553, - 35973: 26689, - 35974: 20625, - 35975: 27424, - 35976: 27770, - 35977: 28500, - 35978: 31348, - 35979: 32080, - 35980: 34880, - 35981: 35363, - 35982: 26376, - 35983: 20214, - 35984: 20537, - 35985: 20518, - 35986: 20581, - 35987: 20860, - 35988: 21048, - 35989: 21091, - 35990: 21927, - 35991: 22287, - 35992: 22533, - 35993: 23244, - 35994: 24314, - 35995: 25010, - 35996: 25080, - 35997: 25331, - 35998: 25458, - 35999: 26908, - 36e3: 27177, - 36001: 29309, - 36002: 29356, - 36003: 29486, - 36004: 30740, - 36005: 30831, - 36006: 32121, - 36007: 30476, - 36008: 32937, - 36009: 35211, - 36010: 35609, - 36011: 36066, - 36012: 36562, - 36013: 36963, - 36014: 37749, - 36015: 38522, - 36016: 38997, - 36017: 39443, - 36018: 40568, - 36019: 20803, - 36020: 21407, - 36021: 21427, - 36022: 24187, - 36023: 24358, - 36024: 28187, - 36025: 28304, - 36026: 29572, - 36027: 29694, - 36028: 32067, - 36029: 33335, - 36030: 35328, - 36031: 35578, - 36032: 38480, - 36033: 20046, - 36034: 20491, - 36035: 21476, - 36036: 21628, - 36037: 22266, - 36038: 22993, - 36039: 23396, - 36040: 24049, - 36041: 24235, - 36042: 24359, - 36043: 25144, - 36044: 25925, - 36045: 26543, - 36046: 28246, - 36047: 29392, - 36048: 31946, - 36049: 34996, - 36050: 32929, - 36051: 32993, - 36052: 33776, - 36053: 34382, - 36054: 35463, - 36055: 36328, - 36056: 37431, - 36057: 38599, - 36058: 39015, - 36059: 40723, - 36060: 20116, - 36061: 20114, - 36062: 20237, - 36063: 21320, - 36064: 21577, - 36065: 21566, - 36066: 23087, - 36067: 24460, - 36068: 24481, - 36069: 24735, - 36070: 26791, - 36071: 27278, - 36072: 29786, - 36073: 30849, - 36074: 35486, - 36075: 35492, - 36076: 35703, - 36077: 37264, - 36078: 20062, - 36079: 39881, - 36080: 20132, - 36081: 20348, - 36082: 20399, - 36083: 20505, - 36084: 20502, - 36085: 20809, - 36086: 20844, - 36087: 21151, - 36088: 21177, - 36089: 21246, - 36090: 21402, - 36091: 21475, - 36092: 21521, - 36160: 21518, - 36161: 21897, - 36162: 22353, - 36163: 22434, - 36164: 22909, - 36165: 23380, - 36166: 23389, - 36167: 23439, - 36168: 24037, - 36169: 24039, - 36170: 24055, - 36171: 24184, - 36172: 24195, - 36173: 24218, - 36174: 24247, - 36175: 24344, - 36176: 24658, - 36177: 24908, - 36178: 25239, - 36179: 25304, - 36180: 25511, - 36181: 25915, - 36182: 26114, - 36183: 26179, - 36184: 26356, - 36185: 26477, - 36186: 26657, - 36187: 26775, - 36188: 27083, - 36189: 27743, - 36190: 27946, - 36191: 28009, - 36192: 28207, - 36193: 28317, - 36194: 30002, - 36195: 30343, - 36196: 30828, - 36197: 31295, - 36198: 31968, - 36199: 32005, - 36200: 32024, - 36201: 32094, - 36202: 32177, - 36203: 32789, - 36204: 32771, - 36205: 32943, - 36206: 32945, - 36207: 33108, - 36208: 33167, - 36209: 33322, - 36210: 33618, - 36211: 34892, - 36212: 34913, - 36213: 35611, - 36214: 36002, - 36215: 36092, - 36216: 37066, - 36217: 37237, - 36218: 37489, - 36219: 30783, - 36220: 37628, - 36221: 38308, - 36222: 38477, - 36224: 38917, - 36225: 39321, - 36226: 39640, - 36227: 40251, - 36228: 21083, - 36229: 21163, - 36230: 21495, - 36231: 21512, - 36232: 22741, - 36233: 25335, - 36234: 28640, - 36235: 35946, - 36236: 36703, - 36237: 40633, - 36238: 20811, - 36239: 21051, - 36240: 21578, - 36241: 22269, - 36242: 31296, - 36243: 37239, - 36244: 40288, - 36245: 40658, - 36246: 29508, - 36247: 28425, - 36248: 33136, - 36249: 29969, - 36250: 24573, - 36251: 24794, - 36252: 39592, - 36253: 29403, - 36254: 36796, - 36255: 27492, - 36256: 38915, - 36257: 20170, - 36258: 22256, - 36259: 22372, - 36260: 22718, - 36261: 23130, - 36262: 24680, - 36263: 25031, - 36264: 26127, - 36265: 26118, - 36266: 26681, - 36267: 26801, - 36268: 28151, - 36269: 30165, - 36270: 32058, - 36271: 33390, - 36272: 39746, - 36273: 20123, - 36274: 20304, - 36275: 21449, - 36276: 21766, - 36277: 23919, - 36278: 24038, - 36279: 24046, - 36280: 26619, - 36281: 27801, - 36282: 29811, - 36283: 30722, - 36284: 35408, - 36285: 37782, - 36286: 35039, - 36287: 22352, - 36288: 24231, - 36289: 25387, - 36290: 20661, - 36291: 20652, - 36292: 20877, - 36293: 26368, - 36294: 21705, - 36295: 22622, - 36296: 22971, - 36297: 23472, - 36298: 24425, - 36299: 25165, - 36300: 25505, - 36301: 26685, - 36302: 27507, - 36303: 28168, - 36304: 28797, - 36305: 37319, - 36306: 29312, - 36307: 30741, - 36308: 30758, - 36309: 31085, - 36310: 25998, - 36311: 32048, - 36312: 33756, - 36313: 35009, - 36314: 36617, - 36315: 38555, - 36316: 21092, - 36317: 22312, - 36318: 26448, - 36319: 32618, - 36320: 36001, - 36321: 20916, - 36322: 22338, - 36323: 38442, - 36324: 22586, - 36325: 27018, - 36326: 32948, - 36327: 21682, - 36328: 23822, - 36329: 22524, - 36330: 30869, - 36331: 40442, - 36332: 20316, - 36333: 21066, - 36334: 21643, - 36335: 25662, - 36336: 26152, - 36337: 26388, - 36338: 26613, - 36339: 31364, - 36340: 31574, - 36341: 32034, - 36342: 37679, - 36343: 26716, - 36344: 39853, - 36345: 31545, - 36346: 21273, - 36347: 20874, - 36348: 21047, - 36416: 23519, - 36417: 25334, - 36418: 25774, - 36419: 25830, - 36420: 26413, - 36421: 27578, - 36422: 34217, - 36423: 38609, - 36424: 30352, - 36425: 39894, - 36426: 25420, - 36427: 37638, - 36428: 39851, - 36429: 30399, - 36430: 26194, - 36431: 19977, - 36432: 20632, - 36433: 21442, - 36434: 23665, - 36435: 24808, - 36436: 25746, - 36437: 25955, - 36438: 26719, - 36439: 29158, - 36440: 29642, - 36441: 29987, - 36442: 31639, - 36443: 32386, - 36444: 34453, - 36445: 35715, - 36446: 36059, - 36447: 37240, - 36448: 39184, - 36449: 26028, - 36450: 26283, - 36451: 27531, - 36452: 20181, - 36453: 20180, - 36454: 20282, - 36455: 20351, - 36456: 21050, - 36457: 21496, - 36458: 21490, - 36459: 21987, - 36460: 22235, - 36461: 22763, - 36462: 22987, - 36463: 22985, - 36464: 23039, - 36465: 23376, - 36466: 23629, - 36467: 24066, - 36468: 24107, - 36469: 24535, - 36470: 24605, - 36471: 25351, - 36472: 25903, - 36473: 23388, - 36474: 26031, - 36475: 26045, - 36476: 26088, - 36477: 26525, - 36478: 27490, - 36480: 27515, - 36481: 27663, - 36482: 29509, - 36483: 31049, - 36484: 31169, - 36485: 31992, - 36486: 32025, - 36487: 32043, - 36488: 32930, - 36489: 33026, - 36490: 33267, - 36491: 35222, - 36492: 35422, - 36493: 35433, - 36494: 35430, - 36495: 35468, - 36496: 35566, - 36497: 36039, - 36498: 36060, - 36499: 38604, - 36500: 39164, - 36501: 27503, - 36502: 20107, - 36503: 20284, - 36504: 20365, - 36505: 20816, - 36506: 23383, - 36507: 23546, - 36508: 24904, - 36509: 25345, - 36510: 26178, - 36511: 27425, - 36512: 28363, - 36513: 27835, - 36514: 29246, - 36515: 29885, - 36516: 30164, - 36517: 30913, - 36518: 31034, - 36519: 32780, - 36520: 32819, - 36521: 33258, - 36522: 33940, - 36523: 36766, - 36524: 27728, - 36525: 40575, - 36526: 24335, - 36527: 35672, - 36528: 40235, - 36529: 31482, - 36530: 36600, - 36531: 23437, - 36532: 38635, - 36533: 19971, - 36534: 21489, - 36535: 22519, - 36536: 22833, - 36537: 23241, - 36538: 23460, - 36539: 24713, - 36540: 28287, - 36541: 28422, - 36542: 30142, - 36543: 36074, - 36544: 23455, - 36545: 34048, - 36546: 31712, - 36547: 20594, - 36548: 26612, - 36549: 33437, - 36550: 23649, - 36551: 34122, - 36552: 32286, - 36553: 33294, - 36554: 20889, - 36555: 23556, - 36556: 25448, - 36557: 36198, - 36558: 26012, - 36559: 29038, - 36560: 31038, - 36561: 32023, - 36562: 32773, - 36563: 35613, - 36564: 36554, - 36565: 36974, - 36566: 34503, - 36567: 37034, - 36568: 20511, - 36569: 21242, - 36570: 23610, - 36571: 26451, - 36572: 28796, - 36573: 29237, - 36574: 37196, - 36575: 37320, - 36576: 37675, - 36577: 33509, - 36578: 23490, - 36579: 24369, - 36580: 24825, - 36581: 20027, - 36582: 21462, - 36583: 23432, - 36584: 25163, - 36585: 26417, - 36586: 27530, - 36587: 29417, - 36588: 29664, - 36589: 31278, - 36590: 33131, - 36591: 36259, - 36592: 37202, - 36593: 39318, - 36594: 20754, - 36595: 21463, - 36596: 21610, - 36597: 23551, - 36598: 25480, - 36599: 27193, - 36600: 32172, - 36601: 38656, - 36602: 22234, - 36603: 21454, - 36604: 21608, - 36672: 23447, - 36673: 23601, - 36674: 24030, - 36675: 20462, - 36676: 24833, - 36677: 25342, - 36678: 27954, - 36679: 31168, - 36680: 31179, - 36681: 32066, - 36682: 32333, - 36683: 32722, - 36684: 33261, - 36685: 33311, - 36686: 33936, - 36687: 34886, - 36688: 35186, - 36689: 35728, - 36690: 36468, - 36691: 36655, - 36692: 36913, - 36693: 37195, - 36694: 37228, - 36695: 38598, - 36696: 37276, - 36697: 20160, - 36698: 20303, - 36699: 20805, - 36700: 21313, - 36701: 24467, - 36702: 25102, - 36703: 26580, - 36704: 27713, - 36705: 28171, - 36706: 29539, - 36707: 32294, - 36708: 37325, - 36709: 37507, - 36710: 21460, - 36711: 22809, - 36712: 23487, - 36713: 28113, - 36714: 31069, - 36715: 32302, - 36716: 31899, - 36717: 22654, - 36718: 29087, - 36719: 20986, - 36720: 34899, - 36721: 36848, - 36722: 20426, - 36723: 23803, - 36724: 26149, - 36725: 30636, - 36726: 31459, - 36727: 33308, - 36728: 39423, - 36729: 20934, - 36730: 24490, - 36731: 26092, - 36732: 26991, - 36733: 27529, - 36734: 28147, - 36736: 28310, - 36737: 28516, - 36738: 30462, - 36739: 32020, - 36740: 24033, - 36741: 36981, - 36742: 37255, - 36743: 38918, - 36744: 20966, - 36745: 21021, - 36746: 25152, - 36747: 26257, - 36748: 26329, - 36749: 28186, - 36750: 24246, - 36751: 32210, - 36752: 32626, - 36753: 26360, - 36754: 34223, - 36755: 34295, - 36756: 35576, - 36757: 21161, - 36758: 21465, - 36759: 22899, - 36760: 24207, - 36761: 24464, - 36762: 24661, - 36763: 37604, - 36764: 38500, - 36765: 20663, - 36766: 20767, - 36767: 21213, - 36768: 21280, - 36769: 21319, - 36770: 21484, - 36771: 21736, - 36772: 21830, - 36773: 21809, - 36774: 22039, - 36775: 22888, - 36776: 22974, - 36777: 23100, - 36778: 23477, - 36779: 23558, - 36780: 23567, - 36781: 23569, - 36782: 23578, - 36783: 24196, - 36784: 24202, - 36785: 24288, - 36786: 24432, - 36787: 25215, - 36788: 25220, - 36789: 25307, - 36790: 25484, - 36791: 25463, - 36792: 26119, - 36793: 26124, - 36794: 26157, - 36795: 26230, - 36796: 26494, - 36797: 26786, - 36798: 27167, - 36799: 27189, - 36800: 27836, - 36801: 28040, - 36802: 28169, - 36803: 28248, - 36804: 28988, - 36805: 28966, - 36806: 29031, - 36807: 30151, - 36808: 30465, - 36809: 30813, - 36810: 30977, - 36811: 31077, - 36812: 31216, - 36813: 31456, - 36814: 31505, - 36815: 31911, - 36816: 32057, - 36817: 32918, - 36818: 33750, - 36819: 33931, - 36820: 34121, - 36821: 34909, - 36822: 35059, - 36823: 35359, - 36824: 35388, - 36825: 35412, - 36826: 35443, - 36827: 35937, - 36828: 36062, - 36829: 37284, - 36830: 37478, - 36831: 37758, - 36832: 37912, - 36833: 38556, - 36834: 38808, - 36835: 19978, - 36836: 19976, - 36837: 19998, - 36838: 20055, - 36839: 20887, - 36840: 21104, - 36841: 22478, - 36842: 22580, - 36843: 22732, - 36844: 23330, - 36845: 24120, - 36846: 24773, - 36847: 25854, - 36848: 26465, - 36849: 26454, - 36850: 27972, - 36851: 29366, - 36852: 30067, - 36853: 31331, - 36854: 33976, - 36855: 35698, - 36856: 37304, - 36857: 37664, - 36858: 22065, - 36859: 22516, - 36860: 39166, - 36928: 25325, - 36929: 26893, - 36930: 27542, - 36931: 29165, - 36932: 32340, - 36933: 32887, - 36934: 33394, - 36935: 35302, - 36936: 39135, - 36937: 34645, - 36938: 36785, - 36939: 23611, - 36940: 20280, - 36941: 20449, - 36942: 20405, - 36943: 21767, - 36944: 23072, - 36945: 23517, - 36946: 23529, - 36947: 24515, - 36948: 24910, - 36949: 25391, - 36950: 26032, - 36951: 26187, - 36952: 26862, - 36953: 27035, - 36954: 28024, - 36955: 28145, - 36956: 30003, - 36957: 30137, - 36958: 30495, - 36959: 31070, - 36960: 31206, - 36961: 32051, - 36962: 33251, - 36963: 33455, - 36964: 34218, - 36965: 35242, - 36966: 35386, - 36967: 36523, - 36968: 36763, - 36969: 36914, - 36970: 37341, - 36971: 38663, - 36972: 20154, - 36973: 20161, - 36974: 20995, - 36975: 22645, - 36976: 22764, - 36977: 23563, - 36978: 29978, - 36979: 23613, - 36980: 33102, - 36981: 35338, - 36982: 36805, - 36983: 38499, - 36984: 38765, - 36985: 31525, - 36986: 35535, - 36987: 38920, - 36988: 37218, - 36989: 22259, - 36990: 21416, - 36992: 36887, - 36993: 21561, - 36994: 22402, - 36995: 24101, - 36996: 25512, - 36997: 27700, - 36998: 28810, - 36999: 30561, - 37e3: 31883, - 37001: 32736, - 37002: 34928, - 37003: 36930, - 37004: 37204, - 37005: 37648, - 37006: 37656, - 37007: 38543, - 37008: 29790, - 37009: 39620, - 37010: 23815, - 37011: 23913, - 37012: 25968, - 37013: 26530, - 37014: 36264, - 37015: 38619, - 37016: 25454, - 37017: 26441, - 37018: 26905, - 37019: 33733, - 37020: 38935, - 37021: 38592, - 37022: 35070, - 37023: 28548, - 37024: 25722, - 37025: 23544, - 37026: 19990, - 37027: 28716, - 37028: 30045, - 37029: 26159, - 37030: 20932, - 37031: 21046, - 37032: 21218, - 37033: 22995, - 37034: 24449, - 37035: 24615, - 37036: 25104, - 37037: 25919, - 37038: 25972, - 37039: 26143, - 37040: 26228, - 37041: 26866, - 37042: 26646, - 37043: 27491, - 37044: 28165, - 37045: 29298, - 37046: 29983, - 37047: 30427, - 37048: 31934, - 37049: 32854, - 37050: 22768, - 37051: 35069, - 37052: 35199, - 37053: 35488, - 37054: 35475, - 37055: 35531, - 37056: 36893, - 37057: 37266, - 37058: 38738, - 37059: 38745, - 37060: 25993, - 37061: 31246, - 37062: 33030, - 37063: 38587, - 37064: 24109, - 37065: 24796, - 37066: 25114, - 37067: 26021, - 37068: 26132, - 37069: 26512, - 37070: 30707, - 37071: 31309, - 37072: 31821, - 37073: 32318, - 37074: 33034, - 37075: 36012, - 37076: 36196, - 37077: 36321, - 37078: 36447, - 37079: 30889, - 37080: 20999, - 37081: 25305, - 37082: 25509, - 37083: 25666, - 37084: 25240, - 37085: 35373, - 37086: 31363, - 37087: 31680, - 37088: 35500, - 37089: 38634, - 37090: 32118, - 37091: 33292, - 37092: 34633, - 37093: 20185, - 37094: 20808, - 37095: 21315, - 37096: 21344, - 37097: 23459, - 37098: 23554, - 37099: 23574, - 37100: 24029, - 37101: 25126, - 37102: 25159, - 37103: 25776, - 37104: 26643, - 37105: 26676, - 37106: 27849, - 37107: 27973, - 37108: 27927, - 37109: 26579, - 37110: 28508, - 37111: 29006, - 37112: 29053, - 37113: 26059, - 37114: 31359, - 37115: 31661, - 37116: 32218, - 37184: 32330, - 37185: 32680, - 37186: 33146, - 37187: 33307, - 37188: 33337, - 37189: 34214, - 37190: 35438, - 37191: 36046, - 37192: 36341, - 37193: 36984, - 37194: 36983, - 37195: 37549, - 37196: 37521, - 37197: 38275, - 37198: 39854, - 37199: 21069, - 37200: 21892, - 37201: 28472, - 37202: 28982, - 37203: 20840, - 37204: 31109, - 37205: 32341, - 37206: 33203, - 37207: 31950, - 37208: 22092, - 37209: 22609, - 37210: 23720, - 37211: 25514, - 37212: 26366, - 37213: 26365, - 37214: 26970, - 37215: 29401, - 37216: 30095, - 37217: 30094, - 37218: 30990, - 37219: 31062, - 37220: 31199, - 37221: 31895, - 37222: 32032, - 37223: 32068, - 37224: 34311, - 37225: 35380, - 37226: 38459, - 37227: 36961, - 37228: 40736, - 37229: 20711, - 37230: 21109, - 37231: 21452, - 37232: 21474, - 37233: 20489, - 37234: 21930, - 37235: 22766, - 37236: 22863, - 37237: 29245, - 37238: 23435, - 37239: 23652, - 37240: 21277, - 37241: 24803, - 37242: 24819, - 37243: 25436, - 37244: 25475, - 37245: 25407, - 37246: 25531, - 37248: 25805, - 37249: 26089, - 37250: 26361, - 37251: 24035, - 37252: 27085, - 37253: 27133, - 37254: 28437, - 37255: 29157, - 37256: 20105, - 37257: 30185, - 37258: 30456, - 37259: 31379, - 37260: 31967, - 37261: 32207, - 37262: 32156, - 37263: 32865, - 37264: 33609, - 37265: 33624, - 37266: 33900, - 37267: 33980, - 37268: 34299, - 37269: 35013, - 37270: 36208, - 37271: 36865, - 37272: 36973, - 37273: 37783, - 37274: 38684, - 37275: 39442, - 37276: 20687, - 37277: 22679, - 37278: 24974, - 37279: 33235, - 37280: 34101, - 37281: 36104, - 37282: 36896, - 37283: 20419, - 37284: 20596, - 37285: 21063, - 37286: 21363, - 37287: 24687, - 37288: 25417, - 37289: 26463, - 37290: 28204, - 37291: 36275, - 37292: 36895, - 37293: 20439, - 37294: 23646, - 37295: 36042, - 37296: 26063, - 37297: 32154, - 37298: 21330, - 37299: 34966, - 37300: 20854, - 37301: 25539, - 37302: 23384, - 37303: 23403, - 37304: 23562, - 37305: 25613, - 37306: 26449, - 37307: 36956, - 37308: 20182, - 37309: 22810, - 37310: 22826, - 37311: 27760, - 37312: 35409, - 37313: 21822, - 37314: 22549, - 37315: 22949, - 37316: 24816, - 37317: 25171, - 37318: 26561, - 37319: 33333, - 37320: 26965, - 37321: 38464, - 37322: 39364, - 37323: 39464, - 37324: 20307, - 37325: 22534, - 37326: 23550, - 37327: 32784, - 37328: 23729, - 37329: 24111, - 37330: 24453, - 37331: 24608, - 37332: 24907, - 37333: 25140, - 37334: 26367, - 37335: 27888, - 37336: 28382, - 37337: 32974, - 37338: 33151, - 37339: 33492, - 37340: 34955, - 37341: 36024, - 37342: 36864, - 37343: 36910, - 37344: 38538, - 37345: 40667, - 37346: 39899, - 37347: 20195, - 37348: 21488, - 37349: 22823, - 37350: 31532, - 37351: 37261, - 37352: 38988, - 37353: 40441, - 37354: 28381, - 37355: 28711, - 37356: 21331, - 37357: 21828, - 37358: 23429, - 37359: 25176, - 37360: 25246, - 37361: 25299, - 37362: 27810, - 37363: 28655, - 37364: 29730, - 37365: 35351, - 37366: 37944, - 37367: 28609, - 37368: 35582, - 37369: 33592, - 37370: 20967, - 37371: 34552, - 37372: 21482, - 37440: 21481, - 37441: 20294, - 37442: 36948, - 37443: 36784, - 37444: 22890, - 37445: 33073, - 37446: 24061, - 37447: 31466, - 37448: 36799, - 37449: 26842, - 37450: 35895, - 37451: 29432, - 37452: 40008, - 37453: 27197, - 37454: 35504, - 37455: 20025, - 37456: 21336, - 37457: 22022, - 37458: 22374, - 37459: 25285, - 37460: 25506, - 37461: 26086, - 37462: 27470, - 37463: 28129, - 37464: 28251, - 37465: 28845, - 37466: 30701, - 37467: 31471, - 37468: 31658, - 37469: 32187, - 37470: 32829, - 37471: 32966, - 37472: 34507, - 37473: 35477, - 37474: 37723, - 37475: 22243, - 37476: 22727, - 37477: 24382, - 37478: 26029, - 37479: 26262, - 37480: 27264, - 37481: 27573, - 37482: 30007, - 37483: 35527, - 37484: 20516, - 37485: 30693, - 37486: 22320, - 37487: 24347, - 37488: 24677, - 37489: 26234, - 37490: 27744, - 37491: 30196, - 37492: 31258, - 37493: 32622, - 37494: 33268, - 37495: 34584, - 37496: 36933, - 37497: 39347, - 37498: 31689, - 37499: 30044, - 37500: 31481, - 37501: 31569, - 37502: 33988, - 37504: 36880, - 37505: 31209, - 37506: 31378, - 37507: 33590, - 37508: 23265, - 37509: 30528, - 37510: 20013, - 37511: 20210, - 37512: 23449, - 37513: 24544, - 37514: 25277, - 37515: 26172, - 37516: 26609, - 37517: 27880, - 37518: 34411, - 37519: 34935, - 37520: 35387, - 37521: 37198, - 37522: 37619, - 37523: 39376, - 37524: 27159, - 37525: 28710, - 37526: 29482, - 37527: 33511, - 37528: 33879, - 37529: 36015, - 37530: 19969, - 37531: 20806, - 37532: 20939, - 37533: 21899, - 37534: 23541, - 37535: 24086, - 37536: 24115, - 37537: 24193, - 37538: 24340, - 37539: 24373, - 37540: 24427, - 37541: 24500, - 37542: 25074, - 37543: 25361, - 37544: 26274, - 37545: 26397, - 37546: 28526, - 37547: 29266, - 37548: 30010, - 37549: 30522, - 37550: 32884, - 37551: 33081, - 37552: 33144, - 37553: 34678, - 37554: 35519, - 37555: 35548, - 37556: 36229, - 37557: 36339, - 37558: 37530, - 37559: 38263, - 37560: 38914, - 37561: 40165, - 37562: 21189, - 37563: 25431, - 37564: 30452, - 37565: 26389, - 37566: 27784, - 37567: 29645, - 37568: 36035, - 37569: 37806, - 37570: 38515, - 37571: 27941, - 37572: 22684, - 37573: 26894, - 37574: 27084, - 37575: 36861, - 37576: 37786, - 37577: 30171, - 37578: 36890, - 37579: 22618, - 37580: 26626, - 37581: 25524, - 37582: 27131, - 37583: 20291, - 37584: 28460, - 37585: 26584, - 37586: 36795, - 37587: 34086, - 37588: 32180, - 37589: 37716, - 37590: 26943, - 37591: 28528, - 37592: 22378, - 37593: 22775, - 37594: 23340, - 37595: 32044, - 37596: 29226, - 37597: 21514, - 37598: 37347, - 37599: 40372, - 37600: 20141, - 37601: 20302, - 37602: 20572, - 37603: 20597, - 37604: 21059, - 37605: 35998, - 37606: 21576, - 37607: 22564, - 37608: 23450, - 37609: 24093, - 37610: 24213, - 37611: 24237, - 37612: 24311, - 37613: 24351, - 37614: 24716, - 37615: 25269, - 37616: 25402, - 37617: 25552, - 37618: 26799, - 37619: 27712, - 37620: 30855, - 37621: 31118, - 37622: 31243, - 37623: 32224, - 37624: 33351, - 37625: 35330, - 37626: 35558, - 37627: 36420, - 37628: 36883, - 37696: 37048, - 37697: 37165, - 37698: 37336, - 37699: 40718, - 37700: 27877, - 37701: 25688, - 37702: 25826, - 37703: 25973, - 37704: 28404, - 37705: 30340, - 37706: 31515, - 37707: 36969, - 37708: 37841, - 37709: 28346, - 37710: 21746, - 37711: 24505, - 37712: 25764, - 37713: 36685, - 37714: 36845, - 37715: 37444, - 37716: 20856, - 37717: 22635, - 37718: 22825, - 37719: 23637, - 37720: 24215, - 37721: 28155, - 37722: 32399, - 37723: 29980, - 37724: 36028, - 37725: 36578, - 37726: 39003, - 37727: 28857, - 37728: 20253, - 37729: 27583, - 37730: 28593, - 37731: 3e4, - 37732: 38651, - 37733: 20814, - 37734: 21520, - 37735: 22581, - 37736: 22615, - 37737: 22956, - 37738: 23648, - 37739: 24466, - 37740: 26007, - 37741: 26460, - 37742: 28193, - 37743: 30331, - 37744: 33759, - 37745: 36077, - 37746: 36884, - 37747: 37117, - 37748: 37709, - 37749: 30757, - 37750: 30778, - 37751: 21162, - 37752: 24230, - 37753: 22303, - 37754: 22900, - 37755: 24594, - 37756: 20498, - 37757: 20826, - 37758: 20908, - 37760: 20941, - 37761: 20992, - 37762: 21776, - 37763: 22612, - 37764: 22616, - 37765: 22871, - 37766: 23445, - 37767: 23798, - 37768: 23947, - 37769: 24764, - 37770: 25237, - 37771: 25645, - 37772: 26481, - 37773: 26691, - 37774: 26812, - 37775: 26847, - 37776: 30423, - 37777: 28120, - 37778: 28271, - 37779: 28059, - 37780: 28783, - 37781: 29128, - 37782: 24403, - 37783: 30168, - 37784: 31095, - 37785: 31561, - 37786: 31572, - 37787: 31570, - 37788: 31958, - 37789: 32113, - 37790: 21040, - 37791: 33891, - 37792: 34153, - 37793: 34276, - 37794: 35342, - 37795: 35588, - 37796: 35910, - 37797: 36367, - 37798: 36867, - 37799: 36879, - 37800: 37913, - 37801: 38518, - 37802: 38957, - 37803: 39472, - 37804: 38360, - 37805: 20685, - 37806: 21205, - 37807: 21516, - 37808: 22530, - 37809: 23566, - 37810: 24999, - 37811: 25758, - 37812: 27934, - 37813: 30643, - 37814: 31461, - 37815: 33012, - 37816: 33796, - 37817: 36947, - 37818: 37509, - 37819: 23776, - 37820: 40199, - 37821: 21311, - 37822: 24471, - 37823: 24499, - 37824: 28060, - 37825: 29305, - 37826: 30563, - 37827: 31167, - 37828: 31716, - 37829: 27602, - 37830: 29420, - 37831: 35501, - 37832: 26627, - 37833: 27233, - 37834: 20984, - 37835: 31361, - 37836: 26932, - 37837: 23626, - 37838: 40182, - 37839: 33515, - 37840: 23493, - 37841: 37193, - 37842: 28702, - 37843: 22136, - 37844: 23663, - 37845: 24775, - 37846: 25958, - 37847: 27788, - 37848: 35930, - 37849: 36929, - 37850: 38931, - 37851: 21585, - 37852: 26311, - 37853: 37389, - 37854: 22856, - 37855: 37027, - 37856: 20869, - 37857: 20045, - 37858: 20970, - 37859: 34201, - 37860: 35598, - 37861: 28760, - 37862: 25466, - 37863: 37707, - 37864: 26978, - 37865: 39348, - 37866: 32260, - 37867: 30071, - 37868: 21335, - 37869: 26976, - 37870: 36575, - 37871: 38627, - 37872: 27741, - 37873: 20108, - 37874: 23612, - 37875: 24336, - 37876: 36841, - 37877: 21250, - 37878: 36049, - 37879: 32905, - 37880: 34425, - 37881: 24319, - 37882: 26085, - 37883: 20083, - 37884: 20837, - 37952: 22914, - 37953: 23615, - 37954: 38894, - 37955: 20219, - 37956: 22922, - 37957: 24525, - 37958: 35469, - 37959: 28641, - 37960: 31152, - 37961: 31074, - 37962: 23527, - 37963: 33905, - 37964: 29483, - 37965: 29105, - 37966: 24180, - 37967: 24565, - 37968: 25467, - 37969: 25754, - 37970: 29123, - 37971: 31896, - 37972: 20035, - 37973: 24316, - 37974: 20043, - 37975: 22492, - 37976: 22178, - 37977: 24745, - 37978: 28611, - 37979: 32013, - 37980: 33021, - 37981: 33075, - 37982: 33215, - 37983: 36786, - 37984: 35223, - 37985: 34468, - 37986: 24052, - 37987: 25226, - 37988: 25773, - 37989: 35207, - 37990: 26487, - 37991: 27874, - 37992: 27966, - 37993: 29750, - 37994: 30772, - 37995: 23110, - 37996: 32629, - 37997: 33453, - 37998: 39340, - 37999: 20467, - 38e3: 24259, - 38001: 25309, - 38002: 25490, - 38003: 25943, - 38004: 26479, - 38005: 30403, - 38006: 29260, - 38007: 32972, - 38008: 32954, - 38009: 36649, - 38010: 37197, - 38011: 20493, - 38012: 22521, - 38013: 23186, - 38014: 26757, - 38016: 26995, - 38017: 29028, - 38018: 29437, - 38019: 36023, - 38020: 22770, - 38021: 36064, - 38022: 38506, - 38023: 36889, - 38024: 34687, - 38025: 31204, - 38026: 30695, - 38027: 33833, - 38028: 20271, - 38029: 21093, - 38030: 21338, - 38031: 25293, - 38032: 26575, - 38033: 27850, - 38034: 30333, - 38035: 31636, - 38036: 31893, - 38037: 33334, - 38038: 34180, - 38039: 36843, - 38040: 26333, - 38041: 28448, - 38042: 29190, - 38043: 32283, - 38044: 33707, - 38045: 39361, - 38046: 40614, - 38047: 20989, - 38048: 31665, - 38049: 30834, - 38050: 31672, - 38051: 32903, - 38052: 31560, - 38053: 27368, - 38054: 24161, - 38055: 32908, - 38056: 30033, - 38057: 30048, - 38058: 20843, - 38059: 37474, - 38060: 28300, - 38061: 30330, - 38062: 37271, - 38063: 39658, - 38064: 20240, - 38065: 32624, - 38066: 25244, - 38067: 31567, - 38068: 38309, - 38069: 40169, - 38070: 22138, - 38071: 22617, - 38072: 34532, - 38073: 38588, - 38074: 20276, - 38075: 21028, - 38076: 21322, - 38077: 21453, - 38078: 21467, - 38079: 24070, - 38080: 25644, - 38081: 26001, - 38082: 26495, - 38083: 27710, - 38084: 27726, - 38085: 29256, - 38086: 29359, - 38087: 29677, - 38088: 30036, - 38089: 32321, - 38090: 33324, - 38091: 34281, - 38092: 36009, - 38093: 31684, - 38094: 37318, - 38095: 29033, - 38096: 38930, - 38097: 39151, - 38098: 25405, - 38099: 26217, - 38100: 30058, - 38101: 30436, - 38102: 30928, - 38103: 34115, - 38104: 34542, - 38105: 21290, - 38106: 21329, - 38107: 21542, - 38108: 22915, - 38109: 24199, - 38110: 24444, - 38111: 24754, - 38112: 25161, - 38113: 25209, - 38114: 25259, - 38115: 26e3, - 38116: 27604, - 38117: 27852, - 38118: 30130, - 38119: 30382, - 38120: 30865, - 38121: 31192, - 38122: 32203, - 38123: 32631, - 38124: 32933, - 38125: 34987, - 38126: 35513, - 38127: 36027, - 38128: 36991, - 38129: 38750, - 38130: 39131, - 38131: 27147, - 38132: 31800, - 38133: 20633, - 38134: 23614, - 38135: 24494, - 38136: 26503, - 38137: 27608, - 38138: 29749, - 38139: 30473, - 38140: 32654, - 38208: 40763, - 38209: 26570, - 38210: 31255, - 38211: 21305, - 38212: 30091, - 38213: 39661, - 38214: 24422, - 38215: 33181, - 38216: 33777, - 38217: 32920, - 38218: 24380, - 38219: 24517, - 38220: 30050, - 38221: 31558, - 38222: 36924, - 38223: 26727, - 38224: 23019, - 38225: 23195, - 38226: 32016, - 38227: 30334, - 38228: 35628, - 38229: 20469, - 38230: 24426, - 38231: 27161, - 38232: 27703, - 38233: 28418, - 38234: 29922, - 38235: 31080, - 38236: 34920, - 38237: 35413, - 38238: 35961, - 38239: 24287, - 38240: 25551, - 38241: 30149, - 38242: 31186, - 38243: 33495, - 38244: 37672, - 38245: 37618, - 38246: 33948, - 38247: 34541, - 38248: 39981, - 38249: 21697, - 38250: 24428, - 38251: 25996, - 38252: 27996, - 38253: 28693, - 38254: 36007, - 38255: 36051, - 38256: 38971, - 38257: 25935, - 38258: 29942, - 38259: 19981, - 38260: 20184, - 38261: 22496, - 38262: 22827, - 38263: 23142, - 38264: 23500, - 38265: 20904, - 38266: 24067, - 38267: 24220, - 38268: 24598, - 38269: 25206, - 38270: 25975, - 38272: 26023, - 38273: 26222, - 38274: 28014, - 38275: 29238, - 38276: 31526, - 38277: 33104, - 38278: 33178, - 38279: 33433, - 38280: 35676, - 38281: 36e3, - 38282: 36070, - 38283: 36212, - 38284: 38428, - 38285: 38468, - 38286: 20398, - 38287: 25771, - 38288: 27494, - 38289: 33310, - 38290: 33889, - 38291: 34154, - 38292: 37096, - 38293: 23553, - 38294: 26963, - 38295: 39080, - 38296: 33914, - 38297: 34135, - 38298: 20239, - 38299: 21103, - 38300: 24489, - 38301: 24133, - 38302: 26381, - 38303: 31119, - 38304: 33145, - 38305: 35079, - 38306: 35206, - 38307: 28149, - 38308: 24343, - 38309: 25173, - 38310: 27832, - 38311: 20175, - 38312: 29289, - 38313: 39826, - 38314: 20998, - 38315: 21563, - 38316: 22132, - 38317: 22707, - 38318: 24996, - 38319: 25198, - 38320: 28954, - 38321: 22894, - 38322: 31881, - 38323: 31966, - 38324: 32027, - 38325: 38640, - 38326: 25991, - 38327: 32862, - 38328: 19993, - 38329: 20341, - 38330: 20853, - 38331: 22592, - 38332: 24163, - 38333: 24179, - 38334: 24330, - 38335: 26564, - 38336: 20006, - 38337: 34109, - 38338: 38281, - 38339: 38491, - 38340: 31859, - 38341: 38913, - 38342: 20731, - 38343: 22721, - 38344: 30294, - 38345: 30887, - 38346: 21029, - 38347: 30629, - 38348: 34065, - 38349: 31622, - 38350: 20559, - 38351: 22793, - 38352: 29255, - 38353: 31687, - 38354: 32232, - 38355: 36794, - 38356: 36820, - 38357: 36941, - 38358: 20415, - 38359: 21193, - 38360: 23081, - 38361: 24321, - 38362: 38829, - 38363: 20445, - 38364: 33303, - 38365: 37610, - 38366: 22275, - 38367: 25429, - 38368: 27497, - 38369: 29995, - 38370: 35036, - 38371: 36628, - 38372: 31298, - 38373: 21215, - 38374: 22675, - 38375: 24917, - 38376: 25098, - 38377: 26286, - 38378: 27597, - 38379: 31807, - 38380: 33769, - 38381: 20515, - 38382: 20472, - 38383: 21253, - 38384: 21574, - 38385: 22577, - 38386: 22857, - 38387: 23453, - 38388: 23792, - 38389: 23791, - 38390: 23849, - 38391: 24214, - 38392: 25265, - 38393: 25447, - 38394: 25918, - 38395: 26041, - 38396: 26379, - 38464: 27861, - 38465: 27873, - 38466: 28921, - 38467: 30770, - 38468: 32299, - 38469: 32990, - 38470: 33459, - 38471: 33804, - 38472: 34028, - 38473: 34562, - 38474: 35090, - 38475: 35370, - 38476: 35914, - 38477: 37030, - 38478: 37586, - 38479: 39165, - 38480: 40179, - 38481: 40300, - 38482: 20047, - 38483: 20129, - 38484: 20621, - 38485: 21078, - 38486: 22346, - 38487: 22952, - 38488: 24125, - 38489: 24536, - 38490: 24537, - 38491: 25151, - 38492: 26292, - 38493: 26395, - 38494: 26576, - 38495: 26834, - 38496: 20882, - 38497: 32033, - 38498: 32938, - 38499: 33192, - 38500: 35584, - 38501: 35980, - 38502: 36031, - 38503: 37502, - 38504: 38450, - 38505: 21536, - 38506: 38956, - 38507: 21271, - 38508: 20693, - 38509: 21340, - 38510: 22696, - 38511: 25778, - 38512: 26420, - 38513: 29287, - 38514: 30566, - 38515: 31302, - 38516: 37350, - 38517: 21187, - 38518: 27809, - 38519: 27526, - 38520: 22528, - 38521: 24140, - 38522: 22868, - 38523: 26412, - 38524: 32763, - 38525: 20961, - 38526: 30406, - 38528: 25705, - 38529: 30952, - 38530: 39764, - 38531: 40635, - 38532: 22475, - 38533: 22969, - 38534: 26151, - 38535: 26522, - 38536: 27598, - 38537: 21737, - 38538: 27097, - 38539: 24149, - 38540: 33180, - 38541: 26517, - 38542: 39850, - 38543: 26622, - 38544: 40018, - 38545: 26717, - 38546: 20134, - 38547: 20451, - 38548: 21448, - 38549: 25273, - 38550: 26411, - 38551: 27819, - 38552: 36804, - 38553: 20397, - 38554: 32365, - 38555: 40639, - 38556: 19975, - 38557: 24930, - 38558: 28288, - 38559: 28459, - 38560: 34067, - 38561: 21619, - 38562: 26410, - 38563: 39749, - 38564: 24051, - 38565: 31637, - 38566: 23724, - 38567: 23494, - 38568: 34588, - 38569: 28234, - 38570: 34001, - 38571: 31252, - 38572: 33032, - 38573: 22937, - 38574: 31885, - 38575: 27665, - 38576: 30496, - 38577: 21209, - 38578: 22818, - 38579: 28961, - 38580: 29279, - 38581: 30683, - 38582: 38695, - 38583: 40289, - 38584: 26891, - 38585: 23167, - 38586: 23064, - 38587: 20901, - 38588: 21517, - 38589: 21629, - 38590: 26126, - 38591: 30431, - 38592: 36855, - 38593: 37528, - 38594: 40180, - 38595: 23018, - 38596: 29277, - 38597: 28357, - 38598: 20813, - 38599: 26825, - 38600: 32191, - 38601: 32236, - 38602: 38754, - 38603: 40634, - 38604: 25720, - 38605: 27169, - 38606: 33538, - 38607: 22916, - 38608: 23391, - 38609: 27611, - 38610: 29467, - 38611: 30450, - 38612: 32178, - 38613: 32791, - 38614: 33945, - 38615: 20786, - 38616: 26408, - 38617: 40665, - 38618: 30446, - 38619: 26466, - 38620: 21247, - 38621: 39173, - 38622: 23588, - 38623: 25147, - 38624: 31870, - 38625: 36016, - 38626: 21839, - 38627: 24758, - 38628: 32011, - 38629: 38272, - 38630: 21249, - 38631: 20063, - 38632: 20918, - 38633: 22812, - 38634: 29242, - 38635: 32822, - 38636: 37326, - 38637: 24357, - 38638: 30690, - 38639: 21380, - 38640: 24441, - 38641: 32004, - 38642: 34220, - 38643: 35379, - 38644: 36493, - 38645: 38742, - 38646: 26611, - 38647: 34222, - 38648: 37971, - 38649: 24841, - 38650: 24840, - 38651: 27833, - 38652: 30290, - 38720: 35565, - 38721: 36664, - 38722: 21807, - 38723: 20305, - 38724: 20778, - 38725: 21191, - 38726: 21451, - 38727: 23461, - 38728: 24189, - 38729: 24736, - 38730: 24962, - 38731: 25558, - 38732: 26377, - 38733: 26586, - 38734: 28263, - 38735: 28044, - 38736: 29494, - 38737: 29495, - 38738: 30001, - 38739: 31056, - 38740: 35029, - 38741: 35480, - 38742: 36938, - 38743: 37009, - 38744: 37109, - 38745: 38596, - 38746: 34701, - 38747: 22805, - 38748: 20104, - 38749: 20313, - 38750: 19982, - 38751: 35465, - 38752: 36671, - 38753: 38928, - 38754: 20653, - 38755: 24188, - 38756: 22934, - 38757: 23481, - 38758: 24248, - 38759: 25562, - 38760: 25594, - 38761: 25793, - 38762: 26332, - 38763: 26954, - 38764: 27096, - 38765: 27915, - 38766: 28342, - 38767: 29076, - 38768: 29992, - 38769: 31407, - 38770: 32650, - 38771: 32768, - 38772: 33865, - 38773: 33993, - 38774: 35201, - 38775: 35617, - 38776: 36362, - 38777: 36965, - 38778: 38525, - 38779: 39178, - 38780: 24958, - 38781: 25233, - 38782: 27442, - 38784: 27779, - 38785: 28020, - 38786: 32716, - 38787: 32764, - 38788: 28096, - 38789: 32645, - 38790: 34746, - 38791: 35064, - 38792: 26469, - 38793: 33713, - 38794: 38972, - 38795: 38647, - 38796: 27931, - 38797: 32097, - 38798: 33853, - 38799: 37226, - 38800: 20081, - 38801: 21365, - 38802: 23888, - 38803: 27396, - 38804: 28651, - 38805: 34253, - 38806: 34349, - 38807: 35239, - 38808: 21033, - 38809: 21519, - 38810: 23653, - 38811: 26446, - 38812: 26792, - 38813: 29702, - 38814: 29827, - 38815: 30178, - 38816: 35023, - 38817: 35041, - 38818: 37324, - 38819: 38626, - 38820: 38520, - 38821: 24459, - 38822: 29575, - 38823: 31435, - 38824: 33870, - 38825: 25504, - 38826: 30053, - 38827: 21129, - 38828: 27969, - 38829: 28316, - 38830: 29705, - 38831: 30041, - 38832: 30827, - 38833: 31890, - 38834: 38534, - 38835: 31452, - 38836: 40845, - 38837: 20406, - 38838: 24942, - 38839: 26053, - 38840: 34396, - 38841: 20102, - 38842: 20142, - 38843: 20698, - 38844: 20001, - 38845: 20940, - 38846: 23534, - 38847: 26009, - 38848: 26753, - 38849: 28092, - 38850: 29471, - 38851: 30274, - 38852: 30637, - 38853: 31260, - 38854: 31975, - 38855: 33391, - 38856: 35538, - 38857: 36988, - 38858: 37327, - 38859: 38517, - 38860: 38936, - 38861: 21147, - 38862: 32209, - 38863: 20523, - 38864: 21400, - 38865: 26519, - 38866: 28107, - 38867: 29136, - 38868: 29747, - 38869: 33256, - 38870: 36650, - 38871: 38563, - 38872: 40023, - 38873: 40607, - 38874: 29792, - 38875: 22593, - 38876: 28057, - 38877: 32047, - 38878: 39006, - 38879: 20196, - 38880: 20278, - 38881: 20363, - 38882: 20919, - 38883: 21169, - 38884: 23994, - 38885: 24604, - 38886: 29618, - 38887: 31036, - 38888: 33491, - 38889: 37428, - 38890: 38583, - 38891: 38646, - 38892: 38666, - 38893: 40599, - 38894: 40802, - 38895: 26278, - 38896: 27508, - 38897: 21015, - 38898: 21155, - 38899: 28872, - 38900: 35010, - 38901: 24265, - 38902: 24651, - 38903: 24976, - 38904: 28451, - 38905: 29001, - 38906: 31806, - 38907: 32244, - 38908: 32879, - 38976: 34030, - 38977: 36899, - 38978: 37676, - 38979: 21570, - 38980: 39791, - 38981: 27347, - 38982: 28809, - 38983: 36034, - 38984: 36335, - 38985: 38706, - 38986: 21172, - 38987: 23105, - 38988: 24266, - 38989: 24324, - 38990: 26391, - 38991: 27004, - 38992: 27028, - 38993: 28010, - 38994: 28431, - 38995: 29282, - 38996: 29436, - 38997: 31725, - 38998: 32769, - 38999: 32894, - 39e3: 34635, - 39001: 37070, - 39002: 20845, - 39003: 40595, - 39004: 31108, - 39005: 32907, - 39006: 37682, - 39007: 35542, - 39008: 20525, - 39009: 21644, - 39010: 35441, - 39011: 27498, - 39012: 36036, - 39013: 33031, - 39014: 24785, - 39015: 26528, - 39016: 40434, - 39017: 20121, - 39018: 20120, - 39019: 39952, - 39020: 35435, - 39021: 34241, - 39022: 34152, - 39023: 26880, - 39024: 28286, - 39025: 30871, - 39026: 33109, - 39071: 24332, - 39072: 19984, - 39073: 19989, - 39074: 20010, - 39075: 20017, - 39076: 20022, - 39077: 20028, - 39078: 20031, - 39079: 20034, - 39080: 20054, - 39081: 20056, - 39082: 20098, - 39083: 20101, - 39084: 35947, - 39085: 20106, - 39086: 33298, - 39087: 24333, - 39088: 20110, - 39089: 20126, - 39090: 20127, - 39091: 20128, - 39092: 20130, - 39093: 20144, - 39094: 20147, - 39095: 20150, - 39096: 20174, - 39097: 20173, - 39098: 20164, - 39099: 20166, - 39100: 20162, - 39101: 20183, - 39102: 20190, - 39103: 20205, - 39104: 20191, - 39105: 20215, - 39106: 20233, - 39107: 20314, - 39108: 20272, - 39109: 20315, - 39110: 20317, - 39111: 20311, - 39112: 20295, - 39113: 20342, - 39114: 20360, - 39115: 20367, - 39116: 20376, - 39117: 20347, - 39118: 20329, - 39119: 20336, - 39120: 20369, - 39121: 20335, - 39122: 20358, - 39123: 20374, - 39124: 20760, - 39125: 20436, - 39126: 20447, - 39127: 20430, - 39128: 20440, - 39129: 20443, - 39130: 20433, - 39131: 20442, - 39132: 20432, - 39133: 20452, - 39134: 20453, - 39135: 20506, - 39136: 20520, - 39137: 20500, - 39138: 20522, - 39139: 20517, - 39140: 20485, - 39141: 20252, - 39142: 20470, - 39143: 20513, - 39144: 20521, - 39145: 20524, - 39146: 20478, - 39147: 20463, - 39148: 20497, - 39149: 20486, - 39150: 20547, - 39151: 20551, - 39152: 26371, - 39153: 20565, - 39154: 20560, - 39155: 20552, - 39156: 20570, - 39157: 20566, - 39158: 20588, - 39159: 20600, - 39160: 20608, - 39161: 20634, - 39162: 20613, - 39163: 20660, - 39164: 20658, - 39232: 20681, - 39233: 20682, - 39234: 20659, - 39235: 20674, - 39236: 20694, - 39237: 20702, - 39238: 20709, - 39239: 20717, - 39240: 20707, - 39241: 20718, - 39242: 20729, - 39243: 20725, - 39244: 20745, - 39245: 20737, - 39246: 20738, - 39247: 20758, - 39248: 20757, - 39249: 20756, - 39250: 20762, - 39251: 20769, - 39252: 20794, - 39253: 20791, - 39254: 20796, - 39255: 20795, - 39256: 20799, - 39257: 20800, - 39258: 20818, - 39259: 20812, - 39260: 20820, - 39261: 20834, - 39262: 31480, - 39263: 20841, - 39264: 20842, - 39265: 20846, - 39266: 20864, - 39267: 20866, - 39268: 22232, - 39269: 20876, - 39270: 20873, - 39271: 20879, - 39272: 20881, - 39273: 20883, - 39274: 20885, - 39275: 20886, - 39276: 20900, - 39277: 20902, - 39278: 20898, - 39279: 20905, - 39280: 20906, - 39281: 20907, - 39282: 20915, - 39283: 20913, - 39284: 20914, - 39285: 20912, - 39286: 20917, - 39287: 20925, - 39288: 20933, - 39289: 20937, - 39290: 20955, - 39291: 20960, - 39292: 34389, - 39293: 20969, - 39294: 20973, - 39296: 20976, - 39297: 20981, - 39298: 20990, - 39299: 20996, - 39300: 21003, - 39301: 21012, - 39302: 21006, - 39303: 21031, - 39304: 21034, - 39305: 21038, - 39306: 21043, - 39307: 21049, - 39308: 21071, - 39309: 21060, - 39310: 21067, - 39311: 21068, - 39312: 21086, - 39313: 21076, - 39314: 21098, - 39315: 21108, - 39316: 21097, - 39317: 21107, - 39318: 21119, - 39319: 21117, - 39320: 21133, - 39321: 21140, - 39322: 21138, - 39323: 21105, - 39324: 21128, - 39325: 21137, - 39326: 36776, - 39327: 36775, - 39328: 21164, - 39329: 21165, - 39330: 21180, - 39331: 21173, - 39332: 21185, - 39333: 21197, - 39334: 21207, - 39335: 21214, - 39336: 21219, - 39337: 21222, - 39338: 39149, - 39339: 21216, - 39340: 21235, - 39341: 21237, - 39342: 21240, - 39343: 21241, - 39344: 21254, - 39345: 21256, - 39346: 30008, - 39347: 21261, - 39348: 21264, - 39349: 21263, - 39350: 21269, - 39351: 21274, - 39352: 21283, - 39353: 21295, - 39354: 21297, - 39355: 21299, - 39356: 21304, - 39357: 21312, - 39358: 21318, - 39359: 21317, - 39360: 19991, - 39361: 21321, - 39362: 21325, - 39363: 20950, - 39364: 21342, - 39365: 21353, - 39366: 21358, - 39367: 22808, - 39368: 21371, - 39369: 21367, - 39370: 21378, - 39371: 21398, - 39372: 21408, - 39373: 21414, - 39374: 21413, - 39375: 21422, - 39376: 21424, - 39377: 21430, - 39378: 21443, - 39379: 31762, - 39380: 38617, - 39381: 21471, - 39382: 26364, - 39383: 29166, - 39384: 21486, - 39385: 21480, - 39386: 21485, - 39387: 21498, - 39388: 21505, - 39389: 21565, - 39390: 21568, - 39391: 21548, - 39392: 21549, - 39393: 21564, - 39394: 21550, - 39395: 21558, - 39396: 21545, - 39397: 21533, - 39398: 21582, - 39399: 21647, - 39400: 21621, - 39401: 21646, - 39402: 21599, - 39403: 21617, - 39404: 21623, - 39405: 21616, - 39406: 21650, - 39407: 21627, - 39408: 21632, - 39409: 21622, - 39410: 21636, - 39411: 21648, - 39412: 21638, - 39413: 21703, - 39414: 21666, - 39415: 21688, - 39416: 21669, - 39417: 21676, - 39418: 21700, - 39419: 21704, - 39420: 21672, - 39488: 21675, - 39489: 21698, - 39490: 21668, - 39491: 21694, - 39492: 21692, - 39493: 21720, - 39494: 21733, - 39495: 21734, - 39496: 21775, - 39497: 21780, - 39498: 21757, - 39499: 21742, - 39500: 21741, - 39501: 21754, - 39502: 21730, - 39503: 21817, - 39504: 21824, - 39505: 21859, - 39506: 21836, - 39507: 21806, - 39508: 21852, - 39509: 21829, - 39510: 21846, - 39511: 21847, - 39512: 21816, - 39513: 21811, - 39514: 21853, - 39515: 21913, - 39516: 21888, - 39517: 21679, - 39518: 21898, - 39519: 21919, - 39520: 21883, - 39521: 21886, - 39522: 21912, - 39523: 21918, - 39524: 21934, - 39525: 21884, - 39526: 21891, - 39527: 21929, - 39528: 21895, - 39529: 21928, - 39530: 21978, - 39531: 21957, - 39532: 21983, - 39533: 21956, - 39534: 21980, - 39535: 21988, - 39536: 21972, - 39537: 22036, - 39538: 22007, - 39539: 22038, - 39540: 22014, - 39541: 22013, - 39542: 22043, - 39543: 22009, - 39544: 22094, - 39545: 22096, - 39546: 29151, - 39547: 22068, - 39548: 22070, - 39549: 22066, - 39550: 22072, - 39552: 22123, - 39553: 22116, - 39554: 22063, - 39555: 22124, - 39556: 22122, - 39557: 22150, - 39558: 22144, - 39559: 22154, - 39560: 22176, - 39561: 22164, - 39562: 22159, - 39563: 22181, - 39564: 22190, - 39565: 22198, - 39566: 22196, - 39567: 22210, - 39568: 22204, - 39569: 22209, - 39570: 22211, - 39571: 22208, - 39572: 22216, - 39573: 22222, - 39574: 22225, - 39575: 22227, - 39576: 22231, - 39577: 22254, - 39578: 22265, - 39579: 22272, - 39580: 22271, - 39581: 22276, - 39582: 22281, - 39583: 22280, - 39584: 22283, - 39585: 22285, - 39586: 22291, - 39587: 22296, - 39588: 22294, - 39589: 21959, - 39590: 22300, - 39591: 22310, - 39592: 22327, - 39593: 22328, - 39594: 22350, - 39595: 22331, - 39596: 22336, - 39597: 22351, - 39598: 22377, - 39599: 22464, - 39600: 22408, - 39601: 22369, - 39602: 22399, - 39603: 22409, - 39604: 22419, - 39605: 22432, - 39606: 22451, - 39607: 22436, - 39608: 22442, - 39609: 22448, - 39610: 22467, - 39611: 22470, - 39612: 22484, - 39613: 22482, - 39614: 22483, - 39615: 22538, - 39616: 22486, - 39617: 22499, - 39618: 22539, - 39619: 22553, - 39620: 22557, - 39621: 22642, - 39622: 22561, - 39623: 22626, - 39624: 22603, - 39625: 22640, - 39626: 27584, - 39627: 22610, - 39628: 22589, - 39629: 22649, - 39630: 22661, - 39631: 22713, - 39632: 22687, - 39633: 22699, - 39634: 22714, - 39635: 22750, - 39636: 22715, - 39637: 22712, - 39638: 22702, - 39639: 22725, - 39640: 22739, - 39641: 22737, - 39642: 22743, - 39643: 22745, - 39644: 22744, - 39645: 22757, - 39646: 22748, - 39647: 22756, - 39648: 22751, - 39649: 22767, - 39650: 22778, - 39651: 22777, - 39652: 22779, - 39653: 22780, - 39654: 22781, - 39655: 22786, - 39656: 22794, - 39657: 22800, - 39658: 22811, - 39659: 26790, - 39660: 22821, - 39661: 22828, - 39662: 22829, - 39663: 22834, - 39664: 22840, - 39665: 22846, - 39666: 31442, - 39667: 22869, - 39668: 22864, - 39669: 22862, - 39670: 22874, - 39671: 22872, - 39672: 22882, - 39673: 22880, - 39674: 22887, - 39675: 22892, - 39676: 22889, - 39744: 22904, - 39745: 22913, - 39746: 22941, - 39747: 20318, - 39748: 20395, - 39749: 22947, - 39750: 22962, - 39751: 22982, - 39752: 23016, - 39753: 23004, - 39754: 22925, - 39755: 23001, - 39756: 23002, - 39757: 23077, - 39758: 23071, - 39759: 23057, - 39760: 23068, - 39761: 23049, - 39762: 23066, - 39763: 23104, - 39764: 23148, - 39765: 23113, - 39766: 23093, - 39767: 23094, - 39768: 23138, - 39769: 23146, - 39770: 23194, - 39771: 23228, - 39772: 23230, - 39773: 23243, - 39774: 23234, - 39775: 23229, - 39776: 23267, - 39777: 23255, - 39778: 23270, - 39779: 23273, - 39780: 23254, - 39781: 23290, - 39782: 23291, - 39783: 23308, - 39784: 23307, - 39785: 23318, - 39786: 23346, - 39787: 23248, - 39788: 23338, - 39789: 23350, - 39790: 23358, - 39791: 23363, - 39792: 23365, - 39793: 23360, - 39794: 23377, - 39795: 23381, - 39796: 23386, - 39797: 23387, - 39798: 23397, - 39799: 23401, - 39800: 23408, - 39801: 23411, - 39802: 23413, - 39803: 23416, - 39804: 25992, - 39805: 23418, - 39806: 23424, - 39808: 23427, - 39809: 23462, - 39810: 23480, - 39811: 23491, - 39812: 23495, - 39813: 23497, - 39814: 23508, - 39815: 23504, - 39816: 23524, - 39817: 23526, - 39818: 23522, - 39819: 23518, - 39820: 23525, - 39821: 23531, - 39822: 23536, - 39823: 23542, - 39824: 23539, - 39825: 23557, - 39826: 23559, - 39827: 23560, - 39828: 23565, - 39829: 23571, - 39830: 23584, - 39831: 23586, - 39832: 23592, - 39833: 23608, - 39834: 23609, - 39835: 23617, - 39836: 23622, - 39837: 23630, - 39838: 23635, - 39839: 23632, - 39840: 23631, - 39841: 23409, - 39842: 23660, - 39843: 23662, - 39844: 20066, - 39845: 23670, - 39846: 23673, - 39847: 23692, - 39848: 23697, - 39849: 23700, - 39850: 22939, - 39851: 23723, - 39852: 23739, - 39853: 23734, - 39854: 23740, - 39855: 23735, - 39856: 23749, - 39857: 23742, - 39858: 23751, - 39859: 23769, - 39860: 23785, - 39861: 23805, - 39862: 23802, - 39863: 23789, - 39864: 23948, - 39865: 23786, - 39866: 23819, - 39867: 23829, - 39868: 23831, - 39869: 23900, - 39870: 23839, - 39871: 23835, - 39872: 23825, - 39873: 23828, - 39874: 23842, - 39875: 23834, - 39876: 23833, - 39877: 23832, - 39878: 23884, - 39879: 23890, - 39880: 23886, - 39881: 23883, - 39882: 23916, - 39883: 23923, - 39884: 23926, - 39885: 23943, - 39886: 23940, - 39887: 23938, - 39888: 23970, - 39889: 23965, - 39890: 23980, - 39891: 23982, - 39892: 23997, - 39893: 23952, - 39894: 23991, - 39895: 23996, - 39896: 24009, - 39897: 24013, - 39898: 24019, - 39899: 24018, - 39900: 24022, - 39901: 24027, - 39902: 24043, - 39903: 24050, - 39904: 24053, - 39905: 24075, - 39906: 24090, - 39907: 24089, - 39908: 24081, - 39909: 24091, - 39910: 24118, - 39911: 24119, - 39912: 24132, - 39913: 24131, - 39914: 24128, - 39915: 24142, - 39916: 24151, - 39917: 24148, - 39918: 24159, - 39919: 24162, - 39920: 24164, - 39921: 24135, - 39922: 24181, - 39923: 24182, - 39924: 24186, - 39925: 40636, - 39926: 24191, - 39927: 24224, - 39928: 24257, - 39929: 24258, - 39930: 24264, - 39931: 24272, - 39932: 24271, - 4e4: 24278, - 40001: 24291, - 40002: 24285, - 40003: 24282, - 40004: 24283, - 40005: 24290, - 40006: 24289, - 40007: 24296, - 40008: 24297, - 40009: 24300, - 40010: 24305, - 40011: 24307, - 40012: 24304, - 40013: 24308, - 40014: 24312, - 40015: 24318, - 40016: 24323, - 40017: 24329, - 40018: 24413, - 40019: 24412, - 40020: 24331, - 40021: 24337, - 40022: 24342, - 40023: 24361, - 40024: 24365, - 40025: 24376, - 40026: 24385, - 40027: 24392, - 40028: 24396, - 40029: 24398, - 40030: 24367, - 40031: 24401, - 40032: 24406, - 40033: 24407, - 40034: 24409, - 40035: 24417, - 40036: 24429, - 40037: 24435, - 40038: 24439, - 40039: 24451, - 40040: 24450, - 40041: 24447, - 40042: 24458, - 40043: 24456, - 40044: 24465, - 40045: 24455, - 40046: 24478, - 40047: 24473, - 40048: 24472, - 40049: 24480, - 40050: 24488, - 40051: 24493, - 40052: 24508, - 40053: 24534, - 40054: 24571, - 40055: 24548, - 40056: 24568, - 40057: 24561, - 40058: 24541, - 40059: 24755, - 40060: 24575, - 40061: 24609, - 40062: 24672, - 40064: 24601, - 40065: 24592, - 40066: 24617, - 40067: 24590, - 40068: 24625, - 40069: 24603, - 40070: 24597, - 40071: 24619, - 40072: 24614, - 40073: 24591, - 40074: 24634, - 40075: 24666, - 40076: 24641, - 40077: 24682, - 40078: 24695, - 40079: 24671, - 40080: 24650, - 40081: 24646, - 40082: 24653, - 40083: 24675, - 40084: 24643, - 40085: 24676, - 40086: 24642, - 40087: 24684, - 40088: 24683, - 40089: 24665, - 40090: 24705, - 40091: 24717, - 40092: 24807, - 40093: 24707, - 40094: 24730, - 40095: 24708, - 40096: 24731, - 40097: 24726, - 40098: 24727, - 40099: 24722, - 40100: 24743, - 40101: 24715, - 40102: 24801, - 40103: 24760, - 40104: 24800, - 40105: 24787, - 40106: 24756, - 40107: 24560, - 40108: 24765, - 40109: 24774, - 40110: 24757, - 40111: 24792, - 40112: 24909, - 40113: 24853, - 40114: 24838, - 40115: 24822, - 40116: 24823, - 40117: 24832, - 40118: 24820, - 40119: 24826, - 40120: 24835, - 40121: 24865, - 40122: 24827, - 40123: 24817, - 40124: 24845, - 40125: 24846, - 40126: 24903, - 40127: 24894, - 40128: 24872, - 40129: 24871, - 40130: 24906, - 40131: 24895, - 40132: 24892, - 40133: 24876, - 40134: 24884, - 40135: 24893, - 40136: 24898, - 40137: 24900, - 40138: 24947, - 40139: 24951, - 40140: 24920, - 40141: 24921, - 40142: 24922, - 40143: 24939, - 40144: 24948, - 40145: 24943, - 40146: 24933, - 40147: 24945, - 40148: 24927, - 40149: 24925, - 40150: 24915, - 40151: 24949, - 40152: 24985, - 40153: 24982, - 40154: 24967, - 40155: 25004, - 40156: 24980, - 40157: 24986, - 40158: 24970, - 40159: 24977, - 40160: 25003, - 40161: 25006, - 40162: 25036, - 40163: 25034, - 40164: 25033, - 40165: 25079, - 40166: 25032, - 40167: 25027, - 40168: 25030, - 40169: 25018, - 40170: 25035, - 40171: 32633, - 40172: 25037, - 40173: 25062, - 40174: 25059, - 40175: 25078, - 40176: 25082, - 40177: 25076, - 40178: 25087, - 40179: 25085, - 40180: 25084, - 40181: 25086, - 40182: 25088, - 40183: 25096, - 40184: 25097, - 40185: 25101, - 40186: 25100, - 40187: 25108, - 40188: 25115, - 40256: 25118, - 40257: 25121, - 40258: 25130, - 40259: 25134, - 40260: 25136, - 40261: 25138, - 40262: 25139, - 40263: 25153, - 40264: 25166, - 40265: 25182, - 40266: 25187, - 40267: 25179, - 40268: 25184, - 40269: 25192, - 40270: 25212, - 40271: 25218, - 40272: 25225, - 40273: 25214, - 40274: 25234, - 40275: 25235, - 40276: 25238, - 40277: 25300, - 40278: 25219, - 40279: 25236, - 40280: 25303, - 40281: 25297, - 40282: 25275, - 40283: 25295, - 40284: 25343, - 40285: 25286, - 40286: 25812, - 40287: 25288, - 40288: 25308, - 40289: 25292, - 40290: 25290, - 40291: 25282, - 40292: 25287, - 40293: 25243, - 40294: 25289, - 40295: 25356, - 40296: 25326, - 40297: 25329, - 40298: 25383, - 40299: 25346, - 40300: 25352, - 40301: 25327, - 40302: 25333, - 40303: 25424, - 40304: 25406, - 40305: 25421, - 40306: 25628, - 40307: 25423, - 40308: 25494, - 40309: 25486, - 40310: 25472, - 40311: 25515, - 40312: 25462, - 40313: 25507, - 40314: 25487, - 40315: 25481, - 40316: 25503, - 40317: 25525, - 40318: 25451, - 40320: 25449, - 40321: 25534, - 40322: 25577, - 40323: 25536, - 40324: 25542, - 40325: 25571, - 40326: 25545, - 40327: 25554, - 40328: 25590, - 40329: 25540, - 40330: 25622, - 40331: 25652, - 40332: 25606, - 40333: 25619, - 40334: 25638, - 40335: 25654, - 40336: 25885, - 40337: 25623, - 40338: 25640, - 40339: 25615, - 40340: 25703, - 40341: 25711, - 40342: 25718, - 40343: 25678, - 40344: 25898, - 40345: 25749, - 40346: 25747, - 40347: 25765, - 40348: 25769, - 40349: 25736, - 40350: 25788, - 40351: 25818, - 40352: 25810, - 40353: 25797, - 40354: 25799, - 40355: 25787, - 40356: 25816, - 40357: 25794, - 40358: 25841, - 40359: 25831, - 40360: 33289, - 40361: 25824, - 40362: 25825, - 40363: 25260, - 40364: 25827, - 40365: 25839, - 40366: 25900, - 40367: 25846, - 40368: 25844, - 40369: 25842, - 40370: 25850, - 40371: 25856, - 40372: 25853, - 40373: 25880, - 40374: 25884, - 40375: 25861, - 40376: 25892, - 40377: 25891, - 40378: 25899, - 40379: 25908, - 40380: 25909, - 40381: 25911, - 40382: 25910, - 40383: 25912, - 40384: 30027, - 40385: 25928, - 40386: 25942, - 40387: 25941, - 40388: 25933, - 40389: 25944, - 40390: 25950, - 40391: 25949, - 40392: 25970, - 40393: 25976, - 40394: 25986, - 40395: 25987, - 40396: 35722, - 40397: 26011, - 40398: 26015, - 40399: 26027, - 40400: 26039, - 40401: 26051, - 40402: 26054, - 40403: 26049, - 40404: 26052, - 40405: 26060, - 40406: 26066, - 40407: 26075, - 40408: 26073, - 40409: 26080, - 40410: 26081, - 40411: 26097, - 40412: 26482, - 40413: 26122, - 40414: 26115, - 40415: 26107, - 40416: 26483, - 40417: 26165, - 40418: 26166, - 40419: 26164, - 40420: 26140, - 40421: 26191, - 40422: 26180, - 40423: 26185, - 40424: 26177, - 40425: 26206, - 40426: 26205, - 40427: 26212, - 40428: 26215, - 40429: 26216, - 40430: 26207, - 40431: 26210, - 40432: 26224, - 40433: 26243, - 40434: 26248, - 40435: 26254, - 40436: 26249, - 40437: 26244, - 40438: 26264, - 40439: 26269, - 40440: 26305, - 40441: 26297, - 40442: 26313, - 40443: 26302, - 40444: 26300, - 40512: 26308, - 40513: 26296, - 40514: 26326, - 40515: 26330, - 40516: 26336, - 40517: 26175, - 40518: 26342, - 40519: 26345, - 40520: 26352, - 40521: 26357, - 40522: 26359, - 40523: 26383, - 40524: 26390, - 40525: 26398, - 40526: 26406, - 40527: 26407, - 40528: 38712, - 40529: 26414, - 40530: 26431, - 40531: 26422, - 40532: 26433, - 40533: 26424, - 40534: 26423, - 40535: 26438, - 40536: 26462, - 40537: 26464, - 40538: 26457, - 40539: 26467, - 40540: 26468, - 40541: 26505, - 40542: 26480, - 40543: 26537, - 40544: 26492, - 40545: 26474, - 40546: 26508, - 40547: 26507, - 40548: 26534, - 40549: 26529, - 40550: 26501, - 40551: 26551, - 40552: 26607, - 40553: 26548, - 40554: 26604, - 40555: 26547, - 40556: 26601, - 40557: 26552, - 40558: 26596, - 40559: 26590, - 40560: 26589, - 40561: 26594, - 40562: 26606, - 40563: 26553, - 40564: 26574, - 40565: 26566, - 40566: 26599, - 40567: 27292, - 40568: 26654, - 40569: 26694, - 40570: 26665, - 40571: 26688, - 40572: 26701, - 40573: 26674, - 40574: 26702, - 40576: 26803, - 40577: 26667, - 40578: 26713, - 40579: 26723, - 40580: 26743, - 40581: 26751, - 40582: 26783, - 40583: 26767, - 40584: 26797, - 40585: 26772, - 40586: 26781, - 40587: 26779, - 40588: 26755, - 40589: 27310, - 40590: 26809, - 40591: 26740, - 40592: 26805, - 40593: 26784, - 40594: 26810, - 40595: 26895, - 40596: 26765, - 40597: 26750, - 40598: 26881, - 40599: 26826, - 40600: 26888, - 40601: 26840, - 40602: 26914, - 40603: 26918, - 40604: 26849, - 40605: 26892, - 40606: 26829, - 40607: 26836, - 40608: 26855, - 40609: 26837, - 40610: 26934, - 40611: 26898, - 40612: 26884, - 40613: 26839, - 40614: 26851, - 40615: 26917, - 40616: 26873, - 40617: 26848, - 40618: 26863, - 40619: 26920, - 40620: 26922, - 40621: 26906, - 40622: 26915, - 40623: 26913, - 40624: 26822, - 40625: 27001, - 40626: 26999, - 40627: 26972, - 40628: 27e3, - 40629: 26987, - 40630: 26964, - 40631: 27006, - 40632: 26990, - 40633: 26937, - 40634: 26996, - 40635: 26941, - 40636: 26969, - 40637: 26928, - 40638: 26977, - 40639: 26974, - 40640: 26973, - 40641: 27009, - 40642: 26986, - 40643: 27058, - 40644: 27054, - 40645: 27088, - 40646: 27071, - 40647: 27073, - 40648: 27091, - 40649: 27070, - 40650: 27086, - 40651: 23528, - 40652: 27082, - 40653: 27101, - 40654: 27067, - 40655: 27075, - 40656: 27047, - 40657: 27182, - 40658: 27025, - 40659: 27040, - 40660: 27036, - 40661: 27029, - 40662: 27060, - 40663: 27102, - 40664: 27112, - 40665: 27138, - 40666: 27163, - 40667: 27135, - 40668: 27402, - 40669: 27129, - 40670: 27122, - 40671: 27111, - 40672: 27141, - 40673: 27057, - 40674: 27166, - 40675: 27117, - 40676: 27156, - 40677: 27115, - 40678: 27146, - 40679: 27154, - 40680: 27329, - 40681: 27171, - 40682: 27155, - 40683: 27204, - 40684: 27148, - 40685: 27250, - 40686: 27190, - 40687: 27256, - 40688: 27207, - 40689: 27234, - 40690: 27225, - 40691: 27238, - 40692: 27208, - 40693: 27192, - 40694: 27170, - 40695: 27280, - 40696: 27277, - 40697: 27296, - 40698: 27268, - 40699: 27298, - 40700: 27299, - 40768: 27287, - 40769: 34327, - 40770: 27323, - 40771: 27331, - 40772: 27330, - 40773: 27320, - 40774: 27315, - 40775: 27308, - 40776: 27358, - 40777: 27345, - 40778: 27359, - 40779: 27306, - 40780: 27354, - 40781: 27370, - 40782: 27387, - 40783: 27397, - 40784: 34326, - 40785: 27386, - 40786: 27410, - 40787: 27414, - 40788: 39729, - 40789: 27423, - 40790: 27448, - 40791: 27447, - 40792: 30428, - 40793: 27449, - 40794: 39150, - 40795: 27463, - 40796: 27459, - 40797: 27465, - 40798: 27472, - 40799: 27481, - 40800: 27476, - 40801: 27483, - 40802: 27487, - 40803: 27489, - 40804: 27512, - 40805: 27513, - 40806: 27519, - 40807: 27520, - 40808: 27524, - 40809: 27523, - 40810: 27533, - 40811: 27544, - 40812: 27541, - 40813: 27550, - 40814: 27556, - 40815: 27562, - 40816: 27563, - 40817: 27567, - 40818: 27570, - 40819: 27569, - 40820: 27571, - 40821: 27575, - 40822: 27580, - 40823: 27590, - 40824: 27595, - 40825: 27603, - 40826: 27615, - 40827: 27628, - 40828: 27627, - 40829: 27635, - 40830: 27631, - 40832: 40638, - 40833: 27656, - 40834: 27667, - 40835: 27668, - 40836: 27675, - 40837: 27684, - 40838: 27683, - 40839: 27742, - 40840: 27733, - 40841: 27746, - 40842: 27754, - 40843: 27778, - 40844: 27789, - 40845: 27802, - 40846: 27777, - 40847: 27803, - 40848: 27774, - 40849: 27752, - 40850: 27763, - 40851: 27794, - 40852: 27792, - 40853: 27844, - 40854: 27889, - 40855: 27859, - 40856: 27837, - 40857: 27863, - 40858: 27845, - 40859: 27869, - 40860: 27822, - 40861: 27825, - 40862: 27838, - 40863: 27834, - 40864: 27867, - 40865: 27887, - 40866: 27865, - 40867: 27882, - 40868: 27935, - 40869: 34893, - 40870: 27958, - 40871: 27947, - 40872: 27965, - 40873: 27960, - 40874: 27929, - 40875: 27957, - 40876: 27955, - 40877: 27922, - 40878: 27916, - 40879: 28003, - 40880: 28051, - 40881: 28004, - 40882: 27994, - 40883: 28025, - 40884: 27993, - 40885: 28046, - 40886: 28053, - 40887: 28644, - 40888: 28037, - 40889: 28153, - 40890: 28181, - 40891: 28170, - 40892: 28085, - 40893: 28103, - 40894: 28134, - 40895: 28088, - 40896: 28102, - 40897: 28140, - 40898: 28126, - 40899: 28108, - 40900: 28136, - 40901: 28114, - 40902: 28101, - 40903: 28154, - 40904: 28121, - 40905: 28132, - 40906: 28117, - 40907: 28138, - 40908: 28142, - 40909: 28205, - 40910: 28270, - 40911: 28206, - 40912: 28185, - 40913: 28274, - 40914: 28255, - 40915: 28222, - 40916: 28195, - 40917: 28267, - 40918: 28203, - 40919: 28278, - 40920: 28237, - 40921: 28191, - 40922: 28227, - 40923: 28218, - 40924: 28238, - 40925: 28196, - 40926: 28415, - 40927: 28189, - 40928: 28216, - 40929: 28290, - 40930: 28330, - 40931: 28312, - 40932: 28361, - 40933: 28343, - 40934: 28371, - 40935: 28349, - 40936: 28335, - 40937: 28356, - 40938: 28338, - 40939: 28372, - 40940: 28373, - 40941: 28303, - 40942: 28325, - 40943: 28354, - 40944: 28319, - 40945: 28481, - 40946: 28433, - 40947: 28748, - 40948: 28396, - 40949: 28408, - 40950: 28414, - 40951: 28479, - 40952: 28402, - 40953: 28465, - 40954: 28399, - 40955: 28466, - 40956: 28364, - 57408: 28478, - 57409: 28435, - 57410: 28407, - 57411: 28550, - 57412: 28538, - 57413: 28536, - 57414: 28545, - 57415: 28544, - 57416: 28527, - 57417: 28507, - 57418: 28659, - 57419: 28525, - 57420: 28546, - 57421: 28540, - 57422: 28504, - 57423: 28558, - 57424: 28561, - 57425: 28610, - 57426: 28518, - 57427: 28595, - 57428: 28579, - 57429: 28577, - 57430: 28580, - 57431: 28601, - 57432: 28614, - 57433: 28586, - 57434: 28639, - 57435: 28629, - 57436: 28652, - 57437: 28628, - 57438: 28632, - 57439: 28657, - 57440: 28654, - 57441: 28635, - 57442: 28681, - 57443: 28683, - 57444: 28666, - 57445: 28689, - 57446: 28673, - 57447: 28687, - 57448: 28670, - 57449: 28699, - 57450: 28698, - 57451: 28532, - 57452: 28701, - 57453: 28696, - 57454: 28703, - 57455: 28720, - 57456: 28734, - 57457: 28722, - 57458: 28753, - 57459: 28771, - 57460: 28825, - 57461: 28818, - 57462: 28847, - 57463: 28913, - 57464: 28844, - 57465: 28856, - 57466: 28851, - 57467: 28846, - 57468: 28895, - 57469: 28875, - 57470: 28893, - 57472: 28889, - 57473: 28937, - 57474: 28925, - 57475: 28956, - 57476: 28953, - 57477: 29029, - 57478: 29013, - 57479: 29064, - 57480: 29030, - 57481: 29026, - 57482: 29004, - 57483: 29014, - 57484: 29036, - 57485: 29071, - 57486: 29179, - 57487: 29060, - 57488: 29077, - 57489: 29096, - 57490: 29100, - 57491: 29143, - 57492: 29113, - 57493: 29118, - 57494: 29138, - 57495: 29129, - 57496: 29140, - 57497: 29134, - 57498: 29152, - 57499: 29164, - 57500: 29159, - 57501: 29173, - 57502: 29180, - 57503: 29177, - 57504: 29183, - 57505: 29197, - 57506: 29200, - 57507: 29211, - 57508: 29224, - 57509: 29229, - 57510: 29228, - 57511: 29232, - 57512: 29234, - 57513: 29243, - 57514: 29244, - 57515: 29247, - 57516: 29248, - 57517: 29254, - 57518: 29259, - 57519: 29272, - 57520: 29300, - 57521: 29310, - 57522: 29314, - 57523: 29313, - 57524: 29319, - 57525: 29330, - 57526: 29334, - 57527: 29346, - 57528: 29351, - 57529: 29369, - 57530: 29362, - 57531: 29379, - 57532: 29382, - 57533: 29380, - 57534: 29390, - 57535: 29394, - 57536: 29410, - 57537: 29408, - 57538: 29409, - 57539: 29433, - 57540: 29431, - 57541: 20495, - 57542: 29463, - 57543: 29450, - 57544: 29468, - 57545: 29462, - 57546: 29469, - 57547: 29492, - 57548: 29487, - 57549: 29481, - 57550: 29477, - 57551: 29502, - 57552: 29518, - 57553: 29519, - 57554: 40664, - 57555: 29527, - 57556: 29546, - 57557: 29544, - 57558: 29552, - 57559: 29560, - 57560: 29557, - 57561: 29563, - 57562: 29562, - 57563: 29640, - 57564: 29619, - 57565: 29646, - 57566: 29627, - 57567: 29632, - 57568: 29669, - 57569: 29678, - 57570: 29662, - 57571: 29858, - 57572: 29701, - 57573: 29807, - 57574: 29733, - 57575: 29688, - 57576: 29746, - 57577: 29754, - 57578: 29781, - 57579: 29759, - 57580: 29791, - 57581: 29785, - 57582: 29761, - 57583: 29788, - 57584: 29801, - 57585: 29808, - 57586: 29795, - 57587: 29802, - 57588: 29814, - 57589: 29822, - 57590: 29835, - 57591: 29854, - 57592: 29863, - 57593: 29898, - 57594: 29903, - 57595: 29908, - 57596: 29681, - 57664: 29920, - 57665: 29923, - 57666: 29927, - 57667: 29929, - 57668: 29934, - 57669: 29938, - 57670: 29936, - 57671: 29937, - 57672: 29944, - 57673: 29943, - 57674: 29956, - 57675: 29955, - 57676: 29957, - 57677: 29964, - 57678: 29966, - 57679: 29965, - 57680: 29973, - 57681: 29971, - 57682: 29982, - 57683: 29990, - 57684: 29996, - 57685: 30012, - 57686: 30020, - 57687: 30029, - 57688: 30026, - 57689: 30025, - 57690: 30043, - 57691: 30022, - 57692: 30042, - 57693: 30057, - 57694: 30052, - 57695: 30055, - 57696: 30059, - 57697: 30061, - 57698: 30072, - 57699: 30070, - 57700: 30086, - 57701: 30087, - 57702: 30068, - 57703: 30090, - 57704: 30089, - 57705: 30082, - 57706: 30100, - 57707: 30106, - 57708: 30109, - 57709: 30117, - 57710: 30115, - 57711: 30146, - 57712: 30131, - 57713: 30147, - 57714: 30133, - 57715: 30141, - 57716: 30136, - 57717: 30140, - 57718: 30129, - 57719: 30157, - 57720: 30154, - 57721: 30162, - 57722: 30169, - 57723: 30179, - 57724: 30174, - 57725: 30206, - 57726: 30207, - 57728: 30204, - 57729: 30209, - 57730: 30192, - 57731: 30202, - 57732: 30194, - 57733: 30195, - 57734: 30219, - 57735: 30221, - 57736: 30217, - 57737: 30239, - 57738: 30247, - 57739: 30240, - 57740: 30241, - 57741: 30242, - 57742: 30244, - 57743: 30260, - 57744: 30256, - 57745: 30267, - 57746: 30279, - 57747: 30280, - 57748: 30278, - 57749: 30300, - 57750: 30296, - 57751: 30305, - 57752: 30306, - 57753: 30312, - 57754: 30313, - 57755: 30314, - 57756: 30311, - 57757: 30316, - 57758: 30320, - 57759: 30322, - 57760: 30326, - 57761: 30328, - 57762: 30332, - 57763: 30336, - 57764: 30339, - 57765: 30344, - 57766: 30347, - 57767: 30350, - 57768: 30358, - 57769: 30355, - 57770: 30361, - 57771: 30362, - 57772: 30384, - 57773: 30388, - 57774: 30392, - 57775: 30393, - 57776: 30394, - 57777: 30402, - 57778: 30413, - 57779: 30422, - 57780: 30418, - 57781: 30430, - 57782: 30433, - 57783: 30437, - 57784: 30439, - 57785: 30442, - 57786: 34351, - 57787: 30459, - 57788: 30472, - 57789: 30471, - 57790: 30468, - 57791: 30505, - 57792: 30500, - 57793: 30494, - 57794: 30501, - 57795: 30502, - 57796: 30491, - 57797: 30519, - 57798: 30520, - 57799: 30535, - 57800: 30554, - 57801: 30568, - 57802: 30571, - 57803: 30555, - 57804: 30565, - 57805: 30591, - 57806: 30590, - 57807: 30585, - 57808: 30606, - 57809: 30603, - 57810: 30609, - 57811: 30624, - 57812: 30622, - 57813: 30640, - 57814: 30646, - 57815: 30649, - 57816: 30655, - 57817: 30652, - 57818: 30653, - 57819: 30651, - 57820: 30663, - 57821: 30669, - 57822: 30679, - 57823: 30682, - 57824: 30684, - 57825: 30691, - 57826: 30702, - 57827: 30716, - 57828: 30732, - 57829: 30738, - 57830: 31014, - 57831: 30752, - 57832: 31018, - 57833: 30789, - 57834: 30862, - 57835: 30836, - 57836: 30854, - 57837: 30844, - 57838: 30874, - 57839: 30860, - 57840: 30883, - 57841: 30901, - 57842: 30890, - 57843: 30895, - 57844: 30929, - 57845: 30918, - 57846: 30923, - 57847: 30932, - 57848: 30910, - 57849: 30908, - 57850: 30917, - 57851: 30922, - 57852: 30956, - 57920: 30951, - 57921: 30938, - 57922: 30973, - 57923: 30964, - 57924: 30983, - 57925: 30994, - 57926: 30993, - 57927: 31001, - 57928: 31020, - 57929: 31019, - 57930: 31040, - 57931: 31072, - 57932: 31063, - 57933: 31071, - 57934: 31066, - 57935: 31061, - 57936: 31059, - 57937: 31098, - 57938: 31103, - 57939: 31114, - 57940: 31133, - 57941: 31143, - 57942: 40779, - 57943: 31146, - 57944: 31150, - 57945: 31155, - 57946: 31161, - 57947: 31162, - 57948: 31177, - 57949: 31189, - 57950: 31207, - 57951: 31212, - 57952: 31201, - 57953: 31203, - 57954: 31240, - 57955: 31245, - 57956: 31256, - 57957: 31257, - 57958: 31264, - 57959: 31263, - 57960: 31104, - 57961: 31281, - 57962: 31291, - 57963: 31294, - 57964: 31287, - 57965: 31299, - 57966: 31319, - 57967: 31305, - 57968: 31329, - 57969: 31330, - 57970: 31337, - 57971: 40861, - 57972: 31344, - 57973: 31353, - 57974: 31357, - 57975: 31368, - 57976: 31383, - 57977: 31381, - 57978: 31384, - 57979: 31382, - 57980: 31401, - 57981: 31432, - 57982: 31408, - 57984: 31414, - 57985: 31429, - 57986: 31428, - 57987: 31423, - 57988: 36995, - 57989: 31431, - 57990: 31434, - 57991: 31437, - 57992: 31439, - 57993: 31445, - 57994: 31443, - 57995: 31449, - 57996: 31450, - 57997: 31453, - 57998: 31457, - 57999: 31458, - 58e3: 31462, - 58001: 31469, - 58002: 31472, - 58003: 31490, - 58004: 31503, - 58005: 31498, - 58006: 31494, - 58007: 31539, - 58008: 31512, - 58009: 31513, - 58010: 31518, - 58011: 31541, - 58012: 31528, - 58013: 31542, - 58014: 31568, - 58015: 31610, - 58016: 31492, - 58017: 31565, - 58018: 31499, - 58019: 31564, - 58020: 31557, - 58021: 31605, - 58022: 31589, - 58023: 31604, - 58024: 31591, - 58025: 31600, - 58026: 31601, - 58027: 31596, - 58028: 31598, - 58029: 31645, - 58030: 31640, - 58031: 31647, - 58032: 31629, - 58033: 31644, - 58034: 31642, - 58035: 31627, - 58036: 31634, - 58037: 31631, - 58038: 31581, - 58039: 31641, - 58040: 31691, - 58041: 31681, - 58042: 31692, - 58043: 31695, - 58044: 31668, - 58045: 31686, - 58046: 31709, - 58047: 31721, - 58048: 31761, - 58049: 31764, - 58050: 31718, - 58051: 31717, - 58052: 31840, - 58053: 31744, - 58054: 31751, - 58055: 31763, - 58056: 31731, - 58057: 31735, - 58058: 31767, - 58059: 31757, - 58060: 31734, - 58061: 31779, - 58062: 31783, - 58063: 31786, - 58064: 31775, - 58065: 31799, - 58066: 31787, - 58067: 31805, - 58068: 31820, - 58069: 31811, - 58070: 31828, - 58071: 31823, - 58072: 31808, - 58073: 31824, - 58074: 31832, - 58075: 31839, - 58076: 31844, - 58077: 31830, - 58078: 31845, - 58079: 31852, - 58080: 31861, - 58081: 31875, - 58082: 31888, - 58083: 31908, - 58084: 31917, - 58085: 31906, - 58086: 31915, - 58087: 31905, - 58088: 31912, - 58089: 31923, - 58090: 31922, - 58091: 31921, - 58092: 31918, - 58093: 31929, - 58094: 31933, - 58095: 31936, - 58096: 31941, - 58097: 31938, - 58098: 31960, - 58099: 31954, - 58100: 31964, - 58101: 31970, - 58102: 39739, - 58103: 31983, - 58104: 31986, - 58105: 31988, - 58106: 31990, - 58107: 31994, - 58108: 32006, - 58176: 32002, - 58177: 32028, - 58178: 32021, - 58179: 32010, - 58180: 32069, - 58181: 32075, - 58182: 32046, - 58183: 32050, - 58184: 32063, - 58185: 32053, - 58186: 32070, - 58187: 32115, - 58188: 32086, - 58189: 32078, - 58190: 32114, - 58191: 32104, - 58192: 32110, - 58193: 32079, - 58194: 32099, - 58195: 32147, - 58196: 32137, - 58197: 32091, - 58198: 32143, - 58199: 32125, - 58200: 32155, - 58201: 32186, - 58202: 32174, - 58203: 32163, - 58204: 32181, - 58205: 32199, - 58206: 32189, - 58207: 32171, - 58208: 32317, - 58209: 32162, - 58210: 32175, - 58211: 32220, - 58212: 32184, - 58213: 32159, - 58214: 32176, - 58215: 32216, - 58216: 32221, - 58217: 32228, - 58218: 32222, - 58219: 32251, - 58220: 32242, - 58221: 32225, - 58222: 32261, - 58223: 32266, - 58224: 32291, - 58225: 32289, - 58226: 32274, - 58227: 32305, - 58228: 32287, - 58229: 32265, - 58230: 32267, - 58231: 32290, - 58232: 32326, - 58233: 32358, - 58234: 32315, - 58235: 32309, - 58236: 32313, - 58237: 32323, - 58238: 32311, - 58240: 32306, - 58241: 32314, - 58242: 32359, - 58243: 32349, - 58244: 32342, - 58245: 32350, - 58246: 32345, - 58247: 32346, - 58248: 32377, - 58249: 32362, - 58250: 32361, - 58251: 32380, - 58252: 32379, - 58253: 32387, - 58254: 32213, - 58255: 32381, - 58256: 36782, - 58257: 32383, - 58258: 32392, - 58259: 32393, - 58260: 32396, - 58261: 32402, - 58262: 32400, - 58263: 32403, - 58264: 32404, - 58265: 32406, - 58266: 32398, - 58267: 32411, - 58268: 32412, - 58269: 32568, - 58270: 32570, - 58271: 32581, - 58272: 32588, - 58273: 32589, - 58274: 32590, - 58275: 32592, - 58276: 32593, - 58277: 32597, - 58278: 32596, - 58279: 32600, - 58280: 32607, - 58281: 32608, - 58282: 32616, - 58283: 32617, - 58284: 32615, - 58285: 32632, - 58286: 32642, - 58287: 32646, - 58288: 32643, - 58289: 32648, - 58290: 32647, - 58291: 32652, - 58292: 32660, - 58293: 32670, - 58294: 32669, - 58295: 32666, - 58296: 32675, - 58297: 32687, - 58298: 32690, - 58299: 32697, - 58300: 32686, - 58301: 32694, - 58302: 32696, - 58303: 35697, - 58304: 32709, - 58305: 32710, - 58306: 32714, - 58307: 32725, - 58308: 32724, - 58309: 32737, - 58310: 32742, - 58311: 32745, - 58312: 32755, - 58313: 32761, - 58314: 39132, - 58315: 32774, - 58316: 32772, - 58317: 32779, - 58318: 32786, - 58319: 32792, - 58320: 32793, - 58321: 32796, - 58322: 32801, - 58323: 32808, - 58324: 32831, - 58325: 32827, - 58326: 32842, - 58327: 32838, - 58328: 32850, - 58329: 32856, - 58330: 32858, - 58331: 32863, - 58332: 32866, - 58333: 32872, - 58334: 32883, - 58335: 32882, - 58336: 32880, - 58337: 32886, - 58338: 32889, - 58339: 32893, - 58340: 32895, - 58341: 32900, - 58342: 32902, - 58343: 32901, - 58344: 32923, - 58345: 32915, - 58346: 32922, - 58347: 32941, - 58348: 20880, - 58349: 32940, - 58350: 32987, - 58351: 32997, - 58352: 32985, - 58353: 32989, - 58354: 32964, - 58355: 32986, - 58356: 32982, - 58357: 33033, - 58358: 33007, - 58359: 33009, - 58360: 33051, - 58361: 33065, - 58362: 33059, - 58363: 33071, - 58364: 33099, - 58432: 38539, - 58433: 33094, - 58434: 33086, - 58435: 33107, - 58436: 33105, - 58437: 33020, - 58438: 33137, - 58439: 33134, - 58440: 33125, - 58441: 33126, - 58442: 33140, - 58443: 33155, - 58444: 33160, - 58445: 33162, - 58446: 33152, - 58447: 33154, - 58448: 33184, - 58449: 33173, - 58450: 33188, - 58451: 33187, - 58452: 33119, - 58453: 33171, - 58454: 33193, - 58455: 33200, - 58456: 33205, - 58457: 33214, - 58458: 33208, - 58459: 33213, - 58460: 33216, - 58461: 33218, - 58462: 33210, - 58463: 33225, - 58464: 33229, - 58465: 33233, - 58466: 33241, - 58467: 33240, - 58468: 33224, - 58469: 33242, - 58470: 33247, - 58471: 33248, - 58472: 33255, - 58473: 33274, - 58474: 33275, - 58475: 33278, - 58476: 33281, - 58477: 33282, - 58478: 33285, - 58479: 33287, - 58480: 33290, - 58481: 33293, - 58482: 33296, - 58483: 33302, - 58484: 33321, - 58485: 33323, - 58486: 33336, - 58487: 33331, - 58488: 33344, - 58489: 33369, - 58490: 33368, - 58491: 33373, - 58492: 33370, - 58493: 33375, - 58494: 33380, - 58496: 33378, - 58497: 33384, - 58498: 33386, - 58499: 33387, - 58500: 33326, - 58501: 33393, - 58502: 33399, - 58503: 33400, - 58504: 33406, - 58505: 33421, - 58506: 33426, - 58507: 33451, - 58508: 33439, - 58509: 33467, - 58510: 33452, - 58511: 33505, - 58512: 33507, - 58513: 33503, - 58514: 33490, - 58515: 33524, - 58516: 33523, - 58517: 33530, - 58518: 33683, - 58519: 33539, - 58520: 33531, - 58521: 33529, - 58522: 33502, - 58523: 33542, - 58524: 33500, - 58525: 33545, - 58526: 33497, - 58527: 33589, - 58528: 33588, - 58529: 33558, - 58530: 33586, - 58531: 33585, - 58532: 33600, - 58533: 33593, - 58534: 33616, - 58535: 33605, - 58536: 33583, - 58537: 33579, - 58538: 33559, - 58539: 33560, - 58540: 33669, - 58541: 33690, - 58542: 33706, - 58543: 33695, - 58544: 33698, - 58545: 33686, - 58546: 33571, - 58547: 33678, - 58548: 33671, - 58549: 33674, - 58550: 33660, - 58551: 33717, - 58552: 33651, - 58553: 33653, - 58554: 33696, - 58555: 33673, - 58556: 33704, - 58557: 33780, - 58558: 33811, - 58559: 33771, - 58560: 33742, - 58561: 33789, - 58562: 33795, - 58563: 33752, - 58564: 33803, - 58565: 33729, - 58566: 33783, - 58567: 33799, - 58568: 33760, - 58569: 33778, - 58570: 33805, - 58571: 33826, - 58572: 33824, - 58573: 33725, - 58574: 33848, - 58575: 34054, - 58576: 33787, - 58577: 33901, - 58578: 33834, - 58579: 33852, - 58580: 34138, - 58581: 33924, - 58582: 33911, - 58583: 33899, - 58584: 33965, - 58585: 33902, - 58586: 33922, - 58587: 33897, - 58588: 33862, - 58589: 33836, - 58590: 33903, - 58591: 33913, - 58592: 33845, - 58593: 33994, - 58594: 33890, - 58595: 33977, - 58596: 33983, - 58597: 33951, - 58598: 34009, - 58599: 33997, - 58600: 33979, - 58601: 34010, - 58602: 34e3, - 58603: 33985, - 58604: 33990, - 58605: 34006, - 58606: 33953, - 58607: 34081, - 58608: 34047, - 58609: 34036, - 58610: 34071, - 58611: 34072, - 58612: 34092, - 58613: 34079, - 58614: 34069, - 58615: 34068, - 58616: 34044, - 58617: 34112, - 58618: 34147, - 58619: 34136, - 58620: 34120, - 58688: 34113, - 58689: 34306, - 58690: 34123, - 58691: 34133, - 58692: 34176, - 58693: 34212, - 58694: 34184, - 58695: 34193, - 58696: 34186, - 58697: 34216, - 58698: 34157, - 58699: 34196, - 58700: 34203, - 58701: 34282, - 58702: 34183, - 58703: 34204, - 58704: 34167, - 58705: 34174, - 58706: 34192, - 58707: 34249, - 58708: 34234, - 58709: 34255, - 58710: 34233, - 58711: 34256, - 58712: 34261, - 58713: 34269, - 58714: 34277, - 58715: 34268, - 58716: 34297, - 58717: 34314, - 58718: 34323, - 58719: 34315, - 58720: 34302, - 58721: 34298, - 58722: 34310, - 58723: 34338, - 58724: 34330, - 58725: 34352, - 58726: 34367, - 58727: 34381, - 58728: 20053, - 58729: 34388, - 58730: 34399, - 58731: 34407, - 58732: 34417, - 58733: 34451, - 58734: 34467, - 58735: 34473, - 58736: 34474, - 58737: 34443, - 58738: 34444, - 58739: 34486, - 58740: 34479, - 58741: 34500, - 58742: 34502, - 58743: 34480, - 58744: 34505, - 58745: 34851, - 58746: 34475, - 58747: 34516, - 58748: 34526, - 58749: 34537, - 58750: 34540, - 58752: 34527, - 58753: 34523, - 58754: 34543, - 58755: 34578, - 58756: 34566, - 58757: 34568, - 58758: 34560, - 58759: 34563, - 58760: 34555, - 58761: 34577, - 58762: 34569, - 58763: 34573, - 58764: 34553, - 58765: 34570, - 58766: 34612, - 58767: 34623, - 58768: 34615, - 58769: 34619, - 58770: 34597, - 58771: 34601, - 58772: 34586, - 58773: 34656, - 58774: 34655, - 58775: 34680, - 58776: 34636, - 58777: 34638, - 58778: 34676, - 58779: 34647, - 58780: 34664, - 58781: 34670, - 58782: 34649, - 58783: 34643, - 58784: 34659, - 58785: 34666, - 58786: 34821, - 58787: 34722, - 58788: 34719, - 58789: 34690, - 58790: 34735, - 58791: 34763, - 58792: 34749, - 58793: 34752, - 58794: 34768, - 58795: 38614, - 58796: 34731, - 58797: 34756, - 58798: 34739, - 58799: 34759, - 58800: 34758, - 58801: 34747, - 58802: 34799, - 58803: 34802, - 58804: 34784, - 58805: 34831, - 58806: 34829, - 58807: 34814, - 58808: 34806, - 58809: 34807, - 58810: 34830, - 58811: 34770, - 58812: 34833, - 58813: 34838, - 58814: 34837, - 58815: 34850, - 58816: 34849, - 58817: 34865, - 58818: 34870, - 58819: 34873, - 58820: 34855, - 58821: 34875, - 58822: 34884, - 58823: 34882, - 58824: 34898, - 58825: 34905, - 58826: 34910, - 58827: 34914, - 58828: 34923, - 58829: 34945, - 58830: 34942, - 58831: 34974, - 58832: 34933, - 58833: 34941, - 58834: 34997, - 58835: 34930, - 58836: 34946, - 58837: 34967, - 58838: 34962, - 58839: 34990, - 58840: 34969, - 58841: 34978, - 58842: 34957, - 58843: 34980, - 58844: 34992, - 58845: 35007, - 58846: 34993, - 58847: 35011, - 58848: 35012, - 58849: 35028, - 58850: 35032, - 58851: 35033, - 58852: 35037, - 58853: 35065, - 58854: 35074, - 58855: 35068, - 58856: 35060, - 58857: 35048, - 58858: 35058, - 58859: 35076, - 58860: 35084, - 58861: 35082, - 58862: 35091, - 58863: 35139, - 58864: 35102, - 58865: 35109, - 58866: 35114, - 58867: 35115, - 58868: 35137, - 58869: 35140, - 58870: 35131, - 58871: 35126, - 58872: 35128, - 58873: 35148, - 58874: 35101, - 58875: 35168, - 58876: 35166, - 58944: 35174, - 58945: 35172, - 58946: 35181, - 58947: 35178, - 58948: 35183, - 58949: 35188, - 58950: 35191, - 58951: 35198, - 58952: 35203, - 58953: 35208, - 58954: 35210, - 58955: 35219, - 58956: 35224, - 58957: 35233, - 58958: 35241, - 58959: 35238, - 58960: 35244, - 58961: 35247, - 58962: 35250, - 58963: 35258, - 58964: 35261, - 58965: 35263, - 58966: 35264, - 58967: 35290, - 58968: 35292, - 58969: 35293, - 58970: 35303, - 58971: 35316, - 58972: 35320, - 58973: 35331, - 58974: 35350, - 58975: 35344, - 58976: 35340, - 58977: 35355, - 58978: 35357, - 58979: 35365, - 58980: 35382, - 58981: 35393, - 58982: 35419, - 58983: 35410, - 58984: 35398, - 58985: 35400, - 58986: 35452, - 58987: 35437, - 58988: 35436, - 58989: 35426, - 58990: 35461, - 58991: 35458, - 58992: 35460, - 58993: 35496, - 58994: 35489, - 58995: 35473, - 58996: 35493, - 58997: 35494, - 58998: 35482, - 58999: 35491, - 59e3: 35524, - 59001: 35533, - 59002: 35522, - 59003: 35546, - 59004: 35563, - 59005: 35571, - 59006: 35559, - 59008: 35556, - 59009: 35569, - 59010: 35604, - 59011: 35552, - 59012: 35554, - 59013: 35575, - 59014: 35550, - 59015: 35547, - 59016: 35596, - 59017: 35591, - 59018: 35610, - 59019: 35553, - 59020: 35606, - 59021: 35600, - 59022: 35607, - 59023: 35616, - 59024: 35635, - 59025: 38827, - 59026: 35622, - 59027: 35627, - 59028: 35646, - 59029: 35624, - 59030: 35649, - 59031: 35660, - 59032: 35663, - 59033: 35662, - 59034: 35657, - 59035: 35670, - 59036: 35675, - 59037: 35674, - 59038: 35691, - 59039: 35679, - 59040: 35692, - 59041: 35695, - 59042: 35700, - 59043: 35709, - 59044: 35712, - 59045: 35724, - 59046: 35726, - 59047: 35730, - 59048: 35731, - 59049: 35734, - 59050: 35737, - 59051: 35738, - 59052: 35898, - 59053: 35905, - 59054: 35903, - 59055: 35912, - 59056: 35916, - 59057: 35918, - 59058: 35920, - 59059: 35925, - 59060: 35938, - 59061: 35948, - 59062: 35960, - 59063: 35962, - 59064: 35970, - 59065: 35977, - 59066: 35973, - 59067: 35978, - 59068: 35981, - 59069: 35982, - 59070: 35988, - 59071: 35964, - 59072: 35992, - 59073: 25117, - 59074: 36013, - 59075: 36010, - 59076: 36029, - 59077: 36018, - 59078: 36019, - 59079: 36014, - 59080: 36022, - 59081: 36040, - 59082: 36033, - 59083: 36068, - 59084: 36067, - 59085: 36058, - 59086: 36093, - 59087: 36090, - 59088: 36091, - 59089: 36100, - 59090: 36101, - 59091: 36106, - 59092: 36103, - 59093: 36111, - 59094: 36109, - 59095: 36112, - 59096: 40782, - 59097: 36115, - 59098: 36045, - 59099: 36116, - 59100: 36118, - 59101: 36199, - 59102: 36205, - 59103: 36209, - 59104: 36211, - 59105: 36225, - 59106: 36249, - 59107: 36290, - 59108: 36286, - 59109: 36282, - 59110: 36303, - 59111: 36314, - 59112: 36310, - 59113: 36300, - 59114: 36315, - 59115: 36299, - 59116: 36330, - 59117: 36331, - 59118: 36319, - 59119: 36323, - 59120: 36348, - 59121: 36360, - 59122: 36361, - 59123: 36351, - 59124: 36381, - 59125: 36382, - 59126: 36368, - 59127: 36383, - 59128: 36418, - 59129: 36405, - 59130: 36400, - 59131: 36404, - 59132: 36426, - 59200: 36423, - 59201: 36425, - 59202: 36428, - 59203: 36432, - 59204: 36424, - 59205: 36441, - 59206: 36452, - 59207: 36448, - 59208: 36394, - 59209: 36451, - 59210: 36437, - 59211: 36470, - 59212: 36466, - 59213: 36476, - 59214: 36481, - 59215: 36487, - 59216: 36485, - 59217: 36484, - 59218: 36491, - 59219: 36490, - 59220: 36499, - 59221: 36497, - 59222: 36500, - 59223: 36505, - 59224: 36522, - 59225: 36513, - 59226: 36524, - 59227: 36528, - 59228: 36550, - 59229: 36529, - 59230: 36542, - 59231: 36549, - 59232: 36552, - 59233: 36555, - 59234: 36571, - 59235: 36579, - 59236: 36604, - 59237: 36603, - 59238: 36587, - 59239: 36606, - 59240: 36618, - 59241: 36613, - 59242: 36629, - 59243: 36626, - 59244: 36633, - 59245: 36627, - 59246: 36636, - 59247: 36639, - 59248: 36635, - 59249: 36620, - 59250: 36646, - 59251: 36659, - 59252: 36667, - 59253: 36665, - 59254: 36677, - 59255: 36674, - 59256: 36670, - 59257: 36684, - 59258: 36681, - 59259: 36678, - 59260: 36686, - 59261: 36695, - 59262: 36700, - 59264: 36706, - 59265: 36707, - 59266: 36708, - 59267: 36764, - 59268: 36767, - 59269: 36771, - 59270: 36781, - 59271: 36783, - 59272: 36791, - 59273: 36826, - 59274: 36837, - 59275: 36834, - 59276: 36842, - 59277: 36847, - 59278: 36999, - 59279: 36852, - 59280: 36869, - 59281: 36857, - 59282: 36858, - 59283: 36881, - 59284: 36885, - 59285: 36897, - 59286: 36877, - 59287: 36894, - 59288: 36886, - 59289: 36875, - 59290: 36903, - 59291: 36918, - 59292: 36917, - 59293: 36921, - 59294: 36856, - 59295: 36943, - 59296: 36944, - 59297: 36945, - 59298: 36946, - 59299: 36878, - 59300: 36937, - 59301: 36926, - 59302: 36950, - 59303: 36952, - 59304: 36958, - 59305: 36968, - 59306: 36975, - 59307: 36982, - 59308: 38568, - 59309: 36978, - 59310: 36994, - 59311: 36989, - 59312: 36993, - 59313: 36992, - 59314: 37002, - 59315: 37001, - 59316: 37007, - 59317: 37032, - 59318: 37039, - 59319: 37041, - 59320: 37045, - 59321: 37090, - 59322: 37092, - 59323: 25160, - 59324: 37083, - 59325: 37122, - 59326: 37138, - 59327: 37145, - 59328: 37170, - 59329: 37168, - 59330: 37194, - 59331: 37206, - 59332: 37208, - 59333: 37219, - 59334: 37221, - 59335: 37225, - 59336: 37235, - 59337: 37234, - 59338: 37259, - 59339: 37257, - 59340: 37250, - 59341: 37282, - 59342: 37291, - 59343: 37295, - 59344: 37290, - 59345: 37301, - 59346: 37300, - 59347: 37306, - 59348: 37312, - 59349: 37313, - 59350: 37321, - 59351: 37323, - 59352: 37328, - 59353: 37334, - 59354: 37343, - 59355: 37345, - 59356: 37339, - 59357: 37372, - 59358: 37365, - 59359: 37366, - 59360: 37406, - 59361: 37375, - 59362: 37396, - 59363: 37420, - 59364: 37397, - 59365: 37393, - 59366: 37470, - 59367: 37463, - 59368: 37445, - 59369: 37449, - 59370: 37476, - 59371: 37448, - 59372: 37525, - 59373: 37439, - 59374: 37451, - 59375: 37456, - 59376: 37532, - 59377: 37526, - 59378: 37523, - 59379: 37531, - 59380: 37466, - 59381: 37583, - 59382: 37561, - 59383: 37559, - 59384: 37609, - 59385: 37647, - 59386: 37626, - 59387: 37700, - 59388: 37678, - 59456: 37657, - 59457: 37666, - 59458: 37658, - 59459: 37667, - 59460: 37690, - 59461: 37685, - 59462: 37691, - 59463: 37724, - 59464: 37728, - 59465: 37756, - 59466: 37742, - 59467: 37718, - 59468: 37808, - 59469: 37804, - 59470: 37805, - 59471: 37780, - 59472: 37817, - 59473: 37846, - 59474: 37847, - 59475: 37864, - 59476: 37861, - 59477: 37848, - 59478: 37827, - 59479: 37853, - 59480: 37840, - 59481: 37832, - 59482: 37860, - 59483: 37914, - 59484: 37908, - 59485: 37907, - 59486: 37891, - 59487: 37895, - 59488: 37904, - 59489: 37942, - 59490: 37931, - 59491: 37941, - 59492: 37921, - 59493: 37946, - 59494: 37953, - 59495: 37970, - 59496: 37956, - 59497: 37979, - 59498: 37984, - 59499: 37986, - 59500: 37982, - 59501: 37994, - 59502: 37417, - 59503: 38e3, - 59504: 38005, - 59505: 38007, - 59506: 38013, - 59507: 37978, - 59508: 38012, - 59509: 38014, - 59510: 38017, - 59511: 38015, - 59512: 38274, - 59513: 38279, - 59514: 38282, - 59515: 38292, - 59516: 38294, - 59517: 38296, - 59518: 38297, - 59520: 38304, - 59521: 38312, - 59522: 38311, - 59523: 38317, - 59524: 38332, - 59525: 38331, - 59526: 38329, - 59527: 38334, - 59528: 38346, - 59529: 28662, - 59530: 38339, - 59531: 38349, - 59532: 38348, - 59533: 38357, - 59534: 38356, - 59535: 38358, - 59536: 38364, - 59537: 38369, - 59538: 38373, - 59539: 38370, - 59540: 38433, - 59541: 38440, - 59542: 38446, - 59543: 38447, - 59544: 38466, - 59545: 38476, - 59546: 38479, - 59547: 38475, - 59548: 38519, - 59549: 38492, - 59550: 38494, - 59551: 38493, - 59552: 38495, - 59553: 38502, - 59554: 38514, - 59555: 38508, - 59556: 38541, - 59557: 38552, - 59558: 38549, - 59559: 38551, - 59560: 38570, - 59561: 38567, - 59562: 38577, - 59563: 38578, - 59564: 38576, - 59565: 38580, - 59566: 38582, - 59567: 38584, - 59568: 38585, - 59569: 38606, - 59570: 38603, - 59571: 38601, - 59572: 38605, - 59573: 35149, - 59574: 38620, - 59575: 38669, - 59576: 38613, - 59577: 38649, - 59578: 38660, - 59579: 38662, - 59580: 38664, - 59581: 38675, - 59582: 38670, - 59583: 38673, - 59584: 38671, - 59585: 38678, - 59586: 38681, - 59587: 38692, - 59588: 38698, - 59589: 38704, - 59590: 38713, - 59591: 38717, - 59592: 38718, - 59593: 38724, - 59594: 38726, - 59595: 38728, - 59596: 38722, - 59597: 38729, - 59598: 38748, - 59599: 38752, - 59600: 38756, - 59601: 38758, - 59602: 38760, - 59603: 21202, - 59604: 38763, - 59605: 38769, - 59606: 38777, - 59607: 38789, - 59608: 38780, - 59609: 38785, - 59610: 38778, - 59611: 38790, - 59612: 38795, - 59613: 38799, - 59614: 38800, - 59615: 38812, - 59616: 38824, - 59617: 38822, - 59618: 38819, - 59619: 38835, - 59620: 38836, - 59621: 38851, - 59622: 38854, - 59623: 38856, - 59624: 38859, - 59625: 38876, - 59626: 38893, - 59627: 40783, - 59628: 38898, - 59629: 31455, - 59630: 38902, - 59631: 38901, - 59632: 38927, - 59633: 38924, - 59634: 38968, - 59635: 38948, - 59636: 38945, - 59637: 38967, - 59638: 38973, - 59639: 38982, - 59640: 38991, - 59641: 38987, - 59642: 39019, - 59643: 39023, - 59644: 39024, - 59712: 39025, - 59713: 39028, - 59714: 39027, - 59715: 39082, - 59716: 39087, - 59717: 39089, - 59718: 39094, - 59719: 39108, - 59720: 39107, - 59721: 39110, - 59722: 39145, - 59723: 39147, - 59724: 39171, - 59725: 39177, - 59726: 39186, - 59727: 39188, - 59728: 39192, - 59729: 39201, - 59730: 39197, - 59731: 39198, - 59732: 39204, - 59733: 39200, - 59734: 39212, - 59735: 39214, - 59736: 39229, - 59737: 39230, - 59738: 39234, - 59739: 39241, - 59740: 39237, - 59741: 39248, - 59742: 39243, - 59743: 39249, - 59744: 39250, - 59745: 39244, - 59746: 39253, - 59747: 39319, - 59748: 39320, - 59749: 39333, - 59750: 39341, - 59751: 39342, - 59752: 39356, - 59753: 39391, - 59754: 39387, - 59755: 39389, - 59756: 39384, - 59757: 39377, - 59758: 39405, - 59759: 39406, - 59760: 39409, - 59761: 39410, - 59762: 39419, - 59763: 39416, - 59764: 39425, - 59765: 39439, - 59766: 39429, - 59767: 39394, - 59768: 39449, - 59769: 39467, - 59770: 39479, - 59771: 39493, - 59772: 39490, - 59773: 39488, - 59774: 39491, - 59776: 39486, - 59777: 39509, - 59778: 39501, - 59779: 39515, - 59780: 39511, - 59781: 39519, - 59782: 39522, - 59783: 39525, - 59784: 39524, - 59785: 39529, - 59786: 39531, - 59787: 39530, - 59788: 39597, - 59789: 39600, - 59790: 39612, - 59791: 39616, - 59792: 39631, - 59793: 39633, - 59794: 39635, - 59795: 39636, - 59796: 39646, - 59797: 39647, - 59798: 39650, - 59799: 39651, - 59800: 39654, - 59801: 39663, - 59802: 39659, - 59803: 39662, - 59804: 39668, - 59805: 39665, - 59806: 39671, - 59807: 39675, - 59808: 39686, - 59809: 39704, - 59810: 39706, - 59811: 39711, - 59812: 39714, - 59813: 39715, - 59814: 39717, - 59815: 39719, - 59816: 39720, - 59817: 39721, - 59818: 39722, - 59819: 39726, - 59820: 39727, - 59821: 39730, - 59822: 39748, - 59823: 39747, - 59824: 39759, - 59825: 39757, - 59826: 39758, - 59827: 39761, - 59828: 39768, - 59829: 39796, - 59830: 39827, - 59831: 39811, - 59832: 39825, - 59833: 39830, - 59834: 39831, - 59835: 39839, - 59836: 39840, - 59837: 39848, - 59838: 39860, - 59839: 39872, - 59840: 39882, - 59841: 39865, - 59842: 39878, - 59843: 39887, - 59844: 39889, - 59845: 39890, - 59846: 39907, - 59847: 39906, - 59848: 39908, - 59849: 39892, - 59850: 39905, - 59851: 39994, - 59852: 39922, - 59853: 39921, - 59854: 39920, - 59855: 39957, - 59856: 39956, - 59857: 39945, - 59858: 39955, - 59859: 39948, - 59860: 39942, - 59861: 39944, - 59862: 39954, - 59863: 39946, - 59864: 39940, - 59865: 39982, - 59866: 39963, - 59867: 39973, - 59868: 39972, - 59869: 39969, - 59870: 39984, - 59871: 40007, - 59872: 39986, - 59873: 40006, - 59874: 39998, - 59875: 40026, - 59876: 40032, - 59877: 40039, - 59878: 40054, - 59879: 40056, - 59880: 40167, - 59881: 40172, - 59882: 40176, - 59883: 40201, - 59884: 40200, - 59885: 40171, - 59886: 40195, - 59887: 40198, - 59888: 40234, - 59889: 40230, - 59890: 40367, - 59891: 40227, - 59892: 40223, - 59893: 40260, - 59894: 40213, - 59895: 40210, - 59896: 40257, - 59897: 40255, - 59898: 40254, - 59899: 40262, - 59900: 40264, - 59968: 40285, - 59969: 40286, - 59970: 40292, - 59971: 40273, - 59972: 40272, - 59973: 40281, - 59974: 40306, - 59975: 40329, - 59976: 40327, - 59977: 40363, - 59978: 40303, - 59979: 40314, - 59980: 40346, - 59981: 40356, - 59982: 40361, - 59983: 40370, - 59984: 40388, - 59985: 40385, - 59986: 40379, - 59987: 40376, - 59988: 40378, - 59989: 40390, - 59990: 40399, - 59991: 40386, - 59992: 40409, - 59993: 40403, - 59994: 40440, - 59995: 40422, - 59996: 40429, - 59997: 40431, - 59998: 40445, - 59999: 40474, - 6e4: 40475, - 60001: 40478, - 60002: 40565, - 60003: 40569, - 60004: 40573, - 60005: 40577, - 60006: 40584, - 60007: 40587, - 60008: 40588, - 60009: 40594, - 60010: 40597, - 60011: 40593, - 60012: 40605, - 60013: 40613, - 60014: 40617, - 60015: 40632, - 60016: 40618, - 60017: 40621, - 60018: 38753, - 60019: 40652, - 60020: 40654, - 60021: 40655, - 60022: 40656, - 60023: 40660, - 60024: 40668, - 60025: 40670, - 60026: 40669, - 60027: 40672, - 60028: 40677, - 60029: 40680, - 60030: 40687, - 60032: 40692, - 60033: 40694, - 60034: 40695, - 60035: 40697, - 60036: 40699, - 60037: 40700, - 60038: 40701, - 60039: 40711, - 60040: 40712, - 60041: 30391, - 60042: 40725, - 60043: 40737, - 60044: 40748, - 60045: 40766, - 60046: 40778, - 60047: 40786, - 60048: 40788, - 60049: 40803, - 60050: 40799, - 60051: 40800, - 60052: 40801, - 60053: 40806, - 60054: 40807, - 60055: 40812, - 60056: 40810, - 60057: 40823, - 60058: 40818, - 60059: 40822, - 60060: 40853, - 60061: 40860, - 60062: 40864, - 60063: 22575, - 60064: 27079, - 60065: 36953, - 60066: 29796, - 60067: 20956, - 60068: 29081, - 60736: 32394, - 60737: 35100, - 60738: 37704, - 60739: 37512, - 60740: 34012, - 60741: 20425, - 60742: 28859, - 60743: 26161, - 60744: 26824, - 60745: 37625, - 60746: 26363, - 60747: 24389, - 60748: 20008, - 60749: 20193, - 60750: 20220, - 60751: 20224, - 60752: 20227, - 60753: 20281, - 60754: 20310, - 60755: 20370, - 60756: 20362, - 60757: 20378, - 60758: 20372, - 60759: 20429, - 60760: 20544, - 60761: 20514, - 60762: 20479, - 60763: 20510, - 60764: 20550, - 60765: 20592, - 60766: 20546, - 60767: 20628, - 60768: 20724, - 60769: 20696, - 60770: 20810, - 60771: 20836, - 60772: 20893, - 60773: 20926, - 60774: 20972, - 60775: 21013, - 60776: 21148, - 60777: 21158, - 60778: 21184, - 60779: 21211, - 60780: 21248, - 60781: 21255, - 60782: 21284, - 60783: 21362, - 60784: 21395, - 60785: 21426, - 60786: 21469, - 60787: 64014, - 60788: 21660, - 60789: 21642, - 60790: 21673, - 60791: 21759, - 60792: 21894, - 60793: 22361, - 60794: 22373, - 60795: 22444, - 60796: 22472, - 60797: 22471, - 60798: 64015, - 60800: 64016, - 60801: 22686, - 60802: 22706, - 60803: 22795, - 60804: 22867, - 60805: 22875, - 60806: 22877, - 60807: 22883, - 60808: 22948, - 60809: 22970, - 60810: 23382, - 60811: 23488, - 60812: 29999, - 60813: 23512, - 60814: 23532, - 60815: 23582, - 60816: 23718, - 60817: 23738, - 60818: 23797, - 60819: 23847, - 60820: 23891, - 60821: 64017, - 60822: 23874, - 60823: 23917, - 60824: 23992, - 60825: 23993, - 60826: 24016, - 60827: 24353, - 60828: 24372, - 60829: 24423, - 60830: 24503, - 60831: 24542, - 60832: 24669, - 60833: 24709, - 60834: 24714, - 60835: 24798, - 60836: 24789, - 60837: 24864, - 60838: 24818, - 60839: 24849, - 60840: 24887, - 60841: 24880, - 60842: 24984, - 60843: 25107, - 60844: 25254, - 60845: 25589, - 60846: 25696, - 60847: 25757, - 60848: 25806, - 60849: 25934, - 60850: 26112, - 60851: 26133, - 60852: 26171, - 60853: 26121, - 60854: 26158, - 60855: 26142, - 60856: 26148, - 60857: 26213, - 60858: 26199, - 60859: 26201, - 60860: 64018, - 60861: 26227, - 60862: 26265, - 60863: 26272, - 60864: 26290, - 60865: 26303, - 60866: 26362, - 60867: 26382, - 60868: 63785, - 60869: 26470, - 60870: 26555, - 60871: 26706, - 60872: 26560, - 60873: 26625, - 60874: 26692, - 60875: 26831, - 60876: 64019, - 60877: 26984, - 60878: 64020, - 60879: 27032, - 60880: 27106, - 60881: 27184, - 60882: 27243, - 60883: 27206, - 60884: 27251, - 60885: 27262, - 60886: 27362, - 60887: 27364, - 60888: 27606, - 60889: 27711, - 60890: 27740, - 60891: 27782, - 60892: 27759, - 60893: 27866, - 60894: 27908, - 60895: 28039, - 60896: 28015, - 60897: 28054, - 60898: 28076, - 60899: 28111, - 60900: 28152, - 60901: 28146, - 60902: 28156, - 60903: 28217, - 60904: 28252, - 60905: 28199, - 60906: 28220, - 60907: 28351, - 60908: 28552, - 60909: 28597, - 60910: 28661, - 60911: 28677, - 60912: 28679, - 60913: 28712, - 60914: 28805, - 60915: 28843, - 60916: 28943, - 60917: 28932, - 60918: 29020, - 60919: 28998, - 60920: 28999, - 60921: 64021, - 60922: 29121, - 60923: 29182, - 60924: 29361, - 60992: 29374, - 60993: 29476, - 60994: 64022, - 60995: 29559, - 60996: 29629, - 60997: 29641, - 60998: 29654, - 60999: 29667, - 61e3: 29650, - 61001: 29703, - 61002: 29685, - 61003: 29734, - 61004: 29738, - 61005: 29737, - 61006: 29742, - 61007: 29794, - 61008: 29833, - 61009: 29855, - 61010: 29953, - 61011: 30063, - 61012: 30338, - 61013: 30364, - 61014: 30366, - 61015: 30363, - 61016: 30374, - 61017: 64023, - 61018: 30534, - 61019: 21167, - 61020: 30753, - 61021: 30798, - 61022: 30820, - 61023: 30842, - 61024: 31024, - 61025: 64024, - 61026: 64025, - 61027: 64026, - 61028: 31124, - 61029: 64027, - 61030: 31131, - 61031: 31441, - 61032: 31463, - 61033: 64028, - 61034: 31467, - 61035: 31646, - 61036: 64029, - 61037: 32072, - 61038: 32092, - 61039: 32183, - 61040: 32160, - 61041: 32214, - 61042: 32338, - 61043: 32583, - 61044: 32673, - 61045: 64030, - 61046: 33537, - 61047: 33634, - 61048: 33663, - 61049: 33735, - 61050: 33782, - 61051: 33864, - 61052: 33972, - 61053: 34131, - 61054: 34137, - 61056: 34155, - 61057: 64031, - 61058: 34224, - 61059: 64032, - 61060: 64033, - 61061: 34823, - 61062: 35061, - 61063: 35346, - 61064: 35383, - 61065: 35449, - 61066: 35495, - 61067: 35518, - 61068: 35551, - 61069: 64034, - 61070: 35574, - 61071: 35667, - 61072: 35711, - 61073: 36080, - 61074: 36084, - 61075: 36114, - 61076: 36214, - 61077: 64035, - 61078: 36559, - 61079: 64036, - 61080: 64037, - 61081: 36967, - 61082: 37086, - 61083: 64038, - 61084: 37141, - 61085: 37159, - 61086: 37338, - 61087: 37335, - 61088: 37342, - 61089: 37357, - 61090: 37358, - 61091: 37348, - 61092: 37349, - 61093: 37382, - 61094: 37392, - 61095: 37386, - 61096: 37434, - 61097: 37440, - 61098: 37436, - 61099: 37454, - 61100: 37465, - 61101: 37457, - 61102: 37433, - 61103: 37479, - 61104: 37543, - 61105: 37495, - 61106: 37496, - 61107: 37607, - 61108: 37591, - 61109: 37593, - 61110: 37584, - 61111: 64039, - 61112: 37589, - 61113: 37600, - 61114: 37587, - 61115: 37669, - 61116: 37665, - 61117: 37627, - 61118: 64040, - 61119: 37662, - 61120: 37631, - 61121: 37661, - 61122: 37634, - 61123: 37744, - 61124: 37719, - 61125: 37796, - 61126: 37830, - 61127: 37854, - 61128: 37880, - 61129: 37937, - 61130: 37957, - 61131: 37960, - 61132: 38290, - 61133: 63964, - 61134: 64041, - 61135: 38557, - 61136: 38575, - 61137: 38707, - 61138: 38715, - 61139: 38723, - 61140: 38733, - 61141: 38735, - 61142: 38737, - 61143: 38741, - 61144: 38999, - 61145: 39013, - 61146: 64042, - 61147: 64043, - 61148: 39207, - 61149: 64044, - 61150: 39326, - 61151: 39502, - 61152: 39641, - 61153: 39644, - 61154: 39797, - 61155: 39794, - 61156: 39823, - 61157: 39857, - 61158: 39867, - 61159: 39936, - 61160: 40304, - 61161: 40299, - 61162: 64045, - 61163: 40473, - 61164: 40657, - 61167: 8560, - 61168: 8561, - 61169: 8562, - 61170: 8563, - 61171: 8564, - 61172: 8565, - 61173: 8566, - 61174: 8567, - 61175: 8568, - 61176: 8569, - 61177: 65506, - 61178: 65508, - 61179: 65287, - 61180: 65282, - 61504: 57344, - 61505: 57345, - 61506: 57346, - 61507: 57347, - 61508: 57348, - 61509: 57349, - 61510: 57350, - 61511: 57351, - 61512: 57352, - 61513: 57353, - 61514: 57354, - 61515: 57355, - 61516: 57356, - 61517: 57357, - 61518: 57358, - 61519: 57359, - 61520: 57360, - 61521: 57361, - 61522: 57362, - 61523: 57363, - 61524: 57364, - 61525: 57365, - 61526: 57366, - 61527: 57367, - 61528: 57368, - 61529: 57369, - 61530: 57370, - 61531: 57371, - 61532: 57372, - 61533: 57373, - 61534: 57374, - 61535: 57375, - 61536: 57376, - 61537: 57377, - 61538: 57378, - 61539: 57379, - 61540: 57380, - 61541: 57381, - 61542: 57382, - 61543: 57383, - 61544: 57384, - 61545: 57385, - 61546: 57386, - 61547: 57387, - 61548: 57388, - 61549: 57389, - 61550: 57390, - 61551: 57391, - 61552: 57392, - 61553: 57393, - 61554: 57394, - 61555: 57395, - 61556: 57396, - 61557: 57397, - 61558: 57398, - 61559: 57399, - 61560: 57400, - 61561: 57401, - 61562: 57402, - 61563: 57403, - 61564: 57404, - 61565: 57405, - 61566: 57406, - 61568: 57407, - 61569: 57408, - 61570: 57409, - 61571: 57410, - 61572: 57411, - 61573: 57412, - 61574: 57413, - 61575: 57414, - 61576: 57415, - 61577: 57416, - 61578: 57417, - 61579: 57418, - 61580: 57419, - 61581: 57420, - 61582: 57421, - 61583: 57422, - 61584: 57423, - 61585: 57424, - 61586: 57425, - 61587: 57426, - 61588: 57427, - 61589: 57428, - 61590: 57429, - 61591: 57430, - 61592: 57431, - 61593: 57432, - 61594: 57433, - 61595: 57434, - 61596: 57435, - 61597: 57436, - 61598: 57437, - 61599: 57438, - 61600: 57439, - 61601: 57440, - 61602: 57441, - 61603: 57442, - 61604: 57443, - 61605: 57444, - 61606: 57445, - 61607: 57446, - 61608: 57447, - 61609: 57448, - 61610: 57449, - 61611: 57450, - 61612: 57451, - 61613: 57452, - 61614: 57453, - 61615: 57454, - 61616: 57455, - 61617: 57456, - 61618: 57457, - 61619: 57458, - 61620: 57459, - 61621: 57460, - 61622: 57461, - 61623: 57462, - 61624: 57463, - 61625: 57464, - 61626: 57465, - 61627: 57466, - 61628: 57467, - 61629: 57468, - 61630: 57469, - 61631: 57470, - 61632: 57471, - 61633: 57472, - 61634: 57473, - 61635: 57474, - 61636: 57475, - 61637: 57476, - 61638: 57477, - 61639: 57478, - 61640: 57479, - 61641: 57480, - 61642: 57481, - 61643: 57482, - 61644: 57483, - 61645: 57484, - 61646: 57485, - 61647: 57486, - 61648: 57487, - 61649: 57488, - 61650: 57489, - 61651: 57490, - 61652: 57491, - 61653: 57492, - 61654: 57493, - 61655: 57494, - 61656: 57495, - 61657: 57496, - 61658: 57497, - 61659: 57498, - 61660: 57499, - 61661: 57500, - 61662: 57501, - 61663: 57502, - 61664: 57503, - 61665: 57504, - 61666: 57505, - 61667: 57506, - 61668: 57507, - 61669: 57508, - 61670: 57509, - 61671: 57510, - 61672: 57511, - 61673: 57512, - 61674: 57513, - 61675: 57514, - 61676: 57515, - 61677: 57516, - 61678: 57517, - 61679: 57518, - 61680: 57519, - 61681: 57520, - 61682: 57521, - 61683: 57522, - 61684: 57523, - 61685: 57524, - 61686: 57525, - 61687: 57526, - 61688: 57527, - 61689: 57528, - 61690: 57529, - 61691: 57530, - 61692: 57531, - 61760: 57532, - 61761: 57533, - 61762: 57534, - 61763: 57535, - 61764: 57536, - 61765: 57537, - 61766: 57538, - 61767: 57539, - 61768: 57540, - 61769: 57541, - 61770: 57542, - 61771: 57543, - 61772: 57544, - 61773: 57545, - 61774: 57546, - 61775: 57547, - 61776: 57548, - 61777: 57549, - 61778: 57550, - 61779: 57551, - 61780: 57552, - 61781: 57553, - 61782: 57554, - 61783: 57555, - 61784: 57556, - 61785: 57557, - 61786: 57558, - 61787: 57559, - 61788: 57560, - 61789: 57561, - 61790: 57562, - 61791: 57563, - 61792: 57564, - 61793: 57565, - 61794: 57566, - 61795: 57567, - 61796: 57568, - 61797: 57569, - 61798: 57570, - 61799: 57571, - 61800: 57572, - 61801: 57573, - 61802: 57574, - 61803: 57575, - 61804: 57576, - 61805: 57577, - 61806: 57578, - 61807: 57579, - 61808: 57580, - 61809: 57581, - 61810: 57582, - 61811: 57583, - 61812: 57584, - 61813: 57585, - 61814: 57586, - 61815: 57587, - 61816: 57588, - 61817: 57589, - 61818: 57590, - 61819: 57591, - 61820: 57592, - 61821: 57593, - 61822: 57594, - 61824: 57595, - 61825: 57596, - 61826: 57597, - 61827: 57598, - 61828: 57599, - 61829: 57600, - 61830: 57601, - 61831: 57602, - 61832: 57603, - 61833: 57604, - 61834: 57605, - 61835: 57606, - 61836: 57607, - 61837: 57608, - 61838: 57609, - 61839: 57610, - 61840: 57611, - 61841: 57612, - 61842: 57613, - 61843: 57614, - 61844: 57615, - 61845: 57616, - 61846: 57617, - 61847: 57618, - 61848: 57619, - 61849: 57620, - 61850: 57621, - 61851: 57622, - 61852: 57623, - 61853: 57624, - 61854: 57625, - 61855: 57626, - 61856: 57627, - 61857: 57628, - 61858: 57629, - 61859: 57630, - 61860: 57631, - 61861: 57632, - 61862: 57633, - 61863: 57634, - 61864: 57635, - 61865: 57636, - 61866: 57637, - 61867: 57638, - 61868: 57639, - 61869: 57640, - 61870: 57641, - 61871: 57642, - 61872: 57643, - 61873: 57644, - 61874: 57645, - 61875: 57646, - 61876: 57647, - 61877: 57648, - 61878: 57649, - 61879: 57650, - 61880: 57651, - 61881: 57652, - 61882: 57653, - 61883: 57654, - 61884: 57655, - 61885: 57656, - 61886: 57657, - 61887: 57658, - 61888: 57659, - 61889: 57660, - 61890: 57661, - 61891: 57662, - 61892: 57663, - 61893: 57664, - 61894: 57665, - 61895: 57666, - 61896: 57667, - 61897: 57668, - 61898: 57669, - 61899: 57670, - 61900: 57671, - 61901: 57672, - 61902: 57673, - 61903: 57674, - 61904: 57675, - 61905: 57676, - 61906: 57677, - 61907: 57678, - 61908: 57679, - 61909: 57680, - 61910: 57681, - 61911: 57682, - 61912: 57683, - 61913: 57684, - 61914: 57685, - 61915: 57686, - 61916: 57687, - 61917: 57688, - 61918: 57689, - 61919: 57690, - 61920: 57691, - 61921: 57692, - 61922: 57693, - 61923: 57694, - 61924: 57695, - 61925: 57696, - 61926: 57697, - 61927: 57698, - 61928: 57699, - 61929: 57700, - 61930: 57701, - 61931: 57702, - 61932: 57703, - 61933: 57704, - 61934: 57705, - 61935: 57706, - 61936: 57707, - 61937: 57708, - 61938: 57709, - 61939: 57710, - 61940: 57711, - 61941: 57712, - 61942: 57713, - 61943: 57714, - 61944: 57715, - 61945: 57716, - 61946: 57717, - 61947: 57718, - 61948: 57719, - 62016: 57720, - 62017: 57721, - 62018: 57722, - 62019: 57723, - 62020: 57724, - 62021: 57725, - 62022: 57726, - 62023: 57727, - 62024: 57728, - 62025: 57729, - 62026: 57730, - 62027: 57731, - 62028: 57732, - 62029: 57733, - 62030: 57734, - 62031: 57735, - 62032: 57736, - 62033: 57737, - 62034: 57738, - 62035: 57739, - 62036: 57740, - 62037: 57741, - 62038: 57742, - 62039: 57743, - 62040: 57744, - 62041: 57745, - 62042: 57746, - 62043: 57747, - 62044: 57748, - 62045: 57749, - 62046: 57750, - 62047: 57751, - 62048: 57752, - 62049: 57753, - 62050: 57754, - 62051: 57755, - 62052: 57756, - 62053: 57757, - 62054: 57758, - 62055: 57759, - 62056: 57760, - 62057: 57761, - 62058: 57762, - 62059: 57763, - 62060: 57764, - 62061: 57765, - 62062: 57766, - 62063: 57767, - 62064: 57768, - 62065: 57769, - 62066: 57770, - 62067: 57771, - 62068: 57772, - 62069: 57773, - 62070: 57774, - 62071: 57775, - 62072: 57776, - 62073: 57777, - 62074: 57778, - 62075: 57779, - 62076: 57780, - 62077: 57781, - 62078: 57782, - 62080: 57783, - 62081: 57784, - 62082: 57785, - 62083: 57786, - 62084: 57787, - 62085: 57788, - 62086: 57789, - 62087: 57790, - 62088: 57791, - 62089: 57792, - 62090: 57793, - 62091: 57794, - 62092: 57795, - 62093: 57796, - 62094: 57797, - 62095: 57798, - 62096: 57799, - 62097: 57800, - 62098: 57801, - 62099: 57802, - 62100: 57803, - 62101: 57804, - 62102: 57805, - 62103: 57806, - 62104: 57807, - 62105: 57808, - 62106: 57809, - 62107: 57810, - 62108: 57811, - 62109: 57812, - 62110: 57813, - 62111: 57814, - 62112: 57815, - 62113: 57816, - 62114: 57817, - 62115: 57818, - 62116: 57819, - 62117: 57820, - 62118: 57821, - 62119: 57822, - 62120: 57823, - 62121: 57824, - 62122: 57825, - 62123: 57826, - 62124: 57827, - 62125: 57828, - 62126: 57829, - 62127: 57830, - 62128: 57831, - 62129: 57832, - 62130: 57833, - 62131: 57834, - 62132: 57835, - 62133: 57836, - 62134: 57837, - 62135: 57838, - 62136: 57839, - 62137: 57840, - 62138: 57841, - 62139: 57842, - 62140: 57843, - 62141: 57844, - 62142: 57845, - 62143: 57846, - 62144: 57847, - 62145: 57848, - 62146: 57849, - 62147: 57850, - 62148: 57851, - 62149: 57852, - 62150: 57853, - 62151: 57854, - 62152: 57855, - 62153: 57856, - 62154: 57857, - 62155: 57858, - 62156: 57859, - 62157: 57860, - 62158: 57861, - 62159: 57862, - 62160: 57863, - 62161: 57864, - 62162: 57865, - 62163: 57866, - 62164: 57867, - 62165: 57868, - 62166: 57869, - 62167: 57870, - 62168: 57871, - 62169: 57872, - 62170: 57873, - 62171: 57874, - 62172: 57875, - 62173: 57876, - 62174: 57877, - 62175: 57878, - 62176: 57879, - 62177: 57880, - 62178: 57881, - 62179: 57882, - 62180: 57883, - 62181: 57884, - 62182: 57885, - 62183: 57886, - 62184: 57887, - 62185: 57888, - 62186: 57889, - 62187: 57890, - 62188: 57891, - 62189: 57892, - 62190: 57893, - 62191: 57894, - 62192: 57895, - 62193: 57896, - 62194: 57897, - 62195: 57898, - 62196: 57899, - 62197: 57900, - 62198: 57901, - 62199: 57902, - 62200: 57903, - 62201: 57904, - 62202: 57905, - 62203: 57906, - 62204: 57907, - 62272: 57908, - 62273: 57909, - 62274: 57910, - 62275: 57911, - 62276: 57912, - 62277: 57913, - 62278: 57914, - 62279: 57915, - 62280: 57916, - 62281: 57917, - 62282: 57918, - 62283: 57919, - 62284: 57920, - 62285: 57921, - 62286: 57922, - 62287: 57923, - 62288: 57924, - 62289: 57925, - 62290: 57926, - 62291: 57927, - 62292: 57928, - 62293: 57929, - 62294: 57930, - 62295: 57931, - 62296: 57932, - 62297: 57933, - 62298: 57934, - 62299: 57935, - 62300: 57936, - 62301: 57937, - 62302: 57938, - 62303: 57939, - 62304: 57940, - 62305: 57941, - 62306: 57942, - 62307: 57943, - 62308: 57944, - 62309: 57945, - 62310: 57946, - 62311: 57947, - 62312: 57948, - 62313: 57949, - 62314: 57950, - 62315: 57951, - 62316: 57952, - 62317: 57953, - 62318: 57954, - 62319: 57955, - 62320: 57956, - 62321: 57957, - 62322: 57958, - 62323: 57959, - 62324: 57960, - 62325: 57961, - 62326: 57962, - 62327: 57963, - 62328: 57964, - 62329: 57965, - 62330: 57966, - 62331: 57967, - 62332: 57968, - 62333: 57969, - 62334: 57970, - 62336: 57971, - 62337: 57972, - 62338: 57973, - 62339: 57974, - 62340: 57975, - 62341: 57976, - 62342: 57977, - 62343: 57978, - 62344: 57979, - 62345: 57980, - 62346: 57981, - 62347: 57982, - 62348: 57983, - 62349: 57984, - 62350: 57985, - 62351: 57986, - 62352: 57987, - 62353: 57988, - 62354: 57989, - 62355: 57990, - 62356: 57991, - 62357: 57992, - 62358: 57993, - 62359: 57994, - 62360: 57995, - 62361: 57996, - 62362: 57997, - 62363: 57998, - 62364: 57999, - 62365: 58e3, - 62366: 58001, - 62367: 58002, - 62368: 58003, - 62369: 58004, - 62370: 58005, - 62371: 58006, - 62372: 58007, - 62373: 58008, - 62374: 58009, - 62375: 58010, - 62376: 58011, - 62377: 58012, - 62378: 58013, - 62379: 58014, - 62380: 58015, - 62381: 58016, - 62382: 58017, - 62383: 58018, - 62384: 58019, - 62385: 58020, - 62386: 58021, - 62387: 58022, - 62388: 58023, - 62389: 58024, - 62390: 58025, - 62391: 58026, - 62392: 58027, - 62393: 58028, - 62394: 58029, - 62395: 58030, - 62396: 58031, - 62397: 58032, - 62398: 58033, - 62399: 58034, - 62400: 58035, - 62401: 58036, - 62402: 58037, - 62403: 58038, - 62404: 58039, - 62405: 58040, - 62406: 58041, - 62407: 58042, - 62408: 58043, - 62409: 58044, - 62410: 58045, - 62411: 58046, - 62412: 58047, - 62413: 58048, - 62414: 58049, - 62415: 58050, - 62416: 58051, - 62417: 58052, - 62418: 58053, - 62419: 58054, - 62420: 58055, - 62421: 58056, - 62422: 58057, - 62423: 58058, - 62424: 58059, - 62425: 58060, - 62426: 58061, - 62427: 58062, - 62428: 58063, - 62429: 58064, - 62430: 58065, - 62431: 58066, - 62432: 58067, - 62433: 58068, - 62434: 58069, - 62435: 58070, - 62436: 58071, - 62437: 58072, - 62438: 58073, - 62439: 58074, - 62440: 58075, - 62441: 58076, - 62442: 58077, - 62443: 58078, - 62444: 58079, - 62445: 58080, - 62446: 58081, - 62447: 58082, - 62448: 58083, - 62449: 58084, - 62450: 58085, - 62451: 58086, - 62452: 58087, - 62453: 58088, - 62454: 58089, - 62455: 58090, - 62456: 58091, - 62457: 58092, - 62458: 58093, - 62459: 58094, - 62460: 58095, - 62528: 58096, - 62529: 58097, - 62530: 58098, - 62531: 58099, - 62532: 58100, - 62533: 58101, - 62534: 58102, - 62535: 58103, - 62536: 58104, - 62537: 58105, - 62538: 58106, - 62539: 58107, - 62540: 58108, - 62541: 58109, - 62542: 58110, - 62543: 58111, - 62544: 58112, - 62545: 58113, - 62546: 58114, - 62547: 58115, - 62548: 58116, - 62549: 58117, - 62550: 58118, - 62551: 58119, - 62552: 58120, - 62553: 58121, - 62554: 58122, - 62555: 58123, - 62556: 58124, - 62557: 58125, - 62558: 58126, - 62559: 58127, - 62560: 58128, - 62561: 58129, - 62562: 58130, - 62563: 58131, - 62564: 58132, - 62565: 58133, - 62566: 58134, - 62567: 58135, - 62568: 58136, - 62569: 58137, - 62570: 58138, - 62571: 58139, - 62572: 58140, - 62573: 58141, - 62574: 58142, - 62575: 58143, - 62576: 58144, - 62577: 58145, - 62578: 58146, - 62579: 58147, - 62580: 58148, - 62581: 58149, - 62582: 58150, - 62583: 58151, - 62584: 58152, - 62585: 58153, - 62586: 58154, - 62587: 58155, - 62588: 58156, - 62589: 58157, - 62590: 58158, - 62592: 58159, - 62593: 58160, - 62594: 58161, - 62595: 58162, - 62596: 58163, - 62597: 58164, - 62598: 58165, - 62599: 58166, - 62600: 58167, - 62601: 58168, - 62602: 58169, - 62603: 58170, - 62604: 58171, - 62605: 58172, - 62606: 58173, - 62607: 58174, - 62608: 58175, - 62609: 58176, - 62610: 58177, - 62611: 58178, - 62612: 58179, - 62613: 58180, - 62614: 58181, - 62615: 58182, - 62616: 58183, - 62617: 58184, - 62618: 58185, - 62619: 58186, - 62620: 58187, - 62621: 58188, - 62622: 58189, - 62623: 58190, - 62624: 58191, - 62625: 58192, - 62626: 58193, - 62627: 58194, - 62628: 58195, - 62629: 58196, - 62630: 58197, - 62631: 58198, - 62632: 58199, - 62633: 58200, - 62634: 58201, - 62635: 58202, - 62636: 58203, - 62637: 58204, - 62638: 58205, - 62639: 58206, - 62640: 58207, - 62641: 58208, - 62642: 58209, - 62643: 58210, - 62644: 58211, - 62645: 58212, - 62646: 58213, - 62647: 58214, - 62648: 58215, - 62649: 58216, - 62650: 58217, - 62651: 58218, - 62652: 58219, - 62653: 58220, - 62654: 58221, - 62655: 58222, - 62656: 58223, - 62657: 58224, - 62658: 58225, - 62659: 58226, - 62660: 58227, - 62661: 58228, - 62662: 58229, - 62663: 58230, - 62664: 58231, - 62665: 58232, - 62666: 58233, - 62667: 58234, - 62668: 58235, - 62669: 58236, - 62670: 58237, - 62671: 58238, - 62672: 58239, - 62673: 58240, - 62674: 58241, - 62675: 58242, - 62676: 58243, - 62677: 58244, - 62678: 58245, - 62679: 58246, - 62680: 58247, - 62681: 58248, - 62682: 58249, - 62683: 58250, - 62684: 58251, - 62685: 58252, - 62686: 58253, - 62687: 58254, - 62688: 58255, - 62689: 58256, - 62690: 58257, - 62691: 58258, - 62692: 58259, - 62693: 58260, - 62694: 58261, - 62695: 58262, - 62696: 58263, - 62697: 58264, - 62698: 58265, - 62699: 58266, - 62700: 58267, - 62701: 58268, - 62702: 58269, - 62703: 58270, - 62704: 58271, - 62705: 58272, - 62706: 58273, - 62707: 58274, - 62708: 58275, - 62709: 58276, - 62710: 58277, - 62711: 58278, - 62712: 58279, - 62713: 58280, - 62714: 58281, - 62715: 58282, - 62716: 58283, - 62784: 58284, - 62785: 58285, - 62786: 58286, - 62787: 58287, - 62788: 58288, - 62789: 58289, - 62790: 58290, - 62791: 58291, - 62792: 58292, - 62793: 58293, - 62794: 58294, - 62795: 58295, - 62796: 58296, - 62797: 58297, - 62798: 58298, - 62799: 58299, - 62800: 58300, - 62801: 58301, - 62802: 58302, - 62803: 58303, - 62804: 58304, - 62805: 58305, - 62806: 58306, - 62807: 58307, - 62808: 58308, - 62809: 58309, - 62810: 58310, - 62811: 58311, - 62812: 58312, - 62813: 58313, - 62814: 58314, - 62815: 58315, - 62816: 58316, - 62817: 58317, - 62818: 58318, - 62819: 58319, - 62820: 58320, - 62821: 58321, - 62822: 58322, - 62823: 58323, - 62824: 58324, - 62825: 58325, - 62826: 58326, - 62827: 58327, - 62828: 58328, - 62829: 58329, - 62830: 58330, - 62831: 58331, - 62832: 58332, - 62833: 58333, - 62834: 58334, - 62835: 58335, - 62836: 58336, - 62837: 58337, - 62838: 58338, - 62839: 58339, - 62840: 58340, - 62841: 58341, - 62842: 58342, - 62843: 58343, - 62844: 58344, - 62845: 58345, - 62846: 58346, - 62848: 58347, - 62849: 58348, - 62850: 58349, - 62851: 58350, - 62852: 58351, - 62853: 58352, - 62854: 58353, - 62855: 58354, - 62856: 58355, - 62857: 58356, - 62858: 58357, - 62859: 58358, - 62860: 58359, - 62861: 58360, - 62862: 58361, - 62863: 58362, - 62864: 58363, - 62865: 58364, - 62866: 58365, - 62867: 58366, - 62868: 58367, - 62869: 58368, - 62870: 58369, - 62871: 58370, - 62872: 58371, - 62873: 58372, - 62874: 58373, - 62875: 58374, - 62876: 58375, - 62877: 58376, - 62878: 58377, - 62879: 58378, - 62880: 58379, - 62881: 58380, - 62882: 58381, - 62883: 58382, - 62884: 58383, - 62885: 58384, - 62886: 58385, - 62887: 58386, - 62888: 58387, - 62889: 58388, - 62890: 58389, - 62891: 58390, - 62892: 58391, - 62893: 58392, - 62894: 58393, - 62895: 58394, - 62896: 58395, - 62897: 58396, - 62898: 58397, - 62899: 58398, - 62900: 58399, - 62901: 58400, - 62902: 58401, - 62903: 58402, - 62904: 58403, - 62905: 58404, - 62906: 58405, - 62907: 58406, - 62908: 58407, - 62909: 58408, - 62910: 58409, - 62911: 58410, - 62912: 58411, - 62913: 58412, - 62914: 58413, - 62915: 58414, - 62916: 58415, - 62917: 58416, - 62918: 58417, - 62919: 58418, - 62920: 58419, - 62921: 58420, - 62922: 58421, - 62923: 58422, - 62924: 58423, - 62925: 58424, - 62926: 58425, - 62927: 58426, - 62928: 58427, - 62929: 58428, - 62930: 58429, - 62931: 58430, - 62932: 58431, - 62933: 58432, - 62934: 58433, - 62935: 58434, - 62936: 58435, - 62937: 58436, - 62938: 58437, - 62939: 58438, - 62940: 58439, - 62941: 58440, - 62942: 58441, - 62943: 58442, - 62944: 58443, - 62945: 58444, - 62946: 58445, - 62947: 58446, - 62948: 58447, - 62949: 58448, - 62950: 58449, - 62951: 58450, - 62952: 58451, - 62953: 58452, - 62954: 58453, - 62955: 58454, - 62956: 58455, - 62957: 58456, - 62958: 58457, - 62959: 58458, - 62960: 58459, - 62961: 58460, - 62962: 58461, - 62963: 58462, - 62964: 58463, - 62965: 58464, - 62966: 58465, - 62967: 58466, - 62968: 58467, - 62969: 58468, - 62970: 58469, - 62971: 58470, - 62972: 58471, - 63040: 58472, - 63041: 58473, - 63042: 58474, - 63043: 58475, - 63044: 58476, - 63045: 58477, - 63046: 58478, - 63047: 58479, - 63048: 58480, - 63049: 58481, - 63050: 58482, - 63051: 58483, - 63052: 58484, - 63053: 58485, - 63054: 58486, - 63055: 58487, - 63056: 58488, - 63057: 58489, - 63058: 58490, - 63059: 58491, - 63060: 58492, - 63061: 58493, - 63062: 58494, - 63063: 58495, - 63064: 58496, - 63065: 58497, - 63066: 58498, - 63067: 58499, - 63068: 58500, - 63069: 58501, - 63070: 58502, - 63071: 58503, - 63072: 58504, - 63073: 58505, - 63074: 58506, - 63075: 58507, - 63076: 58508, - 63077: 58509, - 63078: 58510, - 63079: 58511, - 63080: 58512, - 63081: 58513, - 63082: 58514, - 63083: 58515, - 63084: 58516, - 63085: 58517, - 63086: 58518, - 63087: 58519, - 63088: 58520, - 63089: 58521, - 63090: 58522, - 63091: 58523, - 63092: 58524, - 63093: 58525, - 63094: 58526, - 63095: 58527, - 63096: 58528, - 63097: 58529, - 63098: 58530, - 63099: 58531, - 63100: 58532, - 63101: 58533, - 63102: 58534, - 63104: 58535, - 63105: 58536, - 63106: 58537, - 63107: 58538, - 63108: 58539, - 63109: 58540, - 63110: 58541, - 63111: 58542, - 63112: 58543, - 63113: 58544, - 63114: 58545, - 63115: 58546, - 63116: 58547, - 63117: 58548, - 63118: 58549, - 63119: 58550, - 63120: 58551, - 63121: 58552, - 63122: 58553, - 63123: 58554, - 63124: 58555, - 63125: 58556, - 63126: 58557, - 63127: 58558, - 63128: 58559, - 63129: 58560, - 63130: 58561, - 63131: 58562, - 63132: 58563, - 63133: 58564, - 63134: 58565, - 63135: 58566, - 63136: 58567, - 63137: 58568, - 63138: 58569, - 63139: 58570, - 63140: 58571, - 63141: 58572, - 63142: 58573, - 63143: 58574, - 63144: 58575, - 63145: 58576, - 63146: 58577, - 63147: 58578, - 63148: 58579, - 63149: 58580, - 63150: 58581, - 63151: 58582, - 63152: 58583, - 63153: 58584, - 63154: 58585, - 63155: 58586, - 63156: 58587, - 63157: 58588, - 63158: 58589, - 63159: 58590, - 63160: 58591, - 63161: 58592, - 63162: 58593, - 63163: 58594, - 63164: 58595, - 63165: 58596, - 63166: 58597, - 63167: 58598, - 63168: 58599, - 63169: 58600, - 63170: 58601, - 63171: 58602, - 63172: 58603, - 63173: 58604, - 63174: 58605, - 63175: 58606, - 63176: 58607, - 63177: 58608, - 63178: 58609, - 63179: 58610, - 63180: 58611, - 63181: 58612, - 63182: 58613, - 63183: 58614, - 63184: 58615, - 63185: 58616, - 63186: 58617, - 63187: 58618, - 63188: 58619, - 63189: 58620, - 63190: 58621, - 63191: 58622, - 63192: 58623, - 63193: 58624, - 63194: 58625, - 63195: 58626, - 63196: 58627, - 63197: 58628, - 63198: 58629, - 63199: 58630, - 63200: 58631, - 63201: 58632, - 63202: 58633, - 63203: 58634, - 63204: 58635, - 63205: 58636, - 63206: 58637, - 63207: 58638, - 63208: 58639, - 63209: 58640, - 63210: 58641, - 63211: 58642, - 63212: 58643, - 63213: 58644, - 63214: 58645, - 63215: 58646, - 63216: 58647, - 63217: 58648, - 63218: 58649, - 63219: 58650, - 63220: 58651, - 63221: 58652, - 63222: 58653, - 63223: 58654, - 63224: 58655, - 63225: 58656, - 63226: 58657, - 63227: 58658, - 63228: 58659, - 63296: 58660, - 63297: 58661, - 63298: 58662, - 63299: 58663, - 63300: 58664, - 63301: 58665, - 63302: 58666, - 63303: 58667, - 63304: 58668, - 63305: 58669, - 63306: 58670, - 63307: 58671, - 63308: 58672, - 63309: 58673, - 63310: 58674, - 63311: 58675, - 63312: 58676, - 63313: 58677, - 63314: 58678, - 63315: 58679, - 63316: 58680, - 63317: 58681, - 63318: 58682, - 63319: 58683, - 63320: 58684, - 63321: 58685, - 63322: 58686, - 63323: 58687, - 63324: 58688, - 63325: 58689, - 63326: 58690, - 63327: 58691, - 63328: 58692, - 63329: 58693, - 63330: 58694, - 63331: 58695, - 63332: 58696, - 63333: 58697, - 63334: 58698, - 63335: 58699, - 63336: 58700, - 63337: 58701, - 63338: 58702, - 63339: 58703, - 63340: 58704, - 63341: 58705, - 63342: 58706, - 63343: 58707, - 63344: 58708, - 63345: 58709, - 63346: 58710, - 63347: 58711, - 63348: 58712, - 63349: 58713, - 63350: 58714, - 63351: 58715, - 63352: 58716, - 63353: 58717, - 63354: 58718, - 63355: 58719, - 63356: 58720, - 63357: 58721, - 63358: 58722, - 63360: 58723, - 63361: 58724, - 63362: 58725, - 63363: 58726, - 63364: 58727, - 63365: 58728, - 63366: 58729, - 63367: 58730, - 63368: 58731, - 63369: 58732, - 63370: 58733, - 63371: 58734, - 63372: 58735, - 63373: 58736, - 63374: 58737, - 63375: 58738, - 63376: 58739, - 63377: 58740, - 63378: 58741, - 63379: 58742, - 63380: 58743, - 63381: 58744, - 63382: 58745, - 63383: 58746, - 63384: 58747, - 63385: 58748, - 63386: 58749, - 63387: 58750, - 63388: 58751, - 63389: 58752, - 63390: 58753, - 63391: 58754, - 63392: 58755, - 63393: 58756, - 63394: 58757, - 63395: 58758, - 63396: 58759, - 63397: 58760, - 63398: 58761, - 63399: 58762, - 63400: 58763, - 63401: 58764, - 63402: 58765, - 63403: 58766, - 63404: 58767, - 63405: 58768, - 63406: 58769, - 63407: 58770, - 63408: 58771, - 63409: 58772, - 63410: 58773, - 63411: 58774, - 63412: 58775, - 63413: 58776, - 63414: 58777, - 63415: 58778, - 63416: 58779, - 63417: 58780, - 63418: 58781, - 63419: 58782, - 63420: 58783, - 63421: 58784, - 63422: 58785, - 63423: 58786, - 63424: 58787, - 63425: 58788, - 63426: 58789, - 63427: 58790, - 63428: 58791, - 63429: 58792, - 63430: 58793, - 63431: 58794, - 63432: 58795, - 63433: 58796, - 63434: 58797, - 63435: 58798, - 63436: 58799, - 63437: 58800, - 63438: 58801, - 63439: 58802, - 63440: 58803, - 63441: 58804, - 63442: 58805, - 63443: 58806, - 63444: 58807, - 63445: 58808, - 63446: 58809, - 63447: 58810, - 63448: 58811, - 63449: 58812, - 63450: 58813, - 63451: 58814, - 63452: 58815, - 63453: 58816, - 63454: 58817, - 63455: 58818, - 63456: 58819, - 63457: 58820, - 63458: 58821, - 63459: 58822, - 63460: 58823, - 63461: 58824, - 63462: 58825, - 63463: 58826, - 63464: 58827, - 63465: 58828, - 63466: 58829, - 63467: 58830, - 63468: 58831, - 63469: 58832, - 63470: 58833, - 63471: 58834, - 63472: 58835, - 63473: 58836, - 63474: 58837, - 63475: 58838, - 63476: 58839, - 63477: 58840, - 63478: 58841, - 63479: 58842, - 63480: 58843, - 63481: 58844, - 63482: 58845, - 63483: 58846, - 63484: 58847, - 63552: 58848, - 63553: 58849, - 63554: 58850, - 63555: 58851, - 63556: 58852, - 63557: 58853, - 63558: 58854, - 63559: 58855, - 63560: 58856, - 63561: 58857, - 63562: 58858, - 63563: 58859, - 63564: 58860, - 63565: 58861, - 63566: 58862, - 63567: 58863, - 63568: 58864, - 63569: 58865, - 63570: 58866, - 63571: 58867, - 63572: 58868, - 63573: 58869, - 63574: 58870, - 63575: 58871, - 63576: 58872, - 63577: 58873, - 63578: 58874, - 63579: 58875, - 63580: 58876, - 63581: 58877, - 63582: 58878, - 63583: 58879, - 63584: 58880, - 63585: 58881, - 63586: 58882, - 63587: 58883, - 63588: 58884, - 63589: 58885, - 63590: 58886, - 63591: 58887, - 63592: 58888, - 63593: 58889, - 63594: 58890, - 63595: 58891, - 63596: 58892, - 63597: 58893, - 63598: 58894, - 63599: 58895, - 63600: 58896, - 63601: 58897, - 63602: 58898, - 63603: 58899, - 63604: 58900, - 63605: 58901, - 63606: 58902, - 63607: 58903, - 63608: 58904, - 63609: 58905, - 63610: 58906, - 63611: 58907, - 63612: 58908, - 63613: 58909, - 63614: 58910, - 63616: 58911, - 63617: 58912, - 63618: 58913, - 63619: 58914, - 63620: 58915, - 63621: 58916, - 63622: 58917, - 63623: 58918, - 63624: 58919, - 63625: 58920, - 63626: 58921, - 63627: 58922, - 63628: 58923, - 63629: 58924, - 63630: 58925, - 63631: 58926, - 63632: 58927, - 63633: 58928, - 63634: 58929, - 63635: 58930, - 63636: 58931, - 63637: 58932, - 63638: 58933, - 63639: 58934, - 63640: 58935, - 63641: 58936, - 63642: 58937, - 63643: 58938, - 63644: 58939, - 63645: 58940, - 63646: 58941, - 63647: 58942, - 63648: 58943, - 63649: 58944, - 63650: 58945, - 63651: 58946, - 63652: 58947, - 63653: 58948, - 63654: 58949, - 63655: 58950, - 63656: 58951, - 63657: 58952, - 63658: 58953, - 63659: 58954, - 63660: 58955, - 63661: 58956, - 63662: 58957, - 63663: 58958, - 63664: 58959, - 63665: 58960, - 63666: 58961, - 63667: 58962, - 63668: 58963, - 63669: 58964, - 63670: 58965, - 63671: 58966, - 63672: 58967, - 63673: 58968, - 63674: 58969, - 63675: 58970, - 63676: 58971, - 63677: 58972, - 63678: 58973, - 63679: 58974, - 63680: 58975, - 63681: 58976, - 63682: 58977, - 63683: 58978, - 63684: 58979, - 63685: 58980, - 63686: 58981, - 63687: 58982, - 63688: 58983, - 63689: 58984, - 63690: 58985, - 63691: 58986, - 63692: 58987, - 63693: 58988, - 63694: 58989, - 63695: 58990, - 63696: 58991, - 63697: 58992, - 63698: 58993, - 63699: 58994, - 63700: 58995, - 63701: 58996, - 63702: 58997, - 63703: 58998, - 63704: 58999, - 63705: 59e3, - 63706: 59001, - 63707: 59002, - 63708: 59003, - 63709: 59004, - 63710: 59005, - 63711: 59006, - 63712: 59007, - 63713: 59008, - 63714: 59009, - 63715: 59010, - 63716: 59011, - 63717: 59012, - 63718: 59013, - 63719: 59014, - 63720: 59015, - 63721: 59016, - 63722: 59017, - 63723: 59018, - 63724: 59019, - 63725: 59020, - 63726: 59021, - 63727: 59022, - 63728: 59023, - 63729: 59024, - 63730: 59025, - 63731: 59026, - 63732: 59027, - 63733: 59028, - 63734: 59029, - 63735: 59030, - 63736: 59031, - 63737: 59032, - 63738: 59033, - 63739: 59034, - 63740: 59035, - 64064: 8560, - 64065: 8561, - 64066: 8562, - 64067: 8563, - 64068: 8564, - 64069: 8565, - 64070: 8566, - 64071: 8567, - 64072: 8568, - 64073: 8569, - 64074: 8544, - 64075: 8545, - 64076: 8546, - 64077: 8547, - 64078: 8548, - 64079: 8549, - 64080: 8550, - 64081: 8551, - 64082: 8552, - 64083: 8553, - 64084: 65506, - 64085: 65508, - 64086: 65287, - 64087: 65282, - 64088: 12849, - 64089: 8470, - 64090: 8481, - 64091: 8757, - 64092: 32394, - 64093: 35100, - 64094: 37704, - 64095: 37512, - 64096: 34012, - 64097: 20425, - 64098: 28859, - 64099: 26161, - 64100: 26824, - 64101: 37625, - 64102: 26363, - 64103: 24389, - 64104: 20008, - 64105: 20193, - 64106: 20220, - 64107: 20224, - 64108: 20227, - 64109: 20281, - 64110: 20310, - 64111: 20370, - 64112: 20362, - 64113: 20378, - 64114: 20372, - 64115: 20429, - 64116: 20544, - 64117: 20514, - 64118: 20479, - 64119: 20510, - 64120: 20550, - 64121: 20592, - 64122: 20546, - 64123: 20628, - 64124: 20724, - 64125: 20696, - 64126: 20810, - 64128: 20836, - 64129: 20893, - 64130: 20926, - 64131: 20972, - 64132: 21013, - 64133: 21148, - 64134: 21158, - 64135: 21184, - 64136: 21211, - 64137: 21248, - 64138: 21255, - 64139: 21284, - 64140: 21362, - 64141: 21395, - 64142: 21426, - 64143: 21469, - 64144: 64014, - 64145: 21660, - 64146: 21642, - 64147: 21673, - 64148: 21759, - 64149: 21894, - 64150: 22361, - 64151: 22373, - 64152: 22444, - 64153: 22472, - 64154: 22471, - 64155: 64015, - 64156: 64016, - 64157: 22686, - 64158: 22706, - 64159: 22795, - 64160: 22867, - 64161: 22875, - 64162: 22877, - 64163: 22883, - 64164: 22948, - 64165: 22970, - 64166: 23382, - 64167: 23488, - 64168: 29999, - 64169: 23512, - 64170: 23532, - 64171: 23582, - 64172: 23718, - 64173: 23738, - 64174: 23797, - 64175: 23847, - 64176: 23891, - 64177: 64017, - 64178: 23874, - 64179: 23917, - 64180: 23992, - 64181: 23993, - 64182: 24016, - 64183: 24353, - 64184: 24372, - 64185: 24423, - 64186: 24503, - 64187: 24542, - 64188: 24669, - 64189: 24709, - 64190: 24714, - 64191: 24798, - 64192: 24789, - 64193: 24864, - 64194: 24818, - 64195: 24849, - 64196: 24887, - 64197: 24880, - 64198: 24984, - 64199: 25107, - 64200: 25254, - 64201: 25589, - 64202: 25696, - 64203: 25757, - 64204: 25806, - 64205: 25934, - 64206: 26112, - 64207: 26133, - 64208: 26171, - 64209: 26121, - 64210: 26158, - 64211: 26142, - 64212: 26148, - 64213: 26213, - 64214: 26199, - 64215: 26201, - 64216: 64018, - 64217: 26227, - 64218: 26265, - 64219: 26272, - 64220: 26290, - 64221: 26303, - 64222: 26362, - 64223: 26382, - 64224: 63785, - 64225: 26470, - 64226: 26555, - 64227: 26706, - 64228: 26560, - 64229: 26625, - 64230: 26692, - 64231: 26831, - 64232: 64019, - 64233: 26984, - 64234: 64020, - 64235: 27032, - 64236: 27106, - 64237: 27184, - 64238: 27243, - 64239: 27206, - 64240: 27251, - 64241: 27262, - 64242: 27362, - 64243: 27364, - 64244: 27606, - 64245: 27711, - 64246: 27740, - 64247: 27782, - 64248: 27759, - 64249: 27866, - 64250: 27908, - 64251: 28039, - 64252: 28015, - 64320: 28054, - 64321: 28076, - 64322: 28111, - 64323: 28152, - 64324: 28146, - 64325: 28156, - 64326: 28217, - 64327: 28252, - 64328: 28199, - 64329: 28220, - 64330: 28351, - 64331: 28552, - 64332: 28597, - 64333: 28661, - 64334: 28677, - 64335: 28679, - 64336: 28712, - 64337: 28805, - 64338: 28843, - 64339: 28943, - 64340: 28932, - 64341: 29020, - 64342: 28998, - 64343: 28999, - 64344: 64021, - 64345: 29121, - 64346: 29182, - 64347: 29361, - 64348: 29374, - 64349: 29476, - 64350: 64022, - 64351: 29559, - 64352: 29629, - 64353: 29641, - 64354: 29654, - 64355: 29667, - 64356: 29650, - 64357: 29703, - 64358: 29685, - 64359: 29734, - 64360: 29738, - 64361: 29737, - 64362: 29742, - 64363: 29794, - 64364: 29833, - 64365: 29855, - 64366: 29953, - 64367: 30063, - 64368: 30338, - 64369: 30364, - 64370: 30366, - 64371: 30363, - 64372: 30374, - 64373: 64023, - 64374: 30534, - 64375: 21167, - 64376: 30753, - 64377: 30798, - 64378: 30820, - 64379: 30842, - 64380: 31024, - 64381: 64024, - 64382: 64025, - 64384: 64026, - 64385: 31124, - 64386: 64027, - 64387: 31131, - 64388: 31441, - 64389: 31463, - 64390: 64028, - 64391: 31467, - 64392: 31646, - 64393: 64029, - 64394: 32072, - 64395: 32092, - 64396: 32183, - 64397: 32160, - 64398: 32214, - 64399: 32338, - 64400: 32583, - 64401: 32673, - 64402: 64030, - 64403: 33537, - 64404: 33634, - 64405: 33663, - 64406: 33735, - 64407: 33782, - 64408: 33864, - 64409: 33972, - 64410: 34131, - 64411: 34137, - 64412: 34155, - 64413: 64031, - 64414: 34224, - 64415: 64032, - 64416: 64033, - 64417: 34823, - 64418: 35061, - 64419: 35346, - 64420: 35383, - 64421: 35449, - 64422: 35495, - 64423: 35518, - 64424: 35551, - 64425: 64034, - 64426: 35574, - 64427: 35667, - 64428: 35711, - 64429: 36080, - 64430: 36084, - 64431: 36114, - 64432: 36214, - 64433: 64035, - 64434: 36559, - 64435: 64036, - 64436: 64037, - 64437: 36967, - 64438: 37086, - 64439: 64038, - 64440: 37141, - 64441: 37159, - 64442: 37338, - 64443: 37335, - 64444: 37342, - 64445: 37357, - 64446: 37358, - 64447: 37348, - 64448: 37349, - 64449: 37382, - 64450: 37392, - 64451: 37386, - 64452: 37434, - 64453: 37440, - 64454: 37436, - 64455: 37454, - 64456: 37465, - 64457: 37457, - 64458: 37433, - 64459: 37479, - 64460: 37543, - 64461: 37495, - 64462: 37496, - 64463: 37607, - 64464: 37591, - 64465: 37593, - 64466: 37584, - 64467: 64039, - 64468: 37589, - 64469: 37600, - 64470: 37587, - 64471: 37669, - 64472: 37665, - 64473: 37627, - 64474: 64040, - 64475: 37662, - 64476: 37631, - 64477: 37661, - 64478: 37634, - 64479: 37744, - 64480: 37719, - 64481: 37796, - 64482: 37830, - 64483: 37854, - 64484: 37880, - 64485: 37937, - 64486: 37957, - 64487: 37960, - 64488: 38290, - 64489: 63964, - 64490: 64041, - 64491: 38557, - 64492: 38575, - 64493: 38707, - 64494: 38715, - 64495: 38723, - 64496: 38733, - 64497: 38735, - 64498: 38737, - 64499: 38741, - 64500: 38999, - 64501: 39013, - 64502: 64042, - 64503: 64043, - 64504: 39207, - 64505: 64044, - 64506: 39326, - 64507: 39502, - 64508: 39641, - 64576: 39644, - 64577: 39797, - 64578: 39794, - 64579: 39823, - 64580: 39857, - 64581: 39867, - 64582: 39936, - 64583: 40304, - 64584: 40299, - 64585: 64045, - 64586: 40473, - 64587: 40657 -}; -function DataViewEx(buffer, littleEndian) { - this.dv = new DataView(buffer); - this.offset = 0; - this.littleEndian = littleEndian !== void 0 ? littleEndian : true; - this.encoder = new CharsetEncoder(); -} -DataViewEx.prototype = { - constructor: DataViewEx, - getInt8: function() { - var value2 = this.dv.getInt8(this.offset); - this.offset += 1; - return value2; - }, - getInt8Array: function(size2) { - var a2 = []; - for (var i = 0; i < size2; i++) { - a2.push(this.getInt8()); - } - return a2; - }, - getUint8: function() { - var value2 = this.dv.getUint8(this.offset); - this.offset += 1; - return value2; - }, - getUint8Array: function(size2) { - var a2 = []; - for (var i = 0; i < size2; i++) { - a2.push(this.getUint8()); - } - return a2; - }, - getInt16: function() { - var value2 = this.dv.getInt16(this.offset, this.littleEndian); - this.offset += 2; - return value2; - }, - getInt16Array: function(size2) { - var a2 = []; - for (var i = 0; i < size2; i++) { - a2.push(this.getInt16()); - } - return a2; - }, - getUint16: function() { - var value2 = this.dv.getUint16(this.offset, this.littleEndian); - this.offset += 2; - return value2; - }, - getUint16Array: function(size2) { - var a2 = []; - for (var i = 0; i < size2; i++) { - a2.push(this.getUint16()); - } - return a2; - }, - getInt32: function() { - var value2 = this.dv.getInt32(this.offset, this.littleEndian); - this.offset += 4; - return value2; - }, - getInt32Array: function(size2) { - var a2 = []; - for (var i = 0; i < size2; i++) { - a2.push(this.getInt32()); - } - return a2; - }, - getUint32: function() { - var value2 = this.dv.getUint32(this.offset, this.littleEndian); - this.offset += 4; - return value2; - }, - getUint32Array: function(size2) { - var a2 = []; - for (var i = 0; i < size2; i++) { - a2.push(this.getUint32()); - } - return a2; - }, - getFloat32: function() { - var value2 = this.dv.getFloat32(this.offset, this.littleEndian); - this.offset += 4; - return value2; - }, - getFloat32Array: function(size2) { - var a2 = []; - for (var i = 0; i < size2; i++) { - a2.push(this.getFloat32()); - } - return a2; - }, - getFloat64: function() { - var value2 = this.dv.getFloat64(this.offset, this.littleEndian); - this.offset += 8; - return value2; - }, - getFloat64Array: function(size2) { - var a2 = []; - for (var i = 0; i < size2; i++) { - a2.push(this.getFloat64()); - } - return a2; - }, - getIndex: function(type, isUnsigned) { - switch (type) { - case 1: - return isUnsigned === true ? this.getUint8() : this.getInt8(); - case 2: - return isUnsigned === true ? this.getUint16() : this.getInt16(); - case 4: - return this.getInt32(); - default: - throw "unknown number type " + type + " exception."; - } - }, - getIndexArray: function(type, size2, isUnsigned) { - var a2 = []; - for (var i = 0; i < size2; i++) { - a2.push(this.getIndex(type, isUnsigned)); - } - return a2; - }, - getChars: function(size2) { - var str = ""; - while (size2 > 0) { - var value2 = this.getUint8(); - size2--; - if (value2 === 0) { - break; - } - str += String.fromCharCode(value2); - } - while (size2 > 0) { - this.getUint8(); - size2--; - } - return str; - }, - getSjisStringsAsUnicode: function(size2) { - var a2 = []; - while (size2 > 0) { - var value2 = this.getUint8(); - size2--; - if (value2 === 0) { - break; - } - a2.push(value2); - } - while (size2 > 0) { - this.getUint8(); - size2--; - } - return this.encoder.s2u(new Uint8Array(a2)); - }, - getUnicodeStrings: function(size2) { - var str = ""; - while (size2 > 0) { - var value2 = this.getUint16(); - size2 -= 2; - if (value2 === 0) { - break; - } - str += String.fromCharCode(value2); - } - while (size2 > 0) { - this.getUint8(); - size2--; - } - return str; - }, - getTextBuffer: function() { - var size2 = this.getUint32(); - return this.getUnicodeStrings(size2); - } -}; -function DataCreationHelper() { -} -DataCreationHelper.prototype = { - constructor: DataCreationHelper, - leftToRightVector3: function(v) { - v[2] = -v[2]; - }, - leftToRightQuaternion: function(q2) { - q2[0] = -q2[0]; - q2[1] = -q2[1]; - }, - leftToRightEuler: function(r) { - r[0] = -r[0]; - r[1] = -r[1]; - }, - leftToRightIndexOrder: function(p2) { - var tmp = p2[2]; - p2[2] = p2[0]; - p2[0] = tmp; - }, - leftToRightVector3Range: function(v12, v2) { - var tmp = -v2[2]; - v2[2] = -v12[2]; - v12[2] = tmp; - }, - leftToRightEulerRange: function(r1, r2) { - var tmp1 = -r2[0]; - var tmp2 = -r2[1]; - r2[0] = -r1[0]; - r2[1] = -r1[1]; - r1[0] = tmp1; - r1[1] = tmp2; - } -}; -function Parser() { -} -Parser.prototype.parsePmd = function(buffer, leftToRight) { - var pmd = {}; - var dv = new DataViewEx(buffer); - pmd.metadata = {}; - pmd.metadata.format = "pmd"; - pmd.metadata.coordinateSystem = "left"; - var parseHeader = function() { - var metadata = pmd.metadata; - metadata.magic = dv.getChars(3); - if (metadata.magic !== "Pmd") { - throw "PMD file magic is not Pmd, but " + metadata.magic; - } - metadata.version = dv.getFloat32(); - metadata.modelName = dv.getSjisStringsAsUnicode(20); - metadata.comment = dv.getSjisStringsAsUnicode(256); - }; - var parseVertices = function() { - var parseVertex = function() { - var p2 = {}; - p2.position = dv.getFloat32Array(3); - p2.normal = dv.getFloat32Array(3); - p2.uv = dv.getFloat32Array(2); - p2.skinIndices = dv.getUint16Array(2); - p2.skinWeights = [dv.getUint8() / 100]; - p2.skinWeights.push(1 - p2.skinWeights[0]); - p2.edgeFlag = dv.getUint8(); - return p2; - }; - var metadata = pmd.metadata; - metadata.vertexCount = dv.getUint32(); - pmd.vertices = []; - for (var i = 0; i < metadata.vertexCount; i++) { - pmd.vertices.push(parseVertex()); - } - }; - var parseFaces = function() { - var parseFace = function() { - var p2 = {}; - p2.indices = dv.getUint16Array(3); - return p2; - }; - var metadata = pmd.metadata; - metadata.faceCount = dv.getUint32() / 3; - pmd.faces = []; - for (var i = 0; i < metadata.faceCount; i++) { - pmd.faces.push(parseFace()); - } - }; - var parseMaterials = function() { - var parseMaterial = function() { - var p2 = {}; - p2.diffuse = dv.getFloat32Array(4); - p2.shininess = dv.getFloat32(); - p2.specular = dv.getFloat32Array(3); - p2.ambient = dv.getFloat32Array(3); - p2.toonIndex = dv.getInt8(); - p2.edgeFlag = dv.getUint8(); - p2.faceCount = dv.getUint32() / 3; - p2.fileName = dv.getSjisStringsAsUnicode(20); - return p2; - }; - var metadata = pmd.metadata; - metadata.materialCount = dv.getUint32(); - pmd.materials = []; - for (var i = 0; i < metadata.materialCount; i++) { - pmd.materials.push(parseMaterial()); - } - }; - var parseBones = function() { - var parseBone = function() { - var p2 = {}; - p2.name = dv.getSjisStringsAsUnicode(20); - p2.parentIndex = dv.getInt16(); - p2.tailIndex = dv.getInt16(); - p2.type = dv.getUint8(); - p2.ikIndex = dv.getInt16(); - p2.position = dv.getFloat32Array(3); - return p2; - }; - var metadata = pmd.metadata; - metadata.boneCount = dv.getUint16(); - pmd.bones = []; - for (var i = 0; i < metadata.boneCount; i++) { - pmd.bones.push(parseBone()); - } - }; - var parseIks = function() { - var parseIk = function() { - var p2 = {}; - p2.target = dv.getUint16(); - p2.effector = dv.getUint16(); - p2.linkCount = dv.getUint8(); - p2.iteration = dv.getUint16(); - p2.maxAngle = dv.getFloat32(); - p2.links = []; - for (var i2 = 0; i2 < p2.linkCount; i2++) { - var link = {}; - link.index = dv.getUint16(); - p2.links.push(link); - } - return p2; - }; - var metadata = pmd.metadata; - metadata.ikCount = dv.getUint16(); - pmd.iks = []; - for (var i = 0; i < metadata.ikCount; i++) { - pmd.iks.push(parseIk()); - } - }; - var parseMorphs = function() { - var parseMorph = function() { - var p2 = {}; - p2.name = dv.getSjisStringsAsUnicode(20); - p2.elementCount = dv.getUint32(); - p2.type = dv.getUint8(); - p2.elements = []; - for (var i2 = 0; i2 < p2.elementCount; i2++) { - p2.elements.push({ - index: dv.getUint32(), - position: dv.getFloat32Array(3) - }); - } - return p2; - }; - var metadata = pmd.metadata; - metadata.morphCount = dv.getUint16(); - pmd.morphs = []; - for (var i = 0; i < metadata.morphCount; i++) { - pmd.morphs.push(parseMorph()); - } - }; - var parseMorphFrames = function() { - var parseMorphFrame = function() { - var p2 = {}; - p2.index = dv.getUint16(); - return p2; - }; - var metadata = pmd.metadata; - metadata.morphFrameCount = dv.getUint8(); - pmd.morphFrames = []; - for (var i = 0; i < metadata.morphFrameCount; i++) { - pmd.morphFrames.push(parseMorphFrame()); - } - }; - var parseBoneFrameNames = function() { - var parseBoneFrameName = function() { - var p2 = {}; - p2.name = dv.getSjisStringsAsUnicode(50); - return p2; - }; - var metadata = pmd.metadata; - metadata.boneFrameNameCount = dv.getUint8(); - pmd.boneFrameNames = []; - for (var i = 0; i < metadata.boneFrameNameCount; i++) { - pmd.boneFrameNames.push(parseBoneFrameName()); - } - }; - var parseBoneFrames = function() { - var parseBoneFrame = function() { - var p2 = {}; - p2.boneIndex = dv.getInt16(); - p2.frameIndex = dv.getUint8(); - return p2; - }; - var metadata = pmd.metadata; - metadata.boneFrameCount = dv.getUint32(); - pmd.boneFrames = []; - for (var i = 0; i < metadata.boneFrameCount; i++) { - pmd.boneFrames.push(parseBoneFrame()); - } - }; - var parseEnglishHeader = function() { - var metadata = pmd.metadata; - metadata.englishCompatibility = dv.getUint8(); - if (metadata.englishCompatibility > 0) { - metadata.englishModelName = dv.getSjisStringsAsUnicode(20); - metadata.englishComment = dv.getSjisStringsAsUnicode(256); - } - }; - var parseEnglishBoneNames = function() { - var parseEnglishBoneName = function() { - var p2 = {}; - p2.name = dv.getSjisStringsAsUnicode(20); - return p2; - }; - var metadata = pmd.metadata; - if (metadata.englishCompatibility === 0) { - return; - } - pmd.englishBoneNames = []; - for (var i = 0; i < metadata.boneCount; i++) { - pmd.englishBoneNames.push(parseEnglishBoneName()); - } - }; - var parseEnglishMorphNames = function() { - var parseEnglishMorphName = function() { - var p2 = {}; - p2.name = dv.getSjisStringsAsUnicode(20); - return p2; - }; - var metadata = pmd.metadata; - if (metadata.englishCompatibility === 0) { - return; - } - pmd.englishMorphNames = []; - for (var i = 0; i < metadata.morphCount - 1; i++) { - pmd.englishMorphNames.push(parseEnglishMorphName()); - } - }; - var parseEnglishBoneFrameNames = function() { - var parseEnglishBoneFrameName = function() { - var p2 = {}; - p2.name = dv.getSjisStringsAsUnicode(50); - return p2; - }; - var metadata = pmd.metadata; - if (metadata.englishCompatibility === 0) { - return; - } - pmd.englishBoneFrameNames = []; - for (var i = 0; i < metadata.boneFrameNameCount; i++) { - pmd.englishBoneFrameNames.push(parseEnglishBoneFrameName()); - } - }; - var parseToonTextures = function() { - var parseToonTexture = function() { - var p2 = {}; - p2.fileName = dv.getSjisStringsAsUnicode(100); - return p2; - }; - pmd.toonTextures = []; - for (var i = 0; i < 10; i++) { - pmd.toonTextures.push(parseToonTexture()); - } - }; - var parseRigidBodies = function() { - var parseRigidBody = function() { - var p2 = {}; - p2.name = dv.getSjisStringsAsUnicode(20); - p2.boneIndex = dv.getInt16(); - p2.groupIndex = dv.getUint8(); - p2.groupTarget = dv.getUint16(); - p2.shapeType = dv.getUint8(); - p2.width = dv.getFloat32(); - p2.height = dv.getFloat32(); - p2.depth = dv.getFloat32(); - p2.position = dv.getFloat32Array(3); - p2.rotation = dv.getFloat32Array(3); - p2.weight = dv.getFloat32(); - p2.positionDamping = dv.getFloat32(); - p2.rotationDamping = dv.getFloat32(); - p2.restitution = dv.getFloat32(); - p2.friction = dv.getFloat32(); - p2.type = dv.getUint8(); - return p2; - }; - var metadata = pmd.metadata; - metadata.rigidBodyCount = dv.getUint32(); - pmd.rigidBodies = []; - for (var i = 0; i < metadata.rigidBodyCount; i++) { - pmd.rigidBodies.push(parseRigidBody()); - } - }; - var parseConstraints = function() { - var parseConstraint = function() { - var p2 = {}; - p2.name = dv.getSjisStringsAsUnicode(20); - p2.rigidBodyIndex1 = dv.getUint32(); - p2.rigidBodyIndex2 = dv.getUint32(); - p2.position = dv.getFloat32Array(3); - p2.rotation = dv.getFloat32Array(3); - p2.translationLimitation1 = dv.getFloat32Array(3); - p2.translationLimitation2 = dv.getFloat32Array(3); - p2.rotationLimitation1 = dv.getFloat32Array(3); - p2.rotationLimitation2 = dv.getFloat32Array(3); - p2.springPosition = dv.getFloat32Array(3); - p2.springRotation = dv.getFloat32Array(3); - return p2; - }; - var metadata = pmd.metadata; - metadata.constraintCount = dv.getUint32(); - pmd.constraints = []; - for (var i = 0; i < metadata.constraintCount; i++) { - pmd.constraints.push(parseConstraint()); - } - }; - parseHeader(); - parseVertices(); - parseFaces(); - parseMaterials(); - parseBones(); - parseIks(); - parseMorphs(); - parseMorphFrames(); - parseBoneFrameNames(); - parseBoneFrames(); - parseEnglishHeader(); - parseEnglishBoneNames(); - parseEnglishMorphNames(); - parseEnglishBoneFrameNames(); - parseToonTextures(); - parseRigidBodies(); - parseConstraints(); - if (leftToRight === true) this.leftToRightModel(pmd); - return pmd; -}; -Parser.prototype.parsePmx = function(buffer, leftToRight) { - var pmx = {}; - var dv = new DataViewEx(buffer); - pmx.metadata = {}; - pmx.metadata.format = "pmx"; - pmx.metadata.coordinateSystem = "left"; - var parseHeader = function() { - var metadata = pmx.metadata; - metadata.magic = dv.getChars(4); - if (metadata.magic !== "PMX ") { - throw "PMX file magic is not PMX , but " + metadata.magic; - } - metadata.version = dv.getFloat32(); - if (metadata.version !== 2 && metadata.version !== 2.1) { - throw "PMX version " + metadata.version + " is not supported."; - } - metadata.headerSize = dv.getUint8(); - metadata.encoding = dv.getUint8(); - metadata.additionalUvNum = dv.getUint8(); - metadata.vertexIndexSize = dv.getUint8(); - metadata.textureIndexSize = dv.getUint8(); - metadata.materialIndexSize = dv.getUint8(); - metadata.boneIndexSize = dv.getUint8(); - metadata.morphIndexSize = dv.getUint8(); - metadata.rigidBodyIndexSize = dv.getUint8(); - metadata.modelName = dv.getTextBuffer(); - metadata.englishModelName = dv.getTextBuffer(); - metadata.comment = dv.getTextBuffer(); - metadata.englishComment = dv.getTextBuffer(); - }; - var parseVertices = function() { - var parseVertex = function() { - var p2 = {}; - p2.position = dv.getFloat32Array(3); - p2.normal = dv.getFloat32Array(3); - p2.uv = dv.getFloat32Array(2); - p2.auvs = []; - for (var i2 = 0; i2 < pmx.metadata.additionalUvNum; i2++) { - p2.auvs.push(dv.getFloat32Array(4)); - } - p2.type = dv.getUint8(); - var indexSize = metadata.boneIndexSize; - if (p2.type === 0) { - p2.skinIndices = dv.getIndexArray(indexSize, 1); - p2.skinWeights = [1]; - } else if (p2.type === 1) { - p2.skinIndices = dv.getIndexArray(indexSize, 2); - p2.skinWeights = dv.getFloat32Array(1); - p2.skinWeights.push(1 - p2.skinWeights[0]); - } else if (p2.type === 2) { - p2.skinIndices = dv.getIndexArray(indexSize, 4); - p2.skinWeights = dv.getFloat32Array(4); - } else if (p2.type === 3) { - p2.skinIndices = dv.getIndexArray(indexSize, 2); - p2.skinWeights = dv.getFloat32Array(1); - p2.skinWeights.push(1 - p2.skinWeights[0]); - p2.skinC = dv.getFloat32Array(3); - p2.skinR0 = dv.getFloat32Array(3); - p2.skinR1 = dv.getFloat32Array(3); - p2.type = 1; - } else { - throw "unsupport bone type " + p2.type + " exception."; - } - p2.edgeRatio = dv.getFloat32(); - return p2; - }; - var metadata = pmx.metadata; - metadata.vertexCount = dv.getUint32(); - pmx.vertices = []; - for (var i = 0; i < metadata.vertexCount; i++) { - pmx.vertices.push(parseVertex()); - } - }; - var parseFaces = function() { - var parseFace = function() { - var p2 = {}; - p2.indices = dv.getIndexArray(metadata.vertexIndexSize, 3, true); - return p2; - }; - var metadata = pmx.metadata; - metadata.faceCount = dv.getUint32() / 3; - pmx.faces = []; - for (var i = 0; i < metadata.faceCount; i++) { - pmx.faces.push(parseFace()); - } - }; - var parseTextures = function() { - var parseTexture = function() { - return dv.getTextBuffer(); - }; - var metadata = pmx.metadata; - metadata.textureCount = dv.getUint32(); - pmx.textures = []; - for (var i = 0; i < metadata.textureCount; i++) { - pmx.textures.push(parseTexture()); - } - }; - var parseMaterials = function() { - var parseMaterial = function() { - var p2 = {}; - p2.name = dv.getTextBuffer(); - p2.englishName = dv.getTextBuffer(); - p2.diffuse = dv.getFloat32Array(4); - p2.specular = dv.getFloat32Array(3); - p2.shininess = dv.getFloat32(); - p2.ambient = dv.getFloat32Array(3); - p2.flag = dv.getUint8(); - p2.edgeColor = dv.getFloat32Array(4); - p2.edgeSize = dv.getFloat32(); - p2.textureIndex = dv.getIndex(pmx.metadata.textureIndexSize); - p2.envTextureIndex = dv.getIndex(pmx.metadata.textureIndexSize); - p2.envFlag = dv.getUint8(); - p2.toonFlag = dv.getUint8(); - if (p2.toonFlag === 0) { - p2.toonIndex = dv.getIndex(pmx.metadata.textureIndexSize); - } else if (p2.toonFlag === 1) { - p2.toonIndex = dv.getInt8(); - } else { - throw "unknown toon flag " + p2.toonFlag + " exception."; - } - p2.comment = dv.getTextBuffer(); - p2.faceCount = dv.getUint32() / 3; - return p2; - }; - var metadata = pmx.metadata; - metadata.materialCount = dv.getUint32(); - pmx.materials = []; - for (var i = 0; i < metadata.materialCount; i++) { - pmx.materials.push(parseMaterial()); - } - }; - var parseBones = function() { - var parseBone = function() { - var p2 = {}; - p2.name = dv.getTextBuffer(); - p2.englishName = dv.getTextBuffer(); - p2.position = dv.getFloat32Array(3); - p2.parentIndex = dv.getIndex(pmx.metadata.boneIndexSize); - p2.transformationClass = dv.getUint32(); - p2.flag = dv.getUint16(); - if (p2.flag & 1) { - p2.connectIndex = dv.getIndex(pmx.metadata.boneIndexSize); - } else { - p2.offsetPosition = dv.getFloat32Array(3); - } - if (p2.flag & 256 || p2.flag & 512) { - var grant = {}; - grant.isLocal = (p2.flag & 128) !== 0 ? true : false; - grant.affectRotation = (p2.flag & 256) !== 0 ? true : false; - grant.affectPosition = (p2.flag & 512) !== 0 ? true : false; - grant.parentIndex = dv.getIndex(pmx.metadata.boneIndexSize); - grant.ratio = dv.getFloat32(); - p2.grant = grant; - } - if (p2.flag & 1024) { - p2.fixAxis = dv.getFloat32Array(3); - } - if (p2.flag & 2048) { - p2.localXVector = dv.getFloat32Array(3); - p2.localZVector = dv.getFloat32Array(3); - } - if (p2.flag & 8192) { - p2.key = dv.getUint32(); - } - if (p2.flag & 32) { - var ik = {}; - ik.effector = dv.getIndex(pmx.metadata.boneIndexSize); - ik.target = null; - ik.iteration = dv.getUint32(); - ik.maxAngle = dv.getFloat32(); - ik.linkCount = dv.getUint32(); - ik.links = []; - for (var i2 = 0; i2 < ik.linkCount; i2++) { - var link = {}; - link.index = dv.getIndex(pmx.metadata.boneIndexSize); - link.angleLimitation = dv.getUint8(); - if (link.angleLimitation === 1) { - link.lowerLimitationAngle = dv.getFloat32Array(3); - link.upperLimitationAngle = dv.getFloat32Array(3); - } - ik.links.push(link); - } - p2.ik = ik; - } - return p2; - }; - var metadata = pmx.metadata; - metadata.boneCount = dv.getUint32(); - pmx.bones = []; - for (var i = 0; i < metadata.boneCount; i++) { - pmx.bones.push(parseBone()); - } - }; - var parseMorphs = function() { - var parseMorph = function() { - var p2 = {}; - p2.name = dv.getTextBuffer(); - p2.englishName = dv.getTextBuffer(); - p2.panel = dv.getUint8(); - p2.type = dv.getUint8(); - p2.elementCount = dv.getUint32(); - p2.elements = []; - for (var i2 = 0; i2 < p2.elementCount; i2++) { - if (p2.type === 0) { - var m = {}; - m.index = dv.getIndex(pmx.metadata.morphIndexSize); - m.ratio = dv.getFloat32(); - p2.elements.push(m); - } else if (p2.type === 1) { - var m = {}; - m.index = dv.getIndex(pmx.metadata.vertexIndexSize, true); - m.position = dv.getFloat32Array(3); - p2.elements.push(m); - } else if (p2.type === 2) { - var m = {}; - m.index = dv.getIndex(pmx.metadata.boneIndexSize); - m.position = dv.getFloat32Array(3); - m.rotation = dv.getFloat32Array(4); - p2.elements.push(m); - } else if (p2.type === 3) { - var m = {}; - m.index = dv.getIndex(pmx.metadata.vertexIndexSize, true); - m.uv = dv.getFloat32Array(4); - p2.elements.push(m); - } else if (p2.type === 4) { - } else if (p2.type === 5) { - } else if (p2.type === 6) { - } else if (p2.type === 7) { - } else if (p2.type === 8) { - var m = {}; - m.index = dv.getIndex(pmx.metadata.materialIndexSize); - m.type = dv.getUint8(); - m.diffuse = dv.getFloat32Array(4); - m.specular = dv.getFloat32Array(3); - m.shininess = dv.getFloat32(); - m.ambient = dv.getFloat32Array(3); - m.edgeColor = dv.getFloat32Array(4); - m.edgeSize = dv.getFloat32(); - m.textureColor = dv.getFloat32Array(4); - m.sphereTextureColor = dv.getFloat32Array(4); - m.toonColor = dv.getFloat32Array(4); - p2.elements.push(m); - } - } - return p2; - }; - var metadata = pmx.metadata; - metadata.morphCount = dv.getUint32(); - pmx.morphs = []; - for (var i = 0; i < metadata.morphCount; i++) { - pmx.morphs.push(parseMorph()); - } - }; - var parseFrames = function() { - var parseFrame = function() { - var p2 = {}; - p2.name = dv.getTextBuffer(); - p2.englishName = dv.getTextBuffer(); - p2.type = dv.getUint8(); - p2.elementCount = dv.getUint32(); - p2.elements = []; - for (var i2 = 0; i2 < p2.elementCount; i2++) { - var e = {}; - e.target = dv.getUint8(); - e.index = e.target === 0 ? dv.getIndex(pmx.metadata.boneIndexSize) : dv.getIndex(pmx.metadata.morphIndexSize); - p2.elements.push(e); - } - return p2; - }; - var metadata = pmx.metadata; - metadata.frameCount = dv.getUint32(); - pmx.frames = []; - for (var i = 0; i < metadata.frameCount; i++) { - pmx.frames.push(parseFrame()); - } - }; - var parseRigidBodies = function() { - var parseRigidBody = function() { - var p2 = {}; - p2.name = dv.getTextBuffer(); - p2.englishName = dv.getTextBuffer(); - p2.boneIndex = dv.getIndex(pmx.metadata.boneIndexSize); - p2.groupIndex = dv.getUint8(); - p2.groupTarget = dv.getUint16(); - p2.shapeType = dv.getUint8(); - p2.width = dv.getFloat32(); - p2.height = dv.getFloat32(); - p2.depth = dv.getFloat32(); - p2.position = dv.getFloat32Array(3); - p2.rotation = dv.getFloat32Array(3); - p2.weight = dv.getFloat32(); - p2.positionDamping = dv.getFloat32(); - p2.rotationDamping = dv.getFloat32(); - p2.restitution = dv.getFloat32(); - p2.friction = dv.getFloat32(); - p2.type = dv.getUint8(); - return p2; - }; - var metadata = pmx.metadata; - metadata.rigidBodyCount = dv.getUint32(); - pmx.rigidBodies = []; - for (var i = 0; i < metadata.rigidBodyCount; i++) { - pmx.rigidBodies.push(parseRigidBody()); - } - }; - var parseConstraints = function() { - var parseConstraint = function() { - var p2 = {}; - p2.name = dv.getTextBuffer(); - p2.englishName = dv.getTextBuffer(); - p2.type = dv.getUint8(); - p2.rigidBodyIndex1 = dv.getIndex(pmx.metadata.rigidBodyIndexSize); - p2.rigidBodyIndex2 = dv.getIndex(pmx.metadata.rigidBodyIndexSize); - p2.position = dv.getFloat32Array(3); - p2.rotation = dv.getFloat32Array(3); - p2.translationLimitation1 = dv.getFloat32Array(3); - p2.translationLimitation2 = dv.getFloat32Array(3); - p2.rotationLimitation1 = dv.getFloat32Array(3); - p2.rotationLimitation2 = dv.getFloat32Array(3); - p2.springPosition = dv.getFloat32Array(3); - p2.springRotation = dv.getFloat32Array(3); - return p2; - }; - var metadata = pmx.metadata; - metadata.constraintCount = dv.getUint32(); - pmx.constraints = []; - for (var i = 0; i < metadata.constraintCount; i++) { - pmx.constraints.push(parseConstraint()); - } - }; - parseHeader(); - parseVertices(); - parseFaces(); - parseTextures(); - parseMaterials(); - parseBones(); - parseMorphs(); - parseFrames(); - parseRigidBodies(); - parseConstraints(); - if (leftToRight === true) this.leftToRightModel(pmx); - return pmx; -}; -Parser.prototype.parseVmd = function(buffer, leftToRight) { - var vmd = {}; - var dv = new DataViewEx(buffer); - vmd.metadata = {}; - vmd.metadata.coordinateSystem = "left"; - var parseHeader = function() { - var metadata = vmd.metadata; - metadata.magic = dv.getChars(30); - if (metadata.magic !== "Vocaloid Motion Data 0002") { - throw "VMD file magic is not Vocaloid Motion Data 0002, but " + metadata.magic; - } - metadata.name = dv.getSjisStringsAsUnicode(20); - }; - var parseMotions = function() { - var parseMotion = function() { - var p2 = {}; - p2.boneName = dv.getSjisStringsAsUnicode(15); - p2.frameNum = dv.getUint32(); - p2.position = dv.getFloat32Array(3); - p2.rotation = dv.getFloat32Array(4); - p2.interpolation = dv.getUint8Array(64); - return p2; - }; - var metadata = vmd.metadata; - metadata.motionCount = dv.getUint32(); - vmd.motions = []; - for (var i = 0; i < metadata.motionCount; i++) { - vmd.motions.push(parseMotion()); - } - }; - var parseMorphs = function() { - var parseMorph = function() { - var p2 = {}; - p2.morphName = dv.getSjisStringsAsUnicode(15); - p2.frameNum = dv.getUint32(); - p2.weight = dv.getFloat32(); - return p2; - }; - var metadata = vmd.metadata; - metadata.morphCount = dv.getUint32(); - vmd.morphs = []; - for (var i = 0; i < metadata.morphCount; i++) { - vmd.morphs.push(parseMorph()); - } - }; - var parseCameras = function() { - var parseCamera = function() { - var p2 = {}; - p2.frameNum = dv.getUint32(); - p2.distance = dv.getFloat32(); - p2.position = dv.getFloat32Array(3); - p2.rotation = dv.getFloat32Array(3); - p2.interpolation = dv.getUint8Array(24); - p2.fov = dv.getUint32(); - p2.perspective = dv.getUint8(); - return p2; - }; - var metadata = vmd.metadata; - metadata.cameraCount = dv.getUint32(); - vmd.cameras = []; - for (var i = 0; i < metadata.cameraCount; i++) { - vmd.cameras.push(parseCamera()); - } - }; - parseHeader(); - parseMotions(); - parseMorphs(); - parseCameras(); - if (leftToRight === true) this.leftToRightVmd(vmd); - return vmd; -}; -Parser.prototype.parseVpd = function(text2, leftToRight) { - var vpd = {}; - vpd.metadata = {}; - vpd.metadata.coordinateSystem = "left"; - vpd.bones = []; - var commentPatternG = /\/\/\w*(\r|\n|\r\n)/g; - var newlinePattern = /\r|\n|\r\n/; - var lines = text2.replace(commentPatternG, "").split(newlinePattern); - function throwError() { - throw "the file seems not vpd file."; - } - function checkMagic() { - if (lines[0] !== "Vocaloid Pose Data file") { - throwError(); - } - } - function parseHeader() { - if (lines.length < 4) { - throwError(); - } - vpd.metadata.parentFile = lines[2]; - vpd.metadata.boneCount = parseInt(lines[3]); - } - function parseBones() { - var boneHeaderPattern = /^\s*(Bone[0-9]+)\s*\{\s*(.*)$/; - var boneVectorPattern = /^\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*;/; - var boneQuaternionPattern = /^\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*;/; - var boneFooterPattern = /^\s*}/; - var bones = vpd.bones; - var n2 = null; - var v = null; - var q2 = null; - for (var i = 4; i < lines.length; i++) { - var line2 = lines[i]; - var result; - result = line2.match(boneHeaderPattern); - if (result !== null) { - if (n2 !== null) { - throwError(); - } - n2 = result[2]; - } - result = line2.match(boneVectorPattern); - if (result !== null) { - if (v !== null) { - throwError(); - } - v = [ - parseFloat(result[1]), - parseFloat(result[2]), - parseFloat(result[3]) - ]; - } - result = line2.match(boneQuaternionPattern); - if (result !== null) { - if (q2 !== null) { - throwError(); - } - q2 = [ - parseFloat(result[1]), - parseFloat(result[2]), - parseFloat(result[3]), - parseFloat(result[4]) - ]; - } - result = line2.match(boneFooterPattern); - if (result !== null) { - if (n2 === null || v === null || q2 === null) { - throwError(); - } - bones.push({ - name: n2, - translation: v, - quaternion: q2 - }); - n2 = null; - v = null; - q2 = null; - } - } - if (n2 !== null || v !== null || q2 !== null) { - throwError(); - } - } - checkMagic(); - parseHeader(); - parseBones(); - if (leftToRight === true) this.leftToRightVpd(vpd); - return vpd; -}; -Parser.prototype.mergeVmds = function(vmds) { - var v = {}; - v.metadata = {}; - v.metadata.name = vmds[0].metadata.name; - v.metadata.coordinateSystem = vmds[0].metadata.coordinateSystem; - v.metadata.motionCount = 0; - v.metadata.morphCount = 0; - v.metadata.cameraCount = 0; - v.motions = []; - v.morphs = []; - v.cameras = []; - for (var i = 0; i < vmds.length; i++) { - var v2 = vmds[i]; - v.metadata.motionCount += v2.metadata.motionCount; - v.metadata.morphCount += v2.metadata.morphCount; - v.metadata.cameraCount += v2.metadata.cameraCount; - for (var j = 0; j < v2.metadata.motionCount; j++) { - v.motions.push(v2.motions[j]); - } - for (var j = 0; j < v2.metadata.morphCount; j++) { - v.morphs.push(v2.morphs[j]); - } - for (var j = 0; j < v2.metadata.cameraCount; j++) { - v.cameras.push(v2.cameras[j]); - } - } - return v; -}; -Parser.prototype.leftToRightModel = function(model) { - if (model.metadata.coordinateSystem === "right") { - return; - } - model.metadata.coordinateSystem = "right"; - var helper = new DataCreationHelper(); - for (var i = 0; i < model.metadata.vertexCount; i++) { - helper.leftToRightVector3(model.vertices[i].position); - helper.leftToRightVector3(model.vertices[i].normal); - } - for (var i = 0; i < model.metadata.faceCount; i++) { - helper.leftToRightIndexOrder(model.faces[i].indices); - } - for (var i = 0; i < model.metadata.boneCount; i++) { - helper.leftToRightVector3(model.bones[i].position); - } - for (var i = 0; i < model.metadata.morphCount; i++) { - var m = model.morphs[i]; - if (model.metadata.format === "pmx" && m.type !== 1) { - continue; - } - for (var j = 0; j < m.elements.length; j++) { - helper.leftToRightVector3(m.elements[j].position); - } - } - for (var i = 0; i < model.metadata.rigidBodyCount; i++) { - helper.leftToRightVector3(model.rigidBodies[i].position); - helper.leftToRightEuler(model.rigidBodies[i].rotation); - } - for (var i = 0; i < model.metadata.constraintCount; i++) { - helper.leftToRightVector3(model.constraints[i].position); - helper.leftToRightEuler(model.constraints[i].rotation); - helper.leftToRightVector3Range(model.constraints[i].translationLimitation1, model.constraints[i].translationLimitation2); - helper.leftToRightEulerRange(model.constraints[i].rotationLimitation1, model.constraints[i].rotationLimitation2); - } -}; -Parser.prototype.leftToRightVmd = function(vmd) { - if (vmd.metadata.coordinateSystem === "right") { - return; - } - vmd.metadata.coordinateSystem = "right"; - var helper = new DataCreationHelper(); - for (var i = 0; i < vmd.metadata.motionCount; i++) { - helper.leftToRightVector3(vmd.motions[i].position); - helper.leftToRightQuaternion(vmd.motions[i].rotation); - } - for (var i = 0; i < vmd.metadata.cameraCount; i++) { - helper.leftToRightVector3(vmd.cameras[i].position); - helper.leftToRightEuler(vmd.cameras[i].rotation); - } -}; -Parser.prototype.leftToRightVpd = function(vpd) { - if (vpd.metadata.coordinateSystem === "right") { - return; - } - vpd.metadata.coordinateSystem = "right"; - var helper = new DataCreationHelper(); - for (var i = 0; i < vpd.bones.length; i++) { - helper.leftToRightVector3(vpd.bones[i].translation); - helper.leftToRightQuaternion(vpd.bones[i].quaternion); - } -}; -var MMDParser = { - CharsetEncoder, - Parser -}; - -// node_modules/three/examples/jsm/exporters/MMDExporter.js -var MMDExporter = class { - /* TODO: implement - // mesh -> pmd - this.parsePmd = function ( object ) { - - }; - */ - /* TODO: implement - // mesh -> pmx - this.parsePmx = function ( object ) { - - }; - */ - /* TODO: implement - // animation + skeleton -> vmd - this.parseVmd = function ( object ) { - - }; - */ - /* - * skeleton -> vpd - * Returns Shift_JIS encoded Uint8Array. Otherwise return strings. - */ - parseVpd(skin, outputShiftJis, useOriginalBones) { - if (skin.isSkinnedMesh !== true) { - console.warn("THREE.MMDExporter: parseVpd() requires SkinnedMesh instance."); - return null; - } - function toStringsFromNumber(num) { - if (Math.abs(num) < 1e-6) num = 0; - let a2 = num.toString(); - if (a2.indexOf(".") === -1) { - a2 += "."; - } - a2 += "000000"; - const index2 = a2.indexOf("."); - const d = a2.slice(0, index2); - const p2 = a2.slice(index2 + 1, index2 + 7); - return d + "." + p2; - } - function toStringsFromArray(array2) { - const a2 = []; - for (let i = 0, il = array2.length; i < il; i++) { - a2.push(toStringsFromNumber(array2[i])); - } - return a2.join(","); - } - skin.updateMatrixWorld(true); - const bones = skin.skeleton.bones; - const bones2 = getBindBones(skin); - const position2 = new Vector3(); - const quaternion = new Quaternion(); - const quaternion2 = new Quaternion(); - const matrix3 = new Matrix4(); - const array = []; - array.push("Vocaloid Pose Data file"); - array.push(""); - array.push((skin.name !== "" ? skin.name.replace(/\s/g, "_") : "skin") + ".osm;"); - array.push(bones.length + ";"); - array.push(""); - for (let i = 0, il = bones.length; i < il; i++) { - const bone = bones[i]; - const bone2 = bones2[i]; - if (useOriginalBones === true && bone.userData.ik !== void 0 && bone.userData.ik.originalMatrix !== void 0) { - matrix3.fromArray(bone.userData.ik.originalMatrix); - } else { - matrix3.copy(bone.matrix); - } - position2.setFromMatrixPosition(matrix3); - quaternion.setFromRotationMatrix(matrix3); - const pArray = position2.sub(bone2.position).toArray(); - const qArray = quaternion2.copy(bone2.quaternion).conjugate().multiply(quaternion).toArray(); - pArray[2] = -pArray[2]; - qArray[0] = -qArray[0]; - qArray[1] = -qArray[1]; - array.push("Bone" + i + "{" + bone.name); - array.push(" " + toStringsFromArray(pArray) + ";"); - array.push(" " + toStringsFromArray(qArray) + ";"); - array.push("}"); - array.push(""); - } - array.push(""); - const lines = array.join("\n"); - return outputShiftJis === true ? unicodeToShiftjis(lines) : lines; - } -}; -var u2sTable; -function unicodeToShiftjis(str) { - if (u2sTable === void 0) { - const encoder = new MMDParser.CharsetEncoder(); - const table2 = encoder.s2uTable; - u2sTable = {}; - const keys2 = Object.keys(table2); - for (let i = 0, il = keys2.length; i < il; i++) { - let key2 = keys2[i]; - const value2 = table2[key2]; - key2 = parseInt(key2); - u2sTable[value2] = key2; - } - } - const array = []; - for (let i = 0, il = str.length; i < il; i++) { - const code = str.charCodeAt(i); - const value2 = u2sTable[code]; - if (value2 === void 0) { - throw new Error("cannot convert charcode 0x" + code.toString(16)); - } else if (value2 > 255) { - array.push(value2 >> 8 & 255); - array.push(value2 & 255); - } else { - array.push(value2 & 255); - } - } - return new Uint8Array(array); -} -function getBindBones(skin) { - const poseSkin = skin.clone(); - poseSkin.pose(); - return poseSkin.skeleton.bones; -} - -// node_modules/three/examples/jsm/exporters/OBJExporter.js -var OBJExporter = class { - parse(object) { - let output = ""; - let indexVertex = 0; - let indexVertexUvs = 0; - let indexNormals = 0; - const vertex = new Vector3(); - const color = new Color(); - const normal = new Vector3(); - const uv = new Vector2(); - const face = []; - function parseMesh(mesh) { - let nbVertex = 0; - let nbNormals = 0; - let nbVertexUvs = 0; - const geometry = mesh.geometry; - const normalMatrixWorld = new Matrix3(); - const vertices = geometry.getAttribute("position"); - const normals = geometry.getAttribute("normal"); - const uvs = geometry.getAttribute("uv"); - const indices = geometry.getIndex(); - output += "o " + mesh.name + "\n"; - if (mesh.material && mesh.material.name) { - output += "usemtl " + mesh.material.name + "\n"; - } - if (vertices !== void 0) { - for (let i = 0, l2 = vertices.count; i < l2; i++, nbVertex++) { - vertex.fromBufferAttribute(vertices, i); - vertex.applyMatrix4(mesh.matrixWorld); - output += "v " + vertex.x + " " + vertex.y + " " + vertex.z + "\n"; - } - } - if (uvs !== void 0) { - for (let i = 0, l2 = uvs.count; i < l2; i++, nbVertexUvs++) { - uv.fromBufferAttribute(uvs, i); - output += "vt " + uv.x + " " + uv.y + "\n"; - } - } - if (normals !== void 0) { - normalMatrixWorld.getNormalMatrix(mesh.matrixWorld); - for (let i = 0, l2 = normals.count; i < l2; i++, nbNormals++) { - normal.fromBufferAttribute(normals, i); - normal.applyMatrix3(normalMatrixWorld).normalize(); - output += "vn " + normal.x + " " + normal.y + " " + normal.z + "\n"; - } - } - if (indices !== null) { - for (let i = 0, l2 = indices.count; i < l2; i += 3) { - for (let m = 0; m < 3; m++) { - const j = indices.getX(i + m) + 1; - face[m] = indexVertex + j + (normals || uvs ? "/" + (uvs ? indexVertexUvs + j : "") + (normals ? "/" + (indexNormals + j) : "") : ""); - } - output += "f " + face.join(" ") + "\n"; - } - } else { - for (let i = 0, l2 = vertices.count; i < l2; i += 3) { - for (let m = 0; m < 3; m++) { - const j = i + m + 1; - face[m] = indexVertex + j + (normals || uvs ? "/" + (uvs ? indexVertexUvs + j : "") + (normals ? "/" + (indexNormals + j) : "") : ""); - } - output += "f " + face.join(" ") + "\n"; - } - } - indexVertex += nbVertex; - indexVertexUvs += nbVertexUvs; - indexNormals += nbNormals; - } - function parseLine(line2) { - let nbVertex = 0; - const geometry = line2.geometry; - const type = line2.type; - const vertices = geometry.getAttribute("position"); - output += "o " + line2.name + "\n"; - if (vertices !== void 0) { - for (let i = 0, l2 = vertices.count; i < l2; i++, nbVertex++) { - vertex.fromBufferAttribute(vertices, i); - vertex.applyMatrix4(line2.matrixWorld); - output += "v " + vertex.x + " " + vertex.y + " " + vertex.z + "\n"; - } - } - if (type === "Line") { - output += "l "; - for (let j = 1, l2 = vertices.count; j <= l2; j++) { - output += indexVertex + j + " "; - } - output += "\n"; - } - if (type === "LineSegments") { - for (let j = 1, k2 = j + 1, l2 = vertices.count; j < l2; j += 2, k2 = j + 1) { - output += "l " + (indexVertex + j) + " " + (indexVertex + k2) + "\n"; - } - } - indexVertex += nbVertex; - } - function parsePoints(points) { - let nbVertex = 0; - const geometry = points.geometry; - const vertices = geometry.getAttribute("position"); - const colors = geometry.getAttribute("color"); - output += "o " + points.name + "\n"; - if (vertices !== void 0) { - for (let i = 0, l2 = vertices.count; i < l2; i++, nbVertex++) { - vertex.fromBufferAttribute(vertices, i); - vertex.applyMatrix4(points.matrixWorld); - output += "v " + vertex.x + " " + vertex.y + " " + vertex.z; - if (colors !== void 0) { - color.fromBufferAttribute(colors, i).convertLinearToSRGB(); - output += " " + color.r + " " + color.g + " " + color.b; - } - output += "\n"; - } - output += "p "; - for (let j = 1, l2 = vertices.count; j <= l2; j++) { - output += indexVertex + j + " "; - } - output += "\n"; - } - indexVertex += nbVertex; - } - object.traverse(function(child) { - if (child.isMesh === true) { - parseMesh(child); - } - if (child.isLine === true) { - parseLine(child); - } - if (child.isPoints === true) { - parsePoints(child); - } - }); - return output; - } -}; - -// node_modules/three/examples/jsm/exporters/PLYExporter.js -var PLYExporter = class { - parse(object, onDone, options = {}) { - function traverseMeshes(cb) { - object.traverse(function(child) { - if (child.isMesh === true || child.isPoints) { - const mesh = child; - const geometry = mesh.geometry; - if (geometry.hasAttribute("position") === true) { - cb(mesh, geometry); - } - } - }); - } - const defaultOptions = { - binary: false, - excludeAttributes: [], - // normal, uv, color, index - littleEndian: false - }; - options = Object.assign(defaultOptions, options); - const excludeAttributes = options.excludeAttributes; - let includeIndices = true; - let includeNormals = false; - let includeColors = false; - let includeUVs = false; - let vertexCount = 0; - let faceCount = 0; - object.traverse(function(child) { - if (child.isMesh === true) { - const mesh = child; - const geometry = mesh.geometry; - const vertices = geometry.getAttribute("position"); - const normals = geometry.getAttribute("normal"); - const uvs = geometry.getAttribute("uv"); - const colors = geometry.getAttribute("color"); - const indices = geometry.getIndex(); - if (vertices === void 0) { - return; - } - vertexCount += vertices.count; - faceCount += indices ? indices.count / 3 : vertices.count / 3; - if (normals !== void 0) includeNormals = true; - if (uvs !== void 0) includeUVs = true; - if (colors !== void 0) includeColors = true; - } else if (child.isPoints) { - const mesh = child; - const geometry = mesh.geometry; - const vertices = geometry.getAttribute("position"); - const normals = geometry.getAttribute("normal"); - const colors = geometry.getAttribute("color"); - vertexCount += vertices.count; - if (normals !== void 0) includeNormals = true; - if (colors !== void 0) includeColors = true; - includeIndices = false; - } - }); - const tempColor = new Color(); - includeIndices = includeIndices && excludeAttributes.indexOf("index") === -1; - includeNormals = includeNormals && excludeAttributes.indexOf("normal") === -1; - includeColors = includeColors && excludeAttributes.indexOf("color") === -1; - includeUVs = includeUVs && excludeAttributes.indexOf("uv") === -1; - if (includeIndices && faceCount !== Math.floor(faceCount)) { - console.error( - "PLYExporter: Failed to generate a valid PLY file with triangle indices because the number of indices is not divisible by 3." - ); - return null; - } - const indexByteCount = 4; - let header = `ply -format ${options.binary ? options.littleEndian ? "binary_little_endian" : "binary_big_endian" : "ascii"} 1.0 -element vertex ${vertexCount} -property float x -property float y -property float z -`; - if (includeNormals === true) { - header += "property float nx\nproperty float ny\nproperty float nz\n"; - } - if (includeUVs === true) { - header += "property float s\nproperty float t\n"; - } - if (includeColors === true) { - header += "property uchar red\nproperty uchar green\nproperty uchar blue\n"; - } - if (includeIndices === true) { - header += `element face ${faceCount} -property list uchar int vertex_index -`; - } - header += "end_header\n"; - const vertex = new Vector3(); - const normalMatrixWorld = new Matrix3(); - let result = null; - if (options.binary === true) { - const headerBin = new TextEncoder().encode(header); - const vertexListLength = vertexCount * (4 * 3 + (includeNormals ? 4 * 3 : 0) + (includeColors ? 3 : 0) + (includeUVs ? 4 * 2 : 0)); - const faceListLength = includeIndices ? faceCount * (indexByteCount * 3 + 1) : 0; - const output = new DataView(new ArrayBuffer(headerBin.length + vertexListLength + faceListLength)); - new Uint8Array(output.buffer).set(headerBin, 0); - let vOffset = headerBin.length; - let fOffset = headerBin.length + vertexListLength; - let writtenVertices = 0; - traverseMeshes(function(mesh, geometry) { - const vertices = geometry.getAttribute("position"); - const normals = geometry.getAttribute("normal"); - const uvs = geometry.getAttribute("uv"); - const colors = geometry.getAttribute("color"); - const indices = geometry.getIndex(); - normalMatrixWorld.getNormalMatrix(mesh.matrixWorld); - for (let i = 0, l2 = vertices.count; i < l2; i++) { - vertex.fromBufferAttribute(vertices, i); - vertex.applyMatrix4(mesh.matrixWorld); - output.setFloat32(vOffset, vertex.x, options.littleEndian); - vOffset += 4; - output.setFloat32(vOffset, vertex.y, options.littleEndian); - vOffset += 4; - output.setFloat32(vOffset, vertex.z, options.littleEndian); - vOffset += 4; - if (includeNormals === true) { - if (normals != null) { - vertex.fromBufferAttribute(normals, i); - vertex.applyMatrix3(normalMatrixWorld).normalize(); - output.setFloat32(vOffset, vertex.x, options.littleEndian); - vOffset += 4; - output.setFloat32(vOffset, vertex.y, options.littleEndian); - vOffset += 4; - output.setFloat32(vOffset, vertex.z, options.littleEndian); - vOffset += 4; - } else { - output.setFloat32(vOffset, 0, options.littleEndian); - vOffset += 4; - output.setFloat32(vOffset, 0, options.littleEndian); - vOffset += 4; - output.setFloat32(vOffset, 0, options.littleEndian); - vOffset += 4; - } - } - if (includeUVs === true) { - if (uvs != null) { - output.setFloat32(vOffset, uvs.getX(i), options.littleEndian); - vOffset += 4; - output.setFloat32(vOffset, uvs.getY(i), options.littleEndian); - vOffset += 4; - } else { - output.setFloat32(vOffset, 0, options.littleEndian); - vOffset += 4; - output.setFloat32(vOffset, 0, options.littleEndian); - vOffset += 4; - } - } - if (includeColors === true) { - if (colors != null) { - tempColor.fromBufferAttribute(colors, i).convertLinearToSRGB(); - output.setUint8(vOffset, Math.floor(tempColor.r * 255)); - vOffset += 1; - output.setUint8(vOffset, Math.floor(tempColor.g * 255)); - vOffset += 1; - output.setUint8(vOffset, Math.floor(tempColor.b * 255)); - vOffset += 1; - } else { - output.setUint8(vOffset, 255); - vOffset += 1; - output.setUint8(vOffset, 255); - vOffset += 1; - output.setUint8(vOffset, 255); - vOffset += 1; - } - } - } - if (includeIndices === true) { - if (indices !== null) { - for (let i = 0, l2 = indices.count; i < l2; i += 3) { - output.setUint8(fOffset, 3); - fOffset += 1; - output.setUint32(fOffset, indices.getX(i + 0) + writtenVertices, options.littleEndian); - fOffset += indexByteCount; - output.setUint32(fOffset, indices.getX(i + 1) + writtenVertices, options.littleEndian); - fOffset += indexByteCount; - output.setUint32(fOffset, indices.getX(i + 2) + writtenVertices, options.littleEndian); - fOffset += indexByteCount; - } - } else { - for (let i = 0, l2 = vertices.count; i < l2; i += 3) { - output.setUint8(fOffset, 3); - fOffset += 1; - output.setUint32(fOffset, writtenVertices + i, options.littleEndian); - fOffset += indexByteCount; - output.setUint32(fOffset, writtenVertices + i + 1, options.littleEndian); - fOffset += indexByteCount; - output.setUint32(fOffset, writtenVertices + i + 2, options.littleEndian); - fOffset += indexByteCount; - } - } - } - writtenVertices += vertices.count; - }); - result = output.buffer; - } else { - let writtenVertices = 0; - let vertexList = ""; - let faceList = ""; - traverseMeshes(function(mesh, geometry) { - const vertices = geometry.getAttribute("position"); - const normals = geometry.getAttribute("normal"); - const uvs = geometry.getAttribute("uv"); - const colors = geometry.getAttribute("color"); - const indices = geometry.getIndex(); - normalMatrixWorld.getNormalMatrix(mesh.matrixWorld); - for (let i = 0, l2 = vertices.count; i < l2; i++) { - vertex.fromBufferAttribute(vertices, i); - vertex.applyMatrix4(mesh.matrixWorld); - let line2 = vertex.x + " " + vertex.y + " " + vertex.z; - if (includeNormals === true) { - if (normals != null) { - vertex.fromBufferAttribute(normals, i); - vertex.applyMatrix3(normalMatrixWorld).normalize(); - line2 += " " + vertex.x + " " + vertex.y + " " + vertex.z; - } else { - line2 += " 0 0 0"; - } - } - if (includeUVs === true) { - if (uvs != null) { - line2 += " " + uvs.getX(i) + " " + uvs.getY(i); - } else { - line2 += " 0 0"; - } - } - if (includeColors === true) { - if (colors != null) { - tempColor.fromBufferAttribute(colors, i).convertLinearToSRGB(); - line2 += " " + Math.floor(tempColor.r * 255) + " " + Math.floor(tempColor.g * 255) + " " + Math.floor(tempColor.b * 255); - } else { - line2 += " 255 255 255"; - } - } - vertexList += line2 + "\n"; - } - if (includeIndices === true) { - if (indices !== null) { - for (let i = 0, l2 = indices.count; i < l2; i += 3) { - faceList += `3 ${indices.getX(i + 0) + writtenVertices}`; - faceList += ` ${indices.getX(i + 1) + writtenVertices}`; - faceList += ` ${indices.getX(i + 2) + writtenVertices} -`; - } - } else { - for (let i = 0, l2 = vertices.count; i < l2; i += 3) { - faceList += `3 ${writtenVertices + i} ${writtenVertices + i + 1} ${writtenVertices + i + 2} -`; - } - } - faceCount += indices ? indices.count / 3 : vertices.count / 3; - } - writtenVertices += vertices.count; - }); - result = `${header}${vertexList}${includeIndices ? `${faceList} -` : "\n"}`; - } - if (typeof onDone === "function") requestAnimationFrame(() => onDone(result)); - return result; - } -}; - -// node_modules/three/examples/jsm/exporters/STLExporter.js -var STLExporter = class { - parse(scene, options = {}) { - options = Object.assign({ - binary: false - }, options); - const binary = options.binary; - const objects = []; - let triangles = 0; - scene.traverse(function(object) { - if (object.isMesh) { - const geometry = object.geometry; - const index2 = geometry.index; - const positionAttribute = geometry.getAttribute("position"); - triangles += index2 !== null ? index2.count / 3 : positionAttribute.count / 3; - objects.push({ - object3d: object, - geometry - }); - } - }); - let output; - let offset = 80; - if (binary === true) { - const bufferLength = triangles * 2 + triangles * 3 * 4 * 4 + 80 + 4; - const arrayBuffer = new ArrayBuffer(bufferLength); - output = new DataView(arrayBuffer); - output.setUint32(offset, triangles, true); - offset += 4; - } else { - output = ""; - output += "solid exported\n"; - } - const vA = new Vector3(); - const vB = new Vector3(); - const vC = new Vector3(); - const cb = new Vector3(); - const ab = new Vector3(); - const normal = new Vector3(); - for (let i = 0, il = objects.length; i < il; i++) { - const object = objects[i].object3d; - const geometry = objects[i].geometry; - const index2 = geometry.index; - const positionAttribute = geometry.getAttribute("position"); - if (index2 !== null) { - for (let j = 0; j < index2.count; j += 3) { - const a2 = index2.getX(j + 0); - const b3 = index2.getX(j + 1); - const c2 = index2.getX(j + 2); - writeFace(a2, b3, c2, positionAttribute, object); - } - } else { - for (let j = 0; j < positionAttribute.count; j += 3) { - const a2 = j + 0; - const b3 = j + 1; - const c2 = j + 2; - writeFace(a2, b3, c2, positionAttribute, object); - } - } - } - if (binary === false) { - output += "endsolid exported\n"; - } - return output; - function writeFace(a2, b3, c2, positionAttribute, object) { - vA.fromBufferAttribute(positionAttribute, a2); - vB.fromBufferAttribute(positionAttribute, b3); - vC.fromBufferAttribute(positionAttribute, c2); - if (object.isSkinnedMesh === true) { - object.applyBoneTransform(a2, vA); - object.applyBoneTransform(b3, vB); - object.applyBoneTransform(c2, vC); - } - vA.applyMatrix4(object.matrixWorld); - vB.applyMatrix4(object.matrixWorld); - vC.applyMatrix4(object.matrixWorld); - writeNormal(vA, vB, vC); - writeVertex(vA); - writeVertex(vB); - writeVertex(vC); - if (binary === true) { - output.setUint16(offset, 0, true); - offset += 2; - } else { - output += " endloop\n"; - output += " endfacet\n"; - } - } - function writeNormal(vA2, vB2, vC2) { - cb.subVectors(vC2, vB2); - ab.subVectors(vA2, vB2); - cb.cross(ab).normalize(); - normal.copy(cb).normalize(); - if (binary === true) { - output.setFloat32(offset, normal.x, true); - offset += 4; - output.setFloat32(offset, normal.y, true); - offset += 4; - output.setFloat32(offset, normal.z, true); - offset += 4; - } else { - output += " facet normal " + normal.x + " " + normal.y + " " + normal.z + "\n"; - output += " outer loop\n"; - } - } - function writeVertex(vertex) { - if (binary === true) { - output.setFloat32(offset, vertex.x, true); - offset += 4; - output.setFloat32(offset, vertex.y, true); - offset += 4; - output.setFloat32(offset, vertex.z, true); - offset += 4; - } else { - output += " vertex " + vertex.x + " " + vertex.y + " " + vertex.z + "\n"; - } - } - } -}; - -// node_modules/three/examples/jsm/exporters/USDZExporter.js -var USDZExporter = class { - parse(scene, onDone, onError, options) { - this.parseAsync(scene, options).then(onDone).catch(onError); - } - async parseAsync(scene, options = {}) { - options = Object.assign({ - ar: { - anchoring: { type: "plane" }, - planeAnchoring: { alignment: "horizontal" } - }, - includeAnchoringProperties: true, - quickLookCompatible: false, - maxTextureSize: 1024 - }, options); - const files = {}; - const modelFileName = "model.usda"; - files[modelFileName] = null; - let output = buildHeader(); - output += buildSceneStart(options); - const materials = {}; - const textures = {}; - scene.traverseVisible((object) => { - if (object.isMesh) { - const geometry = object.geometry; - const material = object.material; - if (material.isMeshStandardMaterial) { - const geometryFileName = "geometries/Geometry_" + geometry.id + ".usda"; - if (!(geometryFileName in files)) { - const meshObject = buildMeshObject(geometry); - files[geometryFileName] = buildUSDFileAsString(meshObject); - } - if (!(material.uuid in materials)) { - materials[material.uuid] = material; - } - output += buildXform(object, geometry, material); - } else { - console.warn("THREE.USDZExporter: Unsupported material type (USDZ only supports MeshStandardMaterial)", object); - } - } else if (object.isCamera) { - output += buildCamera(object); - } - }); - output += buildSceneEnd(); - output += buildMaterials(materials, textures, options.quickLookCompatible); - files[modelFileName] = strToU8(output); - output = null; - for (const id in textures) { - let texture = textures[id]; - if (texture.isCompressedTexture === true) { - texture = decompress(texture); - } - const canvas = imageToCanvas(texture.image, texture.flipY, options.maxTextureSize); - const blob = await new Promise((resolve) => canvas.toBlob(resolve, "image/png", 1)); - files[`textures/Texture_${id}.png`] = new Uint8Array(await blob.arrayBuffer()); - } - let offset = 0; - for (const filename in files) { - const file = files[filename]; - const headerSize = 34 + filename.length; - offset += headerSize; - const offsetMod64 = offset & 63; - if (offsetMod64 !== 4) { - const padLength = 64 - offsetMod64; - const padding = new Uint8Array(padLength); - files[filename] = [file, { extra: { 12345: padding } }]; - } - offset = file.length; - } - return zipSync(files, { level: 0 }); - } -}; -function imageToCanvas(image, flipY, maxTextureSize) { - if (typeof HTMLImageElement !== "undefined" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== "undefined" && image instanceof HTMLCanvasElement || typeof OffscreenCanvas !== "undefined" && image instanceof OffscreenCanvas || typeof ImageBitmap !== "undefined" && image instanceof ImageBitmap) { - const scale2 = maxTextureSize / Math.max(image.width, image.height); - const canvas = document.createElement("canvas"); - canvas.width = image.width * Math.min(1, scale2); - canvas.height = image.height * Math.min(1, scale2); - const context = canvas.getContext("2d"); - if (flipY === true) { - context.translate(0, canvas.height); - context.scale(1, -1); - } - context.drawImage(image, 0, 0, canvas.width, canvas.height); - return canvas; - } else { - throw new Error("THREE.USDZExporter: No valid image data found. Unable to process texture."); - } -} -var PRECISION = 7; -function buildHeader() { - return `#usda 1.0 -( - customLayerData = { - string creator = "Three.js USDZExporter" - } - defaultPrim = "Root" - metersPerUnit = 1 - upAxis = "Y" -) - -`; -} -function buildSceneStart(options) { - const alignment = options.includeAnchoringProperties === true ? ` - token preliminary:anchoring:type = "${options.ar.anchoring.type}" - token preliminary:planeAnchoring:alignment = "${options.ar.planeAnchoring.alignment}" - ` : ""; - return `def Xform "Root" -{ - def Scope "Scenes" ( - kind = "sceneLibrary" - ) - { - def Xform "Scene" ( - customData = { - bool preliminary_collidesWithEnvironment = 0 - string sceneName = "Scene" - } - sceneName = "Scene" - ) - {${alignment} -`; -} -function buildSceneEnd() { - return ` - } - } -} - -`; -} -function buildUSDFileAsString(dataToInsert) { - let output = buildHeader(); - output += dataToInsert; - return strToU8(output); -} -function buildXform(object, geometry, material) { - const name2 = "Object_" + object.id; - const transform2 = buildMatrix(object.matrixWorld); - if (object.matrixWorld.determinant() < 0) { - console.warn("THREE.USDZExporter: USDZ does not support negative scales", object); - } - return `def Xform "${name2}" ( - prepend references = @./geometries/Geometry_${geometry.id}.usda@ - prepend apiSchemas = ["MaterialBindingAPI"] -) -{ - matrix4d xformOp:transform = ${transform2} - uniform token[] xformOpOrder = ["xformOp:transform"] - - rel material:binding = -} - -`; -} -function buildMatrix(matrix3) { - const array = matrix3.elements; - return `( ${buildMatrixRow(array, 0)}, ${buildMatrixRow(array, 4)}, ${buildMatrixRow(array, 8)}, ${buildMatrixRow(array, 12)} )`; -} -function buildMatrixRow(array, offset) { - return `(${array[offset + 0]}, ${array[offset + 1]}, ${array[offset + 2]}, ${array[offset + 3]})`; -} -function buildMeshObject(geometry) { - const mesh = buildMesh(geometry); - return ` -def "Geometry" -{ -${mesh} -} -`; -} -function buildMesh(geometry) { - const name2 = "Geometry"; - const attributes = geometry.attributes; - const count = attributes.position.count; - return ` - def Mesh "${name2}" - { - int[] faceVertexCounts = [${buildMeshVertexCount(geometry)}] - int[] faceVertexIndices = [${buildMeshVertexIndices(geometry)}] - normal3f[] normals = [${buildVector3Array(attributes.normal, count)}] ( - interpolation = "vertex" - ) - point3f[] points = [${buildVector3Array(attributes.position, count)}] -${buildPrimvars(attributes)} - uniform token subdivisionScheme = "none" - } -`; -} -function buildMeshVertexCount(geometry) { - const count = geometry.index !== null ? geometry.index.count : geometry.attributes.position.count; - return Array(count / 3).fill(3).join(", "); -} -function buildMeshVertexIndices(geometry) { - const index2 = geometry.index; - const array = []; - if (index2 !== null) { - for (let i = 0; i < index2.count; i++) { - array.push(index2.getX(i)); - } - } else { - const length2 = geometry.attributes.position.count; - for (let i = 0; i < length2; i++) { - array.push(i); - } - } - return array.join(", "); -} -function buildVector3Array(attribute, count) { - if (attribute === void 0) { - console.warn("USDZExporter: Normals missing."); - return Array(count).fill("(0, 0, 0)").join(", "); - } - const array = []; - for (let i = 0; i < attribute.count; i++) { - const x2 = attribute.getX(i); - const y2 = attribute.getY(i); - const z = attribute.getZ(i); - array.push(`(${x2.toPrecision(PRECISION)}, ${y2.toPrecision(PRECISION)}, ${z.toPrecision(PRECISION)})`); - } - return array.join(", "); -} -function buildVector2Array(attribute) { - const array = []; - for (let i = 0; i < attribute.count; i++) { - const x2 = attribute.getX(i); - const y2 = attribute.getY(i); - array.push(`(${x2.toPrecision(PRECISION)}, ${1 - y2.toPrecision(PRECISION)})`); - } - return array.join(", "); -} -function buildPrimvars(attributes) { - let string = ""; - for (let i = 0; i < 4; i++) { - const id = i > 0 ? i : ""; - const attribute = attributes["uv" + id]; - if (attribute !== void 0) { - string += ` - texCoord2f[] primvars:st${id} = [${buildVector2Array(attribute)}] ( - interpolation = "vertex" - )`; - } - } - const colorAttribute = attributes.color; - if (colorAttribute !== void 0) { - const count = colorAttribute.count; - string += ` - color3f[] primvars:displayColor = [${buildVector3Array(colorAttribute, count)}] ( - interpolation = "vertex" - )`; - } - return string; -} -function buildMaterials(materials, textures, quickLookCompatible = false) { - const array = []; - for (const uuid in materials) { - const material = materials[uuid]; - array.push(buildMaterial(material, textures, quickLookCompatible)); - } - return `def "Materials" -{ -${array.join("")} -} - -`; -} -function buildMaterial(material, textures, quickLookCompatible = false) { - const pad = " "; - const inputs = []; - const samplers = []; - function buildTexture(texture, mapType, color) { - const id = texture.source.id + "_" + texture.flipY; - textures[id] = texture; - const uv = texture.channel > 0 ? "st" + texture.channel : "st"; - const WRAPPINGS = { - 1e3: "repeat", - // RepeatWrapping - 1001: "clamp", - // ClampToEdgeWrapping - 1002: "mirror" - // MirroredRepeatWrapping - }; - const repeat = texture.repeat.clone(); - const offset = texture.offset.clone(); - const rotation2 = texture.rotation; - const xRotationOffset = Math.sin(rotation2); - const yRotationOffset = Math.cos(rotation2); - offset.y = 1 - offset.y - repeat.y; - if (quickLookCompatible) { - offset.x = offset.x / repeat.x; - offset.y = offset.y / repeat.y; - offset.x += xRotationOffset / repeat.x; - offset.y += yRotationOffset - 1; - } else { - offset.x += xRotationOffset * repeat.x; - offset.y += (1 - yRotationOffset) * repeat.y; - } - return ` - def Shader "PrimvarReader_${mapType}" - { - uniform token info:id = "UsdPrimvarReader_float2" - float2 inputs:fallback = (0.0, 0.0) - token inputs:varname = "${uv}" - float2 outputs:result - } - - def Shader "Transform2d_${mapType}" - { - uniform token info:id = "UsdTransform2d" - token inputs:in.connect = - float inputs:rotation = ${(rotation2 * (180 / Math.PI)).toFixed(PRECISION)} - float2 inputs:scale = ${buildVector2(repeat)} - float2 inputs:translation = ${buildVector2(offset)} - float2 outputs:result - } - - def Shader "Texture_${texture.id}_${mapType}" - { - uniform token info:id = "UsdUVTexture" - asset inputs:file = @textures/Texture_${id}.png@ - float2 inputs:st.connect = - ${color !== void 0 ? "float4 inputs:scale = " + buildColor4(color) : ""} - token inputs:sourceColorSpace = "${texture.colorSpace === NoColorSpace ? "raw" : "sRGB"}" - token inputs:wrapS = "${WRAPPINGS[texture.wrapS]}" - token inputs:wrapT = "${WRAPPINGS[texture.wrapT]}" - float outputs:r - float outputs:g - float outputs:b - float3 outputs:rgb - ${material.transparent || material.alphaTest > 0 ? "float outputs:a" : ""} - }`; - } - if (material.side === DoubleSide) { - console.warn("THREE.USDZExporter: USDZ does not support double sided materials", material); - } - if (material.map !== null) { - inputs.push(`${pad}color3f inputs:diffuseColor.connect = `); - if (material.transparent) { - inputs.push(`${pad}float inputs:opacity.connect = `); - } else if (material.alphaTest > 0) { - inputs.push(`${pad}float inputs:opacity.connect = `); - inputs.push(`${pad}float inputs:opacityThreshold = ${material.alphaTest}`); - } - samplers.push(buildTexture(material.map, "diffuse", material.color)); - } else { - inputs.push(`${pad}color3f inputs:diffuseColor = ${buildColor(material.color)}`); - } - if (material.emissiveMap !== null) { - inputs.push(`${pad}color3f inputs:emissiveColor.connect = `); - samplers.push(buildTexture(material.emissiveMap, "emissive")); - } else if (material.emissive.getHex() > 0) { - inputs.push(`${pad}color3f inputs:emissiveColor = ${buildColor(material.emissive)}`); - } - if (material.normalMap !== null) { - inputs.push(`${pad}normal3f inputs:normal.connect = `); - samplers.push(buildTexture(material.normalMap, "normal")); - } - if (material.aoMap !== null) { - inputs.push(`${pad}float inputs:occlusion.connect = `); - samplers.push(buildTexture(material.aoMap, "occlusion")); - } - if (material.roughnessMap !== null && material.roughness === 1) { - inputs.push(`${pad}float inputs:roughness.connect = `); - samplers.push(buildTexture(material.roughnessMap, "roughness")); - } else { - inputs.push(`${pad}float inputs:roughness = ${material.roughness}`); - } - if (material.metalnessMap !== null && material.metalness === 1) { - inputs.push(`${pad}float inputs:metallic.connect = `); - samplers.push(buildTexture(material.metalnessMap, "metallic")); - } else { - inputs.push(`${pad}float inputs:metallic = ${material.metalness}`); - } - if (material.alphaMap !== null) { - inputs.push(`${pad}float inputs:opacity.connect = `); - inputs.push(`${pad}float inputs:opacityThreshold = 0.0001`); - samplers.push(buildTexture(material.alphaMap, "opacity")); - } else { - inputs.push(`${pad}float inputs:opacity = ${material.opacity}`); - } - if (material.isMeshPhysicalMaterial) { - inputs.push(`${pad}float inputs:clearcoat = ${material.clearcoat}`); - inputs.push(`${pad}float inputs:clearcoatRoughness = ${material.clearcoatRoughness}`); - inputs.push(`${pad}float inputs:ior = ${material.ior}`); - } - return ` - def Material "Material_${material.id}" - { - def Shader "PreviewSurface" - { - uniform token info:id = "UsdPreviewSurface" -${inputs.join("\n")} - int inputs:useSpecularWorkflow = 0 - token outputs:surface - } - - token outputs:surface.connect = - -${samplers.join("\n")} - - } -`; -} -function buildColor(color) { - return `(${color.r}, ${color.g}, ${color.b})`; -} -function buildColor4(color) { - return `(${color.r}, ${color.g}, ${color.b}, 1.0)`; -} -function buildVector2(vector) { - return `(${vector.x}, ${vector.y})`; -} -function buildCamera(camera) { - const name2 = camera.name ? camera.name : "Camera_" + camera.id; - const transform2 = buildMatrix(camera.matrixWorld); - if (camera.matrixWorld.determinant() < 0) { - console.warn("THREE.USDZExporter: USDZ does not support negative scales", camera); - } - if (camera.isOrthographicCamera) { - return `def Camera "${name2}" - { - matrix4d xformOp:transform = ${transform2} - uniform token[] xformOpOrder = ["xformOp:transform"] - - float2 clippingRange = (${camera.near.toPrecision(PRECISION)}, ${camera.far.toPrecision(PRECISION)}) - float horizontalAperture = ${((Math.abs(camera.left) + Math.abs(camera.right)) * 10).toPrecision(PRECISION)} - float verticalAperture = ${((Math.abs(camera.top) + Math.abs(camera.bottom)) * 10).toPrecision(PRECISION)} - token projection = "orthographic" - } - - `; - } else { - return `def Camera "${name2}" - { - matrix4d xformOp:transform = ${transform2} - uniform token[] xformOpOrder = ["xformOp:transform"] - - float2 clippingRange = (${camera.near.toPrecision(PRECISION)}, ${camera.far.toPrecision(PRECISION)}) - float focalLength = ${camera.getFocalLength().toPrecision(PRECISION)} - float focusDistance = ${camera.focus.toPrecision(PRECISION)} - float horizontalAperture = ${camera.getFilmWidth().toPrecision(PRECISION)} - token projection = "perspective" - float verticalAperture = ${camera.getFilmHeight().toPrecision(PRECISION)} - } - - `; - } -} - -// node_modules/three/examples/jsm/geometries/BoxLineGeometry.js -var BoxLineGeometry = class extends BufferGeometry { - constructor(width2 = 1, height2 = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1) { - super(); - widthSegments = Math.floor(widthSegments); - heightSegments = Math.floor(heightSegments); - depthSegments = Math.floor(depthSegments); - const widthHalf = width2 / 2; - const heightHalf = height2 / 2; - const depthHalf = depth / 2; - const segmentWidth = width2 / widthSegments; - const segmentHeight = height2 / heightSegments; - const segmentDepth = depth / depthSegments; - const vertices = []; - let x2 = -widthHalf; - let y2 = -heightHalf; - let z = -depthHalf; - for (let i = 0; i <= widthSegments; i++) { - vertices.push(x2, -heightHalf, -depthHalf, x2, heightHalf, -depthHalf); - vertices.push(x2, heightHalf, -depthHalf, x2, heightHalf, depthHalf); - vertices.push(x2, heightHalf, depthHalf, x2, -heightHalf, depthHalf); - vertices.push(x2, -heightHalf, depthHalf, x2, -heightHalf, -depthHalf); - x2 += segmentWidth; - } - for (let i = 0; i <= heightSegments; i++) { - vertices.push(-widthHalf, y2, -depthHalf, widthHalf, y2, -depthHalf); - vertices.push(widthHalf, y2, -depthHalf, widthHalf, y2, depthHalf); - vertices.push(widthHalf, y2, depthHalf, -widthHalf, y2, depthHalf); - vertices.push(-widthHalf, y2, depthHalf, -widthHalf, y2, -depthHalf); - y2 += segmentHeight; - } - for (let i = 0; i <= depthSegments; i++) { - vertices.push(-widthHalf, -heightHalf, z, -widthHalf, heightHalf, z); - vertices.push(-widthHalf, heightHalf, z, widthHalf, heightHalf, z); - vertices.push(widthHalf, heightHalf, z, widthHalf, -heightHalf, z); - vertices.push(widthHalf, -heightHalf, z, -widthHalf, -heightHalf, z); - z += segmentDepth; - } - this.setAttribute("position", new Float32BufferAttribute(vertices, 3)); - } -}; - -// node_modules/three/examples/jsm/math/ConvexHull.js -var Visible = 0; -var Deleted = 1; -var _v12 = new Vector3(); -var _line3 = new Line3(); -var _plane3 = new Plane(); -var _closestPoint = new Vector3(); -var _triangle = new Triangle(); -var ConvexHull = class { - constructor() { - this.tolerance = -1; - this.faces = []; - this.newFaces = []; - this.assigned = new VertexList(); - this.unassigned = new VertexList(); - this.vertices = []; - } - setFromPoints(points) { - if (points.length >= 4) { - this.makeEmpty(); - for (let i = 0, l2 = points.length; i < l2; i++) { - this.vertices.push(new VertexNode(points[i])); - } - this.compute(); - } - return this; - } - setFromObject(object) { - const points = []; - object.updateMatrixWorld(true); - object.traverse(function(node) { - const geometry = node.geometry; - if (geometry !== void 0) { - const attribute = geometry.attributes.position; - if (attribute !== void 0) { - for (let i = 0, l2 = attribute.count; i < l2; i++) { - const point = new Vector3(); - point.fromBufferAttribute(attribute, i).applyMatrix4(node.matrixWorld); - points.push(point); - } - } - } - }); - return this.setFromPoints(points); - } - containsPoint(point) { - const faces = this.faces; - for (let i = 0, l2 = faces.length; i < l2; i++) { - const face = faces[i]; - if (face.distanceToPoint(point) > this.tolerance) return false; - } - return true; - } - intersectRay(ray, target) { - const faces = this.faces; - let tNear = -Infinity; - let tFar = Infinity; - for (let i = 0, l2 = faces.length; i < l2; i++) { - const face = faces[i]; - const vN = face.distanceToPoint(ray.origin); - const vD = face.normal.dot(ray.direction); - if (vN > 0 && vD >= 0) return null; - const t3 = vD !== 0 ? -vN / vD : 0; - if (t3 <= 0) continue; - if (vD > 0) { - tFar = Math.min(t3, tFar); - } else { - tNear = Math.max(t3, tNear); - } - if (tNear > tFar) { - return null; - } - } - if (tNear !== -Infinity) { - ray.at(tNear, target); - } else { - ray.at(tFar, target); - } - return target; - } - intersectsRay(ray) { - return this.intersectRay(ray, _v12) !== null; - } - makeEmpty() { - this.faces = []; - this.vertices = []; - return this; - } - // Adds a vertex to the 'assigned' list of vertices and assigns it to the given face - addVertexToFace(vertex, face) { - vertex.face = face; - if (face.outside === null) { - this.assigned.append(vertex); - } else { - this.assigned.insertBefore(face.outside, vertex); - } - face.outside = vertex; - return this; - } - // Removes a vertex from the 'assigned' list of vertices and from the given face - removeVertexFromFace(vertex, face) { - if (vertex === face.outside) { - if (vertex.next !== null && vertex.next.face === face) { - face.outside = vertex.next; - } else { - face.outside = null; - } - } - this.assigned.remove(vertex); - return this; - } - // Removes all the visible vertices that a given face is able to see which are stored in the 'assigned' vertex list - removeAllVerticesFromFace(face) { - if (face.outside !== null) { - const start = face.outside; - let end = face.outside; - while (end.next !== null && end.next.face === face) { - end = end.next; - } - this.assigned.removeSubList(start, end); - start.prev = end.next = null; - face.outside = null; - return start; - } - } - // Removes all the visible vertices that 'face' is able to see - deleteFaceVertices(face, absorbingFace) { - const faceVertices = this.removeAllVerticesFromFace(face); - if (faceVertices !== void 0) { - if (absorbingFace === void 0) { - this.unassigned.appendChain(faceVertices); - } else { - let vertex = faceVertices; - do { - const nextVertex = vertex.next; - const distance = absorbingFace.distanceToPoint(vertex.point); - if (distance > this.tolerance) { - this.addVertexToFace(vertex, absorbingFace); - } else { - this.unassigned.append(vertex); - } - vertex = nextVertex; - } while (vertex !== null); - } - } - return this; - } - // Reassigns as many vertices as possible from the unassigned list to the new faces - resolveUnassignedPoints(newFaces) { - if (this.unassigned.isEmpty() === false) { - let vertex = this.unassigned.first(); - do { - const nextVertex = vertex.next; - let maxDistance = this.tolerance; - let maxFace = null; - for (let i = 0; i < newFaces.length; i++) { - const face = newFaces[i]; - if (face.mark === Visible) { - const distance = face.distanceToPoint(vertex.point); - if (distance > maxDistance) { - maxDistance = distance; - maxFace = face; - } - if (maxDistance > 1e3 * this.tolerance) break; - } - } - if (maxFace !== null) { - this.addVertexToFace(vertex, maxFace); - } - vertex = nextVertex; - } while (vertex !== null); - } - return this; - } - // Computes the extremes of a simplex which will be the initial hull - computeExtremes() { - const min = new Vector3(); - const max2 = new Vector3(); - const minVertices = []; - const maxVertices = []; - for (let i = 0; i < 3; i++) { - minVertices[i] = maxVertices[i] = this.vertices[0]; - } - min.copy(this.vertices[0].point); - max2.copy(this.vertices[0].point); - for (let i = 0, l2 = this.vertices.length; i < l2; i++) { - const vertex = this.vertices[i]; - const point = vertex.point; - for (let j = 0; j < 3; j++) { - if (point.getComponent(j) < min.getComponent(j)) { - min.setComponent(j, point.getComponent(j)); - minVertices[j] = vertex; - } - } - for (let j = 0; j < 3; j++) { - if (point.getComponent(j) > max2.getComponent(j)) { - max2.setComponent(j, point.getComponent(j)); - maxVertices[j] = vertex; - } - } - } - this.tolerance = 3 * Number.EPSILON * (Math.max(Math.abs(min.x), Math.abs(max2.x)) + Math.max(Math.abs(min.y), Math.abs(max2.y)) + Math.max(Math.abs(min.z), Math.abs(max2.z))); - return { min: minVertices, max: maxVertices }; - } - // Computes the initial simplex assigning to its faces all the points - // that are candidates to form part of the hull - computeInitialHull() { - const vertices = this.vertices; - const extremes = this.computeExtremes(); - const min = extremes.min; - const max2 = extremes.max; - let maxDistance = 0; - let index2 = 0; - for (let i = 0; i < 3; i++) { - const distance = max2[i].point.getComponent(i) - min[i].point.getComponent(i); - if (distance > maxDistance) { - maxDistance = distance; - index2 = i; - } - } - const v0 = min[index2]; - const v12 = max2[index2]; - let v2; - let v3; - maxDistance = 0; - _line3.set(v0.point, v12.point); - for (let i = 0, l2 = this.vertices.length; i < l2; i++) { - const vertex = vertices[i]; - if (vertex !== v0 && vertex !== v12) { - _line3.closestPointToPoint(vertex.point, true, _closestPoint); - const distance = _closestPoint.distanceToSquared(vertex.point); - if (distance > maxDistance) { - maxDistance = distance; - v2 = vertex; - } - } - } - maxDistance = -1; - _plane3.setFromCoplanarPoints(v0.point, v12.point, v2.point); - for (let i = 0, l2 = this.vertices.length; i < l2; i++) { - const vertex = vertices[i]; - if (vertex !== v0 && vertex !== v12 && vertex !== v2) { - const distance = Math.abs(_plane3.distanceToPoint(vertex.point)); - if (distance > maxDistance) { - maxDistance = distance; - v3 = vertex; - } - } - } - const faces = []; - if (_plane3.distanceToPoint(v3.point) < 0) { - faces.push( - Face.create(v0, v12, v2), - Face.create(v3, v12, v0), - Face.create(v3, v2, v12), - Face.create(v3, v0, v2) - ); - for (let i = 0; i < 3; i++) { - const j = (i + 1) % 3; - faces[i + 1].getEdge(2).setTwin(faces[0].getEdge(j)); - faces[i + 1].getEdge(1).setTwin(faces[j + 1].getEdge(0)); - } - } else { - faces.push( - Face.create(v0, v2, v12), - Face.create(v3, v0, v12), - Face.create(v3, v12, v2), - Face.create(v3, v2, v0) - ); - for (let i = 0; i < 3; i++) { - const j = (i + 1) % 3; - faces[i + 1].getEdge(2).setTwin(faces[0].getEdge((3 - i) % 3)); - faces[i + 1].getEdge(0).setTwin(faces[j + 1].getEdge(1)); - } - } - for (let i = 0; i < 4; i++) { - this.faces.push(faces[i]); - } - for (let i = 0, l2 = vertices.length; i < l2; i++) { - const vertex = vertices[i]; - if (vertex !== v0 && vertex !== v12 && vertex !== v2 && vertex !== v3) { - maxDistance = this.tolerance; - let maxFace = null; - for (let j = 0; j < 4; j++) { - const distance = this.faces[j].distanceToPoint(vertex.point); - if (distance > maxDistance) { - maxDistance = distance; - maxFace = this.faces[j]; - } - } - if (maxFace !== null) { - this.addVertexToFace(vertex, maxFace); - } - } - } - return this; - } - // Removes inactive faces - reindexFaces() { - const activeFaces = []; - for (let i = 0; i < this.faces.length; i++) { - const face = this.faces[i]; - if (face.mark === Visible) { - activeFaces.push(face); - } - } - this.faces = activeFaces; - return this; - } - // Finds the next vertex to create faces with the current hull - nextVertexToAdd() { - if (this.assigned.isEmpty() === false) { - let eyeVertex, maxDistance = 0; - const eyeFace = this.assigned.first().face; - let vertex = eyeFace.outside; - do { - const distance = eyeFace.distanceToPoint(vertex.point); - if (distance > maxDistance) { - maxDistance = distance; - eyeVertex = vertex; - } - vertex = vertex.next; - } while (vertex !== null && vertex.face === eyeFace); - return eyeVertex; - } - } - // Computes a chain of half edges in CCW order called the 'horizon'. - // For an edge to be part of the horizon it must join a face that can see - // 'eyePoint' and a face that cannot see 'eyePoint'. - computeHorizon(eyePoint, crossEdge, face, horizon) { - this.deleteFaceVertices(face); - face.mark = Deleted; - let edge; - if (crossEdge === null) { - edge = crossEdge = face.getEdge(0); - } else { - edge = crossEdge.next; - } - do { - const twinEdge = edge.twin; - const oppositeFace = twinEdge.face; - if (oppositeFace.mark === Visible) { - if (oppositeFace.distanceToPoint(eyePoint) > this.tolerance) { - this.computeHorizon(eyePoint, twinEdge, oppositeFace, horizon); - } else { - horizon.push(edge); - } - } - edge = edge.next; - } while (edge !== crossEdge); - return this; - } - // Creates a face with the vertices 'eyeVertex.point', 'horizonEdge.tail' and 'horizonEdge.head' in CCW order - addAdjoiningFace(eyeVertex, horizonEdge) { - const face = Face.create(eyeVertex, horizonEdge.tail(), horizonEdge.head()); - this.faces.push(face); - face.getEdge(-1).setTwin(horizonEdge.twin); - return face.getEdge(0); - } - // Adds 'horizon.length' faces to the hull, each face will be linked with the - // horizon opposite face and the face on the left/right - addNewFaces(eyeVertex, horizon) { - this.newFaces = []; - let firstSideEdge = null; - let previousSideEdge = null; - for (let i = 0; i < horizon.length; i++) { - const horizonEdge = horizon[i]; - const sideEdge = this.addAdjoiningFace(eyeVertex, horizonEdge); - if (firstSideEdge === null) { - firstSideEdge = sideEdge; - } else { - sideEdge.next.setTwin(previousSideEdge); - } - this.newFaces.push(sideEdge.face); - previousSideEdge = sideEdge; - } - firstSideEdge.next.setTwin(previousSideEdge); - return this; - } - // Adds a vertex to the hull - addVertexToHull(eyeVertex) { - const horizon = []; - this.unassigned.clear(); - this.removeVertexFromFace(eyeVertex, eyeVertex.face); - this.computeHorizon(eyeVertex.point, null, eyeVertex.face, horizon); - this.addNewFaces(eyeVertex, horizon); - this.resolveUnassignedPoints(this.newFaces); - return this; - } - cleanup() { - this.assigned.clear(); - this.unassigned.clear(); - this.newFaces = []; - return this; - } - compute() { - let vertex; - this.computeInitialHull(); - while ((vertex = this.nextVertexToAdd()) !== void 0) { - this.addVertexToHull(vertex); - } - this.reindexFaces(); - this.cleanup(); - return this; - } -}; -var Face = class _Face { - constructor() { - this.normal = new Vector3(); - this.midpoint = new Vector3(); - this.area = 0; - this.constant = 0; - this.outside = null; - this.mark = Visible; - this.edge = null; - } - static create(a2, b3, c2) { - const face = new _Face(); - const e0 = new HalfEdge(a2, face); - const e1 = new HalfEdge(b3, face); - const e2 = new HalfEdge(c2, face); - e0.next = e2.prev = e1; - e1.next = e0.prev = e2; - e2.next = e1.prev = e0; - face.edge = e0; - return face.compute(); - } - getEdge(i) { - let edge = this.edge; - while (i > 0) { - edge = edge.next; - i--; - } - while (i < 0) { - edge = edge.prev; - i++; - } - return edge; - } - compute() { - const a2 = this.edge.tail(); - const b3 = this.edge.head(); - const c2 = this.edge.next.head(); - _triangle.set(a2.point, b3.point, c2.point); - _triangle.getNormal(this.normal); - _triangle.getMidpoint(this.midpoint); - this.area = _triangle.getArea(); - this.constant = this.normal.dot(this.midpoint); - return this; - } - distanceToPoint(point) { - return this.normal.dot(point) - this.constant; - } -}; -var HalfEdge = class { - constructor(vertex, face) { - this.vertex = vertex; - this.prev = null; - this.next = null; - this.twin = null; - this.face = face; - } - head() { - return this.vertex; - } - tail() { - return this.prev ? this.prev.vertex : null; - } - length() { - const head2 = this.head(); - const tail = this.tail(); - if (tail !== null) { - return tail.point.distanceTo(head2.point); - } - return -1; - } - lengthSquared() { - const head2 = this.head(); - const tail = this.tail(); - if (tail !== null) { - return tail.point.distanceToSquared(head2.point); - } - return -1; - } - setTwin(edge) { - this.twin = edge; - edge.twin = this; - return this; - } -}; -var VertexNode = class { - constructor(point) { - this.point = point; - this.prev = null; - this.next = null; - this.face = null; - } -}; -var VertexList = class { - constructor() { - this.head = null; - this.tail = null; - } - first() { - return this.head; - } - last() { - return this.tail; - } - clear() { - this.head = this.tail = null; - return this; - } - // Inserts a vertex before the target vertex - insertBefore(target, vertex) { - vertex.prev = target.prev; - vertex.next = target; - if (vertex.prev === null) { - this.head = vertex; - } else { - vertex.prev.next = vertex; - } - target.prev = vertex; - return this; - } - // Inserts a vertex after the target vertex - insertAfter(target, vertex) { - vertex.prev = target; - vertex.next = target.next; - if (vertex.next === null) { - this.tail = vertex; - } else { - vertex.next.prev = vertex; - } - target.next = vertex; - return this; - } - // Appends a vertex to the end of the linked list - append(vertex) { - if (this.head === null) { - this.head = vertex; - } else { - this.tail.next = vertex; - } - vertex.prev = this.tail; - vertex.next = null; - this.tail = vertex; - return this; - } - // Appends a chain of vertices where 'vertex' is the head. - appendChain(vertex) { - if (this.head === null) { - this.head = vertex; - } else { - this.tail.next = vertex; - } - vertex.prev = this.tail; - while (vertex.next !== null) { - vertex = vertex.next; - } - this.tail = vertex; - return this; - } - // Removes a vertex from the linked list - remove(vertex) { - if (vertex.prev === null) { - this.head = vertex.next; - } else { - vertex.prev.next = vertex.next; - } - if (vertex.next === null) { - this.tail = vertex.prev; - } else { - vertex.next.prev = vertex.prev; - } - return this; - } - // Removes a list of vertices whose 'head' is 'a' and whose 'tail' is b - removeSubList(a2, b3) { - if (a2.prev === null) { - this.head = b3.next; - } else { - a2.prev.next = b3.next; - } - if (b3.next === null) { - this.tail = a2.prev; - } else { - b3.next.prev = a2.prev; - } - return this; - } - isEmpty() { - return this.head === null; - } -}; - -// node_modules/three/examples/jsm/geometries/ConvexGeometry.js -var ConvexGeometry = class extends BufferGeometry { - constructor(points = []) { - super(); - const vertices = []; - const normals = []; - const convexHull = new ConvexHull().setFromPoints(points); - const faces = convexHull.faces; - for (let i = 0; i < faces.length; i++) { - const face = faces[i]; - let edge = face.edge; - do { - const point = edge.head().point; - vertices.push(point.x, point.y, point.z); - normals.push(face.normal.x, face.normal.y, face.normal.z); - edge = edge.next; - } while (edge !== face.edge); - } - this.setAttribute("position", new Float32BufferAttribute(vertices, 3)); - this.setAttribute("normal", new Float32BufferAttribute(normals, 3)); - } -}; - -// node_modules/three/examples/jsm/geometries/DecalGeometry.js -var DecalGeometry = class extends BufferGeometry { - constructor(mesh, position2, orientation, size2) { - super(); - const vertices = []; - const normals = []; - const uvs = []; - const plane = new Vector3(); - const projectorMatrix = new Matrix4(); - projectorMatrix.makeRotationFromEuler(orientation); - projectorMatrix.setPosition(position2); - const projectorMatrixInverse = new Matrix4(); - projectorMatrixInverse.copy(projectorMatrix).invert(); - generate(); - this.setAttribute("position", new Float32BufferAttribute(vertices, 3)); - this.setAttribute("normal", new Float32BufferAttribute(normals, 3)); - this.setAttribute("uv", new Float32BufferAttribute(uvs, 2)); - function generate() { - let decalVertices = []; - const vertex = new Vector3(); - const normal = new Vector3(); - const geometry = mesh.geometry; - const positionAttribute = geometry.attributes.position; - const normalAttribute = geometry.attributes.normal; - if (geometry.index !== null) { - const index2 = geometry.index; - for (let i = 0; i < index2.count; i++) { - vertex.fromBufferAttribute(positionAttribute, index2.getX(i)); - normal.fromBufferAttribute(normalAttribute, index2.getX(i)); - pushDecalVertex(decalVertices, vertex, normal); - } - } else { - for (let i = 0; i < positionAttribute.count; i++) { - vertex.fromBufferAttribute(positionAttribute, i); - normal.fromBufferAttribute(normalAttribute, i); - pushDecalVertex(decalVertices, vertex, normal); - } - } - decalVertices = clipGeometry(decalVertices, plane.set(1, 0, 0)); - decalVertices = clipGeometry(decalVertices, plane.set(-1, 0, 0)); - decalVertices = clipGeometry(decalVertices, plane.set(0, 1, 0)); - decalVertices = clipGeometry(decalVertices, plane.set(0, -1, 0)); - decalVertices = clipGeometry(decalVertices, plane.set(0, 0, 1)); - decalVertices = clipGeometry(decalVertices, plane.set(0, 0, -1)); - for (let i = 0; i < decalVertices.length; i++) { - const decalVertex = decalVertices[i]; - uvs.push( - 0.5 + decalVertex.position.x / size2.x, - 0.5 + decalVertex.position.y / size2.y - ); - decalVertex.position.applyMatrix4(projectorMatrix); - vertices.push(decalVertex.position.x, decalVertex.position.y, decalVertex.position.z); - normals.push(decalVertex.normal.x, decalVertex.normal.y, decalVertex.normal.z); - } - } - function pushDecalVertex(decalVertices, vertex, normal) { - vertex.applyMatrix4(mesh.matrixWorld); - vertex.applyMatrix4(projectorMatrixInverse); - normal.transformDirection(mesh.matrixWorld); - decalVertices.push(new DecalVertex(vertex.clone(), normal.clone())); - } - function clipGeometry(inVertices, plane2) { - const outVertices = []; - const s = 0.5 * Math.abs(size2.dot(plane2)); - for (let i = 0; i < inVertices.length; i += 3) { - let total = 0; - let nV1; - let nV2; - let nV3; - let nV4; - const d1 = inVertices[i + 0].position.dot(plane2) - s; - const d2 = inVertices[i + 1].position.dot(plane2) - s; - const d3 = inVertices[i + 2].position.dot(plane2) - s; - const v1Out = d1 > 0; - const v2Out = d2 > 0; - const v3Out = d3 > 0; - total = (v1Out ? 1 : 0) + (v2Out ? 1 : 0) + (v3Out ? 1 : 0); - switch (total) { - case 0: { - outVertices.push(inVertices[i]); - outVertices.push(inVertices[i + 1]); - outVertices.push(inVertices[i + 2]); - break; - } - case 1: { - if (v1Out) { - nV1 = inVertices[i + 1]; - nV2 = inVertices[i + 2]; - nV3 = clip(inVertices[i], nV1, plane2, s); - nV4 = clip(inVertices[i], nV2, plane2, s); - } - if (v2Out) { - nV1 = inVertices[i]; - nV2 = inVertices[i + 2]; - nV3 = clip(inVertices[i + 1], nV1, plane2, s); - nV4 = clip(inVertices[i + 1], nV2, plane2, s); - outVertices.push(nV3); - outVertices.push(nV2.clone()); - outVertices.push(nV1.clone()); - outVertices.push(nV2.clone()); - outVertices.push(nV3.clone()); - outVertices.push(nV4); - break; - } - if (v3Out) { - nV1 = inVertices[i]; - nV2 = inVertices[i + 1]; - nV3 = clip(inVertices[i + 2], nV1, plane2, s); - nV4 = clip(inVertices[i + 2], nV2, plane2, s); - } - outVertices.push(nV1.clone()); - outVertices.push(nV2.clone()); - outVertices.push(nV3); - outVertices.push(nV4); - outVertices.push(nV3.clone()); - outVertices.push(nV2.clone()); - break; - } - case 2: { - if (!v1Out) { - nV1 = inVertices[i].clone(); - nV2 = clip(nV1, inVertices[i + 1], plane2, s); - nV3 = clip(nV1, inVertices[i + 2], plane2, s); - outVertices.push(nV1); - outVertices.push(nV2); - outVertices.push(nV3); - } - if (!v2Out) { - nV1 = inVertices[i + 1].clone(); - nV2 = clip(nV1, inVertices[i + 2], plane2, s); - nV3 = clip(nV1, inVertices[i], plane2, s); - outVertices.push(nV1); - outVertices.push(nV2); - outVertices.push(nV3); - } - if (!v3Out) { - nV1 = inVertices[i + 2].clone(); - nV2 = clip(nV1, inVertices[i], plane2, s); - nV3 = clip(nV1, inVertices[i + 1], plane2, s); - outVertices.push(nV1); - outVertices.push(nV2); - outVertices.push(nV3); - } - break; - } - case 3: { - break; - } - } - } - return outVertices; - } - function clip(v0, v12, p2, s) { - const d0 = v0.position.dot(p2) - s; - const d1 = v12.position.dot(p2) - s; - const s0 = d0 / (d0 - d1); - const v = new DecalVertex( - new Vector3( - v0.position.x + s0 * (v12.position.x - v0.position.x), - v0.position.y + s0 * (v12.position.y - v0.position.y), - v0.position.z + s0 * (v12.position.z - v0.position.z) - ), - new Vector3( - v0.normal.x + s0 * (v12.normal.x - v0.normal.x), - v0.normal.y + s0 * (v12.normal.y - v0.normal.y), - v0.normal.z + s0 * (v12.normal.z - v0.normal.z) - ) - ); - return v; - } - } -}; -var DecalVertex = class { - constructor(position2, normal) { - this.position = position2; - this.normal = normal; - } - clone() { - return new this.constructor(this.position.clone(), this.normal.clone()); - } -}; - -// node_modules/three/examples/jsm/geometries/ParametricGeometry.js -var ParametricGeometry = class extends BufferGeometry { - constructor(func = (u, v, target) => target.set(u, v, Math.cos(u) * Math.sin(v)), slices = 8, stacks = 8) { - super(); - this.type = "ParametricGeometry"; - this.parameters = { - func, - slices, - stacks - }; - const indices = []; - const vertices = []; - const normals = []; - const uvs = []; - const EPS2 = 1e-5; - const normal = new Vector3(); - const p0 = new Vector3(), p1 = new Vector3(); - const pu = new Vector3(), pv = new Vector3(); - const sliceCount = slices + 1; - for (let i = 0; i <= stacks; i++) { - const v = i / stacks; - for (let j = 0; j <= slices; j++) { - const u = j / slices; - func(u, v, p0); - vertices.push(p0.x, p0.y, p0.z); - if (u - EPS2 >= 0) { - func(u - EPS2, v, p1); - pu.subVectors(p0, p1); - } else { - func(u + EPS2, v, p1); - pu.subVectors(p1, p0); - } - if (v - EPS2 >= 0) { - func(u, v - EPS2, p1); - pv.subVectors(p0, p1); - } else { - func(u, v + EPS2, p1); - pv.subVectors(p1, p0); - } - normal.crossVectors(pu, pv).normalize(); - normals.push(normal.x, normal.y, normal.z); - uvs.push(u, v); - } - } - for (let i = 0; i < stacks; i++) { - for (let j = 0; j < slices; j++) { - const a2 = i * sliceCount + j; - const b3 = i * sliceCount + j + 1; - const c2 = (i + 1) * sliceCount + j + 1; - const d = (i + 1) * sliceCount + j; - indices.push(a2, b3, d); - indices.push(b3, c2, d); - } - } - this.setIndex(indices); - this.setAttribute("position", new Float32BufferAttribute(vertices, 3)); - this.setAttribute("normal", new Float32BufferAttribute(normals, 3)); - this.setAttribute("uv", new Float32BufferAttribute(uvs, 2)); - } - copy(source) { - super.copy(source); - this.parameters = Object.assign({}, source.parameters); - return this; - } -}; - -// node_modules/three/examples/jsm/geometries/ParametricGeometries.js -var ParametricGeometries = { - klein: function(v, u, target) { - u *= Math.PI; - v *= 2 * Math.PI; - u = u * 2; - let x2, z; - if (u < Math.PI) { - x2 = 3 * Math.cos(u) * (1 + Math.sin(u)) + 2 * (1 - Math.cos(u) / 2) * Math.cos(u) * Math.cos(v); - z = -8 * Math.sin(u) - 2 * (1 - Math.cos(u) / 2) * Math.sin(u) * Math.cos(v); - } else { - x2 = 3 * Math.cos(u) * (1 + Math.sin(u)) + 2 * (1 - Math.cos(u) / 2) * Math.cos(v + Math.PI); - z = -8 * Math.sin(u); - } - const y2 = -2 * (1 - Math.cos(u) / 2) * Math.sin(v); - target.set(x2, y2, z); - }, - plane: function(width2, height2) { - return function(u, v, target) { - const x2 = u * width2; - const y2 = 0; - const z = v * height2; - target.set(x2, y2, z); - }; - }, - mobius: function(u, t3, target) { - u = u - 0.5; - const v = 2 * Math.PI * t3; - const a2 = 2; - const x2 = Math.cos(v) * (a2 + u * Math.cos(v / 2)); - const y2 = Math.sin(v) * (a2 + u * Math.cos(v / 2)); - const z = u * Math.sin(v / 2); - target.set(x2, y2, z); - }, - mobius3d: function(u, t3, target) { - u *= Math.PI; - t3 *= 2 * Math.PI; - u = u * 2; - const phi = u / 2; - const major = 2.25, a2 = 0.125, b3 = 0.65; - let x2 = a2 * Math.cos(t3) * Math.cos(phi) - b3 * Math.sin(t3) * Math.sin(phi); - const z = a2 * Math.cos(t3) * Math.sin(phi) + b3 * Math.sin(t3) * Math.cos(phi); - const y2 = (major + x2) * Math.sin(u); - x2 = (major + x2) * Math.cos(u); - target.set(x2, y2, z); - } -}; -ParametricGeometries.TubeGeometry = class TubeGeometry extends ParametricGeometry { - constructor(path, segments = 64, radius = 1, segmentsRadius = 8, closed = false) { - const numpoints = segments + 1; - const frames2 = path.computeFrenetFrames(segments, closed), tangents = frames2.tangents, normals = frames2.normals, binormals = frames2.binormals; - const position2 = new Vector3(); - function ParametricTube(u, v, target) { - v *= 2 * Math.PI; - const i = Math.floor(u * (numpoints - 1)); - path.getPointAt(u, position2); - const normal = normals[i]; - const binormal = binormals[i]; - const cx = -radius * Math.cos(v); - const cy = radius * Math.sin(v); - position2.x += cx * normal.x + cy * binormal.x; - position2.y += cx * normal.y + cy * binormal.y; - position2.z += cx * normal.z + cy * binormal.z; - target.copy(position2); - } - super(ParametricTube, segments, segmentsRadius); - this.tangents = tangents; - this.normals = normals; - this.binormals = binormals; - this.path = path; - this.segments = segments; - this.radius = radius; - this.segmentsRadius = segmentsRadius; - this.closed = closed; - } -}; -ParametricGeometries.TorusKnotGeometry = class TorusKnotGeometry extends ParametricGeometries.TubeGeometry { - constructor(radius = 200, tube = 40, segmentsT = 64, segmentsR = 8, p2 = 2, q2 = 3) { - class TorusKnotCurve extends Curve { - getPoint(t3, optionalTarget = new Vector3()) { - const point = optionalTarget; - t3 *= Math.PI * 2; - const r = 0.5; - const x2 = (1 + r * Math.cos(q2 * t3)) * Math.cos(p2 * t3); - const y2 = (1 + r * Math.cos(q2 * t3)) * Math.sin(p2 * t3); - const z = r * Math.sin(q2 * t3); - return point.set(x2, y2, z).multiplyScalar(radius); - } - } - const segments = segmentsT; - const radiusSegments = segmentsR; - const extrudePath = new TorusKnotCurve(); - super(extrudePath, segments, tube, radiusSegments, true, false); - this.radius = radius; - this.tube = tube; - this.segmentsT = segmentsT; - this.segmentsR = segmentsR; - this.p = p2; - this.q = q2; - } -}; -ParametricGeometries.SphereGeometry = class SphereGeometry2 extends ParametricGeometry { - constructor(size2, u, v) { - function sphere(u2, v2, target) { - u2 *= Math.PI; - v2 *= 2 * Math.PI; - const x2 = size2 * Math.sin(u2) * Math.cos(v2); - const y2 = size2 * Math.sin(u2) * Math.sin(v2); - const z = size2 * Math.cos(u2); - target.set(x2, y2, z); - } - super(sphere, u, v); - } -}; -ParametricGeometries.PlaneGeometry = class PlaneGeometry2 extends ParametricGeometry { - constructor(width2, depth, segmentsWidth, segmentsDepth) { - function plane(u, v, target) { - const x2 = u * width2; - const y2 = 0; - const z = v * depth; - target.set(x2, y2, z); - } - super(plane, segmentsWidth, segmentsDepth); - } -}; - -// node_modules/three/examples/jsm/geometries/RoundedBoxGeometry.js -var _tempNormal = new Vector3(); -function getUv(faceDirVector, normal, uvAxis, projectionAxis, radius, sideLength) { - const totArcLength = 2 * Math.PI * radius / 4; - const centerLength = Math.max(sideLength - 2 * radius, 0); - const halfArc = Math.PI / 4; - _tempNormal.copy(normal); - _tempNormal[projectionAxis] = 0; - _tempNormal.normalize(); - const arcUvRatio = 0.5 * totArcLength / (totArcLength + centerLength); - const arcAngleRatio = 1 - _tempNormal.angleTo(faceDirVector) / halfArc; - if (Math.sign(_tempNormal[uvAxis]) === 1) { - return arcAngleRatio * arcUvRatio; - } else { - const lenUv = centerLength / (totArcLength + centerLength); - return lenUv + arcUvRatio + arcUvRatio * (1 - arcAngleRatio); - } -} -var RoundedBoxGeometry = class extends BoxGeometry { - constructor(width2 = 1, height2 = 1, depth = 1, segments = 2, radius = 0.1) { - segments = segments * 2 + 1; - radius = Math.min(width2 / 2, height2 / 2, depth / 2, radius); - super(1, 1, 1, segments, segments, segments); - if (segments === 1) return; - const geometry2 = this.toNonIndexed(); - this.index = null; - this.attributes.position = geometry2.attributes.position; - this.attributes.normal = geometry2.attributes.normal; - this.attributes.uv = geometry2.attributes.uv; - const position2 = new Vector3(); - const normal = new Vector3(); - const box = new Vector3(width2, height2, depth).divideScalar(2).subScalar(radius); - const positions = this.attributes.position.array; - const normals = this.attributes.normal.array; - const uvs = this.attributes.uv.array; - const faceTris = positions.length / 6; - const faceDirVector = new Vector3(); - const halfSegmentSize = 0.5 / segments; - for (let i = 0, j = 0; i < positions.length; i += 3, j += 2) { - position2.fromArray(positions, i); - normal.copy(position2); - normal.x -= Math.sign(normal.x) * halfSegmentSize; - normal.y -= Math.sign(normal.y) * halfSegmentSize; - normal.z -= Math.sign(normal.z) * halfSegmentSize; - normal.normalize(); - positions[i + 0] = box.x * Math.sign(position2.x) + normal.x * radius; - positions[i + 1] = box.y * Math.sign(position2.y) + normal.y * radius; - positions[i + 2] = box.z * Math.sign(position2.z) + normal.z * radius; - normals[i + 0] = normal.x; - normals[i + 1] = normal.y; - normals[i + 2] = normal.z; - const side = Math.floor(i / faceTris); - switch (side) { - case 0: - faceDirVector.set(1, 0, 0); - uvs[j + 0] = getUv(faceDirVector, normal, "z", "y", radius, depth); - uvs[j + 1] = 1 - getUv(faceDirVector, normal, "y", "z", radius, height2); - break; - case 1: - faceDirVector.set(-1, 0, 0); - uvs[j + 0] = 1 - getUv(faceDirVector, normal, "z", "y", radius, depth); - uvs[j + 1] = 1 - getUv(faceDirVector, normal, "y", "z", radius, height2); - break; - case 2: - faceDirVector.set(0, 1, 0); - uvs[j + 0] = 1 - getUv(faceDirVector, normal, "x", "z", radius, width2); - uvs[j + 1] = getUv(faceDirVector, normal, "z", "x", radius, depth); - break; - case 3: - faceDirVector.set(0, -1, 0); - uvs[j + 0] = 1 - getUv(faceDirVector, normal, "x", "z", radius, width2); - uvs[j + 1] = 1 - getUv(faceDirVector, normal, "z", "x", radius, depth); - break; - case 4: - faceDirVector.set(0, 0, 1); - uvs[j + 0] = 1 - getUv(faceDirVector, normal, "x", "y", radius, width2); - uvs[j + 1] = 1 - getUv(faceDirVector, normal, "y", "x", radius, height2); - break; - case 5: - faceDirVector.set(0, 0, -1); - uvs[j + 0] = getUv(faceDirVector, normal, "x", "y", radius, width2); - uvs[j + 1] = 1 - getUv(faceDirVector, normal, "y", "x", radius, height2); - break; - } - } - } -}; - -// node_modules/three/examples/jsm/geometries/TeapotGeometry.js -var TeapotGeometry = class extends BufferGeometry { - constructor(size2 = 50, segments = 10, bottom = true, lid = true, body = true, fitLid = true, blinn = true) { - const teapotPatches = [ - /*rim*/ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 3, - 16, - 17, - 18, - 7, - 19, - 20, - 21, - 11, - 22, - 23, - 24, - 15, - 25, - 26, - 27, - 18, - 28, - 29, - 30, - 21, - 31, - 32, - 33, - 24, - 34, - 35, - 36, - 27, - 37, - 38, - 39, - 30, - 40, - 41, - 0, - 33, - 42, - 43, - 4, - 36, - 44, - 45, - 8, - 39, - 46, - 47, - 12, - /*body*/ - 12, - 13, - 14, - 15, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 15, - 25, - 26, - 27, - 51, - 60, - 61, - 62, - 55, - 63, - 64, - 65, - 59, - 66, - 67, - 68, - 27, - 37, - 38, - 39, - 62, - 69, - 70, - 71, - 65, - 72, - 73, - 74, - 68, - 75, - 76, - 77, - 39, - 46, - 47, - 12, - 71, - 78, - 79, - 48, - 74, - 80, - 81, - 52, - 77, - 82, - 83, - 56, - 56, - 57, - 58, - 59, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 59, - 66, - 67, - 68, - 87, - 96, - 97, - 98, - 91, - 99, - 100, - 101, - 95, - 102, - 103, - 104, - 68, - 75, - 76, - 77, - 98, - 105, - 106, - 107, - 101, - 108, - 109, - 110, - 104, - 111, - 112, - 113, - 77, - 82, - 83, - 56, - 107, - 114, - 115, - 84, - 110, - 116, - 117, - 88, - 113, - 118, - 119, - 92, - /*handle*/ - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 123, - 136, - 137, - 120, - 127, - 138, - 139, - 124, - 131, - 140, - 141, - 128, - 135, - 142, - 143, - 132, - 132, - 133, - 134, - 135, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 68, - 152, - 153, - 154, - 135, - 142, - 143, - 132, - 147, - 155, - 156, - 144, - 151, - 157, - 158, - 148, - 154, - 159, - 160, - 68, - /*spout*/ - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 164, - 177, - 178, - 161, - 168, - 179, - 180, - 165, - 172, - 181, - 182, - 169, - 176, - 183, - 184, - 173, - 173, - 174, - 175, - 176, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 176, - 183, - 184, - 173, - 188, - 197, - 198, - 185, - 192, - 199, - 200, - 189, - 196, - 201, - 202, - 193, - /*lid*/ - 203, - 203, - 203, - 203, - 204, - 205, - 206, - 207, - 208, - 208, - 208, - 208, - 209, - 210, - 211, - 212, - 203, - 203, - 203, - 203, - 207, - 213, - 214, - 215, - 208, - 208, - 208, - 208, - 212, - 216, - 217, - 218, - 203, - 203, - 203, - 203, - 215, - 219, - 220, - 221, - 208, - 208, - 208, - 208, - 218, - 222, - 223, - 224, - 203, - 203, - 203, - 203, - 221, - 225, - 226, - 204, - 208, - 208, - 208, - 208, - 224, - 227, - 228, - 209, - 209, - 210, - 211, - 212, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 212, - 216, - 217, - 218, - 232, - 241, - 242, - 243, - 236, - 244, - 245, - 246, - 240, - 247, - 248, - 249, - 218, - 222, - 223, - 224, - 243, - 250, - 251, - 252, - 246, - 253, - 254, - 255, - 249, - 256, - 257, - 258, - 224, - 227, - 228, - 209, - 252, - 259, - 260, - 229, - 255, - 261, - 262, - 233, - 258, - 263, - 264, - 237, - /*bottom*/ - 265, - 265, - 265, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 92, - 119, - 118, - 113, - 265, - 265, - 265, - 265, - 269, - 274, - 275, - 276, - 273, - 277, - 278, - 279, - 113, - 112, - 111, - 104, - 265, - 265, - 265, - 265, - 276, - 280, - 281, - 282, - 279, - 283, - 284, - 285, - 104, - 103, - 102, - 95, - 265, - 265, - 265, - 265, - 282, - 286, - 287, - 266, - 285, - 288, - 289, - 270, - 95, - 94, - 93, - 92 - ]; - const teapotVertices = [ - 1.4, - 0, - 2.4, - 1.4, - -0.784, - 2.4, - 0.784, - -1.4, - 2.4, - 0, - -1.4, - 2.4, - 1.3375, - 0, - 2.53125, - 1.3375, - -0.749, - 2.53125, - 0.749, - -1.3375, - 2.53125, - 0, - -1.3375, - 2.53125, - 1.4375, - 0, - 2.53125, - 1.4375, - -0.805, - 2.53125, - 0.805, - -1.4375, - 2.53125, - 0, - -1.4375, - 2.53125, - 1.5, - 0, - 2.4, - 1.5, - -0.84, - 2.4, - 0.84, - -1.5, - 2.4, - 0, - -1.5, - 2.4, - -0.784, - -1.4, - 2.4, - -1.4, - -0.784, - 2.4, - -1.4, - 0, - 2.4, - -0.749, - -1.3375, - 2.53125, - -1.3375, - -0.749, - 2.53125, - -1.3375, - 0, - 2.53125, - -0.805, - -1.4375, - 2.53125, - -1.4375, - -0.805, - 2.53125, - -1.4375, - 0, - 2.53125, - -0.84, - -1.5, - 2.4, - -1.5, - -0.84, - 2.4, - -1.5, - 0, - 2.4, - -1.4, - 0.784, - 2.4, - -0.784, - 1.4, - 2.4, - 0, - 1.4, - 2.4, - -1.3375, - 0.749, - 2.53125, - -0.749, - 1.3375, - 2.53125, - 0, - 1.3375, - 2.53125, - -1.4375, - 0.805, - 2.53125, - -0.805, - 1.4375, - 2.53125, - 0, - 1.4375, - 2.53125, - -1.5, - 0.84, - 2.4, - -0.84, - 1.5, - 2.4, - 0, - 1.5, - 2.4, - 0.784, - 1.4, - 2.4, - 1.4, - 0.784, - 2.4, - 0.749, - 1.3375, - 2.53125, - 1.3375, - 0.749, - 2.53125, - 0.805, - 1.4375, - 2.53125, - 1.4375, - 0.805, - 2.53125, - 0.84, - 1.5, - 2.4, - 1.5, - 0.84, - 2.4, - 1.75, - 0, - 1.875, - 1.75, - -0.98, - 1.875, - 0.98, - -1.75, - 1.875, - 0, - -1.75, - 1.875, - 2, - 0, - 1.35, - 2, - -1.12, - 1.35, - 1.12, - -2, - 1.35, - 0, - -2, - 1.35, - 2, - 0, - 0.9, - 2, - -1.12, - 0.9, - 1.12, - -2, - 0.9, - 0, - -2, - 0.9, - -0.98, - -1.75, - 1.875, - -1.75, - -0.98, - 1.875, - -1.75, - 0, - 1.875, - -1.12, - -2, - 1.35, - -2, - -1.12, - 1.35, - -2, - 0, - 1.35, - -1.12, - -2, - 0.9, - -2, - -1.12, - 0.9, - -2, - 0, - 0.9, - -1.75, - 0.98, - 1.875, - -0.98, - 1.75, - 1.875, - 0, - 1.75, - 1.875, - -2, - 1.12, - 1.35, - -1.12, - 2, - 1.35, - 0, - 2, - 1.35, - -2, - 1.12, - 0.9, - -1.12, - 2, - 0.9, - 0, - 2, - 0.9, - 0.98, - 1.75, - 1.875, - 1.75, - 0.98, - 1.875, - 1.12, - 2, - 1.35, - 2, - 1.12, - 1.35, - 1.12, - 2, - 0.9, - 2, - 1.12, - 0.9, - 2, - 0, - 0.45, - 2, - -1.12, - 0.45, - 1.12, - -2, - 0.45, - 0, - -2, - 0.45, - 1.5, - 0, - 0.225, - 1.5, - -0.84, - 0.225, - 0.84, - -1.5, - 0.225, - 0, - -1.5, - 0.225, - 1.5, - 0, - 0.15, - 1.5, - -0.84, - 0.15, - 0.84, - -1.5, - 0.15, - 0, - -1.5, - 0.15, - -1.12, - -2, - 0.45, - -2, - -1.12, - 0.45, - -2, - 0, - 0.45, - -0.84, - -1.5, - 0.225, - -1.5, - -0.84, - 0.225, - -1.5, - 0, - 0.225, - -0.84, - -1.5, - 0.15, - -1.5, - -0.84, - 0.15, - -1.5, - 0, - 0.15, - -2, - 1.12, - 0.45, - -1.12, - 2, - 0.45, - 0, - 2, - 0.45, - -1.5, - 0.84, - 0.225, - -0.84, - 1.5, - 0.225, - 0, - 1.5, - 0.225, - -1.5, - 0.84, - 0.15, - -0.84, - 1.5, - 0.15, - 0, - 1.5, - 0.15, - 1.12, - 2, - 0.45, - 2, - 1.12, - 0.45, - 0.84, - 1.5, - 0.225, - 1.5, - 0.84, - 0.225, - 0.84, - 1.5, - 0.15, - 1.5, - 0.84, - 0.15, - -1.6, - 0, - 2.025, - -1.6, - -0.3, - 2.025, - -1.5, - -0.3, - 2.25, - -1.5, - 0, - 2.25, - -2.3, - 0, - 2.025, - -2.3, - -0.3, - 2.025, - -2.5, - -0.3, - 2.25, - -2.5, - 0, - 2.25, - -2.7, - 0, - 2.025, - -2.7, - -0.3, - 2.025, - -3, - -0.3, - 2.25, - -3, - 0, - 2.25, - -2.7, - 0, - 1.8, - -2.7, - -0.3, - 1.8, - -3, - -0.3, - 1.8, - -3, - 0, - 1.8, - -1.5, - 0.3, - 2.25, - -1.6, - 0.3, - 2.025, - -2.5, - 0.3, - 2.25, - -2.3, - 0.3, - 2.025, - -3, - 0.3, - 2.25, - -2.7, - 0.3, - 2.025, - -3, - 0.3, - 1.8, - -2.7, - 0.3, - 1.8, - -2.7, - 0, - 1.575, - -2.7, - -0.3, - 1.575, - -3, - -0.3, - 1.35, - -3, - 0, - 1.35, - -2.5, - 0, - 1.125, - -2.5, - -0.3, - 1.125, - -2.65, - -0.3, - 0.9375, - -2.65, - 0, - 0.9375, - -2, - -0.3, - 0.9, - -1.9, - -0.3, - 0.6, - -1.9, - 0, - 0.6, - -3, - 0.3, - 1.35, - -2.7, - 0.3, - 1.575, - -2.65, - 0.3, - 0.9375, - -2.5, - 0.3, - 1.125, - -1.9, - 0.3, - 0.6, - -2, - 0.3, - 0.9, - 1.7, - 0, - 1.425, - 1.7, - -0.66, - 1.425, - 1.7, - -0.66, - 0.6, - 1.7, - 0, - 0.6, - 2.6, - 0, - 1.425, - 2.6, - -0.66, - 1.425, - 3.1, - -0.66, - 0.825, - 3.1, - 0, - 0.825, - 2.3, - 0, - 2.1, - 2.3, - -0.25, - 2.1, - 2.4, - -0.25, - 2.025, - 2.4, - 0, - 2.025, - 2.7, - 0, - 2.4, - 2.7, - -0.25, - 2.4, - 3.3, - -0.25, - 2.4, - 3.3, - 0, - 2.4, - 1.7, - 0.66, - 0.6, - 1.7, - 0.66, - 1.425, - 3.1, - 0.66, - 0.825, - 2.6, - 0.66, - 1.425, - 2.4, - 0.25, - 2.025, - 2.3, - 0.25, - 2.1, - 3.3, - 0.25, - 2.4, - 2.7, - 0.25, - 2.4, - 2.8, - 0, - 2.475, - 2.8, - -0.25, - 2.475, - 3.525, - -0.25, - 2.49375, - 3.525, - 0, - 2.49375, - 2.9, - 0, - 2.475, - 2.9, - -0.15, - 2.475, - 3.45, - -0.15, - 2.5125, - 3.45, - 0, - 2.5125, - 2.8, - 0, - 2.4, - 2.8, - -0.15, - 2.4, - 3.2, - -0.15, - 2.4, - 3.2, - 0, - 2.4, - 3.525, - 0.25, - 2.49375, - 2.8, - 0.25, - 2.475, - 3.45, - 0.15, - 2.5125, - 2.9, - 0.15, - 2.475, - 3.2, - 0.15, - 2.4, - 2.8, - 0.15, - 2.4, - 0, - 0, - 3.15, - 0.8, - 0, - 3.15, - 0.8, - -0.45, - 3.15, - 0.45, - -0.8, - 3.15, - 0, - -0.8, - 3.15, - 0, - 0, - 2.85, - 0.2, - 0, - 2.7, - 0.2, - -0.112, - 2.7, - 0.112, - -0.2, - 2.7, - 0, - -0.2, - 2.7, - -0.45, - -0.8, - 3.15, - -0.8, - -0.45, - 3.15, - -0.8, - 0, - 3.15, - -0.112, - -0.2, - 2.7, - -0.2, - -0.112, - 2.7, - -0.2, - 0, - 2.7, - -0.8, - 0.45, - 3.15, - -0.45, - 0.8, - 3.15, - 0, - 0.8, - 3.15, - -0.2, - 0.112, - 2.7, - -0.112, - 0.2, - 2.7, - 0, - 0.2, - 2.7, - 0.45, - 0.8, - 3.15, - 0.8, - 0.45, - 3.15, - 0.112, - 0.2, - 2.7, - 0.2, - 0.112, - 2.7, - 0.4, - 0, - 2.55, - 0.4, - -0.224, - 2.55, - 0.224, - -0.4, - 2.55, - 0, - -0.4, - 2.55, - 1.3, - 0, - 2.55, - 1.3, - -0.728, - 2.55, - 0.728, - -1.3, - 2.55, - 0, - -1.3, - 2.55, - 1.3, - 0, - 2.4, - 1.3, - -0.728, - 2.4, - 0.728, - -1.3, - 2.4, - 0, - -1.3, - 2.4, - -0.224, - -0.4, - 2.55, - -0.4, - -0.224, - 2.55, - -0.4, - 0, - 2.55, - -0.728, - -1.3, - 2.55, - -1.3, - -0.728, - 2.55, - -1.3, - 0, - 2.55, - -0.728, - -1.3, - 2.4, - -1.3, - -0.728, - 2.4, - -1.3, - 0, - 2.4, - -0.4, - 0.224, - 2.55, - -0.224, - 0.4, - 2.55, - 0, - 0.4, - 2.55, - -1.3, - 0.728, - 2.55, - -0.728, - 1.3, - 2.55, - 0, - 1.3, - 2.55, - -1.3, - 0.728, - 2.4, - -0.728, - 1.3, - 2.4, - 0, - 1.3, - 2.4, - 0.224, - 0.4, - 2.55, - 0.4, - 0.224, - 2.55, - 0.728, - 1.3, - 2.55, - 1.3, - 0.728, - 2.55, - 0.728, - 1.3, - 2.4, - 1.3, - 0.728, - 2.4, - 0, - 0, - 0, - 1.425, - 0, - 0, - 1.425, - 0.798, - 0, - 0.798, - 1.425, - 0, - 0, - 1.425, - 0, - 1.5, - 0, - 0.075, - 1.5, - 0.84, - 0.075, - 0.84, - 1.5, - 0.075, - 0, - 1.5, - 0.075, - -0.798, - 1.425, - 0, - -1.425, - 0.798, - 0, - -1.425, - 0, - 0, - -0.84, - 1.5, - 0.075, - -1.5, - 0.84, - 0.075, - -1.5, - 0, - 0.075, - -1.425, - -0.798, - 0, - -0.798, - -1.425, - 0, - 0, - -1.425, - 0, - -1.5, - -0.84, - 0.075, - -0.84, - -1.5, - 0.075, - 0, - -1.5, - 0.075, - 0.798, - -1.425, - 0, - 1.425, - -0.798, - 0, - 0.84, - -1.5, - 0.075, - 1.5, - -0.84, - 0.075 - ]; - super(); - segments = Math.max(2, Math.floor(segments)); - const blinnScale = 1.3; - const maxHeight = 3.15 * (blinn ? 1 : blinnScale); - const maxHeight2 = maxHeight / 2; - const trueSize = size2 / maxHeight2; - let numTriangles = bottom ? (8 * segments - 4) * segments : 0; - numTriangles += lid ? (16 * segments - 4) * segments : 0; - numTriangles += body ? 40 * segments * segments : 0; - const indices = new Uint32Array(numTriangles * 3); - let numVertices = bottom ? 4 : 0; - numVertices += lid ? 8 : 0; - numVertices += body ? 20 : 0; - numVertices *= (segments + 1) * (segments + 1); - const vertices = new Float32Array(numVertices * 3); - const normals = new Float32Array(numVertices * 3); - const uvs = new Float32Array(numVertices * 2); - const ms = new Matrix4(); - ms.set( - -1, - 3, - -3, - 1, - 3, - -6, - 3, - 0, - -3, - 3, - 0, - 0, - 1, - 0, - 0, - 0 - ); - const g2 = []; - const sp = []; - const tp = []; - const dsp = []; - const dtp = []; - const mgm = []; - const vert = []; - const sdir = []; - const tdir = []; - const norm = new Vector3(); - let tcoord; - let sval; - let tval; - let p2; - let dsval = 0; - let dtval = 0; - const normOut = new Vector3(); - const gmx = new Matrix4(); - const tmtx = new Matrix4(); - const vsp = new Vector4(); - const vtp = new Vector4(); - const vdsp = new Vector4(); - const vdtp = new Vector4(); - const vsdir = new Vector3(); - const vtdir = new Vector3(); - const mst = ms.clone(); - mst.transpose(); - const notDegenerate = (vtx1, vtx2, vtx3) => ( - // if any vertex matches, return false - !(vertices[vtx1 * 3] === vertices[vtx2 * 3] && vertices[vtx1 * 3 + 1] === vertices[vtx2 * 3 + 1] && vertices[vtx1 * 3 + 2] === vertices[vtx2 * 3 + 2] || vertices[vtx1 * 3] === vertices[vtx3 * 3] && vertices[vtx1 * 3 + 1] === vertices[vtx3 * 3 + 1] && vertices[vtx1 * 3 + 2] === vertices[vtx3 * 3 + 2] || vertices[vtx2 * 3] === vertices[vtx3 * 3] && vertices[vtx2 * 3 + 1] === vertices[vtx3 * 3 + 1] && vertices[vtx2 * 3 + 2] === vertices[vtx3 * 3 + 2]) - ); - for (let i = 0; i < 3; i++) { - mgm[i] = new Matrix4(); - } - const minPatches = body ? 0 : 20; - const maxPatches = bottom ? 32 : 28; - const vertPerRow = segments + 1; - let surfCount = 0; - let vertCount = 0; - let normCount = 0; - let uvCount = 0; - let indexCount = 0; - for (let surf = minPatches; surf < maxPatches; surf++) { - if (lid || (surf < 20 || surf >= 28)) { - for (let i = 0; i < 3; i++) { - for (let r = 0; r < 4; r++) { - for (let c2 = 0; c2 < 4; c2++) { - g2[c2 * 4 + r] = teapotVertices[teapotPatches[surf * 16 + r * 4 + c2] * 3 + i]; - if (fitLid && (surf >= 20 && surf < 28) && i !== 2) { - g2[c2 * 4 + r] *= 1.077; - } - if (!blinn && i === 2) { - g2[c2 * 4 + r] *= blinnScale; - } - } - } - gmx.set(g2[0], g2[1], g2[2], g2[3], g2[4], g2[5], g2[6], g2[7], g2[8], g2[9], g2[10], g2[11], g2[12], g2[13], g2[14], g2[15]); - tmtx.multiplyMatrices(gmx, ms); - mgm[i].multiplyMatrices(mst, tmtx); - } - for (let sstep = 0; sstep <= segments; sstep++) { - const s = sstep / segments; - for (let tstep = 0; tstep <= segments; tstep++) { - const t3 = tstep / segments; - for (p2 = 4, sval = tval = 1; p2--; ) { - sp[p2] = sval; - tp[p2] = tval; - sval *= s; - tval *= t3; - if (p2 === 3) { - dsp[p2] = dtp[p2] = 0; - dsval = dtval = 1; - } else { - dsp[p2] = dsval * (3 - p2); - dtp[p2] = dtval * (3 - p2); - dsval *= s; - dtval *= t3; - } - } - vsp.fromArray(sp); - vtp.fromArray(tp); - vdsp.fromArray(dsp); - vdtp.fromArray(dtp); - for (let i = 0; i < 3; i++) { - tcoord = vsp.clone(); - tcoord.applyMatrix4(mgm[i]); - vert[i] = tcoord.dot(vtp); - tcoord = vdsp.clone(); - tcoord.applyMatrix4(mgm[i]); - sdir[i] = tcoord.dot(vtp); - tcoord = vsp.clone(); - tcoord.applyMatrix4(mgm[i]); - tdir[i] = tcoord.dot(vdtp); - } - vsdir.fromArray(sdir); - vtdir.fromArray(tdir); - norm.crossVectors(vtdir, vsdir); - norm.normalize(); - if (vert[0] === 0 && vert[1] === 0) { - normOut.set(0, vert[2] > maxHeight2 ? 1 : -1, 0); - } else { - normOut.set(norm.x, norm.z, -norm.y); - } - vertices[vertCount++] = trueSize * vert[0]; - vertices[vertCount++] = trueSize * (vert[2] - maxHeight2); - vertices[vertCount++] = -trueSize * vert[1]; - normals[normCount++] = normOut.x; - normals[normCount++] = normOut.y; - normals[normCount++] = normOut.z; - uvs[uvCount++] = 1 - t3; - uvs[uvCount++] = 1 - s; - } - } - for (let sstep = 0; sstep < segments; sstep++) { - for (let tstep = 0; tstep < segments; tstep++) { - const v12 = surfCount * vertPerRow * vertPerRow + sstep * vertPerRow + tstep; - const v2 = v12 + 1; - const v3 = v2 + vertPerRow; - const v4 = v12 + vertPerRow; - if (notDegenerate(v12, v2, v3)) { - indices[indexCount++] = v12; - indices[indexCount++] = v2; - indices[indexCount++] = v3; - } - if (notDegenerate(v12, v3, v4)) { - indices[indexCount++] = v12; - indices[indexCount++] = v3; - indices[indexCount++] = v4; - } - } - } - surfCount++; - } - } - this.setIndex(new BufferAttribute(indices, 1)); - this.setAttribute("position", new BufferAttribute(vertices, 3)); - this.setAttribute("normal", new BufferAttribute(normals, 3)); - this.setAttribute("uv", new BufferAttribute(uvs, 2)); - this.computeBoundingSphere(); - } -}; - -// node_modules/three/examples/jsm/geometries/TextGeometry.js -var TextGeometry = class extends ExtrudeGeometry { - constructor(text2, parameters = {}) { - const font = parameters.font; - if (font === void 0) { - super(); - } else { - const shapes = font.generateShapes(text2, parameters.size); - if (parameters.depth === void 0 && parameters.height !== void 0) { - console.warn("THREE.TextGeometry: .height is now depreciated. Please use .depth instead"); - } - parameters.depth = parameters.depth !== void 0 ? parameters.depth : parameters.height !== void 0 ? parameters.height : 50; - if (parameters.bevelThickness === void 0) parameters.bevelThickness = 10; - if (parameters.bevelSize === void 0) parameters.bevelSize = 8; - if (parameters.bevelEnabled === void 0) parameters.bevelEnabled = false; - super(shapes, parameters); - } - this.type = "TextGeometry"; - } -}; - -// node_modules/three/examples/jsm/helpers/LightProbeHelper.js -var LightProbeHelper = class extends Mesh { - constructor(lightProbe, size2) { - const material = new ShaderMaterial({ - type: "LightProbeHelperMaterial", - uniforms: { - sh: { value: lightProbe.sh.coefficients }, - // by reference - intensity: { value: lightProbe.intensity } - }, - vertexShader: [ - "varying vec3 vNormal;", - "void main() {", - " vNormal = normalize( normalMatrix * normal );", - " gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", - "}" - ].join("\n"), - fragmentShader: [ - "#define RECIPROCAL_PI 0.318309886", - "vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {", - " // matrix is assumed to be orthogonal", - " return normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );", - "}", - "// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf", - "vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {", - " // normal is assumed to have unit length", - " float x = normal.x, y = normal.y, z = normal.z;", - " // band 0", - " vec3 result = shCoefficients[ 0 ] * 0.886227;", - " // band 1", - " result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;", - " result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;", - " result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;", - " // band 2", - " result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;", - " result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;", - " result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );", - " result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;", - " result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );", - " return result;", - "}", - "uniform vec3 sh[ 9 ]; // sh coefficients", - "uniform float intensity; // light probe intensity", - "varying vec3 vNormal;", - "void main() {", - " vec3 normal = normalize( vNormal );", - " vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );", - " vec3 irradiance = shGetIrradianceAt( worldNormal, sh );", - " vec3 outgoingLight = RECIPROCAL_PI * irradiance * intensity;", - " gl_FragColor = linearToOutputTexel( vec4( outgoingLight, 1.0 ) );", - "}" - ].join("\n") - }); - const geometry = new SphereGeometry(1, 32, 16); - super(geometry, material); - this.lightProbe = lightProbe; - this.size = size2; - this.type = "LightProbeHelper"; - this.onBeforeRender(); - } - dispose() { - this.geometry.dispose(); - this.material.dispose(); - } - onBeforeRender() { - this.position.copy(this.lightProbe.position); - this.scale.set(1, 1, 1).multiplyScalar(this.size); - this.material.uniforms.intensity.value = this.lightProbe.intensity; - } -}; - -// node_modules/three/examples/jsm/helpers/OctreeHelper.js -var OctreeHelper = class extends LineSegments { - constructor(octree, color = 16776960) { - super(new BufferGeometry(), new LineBasicMaterial({ color, toneMapped: false })); - this.octree = octree; - this.color = color; - this.type = "OctreeHelper"; - this.update(); - } - update() { - const vertices = []; - function traverse(tree) { - for (let i = 0; i < tree.length; i++) { - const min = tree[i].box.min; - const max2 = tree[i].box.max; - vertices.push(max2.x, max2.y, max2.z); - vertices.push(min.x, max2.y, max2.z); - vertices.push(min.x, max2.y, max2.z); - vertices.push(min.x, min.y, max2.z); - vertices.push(min.x, min.y, max2.z); - vertices.push(max2.x, min.y, max2.z); - vertices.push(max2.x, min.y, max2.z); - vertices.push(max2.x, max2.y, max2.z); - vertices.push(max2.x, max2.y, min.z); - vertices.push(min.x, max2.y, min.z); - vertices.push(min.x, max2.y, min.z); - vertices.push(min.x, min.y, min.z); - vertices.push(min.x, min.y, min.z); - vertices.push(max2.x, min.y, min.z); - vertices.push(max2.x, min.y, min.z); - vertices.push(max2.x, max2.y, min.z); - vertices.push(max2.x, max2.y, max2.z); - vertices.push(max2.x, max2.y, min.z); - vertices.push(min.x, max2.y, max2.z); - vertices.push(min.x, max2.y, min.z); - vertices.push(min.x, min.y, max2.z); - vertices.push(min.x, min.y, min.z); - vertices.push(max2.x, min.y, max2.z); - vertices.push(max2.x, min.y, min.z); - traverse(tree[i].subTrees); - } - } - traverse(this.octree.subTrees); - this.geometry.dispose(); - this.geometry = new BufferGeometry(); - this.geometry.setAttribute("position", new Float32BufferAttribute(vertices, 3)); - } - dispose() { - this.geometry.dispose(); - this.material.dispose(); - } -}; - -// node_modules/three/examples/jsm/helpers/PositionalAudioHelper.js -var PositionalAudioHelper = class extends Line { - constructor(audio, range = 1, divisionsInnerAngle = 16, divisionsOuterAngle = 2) { - const geometry = new BufferGeometry(); - const divisions = divisionsInnerAngle + divisionsOuterAngle * 2; - const positions = new Float32Array((divisions * 3 + 3) * 3); - geometry.setAttribute("position", new BufferAttribute(positions, 3)); - const materialInnerAngle = new LineBasicMaterial({ color: 65280 }); - const materialOuterAngle = new LineBasicMaterial({ color: 16776960 }); - super(geometry, [materialOuterAngle, materialInnerAngle]); - this.audio = audio; - this.range = range; - this.divisionsInnerAngle = divisionsInnerAngle; - this.divisionsOuterAngle = divisionsOuterAngle; - this.type = "PositionalAudioHelper"; - this.update(); - } - update() { - const audio = this.audio; - const range = this.range; - const divisionsInnerAngle = this.divisionsInnerAngle; - const divisionsOuterAngle = this.divisionsOuterAngle; - const coneInnerAngle = MathUtils.degToRad(audio.panner.coneInnerAngle); - const coneOuterAngle = MathUtils.degToRad(audio.panner.coneOuterAngle); - const halfConeInnerAngle = coneInnerAngle / 2; - const halfConeOuterAngle = coneOuterAngle / 2; - let start = 0; - let count = 0; - let i; - let stride; - const geometry = this.geometry; - const positionAttribute = geometry.attributes.position; - geometry.clearGroups(); - function generateSegment(from, to, divisions, materialIndex) { - const step = (to - from) / divisions; - positionAttribute.setXYZ(start, 0, 0, 0); - count++; - for (i = from; i < to; i += step) { - stride = start + count; - positionAttribute.setXYZ(stride, Math.sin(i) * range, 0, Math.cos(i) * range); - positionAttribute.setXYZ(stride + 1, Math.sin(Math.min(i + step, to)) * range, 0, Math.cos(Math.min(i + step, to)) * range); - positionAttribute.setXYZ(stride + 2, 0, 0, 0); - count += 3; - } - geometry.addGroup(start, count, materialIndex); - start += count; - count = 0; - } - generateSegment(-halfConeOuterAngle, -halfConeInnerAngle, divisionsOuterAngle, 0); - generateSegment(-halfConeInnerAngle, halfConeInnerAngle, divisionsInnerAngle, 1); - generateSegment(halfConeInnerAngle, halfConeOuterAngle, divisionsOuterAngle, 0); - positionAttribute.needsUpdate = true; - if (coneInnerAngle === coneOuterAngle) this.material[0].visible = false; - } - dispose() { - this.geometry.dispose(); - this.material[0].dispose(); - this.material[1].dispose(); - } -}; - -// node_modules/three/examples/jsm/helpers/RectAreaLightHelper.js -var RectAreaLightHelper = class extends Line { - constructor(light, color) { - const positions = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, 0]; - const geometry = new BufferGeometry(); - geometry.setAttribute("position", new Float32BufferAttribute(positions, 3)); - geometry.computeBoundingSphere(); - const material = new LineBasicMaterial({ fog: false }); - super(geometry, material); - this.light = light; - this.color = color; - this.type = "RectAreaLightHelper"; - const positions2 = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, -1, 0, 1, -1, 0]; - const geometry2 = new BufferGeometry(); - geometry2.setAttribute("position", new Float32BufferAttribute(positions2, 3)); - geometry2.computeBoundingSphere(); - this.add(new Mesh(geometry2, new MeshBasicMaterial({ side: BackSide, fog: false }))); - } - updateMatrixWorld() { - this.scale.set(0.5 * this.light.width, 0.5 * this.light.height, 1); - if (this.color !== void 0) { - this.material.color.set(this.color); - this.children[0].material.color.set(this.color); - } else { - this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity); - const c2 = this.material.color; - const max2 = Math.max(c2.r, c2.g, c2.b); - if (max2 > 1) c2.multiplyScalar(1 / max2); - this.children[0].material.color.copy(this.material.color); - } - this.matrixWorld.extractRotation(this.light.matrixWorld).scale(this.scale).copyPosition(this.light.matrixWorld); - this.children[0].matrixWorld.copy(this.matrixWorld); - } - dispose() { - this.geometry.dispose(); - this.material.dispose(); - this.children[0].geometry.dispose(); - this.children[0].material.dispose(); - } -}; - -// node_modules/three/examples/jsm/helpers/TextureHelper.js -var TextureHelper = class extends Mesh { - constructor(texture, width2 = 1, height2 = 1, depth = 1) { - const material = new ShaderMaterial({ - type: "TextureHelperMaterial", - side: DoubleSide, - transparent: true, - uniforms: { - map: { value: texture }, - alpha: { value: getAlpha(texture) } - }, - vertexShader: [ - "attribute vec3 uvw;", - "varying vec3 vUvw;", - "void main() {", - " vUvw = uvw;", - " gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", - "}" - ].join("\n"), - fragmentShader: [ - "precision highp float;", - "precision highp sampler2DArray;", - "precision highp sampler3D;", - "uniform {samplerType} map;", - "uniform float alpha;", - "varying vec3 vUvw;", - "vec4 textureHelper( in sampler2D map ) { return texture( map, vUvw.xy ); }", - "vec4 textureHelper( in sampler2DArray map ) { return texture( map, vUvw ); }", - "vec4 textureHelper( in sampler3D map ) { return texture( map, vUvw ); }", - "vec4 textureHelper( in samplerCube map ) { return texture( map, vUvw ); }", - "void main() {", - " gl_FragColor = linearToOutputTexel( vec4( textureHelper( map ).xyz, alpha ) );", - "}" - ].join("\n").replace("{samplerType}", getSamplerType(texture)) - }); - const geometry = texture.isCubeTexture ? createCubeGeometry(width2, height2, depth) : createSliceGeometry(texture, width2, height2, depth); - super(geometry, material); - this.texture = texture; - this.type = "TextureHelper"; - } - dispose() { - this.geometry.dispose(); - this.material.dispose(); - } -}; -function getSamplerType(texture) { - if (texture.isCubeTexture) { - return "samplerCube"; - } else if (texture.isDataArrayTexture || texture.isCompressedArrayTexture) { - return "sampler2DArray"; - } else if (texture.isData3DTexture || texture.isCompressed3DTexture) { - return "sampler3D"; - } else { - return "sampler2D"; - } -} -function getImageCount(texture) { - if (texture.isCubeTexture) { - return 6; - } else if (texture.isDataArrayTexture || texture.isCompressedArrayTexture) { - return texture.image.depth; - } else if (texture.isData3DTexture || texture.isCompressed3DTexture) { - return texture.image.depth; - } else { - return 1; - } -} -function getAlpha(texture) { - if (texture.isCubeTexture) { - return 1; - } else if (texture.isDataArrayTexture || texture.isCompressedArrayTexture) { - return Math.max(1 / texture.image.depth, 0.25); - } else if (texture.isData3DTexture || texture.isCompressed3DTexture) { - return Math.max(1 / texture.image.depth, 0.25); - } else { - return 1; - } -} -function createCubeGeometry(width2, height2, depth) { - const geometry = new BoxGeometry(width2, height2, depth); - const position2 = geometry.attributes.position; - const uv = geometry.attributes.uv; - const uvw = new BufferAttribute(new Float32Array(uv.count * 3), 3); - const _direction = new Vector3(); - for (let j = 0, jl = uv.count; j < jl; ++j) { - _direction.fromBufferAttribute(position2, j).normalize(); - const u = _direction.x; - const v = _direction.y; - const w = _direction.z; - uvw.setXYZ(j, u, v, w); - } - geometry.deleteAttribute("uv"); - geometry.setAttribute("uvw", uvw); - return geometry; -} -function createSliceGeometry(texture, width2, height2, depth) { - const sliceCount = getImageCount(texture); - const geometries = []; - for (let i = 0; i < sliceCount; ++i) { - const geometry = new PlaneGeometry(width2, height2); - if (sliceCount > 1) { - geometry.translate(0, 0, depth * (i / (sliceCount - 1) - 0.5)); - } - const uv = geometry.attributes.uv; - const uvw = new BufferAttribute(new Float32Array(uv.count * 3), 3); - for (let j = 0, jl = uv.count; j < jl; ++j) { - const u = uv.getX(j); - const v = texture.flipY ? uv.getY(j) : 1 - uv.getY(j); - const w = sliceCount === 1 ? 1 : texture.isDataArrayTexture || texture.isCompressedArrayTexture ? i : i / (sliceCount - 1); - uvw.setXYZ(j, u, v, w); - } - geometry.deleteAttribute("uv"); - geometry.setAttribute("uvw", uvw); - geometries.push(geometry); - } - return mergeGeometries(geometries); -} - -// node_modules/three/examples/jsm/helpers/VertexNormalsHelper.js -var _v13 = new Vector3(); -var _v22 = new Vector3(); -var _normalMatrix = new Matrix3(); -var VertexNormalsHelper = class extends LineSegments { - constructor(object, size2 = 1, color = 16711680) { - const geometry = new BufferGeometry(); - const nNormals = object.geometry.attributes.normal.count; - const positions = new Float32BufferAttribute(nNormals * 2 * 3, 3); - geometry.setAttribute("position", positions); - super(geometry, new LineBasicMaterial({ color, toneMapped: false })); - this.object = object; - this.size = size2; - this.type = "VertexNormalsHelper"; - this.matrixAutoUpdate = false; - this.update(); - } - update() { - this.object.updateMatrixWorld(true); - _normalMatrix.getNormalMatrix(this.object.matrixWorld); - const matrixWorld = this.object.matrixWorld; - const position2 = this.geometry.attributes.position; - const objGeometry = this.object.geometry; - if (objGeometry) { - const objPos = objGeometry.attributes.position; - const objNorm = objGeometry.attributes.normal; - let idx = 0; - for (let j = 0, jl = objPos.count; j < jl; j++) { - _v13.fromBufferAttribute(objPos, j).applyMatrix4(matrixWorld); - _v22.fromBufferAttribute(objNorm, j); - _v22.applyMatrix3(_normalMatrix).normalize().multiplyScalar(this.size).add(_v13); - position2.setXYZ(idx, _v13.x, _v13.y, _v13.z); - idx = idx + 1; - position2.setXYZ(idx, _v22.x, _v22.y, _v22.z); - idx = idx + 1; - } - } - position2.needsUpdate = true; - } - dispose() { - this.geometry.dispose(); - this.material.dispose(); - } -}; - -// node_modules/three/examples/jsm/helpers/VertexTangentsHelper.js -var _v14 = new Vector3(); -var _v23 = new Vector3(); -var VertexTangentsHelper = class extends LineSegments { - constructor(object, size2 = 1, color = 65535) { - const geometry = new BufferGeometry(); - const nTangents = object.geometry.attributes.tangent.count; - const positions = new Float32BufferAttribute(nTangents * 2 * 3, 3); - geometry.setAttribute("position", positions); - super(geometry, new LineBasicMaterial({ color, toneMapped: false })); - this.object = object; - this.size = size2; - this.type = "VertexTangentsHelper"; - this.matrixAutoUpdate = false; - this.update(); - } - update() { - this.object.updateMatrixWorld(true); - const matrixWorld = this.object.matrixWorld; - const position2 = this.geometry.attributes.position; - const objGeometry = this.object.geometry; - const objPos = objGeometry.attributes.position; - const objTan = objGeometry.attributes.tangent; - let idx = 0; - for (let j = 0, jl = objPos.count; j < jl; j++) { - _v14.fromBufferAttribute(objPos, j).applyMatrix4(matrixWorld); - _v23.fromBufferAttribute(objTan, j); - _v23.transformDirection(matrixWorld).multiplyScalar(this.size).add(_v14); - position2.setXYZ(idx, _v14.x, _v14.y, _v14.z); - idx = idx + 1; - position2.setXYZ(idx, _v23.x, _v23.y, _v23.z); - idx = idx + 1; - } - position2.needsUpdate = true; - } - dispose() { - this.geometry.dispose(); - this.material.dispose(); - } -}; - -// node_modules/three/examples/jsm/helpers/ViewHelper.js -var ViewHelper = class extends Object3D { - constructor(camera, domElement) { - super(); - this.isViewHelper = true; - this.animating = false; - this.center = new Vector3(); - const color1 = new Color("#ff4466"); - const color2 = new Color("#88ff44"); - const color3 = new Color("#4488ff"); - const color4 = new Color("#000000"); - const options = {}; - const interactiveObjects = []; - const raycaster = new Raycaster(); - const mouse = new Vector2(); - const dummy = new Object3D(); - const orthoCamera = new OrthographicCamera(-2, 2, 2, -2, 0, 4); - orthoCamera.position.set(0, 0, 2); - const geometry = new CylinderGeometry(0.04, 0.04, 0.8, 5).rotateZ(-Math.PI / 2).translate(0.4, 0, 0); - const xAxis2 = new Mesh(geometry, getAxisMaterial(color1)); - const yAxis2 = new Mesh(geometry, getAxisMaterial(color2)); - const zAxis2 = new Mesh(geometry, getAxisMaterial(color3)); - yAxis2.rotation.z = Math.PI / 2; - zAxis2.rotation.y = -Math.PI / 2; - this.add(xAxis2); - this.add(zAxis2); - this.add(yAxis2); - const spriteMaterial1 = getSpriteMaterial(color1); - const spriteMaterial2 = getSpriteMaterial(color2); - const spriteMaterial3 = getSpriteMaterial(color3); - const spriteMaterial4 = getSpriteMaterial(color4); - const posXAxisHelper = new Sprite(spriteMaterial1); - const posYAxisHelper = new Sprite(spriteMaterial2); - const posZAxisHelper = new Sprite(spriteMaterial3); - const negXAxisHelper = new Sprite(spriteMaterial4); - const negYAxisHelper = new Sprite(spriteMaterial4); - const negZAxisHelper = new Sprite(spriteMaterial4); - posXAxisHelper.position.x = 1; - posYAxisHelper.position.y = 1; - posZAxisHelper.position.z = 1; - negXAxisHelper.position.x = -1; - negYAxisHelper.position.y = -1; - negZAxisHelper.position.z = -1; - negXAxisHelper.material.opacity = 0.2; - negYAxisHelper.material.opacity = 0.2; - negZAxisHelper.material.opacity = 0.2; - posXAxisHelper.userData.type = "posX"; - posYAxisHelper.userData.type = "posY"; - posZAxisHelper.userData.type = "posZ"; - negXAxisHelper.userData.type = "negX"; - negYAxisHelper.userData.type = "negY"; - negZAxisHelper.userData.type = "negZ"; - this.add(posXAxisHelper); - this.add(posYAxisHelper); - this.add(posZAxisHelper); - this.add(negXAxisHelper); - this.add(negYAxisHelper); - this.add(negZAxisHelper); - interactiveObjects.push(posXAxisHelper); - interactiveObjects.push(posYAxisHelper); - interactiveObjects.push(posZAxisHelper); - interactiveObjects.push(negXAxisHelper); - interactiveObjects.push(negYAxisHelper); - interactiveObjects.push(negZAxisHelper); - const point = new Vector3(); - const dim = 128; - const turnRate = 2 * Math.PI; - this.render = function(renderer2) { - this.quaternion.copy(camera.quaternion).invert(); - this.updateMatrixWorld(); - point.set(0, 0, 1); - point.applyQuaternion(camera.quaternion); - const x2 = domElement.offsetWidth - dim; - renderer2.clearDepth(); - renderer2.getViewport(viewport); - renderer2.setViewport(x2, 0, dim, dim); - renderer2.render(this, orthoCamera); - renderer2.setViewport(viewport.x, viewport.y, viewport.z, viewport.w); - }; - const targetPosition = new Vector3(); - const targetQuaternion = new Quaternion(); - const q1 = new Quaternion(); - const q2 = new Quaternion(); - const viewport = new Vector4(); - let radius = 0; - this.handleClick = function(event) { - if (this.animating === true) return false; - const rect = domElement.getBoundingClientRect(); - const offsetX = rect.left + (domElement.offsetWidth - dim); - const offsetY = rect.top + (domElement.offsetHeight - dim); - mouse.x = (event.clientX - offsetX) / (rect.right - offsetX) * 2 - 1; - mouse.y = -((event.clientY - offsetY) / (rect.bottom - offsetY)) * 2 + 1; - raycaster.setFromCamera(mouse, orthoCamera); - const intersects = raycaster.intersectObjects(interactiveObjects); - if (intersects.length > 0) { - const intersection = intersects[0]; - const object = intersection.object; - prepareAnimationData(object, this.center); - this.animating = true; - return true; - } else { - return false; - } - }; - this.setLabels = function(labelX, labelY, labelZ) { - options.labelX = labelX; - options.labelY = labelY; - options.labelZ = labelZ; - updateLabels(); - }; - this.setLabelStyle = function(font, color, radius2) { - options.font = font; - options.color = color; - options.radius = radius2; - updateLabels(); - }; - this.update = function(delta) { - const step = delta * turnRate; - q1.rotateTowards(q2, step); - camera.position.set(0, 0, 1).applyQuaternion(q1).multiplyScalar(radius).add(this.center); - camera.quaternion.rotateTowards(targetQuaternion, step); - if (q1.angleTo(q2) === 0) { - this.animating = false; - } - }; - this.dispose = function() { - geometry.dispose(); - xAxis2.material.dispose(); - yAxis2.material.dispose(); - zAxis2.material.dispose(); - posXAxisHelper.material.map.dispose(); - posYAxisHelper.material.map.dispose(); - posZAxisHelper.material.map.dispose(); - negXAxisHelper.material.map.dispose(); - negYAxisHelper.material.map.dispose(); - negZAxisHelper.material.map.dispose(); - posXAxisHelper.material.dispose(); - posYAxisHelper.material.dispose(); - posZAxisHelper.material.dispose(); - negXAxisHelper.material.dispose(); - negYAxisHelper.material.dispose(); - negZAxisHelper.material.dispose(); - }; - function prepareAnimationData(object, focusPoint) { - switch (object.userData.type) { - case "posX": - targetPosition.set(1, 0, 0); - targetQuaternion.setFromEuler(new Euler(0, Math.PI * 0.5, 0)); - break; - case "posY": - targetPosition.set(0, 1, 0); - targetQuaternion.setFromEuler(new Euler(-Math.PI * 0.5, 0, 0)); - break; - case "posZ": - targetPosition.set(0, 0, 1); - targetQuaternion.setFromEuler(new Euler()); - break; - case "negX": - targetPosition.set(-1, 0, 0); - targetQuaternion.setFromEuler(new Euler(0, -Math.PI * 0.5, 0)); - break; - case "negY": - targetPosition.set(0, -1, 0); - targetQuaternion.setFromEuler(new Euler(Math.PI * 0.5, 0, 0)); - break; - case "negZ": - targetPosition.set(0, 0, -1); - targetQuaternion.setFromEuler(new Euler(0, Math.PI, 0)); - break; - default: - console.error("ViewHelper: Invalid axis."); - } - radius = camera.position.distanceTo(focusPoint); - targetPosition.multiplyScalar(radius).add(focusPoint); - dummy.position.copy(focusPoint); - dummy.lookAt(camera.position); - q1.copy(dummy.quaternion); - dummy.lookAt(targetPosition); - q2.copy(dummy.quaternion); - } - function getAxisMaterial(color) { - return new MeshBasicMaterial({ color, toneMapped: false }); - } - function getSpriteMaterial(color, text2) { - const { font = "24px Arial", color: labelColor = "#000000", radius: radius2 = 14 } = options; - const canvas = document.createElement("canvas"); - canvas.width = 64; - canvas.height = 64; - const context = canvas.getContext("2d"); - context.beginPath(); - context.arc(32, 32, radius2, 0, 2 * Math.PI); - context.closePath(); - context.fillStyle = color.getStyle(); - context.fill(); - if (text2) { - context.font = font; - context.textAlign = "center"; - context.fillStyle = labelColor; - context.fillText(text2, 32, 41); - } - const texture = new CanvasTexture(canvas); - texture.colorSpace = SRGBColorSpace; - return new SpriteMaterial({ map: texture, toneMapped: false }); - } - function updateLabels() { - posXAxisHelper.material.map.dispose(); - posYAxisHelper.material.map.dispose(); - posZAxisHelper.material.map.dispose(); - posXAxisHelper.material.dispose(); - posYAxisHelper.material.dispose(); - posZAxisHelper.material.dispose(); - posXAxisHelper.material = getSpriteMaterial(color1, options.labelX); - posYAxisHelper.material = getSpriteMaterial(color2, options.labelY); - posZAxisHelper.material = getSpriteMaterial(color3, options.labelZ); - } - } -}; - -// node_modules/three/examples/jsm/interactive/HTMLMesh.js -var HTMLMesh = class extends Mesh { - constructor(dom) { - const texture = new HTMLTexture(dom); - const geometry = new PlaneGeometry(texture.image.width * 1e-3, texture.image.height * 1e-3); - const material = new MeshBasicMaterial({ map: texture, toneMapped: false, transparent: true }); - super(geometry, material); - function onEvent(event) { - material.map.dispatchDOMEvent(event); - } - this.addEventListener("mousedown", onEvent); - this.addEventListener("mousemove", onEvent); - this.addEventListener("mouseup", onEvent); - this.addEventListener("click", onEvent); - this.dispose = function() { - geometry.dispose(); - material.dispose(); - material.map.dispose(); - canvases.delete(dom); - this.removeEventListener("mousedown", onEvent); - this.removeEventListener("mousemove", onEvent); - this.removeEventListener("mouseup", onEvent); - this.removeEventListener("click", onEvent); - }; - } -}; -var HTMLTexture = class extends CanvasTexture { - constructor(dom) { - super(html2canvas(dom)); - this.dom = dom; - this.anisotropy = 16; - this.colorSpace = SRGBColorSpace; - this.minFilter = LinearFilter; - this.magFilter = LinearFilter; - const observer = new MutationObserver(() => { - if (!this.scheduleUpdate) { - this.scheduleUpdate = setTimeout(() => this.update(), 16); - } - }); - const config = { attributes: true, childList: true, subtree: true, characterData: true }; - observer.observe(dom, config); - this.observer = observer; - } - dispatchDOMEvent(event) { - if (event.data) { - htmlevent(this.dom, event.type, event.data.x, event.data.y); - } - } - update() { - this.image = html2canvas(this.dom); - this.needsUpdate = true; - this.scheduleUpdate = null; - } - dispose() { - if (this.observer) { - this.observer.disconnect(); - } - this.scheduleUpdate = clearTimeout(this.scheduleUpdate); - super.dispose(); - } -}; -var canvases = /* @__PURE__ */ new WeakMap(); -function html2canvas(element) { - const range = document.createRange(); - const color = new Color(); - function Clipper(context2) { - const clips = []; - let isClipping = false; - function doClip() { - if (isClipping) { - isClipping = false; - context2.restore(); - } - if (clips.length === 0) return; - let minX = -Infinity, minY = -Infinity; - let maxX = Infinity, maxY = Infinity; - for (let i = 0; i < clips.length; i++) { - const clip = clips[i]; - minX = Math.max(minX, clip.x); - minY = Math.max(minY, clip.y); - maxX = Math.min(maxX, clip.x + clip.width); - maxY = Math.min(maxY, clip.y + clip.height); - } - context2.save(); - context2.beginPath(); - context2.rect(minX, minY, maxX - minX, maxY - minY); - context2.clip(); - isClipping = true; - } - return { - add: function(clip) { - clips.push(clip); - doClip(); - }, - remove: function() { - clips.pop(); - doClip(); - } - }; - } - function drawText(style, x2, y2, string) { - if (string !== "") { - if (style.textTransform === "uppercase") { - string = string.toUpperCase(); - } - context.font = style.fontWeight + " " + style.fontSize + " " + style.fontFamily; - context.textBaseline = "top"; - context.fillStyle = style.color; - context.fillText(string, x2, y2 + parseFloat(style.fontSize) * 0.1); - } - } - function buildRectPath(x2, y2, w, h, r) { - if (w < 2 * r) r = w / 2; - if (h < 2 * r) r = h / 2; - context.beginPath(); - context.moveTo(x2 + r, y2); - context.arcTo(x2 + w, y2, x2 + w, y2 + h, r); - context.arcTo(x2 + w, y2 + h, x2, y2 + h, r); - context.arcTo(x2, y2 + h, x2, y2, r); - context.arcTo(x2, y2, x2 + w, y2, r); - context.closePath(); - } - function drawBorder(style, which, x2, y2, width2, height2) { - const borderWidth = style[which + "Width"]; - const borderStyle = style[which + "Style"]; - const borderColor = style[which + "Color"]; - if (borderWidth !== "0px" && borderStyle !== "none" && borderColor !== "transparent" && borderColor !== "rgba(0, 0, 0, 0)") { - context.strokeStyle = borderColor; - context.lineWidth = parseFloat(borderWidth); - context.beginPath(); - context.moveTo(x2, y2); - context.lineTo(x2 + width2, y2 + height2); - context.stroke(); - } - } - function drawElement(element2, style) { - if (element2.nodeType === Node.COMMENT_NODE || element2.nodeName === "SCRIPT" || element2.style && element2.style.display === "none") { - return; - } - let x2 = 0, y2 = 0, width2 = 0, height2 = 0; - if (element2.nodeType === Node.TEXT_NODE) { - range.selectNode(element2); - const rect = range.getBoundingClientRect(); - x2 = rect.left - offset.left - 0.5; - y2 = rect.top - offset.top - 0.5; - width2 = rect.width; - height2 = rect.height; - drawText(style, x2, y2, element2.nodeValue.trim()); - } else if (element2 instanceof HTMLCanvasElement) { - const rect = element2.getBoundingClientRect(); - x2 = rect.left - offset.left - 0.5; - y2 = rect.top - offset.top - 0.5; - context.save(); - const dpr = window.devicePixelRatio; - context.scale(1 / dpr, 1 / dpr); - context.drawImage(element2, x2, y2); - context.restore(); - } else if (element2 instanceof HTMLImageElement) { - const rect = element2.getBoundingClientRect(); - x2 = rect.left - offset.left - 0.5; - y2 = rect.top - offset.top - 0.5; - width2 = rect.width; - height2 = rect.height; - context.drawImage(element2, x2, y2, width2, height2); - } else { - const rect = element2.getBoundingClientRect(); - x2 = rect.left - offset.left - 0.5; - y2 = rect.top - offset.top - 0.5; - width2 = rect.width; - height2 = rect.height; - style = window.getComputedStyle(element2); - buildRectPath(x2, y2, width2, height2, parseFloat(style.borderRadius)); - const backgroundColor = style.backgroundColor; - if (backgroundColor !== "transparent" && backgroundColor !== "rgba(0, 0, 0, 0)") { - context.fillStyle = backgroundColor; - context.fill(); - } - const borders = ["borderTop", "borderLeft", "borderBottom", "borderRight"]; - let match = true; - let prevBorder = null; - for (const border of borders) { - if (prevBorder !== null) { - match = style[border + "Width"] === style[prevBorder + "Width"] && style[border + "Color"] === style[prevBorder + "Color"] && style[border + "Style"] === style[prevBorder + "Style"]; - } - if (match === false) break; - prevBorder = border; - } - if (match === true) { - const width3 = parseFloat(style.borderTopWidth); - if (style.borderTopWidth !== "0px" && style.borderTopStyle !== "none" && style.borderTopColor !== "transparent" && style.borderTopColor !== "rgba(0, 0, 0, 0)") { - context.strokeStyle = style.borderTopColor; - context.lineWidth = width3; - context.stroke(); - } - } else { - drawBorder(style, "borderTop", x2, y2, width2, 0); - drawBorder(style, "borderLeft", x2, y2, 0, height2); - drawBorder(style, "borderBottom", x2, y2 + height2, width2, 0); - drawBorder(style, "borderRight", x2 + width2, y2, 0, height2); - } - if (element2 instanceof HTMLInputElement) { - let accentColor = style.accentColor; - if (accentColor === void 0 || accentColor === "auto") accentColor = style.color; - color.set(accentColor); - const luminance = Math.sqrt(0.299 * color.r ** 2 + 0.587 * color.g ** 2 + 0.114 * color.b ** 2); - const accentTextColor = luminance < 0.5 ? "white" : "#111111"; - if (element2.type === "radio") { - buildRectPath(x2, y2, width2, height2, height2); - context.fillStyle = "white"; - context.strokeStyle = accentColor; - context.lineWidth = 1; - context.fill(); - context.stroke(); - if (element2.checked) { - buildRectPath(x2 + 2, y2 + 2, width2 - 4, height2 - 4, height2); - context.fillStyle = accentColor; - context.strokeStyle = accentTextColor; - context.lineWidth = 2; - context.fill(); - context.stroke(); - } - } - if (element2.type === "checkbox") { - buildRectPath(x2, y2, width2, height2, 2); - context.fillStyle = element2.checked ? accentColor : "white"; - context.strokeStyle = element2.checked ? accentTextColor : accentColor; - context.lineWidth = 1; - context.stroke(); - context.fill(); - if (element2.checked) { - const currentTextAlign = context.textAlign; - context.textAlign = "center"; - const properties = { - color: accentTextColor, - fontFamily: style.fontFamily, - fontSize: height2 + "px", - fontWeight: "bold" - }; - drawText(properties, x2 + width2 / 2, y2, "✔"); - context.textAlign = currentTextAlign; - } - } - if (element2.type === "range") { - const [min, max2, value2] = ["min", "max", "value"].map((property2) => parseFloat(element2[property2])); - const position2 = (value2 - min) / (max2 - min) * (width2 - height2); - buildRectPath(x2, y2 + height2 / 4, width2, height2 / 2, height2 / 4); - context.fillStyle = accentTextColor; - context.strokeStyle = accentColor; - context.lineWidth = 1; - context.fill(); - context.stroke(); - buildRectPath(x2, y2 + height2 / 4, position2 + height2 / 2, height2 / 2, height2 / 4); - context.fillStyle = accentColor; - context.fill(); - buildRectPath(x2 + position2, y2, height2, height2, height2 / 2); - context.fillStyle = accentColor; - context.fill(); - } - if (element2.type === "color" || element2.type === "text" || element2.type === "number") { - clipper.add({ x: x2, y: y2, width: width2, height: height2 }); - drawText(style, x2 + parseInt(style.paddingLeft), y2 + parseInt(style.paddingTop), element2.value); - clipper.remove(); - } - } - } - const isClipping = style.overflow === "auto" || style.overflow === "hidden"; - if (isClipping) clipper.add({ x: x2, y: y2, width: width2, height: height2 }); - for (let i = 0; i < element2.childNodes.length; i++) { - drawElement(element2.childNodes[i], style); - } - if (isClipping) clipper.remove(); - } - const offset = element.getBoundingClientRect(); - let canvas = canvases.get(element); - if (canvas === void 0) { - canvas = document.createElement("canvas"); - canvas.width = offset.width; - canvas.height = offset.height; - canvases.set(element, canvas); - } - const context = canvas.getContext( - "2d" - /*, { alpha: false }*/ - ); - const clipper = new Clipper(context); - context.clearRect(0, 0, canvas.width, canvas.height); - drawElement(element); - return canvas; -} -function htmlevent(element, event, x2, y2) { - const mouseEventInit = { - clientX: x2 * element.offsetWidth + element.offsetLeft, - clientY: y2 * element.offsetHeight + element.offsetTop, - view: element.ownerDocument.defaultView - }; - window.dispatchEvent(new MouseEvent(event, mouseEventInit)); - const rect = element.getBoundingClientRect(); - x2 = x2 * rect.width + rect.left; - y2 = y2 * rect.height + rect.top; - function traverse(element2) { - if (element2.nodeType !== Node.TEXT_NODE && element2.nodeType !== Node.COMMENT_NODE) { - const rect2 = element2.getBoundingClientRect(); - if (x2 > rect2.left && x2 < rect2.right && y2 > rect2.top && y2 < rect2.bottom) { - element2.dispatchEvent(new MouseEvent(event, mouseEventInit)); - if (element2 instanceof HTMLInputElement && element2.type === "range" && (event === "mousedown" || event === "click")) { - const [min, max2] = ["min", "max"].map((property2) => parseFloat(element2[property2])); - const width2 = rect2.width; - const offsetX = x2 - rect2.x; - const proportion = offsetX / width2; - element2.value = min + (max2 - min) * proportion; - element2.dispatchEvent(new InputEvent("input", { bubbles: true })); - } - } - for (let i = 0; i < element2.childNodes.length; i++) { - traverse(element2.childNodes[i]); - } - } - } - traverse(element); -} - -// node_modules/three/examples/jsm/interactive/InteractiveGroup.js -var _pointer2 = new Vector2(); -var _event = { type: "", data: _pointer2 }; -var _raycaster4 = new Raycaster(); -var InteractiveGroup = class extends Group { - listenToPointerEvents(renderer2, camera) { - const scope = this; - const raycaster = new Raycaster(); - const element = renderer2.domElement; - function onPointerEvent(event) { - event.stopPropagation(); - const rect = renderer2.domElement.getBoundingClientRect(); - _pointer2.x = (event.clientX - rect.left) / rect.width * 2 - 1; - _pointer2.y = -(event.clientY - rect.top) / rect.height * 2 + 1; - raycaster.setFromCamera(_pointer2, camera); - const intersects = raycaster.intersectObjects(scope.children, false); - if (intersects.length > 0) { - const intersection = intersects[0]; - const object = intersection.object; - const uv = intersection.uv; - _event.type = event.type; - _event.data.set(uv.x, 1 - uv.y); - object.dispatchEvent(_event); - } - } - element.addEventListener("pointerdown", onPointerEvent); - element.addEventListener("pointerup", onPointerEvent); - element.addEventListener("pointermove", onPointerEvent); - element.addEventListener("mousedown", onPointerEvent); - element.addEventListener("mouseup", onPointerEvent); - element.addEventListener("mousemove", onPointerEvent); - element.addEventListener("click", onPointerEvent); - } - listenToXRControllerEvents(controller) { - const scope = this; - const events = { - "move": "mousemove", - "select": "click", - "selectstart": "mousedown", - "selectend": "mouseup" - }; - function onXRControllerEvent(event) { - const controller2 = event.target; - _raycaster4.setFromXRController(controller2); - const intersections = _raycaster4.intersectObjects(scope.children, false); - if (intersections.length > 0) { - const intersection = intersections[0]; - const object = intersection.object; - const uv = intersection.uv; - _event.type = events[event.type]; - _event.data.set(uv.x, 1 - uv.y); - object.dispatchEvent(_event); - } - } - controller.addEventListener("move", onXRControllerEvent); - controller.addEventListener("select", onXRControllerEvent); - controller.addEventListener("selectstart", onXRControllerEvent); - controller.addEventListener("selectend", onXRControllerEvent); - } -}; - -// node_modules/three/examples/jsm/interactive/SelectionBox.js -var _frustum = new Frustum(); -var _center3 = new Vector3(); -var _tmpPoint = new Vector3(); -var _vecNear = new Vector3(); -var _vecTopLeft = new Vector3(); -var _vecTopRight = new Vector3(); -var _vecDownRight = new Vector3(); -var _vecDownLeft = new Vector3(); -var _vecFarTopLeft = new Vector3(); -var _vecFarTopRight = new Vector3(); -var _vecFarDownRight = new Vector3(); -var _vecFarDownLeft = new Vector3(); -var _vectemp1 = new Vector3(); -var _vectemp2 = new Vector3(); -var _vectemp3 = new Vector3(); -var _matrix2 = new Matrix4(); -var _quaternion2 = new Quaternion(); -var _scale2 = new Vector3(); -var SelectionBox = class { - constructor(camera, scene, deep = Number.MAX_VALUE) { - this.camera = camera; - this.scene = scene; - this.startPoint = new Vector3(); - this.endPoint = new Vector3(); - this.collection = []; - this.instances = {}; - this.deep = deep; - } - select(startPoint, endPoint) { - this.startPoint = startPoint || this.startPoint; - this.endPoint = endPoint || this.endPoint; - this.collection = []; - this.updateFrustum(this.startPoint, this.endPoint); - this.searchChildInFrustum(_frustum, this.scene); - return this.collection; - } - updateFrustum(startPoint, endPoint) { - startPoint = startPoint || this.startPoint; - endPoint = endPoint || this.endPoint; - if (startPoint.x === endPoint.x) { - endPoint.x += Number.EPSILON; - } - if (startPoint.y === endPoint.y) { - endPoint.y += Number.EPSILON; - } - this.camera.updateProjectionMatrix(); - this.camera.updateMatrixWorld(); - if (this.camera.isPerspectiveCamera) { - _tmpPoint.copy(startPoint); - _tmpPoint.x = Math.min(startPoint.x, endPoint.x); - _tmpPoint.y = Math.max(startPoint.y, endPoint.y); - endPoint.x = Math.max(startPoint.x, endPoint.x); - endPoint.y = Math.min(startPoint.y, endPoint.y); - _vecNear.setFromMatrixPosition(this.camera.matrixWorld); - _vecTopLeft.copy(_tmpPoint); - _vecTopRight.set(endPoint.x, _tmpPoint.y, 0); - _vecDownRight.copy(endPoint); - _vecDownLeft.set(_tmpPoint.x, endPoint.y, 0); - _vecTopLeft.unproject(this.camera); - _vecTopRight.unproject(this.camera); - _vecDownRight.unproject(this.camera); - _vecDownLeft.unproject(this.camera); - _vectemp1.copy(_vecTopLeft).sub(_vecNear); - _vectemp2.copy(_vecTopRight).sub(_vecNear); - _vectemp3.copy(_vecDownRight).sub(_vecNear); - _vectemp1.normalize(); - _vectemp2.normalize(); - _vectemp3.normalize(); - _vectemp1.multiplyScalar(this.deep); - _vectemp2.multiplyScalar(this.deep); - _vectemp3.multiplyScalar(this.deep); - _vectemp1.add(_vecNear); - _vectemp2.add(_vecNear); - _vectemp3.add(_vecNear); - const planes = _frustum.planes; - planes[0].setFromCoplanarPoints(_vecNear, _vecTopLeft, _vecTopRight); - planes[1].setFromCoplanarPoints(_vecNear, _vecTopRight, _vecDownRight); - planes[2].setFromCoplanarPoints(_vecDownRight, _vecDownLeft, _vecNear); - planes[3].setFromCoplanarPoints(_vecDownLeft, _vecTopLeft, _vecNear); - planes[4].setFromCoplanarPoints(_vecTopRight, _vecDownRight, _vecDownLeft); - planes[5].setFromCoplanarPoints(_vectemp3, _vectemp2, _vectemp1); - planes[5].normal.multiplyScalar(-1); - } else if (this.camera.isOrthographicCamera) { - const left = Math.min(startPoint.x, endPoint.x); - const top = Math.max(startPoint.y, endPoint.y); - const right = Math.max(startPoint.x, endPoint.x); - const down = Math.min(startPoint.y, endPoint.y); - _vecTopLeft.set(left, top, -1); - _vecTopRight.set(right, top, -1); - _vecDownRight.set(right, down, -1); - _vecDownLeft.set(left, down, -1); - _vecFarTopLeft.set(left, top, 1); - _vecFarTopRight.set(right, top, 1); - _vecFarDownRight.set(right, down, 1); - _vecFarDownLeft.set(left, down, 1); - _vecTopLeft.unproject(this.camera); - _vecTopRight.unproject(this.camera); - _vecDownRight.unproject(this.camera); - _vecDownLeft.unproject(this.camera); - _vecFarTopLeft.unproject(this.camera); - _vecFarTopRight.unproject(this.camera); - _vecFarDownRight.unproject(this.camera); - _vecFarDownLeft.unproject(this.camera); - const planes = _frustum.planes; - planes[0].setFromCoplanarPoints(_vecTopLeft, _vecFarTopLeft, _vecFarTopRight); - planes[1].setFromCoplanarPoints(_vecTopRight, _vecFarTopRight, _vecFarDownRight); - planes[2].setFromCoplanarPoints(_vecFarDownRight, _vecFarDownLeft, _vecDownLeft); - planes[3].setFromCoplanarPoints(_vecFarDownLeft, _vecFarTopLeft, _vecTopLeft); - planes[4].setFromCoplanarPoints(_vecTopRight, _vecDownRight, _vecDownLeft); - planes[5].setFromCoplanarPoints(_vecFarDownRight, _vecFarTopRight, _vecFarTopLeft); - planes[5].normal.multiplyScalar(-1); - } else { - console.error("THREE.SelectionBox: Unsupported camera type."); - } - } - searchChildInFrustum(frustum, object) { - if (object.isMesh || object.isLine || object.isPoints) { - if (object.isInstancedMesh) { - this.instances[object.uuid] = []; - for (let instanceId = 0; instanceId < object.count; instanceId++) { - object.getMatrixAt(instanceId, _matrix2); - _matrix2.decompose(_center3, _quaternion2, _scale2); - _center3.applyMatrix4(object.matrixWorld); - if (frustum.containsPoint(_center3)) { - this.instances[object.uuid].push(instanceId); - } - } - } else { - if (object.geometry.boundingSphere === null) object.geometry.computeBoundingSphere(); - _center3.copy(object.geometry.boundingSphere.center); - _center3.applyMatrix4(object.matrixWorld); - if (frustum.containsPoint(_center3)) { - this.collection.push(object); - } - } - } - if (object.children.length > 0) { - for (let x2 = 0; x2 < object.children.length; x2++) { - this.searchChildInFrustum(frustum, object.children[x2]); - } - } - } -}; - -// node_modules/three/examples/jsm/interactive/SelectionHelper.js -var SelectionHelper = class { - constructor(renderer2, cssClassName) { - this.element = document.createElement("div"); - this.element.classList.add(cssClassName); - this.element.style.pointerEvents = "none"; - this.renderer = renderer2; - this.startPoint = new Vector2(); - this.pointTopLeft = new Vector2(); - this.pointBottomRight = new Vector2(); - this.isDown = false; - this.enabled = true; - this.onPointerDown = (function(event) { - if (this.enabled === false) return; - this.isDown = true; - this.onSelectStart(event); - }).bind(this); - this.onPointerMove = (function(event) { - if (this.enabled === false) return; - if (this.isDown) { - this.onSelectMove(event); - } - }).bind(this); - this.onPointerUp = (function() { - if (this.enabled === false) return; - this.isDown = false; - this.onSelectOver(); - }).bind(this); - this.renderer.domElement.addEventListener("pointerdown", this.onPointerDown); - this.renderer.domElement.addEventListener("pointermove", this.onPointerMove); - this.renderer.domElement.addEventListener("pointerup", this.onPointerUp); - } - dispose() { - this.renderer.domElement.removeEventListener("pointerdown", this.onPointerDown); - this.renderer.domElement.removeEventListener("pointermove", this.onPointerMove); - this.renderer.domElement.removeEventListener("pointerup", this.onPointerUp); - } - onSelectStart(event) { - this.element.style.display = "none"; - this.renderer.domElement.parentElement.appendChild(this.element); - this.element.style.left = event.clientX + "px"; - this.element.style.top = event.clientY + "px"; - this.element.style.width = "0px"; - this.element.style.height = "0px"; - this.startPoint.x = event.clientX; - this.startPoint.y = event.clientY; - } - onSelectMove(event) { - this.element.style.display = "block"; - this.pointBottomRight.x = Math.max(this.startPoint.x, event.clientX); - this.pointBottomRight.y = Math.max(this.startPoint.y, event.clientY); - this.pointTopLeft.x = Math.min(this.startPoint.x, event.clientX); - this.pointTopLeft.y = Math.min(this.startPoint.y, event.clientY); - this.element.style.left = this.pointTopLeft.x + "px"; - this.element.style.top = this.pointTopLeft.y + "px"; - this.element.style.width = this.pointBottomRight.x - this.pointTopLeft.x + "px"; - this.element.style.height = this.pointBottomRight.y - this.pointTopLeft.y + "px"; - } - onSelectOver() { - this.element.parentElement.removeChild(this.element); - } -}; - -// node_modules/three/examples/jsm/lights/LightProbeGenerator.js -var LightProbeGenerator = class { - // https://www.ppsloan.org/publications/StupidSH36.pdf - static fromCubeTexture(cubeTexture) { - let totalWeight = 0; - const coord = new Vector3(); - const dir = new Vector3(); - const color = new Color(); - const shBasis = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - const sh = new SphericalHarmonics3(); - const shCoefficients = sh.coefficients; - for (let faceIndex = 0; faceIndex < 6; faceIndex++) { - const image = cubeTexture.image[faceIndex]; - const width2 = image.width; - const height2 = image.height; - const canvas = document.createElement("canvas"); - canvas.width = width2; - canvas.height = height2; - const context = canvas.getContext("2d"); - context.drawImage(image, 0, 0, width2, height2); - const imageData = context.getImageData(0, 0, width2, height2); - const data2 = imageData.data; - const imageWidth = imageData.width; - const pixelSize = 2 / imageWidth; - for (let i = 0, il = data2.length; i < il; i += 4) { - color.setRGB(data2[i] / 255, data2[i + 1] / 255, data2[i + 2] / 255); - convertColorToLinear(color, cubeTexture.colorSpace); - const pixelIndex = i / 4; - const col = -1 + (pixelIndex % imageWidth + 0.5) * pixelSize; - const row = 1 - (Math.floor(pixelIndex / imageWidth) + 0.5) * pixelSize; - switch (faceIndex) { - case 0: - coord.set(-1, row, -col); - break; - case 1: - coord.set(1, row, col); - break; - case 2: - coord.set(-col, 1, -row); - break; - case 3: - coord.set(-col, -1, row); - break; - case 4: - coord.set(-col, row, 1); - break; - case 5: - coord.set(col, row, -1); - break; - } - const lengthSq = coord.lengthSq(); - const weight = 4 / (Math.sqrt(lengthSq) * lengthSq); - totalWeight += weight; - dir.copy(coord).normalize(); - SphericalHarmonics3.getBasisAt(dir, shBasis); - for (let j = 0; j < 9; j++) { - shCoefficients[j].x += shBasis[j] * color.r * weight; - shCoefficients[j].y += shBasis[j] * color.g * weight; - shCoefficients[j].z += shBasis[j] * color.b * weight; - } - } - } - const norm = 4 * Math.PI / totalWeight; - for (let j = 0; j < 9; j++) { - shCoefficients[j].x *= norm; - shCoefficients[j].y *= norm; - shCoefficients[j].z *= norm; - } - return new LightProbe(sh); - } - static fromCubeRenderTarget(renderer2, cubeRenderTarget) { - let totalWeight = 0; - const coord = new Vector3(); - const dir = new Vector3(); - const color = new Color(); - const shBasis = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - const sh = new SphericalHarmonics3(); - const shCoefficients = sh.coefficients; - const dataType = cubeRenderTarget.texture.type; - for (let faceIndex = 0; faceIndex < 6; faceIndex++) { - const imageWidth = cubeRenderTarget.width; - let data2; - if (dataType === HalfFloatType) { - data2 = new Uint16Array(imageWidth * imageWidth * 4); - } else { - data2 = new Uint8Array(imageWidth * imageWidth * 4); - } - renderer2.readRenderTargetPixels(cubeRenderTarget, 0, 0, imageWidth, imageWidth, data2, faceIndex); - const pixelSize = 2 / imageWidth; - for (let i = 0, il = data2.length; i < il; i += 4) { - let r, g2, b3; - if (dataType === HalfFloatType) { - r = DataUtils.fromHalfFloat(data2[i]); - g2 = DataUtils.fromHalfFloat(data2[i + 1]); - b3 = DataUtils.fromHalfFloat(data2[i + 2]); - } else { - r = data2[i] / 255; - g2 = data2[i + 1] / 255; - b3 = data2[i + 2] / 255; - } - color.setRGB(r, g2, b3); - convertColorToLinear(color, cubeRenderTarget.texture.colorSpace); - const pixelIndex = i / 4; - const col = -1 + (pixelIndex % imageWidth + 0.5) * pixelSize; - const row = 1 - (Math.floor(pixelIndex / imageWidth) + 0.5) * pixelSize; - switch (faceIndex) { - case 0: - coord.set(1, row, -col); - break; - case 1: - coord.set(-1, row, col); - break; - case 2: - coord.set(col, 1, -row); - break; - case 3: - coord.set(col, -1, row); - break; - case 4: - coord.set(col, row, 1); - break; - case 5: - coord.set(-col, row, -1); - break; - } - const lengthSq = coord.lengthSq(); - const weight = 4 / (Math.sqrt(lengthSq) * lengthSq); - totalWeight += weight; - dir.copy(coord).normalize(); - SphericalHarmonics3.getBasisAt(dir, shBasis); - for (let j = 0; j < 9; j++) { - shCoefficients[j].x += shBasis[j] * color.r * weight; - shCoefficients[j].y += shBasis[j] * color.g * weight; - shCoefficients[j].z += shBasis[j] * color.b * weight; - } - } - } - const norm = 4 * Math.PI / totalWeight; - for (let j = 0; j < 9; j++) { - shCoefficients[j].x *= norm; - shCoefficients[j].y *= norm; - shCoefficients[j].z *= norm; - } - return new LightProbe(sh); - } -}; -function convertColorToLinear(color, colorSpace) { - switch (colorSpace) { - case SRGBColorSpace: - color.convertSRGBToLinear(); - break; - case LinearSRGBColorSpace: - case NoColorSpace: - break; - default: - console.warn("WARNING: LightProbeGenerator convertColorToLinear() encountered an unsupported color space."); - break; - } - return color; -} - -// node_modules/three/examples/jsm/lights/RectAreaLightTexturesLib.js -var RectAreaLightTexturesLib = class { - static init() { - const LTC_MAT_1 = [1, 0, 0, 2e-5, 1, 0, 0, 503905e-9, 1, 0, 0, 201562e-8, 1, 0, 0, 453516e-8, 1, 0, 0, 806253e-8, 1, 0, 0, 0.0125978, 1, 0, 0, 0.018141, 1, 0, 0, 0.0246924, 1, 0, 0, 0.0322525, 1, 0, 0, 0.0408213, 1, 0, 0, 0.0503999, 1, 0, 0, 0.0609894, 1, 0, 0, 0.0725906, 1, 0, 0, 0.0852058, 1, 0, 0, 0.0988363, 1, 0, 0, 0.113484, 1, 0, 0, 0.129153, 1, 0, 0, 0.145839, 1, 0, 0, 0.163548, 1, 0, 0, 0.182266, 1, 0, 0, 0.201942, 1, 0, 0, 0.222314, 1, 0, 0, 0.241906, 1, 0, 0, 0.262314, 1, 0, 0, 0.285754, 1, 0, 0, 0.310159, 1, 0, 0, 0.335426, 1, 0, 0, 0.361341, 1, 0, 0, 0.387445, 1, 0, 0, 0.412784, 1, 0, 0, 0.438197, 1, 0, 0, 0.466966, 1, 0, 0, 0.49559, 1, 0, 0, 0.523448, 1, 0, 0, 0.549938, 1, 0, 0, 0.57979, 1, 0, 0, 0.608746, 1, 0, 0, 0.636185, 1, 0, 0, 0.664748, 1, 0, 0, 0.69313, 1, 0, 0, 0.71966, 1, 0, 0, 0.747662, 1, 0, 0, 0.774023, 1, 0, 0, 0.799775, 1, 0, 0, 0.825274, 1, 0, 0, 0.849156, 1, 0, 0, 0.873248, 1, 0, 0, 0.89532, 1, 0, 0, 0.917565, 1, 0, 0, 0.937863, 1, 0, 0, 0.958139, 1, 0, 0, 0.976563, 1, 0, 0, 0.994658, 1, 0, 0, 1.0112, 1, 0, 0, 1.02712, 1, 0, 0, 1.04189, 1, 0, 0, 1.05568, 1, 0, 0, 1.06877, 1, 0, 0, 1.08058, 1, 0, 0, 1.09194, 1, 0, 0, 1.10191, 1, 0, 0, 1.11161, 1, 0, 0, 1.1199, 1, 0, 0, 1.12813, 0.999547, -448815e-12, 0.0224417, 199902e-10, 0.999495, -113079e-10, 0.0224406, 503651e-9, 0.999496, -452317e-10, 0.0224406, 201461e-8, 0.999496, -101772e-9, 0.0224406, 453287e-8, 0.999495, -180928e-9, 0.0224406, 805845e-8, 0.999497, -282702e-9, 0.0224406, 0.0125914, 0.999496, -407096e-9, 0.0224406, 0.0181319, 0.999498, -554114e-9, 0.0224406, 0.02468, 0.999499, -723768e-9, 0.0224406, 0.0322363, 0.999495, -916058e-9, 0.0224405, 0.0408009, 0.999499, -113101e-8, 0.0224408, 0.050375, 0.999494, -136863e-8, 0.0224405, 0.0609586, 0.999489, -162896e-8, 0.0224401, 0.0725537, 0.999489, -191201e-8, 0.0224414, 0.0851619, 0.999498, -221787e-8, 0.0224413, 0.0987867, 0.999492, -254642e-8, 0.0224409, 0.113426, 0.999507, -289779e-8, 0.0224417, 0.129088, 0.999494, -32716e-7, 0.0224386, 0.145767, 0.999546, -36673e-7, 0.0224424, 0.163472, 0.999543, -408166e-8, 0.0224387, 0.182182, 0.999499, -450056e-8, 0.0224338, 0.201843, 0.999503, -483661e-8, 0.0224203, 0.222198, 0.999546, -452928e-8, 0.022315, 0.241714, 0.999508, -587403e-8, 0.0224329, 0.262184, 0.999509, -638806e-8, 0.0224271, 0.285609, 0.999501, -691028e-8, 0.0224166, 0.309998, 0.999539, -741979e-8, 0.0223989, 0.335262, 0.999454, -786282e-8, 0.0223675, 0.361154, 0.999529, -811928e-8, 0.0222828, 0.387224, 0.999503, -799941e-8, 0.0221063, 0.41252, 0.999561, -952753e-8, 0.0223057, 0.438006, 0.999557, -99134e-7, 0.0222065, 0.466735, 0.999541, -0.0100935, 0.0220402, 0.495332, 0.999562, -996821e-8, 0.0218067, 0.523197, 0.999556, -0.0105031, 0.0217096, 0.550223, 0.999561, -0.0114191, 0.0217215, 0.579498, 0.999588, -0.0111818, 0.0213357, 0.608416, 0.999633, -0.0107725, 0.0208689, 0.635965, 0.999527, -0.0121671, 0.0210149, 0.664476, 0.999508, -0.0116005, 0.020431, 0.692786, 0.999568, -0.0115604, 0.0199791, 0.719709, 0.999671, -0.0121117, 0.0197415, 0.74737, 0.999688, -0.0110769, 0.0188846, 0.773692, 0.99962, -0.0122368, 0.0188452, 0.799534, 0.999823, -0.0110325, 0.0178001, 0.825046, 0.999599, -0.0114923, 0.0174221, 0.849075, 0.999619, -0.0105923, 0.0164345, 0.872999, 0.999613, -0.0105988, 0.0158227, 0.895371, 0.99964, -979861e-8, 0.0148131, 0.917364, 0.99977, -967238e-8, 0.0140721, 0.938002, 0.999726, -869175e-8, 0.0129543, 0.957917, 0.99973, -866872e-8, 0.0122329, 0.976557, 0.999773, -731956e-8, 0.0108958, 0.994459, 0.999811, -756027e-8, 0.0102715, 1.01118, 0.999862, -583732e-8, 878781e-8, 1.02701, 0.999835, -631438e-8, 827529e-8, 1.04186, 0.999871, -450785e-8, 674583e-8, 1.05569, 0.999867, -486079e-8, 621041e-8, 1.06861, 0.999939, -322072e-8, 478301e-8, 1.08064, 0.999918, -318199e-8, 406395e-8, 1.09181, 1.00003, -193348e-8, 280682e-8, 1.10207, 0.999928, -153729e-8, 198741e-8, 1.11152, 0.999933, -623666e-9, 917714e-9, 1.12009, 1, -102387e-11, 907581e-12, 1.12813, 0.997866, -896716e-12, 0.0448334, 199584e-10, 0.997987, -225945e-10, 0.0448389, 502891e-9, 0.997987, -903781e-10, 0.0448388, 201156e-8, 0.997985, -203351e-9, 0.0448388, 452602e-8, 0.997986, -361514e-9, 0.0448388, 804629e-8, 0.997987, -56487e-8, 0.0448389, 0.0125724, 0.997988, -813423e-9, 0.0448389, 0.0181045, 0.997984, -110718e-8, 0.0448387, 0.0246427, 0.997985, -144616e-8, 0.0448388, 0.0321875, 0.997987, -183038e-8, 0.044839, 0.0407392, 0.997983, -225987e-8, 0.0448387, 0.0502986, 0.997991, -273467e-8, 0.0448389, 0.0608667, 0.997984, -325481e-8, 0.0448384, 0.0724444, 0.998002, -382043e-8, 0.044839, 0.0850348, 0.997997, -443145e-8, 0.0448396, 0.0986372, 0.998007, -508796e-8, 0.0448397, 0.113255, 0.998008, -578985e-8, 0.04484, 0.128891, 0.998003, -653683e-8, 0.0448384, 0.145548, 0.997983, -732713e-8, 0.0448358, 0.163221, 0.997985, -815454e-8, 0.0448358, 0.181899, 0.998005, -898985e-8, 0.0448286, 0.201533, 0.998026, -964404e-8, 0.0447934, 0.221821, 0.998055, -922677e-8, 0.044611, 0.241282, 0.99804, -0.0117361, 0.0448245, 0.261791, 0.998048, -0.0127628, 0.0448159, 0.285181, 0.998088, -0.0138055, 0.0447996, 0.30954, 0.998058, -0.0148206, 0.0447669, 0.334751, 0.998099, -0.0156998, 0.044697, 0.36061, 0.998116, -0.0161976, 0.0445122, 0.386603, 0.998195, -0.015945, 0.0441711, 0.411844, 0.998168, -0.0183947, 0.0444255, 0.43773, 0.998184, -0.0197913, 0.0443809, 0.466009, 0.998251, -0.0201426, 0.0440689, 0.494574, 0.998305, -0.0198847, 0.0435632, 0.522405, 0.998273, -0.0210577, 0.043414, 0.549967, 0.998254, -0.0227901, 0.0433943, 0.578655, 0.998349, -0.0223108, 0.0426529, 0.60758, 0.99843, -0.0223088, 0.042, 0.635524, 0.998373, -0.0241141, 0.0418987, 0.663621, 0.998425, -0.0231446, 0.0408118, 0.691906, 0.998504, -0.0233684, 0.0400565, 0.719339, 0.998443, -0.0241652, 0.0394634, 0.74643, 0.99848, -0.0228715, 0.0380002, 0.773086, 0.998569, -0.023519, 0.0372322, 0.798988, 0.998619, -0.0223108, 0.0356468, 0.824249, 0.998594, -0.0223105, 0.034523, 0.848808, 0.998622, -0.0213426, 0.0328887, 0.87227, 0.998669, -0.0207912, 0.0314374, 0.895157, 0.998705, -0.0198416, 0.0296925, 0.916769, 0.998786, -0.0189168, 0.0279634, 0.937773, 0.998888, -0.0178811, 0.0261597, 0.957431, 0.99906, -0.0166845, 0.0242159, 0.976495, 0.999038, -0.0155464, 0.0222638, 0.994169, 0.999237, -0.0141349, 0.0201967, 1.01112, 0.999378, -0.0129324, 0.0181744, 1.02692, 0.999433, -0.0113192, 0.0159898, 1.04174, 0.999439, -0.0101244, 0.0140385, 1.05559, 0.999614, -837456e-8, 0.0117826, 1.06852, 0.999722, -721769e-8, 983745e-8, 1.08069, 0.999817, -554067e-8, 769002e-8, 1.09176, 0.99983, -426961e-8, 5782e-6, 1.10211, 0.999964, -273904e-8, 374503e-8, 1.11152, 1.00001, -136739e-8, 187176e-8, 1.12031, 0.999946, 393227e-10, -28919e-9, 1.12804, 0.995847, -13435e-10, 0.0671785, 19916e-9, 0.995464, -338387e-10, 0.0671527, 501622e-9, 0.99547, -135355e-9, 0.0671531, 200649e-8, 0.995471, -30455e-8, 0.0671532, 451461e-8, 0.99547, -541423e-9, 0.0671531, 8026e-6, 0.995471, -84598e-8, 0.0671531, 0.0125407, 0.99547, -121823e-8, 0.0671531, 0.0180589, 0.99547, -165817e-8, 0.0671531, 0.0245806, 0.995463, -216583e-8, 0.0671526, 0.0321062, 0.995468, -274127e-8, 0.0671527, 0.0406366, 0.995474, -338447e-8, 0.0671534, 0.0501717, 0.995473, -409554e-8, 0.0671533, 0.0607131, 0.995478, -487451e-8, 0.0671531, 0.0722618, 0.995476, -572148e-8, 0.0671532, 0.0848191, 0.995477, -663658e-8, 0.0671539, 0.0983882, 0.995498, -761986e-8, 0.0671541, 0.112972, 0.995509, -867094e-8, 0.0671542, 0.128568, 0.995509, -978951e-8, 0.0671531, 0.145183, 0.995503, -0.0109725, 0.0671491, 0.162808, 0.995501, -0.012211, 0.0671465, 0.181441, 0.99553, -0.0134565, 0.0671371, 0.201015, 0.99555, -0.014391, 0.0670831, 0.221206, 0.99558, -0.014351, 0.0668883, 0.240813, 0.995577, -0.0173997, 0.0671055, 0.261257, 0.995602, -0.0191111, 0.0671178, 0.284467, 0.995623, -0.0206705, 0.0670946, 0.308765, 0.995658, -0.022184, 0.0670472, 0.333905, 0.995705, -0.0234832, 0.0669417, 0.359677, 0.995719, -0.0241933, 0.0666714, 0.385554, 0.995786, -0.0243539, 0.066266, 0.410951, 0.995887, -0.0271866, 0.0664367, 0.437163, 0.995944, -0.0296012, 0.0664931, 0.464842, 0.996004, -0.0301045, 0.0660105, 0.49332, 0.996128, -0.0298311, 0.0652694, 0.521131, 0.996253, -0.0316426, 0.0650739, 0.549167, 0.996244, -0.0339043, 0.0649433, 0.57737, 0.996309, -0.033329, 0.0638926, 0.606073, 0.996417, -0.0338935, 0.0630849, 0.634527, 0.996372, -0.0353104, 0.0625083, 0.66256, 0.996542, -0.0348942, 0.0611986, 0.690516, 0.996568, -0.0351614, 0.060069, 0.718317, 0.996711, -0.0354317, 0.0588522, 0.74528, 0.996671, -0.0349513, 0.0571902, 0.772061, 0.996865, -0.0345622, 0.0555321, 0.798089, 0.996802, -0.0342566, 0.0537816, 0.823178, 0.996992, -0.0330862, 0.0516095, 0.847949, 0.996944, -0.0324666, 0.0495537, 0.871431, 0.997146, -0.0309544, 0.0470302, 0.894357, 0.997189, -0.0299372, 0.0446043, 0.916142, 0.997471, -0.0281389, 0.0418812, 0.937193, 0.997515, -0.0268702, 0.0391823, 0.957, 0.997812, -0.0247166, 0.0361338, 0.975936, 0.998027, -0.0233525, 0.0333945, 0.99391, 0.998233, -0.0209839, 0.0301917, 1.01075, 0.998481, -0.0194309, 0.027271, 1.02669, 0.998859, -0.0169728, 0.0240162, 1.04173, 0.99894, -0.0152322, 0.0210517, 1.05551, 0.999132, -0.0127497, 0.0178632, 1.06856, 0.999369, -0.0108282, 0.014787, 1.08054, 0.999549, -845886e-8, 0.0116185, 1.09185, 0.999805, -63937e-7, 867209e-8, 1.10207, 0.99985, -414582e-8, 566823e-8, 1.1117, 0.999912, -207443e-8, 277562e-8, 1.12022, 1.00001, 870226e-10, -53766e-9, 1.12832, 0.991943, -178672e-11, 0.0893382, 198384e-10, 0.991952, -450183e-10, 0.089339, 499849e-9, 0.991956, -180074e-9, 0.0893394, 19994e-7, 0.991955, -405167e-9, 0.0893393, 449867e-8, 0.991953, -720298e-9, 0.0893391, 799764e-8, 0.991955, -112548e-8, 0.0893393, 0.0124964, 0.991957, -16207e-7, 0.0893395, 0.0179951, 0.991958, -220601e-8, 0.0893396, 0.0244939, 0.991947, -288137e-8, 0.0893385, 0.0319929, 0.991962, -364693e-8, 0.0893399, 0.0404933, 0.991965, -450264e-8, 0.0893399, 0.049995, 0.99198, -544862e-8, 0.0893411, 0.0604995, 0.99197, -648491e-8, 0.0893397, 0.0720074, 0.991976, -761164e-8, 0.089341, 0.0845207, 0.99198, -882891e-8, 0.0893405, 0.0980413, 0.991982, -0.0101367, 0.0893396, 0.112571, 0.992008, -0.011535, 0.0893415, 0.128115, 0.992026, -0.0130228, 0.0893414, 0.144672, 0.992064, -0.0145966, 0.0893418, 0.162241, 0.992041, -0.0162421, 0.0893359, 0.180801, 0.992086, -0.0178888, 0.0893214, 0.200302, 0.992157, -0.0190368, 0.0892401, 0.220332, 0.992181, -0.0195584, 0.0890525, 0.240144, 0.992175, -0.0227257, 0.0892153, 0.260728, 0.99221, -0.0254195, 0.089304, 0.283473, 0.99222, -0.0274883, 0.0892703, 0.307673, 0.992317, -0.0294905, 0.0892027, 0.332729, 0.992374, -0.0311861, 0.0890577, 0.358387, 0.992505, -0.0320656, 0.0886994, 0.384102, 0.992568, -0.0329715, 0.0883198, 0.409767, 0.992675, -0.036006, 0.0883602, 0.436145, 0.992746, -0.0392897, 0.0884591, 0.463217, 0.992873, -0.0399337, 0.0878287, 0.491557, 0.992934, -0.040231, 0.0870108, 0.519516, 0.993091, -0.0422013, 0.0865857, 0.547741, 0.993259, -0.0443503, 0.0861937, 0.575792, 0.993455, -0.0446368, 0.0851187, 0.604233, 0.993497, -0.0454299, 0.0840576, 0.632925, 0.993694, -0.0463296, 0.0829671, 0.660985, 0.993718, -0.0470619, 0.0817185, 0.688714, 0.993973, -0.0468838, 0.0800294, 0.716743, 0.994207, -0.046705, 0.0781286, 0.74377, 0.994168, -0.0469698, 0.0763337, 0.77042, 0.9945, -0.0456816, 0.0738184, 0.796659, 0.994356, -0.0455518, 0.0715545, 0.821868, 0.994747, -0.0439488, 0.0686085, 0.846572, 0.994937, -0.0430056, 0.065869, 0.870435, 0.995142, -0.0413414, 0.0626446, 0.893272, 0.995451, -0.0396521, 0.05929, 0.915376, 0.995445, -0.0378453, 0.0558503, 0.936196, 0.995967, -0.0355219, 0.0520949, 0.956376, 0.996094, -0.0335146, 0.048377, 0.975327, 0.996622, -0.030682, 0.0442575, 0.993471, 0.996938, -0.0285504, 0.0404693, 1.01052, 0.997383, -0.0253399, 0.0360903, 1.02637, 0.997714, -0.0231651, 0.0322176, 1.04139, 0.998249, -0.0198138, 0.0278433, 1.05542, 0.998596, -0.0174337, 0.0238759, 1.06846, 0.998946, -0.0141349, 0.0195944, 1.08056, 0.99928, -0.0115603, 0.0156279, 1.09181, 0.999507, -839065e-8, 0.0114607, 1.10213, 0.999697, -5666e-6, 763325e-8, 1.11169, 0.999869, -269902e-8, 364946e-8, 1.12042, 1.00001, 623836e-10, -319288e-10, 1.12832, 0.987221, -222675e-11, 0.111332, 197456e-10, 0.98739, -561116e-10, 0.111351, 497563e-9, 0.987448, -224453e-9, 0.111357, 199031e-8, 0.987441, -505019e-9, 0.111357, 44782e-7, 0.987442, -897816e-9, 0.111357, 796129e-8, 0.987442, -140284e-8, 0.111357, 0.0124396, 0.987444, -202012e-8, 0.111357, 0.0179132, 0.987442, -274964e-8, 0.111357, 0.0243824, 0.987446, -359147e-8, 0.111357, 0.0318474, 0.987435, -454562e-8, 0.111356, 0.0403086, 0.987461, -561225e-8, 0.111358, 0.0497678, 0.987458, -679125e-8, 0.111358, 0.0602239, 0.987443, -80828e-7, 0.111356, 0.0716792, 0.987476, -94872e-7, 0.111358, 0.0841364, 0.98749, -0.0110044, 0.111361, 0.097597, 0.987508, -0.0126344, 0.111362, 0.112062, 0.987494, -0.0143767, 0.111357, 0.127533, 0.987526, -0.0162307, 0.111359, 0.144015, 0.987558, -0.0181912, 0.111361, 0.161502, 0.987602, -0.0202393, 0.111355, 0.179979, 0.987692, -0.022273, 0.111346, 0.199386, 0.987702, -0.0235306, 0.111215, 0.219183, 0.987789, -0.0247628, 0.111061, 0.239202, 0.987776, -0.0280668, 0.111171, 0.259957, 0.987856, -0.0316751, 0.111327, 0.282198, 0.987912, -0.0342468, 0.111282, 0.306294, 0.988, -0.0367205, 0.111198, 0.331219, 0.988055, -0.0387766, 0.110994, 0.356708, 0.988241, -0.0397722, 0.110547, 0.382234, 0.988399, -0.0416076, 0.110198, 0.408227, 0.988539, -0.0448192, 0.110137, 0.434662, 0.988661, -0.0483793, 0.110143, 0.461442, 0.988967, -0.0495895, 0.109453, 0.489318, 0.989073, -0.0506797, 0.108628, 0.517516, 0.989274, -0.0526953, 0.108003, 0.545844, 0.989528, -0.054578, 0.107255, 0.573823, 0.989709, -0.0561503, 0.106294, 0.601944, 0.989991, -0.056866, 0.104896, 0.630855, 0.990392, -0.0572914, 0.103336, 0.658925, 0.990374, -0.0586224, 0.10189, 0.686661, 0.990747, -0.0584764, 0.099783, 0.714548, 0.991041, -0.0582662, 0.0974309, 0.74186, 0.991236, -0.0584118, 0.0951678, 0.768422, 0.991585, -0.0573055, 0.0921581, 0.794817, 0.991984, -0.0564241, 0.0891167, 0.820336, 0.9921, -0.0553608, 0.085805, 0.84493, 0.992749, -0.0533816, 0.0820354, 0.868961, 0.99288, -0.0518661, 0.0782181, 0.891931, 0.993511, -0.0492492, 0.0738935, 0.914186, 0.993617, -0.0471956, 0.0696402, 0.93532, 0.99411, -0.044216, 0.0649659, 0.95543, 0.994595, -0.0416654, 0.0603177, 0.974685, 0.994976, -0.0384314, 0.0553493, 0.992807, 0.995579, -0.0353491, 0.0503942, 1.00996, 0.996069, -0.0319787, 0.0452123, 1.02606, 0.996718, -0.028472, 0.0400112, 1.04114, 0.997173, -0.0250789, 0.0349456, 1.05517, 0.997818, -0.0213326, 0.029653, 1.0683, 0.998318, -0.0178509, 0.024549, 1.0805, 0.998853, -0.0141118, 0.0194197, 1.09177, 0.999218, -0.0105914, 0.0143869, 1.1022, 0.999594, -693474e-8, 943517e-8, 1.11175, 0.99975, -340478e-8, 464051e-8, 1.12056, 1.00001, 109172e-9, -112821e-9, 1.12853, 0.983383, -266524e-11, 0.133358, 196534e-10, 0.981942, -671009e-10, 0.133162, 494804e-9, 0.981946, -268405e-9, 0.133163, 197923e-8, 0.981944, -603912e-9, 0.133163, 445326e-8, 0.981941, -107362e-8, 0.133162, 791693e-8, 0.981946, -167755e-8, 0.133163, 0.0123703, 0.981944, -241569e-8, 0.133162, 0.0178135, 0.981945, -328807e-8, 0.133163, 0.0242466, 0.981945, -429472e-8, 0.133162, 0.03167, 0.981955, -543573e-8, 0.133164, 0.0400846, 0.981951, -671105e-8, 0.133163, 0.0494901, 0.981968, -812092e-8, 0.133165, 0.0598886, 0.981979, -966541e-8, 0.133166, 0.0712811, 0.981996, -0.0113446, 0.133168, 0.083669, 0.982014, -0.0131585, 0.133169, 0.0970533, 0.982011, -0.0151073, 0.133167, 0.111438, 0.982062, -0.0171906, 0.133172, 0.126826, 0.9821, -0.0194067, 0.133175, 0.143215, 0.982149, -0.0217502, 0.133176, 0.160609, 0.982163, -0.0241945, 0.133173, 0.178981, 0.982247, -0.0265907, 0.133148, 0.198249, 0.982291, -0.027916, 0.132974, 0.217795, 0.982396, -0.0299663, 0.132868, 0.238042, 0.982456, -0.0334544, 0.132934, 0.258901, 0.982499, -0.0378636, 0.133137, 0.280639, 0.982617, -0.0409274, 0.133085, 0.304604, 0.98274, -0.0438523, 0.132985, 0.329376, 0.982944, -0.0462288, 0.132728, 0.354697, 0.98308, -0.0475995, 0.132228, 0.380102, 0.983391, -0.0501901, 0.131924, 0.406256, 0.983514, -0.0535899, 0.131737, 0.432735, 0.98373, -0.0571858, 0.131567, 0.459359, 0.984056, -0.0592353, 0.130932, 0.486637, 0.984234, -0.0610488, 0.130092, 0.51509, 0.984748, -0.0630758, 0.12923, 0.543461, 0.985073, -0.0647398, 0.128174, 0.571376, 0.985195, -0.0671941, 0.127133, 0.599414, 0.985734, -0.0681345, 0.125576, 0.628134, 0.986241, -0.0686089, 0.123639, 0.656399, 0.986356, -0.0698511, 0.121834, 0.684258, 0.986894, -0.0700931, 0.119454, 0.711818, 0.987382, -0.0698321, 0.116718, 0.739511, 0.988109, -0.0693975, 0.113699, 0.766267, 0.988363, -0.0689584, 0.110454, 0.792456, 0.989112, -0.0672353, 0.106602, 0.81813, 0.989241, -0.0662034, 0.10267, 0.842889, 0.990333, -0.0638938, 0.0981381, 0.867204, 0.990591, -0.0618534, 0.0935388, 0.89038, 0.991106, -0.0593117, 0.088553, 0.912576, 0.991919, -0.0562676, 0.0832187, 0.934118, 0.992111, -0.0534085, 0.0778302, 0.954254, 0.992997, -0.0495459, 0.0720453, 0.973722, 0.993317, -0.0463707, 0.0663458, 0.991949, 0.994133, -0.0421245, 0.0601883, 1.00936, 0.994705, -0.0384977, 0.0542501, 1.02559, 0.995495, -0.0340956, 0.0479862, 1.04083, 0.996206, -0.030105, 0.041887, 1.05497, 0.996971, -0.0256095, 0.0355355, 1.06824, 0.997796, -0.0213932, 0.0293655, 1.08056, 0.998272, -0.0169612, 0.0232926, 1.09182, 0.998857, -0.0126756, 0.0172786, 1.10219, 0.99939, -832486e-8, 0.0113156, 1.11192, 0.999752, -410826e-8, 557892e-8, 1.12075, 1, 150957e-9, -119101e-9, 1.12885, 0.975169, -309397e-11, 0.154669, 195073e-10, 0.975439, -779608e-10, 0.154712, 491534e-9, 0.975464, -311847e-9, 0.154716, 196617e-8, 0.975464, -701656e-9, 0.154716, 442387e-8, 0.975462, -12474e-7, 0.154715, 78647e-7, 0.975461, -194906e-8, 0.154715, 0.0122886, 0.975464, -280667e-8, 0.154715, 0.0176959, 0.975468, -382025e-8, 0.154716, 0.0240867, 0.975471, -498985e-8, 0.154716, 0.0314612, 0.975472, -631541e-8, 0.154717, 0.0398199, 0.975486, -779719e-8, 0.154718, 0.0491639, 0.975489, -943505e-8, 0.154718, 0.0594932, 0.975509, -0.0112295, 0.154721, 0.0708113, 0.97554, -0.0131802, 0.154724, 0.0831176, 0.975557, -0.0152876, 0.154726, 0.096415, 0.975585, -0.0175512, 0.154728, 0.110705, 0.975605, -0.0199713, 0.154729, 0.125992, 0.975645, -0.0225447, 0.154729, 0.142272, 0.975711, -0.0252649, 0.154735, 0.159549, 0.975788, -0.0280986, 0.154736, 0.177805, 0.975872, -0.0308232, 0.154704, 0.196911, 0.975968, -0.0324841, 0.154525, 0.216324, 0.976063, -0.0351281, 0.154432, 0.236628, 0.976157, -0.0388618, 0.15446, 0.257539, 0.976204, -0.0437704, 0.154665, 0.278975, 0.976358, -0.047514, 0.154652, 0.302606, 0.976571, -0.0508638, 0.154535, 0.327204, 0.976725, -0.0534995, 0.154221, 0.352276, 0.977013, -0.0555547, 0.153737, 0.377696, 0.977294, -0.0586728, 0.153403, 0.403855, 0.977602, -0.0622715, 0.15312, 0.430333, 0.977932, -0.0658166, 0.152755, 0.456855, 0.978241, -0.0689877, 0.152233, 0.483668, 0.978602, -0.0712805, 0.15132, 0.512097, 0.979234, -0.0732775, 0.150235, 0.540455, 0.97977, -0.075163, 0.148978, 0.568486, 0.979995, -0.0778026, 0.147755, 0.596524, 0.98078, -0.0791854, 0.146019, 0.624825, 0.981628, -0.0799666, 0.143906, 0.653403, 0.982067, -0.0808532, 0.141561, 0.681445, 0.98271, -0.0816024, 0.139025, 0.708918, 0.983734, -0.0812511, 0.135764, 0.736594, 0.98431, -0.0806201, 0.132152, 0.763576, 0.985071, -0.0801605, 0.12846, 0.789797, 0.98618, -0.0784208, 0.124084, 0.815804, 0.986886, -0.0766643, 0.1193, 0.840869, 0.987485, -0.0747744, 0.114236, 0.864952, 0.988431, -0.0716701, 0.108654, 0.888431, 0.988886, -0.0691609, 0.102994, 0.910963, 0.990024, -0.0654048, 0.0967278, 0.932629, 0.990401, -0.0619765, 0.090384, 0.95313, 0.991093, -0.0579296, 0.0837885, 0.972587, 0.992018, -0.0536576, 0.0770171, 0.991184, 0.992536, -0.0493719, 0.0701486, 1.00863, 0.993421, -0.0444813, 0.062953, 1.02494, 0.993928, -0.040008, 0.0560455, 1.04017, 0.994994, -0.0347982, 0.04856, 1.05463, 0.995866, -0.0301017, 0.0416152, 1.06807, 0.996916, -0.0248225, 0.0342597, 1.08039, 0.997766, -0.0199229, 0.0271668, 1.09177, 0.998479, -0.0147422, 0.0201387, 1.10235, 0.99921, -980173e-8, 0.0131944, 1.11206, 0.999652, -47426e-7, 640712e-8, 1.12104, 0.999998, 891673e-10, -10379e-8, 1.12906, 0.967868, -351885e-11, 0.175947, 193569e-10, 0.968001, -886733e-10, 0.175972, 487782e-9, 0.96801, -354697e-9, 0.175973, 195115e-8, 0.968012, -798063e-9, 0.175974, 439006e-8, 0.968011, -141879e-8, 0.175973, 780461e-8, 0.968011, -221686e-8, 0.175973, 0.0121948, 0.968016, -319231e-8, 0.175974, 0.0175607, 0.968019, -434515e-8, 0.175974, 0.0239027, 0.968018, -567538e-8, 0.175974, 0.0312208, 0.968033, -718308e-8, 0.175977, 0.0395158, 0.968049, -886836e-8, 0.175979, 0.0487885, 0.968047, -0.0107312, 0.175978, 0.0590394, 0.968072, -0.0127719, 0.175981, 0.0702705, 0.968108, -0.0149905, 0.175986, 0.0824836, 0.968112, -0.0173866, 0.175985, 0.0956783, 0.968173, -0.0199611, 0.175993, 0.109862, 0.96827, -0.0227128, 0.176008, 0.125033, 0.968292, -0.025639, 0.17601, 0.141193, 0.968339, -0.0287299, 0.176007, 0.158336, 0.968389, -0.0319399, 0.176001, 0.176441, 0.968501, -0.034941, 0.175962, 0.195359, 0.968646, -0.0370812, 0.175793, 0.214686, 0.968789, -0.0402329, 0.175708, 0.234973, 0.96886, -0.0442601, 0.1757, 0.255871, 0.969013, -0.049398, 0.175876, 0.277238, 0.969242, -0.0539932, 0.17594, 0.300326, 0.969419, -0.0577299, 0.175781, 0.324702, 0.969763, -0.0605643, 0.175432, 0.349527, 0.970093, -0.0634488, 0.174992, 0.374976, 0.970361, -0.0670589, 0.174611, 0.401097, 0.970825, -0.0708246, 0.174226, 0.427496, 0.971214, -0.0742871, 0.173684, 0.453858, 0.971622, -0.0782608, 0.173186, 0.480637, 0.972175, -0.0813151, 0.172288, 0.508655, 0.972944, -0.0832678, 0.170979, 0.536973, 0.973595, -0.0855964, 0.169573, 0.565138, 0.974345, -0.0882163, 0.168152, 0.593222, 0.975233, -0.0901671, 0.166314, 0.621201, 0.976239, -0.0912111, 0.163931, 0.649919, 0.977289, -0.0916959, 0.161106, 0.678011, 0.978076, -0.0927061, 0.158272, 0.705717, 0.979533, -0.0925562, 0.15475, 0.733228, 0.980335, -0.0918159, 0.150638, 0.760454, 0.981808, -0.0908508, 0.146201, 0.786918, 0.983061, -0.0896172, 0.141386, 0.812953, 0.984148, -0.0871588, 0.135837, 0.838281, 0.985047, -0.0850624, 0.130135, 0.862594, 0.986219, -0.0818541, 0.123882, 0.88633, 0.987043, -0.0784523, 0.117126, 0.908952, 0.988107, -0.0749601, 0.110341, 0.930744, 0.988955, -0.0703548, 0.102885, 0.951728, 0.989426, -0.0662798, 0.0954167, 0.971166, 0.990421, -0.0610834, 0.0876331, 0.989984, 0.991032, -0.0562936, 0.0797785, 1.00765, 0.992041, -0.0508154, 0.0718166, 1.02434, 0.992794, -0.0454045, 0.0637125, 1.03976, 0.993691, -0.0398194, 0.0555338, 1.05418, 0.994778, -0.0341482, 0.0473388, 1.06772, 0.995915, -0.028428, 0.0391016, 1.08028, 0.997109, -0.022642, 0.0309953, 1.09185, 0.998095, -0.0168738, 0.0230288, 1.10247, 0.998985, -0.0111274, 0.0150722, 1.11229, 0.999581, -543881e-8, 740605e-8, 1.12131, 1.00003, 162239e-9, -105549e-9, 1.12946, 0.959505, -393734e-11, 0.196876, 191893e-10, 0.959599, -992157e-10, 0.196895, 483544e-9, 0.959641, -396868e-9, 0.196903, 19342e-7, 0.959599, -892948e-9, 0.196895, 435193e-8, 0.959603, -158747e-8, 0.196896, 77368e-7, 0.959604, -248042e-8, 0.196896, 0.0120888, 0.959605, -357184e-8, 0.196896, 0.0174082, 0.959605, -486169e-8, 0.196896, 0.0236949, 0.959613, -635008e-8, 0.196897, 0.0309497, 0.959619, -803696e-8, 0.196898, 0.0391725, 0.959636, -992255e-8, 0.196901, 0.0483649, 0.959634, -0.0120067, 0.1969, 0.0585266, 0.959675, -0.0142898, 0.196906, 0.0696609, 0.959712, -0.0167717, 0.196911, 0.0817678, 0.959752, -0.0194524, 0.196918, 0.0948494, 0.959807, -0.0223321, 0.196925, 0.10891, 0.959828, -0.0254091, 0.196924, 0.123947, 0.959906, -0.0286815, 0.196934, 0.139968, 0.960005, -0.0321371, 0.196944, 0.156968, 0.960071, -0.0357114, 0.196936, 0.17491, 0.960237, -0.0389064, 0.196882, 0.193597, 0.960367, -0.041623, 0.196731, 0.21285, 0.960562, -0.0452655, 0.196654, 0.233075, 0.960735, -0.0496207, 0.196643, 0.253941, 0.960913, -0.0549379, 0.196774, 0.275278, 0.961121, -0.0603414, 0.196893, 0.297733, 0.96139, -0.0644244, 0.196717, 0.321877, 0.961818, -0.067556, 0.196314, 0.346476, 0.962175, -0.0712709, 0.195917, 0.371907, 0.96255, -0.0752848, 0.1955, 0.397916, 0.963164, -0.0792073, 0.195026, 0.424229, 0.963782, -0.0828225, 0.194424, 0.450637, 0.964306, -0.0873119, 0.193831, 0.477288, 0.964923, -0.0911051, 0.192973, 0.504716, 0.966048, -0.093251, 0.19151, 0.533053, 0.967024, -0.0958983, 0.190013, 0.561366, 0.968038, -0.09835, 0.188253, 0.589464, 0.969152, -0.100754, 0.186257, 0.617433, 0.970557, -0.102239, 0.183775, 0.645801, 0.972104, -0.102767, 0.180645, 0.674278, 0.973203, -0.103492, 0.177242, 0.702004, 0.975123, -0.103793, 0.17345, 0.729529, 0.97641, -0.102839, 0.168886, 0.756712, 0.978313, -0.101687, 0.163892, 0.783801, 0.980036, -0.100314, 0.158439, 0.809671, 0.981339, -0.097836, 0.152211, 0.835402, 0.982794, -0.0950006, 0.145679, 0.860081, 0.984123, -0.0920994, 0.138949, 0.883757, 0.984918, -0.0878641, 0.131283, 0.90685, 0.985999, -0.083939, 0.123464, 0.928786, 0.987151, -0.0791234, 0.115324, 0.94983, 0.987827, -0.0739332, 0.106854, 0.96962, 0.988806, -0.0688088, 0.0982691, 0.98861, 0.989588, -0.0628962, 0.0893456, 1.00667, 0.990438, -0.0573146, 0.0805392, 1.02344, 0.991506, -0.0509433, 0.0713725, 1.03933, 0.992492, -0.0448724, 0.0623732, 1.05378, 0.993663, -0.0383497, 0.0530838, 1.06747, 0.994956, -0.0319593, 0.0439512, 1.08007, 0.99634, -0.025401, 0.0347803, 1.09182, 0.99761, -0.0189687, 0.0257954, 1.1025, 0.99863, -0.0124441, 0.0169893, 1.11247, 0.99947, -614003e-8, 829498e-8, 1.12151, 1.00008, 216624e-9, -146107e-9, 1.12993, 0.950129, -434955e-11, 0.217413, 190081e-10, 0.950264, -10957e-8, 0.217444, 47884e-8, 0.9503, -438299e-9, 0.217451, 191543e-8, 0.950246, -986124e-9, 0.21744, 430951e-8, 0.950246, -175311e-8, 0.21744, 766137e-8, 0.950245, -273923e-8, 0.21744, 0.011971, 0.950253, -394453e-8, 0.217441, 0.0172385, 0.950258, -536897e-8, 0.217442, 0.0234641, 0.950267, -701262e-8, 0.217444, 0.030648, 0.950277, -887551e-8, 0.217446, 0.038791, 0.950284, -0.0109576, 0.217446, 0.0478931, 0.950312, -0.0132591, 0.217451, 0.0579568, 0.950334, -0.01578, 0.217454, 0.0689821, 0.950378, -0.0185204, 0.217462, 0.0809714, 0.950417, -0.0214803, 0.217467, 0.0939265, 0.950488, -0.0246594, 0.217479, 0.10785, 0.950534, -0.0280565, 0.217483, 0.122743, 0.950633, -0.0316685, 0.217498, 0.138611, 0.950698, -0.0354787, 0.217499, 0.155442, 0.950844, -0.0394003, 0.217507, 0.173208, 0.950999, -0.0426812, 0.217419, 0.191605, 0.951221, -0.0461302, 0.217317, 0.21084, 0.951412, -0.0502131, 0.217238, 0.230945, 0.951623, -0.0549183, 0.21722, 0.251745, 0.951867, -0.0604493, 0.217306, 0.273001, 0.952069, -0.0665189, 0.217466, 0.294874, 0.952459, -0.0709179, 0.217266, 0.318732, 0.952996, -0.0746112, 0.216891, 0.34318, 0.953425, -0.0789252, 0.216503, 0.36849, 0.953885, -0.0833293, 0.216042, 0.394373, 0.954617, -0.087371, 0.215469, 0.420505, 0.955429, -0.0914054, 0.214802, 0.446907, 0.956068, -0.0961671, 0.214146, 0.473522, 0.957094, -0.10048, 0.213286, 0.50052, 0.958372, -0.103248, 0.211796, 0.528715, 0.959654, -0.106033, 0.21016, 0.557065, 0.961305, -0.108384, 0.208149, 0.585286, 0.962785, -0.111122, 0.206024, 0.613334, 0.964848, -0.112981, 0.203442, 0.641334, 0.966498, -0.113717, 0.19996, 0.669955, 0.968678, -0.114121, 0.196105, 0.698094, 0.970489, -0.114524, 0.191906, 0.725643, 0.972903, -0.113792, 0.186963, 0.752856, 0.974701, -0.112406, 0.181343, 0.780013, 0.976718, -0.110685, 0.175185, 0.806268, 0.978905, -0.108468, 0.168535, 0.832073, 0.980267, -0.105061, 0.161106, 0.857149, 0.981967, -0.101675, 0.153387, 0.881145, 0.983063, -0.0974492, 0.145199, 0.904255, 0.984432, -0.0925815, 0.136527, 0.926686, 0.985734, -0.0877983, 0.127584, 0.947901, 0.986228, -0.081884, 0.118125, 0.968111, 0.98719, -0.0761208, 0.108594, 0.98719, 0.988228, -0.0698196, 0.0989996, 1.00559, 0.989046, -0.0632739, 0.0890074, 1.02246, 0.990242, -0.056522, 0.0790832, 1.03841, 0.991252, -0.0495272, 0.0689182, 1.05347, 0.992542, -0.0425373, 0.0588592, 1.06724, 0.994096, -0.0353198, 0.0486833, 1.08009, 0.995593, -0.028235, 0.0385977, 1.09177, 0.99711, -0.0209511, 0.0286457, 1.10274, 0.998263, -0.0139289, 0.0188497, 1.11262, 0.999254, -67359e-7, 9208e-6, 1.12191, 0.999967, 141846e-9, -657764e-10, 1.13024, 0.935608, -474692e-11, 0.236466, 187817e-10, 0.93996, -11971e-8, 0.237568, 473646e-9, 0.939959, -478845e-9, 0.237567, 18946e-7, 0.939954, -10774e-7, 0.237566, 426284e-8, 0.939956, -191538e-8, 0.237566, 757842e-8, 0.939954, -299277e-8, 0.237566, 0.0118413, 0.93996, -430961e-8, 0.237567, 0.0170518, 0.939969, -586589e-8, 0.237569, 0.02321, 0.939982, -766166e-8, 0.237572, 0.0303164, 0.939987, -969686e-8, 0.237572, 0.0383711, 0.939997, -0.0119715, 0.237574, 0.0473751, 0.940031, -0.0144858, 0.237581, 0.0573298, 0.940073, -0.0172399, 0.237589, 0.0682366, 0.94012, -0.0202335, 0.237598, 0.080097, 0.940162, -0.0234663, 0.237604, 0.0929116, 0.940237, -0.0269387, 0.237615, 0.106686, 0.940328, -0.0306489, 0.237632, 0.121421, 0.940419, -0.0345917, 0.237645, 0.137115, 0.940522, -0.0387481, 0.237654, 0.153766, 0.940702, -0.0429906, 0.237661, 0.17133, 0.940871, -0.0465089, 0.237561, 0.189502, 0.941103, -0.050531, 0.23748, 0.208616, 0.941369, -0.0550657, 0.237423, 0.228595, 0.941641, -0.0601337, 0.237399, 0.249287, 0.941903, -0.0658804, 0.237443, 0.270467, 0.942224, -0.0722674, 0.237597, 0.292024, 0.942633, -0.0771788, 0.237419, 0.315272, 0.943172, -0.0815623, 0.237068, 0.339579, 0.943691, -0.0863973, 0.236682, 0.364717, 0.944382, -0.0911536, 0.236213, 0.390435, 0.945392, -0.0952967, 0.235562, 0.416425, 0.946185, -0.0998948, 0.234832, 0.442772, 0.947212, -0.104796, 0.234114, 0.469347, 0.948778, -0.10928, 0.233222, 0.496162, 0.950149, -0.113081, 0.231845, 0.523978, 0.951989, -0.115893, 0.230005, 0.552295, 0.953921, -0.11846, 0.227862, 0.580569, 0.955624, -0.12115, 0.225439, 0.608698, 0.958234, -0.123373, 0.222635, 0.636696, 0.960593, -0.124519, 0.219093, 0.665208, 0.963201, -0.124736, 0.214749, 0.693557, 0.965642, -0.125012, 0.210059, 0.721334, 0.968765, -0.124661, 0.204935, 0.748613, 0.971753, -0.122996, 0.198661, 0.776224, 0.973751, -0.120998, 0.191823, 0.802461, 0.976709, -0.118583, 0.184359, 0.828399, 0.977956, -0.115102, 0.176437, 0.853693, 0.979672, -0.111077, 0.167681, 0.877962, 0.981816, -0.10688, 0.158872, 0.901564, 0.98238, -0.101469, 0.149398, 0.924057, 0.983964, -0.0960013, 0.139436, 0.945751, 0.984933, -0.0899626, 0.12943, 0.966272, 0.985694, -0.0832973, 0.11894, 0.985741, 0.986822, -0.0767082, 0.108349, 1.00407, 0.987725, -0.0693614, 0.0976026, 1.02154, 0.98877, -0.06211, 0.086652, 1.03757, 0.990129, -0.0544143, 0.0756182, 1.05296, 0.991337, -0.046744, 0.0645753, 1.06683, 0.992978, -0.0387931, 0.0534683, 1.0798, 0.994676, -0.030973, 0.0424137, 1.09181, 0.99645, -0.0230311, 0.0314035, 1.10286, 0.997967, -0.0152065, 0.0206869, 1.11291, 0.99922, -744837e-8, 0.010155, 1.12237, 1.00002, 240209e-9, -752767e-10, 1.13089, 0.922948, -515351e-11, 0.255626, 186069e-10, 0.928785, -129623e-9, 0.257244, 468009e-9, 0.928761, -51849e-8, 0.257237, 187202e-8, 0.928751, -11666e-7, 0.257235, 421204e-8, 0.928751, -207395e-8, 0.257234, 74881e-7, 0.928754, -324055e-8, 0.257235, 0.0117002, 0.92876, -466639e-8, 0.257236, 0.0168486, 0.928763, -635149e-8, 0.257237, 0.0229334, 0.928774, -829584e-8, 0.257239, 0.029955, 0.928791, -0.0104995, 0.257243, 0.0379139, 0.928804, -0.0129623, 0.257245, 0.0468108, 0.928847, -0.0156846, 0.257255, 0.0566473, 0.92889, -0.0186661, 0.257263, 0.0674246, 0.928924, -0.0219067, 0.257268, 0.0791433, 0.928989, -0.0254066, 0.257282, 0.0918076, 0.92909, -0.0291651, 0.257301, 0.105419, 0.92918, -0.0331801, 0.257316, 0.119978, 0.92929, -0.0374469, 0.257332, 0.135491, 0.929453, -0.041939, 0.257357, 0.151948, 0.929586, -0.0464612, 0.257347, 0.169275, 0.929858, -0.0503426, 0.257269, 0.187257, 0.930125, -0.0548409, 0.257199, 0.206204, 0.930403, -0.0598063, 0.257149, 0.22601, 0.930726, -0.0652437, 0.257122, 0.246561, 0.931098, -0.0712376, 0.257153, 0.267618, 0.931396, -0.0777506, 0.257237, 0.288993, 0.931947, -0.0832374, 0.257124, 0.311527, 0.932579, -0.0883955, 0.25683, 0.335697, 0.933194, -0.0937037, 0.256444, 0.360634, 0.934013, -0.0987292, 0.255939, 0.386126, 0.935307, -0.103215, 0.255282, 0.412018, 0.936374, -0.108234, 0.254538, 0.438292, 0.93776, -0.113234, 0.253728, 0.464805, 0.939599, -0.118013, 0.25275, 0.491464, 0.941036, -0.122661, 0.251404, 0.518751, 0.94337, -0.125477, 0.249435, 0.547133, 0.945318, -0.128374, 0.247113, 0.575456, 0.947995, -0.130996, 0.244441, 0.60372, 0.950818, -0.133438, 0.241352, 0.63174, 0.954378, -0.135004, 0.237849, 0.659971, 0.957151, -0.135313, 0.233188, 0.688478, 0.960743, -0.13521, 0.228001, 0.716767, 0.964352, -0.135007, 0.222249, 0.744349, 0.967273, -0.133523, 0.21542, 0.771786, 0.969767, -0.131155, 0.208039, 0.798639, 0.973195, -0.128492, 0.200076, 0.824774, 0.975557, -0.125094, 0.191451, 0.850222, 0.977692, -0.120578, 0.18184, 0.874761, 0.98026, -0.115882, 0.172102, 0.898497, 0.981394, -0.110372, 0.161859, 0.921636, 0.982386, -0.10415, 0.15108, 0.943467, 0.983783, -0.0978128, 0.140407, 0.964045, 0.98422, -0.0906171, 0.129058, 0.98398, 0.985447, -0.0832921, 0.117614, 1.00276, 0.986682, -0.0754412, 0.10585, 1.02047, 0.987326, -0.0673885, 0.0940943, 1.03678, 0.988707, -0.0592565, 0.0822093, 1.05218, 0.990185, -0.050717, 0.070192, 1.06652, 0.991866, -0.0423486, 0.0582081, 1.07965, 0.993897, -0.0336118, 0.0460985, 1.09188, 0.995841, -0.0252178, 0.0342737, 1.10307, 0.997605, -0.0164893, 0.0224829, 1.11324, 0.999037, -817112e-8, 0.0110647, 1.12262, 1.00003, 291686e-9, -168673e-9, 1.13139, 0.915304, -552675e-11, 0.275999, 183285e-10, 0.91668, -139285e-9, 0.276414, 461914e-9, 0.916664, -55713e-8, 0.276409, 184763e-8, 0.916653, -125354e-8, 0.276406, 415715e-8, 0.916651, -222851e-8, 0.276405, 739053e-8, 0.916655, -348205e-8, 0.276406, 0.0115478, 0.916653, -501414e-8, 0.276405, 0.0166291, 0.916667, -682478e-8, 0.276409, 0.0226346, 0.91668, -891398e-8, 0.276412, 0.0295648, 0.91669, -0.0112817, 0.276413, 0.0374199, 0.916727, -0.013928, 0.276422, 0.0462016, 0.916759, -0.0168528, 0.276429, 0.0559101, 0.916793, -0.0200558, 0.276436, 0.0665466, 0.916849, -0.0235373, 0.276448, 0.0781139, 0.916964, -0.0272973, 0.276474, 0.0906156, 0.917047, -0.0313344, 0.276491, 0.104051, 0.917152, -0.0356465, 0.276511, 0.118424, 0.917286, -0.0402271, 0.276533, 0.133736, 0.917469, -0.0450408, 0.276564, 0.149978, 0.917686, -0.0497872, 0.276563, 0.167057, 0.917953, -0.0540937, 0.276493, 0.184846, 0.918228, -0.0590709, 0.276437, 0.203614, 0.918572, -0.0644277, 0.276398, 0.223212, 0.918918, -0.0702326, 0.276362, 0.243584, 0.919356, -0.076484, 0.276383, 0.264465, 0.919842, -0.0830808, 0.276434, 0.285701, 0.920451, -0.0892972, 0.276407, 0.307559, 0.921113, -0.095016, 0.276128, 0.331501, 0.921881, -0.100771, 0.275754, 0.356207, 0.923027, -0.106029, 0.275254, 0.381477, 0.924364, -0.111029, 0.274595, 0.40722, 0.925818, -0.116345, 0.273841, 0.433385, 0.92746, -0.121424, 0.272913, 0.459848, 0.929167, -0.12657, 0.271837, 0.486493, 0.931426, -0.131581, 0.270575, 0.513432, 0.934001, -0.135038, 0.268512, 0.541502, 0.936296, -0.138039, 0.266135, 0.569658, 0.939985, -0.140687, 0.263271, 0.598375, 0.943516, -0.143247, 0.260058, 0.626563, 0.94782, -0.145135, 0.256138, 0.654711, 0.951023, -0.145733, 0.251154, 0.683285, 0.955338, -0.145554, 0.245562, 0.711831, 0.959629, -0.145008, 0.239265, 0.739573, 0.963123, -0.144003, 0.232064, 0.767027, 0.966742, -0.141289, 0.224036, 0.794359, 0.969991, -0.138247, 0.215305, 0.820361, 0.973403, -0.134786, 0.206051, 0.846548, 0.975317, -0.129966, 0.195914, 0.871541, 0.977647, -0.12471, 0.185184, 0.895313, 0.980137, -0.119086, 0.174161, 0.918398, 0.981031, -0.112297, 0.162792, 0.940679, 0.982037, -0.105372, 0.150952, 0.961991, 0.983164, -0.097821, 0.138921, 0.981913, 0.983757, -0.0897245, 0.126611, 1.00109, 0.985036, -0.0815974, 0.114228, 1.01902, 0.986289, -0.0727725, 0.101389, 1.03604, 0.987329, -0.0639323, 0.0886476, 1.05149, 0.989193, -0.0548109, 0.0756837, 1.06619, 0.990716, -0.045687, 0.0627581, 1.07948, 0.992769, -0.0364315, 0.0498337, 1.09172, 0.99524, -0.0271761, 0.0370305, 1.1033, 0.997154, -0.0179609, 0.0243959, 1.11353, 0.998845, -878063e-8, 0.0119567, 1.12319, 1.00002, 259038e-9, -108146e-9, 1.13177, 0.903945, -591681e-11, 0.295126, 181226e-10, 0.903668, -148672e-9, 0.295037, 455367e-9, 0.903677, -594683e-9, 0.29504, 182145e-8, 0.903673, -133805e-8, 0.295039, 409831e-8, 0.903666, -237872e-8, 0.295036, 728584e-8, 0.903668, -371676e-8, 0.295037, 0.0113842, 0.903679, -535212e-8, 0.29504, 0.0163936, 0.903684, -728479e-8, 0.295041, 0.0223141, 0.903698, -951473e-8, 0.295044, 0.0291462, 0.903718, -0.0120419, 0.295049, 0.0368904, 0.903754, -0.0148664, 0.295058, 0.0455477, 0.903801, -0.017988, 0.29507, 0.0551194, 0.903851, -0.0214064, 0.295082, 0.0656058, 0.903921, -0.0251219, 0.295097, 0.0770109, 0.904002, -0.0291337, 0.295116, 0.0893354, 0.904111, -0.033441, 0.29514, 0.102583, 0.904246, -0.0380415, 0.295169, 0.116755, 0.904408, -0.0429258, 0.295202, 0.131853, 0.904637, -0.0480468, 0.295245, 0.147869, 0.904821, -0.0529208, 0.295214, 0.164658, 0.905163, -0.0577748, 0.295185, 0.182274, 0.905469, -0.0631763, 0.295143, 0.200828, 0.905851, -0.068917, 0.295112, 0.2202, 0.906322, -0.0750861, 0.295104, 0.240372, 0.906761, -0.0815855, 0.295086, 0.261082, 0.90735, -0.0882138, 0.295095, 0.282123, 0.908087, -0.095082, 0.295139, 0.303563, 0.908826, -0.101488, 0.29492, 0.327028, 0.909832, -0.107577, 0.294577, 0.351464, 0.911393, -0.113033, 0.294115, 0.376497, 0.912804, -0.118629, 0.293446, 0.402115, 0.914081, -0.124232, 0.292581, 0.428111, 0.91637, -0.129399, 0.29166, 0.454442, 0.91814, -0.134892, 0.290422, 0.481024, 0.921179, -0.140069, 0.289194, 0.507924, 0.924544, -0.144431, 0.287421, 0.535557, 0.927995, -0.147498, 0.284867, 0.563984, 0.931556, -0.150197, 0.281722, 0.5923, 0.935777, -0.152711, 0.278207, 0.620832, 0.940869, -0.154836, 0.274148, 0.649069, 0.945994, -0.155912, 0.269057, 0.677746, 0.949634, -0.155641, 0.262799, 0.706293, 0.955032, -0.154809, 0.256097, 0.734278, 0.95917, -0.153678, 0.248618, 0.761751, 0.962931, -0.151253, 0.239794, 0.789032, 0.966045, -0.147625, 0.230281, 0.815422, 0.96971, -0.143964, 0.220382, 0.841787, 0.972747, -0.139464, 0.209846, 0.867446, 0.975545, -0.133459, 0.198189, 0.892004, 0.978381, -0.127424, 0.186362, 0.915458, 0.979935, -0.120506, 0.173964, 0.937948, 0.980948, -0.11282, 0.161429, 0.959732, 0.982234, -0.104941, 0.148557, 0.980118, 0.982767, -0.0962905, 0.135508, 0.999463, 0.983544, -0.0873625, 0.122338, 1.01756, 0.984965, -0.0783447, 0.108669, 1.03492, 0.986233, -0.0684798, 0.0949911, 1.05087, 0.987796, -0.0590867, 0.0811386, 1.0656, 0.989885, -0.0489145, 0.0673099, 1.0794, 0.991821, -0.0391, 0.0535665, 1.09174, 0.99448, -0.029087, 0.0397529, 1.10341, 0.996769, -0.019114, 0.0261463, 1.11383, 0.998641, -947007e-8, 0.0128731, 1.1237, 0.999978, 446316e-9, -169093e-9, 1.13253, 0.888362, -627064e-11, 0.312578, 178215e-10, 0.889988, -157791e-9, 0.313148, 448451e-9, 0.889825, -631076e-9, 0.313092, 179356e-8, 0.88984, -141994e-8, 0.313097, 403554e-8, 0.889828, -25243e-7, 0.313092, 717429e-8, 0.889831, -394421e-8, 0.313093, 0.0112099, 0.889831, -567962e-8, 0.313093, 0.0161425, 0.889844, -773051e-8, 0.313096, 0.0219724, 0.889858, -0.0100968, 0.3131, 0.0286999, 0.889882, -0.0127786, 0.313106, 0.0363256, 0.889918, -0.0157757, 0.313116, 0.0448509, 0.889967, -0.0190878, 0.313129, 0.0542758, 0.89003, -0.022715, 0.313145, 0.0646032, 0.890108, -0.0266566, 0.313165, 0.0758339, 0.890218, -0.0309131, 0.313193, 0.0879729, 0.890351, -0.0354819, 0.313226, 0.101019, 0.89051, -0.0403613, 0.313263, 0.114979, 0.890672, -0.0455385, 0.313294, 0.129848, 0.890882, -0.0509444, 0.313333, 0.145616, 0.891189, -0.0559657, 0.313324, 0.162122, 0.891457, -0.0613123, 0.313281, 0.179524, 0.891856, -0.0671488, 0.313281, 0.197855, 0.892312, -0.0732732, 0.313268, 0.216991, 0.892819, -0.0797865, 0.313263, 0.236924, 0.893369, -0.0865269, 0.313247, 0.257433, 0.894045, -0.0931592, 0.313205, 0.278215, 0.894884, -0.100532, 0.313276, 0.299467, 0.895832, -0.107716, 0.313205, 0.322276, 0.897043, -0.114099, 0.312873, 0.34642, 0.898515, -0.119941, 0.312331, 0.371187, 0.900191, -0.126044, 0.311731, 0.396656, 0.90188, -0.131808, 0.310859, 0.422488, 0.904359, -0.137289, 0.309857, 0.448744, 0.906923, -0.142991, 0.308714, 0.475239, 0.910634, -0.148253, 0.307465, 0.501983, 0.914502, -0.153332, 0.305774, 0.529254, 0.919046, -0.156646, 0.303156, 0.557709, 0.923194, -0.159612, 0.299928, 0.586267, 0.928858, -0.162027, 0.296245, 0.614925, 0.934464, -0.164203, 0.291832, 0.643187, 0.939824, -0.165602, 0.286565, 0.671601, 0.944582, -0.165383, 0.280073, 0.700213, 0.949257, -0.164439, 0.272891, 0.728432, 0.954389, -0.162953, 0.264771, 0.756082, 0.958595, -0.161007, 0.255927, 0.78369, 0.962138, -0.157243, 0.245769, 0.810769, 0.966979, -0.152872, 0.235127, 0.836999, 0.969566, -0.148209, 0.22347, 0.862684, 0.972372, -0.142211, 0.211147, 0.887847, 0.975916, -0.135458, 0.198606, 0.911843, 0.978026, -0.128398, 0.185498, 0.934795, 0.979686, -0.120313, 0.17171, 0.956787, 0.980748, -0.11166, 0.158159, 0.978046, 0.981622, -0.103035, 0.144399, 0.997693, 0.982356, -0.0930328, 0.13001, 1.01642, 0.983308, -0.0834627, 0.115778, 1.03366, 0.985037, -0.0732249, 0.101327, 1.05014, 0.986493, -0.0628145, 0.086554, 1.06507, 0.988484, -0.0526556, 0.0720413, 1.07907, 0.991051, -0.0415744, 0.0571151, 1.09189, 0.993523, -0.0314275, 0.0426643, 1.10369, 0.99628, -0.0203603, 0.0279325, 1.11423, 0.998344, -0.0102446, 0.0138182, 1.12421, 0.999997, 42612e-8, -193628e-9, 1.1333, 0.871555, -660007e-11, 0.329176, 174749e-10, 0.875255, -166579e-9, 0.330571, 441051e-9, 0.875644, -666394e-9, 0.330718, 176441e-8, 0.875159, -149903e-8, 0.330536, 396899e-8, 0.87516, -266493e-8, 0.330536, 7056e-6, 0.875158, -416393e-8, 0.330535, 0.0110251, 0.87516, -599598e-8, 0.330535, 0.0158764, 0.875163, -816108e-8, 0.330536, 0.0216101, 0.875174, -0.0106591, 0.330538, 0.0282266, 0.875199, -0.0134899, 0.330545, 0.0357266, 0.875257, -0.0166538, 0.330563, 0.0441117, 0.875304, -0.0201501, 0.330575, 0.0533821, 0.875373, -0.0239785, 0.330595, 0.0635395, 0.875464, -0.0281389, 0.330619, 0.0745872, 0.875565, -0.0326301, 0.330645, 0.0865255, 0.875691, -0.0374516, 0.330676, 0.0993599, 0.875897, -0.0425993, 0.330733, 0.113093, 0.876091, -0.0480576, 0.330776, 0.127722, 0.876353, -0.0537216, 0.330826, 0.143227, 0.876649, -0.0589807, 0.330809, 0.159462, 0.877034, -0.0647865, 0.330819, 0.176642, 0.877443, -0.0709789, 0.330817, 0.194702, 0.877956, -0.0774782, 0.330832, 0.213577, 0.878499, -0.0843175, 0.330822, 0.233246, 0.879144, -0.0912714, 0.330804, 0.253512, 0.879982, -0.0980824, 0.330766, 0.274137, 0.88097, -0.105823, 0.330864, 0.295209, 0.882051, -0.113671, 0.330896, 0.317226, 0.883397, -0.120303, 0.330545, 0.341068, 0.884987, -0.12667, 0.330068, 0.365613, 0.886789, -0.133118, 0.329418, 0.390807, 0.889311, -0.139024, 0.328683, 0.416494, 0.891995, -0.144971, 0.327729, 0.442618, 0.895106, -0.150747, 0.326521, 0.469131, 0.899527, -0.156283, 0.325229, 0.495921, 0.90504, -0.161707, 0.32378, 0.523162, 0.909875, -0.165661, 0.32122, 0.55092, 0.91561, -0.168755, 0.317942, 0.579928, 0.921225, -0.171193, 0.313983, 0.608539, 0.927308, -0.17319, 0.309636, 0.636854, 0.933077, -0.174819, 0.304262, 0.66523, 0.938766, -0.175002, 0.297563, 0.693609, 0.943667, -0.173946, 0.289613, 0.722157, 0.949033, -0.172221, 0.281227, 0.750021, 0.953765, -0.169869, 0.271545, 0.777466, 0.95804, -0.166578, 0.261034, 0.804853, 0.962302, -0.161761, 0.249434, 0.831569, 0.966544, -0.156636, 0.237484, 0.857779, 0.969372, -0.150784, 0.224395, 0.883051, 0.972486, -0.143672, 0.210786, 0.907864, 0.975853, -0.135772, 0.196556, 0.931223, 0.977975, -0.127942, 0.182307, 0.954061, 0.979122, -0.118347, 0.167607, 0.97531, 0.980719, -0.109112, 0.152739, 0.995666, 0.981223, -0.0991789, 0.137932, 1.01475, 0.98216, -0.0883553, 0.122692, 1.03253, 0.983379, -0.0780825, 0.107493, 1.04917, 0.985434, -0.0665646, 0.0917791, 1.06464, 0.987332, -0.0557714, 0.0764949, 1.07896, 0.990004, -0.0442805, 0.060721, 1.09199, 0.992975, -0.0331676, 0.0452284, 1.10393, 0.995811, -0.0219547, 0.0297934, 1.11476, 0.9982, -0.0107613, 0.0146415, 1.12484, 1.00002, 248678e-9, -14555e-8, 1.13413, 0.859519, -693595e-11, 0.347264, 171673e-10, 0.859843, -17503e-8, 0.347394, 433219e-9, 0.859656, -700076e-9, 0.347319, 173277e-8, 0.859671, -157517e-8, 0.347325, 389875e-8, 0.859669, -280028e-8, 0.347324, 693112e-8, 0.85967, -43754e-7, 0.347324, 0.01083, 0.859665, -630049e-8, 0.347321, 0.0155954, 0.859685, -85755e-7, 0.347328, 0.0212278, 0.859694, -0.0112003, 0.347329, 0.0277273, 0.859718, -0.0141747, 0.347336, 0.0350946, 0.85976, -0.0174988, 0.347348, 0.0433314, 0.85982, -0.0211722, 0.347366, 0.0524384, 0.859892, -0.0251941, 0.347387, 0.0624168, 0.860006, -0.0295649, 0.347422, 0.0732708, 0.860122, -0.0342825, 0.347453, 0.0849999, 0.860282, -0.0393462, 0.347499, 0.0976102, 0.860482, -0.0447513, 0.347554, 0.111104, 0.860719, -0.0504775, 0.347614, 0.125479, 0.860998, -0.0563577, 0.347666, 0.140703, 0.861322, -0.0619473, 0.347662, 0.156681, 0.861724, -0.0681277, 0.347684, 0.173597, 0.862198, -0.0746567, 0.347709, 0.191371, 0.862733, -0.0815234, 0.347727, 0.209976, 0.863371, -0.0886643, 0.347744, 0.229351, 0.86414, -0.0957908, 0.347734, 0.24934, 0.865138, -0.102912, 0.34772, 0.269797, 0.866182, -0.110924, 0.3478, 0.290654, 0.867436, -0.119223, 0.347911, 0.312074, 0.869087, -0.126197, 0.347649, 0.335438, 0.870859, -0.133145, 0.347222, 0.359732, 0.872997, -0.139869, 0.346645, 0.38467, 0.875939, -0.146089, 0.345935, 0.41019, 0.879012, -0.152334, 0.345012, 0.436218, 0.883353, -0.15821, 0.343924, 0.462641, 0.888362, -0.164097, 0.342636, 0.489449, 0.895026, -0.169528, 0.341351, 0.516629, 0.900753, -0.174408, 0.339115, 0.544109, 0.906814, -0.17751, 0.335809, 0.572857, 0.912855, -0.180101, 0.331597, 0.601554, 0.919438, -0.182116, 0.32698, 0.630198, 0.925962, -0.183494, 0.321449, 0.658404, 0.931734, -0.184159, 0.314595, 0.686625, 0.93762, -0.18304, 0.306462, 0.71531, 0.943858, -0.181323, 0.297514, 0.744272, 0.948662, -0.178683, 0.287447, 0.771462, 0.953299, -0.175379, 0.276166, 0.798593, 0.957346, -0.170395, 0.263758, 0.8256, 0.962565, -0.165042, 0.251019, 0.852575, 0.966075, -0.158655, 0.237011, 0.878316, 0.969048, -0.151707, 0.222518, 0.90329, 0.972423, -0.143271, 0.207848, 0.927745, 0.975833, -0.134824, 0.192463, 0.950859, 0.977629, -0.125444, 0.1768, 0.972947, 0.978995, -0.114949, 0.161033, 0.993263, 0.980533, -0.104936, 0.145523, 1.01337, 0.980745, -0.0935577, 0.129799, 1.03128, 0.981814, -0.0822956, 0.113486, 1.04825, 0.983943, -0.0710082, 0.0972925, 1.06405, 0.986141, -0.0587931, 0.0808138, 1.0785, 0.988878, -0.0472755, 0.0644915, 1.09204, 0.992132, -0.0349128, 0.0478128, 1.10413, 0.9953, -0.0232407, 0.031621, 1.11527, 0.998117, -0.0112713, 0.0154935, 1.12551, 1.00003, 339743e-9, -195763e-9, 1.13504, 0.845441, -729126e-11, 0.364305, 169208e-10, 0.843588, -183164e-9, 0.363506, 425067e-9, 0.843412, -73253e-8, 0.36343, 169999e-8, 0.843401, -164818e-8, 0.363426, 382495e-8, 0.843399, -293008e-8, 0.363425, 679993e-8, 0.843401, -457822e-8, 0.363425, 0.010625, 0.843394, -659249e-8, 0.363421, 0.0153002, 0.843398, -897282e-8, 0.363421, 0.0208258, 0.843415, -0.0117191, 0.363426, 0.0272024, 0.843438, -0.0148312, 0.363432, 0.0344305, 0.843483, -0.018309, 0.363447, 0.0425116, 0.84356, -0.0221521, 0.363472, 0.0514471, 0.843646, -0.0263597, 0.363499, 0.061238, 0.843743, -0.0309315, 0.363527, 0.0718873, 0.84388, -0.0358658, 0.363569, 0.0833969, 0.844079, -0.0411624, 0.363631, 0.0957742, 0.844279, -0.0468128, 0.363688, 0.109015, 0.844549, -0.0527923, 0.363761, 0.123124, 0.844858, -0.0588204, 0.363817, 0.138044, 0.84522, -0.0647573, 0.36383, 0.153755, 0.845669, -0.0713181, 0.363879, 0.170394, 0.846155, -0.0781697, 0.363908, 0.187861, 0.846789, -0.0853913, 0.363969, 0.206176, 0.847502, -0.0928086, 0.363999, 0.225244, 0.8484, -0.10005, 0.363997, 0.244926, 0.849461, -0.107615, 0.364008, 0.265188, 0.850562, -0.115814, 0.364055, 0.28587, 0.851962, -0.124334, 0.364179, 0.306926, 0.854326, -0.131995, 0.364233, 0.329605, 0.856295, -0.139338, 0.363856, 0.35359, 0.858857, -0.146346, 0.363347, 0.37831, 0.862428, -0.152994, 0.362807, 0.403722, 0.866203, -0.159463, 0.361963, 0.429537, 0.871629, -0.165623, 0.36112, 0.456, 0.877365, -0.171649, 0.359917, 0.482773, 0.883744, -0.177151, 0.35848, 0.509705, 0.890693, -0.182381, 0.356523, 0.537215, 0.897278, -0.186076, 0.3533, 0.565493, 0.903958, -0.188602, 0.349095, 0.594293, 0.910908, -0.190755, 0.344215, 0.623165, 0.918117, -0.192063, 0.338606, 0.651573, 0.924644, -0.192758, 0.331544, 0.679869, 0.931054, -0.192238, 0.323163, 0.708668, 0.937303, -0.190035, 0.313529, 0.737201, 0.943387, -0.187162, 0.303152, 0.764977, 0.948494, -0.183876, 0.29146, 0.792683, 0.952546, -0.178901, 0.277917, 0.819228, 0.958077, -0.173173, 0.264753, 0.846559, 0.962462, -0.16645, 0.25002, 0.872962, 0.966569, -0.159452, 0.234873, 0.898729, 0.969108, -0.15074, 0.218752, 0.923126, 0.973072, -0.141523, 0.202673, 0.947278, 0.975452, -0.132075, 0.186326, 0.969938, 0.977784, -0.121257, 0.169396, 0.991325, 0.97899, -0.110182, 0.153044, 1.01123, 0.979777, -0.0989634, 0.136485, 1.0299, 0.980865, -0.0865894, 0.119343, 1.04727, 0.982432, -0.0746115, 0.102452, 1.06341, 0.984935, -0.0621822, 0.0852423, 1.07834, 0.987776, -0.0495694, 0.0678546, 1.092, 0.99103, -0.0372386, 0.0506917, 1.1043, 0.99474, -0.0244353, 0.0333316, 1.11576, 0.997768, -0.0121448, 0.0164348, 1.12617, 1.00003, 31774e-8, -169504e-9, 1.13598, 0.825551, -756799e-11, 0.378425, 165099e-10, 0.82664, -190922e-9, 0.378923, 416504e-9, 0.826323, -763495e-9, 0.378779, 16656e-7, 0.826359, -171789e-8, 0.378795, 374768e-8, 0.82636, -305402e-8, 0.378795, 666259e-8, 0.826368, -477185e-8, 0.378798, 0.0104104, 0.826364, -687131e-8, 0.378795, 0.0149912, 0.826368, -935232e-8, 0.378795, 0.0204054, 0.826376, -0.0122146, 0.378797, 0.0266532, 0.826399, -0.0154581, 0.378803, 0.0337355, 0.82646, -0.0190825, 0.378824, 0.0416537, 0.826525, -0.0230873, 0.378846, 0.0504091, 0.826614, -0.0274719, 0.378876, 0.0600032, 0.82674, -0.0322355, 0.378917, 0.0704393, 0.826888, -0.0373766, 0.378964, 0.0817195, 0.827078, -0.0428936, 0.379024, 0.0938492, 0.827318, -0.0487778, 0.379099, 0.106828, 0.82764, -0.0549935, 0.379199, 0.120659, 0.827926, -0.0611058, 0.379227, 0.13526, 0.828325, -0.0675054, 0.379275, 0.150713, 0.828801, -0.0743455, 0.379332, 0.167034, 0.8294, -0.0815523, 0.379415, 0.184209, 0.830094, -0.0890779, 0.379495, 0.202203, 0.8309, -0.096736, 0.379555, 0.220945, 0.831943, -0.104135, 0.379577, 0.240306, 0.833037, -0.112106, 0.379604, 0.260317, 0.834278, -0.120554, 0.379668, 0.2808, 0.836192, -0.129128, 0.3799, 0.301654, 0.838671, -0.137541, 0.380109, 0.323502, 0.840939, -0.14523, 0.379809, 0.347176, 0.844575, -0.15248, 0.379593, 0.371706, 0.848379, -0.159607, 0.37909, 0.39688, 0.853616, -0.166267, 0.378617, 0.422702, 0.858921, -0.172698, 0.377746, 0.448919, 0.865324, -0.178823, 0.376749, 0.475661, 0.872207, -0.184542, 0.375363, 0.502599, 0.880018, -0.189836, 0.373657, 0.529914, 0.88694, -0.194294, 0.370673, 0.557683, 0.894779, -0.197022, 0.36662, 0.586848, 0.902242, -0.199108, 0.36138, 0.615831, 0.909914, -0.200398, 0.355434, 0.644478, 0.917088, -0.20094, 0.348173, 0.672905, 0.923888, -0.200671, 0.339482, 0.701327, 0.930495, -0.198773, 0.32956, 0.730101, 0.937247, -0.195394, 0.318363, 0.758383, 0.943108, -0.191956, 0.306323, 0.786539, 0.948296, -0.187227, 0.292576, 0.813637, 0.953472, -0.181165, 0.278234, 0.840793, 0.958485, -0.174119, 0.263054, 0.867712, 0.962714, -0.166564, 0.246756, 0.893635, 0.966185, -0.158181, 0.229945, 0.919028, 0.970146, -0.148275, 0.212633, 0.943413, 0.973491, -0.138157, 0.195229, 0.966627, 0.975741, -0.127574, 0.178048, 0.988817, 0.977238, -0.11554, 0.160312, 1.00924, 0.978411, -0.10364, 0.142857, 1.02845, 0.979811, -0.0913122, 0.125317, 1.04648, 0.98116, -0.0782558, 0.107627, 1.06284, 0.983543, -0.0655957, 0.0895862, 1.07798, 0.986789, -0.0520411, 0.0713756, 1.092, 0.990292, -0.0389727, 0.053228, 1.10484, 0.994187, -0.025808, 0.0351945, 1.11642, 0.997499, -0.0126071, 0.0173198, 1.12703, 0.999999, 275604e-9, -148602e-9, 1.13674, 0.81075, -78735e-10, 0.394456, 161829e-10, 0.808692, -198293e-9, 0.393453, 407564e-9, 0.80846, -792877e-9, 0.39334, 162965e-8, 0.808595, -178416e-8, 0.393407, 366711e-8, 0.808597, -317182e-8, 0.393408, 651934e-8, 0.808598, -495589e-8, 0.393408, 0.0101866, 0.808591, -713627e-8, 0.393403, 0.0146689, 0.808592, -971285e-8, 0.393402, 0.0199667, 0.80861, -0.0126855, 0.393407, 0.0260803, 0.808633, -0.0160538, 0.393413, 0.0330107, 0.80868, -0.0198175, 0.393429, 0.0407589, 0.808748, -0.0239758, 0.393453, 0.0493264, 0.808854, -0.0285286, 0.39349, 0.0587161, 0.808992, -0.0334748, 0.39354, 0.0689304, 0.809141, -0.0388116, 0.393588, 0.0799707, 0.809352, -0.0445375, 0.39366, 0.0918432, 0.809608, -0.0506427, 0.393742, 0.104549, 0.809915, -0.0570708, 0.393834, 0.118085, 0.810253, -0.0633526, 0.393885, 0.132377, 0.810687, -0.0700966, 0.393953, 0.147537, 0.811233, -0.0772274, 0.394047, 0.163543, 0.811865, -0.0847629, 0.394148, 0.180394, 0.812648, -0.0925663, 0.394265, 0.198051, 0.813583, -0.100416, 0.394363, 0.216443, 0.814683, -0.108119, 0.394402, 0.235502, 0.815948, -0.11644, 0.394489, 0.255242, 0.817278, -0.125036, 0.394542, 0.275441, 0.819605, -0.133655, 0.39486, 0.296094, 0.822256, -0.142682, 0.395248, 0.317309, 0.825349, -0.150756, 0.395241, 0.340516, 0.829605, -0.158392, 0.395285, 0.364819, 0.83391, -0.165801, 0.394922, 0.389736, 0.839808, -0.172677, 0.394691, 0.415409, 0.845708, -0.179448, 0.394006, 0.441546, 0.853025, -0.185746, 0.393279, 0.46832, 0.859666, -0.191684, 0.391655, 0.495302, 0.86789, -0.197146, 0.390068, 0.52262, 0.875845, -0.201904, 0.38727, 0.550336, 0.882634, -0.205023, 0.382688, 0.578825, 0.891076, -0.207098, 0.377543, 0.608103, 0.900589, -0.208474, 0.371752, 0.63723, 0.90791, -0.209068, 0.364016, 0.665769, 0.915971, -0.208655, 0.355593, 0.694428, 0.923455, -0.20729, 0.345439, 0.723224, 0.931514, -0.203821, 0.334099, 0.751925, 0.937885, -0.19986, 0.321069, 0.780249, 0.943136, -0.194993, 0.306571, 0.8077, 0.948818, -0.189132, 0.291556, 0.83497, 0.954433, -0.181617, 0.275745, 0.86188, 0.959078, -0.173595, 0.258695, 0.888562, 0.962705, -0.164855, 0.240825, 0.914008, 0.966753, -0.155129, 0.22268, 0.939145, 0.970704, -0.144241, 0.204542, 0.963393, 0.973367, -0.133188, 0.185927, 0.985983, 0.975984, -0.121146, 0.167743, 1.00704, 0.976994, -0.108366, 0.149218, 1.02715, 0.978485, -0.0956746, 0.13131, 1.0455, 0.980074, -0.0820733, 0.112513, 1.06221, 0.98225, -0.0684061, 0.0938323, 1.07782, 0.98553, -0.0549503, 0.0749508, 1.09199, 0.989529, -0.0407857, 0.055848, 1.10508, 0.993536, -0.0271978, 0.0368581, 1.11684, 0.997247, -0.0132716, 0.0181845, 1.12789, 1, 431817e-9, -198809e-9, 1.13792, 0.785886, -812608e-11, 0.405036, 157669e-10, 0.790388, -205278e-9, 0.407355, 398297e-9, 0.790145, -820824e-9, 0.407231, 159263e-8, 0.790135, -184681e-8, 0.407226, 358336e-8, 0.790119, -328316e-8, 0.407218, 637039e-8, 0.790126, -512988e-8, 0.40722, 99539e-7, 0.79013, -738684e-8, 0.407221, 0.0143339, 0.790135, -0.0100538, 0.407221, 0.0195107, 0.790134, -0.0131306, 0.407217, 0.0254848, 0.79016, -0.0166169, 0.407224, 0.0322572, 0.790197, -0.020512, 0.407236, 0.0398284, 0.790273, -0.0248157, 0.407263, 0.0482014, 0.790381, -0.029527, 0.407304, 0.0573777, 0.790521, -0.0346446, 0.407355, 0.0673602, 0.790704, -0.0401665, 0.40742, 0.0781522, 0.790925, -0.0460896, 0.407499, 0.0897582, 0.791195, -0.0524017, 0.407589, 0.10218, 0.791522, -0.0590121, 0.407691, 0.11541, 0.791878, -0.0654876, 0.407748, 0.12939, 0.792361, -0.0725207, 0.407849, 0.144237, 0.792942, -0.0799844, 0.407963, 0.159924, 0.79362, -0.0877896, 0.408087, 0.176425, 0.794529, -0.0958451, 0.408259, 0.193733, 0.795521, -0.103827, 0.408362, 0.211756, 0.796778, -0.111937, 0.408482, 0.230524, 0.798027, -0.120521, 0.408547, 0.249967, 0.799813, -0.129242, 0.408721, 0.269926, 0.802387, -0.138048, 0.409148, 0.290338, 0.805279, -0.147301, 0.409641, 0.311193, 0.809251, -0.155895, 0.410154, 0.333611, 0.813733, -0.163942, 0.410297, 0.357615, 0.819081, -0.171666, 0.410373, 0.382339, 0.825427, -0.178905, 0.410348, 0.407828, 0.83172, -0.185812, 0.409486, 0.434034, 0.83877, -0.192318, 0.408776, 0.460493, 0.845817, -0.198249, 0.407176, 0.487346, 0.854664, -0.204034, 0.405719, 0.514832, 0.863495, -0.208908, 0.403282, 0.542401, 0.871883, -0.212765, 0.399293, 0.570683, 0.88065, -0.214911, 0.393803, 0.599947, 0.89004, -0.216214, 0.387536, 0.62932, 0.898476, -0.216745, 0.379846, 0.658319, 0.906738, -0.216387, 0.370625, 0.687138, 0.914844, -0.215053, 0.360139, 0.71601, 0.923877, -0.212007, 0.348849, 0.745124, 0.931925, -0.207481, 0.335639, 0.773366, 0.938054, -0.202418, 0.320798, 0.801636, 0.943895, -0.196507, 0.304772, 0.829055, 0.949468, -0.189009, 0.288033, 0.856097, 0.955152, -0.180539, 0.270532, 0.88301, 0.959403, -0.171437, 0.251639, 0.909296, 0.963309, -0.161661, 0.232563, 0.934868, 0.967399, -0.150425, 0.213231, 0.959662, 0.972009, -0.138659, 0.194247, 0.98302, 0.97433, -0.126595, 0.174718, 1.00517, 0.975823, -0.113205, 0.155518, 1.02566, 0.976371, -0.0996096, 0.136709, 1.04418, 0.978705, -0.0860754, 0.117571, 1.06146, 0.981477, -0.0714438, 0.0980046, 1.07777, 0.984263, -0.0572304, 0.0782181, 1.09214, 0.988423, -0.0428875, 0.0584052, 1.10553, 0.993, -0.0282442, 0.038522, 1.11758, 0.99704, -0.0140183, 0.0190148, 1.12864, 0.999913, 369494e-9, -145203e-9, 1.13901, 0.777662, -84153e-10, 0.423844, 154403e-10, 0.770458, -211714e-9, 0.419915, 38845e-8, 0.770716, -846888e-9, 0.420055, 155386e-8, 0.770982, -190567e-8, 0.420202, 349653e-8, 0.770981, -338782e-8, 0.420201, 621606e-8, 0.77098, -529338e-8, 0.4202, 971274e-8, 0.770983, -762223e-8, 0.4202, 0.0139867, 0.770985, -0.0103741, 0.420198, 0.0190381, 0.770996, -0.0135489, 0.4202, 0.0248677, 0.771029, -0.0171461, 0.420212, 0.0314764, 0.771052, -0.0211647, 0.420215, 0.0388648, 0.771131, -0.0256048, 0.420245, 0.047036, 0.771235, -0.0304647, 0.420284, 0.0559911, 0.771383, -0.0357436, 0.420341, 0.0657346, 0.771591, -0.0414392, 0.420423, 0.0762694, 0.771819, -0.0475462, 0.420506, 0.0875984, 0.772123, -0.0540506, 0.420617, 0.099727, 0.772464, -0.060797, 0.42072, 0.112637, 0.772855, -0.0675393, 0.420799, 0.126313, 0.773317, -0.0748323, 0.420893, 0.140824, 0.773981, -0.0825681, 0.421058, 0.15617, 0.774746, -0.0906307, 0.421226, 0.172322, 0.77566, -0.0988982, 0.421397, 0.189253, 0.776837, -0.106994, 0.421569, 0.206912, 0.778097, -0.115528, 0.421704, 0.225359, 0.779588, -0.124317, 0.421849, 0.24447, 0.781574, -0.133139, 0.422097, 0.264156, 0.784451, -0.142179, 0.422615, 0.284318, 0.787682, -0.15165, 0.423269, 0.304902, 0.792433, -0.160771, 0.424396, 0.3265, 0.797359, -0.169166, 0.424772, 0.35014, 0.803986, -0.177149, 0.425475, 0.374768, 0.809504, -0.184745, 0.424996, 0.399928, 0.815885, -0.19173, 0.424247, 0.425796, 0.823513, -0.198525, 0.423515, 0.452287, 0.832549, -0.204709, 0.422787, 0.479321, 0.841653, -0.210447, 0.421187, 0.506718, 0.850401, -0.215501, 0.418519, 0.53432, 0.859854, -0.219752, 0.414715, 0.56242, 0.869364, -0.222305, 0.409462, 0.591558, 0.878837, -0.223744, 0.402926, 0.621074, 0.888636, -0.224065, 0.395043, 0.650538, 0.898132, -0.223742, 0.38564, 0.679538, 0.907181, -0.222308, 0.375378, 0.708674, 0.915621, -0.219837, 0.363212, 0.737714, 0.9239, -0.215233, 0.349313, 0.767014, 0.931644, -0.209592, 0.334162, 0.795133, 0.938887, -0.203644, 0.317943, 0.823228, 0.945282, -0.196349, 0.300581, 0.850822, 0.950758, -0.18742, 0.282195, 0.877594, 0.956146, -0.177879, 0.262481, 0.904564, 0.960355, -0.167643, 0.242487, 0.930741, 0.965256, -0.156671, 0.222668, 0.955868, 0.968029, -0.144123, 0.201907, 0.979869, 0.97251, -0.131305, 0.18202, 1.00291, 0.974925, -0.118335, 0.161909, 1.02392, 0.975402, -0.103714, 0.142129, 1.0433, 0.976987, -0.089415, 0.122447, 1.06089, 0.979677, -0.0748858, 0.102248, 1.07713, 0.983184, -0.0596086, 0.0814851, 1.09218, 0.987466, -0.0447671, 0.0609484, 1.10585, 0.992348, -0.0295217, 0.0401835, 1.11829, 0.996674, -0.0143917, 0.0198163, 1.12966, 1.00003, 321364e-9, -149983e-9, 1.1402, 0.757901, -869074e-11, 0.436176, 151011e-10, 0.751195, -217848e-9, 0.432317, 378533e-9, 0.751178, -871373e-9, 0.432307, 15141e-7, 0.751195, -196061e-8, 0.432317, 34068e-7, 0.751198, -348552e-8, 0.432318, 605659e-8, 0.751195, -544599e-8, 0.432315, 946353e-8, 0.751207, -784203e-8, 0.43232, 0.013628, 0.751213, -0.0106732, 0.43232, 0.0185499, 0.751221, -0.0139393, 0.432319, 0.0242302, 0.751244, -0.0176398, 0.432325, 0.0306694, 0.7513, -0.0217743, 0.432348, 0.0378698, 0.751358, -0.0263412, 0.432367, 0.0458321, 0.751458, -0.0313396, 0.432404, 0.0545587, 0.751608, -0.0367682, 0.432464, 0.0640543, 0.7518, -0.0426246, 0.43254, 0.0743222, 0.752065, -0.0489031, 0.432645, 0.0853668, 0.752376, -0.0555828, 0.432762, 0.0971911, 0.752715, -0.0623861, 0.432859, 0.109768, 0.753137, -0.069415, 0.432958, 0.123126, 0.753676, -0.0770039, 0.433099, 0.137308, 0.754345, -0.084971, 0.433272, 0.15229, 0.755235, -0.0932681, 0.433504, 0.168075, 0.756186, -0.10171, 0.433693, 0.184625, 0.757363, -0.110019, 0.433857, 0.201897, 0.75884, -0.11887, 0.434102, 0.220014, 0.760467, -0.127881, 0.434306, 0.238778, 0.762969, -0.136766, 0.434751, 0.258172, 0.765823, -0.14612, 0.43529, 0.278062, 0.769676, -0.15566, 0.436236, 0.298437, 0.774909, -0.165177, 0.437754, 0.319532, 0.77994, -0.17402, 0.438343, 0.342505, 0.785757, -0.182201, 0.438609, 0.366693, 0.792487, -0.190104, 0.438762, 0.391668, 0.80038, -0.197438, 0.438795, 0.417494, 0.808494, -0.204365, 0.438226, 0.443933, 0.817695, -0.210714, 0.437283, 0.470929, 0.828111, -0.216651, 0.436087, 0.498569, 0.837901, -0.221804, 0.433717, 0.526165, 0.847813, -0.226318, 0.430133, 0.554155, 0.858314, -0.229297, 0.425213, 0.582822, 0.868891, -0.230999, 0.418576, 0.612847, 0.878941, -0.231155, 0.410405, 0.642445, 0.888809, -0.230935, 0.400544, 0.672024, 0.898089, -0.229343, 0.389613, 0.701366, 0.908081, -0.226886, 0.377197, 0.730763, 0.916819, -0.222676, 0.363397, 0.759642, 0.924968, -0.216835, 0.347437, 0.788775, 0.932906, -0.210245, 0.32995, 0.817135, 0.940025, -0.202992, 0.312262, 0.844912, 0.946101, -0.19436, 0.293313, 0.872164, 0.952835, -0.184125, 0.273638, 0.899443, 0.957347, -0.173657, 0.252385, 0.926389, 0.961434, -0.162204, 0.231038, 0.951947, 0.965522, -0.14979, 0.209834, 0.976751, 0.969412, -0.136307, 0.188821, 1.00022, 0.973902, -0.122527, 0.168013, 1.02229, 0.974045, -0.108213, 0.147634, 1.04199, 0.975775, -0.0927397, 0.12705, 1.06019, 0.978383, -0.0778212, 0.106309, 1.07711, 0.98211, -0.0621216, 0.0849279, 1.09245, 0.986517, -0.0463847, 0.0633519, 1.10651, 0.991696, -0.0309353, 0.0419698, 1.11903, 0.996349, -0.0150914, 0.0206272, 1.13073, 1.00003, 442449e-9, -231396e-9, 1.14146, 0.727498, -885074e-11, 0.441528, 145832e-10, 0.730897, -223525e-9, 0.443589, 368298e-9, 0.730796, -893996e-9, 0.443528, 147303e-8, 0.730805, -201149e-8, 0.443533, 331433e-8, 0.730814, -357596e-8, 0.443538, 589222e-8, 0.730815, -558734e-8, 0.443538, 920678e-8, 0.730822, -804544e-8, 0.44354, 0.0132582, 0.730836, -0.0109501, 0.443545, 0.0180468, 0.730848, -0.0143008, 0.443546, 0.0235732, 0.730871, -0.0180969, 0.443552, 0.0298382, 0.730915, -0.022338, 0.443567, 0.0368438, 0.730982, -0.0270225, 0.443591, 0.044591, 0.731076, -0.0321491, 0.443627, 0.0530831, 0.731245, -0.0377166, 0.443699, 0.0623243, 0.73144, -0.0437216, 0.443777, 0.0723181, 0.7317, -0.0501576, 0.443881, 0.0830691, 0.732034, -0.0569942, 0.444014, 0.0945809, 0.732388, -0.0638756, 0.444113, 0.106825, 0.732853, -0.071203, 0.444247, 0.119859, 0.733473, -0.0790076, 0.444442, 0.13369, 0.734195, -0.0871937, 0.444645, 0.148304, 0.735069, -0.095696, 0.444877, 0.163702, 0.736169, -0.10426, 0.445133, 0.179861, 0.73747, -0.112853, 0.44537, 0.196778, 0.738991, -0.12199, 0.445651, 0.214496, 0.740865, -0.131153, 0.445958, 0.232913, 0.743637, -0.140245, 0.446548, 0.251977, 0.746797, -0.149722, 0.447246, 0.271551, 0.751517, -0.159341, 0.448656, 0.291774, 0.756156, -0.169106, 0.449866, 0.312455, 0.761519, -0.178436, 0.450919, 0.334552, 0.768295, -0.186904, 0.451776, 0.358491, 0.776613, -0.195117, 0.452832, 0.383446, 0.783966, -0.202695, 0.45249, 0.408945, 0.793542, -0.20985, 0.452587, 0.435364, 0.803192, -0.216403, 0.451852, 0.462336, 0.813892, -0.22251, 0.450708, 0.48987, 0.824968, -0.227676, 0.4486, 0.517697, 0.835859, -0.232443, 0.445156, 0.545975, 0.846825, -0.235775, 0.440351, 0.574483, 0.858085, -0.237897, 0.433641, 0.604246, 0.868825, -0.238074, 0.425354, 0.634101, 0.879638, -0.237661, 0.415383, 0.664201, 0.889966, -0.236186, 0.404136, 0.693918, 0.899479, -0.233599, 0.390917, 0.723481, 0.908769, -0.229737, 0.376352, 0.75258, 0.917966, -0.223836, 0.360372, 0.781764, 0.926304, -0.217067, 0.342551, 0.811139, 0.934626, -0.209309, 0.324238, 0.839585, 0.941841, -0.20071, 0.304484, 0.867044, 0.94789, -0.190602, 0.283607, 0.894579, 0.954196, -0.179253, 0.262205, 0.921743, 0.958383, -0.167646, 0.239847, 0.948026, 0.963119, -0.155073, 0.218078, 0.973296, 0.966941, -0.141426, 0.195899, 0.998135, 0.970836, -0.126849, 0.174121, 1.02021, 0.973301, -0.112296, 0.153052, 1.04085, 0.97448, -0.0964965, 0.131733, 1.05946, 0.977045, -0.080489, 0.10997, 1.07693, 0.980751, -0.064844, 0.0881657, 1.09254, 0.985475, -0.0481938, 0.0657987, 1.10697, 0.991089, -0.0319185, 0.0435215, 1.12004, 0.996122, -0.0158088, 0.0214779, 1.13173, 1.00001, 372455e-9, -200295e-9, 1.14291, 0.708622, -907597e-11, 0.45304, 141962e-10, 0.711162, -228911e-9, 0.454662, 358052e-9, 0.709812, -914446e-9, 0.453797, 143034e-8, 0.709865, -205819e-8, 0.453834, 321935e-8, 0.709864, -365894e-8, 0.453833, 572331e-8, 0.709855, -571692e-8, 0.453826, 894278e-8, 0.709862, -823201e-8, 0.453828, 0.012878, 0.709875, -0.011204, 0.453832, 0.0175295, 0.709896, -0.0146323, 0.453839, 0.0228978, 0.709925, -0.0185163, 0.453847, 0.0289839, 0.709974, -0.0228551, 0.453866, 0.0357894, 0.710045, -0.0276473, 0.453892, 0.0433161, 0.710133, -0.032891, 0.453924, 0.0515665, 0.710292, -0.0385851, 0.453992, 0.0605458, 0.710485, -0.0447254, 0.45407, 0.0702574, 0.710769, -0.0513051, 0.454192, 0.0807077, 0.711106, -0.0582733, 0.454329, 0.091896, 0.711516, -0.0652866, 0.45446, 0.103814, 0.712071, -0.0728426, 0.454653, 0.116508, 0.712676, -0.0808307, 0.45484, 0.129968, 0.713476, -0.0892216, 0.455096, 0.144206, 0.714377, -0.0979047, 0.455346, 0.159212, 0.715579, -0.106531, 0.455647, 0.174973, 0.716977, -0.115492, 0.455961, 0.191504, 0.71862, -0.124821, 0.456315, 0.208835, 0.72084, -0.134079, 0.4568, 0.226869, 0.723786, -0.143427, 0.457521, 0.245582, 0.727464, -0.153061, 0.458475, 0.264957, 0.732771, -0.162768, 0.460239, 0.284948, 0.736515, -0.172627, 0.460899, 0.30522, 0.743519, -0.182487, 0.463225, 0.326717, 0.750041, -0.191295, 0.464027, 0.350113, 0.758589, -0.199746, 0.465227, 0.374782, 0.767703, -0.207584, 0.465877, 0.400226, 0.777484, -0.214973, 0.465996, 0.426442, 0.788792, -0.221796, 0.466019, 0.453688, 0.800194, -0.228038, 0.465083, 0.481246, 0.811234, -0.233346, 0.462506, 0.509086, 0.822859, -0.238073, 0.459257, 0.537338, 0.835082, -0.241764, 0.454863, 0.566108, 0.846332, -0.244241, 0.448163, 0.595126, 0.858355, -0.244736, 0.439709, 0.625574, 0.87034, -0.244278, 0.429837, 0.65617, 0.881027, -0.24255, 0.418002, 0.686029, 0.891007, -0.239912, 0.404325, 0.716039, 0.900874, -0.236133, 0.389222, 0.745518, 0.911072, -0.230672, 0.373269, 0.775026, 0.920359, -0.22356, 0.355083, 0.804521, 0.928604, -0.215591, 0.335533, 0.834045, 0.937175, -0.206503, 0.315278, 0.861612, 0.942825, -0.196684, 0.293653, 0.889131, 0.949805, -0.185116, 0.271503, 0.916853, 0.955535, -0.172703, 0.248821, 0.943541, 0.959843, -0.159978, 0.225591, 0.970132, 0.964393, -0.146375, 0.202719, 0.994709, 0.968008, -0.131269, 0.179928, 1.0186, 0.971013, -0.11569, 0.158007, 1.03928, 0.973334, -0.1003, 0.13624, 1.05887, 0.975775, -0.0833352, 0.1138, 1.07652, 0.979579, -0.0668981, 0.0913141, 1.09297, 0.984323, -0.0500902, 0.0683051, 1.10734, 0.990351, -0.0332377, 0.0451771, 1.12084, 0.995823, -0.0161491, 0.0221705, 1.13296, 1.0001, 234083e-9, -108712e-9, 1.14441, 0.683895, -924677e-11, 0.46015, 137429e-10, 0.68833, -233383e-9, 0.463134, 346865e-9, 0.688368, -933547e-9, 0.463159, 138748e-8, 0.688367, -210049e-8, 0.463159, 312187e-8, 0.688369, -373415e-8, 0.463159, 555004e-8, 0.688377, -583449e-8, 0.463163, 867216e-8, 0.688386, -840128e-8, 0.463166, 0.0124884, 0.688398, -0.0114343, 0.463169, 0.0169993, 0.688418, -0.0149329, 0.463175, 0.0222054, 0.688453, -0.0188964, 0.463188, 0.028108, 0.688515, -0.0233239, 0.463214, 0.0347085, 0.68857, -0.0282136, 0.463231, 0.0420091, 0.688679, -0.033564, 0.463276, 0.0500132, 0.688854, -0.0393733, 0.463356, 0.0587255, 0.689038, -0.0456354, 0.46343, 0.0681476, 0.689321, -0.0523433, 0.463553, 0.0782897, 0.689662, -0.059412, 0.463693, 0.0891501, 0.690188, -0.0665736, 0.4639, 0.100735, 0.690755, -0.0743106, 0.464107, 0.113074, 0.691405, -0.0824722, 0.464329, 0.126161, 0.692198, -0.0910484, 0.464585, 0.140007, 0.693196, -0.0998778, 0.464893, 0.154612, 0.69454, -0.108651, 0.465285, 0.169984, 0.695921, -0.117855, 0.465596, 0.186106, 0.697749, -0.12734, 0.466056, 0.203034, 0.700375, -0.136714, 0.466771, 0.220703, 0.703395, -0.146386, 0.467579, 0.239062, 0.707904, -0.156096, 0.469067, 0.258188, 0.711673, -0.165904, 0.469851, 0.277759, 0.717489, -0.175812, 0.471815, 0.297935, 0.724051, -0.185931, 0.47389, 0.318916, 0.731965, -0.195238, 0.47587, 0.341591, 0.741151, -0.204021, 0.477523, 0.366062, 0.751416, -0.212113, 0.478881, 0.391396, 0.761848, -0.21979, 0.479226, 0.417599, 0.771886, -0.2267, 0.478495, 0.444401, 0.783998, -0.232991, 0.477622, 0.472084, 0.796523, -0.238645, 0.475833, 0.500193, 0.808851, -0.243396, 0.472568, 0.52865, 0.821191, -0.247226, 0.467857, 0.557362, 0.834261, -0.250102, 0.461871, 0.586768, 0.846762, -0.251056, 0.453543, 0.617085, 0.859867, -0.250604, 0.443494, 0.647659, 0.871948, -0.248783, 0.431711, 0.678119, 0.882967, -0.245855, 0.417911, 0.708399, 0.892826, -0.242168, 0.401993, 0.738256, 0.90332, -0.237062, 0.385371, 0.767999, 0.913633, -0.22997, 0.366837, 0.798191, 0.922774, -0.221687, 0.346372, 0.827756, 0.931371, -0.212345, 0.325682, 0.856425, 0.938929, -0.20206, 0.303665, 0.884299, 0.944821, -0.190981, 0.280786, 0.912023, 0.951792, -0.178065, 0.2573, 0.939669, 0.957712, -0.164634, 0.233448, 0.96655, 0.961912, -0.150863, 0.209504, 0.992366, 0.966382, -0.13577, 0.18597, 1.01633, 0.969588, -0.119593, 0.162905, 1.03843, 0.971777, -0.103203, 0.14053, 1.05841, 0.97433, -0.0865888, 0.117909, 1.07632, 0.978686, -0.0690829, 0.0944101, 1.09326, 0.983281, -0.0516568, 0.0705671, 1.10796, 0.989562, -0.034558, 0.0468592, 1.12182, 0.995465, -0.0167808, 0.0229846, 1.1342, 0.999991, 373016e-9, -235606e-9, 1.1459, 0.662251, -939016e-11, 0.468575, 132714e-10, 0.666634, -237624e-9, 0.471675, 335842e-9, 0.666411, -950385e-9, 0.471516, 134321e-8, 0.666399, -213833e-8, 0.471509, 302221e-8, 0.666386, -38014e-7, 0.471499, 537283e-8, 0.666405, -593958e-8, 0.471511, 839533e-8, 0.666406, -855253e-8, 0.471508, 0.0120898, 0.666428, -0.0116401, 0.471519, 0.0164569, 0.666444, -0.0152015, 0.471522, 0.0214971, 0.66649, -0.0192362, 0.471543, 0.027212, 0.666537, -0.0237428, 0.471558, 0.033603, 0.666617, -0.0287198, 0.471591, 0.0406728, 0.666718, -0.0341647, 0.471631, 0.0484238, 0.666889, -0.0400759, 0.47171, 0.0568621, 0.667104, -0.0464479, 0.471805, 0.0659915, 0.667374, -0.0532677, 0.471923, 0.0758178, 0.667772, -0.0603805, 0.472098, 0.0863425, 0.668371, -0.0677392, 0.472363, 0.0975917, 0.668971, -0.0756028, 0.472596, 0.109567, 0.669696, -0.0839293, 0.472869, 0.122272, 0.670481, -0.0926683, 0.473126, 0.135718, 0.6715, -0.1016, 0.473442, 0.149914, 0.672911, -0.110566, 0.47389, 0.164882, 0.674512, -0.119984, 0.474354, 0.180602, 0.67651, -0.129574, 0.474922, 0.19711, 0.679292, -0.139106, 0.475764, 0.214371, 0.682798, -0.148993, 0.476886, 0.232405, 0.686955, -0.158737, 0.478179, 0.251153, 0.691406, -0.168754, 0.479432, 0.270436, 0.697438, -0.178703, 0.481481, 0.290374, 0.704761, -0.188955, 0.484143, 0.311044, 0.713599, -0.198814, 0.487007, 0.333003, 0.723194, -0.207869, 0.488962, 0.357144, 0.732601, -0.216189, 0.489815, 0.382169, 0.744193, -0.22398, 0.490888, 0.408227, 0.754907, -0.231156, 0.490355, 0.434928, 0.767403, -0.23747, 0.489548, 0.462599, 0.78107, -0.243503, 0.488274, 0.490908, 0.793893, -0.248114, 0.484843, 0.519421, 0.807296, -0.25222, 0.4803, 0.548561, 0.820529, -0.255265, 0.474097, 0.577772, 0.833716, -0.256741, 0.466041, 0.607782, 0.848403, -0.25637, 0.456547, 0.638807, 0.860755, -0.254804, 0.443946, 0.670058, 0.874012, -0.251834, 0.430852, 0.700749, 0.885619, -0.247867, 0.414903, 0.731446, 0.896069, -0.242634, 0.397276, 0.761191, 0.906266, -0.236093, 0.378535, 0.791053, 0.916759, -0.227543, 0.358038, 0.821298, 0.92523, -0.21783, 0.335705, 0.850747, 0.93436, -0.207534, 0.313797, 0.879258, 0.941631, -0.195983, 0.289671, 0.907734, 0.947564, -0.183567, 0.265319, 0.935206, 0.953681, -0.169345, 0.240815, 0.962739, 0.960008, -0.154909, 0.216119, 0.989227, 0.964145, -0.140161, 0.192096, 1.01465, 0.968171, -0.123411, 0.167855, 1.03737, 0.969859, -0.106525, 0.144817, 1.05767, 0.972666, -0.0891023, 0.12149, 1.0761, 0.977055, -0.0718094, 0.0975306, 1.09336, 0.982527, -0.0534213, 0.0730217, 1.10878, 0.989001, -0.0355579, 0.0483366, 1.12285, 0.99512, -0.0176383, 0.023938, 1.13548, 1.00007, 368831e-9, -211581e-9, 1.14744, 0.651047, -960845e-11, 0.484101, 12922e-9, 0.644145, -241347e-9, 0.478968, 324578e-9, 0.64396, -965142e-9, 0.478831, 129798e-8, 0.64396, -217154e-8, 0.47883, 292046e-8, 0.643968, -386049e-8, 0.478835, 519202e-8, 0.643974, -603186e-8, 0.478838, 81128e-7, 0.643977, -86854e-7, 0.478836, 0.011683, 0.643982, -0.0118207, 0.478834, 0.0159031, 0.644024, -0.0154374, 0.478856, 0.0207743, 0.644059, -0.0195343, 0.478868, 0.0262975, 0.644122, -0.0241103, 0.478896, 0.0324747, 0.644207, -0.0291638, 0.478933, 0.039309, 0.64432, -0.0346919, 0.478981, 0.0468029, 0.644481, -0.0406919, 0.479053, 0.0549614, 0.644722, -0.047159, 0.479169, 0.0637909, 0.645013, -0.0540748, 0.479302, 0.0732974, 0.645503, -0.0612001, 0.479541, 0.0834898, 0.646117, -0.0687303, 0.479829, 0.0943873, 0.646707, -0.0767846, 0.480061, 0.105991, 0.647431, -0.0852465, 0.480343, 0.11831, 0.64831, -0.0940719, 0.48066, 0.131348, 0.649486, -0.103056, 0.481083, 0.14514, 0.650864, -0.112261, 0.481528, 0.159676, 0.652604, -0.121852, 0.482102, 0.174979, 0.654825, -0.131505, 0.482813, 0.191079, 0.657876, -0.141189, 0.483876, 0.207927, 0.661339, -0.151239, 0.48499, 0.225586, 0.665463, -0.161091, 0.486279, 0.243947, 0.670542, -0.171235, 0.487968, 0.262957, 0.677361, -0.181347, 0.49053, 0.282781, 0.685672, -0.191679, 0.493862, 0.303311, 0.694551, -0.201781, 0.49699, 0.324607, 0.703753, -0.211164, 0.498884, 0.347916, 0.713703, -0.219675, 0.500086, 0.372628, 0.725911, -0.227836, 0.501554, 0.398694, 0.73862, -0.23533, 0.502193, 0.425529, 0.752118, -0.241786, 0.501811, 0.453209, 0.76579, -0.247865, 0.500185, 0.481381, 0.779568, -0.252696, 0.497159, 0.51011, 0.793991, -0.256802, 0.492765, 0.539322, 0.808182, -0.259942, 0.486827, 0.569078, 0.821698, -0.261703, 0.478386, 0.598818, 0.836009, -0.262006, 0.468772, 0.629762, 0.849824, -0.260333, 0.456352, 0.661366, 0.863888, -0.257398, 0.442533, 0.69295, 0.876585, -0.253264, 0.426573, 0.723608, 0.888665, -0.248026, 0.408964, 0.754378, 0.899537, -0.241487, 0.389677, 0.784761, 0.9094, -0.233463, 0.368516, 0.814688, 0.920166, -0.223397, 0.346624, 0.845009, 0.928899, -0.21255, 0.322717, 0.874431, 0.937156, -0.200869, 0.298698, 0.902922, 0.943861, -0.188387, 0.273491, 0.931356, 0.949557, -0.174341, 0.247866, 0.958854, 0.955862, -0.158994, 0.222496, 0.986098, 0.961721, -0.143664, 0.197522, 1.01229, 0.965976, -0.127412, 0.17302, 1.03571, 0.968652, -0.109798, 0.148954, 1.05699, 0.971084, -0.0916787, 0.125044, 1.07587, 0.975584, -0.0739634, 0.100577, 1.09372, 0.98122, -0.055322, 0.0753666, 1.10948, 0.988253, -0.0366825, 0.0498899, 1.12394, 0.99482, -0.0180389, 0.024611, 1.13694, 1.00001, 229839e-9, -188283e-9, 1.14919, 0.613867, -964198e-11, 0.479449, 123452e-10, 0.621485, -244534e-9, 0.485399, 313091e-9, 0.621429, -978202e-9, 0.485353, 125245e-8, 0.62112, -220004e-8, 0.485114, 281687e-8, 0.621119, -39111e-7, 0.485112, 500783e-8, 0.621122, -611091e-8, 0.485112, 782498e-8, 0.621133, -879922e-8, 0.485117, 0.0112687, 0.621152, -0.0119756, 0.485125, 0.0153394, 0.621183, -0.0156396, 0.485139, 0.0200382, 0.621227, -0.0197898, 0.485158, 0.0253663, 0.621298, -0.0244253, 0.485192, 0.0313261, 0.621388, -0.0295441, 0.485233, 0.0379204, 0.621507, -0.0351432, 0.485286, 0.0451523, 0.621693, -0.0412198, 0.485378, 0.0530277, 0.621933, -0.0477673, 0.485495, 0.0615522, 0.622232, -0.0547574, 0.485635, 0.0707316, 0.622809, -0.0619417, 0.485943, 0.0805883, 0.623407, -0.069625, 0.486232, 0.0911267, 0.62406, -0.077796, 0.486516, 0.102354, 0.624835, -0.0863731, 0.486838, 0.114279, 0.625758, -0.095251, 0.487188, 0.126902, 0.627043, -0.104299, 0.487695, 0.140285, 0.628438, -0.113724, 0.488163, 0.154397, 0.630325, -0.123417, 0.488858, 0.169267, 0.632801, -0.133137, 0.489754, 0.184941, 0.635784, -0.143052, 0.490815, 0.20136, 0.639406, -0.153132, 0.492048, 0.218643, 0.643872, -0.163143, 0.49363, 0.236615, 0.6499, -0.17333, 0.496009, 0.255449, 0.657201, -0.183622, 0.498994, 0.275006, 0.666221, -0.194019, 0.502888, 0.295354, 0.674419, -0.204192, 0.505459, 0.316244, 0.683729, -0.21406, 0.507771, 0.33849, 0.695584, -0.222854, 0.510245, 0.363166, 0.708583, -0.231315, 0.512293, 0.389071, 0.721233, -0.238911, 0.512747, 0.415737, 0.735134, -0.245657, 0.512482, 0.443331, 0.750179, -0.251879, 0.511526, 0.471891, 0.765073, -0.256911, 0.508935, 0.500892, 0.779794, -0.261144, 0.504341, 0.530294, 0.794801, -0.264316, 0.498515, 0.560144, 0.810339, -0.266276, 0.491015, 0.590213, 0.824818, -0.266981, 0.481126, 0.620865, 0.839375, -0.265778, 0.468685, 0.652687, 0.853043, -0.262748, 0.453925, 0.684759, 0.867335, -0.258474, 0.437912, 0.716209, 0.88037, -0.253187, 0.419648, 0.747508, 0.891711, -0.246476, 0.39982, 0.77797, 0.902896, -0.238735, 0.37879, 0.808586, 0.913601, -0.22885, 0.355891, 0.838843, 0.923019, -0.217656, 0.331773, 0.869014, 0.933432, -0.205539, 0.307356, 0.898512, 0.939691, -0.192595, 0.281321, 0.9269, 0.946938, -0.178945, 0.255441, 0.955297, 0.952372, -0.163587, 0.229013, 0.983231, 0.95909, -0.147214, 0.203179, 1.00971, 0.963675, -0.13064, 0.17792, 1.03438, 0.968247, -0.113121, 0.152898, 1.05625, 0.97001, -0.0945824, 0.128712, 1.07598, 0.974458, -0.0755648, 0.103349, 1.094, 0.980168, -0.0571998, 0.0776731, 1.1104, 0.987295, -0.0377994, 0.0514445, 1.12491, 0.994432, -0.0186417, 0.025429, 1.13851, 0.999975, 542714e-9, -282356e-9, 1.15108, 0.592656, -980249e-11, 0.486018, 119532e-10, 0.598467, -247275e-9, 0.490781, 301531e-9, 0.597934, -988317e-9, 0.490343, 120517e-8, 0.597903, -222366e-8, 0.490319, 27116e-7, 0.597913, -395315e-8, 0.490327, 482077e-8, 0.597919, -617653e-8, 0.490329, 753264e-8, 0.597936, -889375e-8, 0.490339, 0.0108478, 0.597956, -0.0121043, 0.490347, 0.0147668, 0.597992, -0.0158073, 0.490365, 0.0192905, 0.598032, -0.0200017, 0.490382, 0.0244204, 0.598109, -0.0246865, 0.49042, 0.0301593, 0.598215, -0.0298594, 0.490474, 0.03651, 0.59833, -0.0355167, 0.490524, 0.0434757, 0.598525, -0.0416559, 0.490624, 0.0510629, 0.598778, -0.0482692, 0.490753, 0.0592781, 0.599135, -0.0553114, 0.49094, 0.0681304, 0.599802, -0.062542, 0.491328, 0.0776467, 0.600361, -0.0703638, 0.491598, 0.0878184, 0.60101, -0.0786256, 0.491882, 0.0986573, 0.601811, -0.0872962, 0.492232, 0.11018, 0.602861, -0.0962284, 0.492684, 0.1224, 0.604167, -0.10538, 0.493213, 0.135354, 0.605693, -0.114896, 0.493799, 0.149034, 0.607682, -0.124654, 0.494576, 0.163469, 0.610672, -0.13456, 0.4959, 0.178747, 0.613313, -0.144581, 0.496713, 0.194723, 0.617603, -0.154703, 0.498499, 0.211617, 0.622174, -0.16489, 0.500188, 0.229183, 0.628855, -0.175164, 0.503072, 0.247786, 0.636963, -0.185565, 0.506798, 0.267116, 0.644866, -0.195911, 0.509719, 0.28702, 0.653741, -0.206104, 0.512776, 0.307763, 0.664942, -0.216447, 0.516812, 0.329631, 0.67633, -0.22552, 0.519181, 0.353515, 0.690012, -0.234316, 0.521681, 0.379226, 0.704243, -0.242032, 0.523129, 0.405901, 0.719396, -0.249172, 0.523768, 0.433585, 0.734471, -0.255543, 0.522541, 0.462085, 0.750539, -0.260697, 0.520217, 0.491233, 0.766365, -0.26501, 0.516293, 0.521094, 0.781677, -0.268409, 0.509708, 0.551014, 0.797132, -0.270399, 0.501944, 0.581463, 0.812655, -0.271247, 0.492025, 0.612402, 0.828592, -0.270708, 0.480424, 0.643798, 0.844044, -0.268085, 0.465955, 0.67682, 0.857305, -0.263459, 0.448425, 0.708496, 0.87114, -0.258151, 0.430243, 0.74046, 0.884936, -0.251171, 0.410578, 0.771583, 0.895772, -0.243305, 0.38862, 0.802234, 0.906961, -0.234037, 0.365214, 0.833179, 0.917775, -0.222714, 0.34116, 0.86353, 0.927883, -0.210175, 0.31572, 0.893557, 0.936617, -0.196925, 0.289159, 0.922976, 0.943384, -0.182788, 0.261996, 0.951606, 0.949713, -0.167965, 0.235324, 0.979958, 0.955818, -0.151109, 0.208408, 1.00765, 0.961344, -0.133834, 0.182591, 1.03329, 0.965469, -0.115987, 0.156958, 1.0557, 0.968693, -0.09746, 0.132239, 1.07583, 0.973165, -0.0778514, 0.106195, 1.09451, 0.979387, -0.0585067, 0.0797669, 1.11137, 0.98671, -0.0390409, 0.0530263, 1.12643, 0.994093, -0.019408, 0.0263163, 1.14016, 1.00002, 540029e-9, -194487e-9, 1.15299, 0.574483, -989066e-11, 0.494533, 114896e-10, 0.574478, -249127e-9, 0.494528, 289403e-9, 0.574607, -996811e-9, 0.494637, 115797e-8, 0.574396, -224241e-8, 0.494458, 260498e-8, 0.574377, -398632e-8, 0.49444, 463102e-8, 0.574386, -622836e-8, 0.494445, 723623e-8, 0.574401, -89683e-7, 0.494453, 0.010421, 0.574419, -0.0122056, 0.49446, 0.0141859, 0.574459, -0.0159396, 0.494481, 0.0185322, 0.574525, -0.0201692, 0.49452, 0.0234617, 0.574587, -0.0248924, 0.494547, 0.0289762, 0.574697, -0.0301074, 0.494604, 0.0350797, 0.574853, -0.0358114, 0.494688, 0.0417767, 0.575027, -0.041999, 0.494772, 0.0490718, 0.575294, -0.0486618, 0.494915, 0.0569728, 0.575733, -0.0557148, 0.495173, 0.0654955, 0.576356, -0.0630489, 0.495537, 0.0746612, 0.576944, -0.0709285, 0.495836, 0.0844615, 0.57765, -0.0792723, 0.496177, 0.0949142, 0.578491, -0.0880167, 0.496563, 0.10603, 0.579639, -0.0969462, 0.497096, 0.117841, 0.580989, -0.10622, 0.497684, 0.130367, 0.582587, -0.115861, 0.498337, 0.143609, 0.584951, -0.125605, 0.499414, 0.157625, 0.587602, -0.135608, 0.500518, 0.172413, 0.59076, -0.145742, 0.501767, 0.187999, 0.594992, -0.155934, 0.503542, 0.20445, 0.600656, -0.166303, 0.506135, 0.221764, 0.607816, -0.176681, 0.509542, 0.24002, 0.61522, -0.187071, 0.51263, 0.258992, 0.623702, -0.197465, 0.516021, 0.278773, 0.634192, -0.207816, 0.520422, 0.299377, 0.644936, -0.218183, 0.524073, 0.320802, 0.657888, -0.2278, 0.528049, 0.34384, 0.670666, -0.236747, 0.52986, 0.36916, 0.685626, -0.24484, 0.531892, 0.395867, 0.701304, -0.252071, 0.532727, 0.423488, 0.717727, -0.258714, 0.532146, 0.452201, 0.733914, -0.264211, 0.529883, 0.481579, 0.750529, -0.26859, 0.5259, 0.511558, 0.76747, -0.272046, 0.51999, 0.542042, 0.785189, -0.274225, 0.513083, 0.572799, 0.800954, -0.275189, 0.502936, 0.603816, 0.816962, -0.274946, 0.490921, 0.635461, 0.83336, -0.272695, 0.47684, 0.6676, 0.848143, -0.268223, 0.459405, 0.70051, 0.861818, -0.262768, 0.440319, 0.732902, 0.876828, -0.255872, 0.420123, 0.765084, 0.889312, -0.247703, 0.398379, 0.796391, 0.900412, -0.238381, 0.374496, 0.827333, 0.912251, -0.227783, 0.349874, 0.858385, 0.921792, -0.214832, 0.323181, 0.888652, 0.931273, -0.200949, 0.296624, 0.917763, 0.940295, -0.186537, 0.269211, 0.947878, 0.946812, -0.171538, 0.241447, 0.977016, 0.953588, -0.155254, 0.213829, 1.00501, 0.958841, -0.137156, 0.186807, 1.03179, 0.963746, -0.118699, 0.160706, 1.05502, 0.966468, -0.0998358, 0.135504, 1.07568, 0.971178, -0.0805186, 0.109131, 1.09479, 0.97831, -0.0599348, 0.0818293, 1.1123, 0.985886, -0.0399661, 0.0545872, 1.12771, 0.994021, -0.0198682, 0.0269405, 1.14186, 1.00009, 271022e-9, -12989e-8, 1.15514, 0.538716, -990918e-11, 0.486732, 109675e-10, 0.550656, -250642e-9, 0.497518, 277412e-9, 0.55057, -100265e-8, 0.497441, 110974e-8, 0.550903, -225672e-8, 0.497733, 249779e-8, 0.550568, -401046e-8, 0.497438, 443906e-8, 0.550574, -626613e-8, 0.49744, 693637e-8, 0.550591, -90226e-7, 0.497449, 998921e-8, 0.550623, -0.0122795, 0.497469, 0.0135984, 0.550667, -0.0160361, 0.497495, 0.0177654, 0.550724, -0.0202908, 0.497526, 0.0224915, 0.550792, -0.0250421, 0.497557, 0.0277795, 0.550918, -0.0302878, 0.49763, 0.0336334, 0.551058, -0.0360241, 0.497701, 0.0400573, 0.551276, -0.0422473, 0.497824, 0.0470585, 0.551551, -0.0489441, 0.497977, 0.0546433, 0.552074, -0.0559596, 0.498312, 0.0628367, 0.552681, -0.0633978, 0.498679, 0.071646, 0.553324, -0.0713176, 0.499031, 0.0810746, 0.554011, -0.0797268, 0.499365, 0.091129, 0.55488, -0.0885238, 0.499779, 0.101837, 0.556171, -0.0974417, 0.500444, 0.113239, 0.557498, -0.106841, 0.501025, 0.125316, 0.559299, -0.116533, 0.501864, 0.138128, 0.561647, -0.126298, 0.502967, 0.151695, 0.564347, -0.136388, 0.504129, 0.16604, 0.567863, -0.146576, 0.505713, 0.181207, 0.572569, -0.156832, 0.507953, 0.197259, 0.578919, -0.167323, 0.511186, 0.214258, 0.585387, -0.177712, 0.514042, 0.232038, 0.593134, -0.188184, 0.517484, 0.250733, 0.603295, -0.198717, 0.522345, 0.270454, 0.613854, -0.209177, 0.526751, 0.290807, 0.626092, -0.219644, 0.531595, 0.312202, 0.637868, -0.229494, 0.534721, 0.334435, 0.652458, -0.238718, 0.538304, 0.359184, 0.666985, -0.247061, 0.539875, 0.385637, 0.683301, -0.254652, 0.541042, 0.41328, 0.69998, -0.261376, 0.540735, 0.441903, 0.717824, -0.267085, 0.539139, 0.471609, 0.734617, -0.271465, 0.534958, 0.501446, 0.753663, -0.27528, 0.53032, 0.532571, 0.770512, -0.277617, 0.522134, 0.563641, 0.787356, -0.278525, 0.51206, 0.595067, 0.806252, -0.278512, 0.50119, 0.627226, 0.822061, -0.277023, 0.486791, 0.659402, 0.838959, -0.273175, 0.470467, 0.692874, 0.85379, -0.267238, 0.450688, 0.725702, 0.868268, -0.260327, 0.429741, 0.75832, 0.881994, -0.251946, 0.407223, 0.790189, 0.893885, -0.242432, 0.383214, 0.821625, 0.905118, -0.231904, 0.357297, 0.853011, 0.916045, -0.219545, 0.330733, 0.883773, 0.927614, -0.205378, 0.303916, 0.914435, 0.936005, -0.190388, 0.275941, 0.944502, 0.944533, -0.1749, 0.247493, 0.974439, 0.950758, -0.158588, 0.218996, 1.00286, 0.957078, -0.141027, 0.191559, 1.0304, 0.962448, -0.121507, 0.164457, 1.05466, 0.964993, -0.102068, 0.138636, 1.0761, 0.970017, -0.0822598, 0.111861, 1.09541, 0.97661, -0.062033, 0.0843438, 1.11317, 0.985073, -0.0409832, 0.0558496, 1.12911, 0.993515, -0.020146, 0.0275331, 1.1438, 1.00006, 27329e-8, -107883e-9, 1.15736, 0.525324, -999341e-11, 0.498153, 105385e-10, 0.526513, -251605e-9, 0.499277, 265329e-9, 0.526517, -100641e-8, 0.499282, 10613e-7, 0.526588, -226466e-8, 0.499337, 238823e-8, 0.526539, -40255e-7, 0.499302, 424535e-8, 0.526547, -628954e-8, 0.499306, 663364e-8, 0.526561, -905628e-8, 0.499313, 955337e-8, 0.526593, -0.0123253, 0.499334, 0.0130054, 0.526642, -0.0160957, 0.499365, 0.0169911, 0.5267, -0.0203661, 0.499396, 0.0215122, 0.526792, -0.0251347, 0.499451, 0.0265718, 0.526904, -0.0303985, 0.499511, 0.0321732, 0.527079, -0.0361554, 0.499617, 0.0383231, 0.527285, -0.0423982, 0.499731, 0.045026, 0.527602, -0.0491121, 0.499924, 0.0522936, 0.528166, -0.0561127, 0.500306, 0.0601528, 0.52879, -0.0635988, 0.5007, 0.0686059, 0.529421, -0.071581, 0.501048, 0.0776518, 0.530144, -0.0799854, 0.501421, 0.0873148, 0.531062, -0.0888032, 0.501884, 0.0976084, 0.532374, -0.0977643, 0.50259, 0.108588, 0.533828, -0.107197, 0.50329, 0.120234, 0.53581, -0.116887, 0.504312, 0.132602, 0.538063, -0.126755, 0.505365, 0.145721, 0.5409, -0.136819, 0.506668, 0.159617, 0.544882, -0.147117, 0.508731, 0.174369, 0.550238, -0.157446, 0.511601, 0.190028, 0.556038, -0.167988, 0.514431, 0.206587, 0.563031, -0.178364, 0.517808, 0.224046, 0.571543, -0.189007, 0.521937, 0.242503, 0.582255, -0.199546, 0.527415, 0.261977, 0.59272, -0.210084, 0.531682, 0.282162, 0.605648, -0.220448, 0.537123, 0.303426, 0.61785, -0.230593, 0.540664, 0.325323, 0.632223, -0.240238, 0.544467, 0.348993, 0.648819, -0.24887, 0.547594, 0.375462, 0.665825, -0.256657, 0.54912, 0.403024, 0.683389, -0.263711, 0.549294, 0.431773, 0.701495, -0.269666, 0.547649, 0.461494, 0.719197, -0.274169, 0.543786, 0.491623, 0.737906, -0.278124, 0.538644, 0.522994, 0.756652, -0.280632, 0.531057, 0.554775, 0.775279, -0.281741, 0.521972, 0.586441, 0.792688, -0.281652, 0.509613, 0.618596, 0.811894, -0.280345, 0.496497, 0.651462, 0.827938, -0.277128, 0.47968, 0.684023, 0.844837, -0.271646, 0.460688, 0.718024, 0.859239, -0.264397, 0.438872, 0.751207, 0.874088, -0.256144, 0.41577, 0.784232, 0.887693, -0.246311, 0.391369, 0.816191, 0.899402, -0.235497, 0.365872, 0.847828, 0.910973, -0.223631, 0.338618, 0.87934, 0.92204, -0.209874, 0.310803, 0.910325, 0.930987, -0.194265, 0.281802, 0.940695, 0.94, -0.178125, 0.252836, 0.970958, 0.948018, -0.161479, 0.224239, 1.00078, 0.955141, -0.144038, 0.195857, 1.0288, 0.960513, -0.124915, 0.168487, 1.05371, 0.963964, -0.104284, 0.141495, 1.07596, 0.968713, -0.0838732, 0.114437, 1.09628, 0.975524, -0.0635579, 0.0863105, 1.11448, 0.98431, -0.042291, 0.0574774, 1.13069, 0.992916, -0.0209131, 0.0284343, 1.14568, 0.999926, 743097e-9, -379265e-9, 1.15955, 0.501042, -998428e-11, 0.498726, 100306e-10, 0.502992, -252112e-9, 0.500665, 253283e-9, 0.502417, -100791e-8, 0.500092, 101259e-8, 0.502965, -226919e-8, 0.500621, 227978e-8, 0.502318, -403109e-8, 0.499994, 405011e-8, 0.502333, -629832e-8, 0.500005, 632868e-8, 0.502362, -906907e-8, 0.500027, 911446e-8, 0.502369, -0.0123423, 0.500023, 0.0124078, 0.50243, -0.0161178, 0.500066, 0.016211, 0.502493, -0.0203937, 0.500103, 0.0205256, 0.502592, -0.0251684, 0.500166, 0.0253548, 0.502707, -0.0304389, 0.50023, 0.0307029, 0.502881, -0.0362015, 0.500335, 0.0365753, 0.503124, -0.0424507, 0.500488, 0.0429798, 0.503443, -0.0491582, 0.500686, 0.0499268, 0.504083, -0.0561476, 0.501155, 0.0574541, 0.504668, -0.0636846, 0.501524, 0.0655408, 0.505319, -0.0716834, 0.501904, 0.0742072, 0.50609, -0.0800925, 0.502321, 0.0834699, 0.507122, -0.0888425, 0.502896, 0.0933603, 0.508414, -0.097855, 0.503603, 0.10391, 0.509955, -0.107304, 0.504416, 0.115113, 0.512061, -0.116921, 0.505565, 0.127054, 0.514419, -0.12689, 0.506732, 0.139709, 0.517529, -0.136934, 0.508338, 0.153173, 0.522085, -0.147327, 0.510987, 0.167528, 0.526986, -0.157612, 0.513527, 0.182708, 0.533122, -0.168213, 0.516717, 0.198881, 0.540807, -0.178688, 0.520832, 0.215986, 0.550687, -0.189511, 0.52632, 0.234335, 0.560567, -0.199998, 0.531009, 0.253375, 0.571698, -0.210652, 0.535839, 0.273499, 0.584364, -0.220917, 0.541091, 0.294355, 0.599066, -0.23137, 0.546875, 0.316525, 0.614148, -0.241206, 0.551306, 0.339671, 0.631157, -0.250379, 0.555187, 0.36531, 0.647919, -0.258397, 0.556595, 0.392767, 0.666112, -0.265528, 0.556949, 0.421397, 0.686158, -0.271827, 0.556617, 0.451433, 0.704838, -0.27674, 0.552975, 0.482131, 0.723957, -0.280733, 0.547814, 0.513458, 0.74262, -0.283359, 0.53997, 0.545446, 0.762009, -0.284541, 0.530422, 0.57775, 0.781314, -0.284507, 0.518546, 0.610434, 0.799116, -0.283309, 0.504178, 0.643178, 0.817604, -0.280378, 0.48843, 0.676248, 0.83459, -0.275619, 0.469457, 0.709698, 0.850974, -0.26856, 0.447698, 0.744245, 0.866747, -0.260094, 0.424791, 0.777695, 0.881412, -0.249929, 0.399913, 0.810392, 0.8936, -0.239137, 0.37308, 0.842872, 0.905943, -0.226818, 0.345705, 0.874677, 0.916408, -0.213699, 0.31706, 0.906257, 0.927215, -0.198428, 0.288444, 0.936881, 0.935625, -0.181643, 0.258329, 0.96795, 0.944076, -0.164386, 0.228488, 0.998216, 0.951229, -0.146339, 0.199763, 1.02689, 0.958793, -0.127709, 0.172153, 1.0535, 0.963219, -0.107244, 0.144989, 1.07646, 0.967562, -0.0857764, 0.11685, 1.09675, 0.974866, -0.0645377, 0.0880571, 1.11576, 0.983353, -0.0431732, 0.0587352, 1.13227, 0.992503, -0.0218356, 0.0294181, 1.1478, 1.00003, 605203e-9, -231013e-9, 1.16207, 0.482935, -101177e-10, 0.504695, 968142e-11, 0.477554, -251521e-9, 0.499071, 240676e-9, 0.477904, -100683e-8, 0.499436, 96342e-8, 0.478368, -226636e-8, 0.499899, 21687e-7, 0.477977, -402719e-8, 0.499513, 385384e-8, 0.477993, -629226e-8, 0.499525, 60221e-7, 0.478011, -906011e-8, 0.499536, 867289e-8, 0.478051, -0.0123305, 0.499566, 0.0118074, 0.478089, -0.016102, 0.499587, 0.0154269, 0.478171, -0.0203736, 0.499645, 0.0195341, 0.478254, -0.025143, 0.499692, 0.0241318, 0.47839, -0.0304071, 0.499779, 0.0292247, 0.478588, -0.0361631, 0.499911, 0.0348196, 0.478812, -0.0424023, 0.500046, 0.0409231, 0.479208, -0.0490724, 0.500326, 0.047552, 0.479841, -0.0560722, 0.500805, 0.0547377, 0.480392, -0.0636125, 0.501152, 0.0624607, 0.481068, -0.0716134, 0.501561, 0.0707473, 0.481898, -0.0800062, 0.502054, 0.0796118, 0.483022, -0.0886568, 0.502728, 0.0890974, 0.484332, -0.0977553, 0.503479, 0.0992099, 0.486126, -0.107173, 0.504546, 0.10999, 0.488066, -0.11677, 0.50557, 0.121476, 0.490521, -0.126725, 0.506849, 0.133672, 0.494232, -0.136793, 0.50911, 0.146731, 0.498302, -0.147116, 0.511345, 0.160577, 0.503565, -0.157446, 0.514344, 0.175335, 0.510902, -0.168121, 0.518824, 0.191207, 0.519263, -0.178799, 0.523666, 0.208058, 0.528204, -0.189407, 0.528296, 0.225875, 0.538854, -0.200145, 0.533724, 0.244782, 0.551278, -0.210701, 0.539833, 0.264753, 0.565222, -0.221303, 0.546131, 0.285745, 0.579403, -0.231688, 0.551496, 0.307592, 0.595469, -0.241718, 0.556809, 0.330582, 0.610929, -0.250992, 0.559641, 0.354995, 0.629433, -0.259602, 0.562379, 0.382471, 0.648504, -0.267038, 0.563676, 0.411126, 0.66756, -0.273388, 0.562092, 0.440924, 0.689143, -0.278788, 0.560807, 0.472118, 0.709056, -0.282783, 0.555701, 0.503774, 0.729855, -0.285836, 0.548698, 0.536364, 0.748954, -0.287078, 0.538544, 0.56895, 0.768373, -0.287133, 0.526711, 0.601991, 0.78827, -0.285839, 0.512511, 0.635403, 0.807465, -0.283238, 0.496323, 0.668797, 0.825194, -0.27906, 0.477638, 0.702584, 0.842203, -0.272286, 0.456253, 0.736393, 0.857749, -0.263854, 0.432412, 0.77096, 0.874799, -0.253943, 0.407806, 0.80489, 0.887497, -0.24237, 0.38033, 0.83771, 0.89966, -0.230278, 0.352446, 0.870376, 0.911753, -0.21646, 0.323268, 0.902256, 0.923011, -0.202071, 0.294314, 0.933306, 0.932375, -0.185519, 0.264104, 0.965177, 0.940537, -0.167604, 0.234035, 0.996303, 0.948904, -0.149068, 0.20412, 1.0261, 0.955263, -0.129539, 0.175431, 1.05304, 0.960303, -0.109932, 0.148116, 1.07617, 0.965512, -0.0880572, 0.119693, 1.09742, 0.973466, -0.0660548, 0.0901619, 1.11721, 0.98284, -0.0439228, 0.0599875, 1.13436, 0.992216, -0.0219588, 0.0298975, 1.15006, 0.999946, 119402e-9, -208547e-10, 1.16471, 0.447827, -100414e-10, 0.491543, 914833e-11, 0.454778, -251257e-9, 0.499172, 22891e-8, 0.453519, -100342e-8, 0.497787, 914184e-9, 0.45357, -225776e-8, 0.497847, 205701e-8, 0.453578, -401371e-8, 0.497855, 365705e-8, 0.45357, -627107e-8, 0.497841, 571453e-8, 0.453598, -902968e-8, 0.497864, 823019e-8, 0.453627, -0.0122888, 0.497882, 0.0112049, 0.453684, -0.0160475, 0.497923, 0.0146405, 0.453764, -0.0203044, 0.49798, 0.0185394, 0.453866, -0.0250576, 0.498049, 0.0229054, 0.453996, -0.0303028, 0.49813, 0.0277424, 0.454196, -0.0360379, 0.498267, 0.0330587, 0.454457, -0.0422521, 0.498445, 0.0388613, 0.454926, -0.0488393, 0.498812, 0.0451767, 0.455525, -0.0558653, 0.499272, 0.0520153, 0.456074, -0.0633772, 0.499625, 0.0593754, 0.456752, -0.0713606, 0.500049, 0.0672751, 0.457648, -0.07971, 0.500615, 0.0757447, 0.458849, -0.0883032, 0.501399, 0.0848231, 0.46029, -0.0974095, 0.502293, 0.0945135, 0.462, -0.106729, 0.503301, 0.104848, 0.464121, -0.116354, 0.504533, 0.115884, 0.466889, -0.126214, 0.506172, 0.127652, 0.470744, -0.136324, 0.508667, 0.14024, 0.47488, -0.146595, 0.510995, 0.153673, 0.480845, -0.157027, 0.514832, 0.168053, 0.488262, -0.167658, 0.519506, 0.183508, 0.496547, -0.178343, 0.524347, 0.199948, 0.506254, -0.188916, 0.52983, 0.217503, 0.517961, -0.199975, 0.536357, 0.236272, 0.531484, -0.210624, 0.543641, 0.256096, 0.545496, -0.221227, 0.550048, 0.277085, 0.559497, -0.231568, 0.555076, 0.298615, 0.575752, -0.241698, 0.560541, 0.321547, 0.591999, -0.251172, 0.564156, 0.345602, 0.610654, -0.260178, 0.567607, 0.371851, 0.630484, -0.268094, 0.56923, 0.40076, 0.651807, -0.274661, 0.569779, 0.430801, 0.67239, -0.280331, 0.566791, 0.461939, 0.693024, -0.284501, 0.562007, 0.493854, 0.715473, -0.287852, 0.555791, 0.526992, 0.736323, -0.28929, 0.546345, 0.560102, 0.755771, -0.289405, 0.534, 0.593543, 0.775424, -0.2881, 0.519114, 0.627256, 0.795447, -0.285562, 0.502543, 0.661464, 0.815319, -0.281416, 0.484773, 0.695206, 0.831769, -0.275523, 0.463445, 0.729044, 0.849464, -0.267516, 0.440269, 0.764069, 0.866775, -0.257584, 0.415049, 0.799089, 0.881252, -0.245817, 0.388049, 0.831948, 0.894209, -0.233127, 0.35889, 0.865526, 0.906922, -0.219579, 0.329915, 0.89818, 0.919686, -0.204491, 0.300441, 0.930013, 0.929044, -0.188962, 0.269445, 0.962061, 0.938393, -0.171079, 0.238402, 0.994214, 0.94661, -0.15199, 0.208204, 1.02533, 0.953095, -0.131953, 0.178653, 1.0529, 0.958644, -0.111233, 0.150684, 1.0771, 0.963925, -0.0903098, 0.122359, 1.09855, 0.971995, -0.0680505, 0.0923342, 1.11874, 0.981658, -0.0448512, 0.0614195, 1.13635, 0.991649, -0.0221931, 0.0303582, 1.15238, 0.999985, 393403e-9, -111086e-9, 1.16772, 0.396806, -971563e-11, 0.457671, 842355e-11, 0.429186, -249421e-9, 0.495017, 21625e-8, 0.429324, -998052e-9, 0.495173, 865322e-9, 0.429175, -224487e-8, 0.494999, 194637e-8, 0.429129, -399041e-8, 0.494952, 346004e-8, 0.429153, -623476e-8, 0.494974, 540684e-8, 0.429168, -89773e-7, 0.494983, 778714e-8, 0.429207, -0.0122175, 0.495012, 0.0106022, 0.429257, -0.0159542, 0.495047, 0.0138535, 0.429338, -0.0201864, 0.495106, 0.0175443, 0.429431, -0.0249104, 0.495165, 0.0216774, 0.429587, -0.0301252, 0.495279, 0.0262594, 0.429796, -0.0358249, 0.495432, 0.0312968, 0.430065, -0.0419972, 0.495621, 0.0367985, 0.430588, -0.0485144, 0.496061, 0.042798, 0.43113, -0.0555028, 0.496472, 0.0492914, 0.431743, -0.0629852, 0.496904, 0.0562907, 0.432448, -0.0709256, 0.497369, 0.0638056, 0.433414, -0.0791942, 0.498032, 0.071885, 0.434638, -0.0877346, 0.498854, 0.0805517, 0.43611, -0.0968056, 0.499812, 0.0898047, 0.437859, -0.106002, 0.500891, 0.0997142, 0.440017, -0.115648, 0.502198, 0.110289, 0.443236, -0.125427, 0.504389, 0.121644, 0.44697, -0.135492, 0.506809, 0.133769, 0.451689, -0.145746, 0.509858, 0.146787, 0.45811, -0.156219, 0.514247, 0.160793, 0.465305, -0.166834, 0.518816, 0.175791, 0.474085, -0.177546, 0.524331, 0.191906, 0.484808, -0.188262, 0.53104, 0.209199, 0.49732, -0.199346, 0.538511, 0.227825, 0.509693, -0.209951, 0.544554, 0.247269, 0.524367, -0.220533, 0.551616, 0.267978, 0.539228, -0.231082, 0.557368, 0.289672, 0.55644, -0.241342, 0.563782, 0.31268, 0.574204, -0.250964, 0.568851, 0.33651, 0.593388, -0.260306, 0.57312, 0.362219, 0.613358, -0.268667, 0.574916, 0.390322, 0.634512, -0.275591, 0.575053, 0.420478, 0.65563, -0.281328, 0.572404, 0.451614, 0.678265, -0.285948, 0.568893, 0.484112, 0.70011, -0.289408, 0.561878, 0.517348, 0.723005, -0.291328, 0.55359, 0.551355, 0.743744, -0.291418, 0.541099, 0.585109, 0.763949, -0.290252, 0.526489, 0.619487, 0.784186, -0.287648, 0.509496, 0.65404, 0.804304, -0.283782, 0.491484, 0.688649, 0.823629, -0.278067, 0.470517, 0.723133, 0.84094, -0.270588, 0.44705, 0.757163, 0.857852, -0.261188, 0.421252, 0.792816, 0.874934, -0.249313, 0.394191, 0.827248, 0.888709, -0.236492, 0.365359, 0.861074, 0.902589, -0.222185, 0.336016, 0.894417, 0.914201, -0.207314, 0.30527, 0.926825, 0.925978, -0.191146, 0.274532, 0.9595, 0.93512, -0.174135, 0.243393, 0.991583, 0.943656, -0.155231, 0.212414, 1.02356, 0.951719, -0.134403, 0.182005, 1.05239, 0.957164, -0.113023, 0.153043, 1.07754, 0.962656, -0.0914493, 0.124186, 1.09984, 0.970695, -0.0694179, 0.0941654, 1.12, 0.980749, -0.0466199, 0.0629671, 1.13849, 0.991205, -0.0227032, 0.0311146, 1.15494, 0.999884, 632388e-9, -254483e-9, 1.1706, 0.379821, -957289e-11, 0.460637, 789337e-11, 0.405188, -247483e-9, 0.491396, 204064e-9, 0.404796, -989434e-9, 0.490914, 815853e-9, 0.40483, -222607e-8, 0.490949, 183559e-8, 0.40473, -395723e-8, 0.49084, 326332e-8, 0.404731, -618287e-8, 0.490836, 509945e-8, 0.404768, -890258e-8, 0.490871, 734463e-8, 0.404791, -0.0121156, 0.490883, 999992e-8, 0.404857, -0.0158214, 0.490938, 0.0130676, 0.404943, -0.0200178, 0.491004, 0.0165503, 0.405059, -0.0247027, 0.491093, 0.0204521, 0.405213, -0.0298729, 0.491205, 0.0247788, 0.405399, -0.0355226, 0.491333, 0.0295373, 0.405731, -0.0416352, 0.491604, 0.034741, 0.406303, -0.0480807, 0.492116, 0.0404255, 0.406814, -0.0550458, 0.492506, 0.0465732, 0.407404, -0.0624652, 0.492926, 0.0532058, 0.408149, -0.0702958, 0.493442, 0.0603442, 0.409128, -0.0784623, 0.494136, 0.0680297, 0.410408, -0.087007, 0.495054, 0.0762786, 0.411813, -0.0959639, 0.495962, 0.0851046, 0.413735, -0.105075, 0.497257, 0.0945878, 0.416137, -0.114646, 0.498882, 0.104725, 0.41934, -0.124394, 0.501132, 0.11563, 0.423326, -0.134328, 0.503883, 0.127325, 0.428419, -0.14458, 0.50747, 0.139911, 0.43484, -0.154979, 0.511964, 0.153481, 0.442641, -0.165628, 0.517328, 0.168114, 0.452511, -0.176365, 0.524258, 0.183995, 0.463473, -0.187298, 0.531248, 0.200953, 0.475564, -0.198244, 0.538367, 0.219176, 0.488664, -0.208938, 0.545175, 0.238514, 0.504073, -0.219599, 0.553227, 0.259129, 0.520832, -0.230378, 0.560653, 0.280997, 0.538455, -0.240703, 0.567523, 0.303821, 0.55709, -0.250548, 0.573287, 0.327948, 0.576646, -0.259964, 0.577795, 0.353362, 0.596705, -0.268721, 0.580077, 0.380336, 0.618053, -0.276054, 0.58018, 0.4101, 0.640303, -0.282176, 0.578747, 0.44161, 0.662365, -0.286931, 0.574294, 0.474106, 0.684542, -0.290521, 0.567035, 0.507549, 0.707984, -0.292672, 0.558687, 0.541853, 0.730913, -0.293189, 0.547606, 0.576581, 0.752948, -0.292199, 0.533471, 0.61172, 0.773452, -0.289508, 0.516395, 0.646339, 0.794715, -0.285716, 0.497873, 0.682131, 0.814251, -0.280051, 0.476845, 0.716396, 0.833057, -0.272873, 0.453449, 0.751503, 0.84959, -0.263982, 0.427857, 0.786085, 0.867022, -0.252745, 0.400335, 0.821355, 0.882277, -0.239655, 0.371304, 0.85646, 0.895375, -0.225386, 0.340397, 0.890828, 0.909347, -0.209587, 0.310005, 0.923532, 0.921885, -0.193433, 0.2796, 0.956419, 0.932127, -0.176135, 0.247276, 0.989445, 0.941869, -0.157872, 0.216186, 1.02221, 0.949735, -0.137577, 0.185602, 1.05195, 0.956617, -0.115285, 0.155767, 1.07822, 0.961974, -0.0928418, 0.126103, 1.10149, 0.96972, -0.0700592, 0.0956758, 1.12207, 0.98012, -0.0474671, 0.0643269, 1.1408, 0.990825, -0.0238113, 0.0320863, 1.1577, 0.999876, 381574e-9, -812203e-10, 1.17403, 0.367636, -961342e-11, 0.469176, 753287e-11, 0.380377, -244772e-9, 0.485434, 191797e-9, 0.380416, -978857e-9, 0.485475, 767015e-9, 0.380376, -220165e-8, 0.485435, 172522e-8, 0.380419, -391408e-8, 0.485487, 306734e-8, 0.380438, -611549e-8, 0.485505, 479332e-8, 0.380462, -880558e-8, 0.485525, 690391e-8, 0.380496, -0.0119837, 0.485551, 940039e-8, 0.38056, -0.0156487, 0.485605, 0.0122848, 0.38064, -0.0197988, 0.485666, 0.0155601, 0.380767, -0.0244324, 0.48577, 0.0192313, 0.380909, -0.0295444, 0.485871, 0.0233032, 0.381142, -0.0351321, 0.48606, 0.0277861, 0.381472, -0.0411535, 0.486336, 0.0326939, 0.382015, -0.0475408, 0.486833, 0.0380565, 0.382523, -0.0544395, 0.487231, 0.0438615, 0.383129, -0.061784, 0.487683, 0.0501332, 0.383952, -0.0695085, 0.488313, 0.0568996, 0.38498, -0.0775819, 0.489077, 0.0641952, 0.386331, -0.0860443, 0.490113, 0.0720324, 0.387788, -0.0948406, 0.491099, 0.0804379, 0.389808, -0.103899, 0.492566, 0.0894899, 0.39252, -0.113313, 0.494601, 0.0992098, 0.395493, -0.123007, 0.496619, 0.109641, 0.399826, -0.132859, 0.499912, 0.120919, 0.405341, -0.143077, 0.504061, 0.133107, 0.411932, -0.153465, 0.508905, 0.146263, 0.420591, -0.164108, 0.515482, 0.160544, 0.43101, -0.174893, 0.523191, 0.176123, 0.441881, -0.185839, 0.53026, 0.192757, 0.453919, -0.196633, 0.537295, 0.210535, 0.468715, -0.207611, 0.546156, 0.229886, 0.485182, -0.218517, 0.555173, 0.250543, 0.501926, -0.229249, 0.562728, 0.27221, 0.51785, -0.239481, 0.567494, 0.294892, 0.536947, -0.249395, 0.573889, 0.318987, 0.557115, -0.259, 0.578831, 0.344348, 0.577966, -0.268075, 0.582055, 0.371223, 0.599489, -0.276115, 0.583307, 0.399834, 0.62479, -0.282523, 0.583902, 0.431415, 0.647504, -0.287663, 0.57953, 0.464301, 0.670601, -0.291538, 0.573103, 0.498123, 0.693539, -0.293842, 0.563731, 0.532662, 0.717385, -0.294681, 0.553169, 0.567925, 0.741533, -0.293717, 0.539908, 0.603502, 0.762142, -0.291156, 0.521902, 0.639074, 0.783014, -0.28719, 0.502815, 0.674439, 0.805158, -0.281773, 0.482598, 0.710497, 0.823646, -0.274682, 0.458949, 0.7456, 0.841879, -0.266184, 0.433129, 0.781085, 0.859515, -0.255682, 0.406064, 0.816, 0.875335, -0.242849, 0.376509, 0.851074, 0.890147, -0.228329, 0.345502, 0.886473, 0.903144, -0.212491, 0.31428, 0.920751, 0.916618, -0.195695, 0.282994, 0.954606, 0.927953, -0.178267, 0.251091, 0.988402, 0.937414, -0.159549, 0.219107, 1.02141, 0.946823, -0.140022, 0.18896, 1.05167, 0.954651, -0.118154, 0.158667, 1.07819, 0.959955, -0.0946636, 0.128808, 1.1025, 0.96858, -0.0711792, 0.0973787, 1.12391, 0.97938, -0.0475046, 0.0650965, 1.14322, 0.990498, -0.024059, 0.0326267, 1.16077, 0.999844, -512408e-10, 112444e-9, 1.17727, 0.316912, -934977e-11, 0.425996, 695559e-11, 0.356423, -241372e-9, 0.479108, 179562e-9, 0.356272, -965292e-9, 0.478897, 71811e-8, 0.356262, -217182e-8, 0.478894, 161574e-8, 0.356265, -386092e-8, 0.478895, 287261e-8, 0.356278, -60324e-7, 0.478905, 448907e-8, 0.356293, -868565e-8, 0.478914, 646572e-8, 0.356346, -0.0118207, 0.478965, 880438e-8, 0.356395, -0.0154355, 0.479001, 0.0115066, 0.356484, -0.019529, 0.479075, 0.0145762, 0.356609, -0.0240991, 0.47918, 0.018018, 0.356766, -0.0291413, 0.479305, 0.0218379, 0.357009, -0.0346498, 0.479512, 0.0260454, 0.357424, -0.0405462, 0.479909, 0.0306657, 0.357899, -0.0468825, 0.480337, 0.0357054, 0.358424, -0.0536887, 0.480771, 0.0411728, 0.359041, -0.0609416, 0.481242, 0.0470841, 0.359903, -0.0685239, 0.481943, 0.0534831, 0.360932, -0.0764883, 0.482741, 0.0603795, 0.362196, -0.0848364, 0.483688, 0.0678028, 0.363847, -0.0935002, 0.484947, 0.0758086, 0.365972, -0.102471, 0.486588, 0.0844173, 0.368741, -0.111751, 0.488787, 0.0937199, 0.372146, -0.121334, 0.491405, 0.103732, 0.377114, -0.131147, 0.495604, 0.114608, 0.38226, -0.141213, 0.499436, 0.126345, 0.389609, -0.151632, 0.505334, 0.139116, 0.397925, -0.162073, 0.51168, 0.152995, 0.407824, -0.172819, 0.518876, 0.168071, 0.420014, -0.183929, 0.527639, 0.184495, 0.434266, -0.195032, 0.537588, 0.20232, 0.447352, -0.205792, 0.544379, 0.221189, 0.463726, -0.216704, 0.553422, 0.241616, 0.481406, -0.227531, 0.562074, 0.263298, 0.498707, -0.238017, 0.568227, 0.286116, 0.518039, -0.247936, 0.574473, 0.3101, 0.538277, -0.257437, 0.579191, 0.335401, 0.561166, -0.266829, 0.584807, 0.362246, 0.583189, -0.275329, 0.586476, 0.390609, 0.606024, -0.28234, 0.585578, 0.420998, 0.632419, -0.287924, 0.584496, 0.454357, 0.656128, -0.291972, 0.577766, 0.488233, 0.679953, -0.29456, 0.56875, 0.523248, 0.704654, -0.295816, 0.558388, 0.559168, 0.729016, -0.295157, 0.544826, 0.595326, 0.752062, -0.292779, 0.528273, 0.631864, 0.773138, -0.288681, 0.508482, 0.667793, 0.794869, -0.283358, 0.487341, 0.704035, 0.815101, -0.27608, 0.46354, 0.739925, 0.834212, -0.26767, 0.438672, 0.775539, 0.852368, -0.257397, 0.411239, 0.810895, 0.870207, -0.245689, 0.3829, 0.846472, 0.884063, -0.231452, 0.351496, 0.881788, 0.898284, -0.215561, 0.31895, 0.917438, 0.912964, -0.198208, 0.287367, 0.952422, 0.924666, -0.180426, 0.254487, 0.987551, 0.934429, -0.161525, 0.222226, 1.02142, 0.943485, -0.141197, 0.191143, 1.05218, 0.9521, -0.120085, 0.161112, 1.07937, 0.957876, -0.0975881, 0.130982, 1.10403, 0.966943, -0.0726842, 0.0990553, 1.12616, 0.978313, -0.0483705, 0.0662818, 1.14619, 0.990048, -0.0239072, 0.0329243, 1.16413, 0.999984, 461885e-9, -772859e-10, 1.18099, 0.321287, -935049e-11, 0.455413, 659662e-11, 0.332595, -237513e-9, 0.471437, 167562e-9, 0.332729, -949964e-9, 0.471618, 670192e-9, 0.332305, -213618e-8, 0.471028, 150712e-8, 0.332326, -379765e-8, 0.471055, 267959e-8, 0.332344, -593353e-8, 0.471072, 418751e-8, 0.332356, -854349e-8, 0.471077, 603172e-8, 0.332403, -0.0116268, 0.471121, 821362e-8, 0.332461, -0.0151824, 0.47117, 0.0107357, 0.332552, -0.0192088, 0.471251, 0.0136014, 0.332657, -0.0237024, 0.47133, 0.0168152, 0.332835, -0.0286615, 0.471487, 0.0203853, 0.333083, -0.0340765, 0.471708, 0.0243212, 0.333547, -0.0398563, 0.47219, 0.0286518, 0.333989, -0.0460916, 0.472587, 0.0333763, 0.334532, -0.0527897, 0.473054, 0.0385084, 0.335167, -0.0599284, 0.473568, 0.0440638, 0.33608, -0.0673514, 0.474362, 0.0500962, 0.337146, -0.0752237, 0.475231, 0.0566022, 0.338462, -0.083418, 0.476282, 0.0636272, 0.34014, -0.0919382, 0.477615, 0.0712153, 0.342341, -0.100741, 0.479404, 0.079417, 0.345088, -0.109905, 0.481618, 0.0882631, 0.349049, -0.119369, 0.485081, 0.0978851, 0.353939, -0.129033, 0.489317, 0.108336, 0.359893, -0.139038, 0.494309, 0.119698, 0.366945, -0.149411, 0.499983, 0.132024, 0.375814, -0.159843, 0.507185, 0.145558, 0.387112, -0.170664, 0.516392, 0.160433, 0.40023, -0.181897, 0.526519, 0.176648, 0.412555, -0.192785, 0.53423, 0.193922, 0.427023, -0.203663, 0.542741, 0.212662, 0.443685, -0.214695, 0.552066, 0.232944, 0.461499, -0.225561, 0.560762, 0.254495, 0.480975, -0.236257, 0.569421, 0.277531, 0.501, -0.24639, 0.576101, 0.301724, 0.521691, -0.256101, 0.581493, 0.327112, 0.543478, -0.265289, 0.585221, 0.353917, 0.566094, -0.273938, 0.587614, 0.381941, 0.589578, -0.281679, 0.587991, 0.41172, 0.614583, -0.287655, 0.585928, 0.444148, 0.641813, -0.292228, 0.582092, 0.478617, 0.666189, -0.295172, 0.57398, 0.51397, 0.690475, -0.29648, 0.561676, 0.550118, 0.715543, -0.296203, 0.548758, 0.586933, 0.740405, -0.293999, 0.532792, 0.62384, 0.762183, -0.28998, 0.512735, 0.660723, 0.786069, -0.28478, 0.492402, 0.69807, 0.806812, -0.277568, 0.469058, 0.734422, 0.826987, -0.268951, 0.443017, 0.770946, 0.844588, -0.259049, 0.415501, 0.80699, 0.863725, -0.2471, 0.387328, 0.842107, 0.879137, -0.234157, 0.356108, 0.878078, 0.894634, -0.218719, 0.324315, 0.914058, 0.909162, -0.201293, 0.291813, 0.949922, 0.92072, -0.18267, 0.258474, 0.985337, 0.93158, -0.163212, 0.225593, 1.0205, 0.941238, -0.142771, 0.193986, 1.05273, 0.949293, -0.120956, 0.163392, 1.08075, 0.956226, -0.0985743, 0.132934, 1.10559, 0.96546, -0.075118, 0.101255, 1.12823, 0.977403, -0.0497921, 0.0675441, 1.149, 0.989648, -0.0241574, 0.0334681, 1.16765, 1.00001, 5762e-7, -184807e-9, 1.18519, 0.303474, -916603e-11, 0.4542, 61243e-10, 0.308894, -232869e-9, 0.462306, 155592e-9, 0.309426, -931661e-9, 0.463093, 622499e-9, 0.308643, -20949e-7, 0.461933, 139979e-8, 0.308651, -37242e-7, 0.461941, 248874e-8, 0.308662, -581873e-8, 0.46195, 388933e-8, 0.308687, -837818e-8, 0.461974, 560247e-8, 0.308728, -0.0114016, 0.462011, 762948e-8, 0.308789, -0.0148884, 0.462067, 997326e-8, 0.308882, -0.0188369, 0.462151, 0.0126375, 0.309007, -0.0232436, 0.462263, 0.0156271, 0.30918, -0.0281054, 0.462417, 0.0189498, 0.309442, -0.0334065, 0.462667, 0.0226167, 0.309901, -0.0390589, 0.463162, 0.0266614, 0.310331, -0.0452042, 0.463555, 0.0310715, 0.310858, -0.0517735, 0.464019, 0.0358698, 0.311576, -0.0587359, 0.464669, 0.0410848, 0.312436, -0.0660383, 0.465406, 0.0467453, 0.313526, -0.0737266, 0.466339, 0.0528718, 0.314903, -0.0817574, 0.467504, 0.0595039, 0.316814, -0.090167, 0.469226, 0.0666888, 0.318965, -0.0987555, 0.470981, 0.0744658, 0.322077, -0.107792, 0.473814, 0.082912, 0.325947, -0.117098, 0.477241, 0.0920846, 0.331008, -0.126602, 0.48184, 0.102137, 0.337893, -0.136619, 0.488334, 0.113135, 0.345106, -0.146838, 0.494415, 0.12511, 0.355111, -0.157357, 0.503275, 0.138356, 0.365095, -0.167955, 0.510966, 0.152686, 0.378344, -0.179157, 0.521508, 0.16856, 0.391599, -0.190143, 0.530455, 0.18561, 0.407786, -0.20123, 0.541275, 0.204308, 0.425294, -0.212456, 0.551784, 0.224623, 0.444021, -0.223568, 0.561493, 0.246172, 0.463418, -0.234154, 0.569886, 0.268979, 0.484077, -0.244546, 0.577116, 0.293411, 0.505513, -0.254301, 0.582914, 0.318936, 0.527672, -0.263564, 0.587208, 0.345856, 0.550565, -0.272332, 0.589277, 0.374054, 0.573656, -0.280011, 0.588426, 0.403276, 0.59827, -0.286924, 0.587504, 0.43474, 0.624731, -0.291994, 0.583401, 0.468767, 0.652396, -0.295159, 0.576997, 0.504411, 0.67732, -0.296954, 0.565863, 0.54114, 0.703147, -0.296877, 0.552316, 0.57816, 0.728715, -0.295147, 0.536773, 0.616124, 0.752448, -0.291275, 0.51771, 0.653885, 0.775169, -0.285905, 0.496087, 0.691537, 0.799307, -0.279064, 0.474232, 0.729251, 0.819482, -0.270294, 0.447676, 0.766267, 0.837659, -0.260032, 0.419656, 0.802616, 0.856903, -0.248497, 0.391328, 0.838583, 0.873325, -0.235252, 0.360285, 0.874711, 0.889788, -0.221126, 0.329215, 0.91077, 0.904486, -0.204304, 0.296392, 0.94653, 0.917711, -0.185562, 0.262159, 0.983828, 0.928969, -0.165635, 0.229142, 1.01955, 0.939707, -0.14442, 0.19673, 1.05317, 0.948167, -0.122147, 0.165095, 1.0823, 0.955222, -0.099098, 0.13451, 1.10791, 0.964401, -0.0755332, 0.102476, 1.1312, 0.976605, -0.0513817, 0.0689667, 1.15218, 0.989085, -0.0258499, 0.034506, 1.17129, 0.999908, 617773e-9, -271268e-9, 1.18961, 0.285803, -905752e-11, 0.452348, 572272e-11, 0.284689, -22732e-8, 0.450581, 143626e-9, 0.285263, -910214e-9, 0.451482, 575099e-9, 0.285302, -204784e-8, 0.451553, 129395e-8, 0.285318, -364057e-8, 0.451574, 23006e-7, 0.28533, -568813e-8, 0.451585, 359547e-8, 0.285361, -819001e-8, 0.451618, 517934e-8, 0.285397, -0.0111458, 0.45165, 7054e-6, 0.285447, -0.0145536, 0.451688, 922167e-8, 0.285527, -0.0184127, 0.451758, 0.0116869, 0.285688, -0.0227207, 0.451929, 0.0144555, 0.28584, -0.0274712, 0.452055, 0.0175341, 0.286136, -0.0326278, 0.452369, 0.0209406, 0.286574, -0.0381792, 0.452853, 0.0246965, 0.287012, -0.0441879, 0.453272, 0.0287996, 0.287542, -0.0506096, 0.453752, 0.033268, 0.288299, -0.0573634, 0.454488, 0.0381504, 0.289186, -0.0645458, 0.455294, 0.0434447, 0.290302, -0.0720405, 0.456301, 0.0491973, 0.291776, -0.0799046, 0.457648, 0.0554453, 0.29372, -0.088117, 0.459483, 0.0622311, 0.296052, -0.0965328, 0.461571, 0.0695992, 0.299563, -0.105409, 0.465085, 0.077658, 0.30335, -0.114553, 0.468506, 0.0864176, 0.309167, -0.123917, 0.474423, 0.0961078, 0.31529, -0.13381, 0.47995, 0.106643, 0.324163, -0.144021, 0.488592, 0.118322, 0.333272, -0.154382, 0.496461, 0.131133, 0.344224, -0.165015, 0.50562, 0.145208, 0.357733, -0.176168, 0.516719, 0.16073, 0.373046, -0.187468, 0.528513, 0.177807, 0.38788, -0.198488, 0.537713, 0.196072, 0.405133, -0.209545, 0.547999, 0.21605, 0.423845, -0.220724, 0.55759, 0.237484, 0.443777, -0.231518, 0.566246, 0.26039, 0.464824, -0.242035, 0.574326, 0.284835, 0.486635, -0.251898, 0.58037, 0.310518, 0.51012, -0.261304, 0.58568, 0.337678, 0.535301, -0.270384, 0.590197, 0.366242, 0.559193, -0.27841, 0.590569, 0.395873, 0.583544, -0.285325, 0.588161, 0.426857, 0.608834, -0.291113, 0.584249, 0.459477, 0.635753, -0.294882, 0.57763, 0.494734, 0.664367, -0.297088, 0.569479, 0.532023, 0.689688, -0.297364, 0.555064, 0.569629, 0.715732, -0.295949, 0.539522, 0.608124, 0.741307, -0.292259, 0.521613, 0.646231, 0.764949, -0.287063, 0.49969, 0.684938, 0.788599, -0.28012, 0.476747, 0.723548, 0.81048, -0.27153, 0.45116, 0.761135, 0.831372, -0.261289, 0.424101, 0.798916, 0.850092, -0.249559, 0.39443, 0.835952, 0.867777, -0.236348, 0.363849, 0.871606, 0.884632, -0.221569, 0.332477, 0.907843, 0.90047, -0.20618, 0.300667, 0.944187, 0.914524, -0.188771, 0.266552, 0.981371, 0.926892, -0.168362, 0.232349, 1.01841, 0.937951, -0.146761, 0.199359, 1.05308, 0.947236, -0.123813, 0.1675, 1.0839, 0.954367, -0.099984, 0.136166, 1.11047, 0.963907, -0.0759278, 0.103808, 1.13414, 0.976218, -0.0511367, 0.0697061, 1.15575, 0.988772, -0.0267415, 0.0352529, 1.17531, 0.999888, -520778e-9, 289926e-9, 1.19389, 0.263546, -883274e-11, 0.441896, 526783e-11, 0.262352, -221849e-9, 0.439889, 132311e-9, 0.262325, -886683e-9, 0.439848, 528824e-9, 0.26228, -199476e-8, 0.439765, 118975e-8, 0.262372, -354671e-8, 0.439922, 211568e-8, 0.26239, -554141e-8, 0.439941, 330652e-8, 0.262412, -797888e-8, 0.439961, 476346e-8, 0.262453, -0.0108584, 0.440002, 648818e-8, 0.262528, -0.0141788, 0.440085, 84835e-7, 0.262615, -0.017938, 0.440166, 0.0107533, 0.262744, -0.0221346, 0.440291, 0.0133044, 0.262939, -0.026762, 0.440493, 0.0161445, 0.263277, -0.0317573, 0.440889, 0.0192974, 0.26368, -0.0371832, 0.441338, 0.0227699, 0.264106, -0.0430371, 0.441753, 0.0265698, 0.264624, -0.0493035, 0.442227, 0.0307178, 0.265378, -0.0558669, 0.442985, 0.0352616, 0.266253, -0.0628718, 0.443795, 0.0401968, 0.267478, -0.0701569, 0.445008, 0.04559, 0.269062, -0.077845, 0.446599, 0.0514539, 0.270926, -0.0857941, 0.448349, 0.0578382, 0.273693, -0.0940773, 0.451221, 0.0648363, 0.276746, -0.102704, 0.454097, 0.0724389, 0.281693, -0.111735, 0.459517, 0.0808744, 0.287335, -0.121004, 0.46531, 0.0901551, 0.29448, -0.130734, 0.472605, 0.100371, 0.30257, -0.140777, 0.480251, 0.111644, 0.312465, -0.15111, 0.489444, 0.124111, 0.324856, -0.16189, 0.500919, 0.137979, 0.33774, -0.172946, 0.511317, 0.153163, 0.35255, -0.184152, 0.522684, 0.169817, 0.367786, -0.19522, 0.53248, 0.187886, 0.385474, -0.20632, 0.543326, 0.207634, 0.404976, -0.217744, 0.554109, 0.229165, 0.425203, -0.228691, 0.563395, 0.252068, 0.446704, -0.239299, 0.571565, 0.276471, 0.468951, -0.249348, 0.577935, 0.302323, 0.493487, -0.258933, 0.584309, 0.329882, 0.517861, -0.268009, 0.58773, 0.358525, 0.543309, -0.276238, 0.589612, 0.388585, 0.569704, -0.28356, 0.589294, 0.419787, 0.594871, -0.289497, 0.585137, 0.452114, 0.622555, -0.294452, 0.580356, 0.486466, 0.651167, -0.296918, 0.57185, 0.523079, 0.677332, -0.297647, 0.558428, 0.5611, 0.703718, -0.296321, 0.542232, 0.599592, 0.730262, -0.293339, 0.524541, 0.639138, 0.754304, -0.288036, 0.502691, 0.677978, 0.778051, -0.281018, 0.479212, 0.716537, 0.801557, -0.272414, 0.454071, 0.75586, 0.822559, -0.262419, 0.425952, 0.794477, 0.843051, -0.250702, 0.397313, 0.832664, 0.86232, -0.237264, 0.366534, 0.869876, 0.879044, -0.222716, 0.334816, 0.906973, 0.896362, -0.206827, 0.303143, 0.943558, 0.910342, -0.189659, 0.269699, 0.979759, 0.924119, -0.171108, 0.236411, 1.01718, 0.935374, -0.149579, 0.202224, 1.05289, 0.944295, -0.126295, 0.16989, 1.08496, 0.952227, -0.101511, 0.138089, 1.11256, 0.962041, -0.0766392, 0.105053, 1.1375, 0.97528, -0.0511967, 0.070329, 1.15983, 0.988476, -0.025463, 0.0351268, 1.17987, 0.999962, 286808e-10, 145564e-10, 1.19901, 0.227089, -841413e-11, 0.404216, 472707e-11, 0.239725, -215083e-9, 0.426708, 120833e-9, 0.239904, -860718e-9, 0.427028, 483555e-9, 0.239911, -193661e-8, 0.427039, 108806e-8, 0.239914, -344276e-8, 0.42704, 193457e-8, 0.239933, -537907e-8, 0.427064, 302363e-8, 0.239944, -774482e-8, 0.427065, 435604e-8, 0.239993, -0.01054, 0.427122, 593398e-8, 0.240052, -0.0137626, 0.427179, 775987e-8, 0.240148, -0.0174115, 0.427279, 983854e-8, 0.240278, -0.021484, 0.42741, 0.0121763, 0.240472, -0.0259729, 0.427618, 0.0147827, 0.240839, -0.0308131, 0.428086, 0.0176837, 0.241201, -0.0360893, 0.428482, 0.0208775, 0.241626, -0.0417723, 0.428907, 0.0243821, 0.242207, -0.0478337, 0.42952, 0.0282228, 0.24298, -0.0542199, 0.430332, 0.0324333, 0.243881, -0.0610015, 0.431222, 0.0370252, 0.245123, -0.0680874, 0.432512, 0.0420535, 0.24667, -0.0755482, 0.434088, 0.0475414, 0.248779, -0.0832873, 0.436323, 0.0535542, 0.251665, -0.0913546, 0.439509, 0.0601716, 0.255305, -0.0998489, 0.443478, 0.0674282, 0.260049, -0.108576, 0.448713, 0.0754673, 0.266192, -0.117754, 0.455524, 0.084339, 0.273158, -0.127294, 0.4627, 0.0941683, 0.282131, -0.137311, 0.472068, 0.10515, 0.293332, -0.147736, 0.483565, 0.117402, 0.304667, -0.158357, 0.493702, 0.130824, 0.317785, -0.169274, 0.504708, 0.145724, 0.333245, -0.180595, 0.517107, 0.16215, 0.349843, -0.191892, 0.528849, 0.180149, 0.367944, -0.203168, 0.540301, 0.199746, 0.387579, -0.214443, 0.551514, 0.221047, 0.408247, -0.225624, 0.560906, 0.243981, 0.43014, -0.236422, 0.56959, 0.268513, 0.452669, -0.24654, 0.576098, 0.294409, 0.476196, -0.256157, 0.580925, 0.322002, 0.501157, -0.265289, 0.584839, 0.351052, 0.527632, -0.273671, 0.587614, 0.3812, 0.555754, -0.281254, 0.589119, 0.412994, 0.581682, -0.287448, 0.585204, 0.445498, 0.608196, -0.292614, 0.579006, 0.479505, 0.635661, -0.296068, 0.571297, 0.514643, 0.664999, -0.297395, 0.560855, 0.552213, 0.691039, -0.296645, 0.544525, 0.591365, 0.7179, -0.293785, 0.526535, 0.630883, 0.744059, -0.289089, 0.50545, 0.670932, 0.76863, -0.282239, 0.482514, 0.710904, 0.793273, -0.273688, 0.457246, 0.750259, 0.814731, -0.26328, 0.428872, 0.78948, 0.835603, -0.251526, 0.399384, 0.828597, 0.85489, -0.238339, 0.368811, 0.866892, 0.872828, -0.223607, 0.336617, 0.90563, 0.889462, -0.207538, 0.303997, 0.943538, 0.904929, -0.190297, 0.270812, 0.980591, 0.919101, -0.172034, 0.237453, 1.01935, 0.930536, -0.152058, 0.204431, 1.05498, 0.941223, -0.129515, 0.172495, 1.08717, 0.94982, -0.104263, 0.140175, 1.11551, 0.960592, -0.0781944, 0.106465, 1.14098, 0.974629, -0.051688, 0.0711592, 1.16418, 0.98811, -0.0253929, 0.0354432, 1.18465, 1.00004, 804378e-9, -330876e-9, 1.20462, 0.214668, -821282e-11, 0.406619, 433582e-11, 0.218053, -208144e-9, 0.413025, 109887e-9, 0.217987, -832212e-9, 0.412901, 439362e-9, 0.217971, -187246e-8, 0.412876, 988623e-9, 0.217968, -332855e-8, 0.41286, 175772e-8, 0.217985, -520055e-8, 0.412882, 274729e-8, 0.218014, -748814e-8, 0.412916, 395842e-8, 0.218054, -0.0101901, 0.412957, 539274e-8, 0.218106, -0.0133057, 0.413005, 705348e-8, 0.218217, -0.0168342, 0.413139, 894581e-8, 0.218338, -0.0207707, 0.413258, 0.0110754, 0.21855, -0.0251001, 0.413509, 0.0134551, 0.218913, -0.0297861, 0.413992, 0.0161081, 0.219265, -0.0348956, 0.414383, 0.0190307, 0.219696, -0.0403909, 0.414839, 0.0222458, 0.220329, -0.0462003, 0.415567, 0.025792, 0.220989, -0.0524208, 0.41621, 0.0296637, 0.222027, -0.058948, 0.417385, 0.0339323, 0.223301, -0.0658208, 0.418779, 0.0386055, 0.224988, -0.0730347, 0.420665, 0.0437355, 0.227211, -0.0805274, 0.423198, 0.0493844, 0.230131, -0.088395, 0.426566, 0.0556135, 0.233908, -0.0966208, 0.43091, 0.0624829, 0.239092, -0.105223, 0.437148, 0.0701636, 0.245315, -0.11424, 0.444302, 0.0786949, 0.253166, -0.12368, 0.453262, 0.0882382, 0.262374, -0.133569, 0.463211, 0.0988682, 0.273145, -0.143836, 0.474271, 0.110727, 0.285512, -0.154577, 0.4863, 0.123945, 0.299512, -0.165501, 0.498817, 0.138581, 0.314287, -0.176698, 0.510341, 0.154676, 0.331083, -0.188066, 0.522583, 0.172459, 0.349615, -0.199597, 0.534879, 0.191979, 0.369318, -0.210843, 0.546083, 0.21309, 0.390377, -0.222068, 0.5562, 0.235998, 0.412411, -0.233059, 0.564704, 0.260518, 0.435715, -0.24357, 0.572314, 0.286795, 0.461196, -0.253356, 0.579395, 0.314559, 0.485587, -0.262362, 0.581985, 0.343581, 0.511908, -0.270895, 0.584347, 0.374367, 0.539798, -0.278452, 0.58505, 0.406015, 0.567974, -0.284877, 0.583344, 0.439168, 0.594303, -0.290124, 0.577348, 0.473005, 0.622951, -0.294183, 0.570751, 0.508534, 0.652404, -0.296389, 0.561541, 0.544764, 0.679291, -0.296605, 0.546426, 0.582927, 0.706437, -0.294095, 0.528599, 0.622681, 0.734485, -0.28978, 0.508676, 0.663567, 0.758841, -0.283363, 0.484768, 0.704092, 0.78537, -0.275015, 0.460434, 0.745101, 0.807315, -0.264689, 0.432166, 0.784712, 0.8271, -0.252597, 0.401807, 0.824241, 0.849191, -0.239154, 0.371458, 0.863803, 0.867046, -0.224451, 0.338873, 0.903063, 0.8852, -0.208342, 0.306175, 0.942763, 0.901771, -0.190684, 0.272759, 0.981559, 0.915958, -0.172105, 0.239306, 1.02048, 0.928046, -0.152214, 0.206071, 1.05765, 0.939961, -0.130247, 0.17367, 1.08999, 0.948711, -0.10672, 0.142201, 1.11829, 0.959305, -0.0808688, 0.108454, 1.14467, 0.973009, -0.0539145, 0.0728109, 1.16839, 0.987631, -0.0262947, 0.0360625, 1.19004, 0.999978, 132758e-8, -559424e-9, 1.21058, 0.193925, -793421e-11, 0.391974, 392537e-11, 0.196746, -200315e-9, 0.397675, 991033e-10, 0.19667, -801099e-9, 0.397521, 396342e-9, 0.196633, -180246e-8, 0.397445, 891829e-9, 0.196654, -320443e-8, 0.397482, 158582e-8, 0.196659, -500647e-8, 0.39748, 247867e-8, 0.196683, -72086e-7, 0.397506, 357167e-8, 0.196728, -981001e-8, 0.397562, 486675e-8, 0.196792, -0.0128096, 0.397633, 636707e-8, 0.19689, -0.0162055, 0.397746, 807752e-8, 0.197017, -0.0199943, 0.397884, 0.0100052, 0.19729, -0.024139, 0.39827, 0.0121691, 0.197583, -0.0286671, 0.398639, 0.0145755, 0.197927, -0.0335858, 0.399034, 0.0172355, 0.198383, -0.0388806, 0.399554, 0.0201718, 0.199002, -0.0444736, 0.400289, 0.0234194, 0.199739, -0.0504583, 0.401111, 0.026984, 0.200784, -0.056729, 0.402349, 0.0309217, 0.202075, -0.0633643, 0.403841, 0.0352496, 0.203898, -0.0703247, 0.406076, 0.0400313, 0.206199, -0.0775565, 0.408841, 0.0453282, 0.209252, -0.085184, 0.41259, 0.0511794, 0.213638, -0.0931994, 0.418288, 0.0577459, 0.21881, -0.101617, 0.424681, 0.0650508, 0.225642, -0.11052, 0.433429, 0.0732759, 0.233717, -0.119772, 0.442897, 0.0824683, 0.242823, -0.129505, 0.452888, 0.0927484, 0.254772, -0.139906, 0.466407, 0.104417, 0.266603, -0.150402, 0.477413, 0.117211, 0.28073, -0.161395, 0.490519, 0.131598, 0.295399, -0.172465, 0.50201, 0.147407, 0.312705, -0.183982, 0.515311, 0.165031, 0.331335, -0.195532, 0.52786, 0.184336, 0.351037, -0.206971, 0.5392, 0.205361, 0.372175, -0.218117, 0.54941, 0.228043, 0.394548, -0.229327, 0.558642, 0.25267, 0.419598, -0.240052, 0.567861, 0.279071, 0.443922, -0.249937, 0.573332, 0.306882, 0.471495, -0.259407, 0.58013, 0.33661, 0.496769, -0.267749, 0.580564, 0.367328, 0.524951, -0.275524, 0.581696, 0.399753, 0.55318, -0.282148, 0.579885, 0.433134, 0.581577, -0.287533, 0.575471, 0.467534, 0.609231, -0.291612, 0.567445, 0.502943, 0.637478, -0.293911, 0.557657, 0.53871, 0.667795, -0.295096, 0.546535, 0.576568, 0.694272, -0.294073, 0.529561, 0.614929, 0.722937, -0.290386, 0.510561, 0.655909, 0.749682, -0.284481, 0.487846, 0.697663, 0.774754, -0.276188, 0.462487, 0.738515, 0.799301, -0.266215, 0.43481, 0.779802, 0.820762, -0.254116, 0.404879, 0.820045, 0.843231, -0.240393, 0.374559, 0.860294, 0.861857, -0.225503, 0.341582, 0.900965, 0.880815, -0.209382, 0.308778, 0.941727, 0.89766, -0.19155, 0.275232, 0.980916, 0.912926, -0.172346, 0.240938, 1.02162, 0.926391, -0.151799, 0.207223, 1.0597, 0.938429, -0.129968, 0.17484, 1.09291, 0.947834, -0.10651, 0.142984, 1.12248, 0.958432, -0.0824098, 0.109902, 1.149, 0.972402, -0.0565242, 0.0744454, 1.1733, 0.987191, -0.028427, 0.0373794, 1.19538, 0.999975, 385685e-10, -4203e-8, 1.21676, 0.178114, -766075e-11, 0.385418, 354027e-11, 0.176074, -191966e-9, 0.381002, 887135e-10, 0.17601, -767549e-9, 0.380861, 354715e-9, 0.17598, -172696e-8, 0.380798, 798168e-9, 0.175994, -307012e-8, 0.380824, 141928e-8, 0.176017, -479684e-8, 0.380858, 221859e-8, 0.176019, -690648e-8, 0.380839, 319714e-8, 0.176072, -939888e-8, 0.380913, 43572e-7, 0.176131, -0.0122726, 0.380979, 5702e-6, 0.176239, -0.0155264, 0.38112, 723689e-8, 0.176371, -0.0191551, 0.381272, 896907e-8, 0.176638, -0.023117, 0.381669, 0.0109194, 0.176912, -0.0274633, 0.382015, 0.0130903, 0.177279, -0.032173, 0.382476, 0.0154949, 0.17774, -0.0372219, 0.383041, 0.0181669, 0.178344, -0.0426132, 0.38378, 0.0211209, 0.179153, -0.0483309, 0.384773, 0.0243899, 0.180197, -0.0543447, 0.386076, 0.0280062, 0.181581, -0.0607122, 0.387809, 0.032004, 0.18344, -0.0673855, 0.390205, 0.036453, 0.186139, -0.0743989, 0.393944, 0.0414162, 0.189432, -0.0817731, 0.39832, 0.0469394, 0.193795, -0.0895464, 0.404188, 0.0531442, 0.199641, -0.0978264, 0.4121, 0.0601374, 0.206679, -0.106499, 0.421425, 0.0680078, 0.214865, -0.115654, 0.431504, 0.076919, 0.224406, -0.125268, 0.442526, 0.0868835, 0.235876, -0.135475, 0.455465, 0.0981875, 0.248335, -0.146023, 0.4681, 0.110759, 0.262868, -0.157016, 0.482069, 0.124885, 0.278962, -0.168245, 0.496182, 0.140645, 0.295082, -0.17958, 0.507401, 0.157838, 0.313738, -0.191227, 0.520252, 0.17695, 0.333573, -0.202718, 0.531708, 0.197817, 0.356433, -0.214424, 0.544509, 0.220785, 0.378853, -0.225492, 0.55373, 0.245306, 0.402717, -0.236236, 0.561348, 0.271593, 0.428375, -0.246568, 0.568538, 0.299776, 0.454724, -0.255941, 0.573462, 0.329433, 0.482291, -0.264511, 0.576356, 0.360598, 0.509706, -0.272129, 0.576446, 0.393204, 0.538805, -0.278979, 0.575298, 0.427227, 0.568919, -0.284528, 0.572154, 0.462157, 0.596804, -0.288801, 0.564691, 0.497997, 0.625987, -0.291334, 0.555134, 0.534467, 0.656414, -0.292722, 0.545051, 0.571736, 0.683916, -0.292185, 0.528813, 0.610158, 0.711809, -0.290043, 0.51106, 0.649061, 0.739547, -0.285246, 0.490103, 0.690081, 0.766914, -0.277647, 0.465523, 0.732554, 0.791375, -0.267603, 0.437718, 0.773982, 0.814772, -0.256109, 0.40882, 0.81609, 0.836691, -0.242281, 0.377823, 0.856849, 0.856984, -0.227155, 0.34496, 0.898363, 0.876332, -0.210395, 0.311335, 0.939471, 0.894988, -0.192612, 0.277703, 0.980799, 0.911113, -0.173236, 0.243019, 1.02215, 0.924092, -0.152258, 0.209037, 1.06139, 0.936828, -0.129575, 0.175909, 1.09635, 0.946869, -0.10594, 0.143852, 1.12707, 0.958284, -0.081318, 0.110289, 1.15419, 0.972325, -0.0556133, 0.0747232, 1.17909, 0.986878, -0.0297899, 0.0383149, 1.20163, 0.999936, -197169e-8, 912402e-9, 1.22338, 0.151174, -720365e-11, 0.351531, 309789e-11, 0.155594, -18279e-8, 0.361806, 78608e-9, 0.156099, -731569e-9, 0.362982, 314615e-9, 0.156053, -164578e-8, 0.362869, 707845e-9, 0.156093, -29261e-7, 0.362961, 125884e-8, 0.156099, -457155e-8, 0.362959, 196783e-8, 0.15612, -658224e-8, 0.362982, 283622e-8, 0.156168, -895774e-8, 0.363048, 386625e-8, 0.156221, -0.0116962, 0.363101, 506109e-8, 0.156324, -0.0147973, 0.363241, 642675e-8, 0.156476, -0.0182503, 0.363448, 797175e-8, 0.156731, -0.0220266, 0.36384, 971484e-8, 0.156994, -0.026176, 0.364179, 0.0116575, 0.157341, -0.0306701, 0.36462, 0.0138207, 0.157867, -0.0354591, 0.365364, 0.0162356, 0.15846, -0.0406141, 0.366111, 0.0189092, 0.159308, -0.0460519, 0.367248, 0.021885, 0.160426, -0.0518096, 0.368767, 0.0252004, 0.161877, -0.0578906, 0.370745, 0.0288825, 0.163995, -0.0642812, 0.373831, 0.0330139, 0.16655, -0.0710067, 0.377366, 0.0376283, 0.170237, -0.0781522, 0.382799, 0.0428493, 0.175096, -0.0857172, 0.389915, 0.0487324, 0.181069, -0.0938025, 0.398487, 0.0554214, 0.188487, -0.102363, 0.408799, 0.0630189, 0.197029, -0.111343, 0.419991, 0.071634, 0.206684, -0.120812, 0.431455, 0.0812797, 0.218698, -0.131033, 0.445746, 0.0923651, 0.230726, -0.141373, 0.457471, 0.104545, 0.245516, -0.152387, 0.472388, 0.118449, 0.261551, -0.163628, 0.486671, 0.133923, 0.277437, -0.174814, 0.49762, 0.150849, 0.296662, -0.186713, 0.51162, 0.169924, 0.31795, -0.198513, 0.525435, 0.190848, 0.339422, -0.210119, 0.536267, 0.213504, 0.362143, -0.221354, 0.545982, 0.237947, 0.387198, -0.23224, 0.555364, 0.264427, 0.412349, -0.24257, 0.561489, 0.292519, 0.439274, -0.252284, 0.566903, 0.322561, 0.466779, -0.261023, 0.569614, 0.353952, 0.496011, -0.26899, 0.571589, 0.387278, 0.524964, -0.275498, 0.570325, 0.421356, 0.556518, -0.281449, 0.568792, 0.457314, 0.584363, -0.285526, 0.560268, 0.493199, 0.614214, -0.28844, 0.55205, 0.530276, 0.645684, -0.289777, 0.541906, 0.56855, 0.673446, -0.289722, 0.526464, 0.606927, 0.701924, -0.287792, 0.509872, 0.645945, 0.73037, -0.284315, 0.490649, 0.685564, 0.757405, -0.278804, 0.467964, 0.726511, 0.784025, -0.269543, 0.441468, 0.768601, 0.808255, -0.258117, 0.41216, 0.811321, 0.830739, -0.244728, 0.380606, 0.853496, 0.851914, -0.229428, 0.348111, 0.895374, 0.872586, -0.212508, 0.314732, 0.937674, 0.891581, -0.194025, 0.280338, 0.979869, 0.907641, -0.174711, 0.245203, 1.02253, 0.922233, -0.153509, 0.21077, 1.06371, 0.935878, -0.130418, 0.177399, 1.09972, 0.946338, -0.105558, 0.144507, 1.13124, 0.957265, -0.080059, 0.110508, 1.15973, 0.971668, -0.0539766, 0.0742311, 1.18515, 0.9866, -0.0277101, 0.0375224, 1.20858, 1.00021, -515531e-9, 135226e-9, 1.23135, 0.137468, -686011e-11, 0.345041, 273315e-11, 0.13703, -173378e-9, 0.343936, 690761e-10, 0.136986, -693048e-9, 0.34383, 276126e-9, 0.136964, -155931e-8, 0.343761, 621337e-9, 0.137003, -277211e-8, 0.343863, 110494e-8, 0.137012, -433103e-8, 0.343868, 172744e-8, 0.137043, -623606e-8, 0.343916, 249022e-8, 0.13709, -84868e-7, 0.343986, 339559e-8, 0.137145, -0.0110814, 0.344045, 444687e-8, 0.137242, -0.0140187, 0.344177, 565007e-8, 0.137431, -0.0172713, 0.344491, 701868e-8, 0.137644, -0.0208605, 0.344805, 856042e-8, 0.13791, -0.024792, 0.345172, 0.0102863, 0.138295, -0.0290461, 0.345734, 0.0122185, 0.138764, -0.0335957, 0.346371, 0.0143771, 0.139415, -0.038467, 0.347298, 0.0167894, 0.140272, -0.0436176, 0.348527, 0.0194895, 0.141457, -0.0491016, 0.350276, 0.0225043, 0.14303, -0.0548764, 0.352646, 0.0258962, 0.145289, -0.0610096, 0.356206, 0.0297168, 0.148502, -0.0674777, 0.361488, 0.0340562, 0.152188, -0.074345, 0.367103, 0.0389534, 0.157359, -0.0817442, 0.375247, 0.0445541, 0.16379, -0.0896334, 0.385064, 0.0509535, 0.171376, -0.098005, 0.396082, 0.0582611, 0.179901, -0.106817, 0.407418, 0.06654, 0.189892, -0.116239, 0.420031, 0.075994, 0.201838, -0.12627, 0.434321, 0.0867239, 0.214311, -0.136701, 0.447631, 0.0987517, 0.228902, -0.147616, 0.462046, 0.112353, 0.245107, -0.158871, 0.476942, 0.127605, 0.262292, -0.170261, 0.490285, 0.144469, 0.281215, -0.182017, 0.503783, 0.163282, 0.301058, -0.193729, 0.515505, 0.183873, 0.322752, -0.205512, 0.52682, 0.206466, 0.347547, -0.217214, 0.539473, 0.231194, 0.370969, -0.227966, 0.546625, 0.257288, 0.397533, -0.238555, 0.55472, 0.285789, 0.42398, -0.248278, 0.559468, 0.315746, 0.452928, -0.257422, 0.564095, 0.347724, 0.482121, -0.265306, 0.565426, 0.380922, 0.510438, -0.272043, 0.563205, 0.415639, 0.541188, -0.277614, 0.561087, 0.451702, 0.571667, -0.281927, 0.554922, 0.48845, 0.602432, -0.285015, 0.546838, 0.526442, 0.634126, -0.286512, 0.537415, 0.564896, 0.662816, -0.286388, 0.522906, 0.604037, 0.692411, -0.284734, 0.507003, 0.643795, 0.720946, -0.281297, 0.488398, 0.68298, 0.748293, -0.276262, 0.466353, 0.723466, 0.776931, -0.269978, 0.443573, 0.764565, 0.801065, -0.260305, 0.415279, 0.805838, 0.825843, -0.247426, 0.384773, 0.849985, 0.84807, -0.232437, 0.352555, 0.893174, 0.869122, -0.215806, 0.318642, 0.936564, 0.888963, -0.197307, 0.28381, 0.980253, 0.905547, -0.177203, 0.247888, 1.02463, 0.918554, -0.155542, 0.212904, 1.06714, 0.931395, -0.131948, 0.1787, 1.10451, 0.941749, -0.106723, 0.145902, 1.13694, 0.954551, -0.0804939, 0.111193, 1.1666, 0.970279, -0.0534239, 0.0744697, 1.19249, 0.986117, -0.0257452, 0.0368788, 1.21665, 0.999938, 190634e-8, -10291e-7, 1.23981, 0.118493, -647439e-11, 0.32272, 23772e-10, 0.118765, -163023e-9, 0.323456, 598573e-10, 0.118772, -65212e-8, 0.323477, 239447e-9, 0.118843, -146741e-8, 0.323657, 538881e-9, 0.118804, -260846e-8, 0.323553, 95826e-8, 0.118826, -407576e-8, 0.323595, 149845e-8, 0.118846, -586826e-8, 0.323617, 216047e-8, 0.118886, -798578e-8, 0.32367, 294679e-8, 0.118947, -0.0104273, 0.323753, 386124e-8, 0.119055, -0.0131909, 0.323922, 490999e-8, 0.119241, -0.0162444, 0.324251, 610804e-8, 0.11944, -0.0196339, 0.324544, 745805e-8, 0.119739, -0.0233378, 0.325026, 897805e-8, 0.12011, -0.0273179, 0.325586, 0.0106895, 0.120571, -0.0316143, 0.326231, 0.0126073, 0.12124, -0.0361939, 0.327264, 0.0147654, 0.122162, -0.0410511, 0.328733, 0.0172001, 0.123378, -0.0462233, 0.330659, 0.0199375, 0.125183, -0.0517109, 0.333754, 0.0230498, 0.127832, -0.0575652, 0.338507, 0.026597, 0.130909, -0.0637441, 0.343666, 0.0306345, 0.135221, -0.0704302, 0.351063, 0.035273, 0.14082, -0.0776364, 0.360604, 0.0406137, 0.146781, -0.0852293, 0.369638, 0.0466788, 0.155121, -0.0935351, 0.3827, 0.0537628, 0.16398, -0.102234, 0.39522, 0.0617985, 0.173926, -0.111465, 0.40793, 0.07097, 0.185137, -0.121296, 0.42105, 0.0813426, 0.19826, -0.13169, 0.435735, 0.0931596, 0.212938, -0.142614, 0.450932, 0.106547, 0.229046, -0.153884, 0.465726, 0.121575, 0.246246, -0.165382, 0.479461, 0.138286, 0.264637, -0.176806, 0.492106, 0.15666, 0.284959, -0.188793, 0.504774, 0.17728, 0.308157, -0.200763, 0.518805, 0.19988, 0.330951, -0.21239, 0.528231, 0.224293, 0.3549, -0.223521, 0.536376, 0.250541, 0.381502, -0.234169, 0.544846, 0.278902, 0.409529, -0.244077, 0.551717, 0.309227, 0.437523, -0.253363, 0.55517, 0.341426, 0.467624, -0.261659, 0.557772, 0.37518, 0.497268, -0.268498, 0.556442, 0.41007, 0.528294, -0.274018, 0.553915, 0.446445, 0.559053, -0.278169, 0.549153, 0.483779, 0.589329, -0.281229, 0.539878, 0.522249, 0.622503, -0.282902, 0.53162, 0.561754, 0.652382, -0.282815, 0.518119, 0.601544, 0.681847, -0.281247, 0.502187, 0.641574, 0.712285, -0.277986, 0.484824, 0.682633, 0.740094, -0.273017, 0.463483, 0.723426, 0.768478, -0.266692, 0.441299, 0.763747, 0.794556, -0.258358, 0.415238, 0.805565, 0.819408, -0.248807, 0.386912, 0.847254, 0.843411, -0.236214, 0.356165, 0.891091, 0.862397, -0.219794, 0.320562, 0.936174, 0.883113, -0.201768, 0.285322, 0.982562, 0.90023, -0.181672, 0.249713, 1.02862, 0.915192, -0.159279, 0.214546, 1.07163, 0.928458, -0.134725, 0.180285, 1.10995, 0.94069, -0.10913, 0.147119, 1.14354, 0.953409, -0.0821315, 0.112492, 1.17372, 0.969537, -0.0542677, 0.0752014, 1.20043, 0.985612, -0.0259096, 0.0370361, 1.22528, 0.999835, 298198e-8, -151801e-8, 1.24959, 0.10097, -602574e-11, 0.300277, 202619e-11, 0.101577, -152164e-9, 0.302077, 511662e-10, 0.101572, -608889e-9, 0.302066, 204751e-9, 0.101566, -136997e-8, 0.302047, 460753e-9, 0.101592, -243557e-8, 0.302114, 819497e-9, 0.101608, -38053e-7, 0.30214, 128154e-8, 0.101627, -547906e-8, 0.30216, 18483e-7, 0.101669, -745647e-8, 0.302224, 252223e-8, 0.101732, -973615e-8, 0.302318, 330716e-8, 0.101844, -0.0123097, 0.302513, 421061e-8, 0.102025, -0.0151681, 0.30285, 524481e-8, 0.102224, -0.0183334, 0.303166, 64154e-7, 0.102515, -0.0217819, 0.303654, 774063e-8, 0.102886, -0.0255067, 0.304243, 92398e-7, 0.103395, -0.029514, 0.305089, 0.0109339, 0.104109, -0.0337912, 0.306301, 0.0128561, 0.105074, -0.0383565, 0.30798, 0.0150338, 0.10654, -0.0432132, 0.310726, 0.0175228, 0.108478, -0.0484244, 0.314351, 0.0203648, 0.111015, -0.0539339, 0.319032, 0.0236325, 0.114682, -0.0598885, 0.32605, 0.0274188, 0.11911, -0.0663375, 0.334109, 0.0317905, 0.124736, -0.0733011, 0.344013, 0.0368502, 0.131479, -0.0807744, 0.355358, 0.0427104, 0.139283, -0.0888204, 0.367614, 0.0494788, 0.148054, -0.0973394, 0.380072, 0.0572367, 0.159037, -0.10665, 0.395678, 0.0662704, 0.169794, -0.116221, 0.40795, 0.0763192, 0.18314, -0.126632, 0.423546, 0.087956, 0.197515, -0.137383, 0.438213, 0.101042, 0.213514, -0.148641, 0.453248, 0.115827, 0.23065, -0.160117, 0.46688, 0.132283, 0.249148, -0.171807, 0.479962, 0.150644, 0.270219, -0.183695, 0.494618, 0.171073, 0.292338, -0.195574, 0.506937, 0.193378, 0.314999, -0.207205, 0.516463, 0.217585, 0.340991, -0.218955, 0.528123, 0.24428, 0.367982, -0.229917, 0.537025, 0.272784, 0.39432, -0.239737, 0.541627, 0.302742, 0.423364, -0.249048, 0.546466, 0.335112, 0.453751, -0.257329, 0.549466, 0.369032, 0.48416, -0.264623, 0.549503, 0.404577, 0.515262, -0.270411, 0.547008, 0.441337, 0.547036, -0.274581, 0.542249, 0.479162, 0.576614, -0.277266, 0.533015, 0.517904, 0.611143, -0.279144, 0.525512, 0.558508, 0.640989, -0.279001, 0.51154, 0.598995, 0.671182, -0.277324, 0.495641, 0.639935, 0.700848, -0.273908, 0.477526, 0.681017, 0.729862, -0.269063, 0.457955, 0.722764, 0.758273, -0.262282, 0.434846, 0.764349, 0.784121, -0.254281, 0.409203, 0.806206, 0.809798, -0.24505, 0.382694, 0.848617, 0.834953, -0.233861, 0.354034, 0.892445, 0.856817, -0.221308, 0.321764, 0.936263, 0.877609, -0.205996, 0.288118, 0.982401, 0.897489, -0.186702, 0.253277, 1.02975, 0.913792, -0.164618, 0.217963, 1.07488, 0.92785, -0.140023, 0.183221, 1.11487, 0.940378, -0.11328, 0.149385, 1.14947, 0.95273, -0.0853958, 0.114152, 1.1807, 0.969059, -0.0568698, 0.0769845, 1.20912, 0.985574, -0.0276502, 0.0381186, 1.23498, 0.999943, 239052e-8, -126861e-8, 1.25987, 0.0852715, -560067e-11, 0.279021, 171162e-11, 0.0854143, -140871e-9, 0.279483, 430516e-10, 0.0854191, -563385e-9, 0.2795, 172184e-9, 0.0854188, -126753e-8, 0.279493, 387464e-9, 0.0854229, -225337e-8, 0.279501, 68918e-8, 0.0854443, -352086e-8, 0.279549, 107803e-8, 0.0854697, -506962e-8, 0.279591, 155536e-8, 0.0855093, -689873e-8, 0.279652, 212354e-8, 0.0855724, -900821e-8, 0.279752, 278703e-8, 0.0856991, -0.0113799, 0.280011, 35551e-7, 0.085855, -0.0140314, 0.280297, 443449e-8, 0.0860682, -0.016963, 0.280682, 543636e-8, 0.086344, -0.0201438, 0.281159, 65788e-7, 0.0867426, -0.0235999, 0.281886, 787977e-8, 0.087239, -0.0273069, 0.282745, 93606e-7, 0.0879815, -0.031269, 0.284139, 0.011056, 0.0891258, -0.035531, 0.28647, 0.0130065, 0.0906909, -0.0400947, 0.289708, 0.0152495, 0.0927624, -0.0449638, 0.293904, 0.0178454, 0.0958376, -0.0502427, 0.300471, 0.0208915, 0.0995827, -0.0559514, 0.30806, 0.0244247, 0.104526, -0.0622152, 0.317874, 0.0285721, 0.110532, -0.0690046, 0.329332, 0.0334227, 0.117385, -0.0763068, 0.341217, 0.0390466, 0.12522, -0.084184, 0.353968, 0.0455786, 0.134037, -0.0925248, 0.366797, 0.0530773, 0.144014, -0.101487, 0.380209, 0.0617424, 0.156013, -0.111273, 0.395956, 0.071777, 0.168872, -0.121431, 0.41053, 0.0830905, 0.183089, -0.132105, 0.425073, 0.0959341, 0.198763, -0.143286, 0.439833, 0.110448, 0.216159, -0.154841, 0.454507, 0.126769, 0.234859, -0.166588, 0.468368, 0.14495, 0.255879, -0.178626, 0.482846, 0.165233, 0.27677, -0.190218, 0.493489, 0.187217, 0.301184, -0.202227, 0.506549, 0.211659, 0.325852, -0.213764, 0.5158, 0.237922, 0.352824, -0.22487, 0.525442, 0.26632, 0.380882, -0.235246, 0.532487, 0.296691, 0.410137, -0.244847, 0.537703, 0.329179, 0.439787, -0.253122, 0.540361, 0.363135, 0.472291, -0.260517, 0.542734, 0.399222, 0.501856, -0.266519, 0.538826, 0.436352, 0.534816, -0.270905, 0.535152, 0.474505, 0.565069, -0.273826, 0.525979, 0.513988, 0.597154, -0.275333, 0.516394, 0.554852, 0.630473, -0.275314, 0.506206, 0.596592, 0.660574, -0.273323, 0.489769, 0.638117, 0.692015, -0.270008, 0.472578, 0.680457, 0.720647, -0.265001, 0.452134, 0.723008, 0.750528, -0.258311, 0.430344, 0.765954, 0.777568, -0.250046, 0.405624, 0.809012, 0.80387, -0.240114, 0.378339, 0.852425, 0.828439, -0.228737, 0.349877, 0.895346, 0.851472, -0.216632, 0.318968, 0.940695, 0.873906, -0.202782, 0.287489, 0.987235, 0.89467, -0.187059, 0.254394, 1.03348, 0.912281, -0.168818, 0.221294, 1.07812, 0.927358, -0.146494, 0.18675, 1.11928, 0.940385, -0.120009, 0.152322, 1.15609, 0.952672, -0.0917183, 0.117514, 1.18875, 0.968496, -0.0620321, 0.0797405, 1.21821, 0.985236, -0.0314945, 0.0402383, 1.24523, 0.99998, -575153e-9, 110644e-9, 1.27133, 0.0702429, -512222e-11, 0.255273, 140947e-11, 0.0702981, -128826e-9, 0.255469, 354488e-10, 0.0703691, -515562e-9, 0.255727, 141874e-9, 0.0703805, -116e-5, 0.255754, 31929e-8, 0.0703961, -206224e-8, 0.255813, 567999e-9, 0.0704102, -322223e-8, 0.255839, 88871e-8, 0.0704298, -463928e-8, 0.255863, 128272e-8, 0.0704759, -631375e-8, 0.255953, 175283e-8, 0.0705434, -824317e-8, 0.256079, 230342e-8, 0.0706693, -0.010412, 0.25636, 29443e-7, 0.0708189, -0.0128439, 0.256647, 368031e-8, 0.0710364, -0.0155177, 0.257084, 452614e-8, 0.0713223, -0.0184374, 0.257637, 549706e-8, 0.0717182, -0.0216002, 0.258416, 661246e-8, 0.072321, -0.0249966, 0.259699, 790147e-8, 0.0731446, -0.0286566, 0.261475, 93884e-7, 0.0743352, -0.0325888, 0.264132, 0.0111186, 0.0760676, -0.036843, 0.26815, 0.013145, 0.078454, -0.0414292, 0.273636, 0.0155251, 0.0818618, -0.0464634, 0.281653, 0.0183525, 0.0857382, -0.0519478, 0.289992, 0.0216642, 0.0908131, -0.0579836, 0.30066, 0.0255956, 0.0967512, -0.0645124, 0.312204, 0.0301954, 0.103717, -0.0716505, 0.325001, 0.0356017, 0.111596, -0.0793232, 0.338129, 0.041896, 0.120933, -0.087645, 0.352853, 0.0492447, 0.130787, -0.096492, 0.366192, 0.0576749, 0.142311, -0.105973, 0.380864, 0.0673969, 0.155344, -0.116182, 0.396575, 0.0785899, 0.169535, -0.126815, 0.411443, 0.0912377, 0.185173, -0.138015, 0.426256, 0.105607, 0.201755, -0.149325, 0.439607, 0.121551, 0.221334, -0.161207, 0.455467, 0.139608, 0.241461, -0.173162, 0.469096, 0.159591, 0.26294, -0.18504, 0.481014, 0.18156, 0.286776, -0.196881, 0.493291, 0.205781, 0.311596, -0.208311, 0.503556, 0.231819, 0.338667, -0.219671, 0.513268, 0.260274, 0.366021, -0.230451, 0.519414, 0.290862, 0.395875, -0.240131, 0.526766, 0.323196, 0.425564, -0.248566, 0.52905, 0.357071, 0.457094, -0.256195, 0.530796, 0.393262, 0.488286, -0.262331, 0.528703, 0.430797, 0.522291, -0.267141, 0.52727, 0.470231, 0.554172, -0.270411, 0.519848, 0.510477, 0.586427, -0.271986, 0.510307, 0.551594, 0.619638, -0.27192, 0.499158, 0.593849, 0.650656, -0.269817, 0.483852, 0.636314, 0.68284, -0.266267, 0.467515, 0.679679, 0.714356, -0.26113, 0.44931, 0.723884, 0.742717, -0.254067, 0.425789, 0.767245, 0.770894, -0.245652, 0.401144, 0.811819, 0.797358, -0.235554, 0.374224, 0.856315, 0.823377, -0.223896, 0.346167, 0.901077, 0.847456, -0.210865, 0.316056, 0.946502, 0.870697, -0.196574, 0.284503, 0.993711, 0.891068, -0.180814, 0.251628, 1.04134, 0.909267, -0.163314, 0.219065, 1.08609, 0.925653, -0.143304, 0.186446, 1.12702, 0.940017, -0.121322, 0.153416, 1.16371, 0.952398, -0.0973872, 0.120334, 1.19712, 0.967568, -0.0698785, 0.08352, 1.22791, 0.984772, -0.0390031, 0.0439209, 1.25672, 1.00026, -70087e-7, 315668e-8, 1.28428, 0.0556653, -459654e-11, 0.227325, 112556e-11, 0.0565238, -116382e-9, 0.230826, 284985e-10, 0.0565717, -465666e-9, 0.231026, 114036e-9, 0.0565859, -104773e-8, 0.231079, 256656e-9, 0.0565761, -186255e-8, 0.231025, 45663e-8, 0.0565913, -291002e-8, 0.231058, 714664e-9, 0.0566108, -418998e-8, 0.231085, 103224e-8, 0.0566532, -570206e-8, 0.231169, 141202e-8, 0.0567473, -743666e-8, 0.231417, 186018e-8, 0.0568567, -940298e-8, 0.231661, 238264e-8, 0.0569859, -0.0115991, 0.231895, 298699e-8, 0.0572221, -0.0140096, 0.232456, 368957e-8, 0.057519, -0.0166508, 0.233096, 450303e-8, 0.0579534, -0.01951, 0.234094, 544945e-8, 0.0585922, -0.0225991, 0.235629, 655564e-8, 0.0595647, -0.0259416, 0.238106, 785724e-8, 0.0609109, -0.0295661, 0.241557, 939127e-8, 0.0628751, -0.0335126, 0.246652, 0.0112198, 0.0656908, -0.0378604, 0.254091, 0.0134168, 0.0691347, -0.0426543, 0.262666, 0.0160374, 0.0732165, -0.0478967, 0.272029, 0.0191514, 0.0782863, -0.0536716, 0.283007, 0.0228597, 0.0843973, -0.0600683, 0.295732, 0.0272829, 0.0913598, -0.0670095, 0.308779, 0.032484, 0.0994407, -0.0745516, 0.322886, 0.0385886, 0.108189, -0.082712, 0.336408, 0.0457133, 0.118574, -0.0914927, 0.351692, 0.0539832, 0.129989, -0.100854, 0.366502, 0.0635162, 0.142722, -0.110837, 0.381675, 0.0744386, 0.156654, -0.121353, 0.3963, 0.0868483, 0.172151, -0.132414, 0.411477, 0.100963, 0.188712, -0.143809, 0.42508, 0.116795, 0.208093, -0.155765, 0.441328, 0.134715, 0.227936, -0.167608, 0.454328, 0.154396, 0.249495, -0.179579, 0.467235, 0.176179, 0.27362, -0.191488, 0.480248, 0.200193, 0.296371, -0.202618, 0.487886, 0.225775, 0.324234, -0.214133, 0.499632, 0.25441, 0.353049, -0.225212, 0.509532, 0.285077, 0.381785, -0.234875, 0.514265, 0.317047, 0.414038, -0.244205, 0.521282, 0.351874, 0.445251, -0.252145, 0.522931, 0.388279, 0.476819, -0.258433, 0.520947, 0.425825, 0.509209, -0.263411, 0.517669, 0.465104, 0.542759, -0.266732, 0.512841, 0.505741, 0.574822, -0.268263, 0.503317, 0.547611, 0.609324, -0.268489, 0.493035, 0.590953, 0.641772, -0.266941, 0.478816, 0.63488, 0.674049, -0.263297, 0.462863, 0.679072, 0.705071, -0.257618, 0.442931, 0.723487, 0.734709, -0.250625, 0.421299, 0.768708, 0.763704, -0.24179, 0.397085, 0.814375, 0.791818, -0.231115, 0.370577, 0.859907, 0.817439, -0.21922, 0.34232, 0.906715, 0.843202, -0.205658, 0.312627, 0.953943, 0.866639, -0.190563, 0.280933, 1.00185, 0.888129, -0.173978, 0.248393, 1.05105, 0.907239, -0.155485, 0.216007, 1.09704, 0.923893, -0.134782, 0.183233, 1.13857, 0.938882, -0.11249, 0.150376, 1.17539, 0.952464, -0.0890706, 0.117177, 1.20924, 0.968529, -0.0646523, 0.0813095, 1.24055, 0.984763, -0.038606, 0.0439378, 1.27018, 1.00053, -0.01238, 598668e-8, 1.29873, 0.0437928, -409594e-11, 0.204012, 879224e-12, 0.0440166, -103395e-9, 0.205049, 221946e-10, 0.0440529, -413633e-9, 0.205225, 887981e-10, 0.0440493, -930594e-9, 0.2052, 199858e-9, 0.0439884, -165352e-8, 0.204901, 355495e-9, 0.0440716, -25849e-7, 0.205255, 556983e-9, 0.0440968, -372222e-8, 0.205311, 805326e-9, 0.0441359, -506478e-8, 0.205391, 110333e-8, 0.0442231, -660384e-8, 0.205638, 145768e-8, 0.0443254, -835246e-8, 0.205877, 187275e-8, 0.0444832, -0.0102992, 0.20627, 235938e-8, 0.0447001, -0.0124449, 0.206796, 29299e-7, 0.0450168, -0.0147935, 0.207593, 36005e-7, 0.0454816, -0.017336, 0.208819, 439246e-8, 0.0462446, -0.0201156, 0.211036, 533864e-8, 0.0473694, -0.0231568, 0.214388, 646984e-8, 0.0490191, -0.0264941, 0.219357, 783856e-8, 0.0512776, -0.030184, 0.226061, 950182e-8, 0.0541279, -0.0342661, 0.234094, 0.0115156, 0.0578989, -0.0388539, 0.244297, 0.0139687, 0.0620835, -0.0438735, 0.254457, 0.0169015, 0.0673497, -0.04951, 0.266706, 0.0204554, 0.0731759, -0.0556263, 0.278753, 0.0246606, 0.0803937, -0.0624585, 0.29309, 0.0297126, 0.0879287, -0.0697556, 0.305856, 0.0355868, 0.0970669, -0.0778795, 0.321059, 0.0425768, 0.106508, -0.0863541, 0.333873, 0.05056, 0.11776, -0.0955935, 0.349008, 0.0598972, 0.130081, -0.105438, 0.363776, 0.0706314, 0.144454, -0.115899, 0.380112, 0.0828822, 0.1596, -0.126827, 0.394843, 0.0967611, 0.176097, -0.138161, 0.409033, 0.112381, 0.194726, -0.149904, 0.424257, 0.129952, 0.213944, -0.161675, 0.436945, 0.149333, 0.235516, -0.173659, 0.450176, 0.170892, 0.260564, -0.185963, 0.466305, 0.194984, 0.285183, -0.197582, 0.477328, 0.220805, 0.311095, -0.208697, 0.486566, 0.248694, 0.338924, -0.219519, 0.494811, 0.279015, 0.369757, -0.229766, 0.504065, 0.311725, 0.3996, -0.238879, 0.507909, 0.345844, 0.430484, -0.246802, 0.509805, 0.381749, 0.46413, -0.253924, 0.511436, 0.420251, 0.497077, -0.259319, 0.508787, 0.459957, 0.530434, -0.263297, 0.50394, 0.501356, 0.565725, -0.265619, 0.49804, 0.544252, 0.599254, -0.265842, 0.487346, 0.587856, 0.631251, -0.263978, 0.472975, 0.631969, 0.663972, -0.26043, 0.457135, 0.677471, 0.697724, -0.255358, 0.439844, 0.723744, 0.727725, -0.248308, 0.417872, 0.770653, 0.756417, -0.239181, 0.39273, 0.817357, 0.785419, -0.22814, 0.367839, 0.864221, 0.81266, -0.215681, 0.339449, 0.912701, 0.839391, -0.201623, 0.309279, 0.962419, 0.86366, -0.185624, 0.278029, 1.0122, 0.885028, -0.16797, 0.245294, 1.06186, 0.904639, -0.148336, 0.212689, 1.10934, 0.922048, -0.12637, 0.179616, 1.15063, 0.936952, -0.102928, 0.146749, 1.18885, 0.951895, -0.0785268, 0.112733, 1.22352, 0.967198, -0.0530153, 0.0760056, 1.25681, 0.984405, -0.02649, 0.0383183, 1.28762, 1.00021, 70019e-8, -20039e-8, 1.31656, 0.0325964, -355447e-11, 0.176706, 655682e-12, 0.0329333, -899174e-10, 0.178527, 165869e-10, 0.0329181, -359637e-9, 0.178453, 663498e-10, 0.0329085, -808991e-9, 0.178383, 149332e-9, 0.0329181, -143826e-8, 0.178394, 265873e-9, 0.0329425, -224678e-8, 0.178517, 416597e-9, 0.0329511, -323575e-8, 0.17849, 603299e-9, 0.033011, -439875e-8, 0.178695, 829422e-9, 0.0330733, -574059e-8, 0.178843, 109908e-8, 0.0331857, -725896e-8, 0.179176, 141933e-8, 0.0333445, -895289e-8, 0.179618, 17999e-7, 0.0335674, -0.0108219, 0.180238, 225316e-8, 0.033939, -0.0128687, 0.181417, 279765e-8, 0.0345239, -0.015114, 0.183395, 34564e-7, 0.0354458, -0.017596, 0.186616, 425864e-8, 0.0368313, -0.0203524, 0.191547, 524936e-8, 0.0386115, -0.0234105, 0.197508, 647033e-8, 0.0410303, -0.0268509, 0.205395, 798121e-8, 0.0442245, -0.0307481, 0.215365, 98557e-7, 0.0478659, -0.0350863, 0.225595, 0.0121417, 0.0522416, -0.0399506, 0.236946, 0.0149385, 0.0574513, -0.045357, 0.249442, 0.0183189, 0.0631208, -0.0512863, 0.261222, 0.0223644, 0.0701124, -0.0579273, 0.275418, 0.0272418, 0.0777331, -0.0650652, 0.288989, 0.0329458, 0.0862709, -0.0728813, 0.302546, 0.0396819, 0.096103, -0.081363, 0.317164, 0.04757, 0.106976, -0.0904463, 0.331733, 0.0567012, 0.119175, -0.100105, 0.34661, 0.067202, 0.132919, -0.110375, 0.362249, 0.0792588, 0.147727, -0.121115, 0.376978, 0.0928672, 0.163618, -0.132299, 0.390681, 0.108228, 0.182234, -0.143887, 0.406571, 0.125502, 0.201809, -0.155827, 0.42042, 0.144836, 0.225041, -0.168357, 0.438411, 0.166706, 0.247621, -0.18004, 0.450368, 0.189909, 0.27097, -0.191536, 0.460083, 0.215251, 0.296658, -0.203024, 0.469765, 0.243164, 0.325892, -0.214056, 0.481837, 0.273388, 0.35406, -0.224104, 0.487474, 0.305344, 0.384372, -0.233489, 0.492773, 0.339741, 0.41749, -0.241874, 0.498451, 0.376287, 0.45013, -0.248834, 0.499632, 0.414195, 0.481285, -0.254658, 0.495233, 0.454077, 0.519183, -0.259367, 0.496401, 0.496352, 0.551544, -0.261818, 0.487686, 0.538798, 0.587349, -0.262964, 0.479453, 0.583626, 0.621679, -0.262128, 0.467709, 0.629451, 0.654991, -0.258998, 0.452123, 0.67566, 0.686873, -0.254119, 0.433495, 0.723248, 0.719801, -0.246946, 0.413657, 0.771156, 0.750355, -0.237709, 0.390366, 0.81989, 0.780033, -0.226549, 0.364947, 0.868601, 0.809254, -0.214186, 0.337256, 0.920034, 0.836576, -0.199639, 0.307395, 0.971706, 0.861774, -0.183169, 0.275431, 1.02479, 0.885707, -0.165111, 0.243431, 1.07837, 0.904742, -0.144363, 0.210921, 1.12783, 0.915604, -0.121305, 0.17647, 1.17254, 0.930959, -0.0962119, 0.143106, 1.21012, 0.948404, -0.069969, 0.108112, 1.24474, 0.967012, -0.0427586, 0.0708478, 1.27718, 0.984183, -0.0147043, 0.032335, 1.3083, 0.999577, 0.0142165, -726867e-8, 1.3382, 0.0229227, -299799e-11, 0.148623, 462391e-12, 0.0232194, -758796e-10, 0.15054, 117033e-10, 0.0232315, -303636e-9, 0.15063, 468397e-10, 0.0232354, -683189e-9, 0.150624, 105472e-9, 0.0232092, -12136e-7, 0.150445, 187744e-9, 0.0232523, -189765e-8, 0.150679, 294847e-9, 0.0232828, -273247e-8, 0.150789, 428013e-9, 0.0233371, -371287e-8, 0.150995, 591134e-9, 0.0234015, -484794e-8, 0.15118, 787642e-9, 0.023514, -612877e-8, 0.151562, 102547e-8, 0.023679, -756125e-8, 0.152116, 131351e-8, 0.0239559, -914651e-8, 0.153162, 166594e-8, 0.0244334, -0.010904, 0.155133, 210182e-8, 0.025139, -0.0128615, 0.158035, 264406e-8, 0.0262598, -0.0150628, 0.162751, 332923e-8, 0.0277875, -0.0175532, 0.168944, 419773e-8, 0.0298472, -0.0203981, 0.176835, 530034e-8, 0.0325444, -0.023655, 0.186686, 669777e-8, 0.0355581, -0.0272982, 0.196248, 842661e-8, 0.0392841, -0.0314457, 0.207352, 0.0105854, 0.0436815, -0.0361157, 0.219279, 0.0132458, 0.0485272, -0.0412932, 0.230728, 0.0164736, 0.0541574, -0.0470337, 0.242994, 0.0203715, 0.0609479, -0.0535002, 0.257042, 0.0250953, 0.0685228, -0.0605409, 0.27102, 0.0306856, 0.0768042, -0.0680553, 0.28406, 0.037193, 0.0864844, -0.0765011, 0.299186, 0.0449795, 0.0969415, -0.0852674, 0.3132, 0.0538316, 0.108478, -0.0947333, 0.327138, 0.0641149, 0.121705, -0.10481, 0.342345, 0.0759185, 0.136743, -0.115474, 0.358472, 0.0894116, 0.152986, -0.126536, 0.374067, 0.104562, 0.170397, -0.138061, 0.388267, 0.121632, 0.191392, -0.150203, 0.406467, 0.140996, 0.211566, -0.161751, 0.418641, 0.161696, 0.233567, -0.173407, 0.430418, 0.184557, 0.257769, -0.185397, 0.44277, 0.210092, 0.28531, -0.197048, 0.457191, 0.237827, 0.311726, -0.20784, 0.464712, 0.267253, 0.340537, -0.218345, 0.472539, 0.299332, 0.372921, -0.228306, 0.482331, 0.333988, 0.402924, -0.236665, 0.484378, 0.369722, 0.434475, -0.244097, 0.484717, 0.407836, 0.469736, -0.250547, 0.487093, 0.448465, 0.505045, -0.25511, 0.485575, 0.490263, 0.540262, -0.258444, 0.481225, 0.534495, 0.576347, -0.259903, 0.473481, 0.579451, 0.608656, -0.259572, 0.4603, 0.625604, 0.646679, -0.257908, 0.450341, 0.674511, 0.679902, -0.253663, 0.431561, 0.723269, 0.714159, -0.247419, 0.412684, 0.773263, 0.745345, -0.239122, 0.389388, 0.824182, 0.778248, -0.228837, 0.365361, 0.876634, 0.807208, -0.216197, 0.337667, 0.92945, 0.835019, -0.201772, 0.307197, 0.985261, 0.860261, -0.185291, 0.274205, 1.04299, 0.877601, -0.165809, 0.240178, 1.09816, 0.898211, -0.143897, 0.207571, 1.14694, 0.915789, -0.119513, 0.174904, 1.19008, 0.931831, -0.0932919, 0.141423, 1.2297, 0.949244, -0.0656528, 0.105603, 1.26553, 0.967527, -0.0370262, 0.0679551, 1.29986, 0.984139, -730117e-8, 0.0283133, 1.33252, 0.999713, 0.0234648, -0.0121785, 1.36397, 0.0152135, -245447e-11, 0.122795, 304092e-12, 0.0151652, -615778e-10, 0.122399, 76292e-10, 0.0151181, -245948e-9, 0.122023, 304802e-10, 0.0151203, -553394e-9, 0.12203, 686634e-10, 0.015125, -983841e-9, 0.122037, 122463e-9, 0.0151427, -153774e-8, 0.12214, 192706e-9, 0.0151708, -22103e-7, 0.122237, 281219e-9, 0.0152115, -300741e-8, 0.12238, 390804e-9, 0.0152877, -392494e-8, 0.1227, 526317e-9, 0.015412, -496597e-8, 0.123244, 69443e-8, 0.0156201, -613314e-8, 0.124228, 90547e-8, 0.0159658, -744113e-8, 0.125945, 11732e-7, 0.0165674, -892546e-8, 0.129098, 151888e-8, 0.017487, -0.010627, 0.133865, 197007e-8, 0.018839, -0.0126043, 0.140682, 25637e-7, 0.020554, -0.0148814, 0.148534, 333637e-8, 0.0226727, -0.0175123, 0.157381, 433738e-8, 0.0251879, -0.0205266, 0.166685, 561664e-8, 0.0283635, -0.0240319, 0.177796, 725563e-8, 0.0318694, -0.0279432, 0.188251, 928811e-8, 0.0361044, -0.0324313, 0.200038, 0.011835, 0.0406656, -0.0373527, 0.210685, 0.0149146, 0.0463846, -0.0430132, 0.224182, 0.0187254, 0.0525696, -0.0491013, 0.23634, 0.0232283, 0.0598083, -0.0559175, 0.250013, 0.0286521, 0.0679437, -0.0633657, 0.263981, 0.0350634, 0.0771181, -0.0714602, 0.278072, 0.0425882, 0.0881273, -0.0803502, 0.29511, 0.0514487, 0.0996628, -0.0896903, 0.309976, 0.0615766, 0.112702, -0.099644, 0.325611, 0.0732139, 0.126488, -0.109829, 0.339321, 0.0862324, 0.142625, -0.120859, 0.35574, 0.101275, 0.15953, -0.131956, 0.369845, 0.117892, 0.176991, -0.143145, 0.38146, 0.136205, 0.199715, -0.155292, 0.40052, 0.157252, 0.220787, -0.167066, 0.412055, 0.179966, 0.243697, -0.178396, 0.423133, 0.204418, 0.272106, -0.190433, 0.439524, 0.232141, 0.297637, -0.201265, 0.447041, 0.261109, 0.325273, -0.211834, 0.454488, 0.292627, 0.357219, -0.221889, 0.465004, 0.326669, 0.387362, -0.230729, 0.468527, 0.362426, 0.423131, -0.23924, 0.475836, 0.401533, 0.45543, -0.246067, 0.475017, 0.441902, 0.493393, -0.251557, 0.478017, 0.484239, 0.526253, -0.255571, 0.4709, 0.528586, 0.560554, -0.257752, 0.463167, 0.574346, 0.599306, -0.258076, 0.456452, 0.621655, 0.634541, -0.256471, 0.443725, 0.670492, 0.668907, -0.253283, 0.428719, 0.721943, 0.705619, -0.247562, 0.411348, 0.772477, 0.739034, -0.240626, 0.388939, 0.8264, 0.771408, -0.231493, 0.36425, 0.881702, 0.803312, -0.220125, 0.337321, 0.9385, 0.828457, -0.206645, 0.305364, 0.997437, 0.854819, -0.190664, 0.273715, 1.05693, 0.878666, -0.171429, 0.242218, 1.11251, 0.898404, -0.149235, 0.209556, 1.16398, 0.917416, -0.12435, 0.176863, 1.21014, 0.933133, -0.0972703, 0.142775, 1.25178, 0.95066, -0.0683607, 0.106735, 1.29028, 0.968589, -0.0378724, 0.0681609, 1.32703, 0.984776, -605712e-8, 0.0273966, 1.36158, 0.99994, 0.0263276, -0.0138124, 1.3943, 867437e-8, -186005e-11, 0.0928979, 173682e-12, 864003e-8, -466389e-10, 0.0925237, 435505e-11, 864593e-8, -186594e-9, 0.0925806, 174322e-10, 864095e-8, -419639e-9, 0.0924903, 392862e-10, 863851e-8, -746272e-9, 0.0924589, 702598e-10, 868531e-8, -116456e-8, 0.0929, 111188e-9, 869667e-8, -167711e-8, 0.0928529, 163867e-9, 874332e-8, -228051e-8, 0.0930914, 23104e-8, 882709e-8, -297864e-8, 0.0935679, 31741e-8, 898874e-8, -377557e-8, 0.0946165, 430186e-9, 929346e-8, -469247e-8, 0.0967406, 580383e-9, 978271e-8, -575491e-8, 0.100084, 783529e-9, 0.0105746, -701514e-8, 0.105447, 106304e-8, 0.0116949, -851797e-8, 0.112494, 144685e-8, 0.0130419, -0.0102757, 0.119876, 196439e-8, 0.0148375, -0.012381, 0.129034, 266433e-8, 0.0168725, -0.01482, 0.137812, 358364e-8, 0.0193689, -0.0176563, 0.147696, 478132e-8, 0.0222691, -0.0209211, 0.157795, 631721e-8, 0.0256891, -0.0246655, 0.168431, 826346e-8, 0.0294686, -0.0288597, 0.178587, 0.0106714, 0.0340412, -0.0336441, 0.190251, 0.0136629, 0.0393918, -0.039033, 0.202999, 0.0173272, 0.0453947, -0.0450087, 0.215655, 0.0217448, 0.0521936, -0.0515461, 0.228686, 0.0269941, 0.0600279, -0.058817, 0.242838, 0.033272, 0.0692398, -0.0667228, 0.258145, 0.0406457, 0.0793832, -0.0752401, 0.273565, 0.0492239, 0.0902297, -0.0841851, 0.287735, 0.0590105, 0.102014, -0.0936479, 0.301161, 0.0702021, 0.116054, -0.103967, 0.317438, 0.0832001, 0.13191, -0.114622, 0.334166, 0.0977951, 0.148239, -0.125452, 0.348192, 0.113985, 0.165809, -0.136453, 0.361094, 0.131928, 0.184616, -0.147648, 0.373534, 0.151811, 0.207491, -0.159607, 0.39101, 0.174476, 0.230106, -0.171119, 0.402504, 0.198798, 0.257036, -0.182906, 0.418032, 0.225796, 0.281172, -0.193605, 0.425468, 0.254027, 0.312034, -0.204771, 0.440379, 0.285713, 0.340402, -0.214988, 0.445406, 0.319196, 0.370231, -0.224711, 0.44968, 0.35537, 0.407105, -0.233516, 0.460747, 0.393838, 0.439037, -0.240801, 0.460624, 0.433747, 0.47781, -0.24762, 0.465957, 0.477234, 0.510655, -0.251823, 0.460054, 0.52044, 0.550584, -0.255552, 0.459172, 0.567853, 0.585872, -0.257036, 0.450311, 0.615943, 0.620466, -0.257535, 0.437763, 0.667693, 0.660496, -0.255248, 0.426639, 0.718988, 0.695578, -0.251141, 0.409185, 0.772503, 0.732176, -0.244718, 0.39015, 0.827023, 0.760782, -0.236782, 0.362594, 0.885651, 0.79422, -0.225923, 0.33711, 0.943756, 0.824521, -0.213855, 0.308272, 1.00874, 0.854964, -0.197723, 0.278529, 1.06764, 0.878065, -0.179209, 0.246208, 1.12836, 0.899834, -0.157569, 0.21329, 1.18318, 0.918815, -0.133206, 0.181038, 1.23161, 0.934934, -0.106545, 0.146993, 1.27644, 0.952115, -0.0780574, 0.111175, 1.31842, 0.96906, -0.0478279, 0.0728553, 1.35839, 0.985178, -0.0160014, 0.032579, 1.39697, 1.00039, 0.0173126, -95256e-7, 1.43312, 384146e-8, -124311e-11, 0.0613583, 778271e-13, 390023e-8, -314043e-10, 0.0622919, 196626e-11, 389971e-8, -125622e-9, 0.0622632, 787379e-11, 389491e-8, -282352e-9, 0.0620659, 1778e-8, 391618e-8, -502512e-9, 0.0624687, 320918e-10, 392662e-8, -784458e-9, 0.0625113, 515573e-10, 396053e-8, -112907e-8, 0.0628175, 778668e-10, 401911e-8, -153821e-8, 0.0633286, 113811e-9, 414994e-8, -20208e-7, 0.0646443, 16445e-8, 441223e-8, -260007e-8, 0.0673886, 237734e-9, 484427e-8, -33097e-7, 0.0716528, 345929e-9, 549109e-8, -418966e-8, 0.0774998, 505987e-9, 636293e-8, -527331e-8, 0.0844758, 739208e-9, 746566e-8, -660428e-8, 0.0921325, 107347e-8, 876625e-8, -818826e-8, 0.0997067, 153691e-8, 0.0103125, -0.0100811, 0.107433, 217153e-8, 0.0123309, -0.0123643, 0.117088, 303427e-8, 0.0146274, -0.0150007, 0.126438, 416018e-8, 0.0172295, -0.0180531, 0.135672, 561513e-8, 0.0204248, -0.0215962, 0.146244, 7478e-6, 0.0241597, -0.0256234, 0.157481, 981046e-8, 0.0284693, -0.0302209, 0.169125, 0.0127148, 0.033445, -0.0353333, 0.181659, 0.0162453, 0.0391251, -0.0410845, 0.1944, 0.0205417, 0.0454721, -0.0473451, 0.207082, 0.0256333, 0.0530983, -0.0542858, 0.221656, 0.0317036, 0.0615356, -0.0618384, 0.236036, 0.0388319, 0.0703363, -0.0697631, 0.248398, 0.046974, 0.0810391, -0.0784757, 0.263611, 0.0565246, 0.0920144, -0.0873488, 0.275857, 0.0671724, 0.105584, -0.0973652, 0.292555, 0.0798105, 0.119506, -0.107271, 0.306333, 0.0935945, 0.134434, -0.117608, 0.318888, 0.109106, 0.153399, -0.128938, 0.337552, 0.127074, 0.171258, -0.139944, 0.349955, 0.14643, 0.191059, -0.151288, 0.361545, 0.168, 0.215069, -0.163018, 0.378421, 0.192082, 0.237838, -0.174226, 0.38879, 0.217838, 0.266965, -0.186063, 0.405857, 0.246931, 0.292827, -0.196909, 0.414146, 0.277505, 0.324352, -0.207473, 0.426955, 0.310711, 0.354427, -0.217713, 0.433429, 0.346794, 0.389854, -0.227183, 0.443966, 0.385237, 0.420749, -0.235131, 0.44471, 0.424955, 0.459597, -0.242786, 0.451729, 0.468446, 0.495316, -0.248767, 0.45072, 0.513422, 0.534903, -0.253351, 0.450924, 0.560618, 0.572369, -0.256277, 0.445266, 0.609677, 0.612383, -0.2576, 0.438798, 0.660995, 0.644037, -0.256931, 0.421693, 0.713807, 0.686749, -0.254036, 0.4109, 0.767616, 0.719814, -0.249785, 0.390151, 0.82533, 0.754719, -0.244283, 0.367847, 0.888311, 0.792022, -0.235076, 0.345013, 0.948177, 0.822404, -0.225061, 0.316193, 1.01661, 0.853084, -0.211113, 0.287013, 1.08075, 0.879871, -0.19449, 0.255424, 1.14501, 0.901655, -0.174023, 0.222879, 1.20203, 0.919957, -0.1509, 0.18989, 1.25698, 0.938412, -0.124923, 0.15606, 1.30588, 0.953471, -0.0968139, 0.120512, 1.3529, 0.970451, -0.066734, 0.0828515, 1.3986, 0.985522, -0.034734, 0.0424458, 1.44148, 1.00099, -102222e-8, 678929e-9, 1.48398, 965494e-9, -627338e-12, 0.0306409, 197672e-13, 99168e-8, -158573e-10, 0.0314638, 499803e-12, 991068e-9, -634012e-10, 0.031363, 200682e-11, 974567e-9, -14144e-8, 0.03036, 457312e-11, 998079e-9, -252812e-9, 0.031496, 860131e-11, 102243e-8, -396506e-9, 0.0319955, 148288e-10, 107877e-8, -577593e-9, 0.0331376, 249141e-10, 121622e-8, -816816e-9, 0.0359396, 423011e-10, 14455e-7, -113761e-8, 0.0399652, 724613e-10, 178791e-8, -156959e-8, 0.0450556, 123929e-9, 225668e-8, -214064e-8, 0.0508025, 208531e-9, 285627e-8, -287655e-8, 0.0568443, 341969e-9, 35991e-7, -380271e-8, 0.0630892, 544158e-9, 455524e-8, -496264e-8, 0.0702204, 842423e-9, 569143e-8, -63793e-7, 0.0773426, 126704e-8, 716928e-8, -813531e-8, 0.0860839, 186642e-8, 885307e-8, -0.0101946, 0.0944079, 267014e-8, 0.0109316, -0.0126386, 0.103951, 374033e-8, 0.0133704, -0.0154876, 0.113786, 51304e-7, 0.0161525, -0.0187317, 0.123477, 688858e-8, 0.0194267, -0.0224652, 0.133986, 910557e-8, 0.0230967, -0.0265976, 0.143979, 0.0118074, 0.0273627, -0.0312848, 0.154645, 0.0151266, 0.0323898, -0.0365949, 0.166765, 0.0191791, 0.0379225, -0.0422914, 0.177932, 0.0239236, 0.0447501, -0.0487469, 0.19167, 0.0296568, 0.0519391, -0.0556398, 0.203224, 0.0362924, 0.0599464, -0.0631646, 0.215652, 0.0440585, 0.0702427, -0.0714308, 0.232089, 0.0531619, 0.0806902, -0.0800605, 0.245258, 0.0634564, 0.0923194, -0.0892815, 0.258609, 0.0752481, 0.106938, -0.09931, 0.276654, 0.0888914, 0.121238, -0.109575, 0.289847, 0.104055, 0.138817, -0.120461, 0.307566, 0.121266, 0.15595, -0.131209, 0.320117, 0.139944, 0.178418, -0.143049, 0.339677, 0.161591, 0.197875, -0.154074, 0.349886, 0.184303, 0.224368, -0.166307, 0.369352, 0.210669, 0.252213, -0.178051, 0.386242, 0.238895, 0.277321, -0.189335, 0.395294, 0.269182, 0.310332, -0.200683, 0.412148, 0.302508, 0.338809, -0.210856, 0.418266, 0.337264, 0.372678, -0.220655, 0.428723, 0.374881, 0.405632, -0.230053, 0.433887, 0.415656, 0.442293, -0.237993, 0.439911, 0.457982, 0.477256, -0.244897, 0.440175, 0.502831, 0.515592, -0.250657, 0.441079, 0.550277, 0.550969, -0.255459, 0.435219, 0.601102, 0.592883, -0.257696, 0.432882, 0.651785, 0.629092, -0.259894, 0.421054, 0.708961, 0.672033, -0.258592, 0.41177, 0.763806, 0.709147, -0.256525, 0.395267, 0.824249, 0.745367, -0.254677, 0.375013, 0.8951, 0.784715, -0.247892, 0.353906, 0.959317, 0.818107, -0.240162, 0.327801, 1.03153, 0.847895, -0.229741, 0.298821, 1.10601, 0.879603, -0.213084, 0.269115, 1.164, 0.902605, -0.195242, 0.236606, 1.22854, 0.922788, -0.174505, 0.203442, 1.29017, 0.944831, -0.150169, 0.169594, 1.34157, 0.959656, -0.124099, 0.135909, 1.3956, 0.972399, -0.0960626, 0.0990563, 1.45128, 0.986549, -0.0657097, 0.0602348, 1.50312, 1.00013, -0.0333558, 0.0186694, 1.55364, 619747e-11, -1e-7, 778326e-8, 796756e-16, 237499e-13, -999999e-13, 282592e-10, 114596e-15, 100292e-11, -166369e-11, 250354e-9, 677492e-14, 350752e-11, -637769e-11, 357289e-9, 631655e-13, 826445e-11, -174689e-10, 516179e-9, 31851e-11, 242481e-10, -450868e-10, 10223e-7, 130577e-11, 455631e-10, -89044e-9, 144302e-8, 374587e-11, 971222e-10, -178311e-9, 241912e-8, 102584e-10, 171403e-9, -313976e-9, 354938e-8, 236481e-10, 292747e-9, -520026e-9, 513765e-8, 496014e-10, 789827e-9, -118187e-8, 0.0238621, 139056e-9, 114093e-8, -171827e-8, 0.0286691, 244093e-9, 176119e-8, -249667e-8, 0.0368565, 420623e-9, 22233e-7, -333742e-8, 0.0400469, 65673e-8, 343382e-8, -481976e-8, 0.0535751, 109323e-8, 427602e-8, -600755e-8, 0.057099, 155268e-8, 461435e-8, -737637e-8, 0.0551084, 215031e-8, 695698e-8, -971401e-8, 0.0715767, 316529e-8, 867619e-8, -0.0120943, 0.0793314, 436995e-8, 0.0106694, -0.0148202, 0.0869391, 58959e-7, 0.0140351, -0.0183501, 0.101572, 798757e-8, 0.0168939, -0.022006, 0.11018, 0.0104233, 0.020197, -0.0261568, 0.119041, 0.0134167, 0.0254702, -0.0312778, 0.135404, 0.0173009, 0.0298384, -0.0362469, 0.1437, 0.0215428, 0.035159, -0.042237, 0.15512, 0.0268882, 0.0427685, -0.0488711, 0.17128, 0.033235, 0.0494848, -0.0557997, 0.181813, 0.0404443, 0.0592394, -0.0635578, 0.198745, 0.0490043, 0.0681463, -0.071838, 0.210497, 0.0588239, 0.0804753, -0.0809297, 0.228864, 0.0702835, 0.0942205, -0.0906488, 0.247008, 0.0834012, 0.106777, -0.100216, 0.258812, 0.0975952, 0.124471, -0.110827, 0.278617, 0.114162, 0.138389, -0.121193, 0.287049, 0.131983, 0.159543, -0.13253, 0.307151, 0.152541, 0.176432, -0.143611, 0.31564, 0.174673, 0.201723, -0.15548, 0.33538, 0.199842, 0.229721, -0.167166, 0.355256, 0.227097, 0.250206, -0.178238, 0.360047, 0.256014, 0.282118, -0.189905, 0.378761, 0.28855, 0.312821, -0.201033, 0.39181, 0.323348, 0.341482, -0.211584, 0.397716, 0.360564, 0.377368, -0.221314, 0.410141, 0.400004, 0.418229, -0.230474, 0.423485, 0.442371, 0.444881, -0.239443, 0.418874, 0.488796, 0.488899, -0.245987, 0.427545, 0.535012, 0.520317, -0.253948, 0.422147, 0.589678, 0.568566, -0.256616, 0.42719, 0.637683, 0.599607, -0.26376, 0.415114, 0.703363, 0.64222, -0.268687, 0.408715, 0.771363, 0.685698, -0.2694, 0.399722, 0.83574, 0.732327, -0.266642, 0.388651, 0.897764, 0.769873, -0.267712, 0.369198, 0.983312, 0.806733, -0.263479, 0.346802, 1.06222, 0.843466, -0.254575, 0.321368, 1.13477, 0.873008, -0.242749, 0.29211, 1.20712, 0.908438, -0.22725, 0.262143, 1.27465, 0.936321, -0.207621, 0.228876, 1.33203, 0.950353, -0.187932, 0.19484, 1.40439, 0.96442, -0.165154, 0.163178, 1.4732, 0.979856, -0.139302, 0.127531, 1.53574, 0.982561, -0.11134, 0.0903457, 1.59982, 0.996389, -0.0808124, 0.0489007, 1.6577]; - const LTC_MAT_2 = [1, 0, 0, 0, 1, 791421e-36, 0, 0, 1, 104392e-29, 0, 0, 1, 349405e-26, 0, 0, 1, 109923e-23, 0, 0, 1, 947414e-22, 0, 0, 1, 359627e-20, 0, 0, 1, 772053e-19, 0, 0, 1, 108799e-17, 0, 0, 1, 110655e-16, 0, 0, 1, 865818e-16, 0, 0, 0.999998, 545037e-15, 0, 0, 0.999994, 285095e-14, 0, 0, 0.999989, 126931e-13, 0, 0, 0.999973, 489938e-13, 0, 0, 0.999947, 166347e-12, 0, 0, 0.999894, 502694e-12, 0, 0, 0.999798, 136532e-11, 0, 0, 0.999617, 335898e-11, 0, 0, 0.999234, 752126e-11, 0, 0, 0.998258, 152586e-10, 0, 0, 0.99504, 266207e-10, 0, 0, 0.980816, 236802e-10, 0, 0, 0.967553, 207684e-11, 0, 0, 0.966877, 403733e-11, 0, 0, 0.965752, 741174e-11, 0, 0, 0.96382, 127746e-10, 0, 0, 0.960306, 202792e-10, 0, 0, 0.953619, 280232e-10, 0, 0, 0.941103, 278816e-10, 0, 0, 0.926619, 160221e-10, 0, 0, 0.920983, 235164e-10, 0, 0, 0.912293, 311924e-10, 0, 0.0158731, 0.899277, 348118e-10, 0, 0.0476191, 0.880884, 26041e-9, 0, 0.0793651, 0.870399, 338726e-10, 0, 0.111111, 0.856138, 392906e-10, 0, 0.142857, 0.837436, 372874e-10, 0, 0.174603, 0.820973, 392558e-10, 0, 0.206349, 0.803583, 434658e-10, 0, 0.238095, 0.782168, 40256e-9, 0, 0.269841, 0.764107, 448159e-10, 0, 0.301587, 0.743092, 457627e-10, 0, 0.333333, 0.721626, 455314e-10, 0, 0.365079, 0.700375, 477335e-10, 0, 0.396825, 0.677334, 461072e-10, 0, 0.428571, 0.655702, 484393e-10, 0, 0.460317, 0.632059, 464583e-10, 0, 0.492064, 0.610125, 483923e-10, 0, 0.52381, 0.58653, 464342e-10, 0, 0.555556, 0.564508, 477033e-10, 0, 0.587302, 0.541405, 459263e-10, 0, 0.619048, 0.519556, 46412e-9, 0, 0.650794, 0.497292, 448913e-10, 0, 0.68254, 0.475898, 445789e-10, 0, 0.714286, 0.454722, 433496e-10, 0, 0.746032, 0.434042, 423054e-10, 0, 0.777778, 0.414126, 413737e-10, 0, 0.809524, 0.394387, 397265e-10, 0, 0.84127, 0.375841, 390709e-10, 0, 0.873016, 0.357219, 369938e-10, 0, 0.904762, 0.340084, 365618e-10, 0, 0.936508, 0.322714, 342533e-10, 0, 0.968254, 0.306974, 339596e-10, 0, 1, 1, 101524e-23, 0, 0, 1, 10292e-22, 0, 0, 1, 130908e-23, 0, 0, 1, 473331e-23, 0, 0, 1, 625319e-22, 0, 0, 1, 107932e-20, 0, 0, 1, 163779e-19, 0, 0, 1, 203198e-18, 0, 0, 1, 204717e-17, 0, 0, 0.999999, 168995e-16, 0, 0, 0.999998, 115855e-15, 0, 0, 0.999996, 66947e-14, 0, 0, 0.999991, 330863e-14, 0, 0, 0.999983, 141737e-13, 0, 0, 0.999968, 532626e-13, 0, 0, 0.99994, 177431e-12, 0, 0, 0.999891, 528835e-12, 0, 0, 0.999797, 142169e-11, 0, 0, 0.999617, 347057e-11, 0, 0, 0.999227, 77231e-10, 0, 0, 0.998239, 155753e-10, 0, 0, 0.994937, 268495e-10, 0, 0, 0.980225, 213742e-10, 0, 0, 0.967549, 21631e-10, 0, 0, 0.966865, 417989e-11, 0, 0, 0.965739, 763341e-11, 0, 0, 0.963794, 130892e-10, 0, 0, 0.960244, 206456e-10, 0, 0, 0.953495, 282016e-10, 0, 148105e-9, 0.940876, 271581e-10, 0, 2454e-6, 0.926569, 164159e-10, 0, 867491e-8, 0.920905, 239521e-10, 0, 0.01956, 0.912169, 315127e-10, 0, 0.035433, 0.899095, 346626e-10, 0, 0.056294, 0.882209, 290223e-10, 0, 0.0818191, 0.870272, 342992e-10, 0, 0.111259, 0.855977, 394164e-10, 0, 0.142857, 0.837431, 372343e-10, 0, 0.174603, 0.820826, 396691e-10, 0, 0.206349, 0.803408, 435395e-10, 0, 0.238095, 0.782838, 419579e-10, 0, 0.269841, 0.763941, 450953e-10, 0, 0.301587, 0.742904, 455847e-10, 0, 0.333333, 0.721463, 458833e-10, 0, 0.365079, 0.700197, 477159e-10, 0, 0.396825, 0.677501, 470641e-10, 0, 0.428571, 0.655527, 484732e-10, 0, 0.460317, 0.6324, 476834e-10, 0, 0.492064, 0.609964, 484213e-10, 0, 0.52381, 0.586839, 475541e-10, 0, 0.555556, 0.564353, 476951e-10, 0, 0.587302, 0.541589, 467611e-10, 0, 0.619048, 0.519413, 463493e-10, 0, 0.650794, 0.497337, 453994e-10, 0, 0.68254, 0.475797, 445308e-10, 0, 0.714286, 0.454659, 435787e-10, 0, 0.746032, 0.434065, 424839e-10, 0, 0.777778, 0.414018, 41436e-9, 0, 0.809524, 0.39455, 401902e-10, 0, 0.84127, 0.375742, 390813e-10, 0, 0.873016, 0.357501, 377116e-10, 0, 0.904762, 0.339996, 36535e-9, 0, 0.936508, 0.323069, 351265e-10, 0, 0.968254, 0.306897, 339112e-10, 0, 1, 1, 10396e-19, 0, 0, 1, 104326e-20, 0, 0, 1, 110153e-20, 0, 0, 1, 144668e-20, 0, 0, 1, 34528e-19, 0, 0, 1, 175958e-19, 0, 0, 1, 12627e-17, 0, 0, 1, 936074e-18, 0, 0, 1, 645742e-17, 0, 0, 0.999998, 401228e-16, 0, 0, 0.999997, 222338e-15, 0, 0, 0.999995, 10967e-13, 0, 0, 0.999991, 482132e-14, 0, 0, 0.999981, 189434e-13, 0, 0, 0.999967, 667716e-13, 0, 0, 0.999938, 212066e-12, 0, 0, 0.999886, 60977e-11, 0, 0, 0.999792, 159504e-11, 0, 0, 0.999608, 381191e-11, 0, 0, 0.999209, 833727e-11, 0, 0, 0.998179, 165288e-10, 0, 0, 0.994605, 274387e-10, 0, 0, 0.979468, 167316e-10, 0, 0, 0.967529, 242877e-11, 0, 0, 0.966836, 461696e-11, 0, 0, 0.96569, 830977e-11, 0, 0, 0.963706, 140427e-10, 0, 244659e-11, 0.960063, 217353e-10, 0, 760774e-9, 0.953113, 286606e-10, 0, 367261e-8, 0.940192, 247691e-10, 0, 940263e-8, 0.927731, 195814e-10, 0, 0.018333, 0.920669, 252531e-10, 0, 0.0306825, 0.911799, 324277e-10, 0, 0.0465556, 0.89857, 340982e-10, 0, 0.0659521, 0.883283, 319622e-10, 0, 0.0887677, 0.86989, 35548e-9, 0, 0.114784, 0.855483, 397143e-10, 0, 0.143618, 0.837987, 391665e-10, 0, 0.174606, 0.820546, 411306e-10, 0, 0.206349, 0.802878, 436753e-10, 0, 0.238095, 0.783402, 444e-7, 0, 0.269841, 0.763439, 458726e-10, 0, 0.301587, 0.742925, 467097e-10, 0, 0.333333, 0.721633, 478887e-10, 0, 0.365079, 0.69985, 481251e-10, 0, 0.396825, 0.67783, 491811e-10, 0, 0.428571, 0.655126, 488199e-10, 0, 0.460318, 0.632697, 496025e-10, 0, 0.492064, 0.609613, 48829e-9, 0, 0.52381, 0.587098, 492754e-10, 0, 0.555556, 0.564119, 482625e-10, 0, 0.587302, 0.541813, 482807e-10, 0, 0.619048, 0.519342, 471552e-10, 0, 0.650794, 0.497514, 466765e-10, 0, 0.68254, 0.475879, 455582e-10, 0, 0.714286, 0.454789, 446007e-10, 0, 0.746032, 0.434217, 435382e-10, 0, 0.777778, 0.414086, 421753e-10, 0, 0.809524, 0.394744, 412093e-10, 0, 0.84127, 0.375782, 396634e-10, 0, 0.873016, 0.357707, 386419e-10, 0, 0.904762, 0.340038, 370345e-10, 0, 0.936508, 0.323284, 359725e-10, 0, 0.968254, 0.306954, 3436e-8, 0, 1, 1, 599567e-19, 0, 0, 1, 600497e-19, 0, 0, 1, 614839e-19, 0, 0, 1, 686641e-19, 0, 0, 1, 972658e-19, 0, 0, 1, 221271e-18, 0, 0, 1, 833195e-18, 0, 0, 1, 403601e-17, 0, 0, 0.999999, 206001e-16, 0, 0, 0.999998, 101739e-15, 0, 0, 0.999997, 470132e-15, 0, 0, 0.999993, 200436e-14, 0, 0, 0.999988, 783682e-14, 0, 0, 0.999979, 280338e-13, 0, 0, 0.999962, 917033e-13, 0, 0, 0.999933, 274514e-12, 0, 0, 0.999881, 753201e-12, 0, 0, 0.999783, 189826e-11, 0, 0, 0.999594, 440279e-11, 0, 0, 0.999178, 93898e-10, 0, 0, 0.998073, 181265e-10, 0, 0, 0.993993, 280487e-10, 0, 0, 0.979982, 149422e-10, 0, 0, 0.968145, 378481e-11, 0, 0, 0.966786, 53771e-10, 0, 0, 0.965611, 947508e-11, 0, 388934e-10, 0.963557, 156616e-10, 0, 9693e-7, 0.959752, 235144e-10, 0, 370329e-8, 0.952461, 291568e-10, 0, 868428e-8, 0.940193, 240102e-10, 0, 0.0161889, 0.929042, 231235e-10, 0, 0.0263948, 0.920266, 273968e-10, 0, 0.0394088, 0.911178, 337915e-10, 0, 0.0552818, 0.897873, 333629e-10, 0, 0.0740138, 0.884053, 351405e-10, 0, 0.0955539, 0.869455, 378034e-10, 0, 0.119795, 0.854655, 399378e-10, 0, 0.14656, 0.838347, 419108e-10, 0, 0.175573, 0.820693, 440831e-10, 0, 0.206388, 0.802277, 445599e-10, 0, 0.238095, 0.783634, 472691e-10, 0, 0.269841, 0.763159, 476984e-10, 0, 0.301587, 0.742914, 491487e-10, 0, 0.333333, 0.721662, 502312e-10, 0, 0.365079, 0.699668, 502817e-10, 0, 0.396825, 0.677839, 51406e-9, 0, 0.428571, 0.655091, 511095e-10, 0, 0.460317, 0.632665, 516067e-10, 0, 0.492064, 0.609734, 512255e-10, 0, 0.52381, 0.587043, 510263e-10, 0, 0.555556, 0.564298, 50565e-9, 0, 0.587302, 0.541769, 497951e-10, 0, 0.619048, 0.519529, 492698e-10, 0, 0.650794, 0.497574, 482066e-10, 0, 0.68254, 0.476028, 473689e-10, 0, 0.714286, 0.454961, 461941e-10, 0, 0.746032, 0.434341, 450618e-10, 0, 0.777778, 0.414364, 438355e-10, 0, 0.809524, 0.394832, 424196e-10, 0, 0.84127, 0.376109, 412563e-10, 0, 0.873016, 0.35779, 396226e-10, 0, 0.904762, 0.340379, 384886e-10, 0, 0.936508, 0.323385, 368214e-10, 0, 0.968254, 0.307295, 356636e-10, 0, 1, 1, 106465e-17, 0, 0, 1, 106555e-17, 0, 0, 1, 107966e-17, 0, 0, 1, 114601e-17, 0, 0, 1, 137123e-17, 0, 0, 1, 21243e-16, 0, 0, 0.999999, 489653e-17, 0, 0, 0.999999, 160283e-16, 0, 0, 0.999998, 62269e-15, 0, 0, 0.999997, 251859e-15, 0, 0, 0.999996, 996192e-15, 0, 0, 0.999992, 374531e-14, 0, 0, 0.999986, 132022e-13, 0, 0, 0.999975, 433315e-13, 0, 0, 0.999959, 131956e-12, 0, 0, 0.999927, 372249e-12, 0, 0, 0.999871, 972461e-12, 0, 0, 0.999771, 235343e-11, 0, 0, 0.999572, 52768e-10, 0, 0, 0.999133, 109237e-10, 0, 0, 0.997912, 203675e-10, 0, 0, 0.993008, 279396e-10, 0, 0, 0.980645, 139604e-10, 0, 0, 0.970057, 646596e-11, 0, 0, 0.966717, 65089e-10, 0, 474145e-10, 0.965497, 111863e-10, 0, 89544e-8, 0.96334, 179857e-10, 0, 32647e-7, 0.959294, 259045e-10, 0, 75144e-7, 0.951519, 292327e-10, 0, 0.0138734, 0.940517, 249769e-10, 0, 0.0224952, 0.93014, 26803e-9, 0, 0.0334828, 0.91972, 303656e-10, 0, 0.0468973, 0.910294, 353323e-10, 0, 0.0627703, 0.897701, 351002e-10, 0, 0.0811019, 0.884522, 388104e-10, 0, 0.10186, 0.869489, 412932e-10, 0, 0.124985, 0.853983, 415781e-10, 0, 0.150372, 0.838425, 454066e-10, 0, 0.177868, 0.820656, 471624e-10, 0, 0.207245, 0.801875, 475243e-10, 0, 0.238143, 0.783521, 505621e-10, 0, 0.269841, 0.763131, 50721e-9, 0, 0.301587, 0.74261, 523293e-10, 0, 0.333333, 0.72148, 528699e-10, 0, 0.365079, 0.699696, 538677e-10, 0, 0.396825, 0.677592, 539255e-10, 0, 0.428571, 0.65525, 546367e-10, 0, 0.460317, 0.632452, 541348e-10, 0, 0.492064, 0.609903, 544976e-10, 0, 0.52381, 0.586928, 536201e-10, 0, 0.555556, 0.564464, 535185e-10, 0, 0.587302, 0.541801, 524949e-10, 0, 0.619048, 0.519681, 51812e-9, 0, 0.650794, 0.497685, 507687e-10, 0, 0.68254, 0.47622, 496243e-10, 0, 0.714286, 0.455135, 485714e-10, 0, 0.746032, 0.4346, 471847e-10, 0, 0.777778, 0.414564, 459294e-10, 0, 0.809524, 0.395165, 444705e-10, 0, 0.84127, 0.376333, 430772e-10, 0, 0.873016, 0.358197, 416229e-10, 0, 0.904762, 0.34064, 401019e-10, 0, 0.936508, 0.323816, 386623e-10, 0, 0.968254, 0.307581, 370933e-10, 0, 1, 1, 991541e-17, 0, 0, 1, 992077e-17, 0, 0, 1, 100041e-16, 0, 0, 1, 10385e-15, 0, 0, 1, 115777e-16, 0, 0, 1, 150215e-16, 0, 0, 0.999999, 254738e-16, 0, 0, 0.999999, 598822e-16, 0, 0, 0.999998, 179597e-15, 0, 0, 0.999997, 602367e-15, 0, 0, 0.999994, 206835e-14, 0, 0, 0.99999, 694952e-14, 0, 0, 0.999984, 223363e-13, 0, 0, 0.999972, 678578e-13, 0, 0, 0.999952, 193571e-12, 0, 0, 0.999919, 516594e-12, 0, 0, 0.99986, 128739e-11, 0, 0, 0.999753, 299298e-11, 0, 0, 0.999546, 648258e-11, 0, 0, 0.999074, 129985e-10, 0, 0, 0.997671, 232176e-10, 0, 0, 0.991504, 256701e-10, 0, 0, 0.981148, 131141e-10, 0, 0, 0.971965, 869048e-11, 0, 280182e-10, 0.966624, 808301e-11, 0, 695475e-9, 0.965344, 135235e-10, 0, 265522e-8, 0.963048, 210592e-10, 0, 622975e-8, 0.958673, 287473e-10, 0, 0.0116234, 0.950262, 281379e-10, 0, 0.018976, 0.940836, 271089e-10, 0, 0.0283844, 0.930996, 30926e-9, 0, 0.0399151, 0.919848, 348359e-10, 0, 0.0536063, 0.909136, 366092e-10, 0, 0.0694793, 0.897554, 384162e-10, 0, 0.0875342, 0.884691, 430971e-10, 0, 0.107749, 0.869414, 447803e-10, 0, 0.130087, 0.853462, 452858e-10, 0, 0.154481, 0.838187, 495769e-10, 0, 0.180833, 0.820381, 502709e-10, 0, 0.209005, 0.801844, 522713e-10, 0, 0.238791, 0.783061, 541505e-10, 0, 0.269869, 0.763205, 553712e-10, 0, 0.301587, 0.742362, 564909e-10, 0, 0.333333, 0.721393, 572646e-10, 0, 0.365079, 0.699676, 581012e-10, 0, 0.396825, 0.677395, 58096e-9, 0, 0.428571, 0.655208, 585766e-10, 0, 0.460317, 0.632451, 583602e-10, 0, 0.492064, 0.609839, 580234e-10, 0, 0.52381, 0.587093, 577161e-10, 0, 0.555556, 0.564467, 568447e-10, 0, 0.587302, 0.542043, 563166e-10, 0, 0.619048, 0.519826, 55156e-9, 0, 0.650794, 0.497952, 541682e-10, 0, 0.68254, 0.476477, 528971e-10, 0, 0.714286, 0.455412, 514952e-10, 0, 0.746032, 0.434926, 502222e-10, 0, 0.777778, 0.4149, 485779e-10, 0, 0.809524, 0.395552, 472242e-10, 0, 0.84127, 0.376712, 454891e-10, 0, 0.873016, 0.358622, 440924e-10, 0, 0.904762, 0.341048, 422984e-10, 0, 0.936508, 0.324262, 408582e-10, 0, 0.968254, 0.308013, 390839e-10, 0, 1, 1, 613913e-16, 0, 0, 1, 614145e-16, 0, 0, 1, 617708e-16, 0, 0, 1, 633717e-16, 0, 0, 1, 681648e-16, 0, 0, 1, 808291e-16, 0, 0, 1, 114608e-15, 0, 0, 0.999998, 210507e-15, 0, 0, 0.999997, 499595e-15, 0, 0, 0.999995, 139897e-14, 0, 0, 0.999994, 419818e-14, 0, 0, 0.999988, 127042e-13, 0, 0, 0.999979, 375153e-13, 0, 0, 0.999965, 106206e-12, 0, 0, 0.999945, 285381e-12, 0, 0, 0.999908, 723611e-12, 0, 0, 0.999846, 17255e-10, 0, 0, 0.999733, 386104e-11, 0, 0, 0.999511, 808493e-11, 0, 0, 0.998993, 156884e-10, 0, 0, 0.997326, 265538e-10, 0, 0, 0.989706, 206466e-10, 0, 0, 0.981713, 130756e-10, 0, 70005e-10, 0.973636, 106473e-10, 0, 464797e-9, 0.966509, 10194e-9, 0, 201743e-8, 0.965149, 165881e-10, 0, 497549e-8, 0.962669, 249147e-10, 0, 953262e-8, 0.95786, 317449e-10, 0, 0.0158211, 0.949334, 281045e-10, 0, 0.0239343, 0.941041, 303263e-10, 0, 0.0339372, 0.931575, 356754e-10, 0, 0.0458738, 0.920102, 397075e-10, 0, 0.059772, 0.908002, 384886e-10, 0, 0.075645, 0.897269, 43027e-9, 0, 0.0934929, 0.884559, 479925e-10, 0, 0.113302, 0.869161, 48246e-9, 0, 0.135045, 0.853342, 509505e-10, 0, 0.158678, 0.837633, 542846e-10, 0, 0.184136, 0.820252, 554139e-10, 0, 0.211325, 0.801872, 581412e-10, 0, 0.240113, 0.782418, 585535e-10, 0, 0.270306, 0.7631, 610923e-10, 0, 0.301594, 0.742183, 613678e-10, 0, 0.333333, 0.721098, 627275e-10, 0, 0.365079, 0.699512, 629413e-10, 0, 0.396825, 0.677372, 636351e-10, 0, 0.428571, 0.655059, 633555e-10, 0, 0.460317, 0.632567, 636513e-10, 0, 0.492064, 0.609784, 628965e-10, 0, 0.52381, 0.587237, 625546e-10, 0, 0.555556, 0.564525, 615825e-10, 0, 0.587302, 0.542181, 605048e-10, 0, 0.619048, 0.520017, 596329e-10, 0, 0.650794, 0.498204, 581516e-10, 0, 0.68254, 0.476742, 569186e-10, 0, 0.714286, 0.455803, 553833e-10, 0, 0.746032, 0.435251, 537807e-10, 0, 0.777778, 0.415374, 522025e-10, 0, 0.809524, 0.395921, 503421e-10, 0, 0.84127, 0.377253, 488211e-10, 0, 0.873016, 0.359021, 468234e-10, 0, 0.904762, 0.341637, 453269e-10, 0, 0.936508, 0.3247, 433014e-10, 0, 0.968254, 0.308625, 418007e-10, 0, 1, 1, 286798e-15, 0, 0, 1, 286877e-15, 0, 0, 1, 288094e-15, 0, 0, 1, 293506e-15, 0, 0, 1, 309262e-15, 0, 0, 0.999999, 348593e-15, 0, 0, 0.999999, 444582e-15, 0, 0, 0.999998, 688591e-15, 0, 0, 0.999996, 134391e-14, 0, 0, 0.999993, 317438e-14, 0, 0, 0.999989, 835609e-14, 0, 0, 0.999983, 228677e-13, 0, 0, 0.999974, 623361e-13, 0, 0, 0.999959, 165225e-12, 0, 0, 0.999936, 419983e-12, 0, 0, 0.999896, 101546e-11, 0, 0, 0.99983, 232376e-11, 0, 0, 0.999709, 50156e-10, 0, 0, 0.999469, 10167e-9, 0, 0, 0.998886, 190775e-10, 0, 0, 0.996819, 300511e-10, 0, 0, 0.988837, 185092e-10, 0, 168222e-12, 0.982178, 134622e-10, 0, 259622e-9, 0.975017, 125961e-10, 0, 142595e-8, 0.967101, 13507e-9, 0, 382273e-8, 0.964905, 205003e-10, 0, 764164e-8, 0.96218, 29546e-9, 0, 0.0130121, 0.956821, 343738e-10, 0, 0.0200253, 0.948829, 305063e-10, 0, 0.0287452, 0.941092, 346487e-10, 0, 0.039218, 0.931883, 412061e-10, 0, 0.0514748, 0.920211, 444651e-10, 0, 0.0655351, 0.907307, 431252e-10, 0, 0.0814082, 0.89684, 490382e-10, 0, 0.0990939, 0.884119, 53334e-9, 0, 0.118583, 0.869148, 54114e-9, 0, 0.139856, 0.853377, 578536e-10, 0, 0.162882, 0.836753, 592285e-10, 0, 0.187615, 0.820063, 622787e-10, 0, 0.213991, 0.801694, 645492e-10, 0, 0.241918, 0.782116, 65353e-9, 0, 0.271267, 0.762673, 674344e-10, 0, 0.301847, 0.742133, 682788e-10, 0, 0.333333, 0.720779, 691959e-10, 0, 0.365079, 0.699386, 696817e-10, 0, 0.396826, 0.67732, 699583e-10, 0, 0.428572, 0.654888, 698447e-10, 0, 0.460318, 0.632499, 694063e-10, 0, 0.492064, 0.609825, 691612e-10, 0, 0.52381, 0.587287, 681576e-10, 0, 0.555556, 0.564743, 674138e-10, 0, 0.587302, 0.542409, 661617e-10, 0, 0.619048, 0.520282, 647785e-10, 0, 0.650794, 0.498506, 633836e-10, 0, 0.68254, 0.477102, 615905e-10, 0, 0.714286, 0.456167, 601013e-10, 0, 0.746032, 0.435728, 581457e-10, 0, 0.777778, 0.415809, 564215e-10, 0, 0.809524, 0.396517, 544997e-10, 0, 0.84127, 0.377737, 525061e-10, 0, 0.873016, 0.359698, 506831e-10, 0, 0.904762, 0.342164, 48568e-9, 0, 0.936508, 0.325417, 467826e-10, 0, 0.968254, 0.309186, 446736e-10, 0, 1, 1, 109018e-14, 0, 0, 1, 10904e-13, 0, 0, 1, 109393e-14, 0, 0, 1, 11095e-13, 0, 0, 1, 1154e-12, 0, 0, 1, 126089e-14, 0, 0, 0.999999, 15059e-13, 0, 0, 0.999997, 207899e-14, 0, 0, 0.999994, 348164e-14, 0, 0, 0.999993, 705728e-14, 0, 0, 0.999987, 163692e-13, 0, 0, 0.999981, 406033e-13, 0, 0, 0.999969, 10245e-11, 0, 0, 0.999953, 255023e-12, 0, 0, 0.999925, 61511e-11, 0, 0, 0.999881, 142218e-11, 0, 0, 0.99981, 313086e-11, 0, 0, 0.99968, 653119e-11, 0, 0, 0.999418, 12832e-9, 0, 0, 0.998748, 232497e-10, 0, 0, 0.996066, 329522e-10, 0, 0, 0.988379, 179613e-10, 0, 108799e-9, 0.982567, 143715e-10, 0, 921302e-9, 0.976097, 148096e-10, 0, 280738e-8, 0.968475, 178905e-10, 0, 596622e-8, 0.964606, 253921e-10, 0, 0.0105284, 0.961564, 348623e-10, 0, 0.0165848, 0.955517, 357612e-10, 0, 0.0242, 0.948381, 343493e-10, 0, 0.03342, 0.941095, 405849e-10, 0, 0.0442777, 0.931923, 475394e-10, 0, 0.0567958, 0.91996, 484328e-10, 0, 0.0709879, 0.907419, 502146e-10, 0, 0.086861, 0.89618, 561654e-10, 0, 0.104415, 0.88337, 587612e-10, 0, 0.123643, 0.869046, 618057e-10, 0, 0.144531, 0.853278, 657392e-10, 0, 0.167057, 0.836091, 66303e-9, 0, 0.191188, 0.819644, 704445e-10, 0, 0.216878, 0.801246, 714071e-10, 0, 0.244062, 0.782031, 740093e-10, 0, 0.272649, 0.762066, 74685e-9, 0, 0.302509, 0.741964, 766647e-10, 0, 0.333442, 0.720554, 766328e-10, 0, 0.365079, 0.699098, 777857e-10, 0, 0.396826, 0.677189, 774633e-10, 0, 0.428572, 0.65484, 776235e-10, 0, 0.460318, 0.632496, 770316e-10, 0, 0.492064, 0.609908, 762669e-10, 0, 0.52381, 0.587312, 753972e-10, 0, 0.555556, 0.564938, 739994e-10, 0, 0.587302, 0.542577, 728382e-10, 0, 0.619048, 0.52062, 71112e-9, 0, 0.650794, 0.498819, 694004e-10, 0, 0.68254, 0.477555, 675575e-10, 0, 0.714286, 0.456568, 653449e-10, 0, 0.746032, 0.436278, 636068e-10, 0, 0.777778, 0.41637, 613466e-10, 0, 0.809524, 0.397144, 594177e-10, 0, 0.84127, 0.378412, 570987e-10, 0, 0.873016, 0.360376, 550419e-10, 0, 0.904762, 0.342906, 527422e-10, 0, 0.936508, 0.326136, 506544e-10, 0, 0.968254, 0.30997, 484307e-10, 0, 1, 1, 354014e-14, 0, 0, 1, 354073e-14, 0, 0, 1, 354972e-14, 0, 0, 1, 358929e-14, 0, 0, 1, 370093e-14, 0, 0, 0.999999, 396194e-14, 0, 0, 0.999998, 453352e-14, 0, 0, 0.999997, 578828e-14, 0, 0, 0.999994, 863812e-14, 0, 0, 0.999991, 153622e-13, 0, 0, 0.999985, 316356e-13, 0, 0, 0.999977, 712781e-13, 0, 0, 0.999964, 166725e-12, 0, 0, 0.999945, 390501e-12, 0, 0, 0.999912, 895622e-12, 0, 0, 0.999866, 198428e-11, 0, 0, 0.999786, 421038e-11, 0, 0, 0.999647, 850239e-11, 0, 0, 0.999356, 162059e-10, 0, 0, 0.998563, 282652e-10, 0, 0, 0.994928, 336309e-10, 0, 244244e-10, 0.987999, 178458e-10, 0, 523891e-9, 0.982893, 159162e-10, 0, 194729e-8, 0.977044, 178056e-10, 0, 451099e-8, 0.969972, 230624e-10, 0, 835132e-8, 0.964237, 313922e-10, 0, 0.013561, 0.960791, 406145e-10, 0, 0.0202056, 0.954292, 372796e-10, 0, 0.0283321, 0.948052, 403199e-10, 0, 0.0379739, 0.940938, 479537e-10, 0, 0.0491551, 0.931689, 545292e-10, 0, 0.0618918, 0.91987, 54038e-9, 0, 0.0761941, 0.907665, 589909e-10, 0, 0.0920672, 0.895281, 642651e-10, 0, 0.109511, 0.882621, 659707e-10, 0, 0.12852, 0.86873, 709973e-10, 0, 0.149085, 0.853008, 742221e-10, 0, 0.171189, 0.835944, 761754e-10, 0, 0.194809, 0.818949, 797052e-10, 0, 0.21991, 0.800951, 812434e-10, 0, 0.246447, 0.781847, 838075e-10, 0, 0.274352, 0.761649, 84501e-9, 0, 0.303535, 0.74152, 860258e-10, 0, 0.333857, 0.720495, 866233e-10, 0, 0.365104, 0.698742, 868326e-10, 0, 0.396826, 0.677096, 87133e-9, 0, 0.428572, 0.654782, 863497e-10, 0, 0.460318, 0.632335, 860206e-10, 0, 0.492064, 0.610031, 849337e-10, 0, 0.52381, 0.587457, 838279e-10, 0, 0.555556, 0.56513, 82309e-9, 0, 0.587302, 0.542877, 803542e-10, 0, 0.619048, 0.5209, 786928e-10, 0, 0.650794, 0.499291, 765171e-10, 0, 0.68254, 0.477971, 744753e-10, 0, 0.714286, 0.457221, 72209e-9, 0, 0.746032, 0.436803, 697448e-10, 0, 0.777778, 0.417083, 675333e-10, 0, 0.809524, 0.397749, 648058e-10, 0, 0.84127, 0.379177, 625759e-10, 0, 0.873016, 0.361061, 598584e-10, 0, 0.904762, 0.343713, 575797e-10, 0, 0.936508, 0.326894, 549999e-10, 0, 0.968254, 0.310816, 527482e-10, 0, 1, 1, 10153e-12, 0, 0, 1, 101544e-13, 0, 0, 1, 101751e-13, 0, 0, 1, 102662e-13, 0, 0, 1, 10521e-12, 0, 0, 0.999999, 111049e-13, 0, 0, 0.999999, 123408e-13, 0, 0, 0.999996, 14924e-12, 0, 0, 0.999992, 204471e-13, 0, 0, 0.999989, 326539e-13, 0, 0, 0.99998, 603559e-13, 0, 0, 0.999971, 123936e-12, 0, 0, 0.999955, 269058e-12, 0, 0, 0.999933, 593604e-12, 0, 0, 0.999901, 129633e-11, 0, 0, 0.999847, 275621e-11, 0, 0, 0.999761, 564494e-11, 0, 0, 0.999607, 110485e-10, 0, 0, 0.999282, 204388e-10, 0, 0, 0.99831, 341084e-10, 0, 22038e-11, 0.993288, 294949e-10, 0, 242388e-9, 0.987855, 192736e-10, 0, 12503e-7, 0.983167, 182383e-10, 0, 32745e-7, 0.977908, 218633e-10, 0, 646321e-8, 0.971194, 290662e-10, 0, 0.0109133, 0.963867, 386401e-10, 0, 0.0166927, 0.95982, 462827e-10, 0, 0.0238494, 0.953497, 420705e-10, 0, 0.0324178, 0.947621, 477743e-10, 0, 0.0424225, 0.940611, 568258e-10, 0, 0.0538808, 0.931174, 618061e-10, 0, 0.0668047, 0.919919, 627098e-10, 0, 0.0812014, 0.907856, 694714e-10, 0, 0.0970745, 0.894509, 735008e-10, 0, 0.114424, 0.881954, 763369e-10, 0, 0.133246, 0.868309, 821896e-10, 0, 0.153534, 0.852511, 83769e-9, 0, 0.175275, 0.835821, 881615e-10, 0, 0.198453, 0.817981, 896368e-10, 0, 0.223042, 0.800504, 930906e-10, 0, 0.249009, 0.78141, 945056e-10, 0, 0.276304, 0.761427, 963605e-10, 0, 0.304862, 0.74094, 968088e-10, 0, 0.334584, 0.720233, 981481e-10, 0, 0.365322, 0.698592, 979122e-10, 0, 0.396826, 0.676763, 981057e-10, 0, 0.428571, 0.654808, 973956e-10, 0, 0.460318, 0.632326, 962619e-10, 0, 0.492064, 0.610049, 952996e-10, 0, 0.52381, 0.58763, 933334e-10, 0, 0.555556, 0.565261, 917573e-10, 0, 0.587302, 0.543244, 896636e-10, 0, 0.619048, 0.521273, 873304e-10, 0, 0.650794, 0.499818, 852648e-10, 0, 0.68254, 0.478536, 823961e-10, 0, 0.714286, 0.457826, 79939e-9, 0, 0.746032, 0.437549, 77126e-9, 0, 0.777778, 0.41776, 743043e-10, 0, 0.809524, 0.39863, 716426e-10, 0, 0.84127, 0.379954, 686456e-10, 0, 0.873016, 0.362025, 660514e-10, 0, 0.904762, 0.344581, 630755e-10, 0, 0.936508, 0.327909, 605439e-10, 0, 0.968254, 0.311736, 576345e-10, 0, 1, 1, 263344e-13, 0, 0, 1, 263373e-13, 0, 0, 1, 263815e-13, 0, 0, 1, 265753e-13, 0, 0, 1, 271132e-13, 0, 0, 0.999999, 283279e-13, 0, 0, 0.999997, 30833e-12, 0, 0, 0.999995, 358711e-13, 0, 0, 0.999992, 461266e-13, 0, 0, 0.999985, 67574e-12, 0, 0, 0.999977, 11358e-11, 0, 0, 0.999966, 213657e-12, 0, 0, 0.999948, 431151e-12, 0, 0, 0.999923, 896656e-12, 0, 0, 0.999884, 186603e-11, 0, 0, 0.999826, 381115e-11, 0, 0, 0.999732, 754184e-11, 0, 0, 0.999561, 143192e-10, 0, 0, 0.999191, 257061e-10, 0, 0, 0.997955, 405724e-10, 0, 744132e-10, 0.992228, 276537e-10, 0, 716477e-9, 0.987638, 208885e-10, 0, 22524e-7, 0.983395, 215226e-10, 0, 484816e-8, 0.978614, 270795e-10, 0, 860962e-8, 0.972389, 365282e-10, 0, 0.0136083, 0.964392, 474747e-10, 0, 0.0198941, 0.95861, 509141e-10, 0, 0.0275023, 0.952806, 48963e-9, 0, 0.0364584, 0.94712, 571119e-10, 0, 0.04678, 0.940104, 671704e-10, 0, 0.0584799, 0.930398, 687586e-10, 0, 0.0715665, 0.919866, 738161e-10, 0, 0.086045, 0.907853, 813235e-10, 0, 0.101918, 0.894078, 834582e-10, 0, 0.119186, 0.881177, 892093e-10, 0, 0.137845, 0.867575, 944548e-10, 0, 0.157891, 0.852107, 969607e-10, 0, 0.179316, 0.835502, 101456e-9, 0, 0.202106, 0.81756, 103256e-9, 0, 0.226243, 0.79984, 106954e-9, 0, 0.251704, 0.780998, 108066e-9, 0, 0.278451, 0.761132, 110111e-9, 0, 0.306436, 0.740429, 110459e-9, 0, 0.335586, 0.719836, 111219e-9, 0, 0.365796, 0.698467, 11145e-8, 0, 0.3969, 0.676446, 110393e-9, 0, 0.428571, 0.654635, 110035e-9, 0, 0.460318, 0.632411, 108548e-9, 0, 0.492064, 0.609986, 106963e-9, 0, 0.52381, 0.587872, 105238e-9, 0, 0.555556, 0.565528, 102665e-9, 0, 0.587302, 0.543563, 100543e-9, 0, 0.619048, 0.52176, 976182e-10, 0, 0.650794, 0.500188, 947099e-10, 0, 0.68254, 0.479204, 919929e-10, 0, 0.714286, 0.458413, 886139e-10, 0, 0.746032, 0.438314, 857839e-10, 0, 0.777778, 0.418573, 82411e-9, 0, 0.809524, 0.39947, 792211e-10, 0, 0.84127, 0.380892, 759546e-10, 0, 0.873016, 0.362953, 727571e-10, 0, 0.904762, 0.345601, 695738e-10, 0, 0.936508, 0.328895, 664907e-10, 0, 0.968254, 0.312808, 634277e-10, 0, 1, 1, 628647e-13, 0, 0, 1, 628705e-13, 0, 0, 1, 629587e-13, 0, 0, 1, 633441e-13, 0, 0, 0.999999, 644087e-13, 0, 0, 0.999998, 667856e-13, 0, 0, 0.999997, 715889e-13, 0, 0, 0.999995, 809577e-13, 0, 0, 0.999989, 992764e-13, 0, 0, 0.999983, 135834e-12, 0, 0, 0.999974, 210482e-12, 0, 0, 0.999959, 365215e-12, 0, 0, 0.999939, 686693e-12, 0, 0, 0.999911, 13472e-10, 0, 0, 0.999868, 26731e-10, 0, 0, 0.999804, 524756e-11, 0, 0, 0.9997, 100403e-10, 0, 0, 0.99951, 185019e-10, 0, 0, 0.999078, 322036e-10, 0, 620676e-11, 0.997428, 470002e-10, 0, 341552e-9, 0.99162, 287123e-10, 0, 143727e-8, 0.987479, 234706e-10, 0, 349201e-8, 0.983582, 260083e-10, 0, 66242e-7, 0.979186, 337927e-10, 0, 0.0109113, 0.97325, 454689e-10, 0, 0.0164064, 0.965221, 573759e-10, 0, 0.0231463, 0.957262, 544114e-10, 0, 0.0311571, 0.952211, 587006e-10, 0, 0.0404572, 0.946631, 692256e-10, 0, 0.0510592, 0.939391, 787819e-10, 0, 0.0629723, 0.929795, 792368e-10, 0, 0.0762025, 0.91965, 875075e-10, 0, 0.090753, 0.907737, 950903e-10, 0, 0.106626, 0.893899, 972963e-10, 0, 0.123822, 0.880239, 10459e-8, 0, 0.142337, 0.866562, 107689e-9, 0, 0.16217, 0.85164, 113081e-9, 0, 0.183314, 0.835021, 116636e-9, 0, 0.20576, 0.817311, 120074e-9, 0, 0.229496, 0.798845, 121921e-9, 0, 0.254502, 0.780479, 12475e-8, 0, 0.280753, 0.760694, 125255e-9, 0, 0.308212, 0.740142, 126719e-9, 0, 0.336825, 0.719248, 12636e-8, 0, 0.366517, 0.698209, 126712e-9, 0, 0.397167, 0.676398, 125769e-9, 0, 0.428578, 0.654378, 124432e-9, 0, 0.460318, 0.632484, 123272e-9, 0, 0.492064, 0.610113, 12085e-8, 0, 0.52381, 0.587931, 118411e-9, 0, 0.555556, 0.565872, 11569e-8, 0, 0.587302, 0.543814, 112521e-9, 0, 0.619048, 0.522265, 109737e-9, 0, 0.650794, 0.500835, 106228e-9, 0, 0.68254, 0.479818, 102591e-9, 0, 0.714286, 0.459258, 991288e-10, 0, 0.746032, 0.439061, 952325e-10, 0, 0.777778, 0.419552, 91895e-9, 0, 0.809524, 0.400399, 879051e-10, 0, 0.84127, 0.381976, 844775e-10, 0, 0.873016, 0.364009, 806316e-10, 0, 0.904762, 0.346761, 771848e-10, 0, 0.936508, 0.330049, 735429e-10, 0, 0.968254, 0.314018, 702103e-10, 0, 1, 1, 139968e-12, 0, 0, 1, 139979e-12, 0, 0, 1, 140145e-12, 0, 0, 1, 14087e-11, 0, 0, 0.999999, 142865e-12, 0, 0, 0.999998, 147279e-12, 0, 0, 0.999997, 156057e-12, 0, 0, 0.999992, 17276e-11, 0, 0, 0.999989, 204352e-12, 0, 0, 0.99998, 26494e-11, 0, 0, 0.999969, 383435e-12, 0, 0, 0.999953, 618641e-12, 0, 0, 0.999929, 108755e-11, 0, 0, 0.999898, 201497e-11, 0, 0, 0.999849, 381346e-11, 0, 0, 0.999778, 719815e-11, 0, 0, 0.999661, 133215e-10, 0, 0, 0.999451, 238313e-10, 0, 0, 0.998936, 401343e-10, 0, 113724e-9, 0.99662, 517346e-10, 0, 820171e-9, 0.991094, 304323e-10, 0, 238143e-8, 0.987487, 281757e-10, 0, 493527e-8, 0.983731, 320048e-10, 0, 856859e-8, 0.979647, 423905e-10, 0, 0.0133393, 0.973837, 562935e-10, 0, 0.0192863, 0.96584, 677442e-10, 0, 0.0264369, 0.956309, 623073e-10, 0, 0.03481, 0.951523, 704131e-10, 0, 0.0444184, 0.946003, 836594e-10, 0, 0.0552713, 0.938454, 911736e-10, 0, 0.0673749, 0.929279, 938264e-10, 0, 0.0807329, 0.919239, 103754e-9, 0, 0.0953479, 0.907293, 109928e-9, 0, 0.111221, 0.893936, 115257e-9, 0, 0.128352, 0.879674, 122265e-9, 0, 0.14674, 0.865668, 125733e-9, 0, 0.166382, 0.850998, 132305e-9, 0, 0.187276, 0.834498, 134844e-9, 0, 0.209413, 0.816903, 139276e-9, 0, 0.232786, 0.798235, 140984e-9, 0, 0.257382, 0.779724, 14378e-8, 0, 0.283181, 0.760251, 144623e-9, 0, 0.310156, 0.739808, 145228e-9, 0, 0.338269, 0.718762, 14539e-8, 0, 0.367461, 0.697815, 144432e-9, 0, 0.397646, 0.67631, 143893e-9, 0, 0.428685, 0.654278, 141846e-9, 0, 0.460318, 0.632347, 13935e-8, 0, 0.492064, 0.610296, 137138e-9, 0, 0.52381, 0.588039, 133806e-9, 0, 0.555556, 0.566218, 130755e-9, 0, 0.587302, 0.544346, 127128e-9, 0, 0.619048, 0.522701, 123002e-9, 0, 0.650794, 0.501542, 119443e-9, 0, 0.68254, 0.480508, 115055e-9, 0, 0.714286, 0.460092, 111032e-9, 0, 0.746032, 0.440021, 106635e-9, 0, 0.777778, 0.420446, 102162e-9, 0, 0.809524, 0.401512, 98184e-9, 0, 0.84127, 0.38299, 936497e-10, 0, 0.873016, 0.365232, 89813e-9, 0, 0.904762, 0.347865, 853073e-10, 0, 0.936508, 0.331342, 817068e-10, 0, 0.968254, 0.315202, 773818e-10, 0, 1, 1, 29368e-11, 0, 0, 1, 2937e-10, 0, 0, 1, 293998e-12, 0, 0, 1, 295298e-12, 0, 0, 0.999999, 298865e-12, 0, 0, 0.999998, 3067e-10, 0, 0, 0.999995, 322082e-12, 0, 0, 0.999992, 350767e-12, 0, 0, 0.999986, 403538e-12, 0, 0, 0.999976, 501372e-12, 0, 0, 0.999964, 68562e-11, 0, 0, 0.999945, 10374e-10, 0, 0, 0.999919, 171269e-11, 0, 0, 0.999882, 300175e-11, 0, 0, 0.999829, 542144e-11, 0, 0, 0.999749, 984182e-11, 0, 0, 0.99962, 176213e-10, 0, 0, 0.999382, 305995e-10, 0, 138418e-10, 0.998751, 496686e-10, 0, 389844e-9, 0.995344, 510733e-10, 0, 150343e-8, 0.990768, 345829e-10, 0, 352451e-8, 0.987464, 342841e-10, 0, 655379e-8, 0.983846, 399072e-10, 0, 0.0106554, 0.980007, 533219e-10, 0, 0.0158723, 0.974494, 696992e-10, 0, 0.0222333, 0.96622, 776754e-10, 0, 0.029758, 0.956273, 747718e-10, 0, 0.0384596, 0.950952, 864611e-10, 0, 0.0483473, 0.945215, 100464e-9, 0, 0.0594266, 0.937287, 103729e-9, 0, 0.0717019, 0.928649, 111665e-9, 0, 0.0851752, 0.918791, 12353e-8, 0, 0.0998479, 0.906685, 127115e-9, 0, 0.115721, 0.893706, 13628e-8, 0, 0.132794, 0.879248, 142427e-9, 0, 0.151067, 0.864685, 148091e-9, 0, 0.170538, 0.850032, 153517e-9, 0, 0.191204, 0.833853, 157322e-9, 0, 0.213063, 0.816353, 161086e-9, 0, 0.236107, 0.797834, 164111e-9, 0, 0.260329, 0.778831, 165446e-9, 0, 0.285714, 0.759756, 167492e-9, 0, 0.312243, 0.739419, 166928e-9, 0, 0.339887, 0.718491, 167e-6, 0, 0.368604, 0.697392, 165674e-9, 0, 0.398329, 0.676102, 163815e-9, 0, 0.428961, 0.654243, 162003e-9, 0, 0.460331, 0.632176, 158831e-9, 0, 0.492064, 0.610407, 155463e-9, 0, 0.52381, 0.588394, 152062e-9, 0, 0.555556, 0.56645, 147665e-9, 0, 0.587302, 0.5449, 14375e-8, 0, 0.619048, 0.523276, 138905e-9, 0, 0.650794, 0.502179, 134189e-9, 0, 0.68254, 0.481359, 129392e-9, 0, 0.714286, 0.46092, 124556e-9, 0, 0.746032, 0.441084, 11957e-8, 0, 0.777778, 0.421517, 114652e-9, 0, 0.809524, 0.402721, 109688e-9, 0, 0.84127, 0.384222, 104667e-9, 0, 0.873016, 0.366534, 999633e-10, 0, 0.904762, 0.349205, 950177e-10, 0, 0.936508, 0.332702, 907301e-10, 0, 0.968254, 0.316599, 859769e-10, 0, 1, 1, 585473e-12, 0, 0, 1, 585507e-12, 0, 0, 1, 58602e-11, 0, 0, 0.999999, 588259e-12, 0, 0, 0.999999, 594381e-12, 0, 0, 0.999998, 607754e-12, 0, 0, 0.999995, 633729e-12, 0, 0, 0.99999, 68137e-11, 0, 0, 0.999984, 767003e-12, 0, 0, 0.999973, 921212e-12, 0, 0, 0.999959, 120218e-11, 0, 0, 0.999936, 172024e-11, 0, 0, 0.999907, 268088e-11, 0, 0, 0.999866, 445512e-11, 0, 0, 0.999806, 768481e-11, 0, 0, 0.999716, 1342e-8, 0, 0, 0.999576, 232473e-10, 0, 0, 0.9993, 391694e-10, 0, 129917e-9, 0.998498, 608429e-10, 0, 845035e-9, 0.994132, 489743e-10, 0, 237616e-8, 0.99031, 384644e-10, 0, 484456e-8, 0.987409, 421768e-10, 0, 832472e-8, 0.983981, 504854e-10, 0, 0.0128643, 0.980268, 671028e-10, 0, 0.0184947, 0.974875, 852749e-10, 0, 0.025237, 0.966063, 85531e-9, 0, 0.0331046, 0.956779, 900588e-10, 0, 0.0421067, 0.950259, 10577e-8, 0, 0.0522487, 0.944239, 119458e-9, 0, 0.0635343, 0.936341, 122164e-9, 0, 0.0759654, 0.928047, 134929e-9, 0, 0.0895434, 0.918065, 145544e-9, 0, 0.104269, 0.906267, 150531e-9, 0, 0.120142, 0.893419, 161652e-9, 0, 0.137163, 0.878758, 16593e-8, 0, 0.15533, 0.863699, 174014e-9, 0, 0.174645, 0.848876, 177877e-9, 0, 0.195106, 0.833032, 184049e-9, 0, 0.21671, 0.815557, 186088e-9, 0, 0.239454, 0.797323, 19054e-8, 0, 0.263332, 0.778124, 191765e-9, 0, 0.288336, 0.758929, 192535e-9, 0, 0.314451, 0.738979, 192688e-9, 0, 0.341658, 0.718213, 191522e-9, 0, 0.369924, 0.696947, 190491e-9, 0, 0.399202, 0.675807, 187913e-9, 0, 0.429416, 0.654147, 184451e-9, 0, 0.460447, 0.63229, 181442e-9, 0, 0.492064, 0.610499, 177139e-9, 0, 0.523809, 0.588747, 172596e-9, 0, 0.555555, 0.566783, 167457e-9, 0, 0.587301, 0.545359, 162518e-9, 0, 0.619048, 0.523984, 156818e-9, 0, 0.650794, 0.502917, 151884e-9, 0, 0.68254, 0.482294, 145514e-9, 0, 0.714286, 0.461945, 140199e-9, 0, 0.746032, 0.442133, 134101e-9, 0, 0.777778, 0.422705, 128374e-9, 0, 0.809524, 0.403916, 122996e-9, 0, 0.84127, 0.38554, 116808e-9, 0, 0.873016, 0.367909, 111973e-9, 0, 0.904762, 0.350651, 105938e-9, 0, 0.936508, 0.334208, 101355e-9, 0, 0.968254, 0.318123, 957629e-10, 0, 1, 1, 111633e-11, 0, 0, 1, 111639e-11, 0, 0, 1, 111725e-11, 0, 0, 1, 112096e-11, 0, 0, 0.999999, 11311e-10, 0, 0, 0.999997, 115315e-11, 0, 0, 0.999995, 11956e-10, 0, 0, 0.999989, 127239e-11, 0, 0, 0.999981, 140772e-11, 0, 0, 0.999969, 164541e-11, 0, 0, 0.999952, 206607e-11, 0, 0, 0.999928, 281783e-11, 0, 0, 0.999895, 416835e-11, 0, 0, 0.999848, 658728e-11, 0, 0, 0.999781, 108648e-10, 0, 0, 0.999682, 182579e-10, 0, 0, 0.999523, 306003e-10, 0, 159122e-10, 0.999205, 499862e-10, 0, 391184e-9, 0.998131, 73306e-9, 0, 147534e-8, 0.993334, 513229e-10, 0, 34227e-7, 0.99016, 467783e-10, 0, 632232e-8, 0.987321, 523413e-10, 0, 0.0102295, 0.984099, 64267e-9, 0, 0.0151794, 0.980432, 843042e-10, 0, 0.0211947, 0.974976, 102819e-9, 0, 0.0282899, 0.966429, 996234e-10, 0, 0.0364739, 0.957633, 111074e-9, 0, 0.0457522, 0.949422, 128644e-9, 0, 0.0561278, 0.943045, 140076e-9, 0, 0.0676023, 0.935448, 146349e-9, 0, 0.0801762, 0.927225, 161854e-9, 0, 0.0938499, 0.917033, 169135e-9, 0, 0.108623, 0.905762, 179987e-9, 0, 0.124496, 0.892879, 189832e-9, 0, 0.141469, 0.878435, 195881e-9, 0, 0.159541, 0.863114, 20466e-8, 0, 0.178713, 0.84776, 209473e-9, 0, 0.198985, 0.832084, 214861e-9, 0, 0.220355, 0.814915, 217695e-9, 0, 0.242823, 0.796711, 220313e-9, 0, 0.266385, 0.777603, 22313e-8, 0, 0.291036, 0.757991, 222471e-9, 0, 0.316767, 0.738371, 222869e-9, 0, 0.343563, 0.717872, 221243e-9, 0, 0.371402, 0.696619, 218089e-9, 0, 0.400248, 0.675379, 21562e-8, 0, 0.430047, 0.65411, 21169e-8, 0, 0.460709, 0.63241, 206947e-9, 0, 0.492079, 0.61046, 201709e-9, 0, 0.52381, 0.58903, 196753e-9, 0, 0.555556, 0.567267, 189637e-9, 0, 0.587302, 0.545886, 184735e-9, 0, 0.619048, 0.524714, 177257e-9, 0, 0.650794, 0.503789, 171424e-9, 0, 0.68254, 0.483204, 164688e-9, 0, 0.714286, 0.462976, 157172e-9, 0, 0.746032, 0.443294, 151341e-9, 0, 0.777778, 0.423988, 143737e-9, 0, 0.809524, 0.405325, 138098e-9, 0, 0.84127, 0.386981, 130698e-9, 0, 0.873016, 0.369436, 125276e-9, 0, 0.904762, 0.35219, 118349e-9, 0, 0.936508, 0.335804, 11312e-8, 0, 0.968254, 0.319749, 106687e-9, 0, 1, 1, 204685e-11, 0, 0, 1, 204694e-11, 0, 0, 1, 204831e-11, 0, 0, 0.999999, 205428e-11, 0, 0, 0.999999, 207056e-11, 0, 0, 0.999997, 210581e-11, 0, 0, 0.999993, 21732e-10, 0, 0, 0.999987, 229365e-11, 0, 0, 0.999979, 250243e-11, 0, 0, 0.999965, 286127e-11, 0, 0, 0.999947, 348028e-11, 0, 0, 0.999918, 455588e-11, 0, 0, 0.999881, 643303e-11, 0, 0, 0.999828, 970064e-11, 0, 0, 0.999753, 153233e-10, 0, 0, 0.999642, 24793e-9, 0, 0, 0.999464, 402032e-10, 0, 122947e-9, 0.999089, 635852e-10, 0, 807414e-9, 0.997567, 857026e-10, 0, 227206e-8, 0.992903, 594912e-10, 0, 462812e-8, 0.990011, 578515e-10, 0, 794162e-8, 0.987192, 65399e-9, 0, 0.0122534, 0.98418, 819675e-10, 0, 0.0175888, 0.980491, 105514e-9, 0, 0.0239635, 0.974779, 121532e-9, 0, 0.031387, 0.96675, 119144e-9, 0, 0.0398644, 0.958248, 136125e-9, 0, 0.0493982, 0.948884, 155408e-9, 0, 0.0599896, 0.941673, 162281e-9, 0, 0.0716382, 0.934521, 176754e-9, 0, 0.0843437, 0.926205, 192873e-9, 0, 0.0981056, 0.916089, 200038e-9, 0, 0.112923, 0.904963, 213624e-9, 0, 0.128796, 0.892089, 221834e-9, 0, 0.145725, 0.878028, 232619e-9, 0, 0.163709, 0.86249, 238632e-9, 0, 0.182749, 0.846587, 247002e-9, 0, 0.202847, 0.830988, 250702e-9, 0, 0.224001, 0.814165, 255562e-9, 0, 0.246214, 0.796135, 257505e-9, 0, 0.269482, 0.777052, 258625e-9, 0, 0.293805, 0.757201, 258398e-9, 0, 0.319176, 0.737655, 256714e-9, 0, 0.345587, 0.717477, 255187e-9, 0, 0.373021, 0.696433, 251792e-9, 0, 0.401454, 0.675084, 247223e-9, 0, 0.430844, 0.653907, 242213e-9, 0, 0.461125, 0.632561, 237397e-9, 0, 0.492187, 0.610658, 229313e-9, 0, 0.52381, 0.589322, 224402e-9, 0, 0.555556, 0.567857, 216116e-9, 0, 0.587302, 0.54652, 209124e-9, 0, 0.619048, 0.525433, 201601e-9, 0, 0.650794, 0.504679, 192957e-9, 0, 0.68254, 0.484203, 186052e-9, 0, 0.714286, 0.464203, 177672e-9, 0, 0.746032, 0.444549, 170005e-9, 0, 0.777778, 0.425346, 162401e-9, 0, 0.809524, 0.406706, 1544e-7, 0, 0.84127, 0.388576, 147437e-9, 0, 0.873016, 0.37094, 139493e-9, 0, 0.904762, 0.353996, 133219e-9, 0, 0.936508, 0.337391, 125573e-9, 0, 0.968254, 0.321648, 119867e-9, 0, 1, 1, 362511e-11, 0, 0, 1, 362525e-11, 0, 0, 1, 362739e-11, 0, 0, 0.999999, 363673e-11, 0, 0, 0.999998, 366214e-11, 0, 0, 0.999996, 371698e-11, 0, 0, 0.999992, 382116e-11, 0, 0, 0.999986, 400554e-11, 0, 0, 0.999976, 432058e-11, 0, 0, 0.999961, 485194e-11, 0, 0, 0.999938, 574808e-11, 0, 0, 0.999908, 726643e-11, 0, 0, 0.999865, 984707e-11, 0, 0, 0.999807, 142217e-10, 0, 0, 0.999723, 215581e-10, 0, 0, 0.999602, 336114e-10, 0, 119113e-10, 0.999398, 527353e-10, 0, 355813e-9, 0.998946, 805809e-10, 0, 137768e-8, 0.996647, 942908e-10, 0, 322469e-8, 0.992298, 668733e-10, 0, 597897e-8, 0.989802, 716564e-10, 0, 968903e-8, 0.987019, 821355e-10, 0, 0.0143845, 0.984219, 104555e-9, 0, 0.0200831, 0.980425, 131245e-9, 0, 0.0267948, 0.974241, 139613e-9, 0, 0.034525, 0.967006, 145931e-9, 0, 0.0432757, 0.95893, 167153e-9, 0, 0.0530471, 0.949157, 188146e-9, 0, 0.0638386, 0.94062, 194625e-9, 0, 0.0756487, 0.933509, 213721e-9, 0, 0.0884762, 0.925088, 229616e-9, 0, 0.10232, 0.915178, 239638e-9, 0, 0.117178, 0.904093, 254814e-9, 0, 0.133051, 0.891337, 263685e-9, 0, 0.149939, 0.877326, 274789e-9, 0, 0.167841, 0.861794, 280534e-9, 0, 0.18676, 0.845758, 289534e-9, 0, 0.206696, 0.829792, 294446e-9, 0, 0.22765, 0.813037, 296877e-9, 0, 0.249625, 0.795285, 300217e-9, 0, 0.27262, 0.776323, 299826e-9, 0, 0.296636, 0.756673, 299787e-9, 0, 0.321671, 0.736856, 297867e-9, 0, 0.347718, 0.716883, 294052e-9, 0, 0.374768, 0.696089, 289462e-9, 0, 0.402804, 0.67505, 285212e-9, 0, 0.431796, 0.653509, 27653e-8, 0, 0.461695, 0.63258, 271759e-9, 0, 0.49242, 0.61104, 262811e-9, 0, 0.523822, 0.589567, 255151e-9, 0, 0.555556, 0.568322, 246434e-9, 0, 0.587302, 0.547235, 237061e-9, 0, 0.619048, 0.52616, 228343e-9, 0, 0.650794, 0.505716, 219236e-9, 0, 0.68254, 0.485274, 209595e-9, 0, 0.714286, 0.465411, 201011e-9, 0, 0.746032, 0.445854, 19109e-8, 0, 0.777778, 0.426911, 182897e-9, 0, 0.809524, 0.408222, 173569e-9, 0, 0.84127, 0.390307, 165496e-9, 0, 0.873016, 0.372624, 156799e-9, 0, 0.904762, 0.355804, 14917e-8, 0, 0.936508, 0.33924, 140907e-9, 0, 0.968254, 0.323534, 134062e-9, 0, 1, 1, 622487e-11, 0, 0, 1, 62251e-10, 0, 0, 1, 622837e-11, 0, 0, 0.999999, 624259e-11, 0, 0, 0.999998, 628127e-11, 0, 0, 0.999996, 636451e-11, 0, 0, 0.999991, 65218e-10, 0, 0, 0.999984, 679782e-11, 0, 0, 0.999973, 726361e-11, 0, 0, 0.999955, 803644e-11, 0, 0, 0.999931, 931397e-11, 0, 0, 0.999896, 114299e-10, 0, 0, 0.999847, 149402e-10, 0, 0, 0.999784, 207461e-10, 0, 0, 0.999692, 302493e-10, 0, 0, 0.999554, 454957e-10, 0, 997275e-10, 0.999326, 690762e-10, 0, 724813e-9, 0.998757, 101605e-9, 0, 20972e-7, 0.995367, 958745e-10, 0, 432324e-8, 0.99209, 832808e-10, 0, 746347e-8, 0.989517, 887601e-10, 0, 0.0115534, 0.987008, 10564e-8, 0, 0.0166134, 0.98421, 133179e-9, 0, 0.0226552, 0.98021, 161746e-9, 0, 0.0296838, 0.973676, 161821e-9, 0, 0.0377016, 0.967052, 178635e-9, 0, 0.0467079, 0.959385, 206765e-9, 0, 0.0567013, 0.949461, 22476e-8, 0, 0.0676796, 0.939578, 23574e-8, 0, 0.0796403, 0.932416, 25893e-8, 0, 0.0925812, 0.923759, 271228e-9, 0, 0.106501, 0.914223, 289165e-9, 0, 0.121397, 0.902942, 301156e-9, 0, 0.13727, 0.890419, 313852e-9, 0, 0.15412, 0.876639, 324408e-9, 0, 0.171946, 0.861316, 33249e-8, 0, 0.190751, 0.84496, 338497e-9, 0, 0.210537, 0.828427, 345861e-9, 0, 0.231305, 0.811871, 347863e-9, 0, 0.253057, 0.794397, 350225e-9, 0, 0.275797, 0.775726, 349915e-9, 0, 0.299525, 0.75617, 347297e-9, 0, 0.324242, 0.736091, 344232e-9, 0, 0.349947, 0.716213, 340835e-9, 0, 0.376633, 0.695736, 332369e-9, 0, 0.404289, 0.674961, 327943e-9, 0, 0.432895, 0.653518, 318533e-9, 0, 0.462415, 0.632574, 310391e-9, 0, 0.492788, 0.61134, 300755e-9, 0, 0.523909, 0.590017, 290506e-9, 0, 0.555556, 0.568752, 280446e-9, 0, 0.587302, 0.548061, 269902e-9, 0, 0.619048, 0.52711, 258815e-9, 0, 0.650794, 0.506682, 248481e-9, 0, 0.68254, 0.486524, 237141e-9, 0, 0.714286, 0.466812, 226872e-9, 0, 0.746032, 0.44732, 216037e-9, 0, 0.777778, 0.428473, 205629e-9, 0, 0.809524, 0.409921, 195691e-9, 0, 0.84127, 0.392028, 185457e-9, 0, 0.873016, 0.374606, 176436e-9, 0, 0.904762, 0.357601, 166508e-9, 0, 0.936508, 0.341348, 158385e-9, 0, 0.968254, 0.32542, 149203e-9, 0, 1, 1, 103967e-10, 0, 0, 1, 10397e-9, 0, 0, 1, 104019e-10, 0, 0, 0.999999, 104231e-10, 0, 0, 0.999998, 104806e-10, 0, 0, 0.999995, 106042e-10, 0, 0, 0.999991, 108366e-10, 0, 0, 0.999982, 112415e-10, 0, 0, 0.999968, 119174e-10, 0, 0, 0.99995, 130227e-10, 0, 0, 0.999922, 148176e-10, 0, 0, 0.999884, 177303e-10, 0, 0, 0.99983, 224564e-10, 0, 0, 0.999758, 300966e-10, 0, 0, 0.999654, 423193e-10, 0, 549083e-11, 0.999503, 614848e-10, 0, 296087e-9, 0.999237, 903576e-10, 0, 123144e-8, 0.998491, 1271e-7, 0, 295954e-8, 0.994594, 107754e-9, 0, 555829e-8, 0.99178, 103025e-9, 0, 907209e-8, 0.989265, 11154e-8, 0, 0.0135257, 0.986998, 136296e-9, 0, 0.0189327, 0.984137, 169154e-9, 0, 0.0252993, 0.979798, 196671e-9, 0, 0.0326272, 0.97337, 196678e-9, 0, 0.0409157, 0.967239, 223121e-9, 0, 0.0501623, 0.959543, 253809e-9, 0, 0.0603638, 0.949466, 265972e-9, 0, 0.0715171, 0.939074, 288372e-9, 0, 0.0836187, 0.931118, 310983e-9, 0, 0.0966657, 0.922525, 325561e-9, 0, 0.110656, 0.912983, 345725e-9, 0, 0.125588, 0.901617, 3556e-7, 0, 0.141461, 0.889487, 374012e-9, 0, 0.158275, 0.875787, 383445e-9, 0, 0.176031, 0.860654, 393972e-9, 0, 0.19473, 0.844417, 400311e-9, 0, 0.214374, 0.82741, 405004e-9, 0, 0.234967, 0.810545, 407378e-9, 0, 0.256512, 0.793312, 407351e-9, 0, 0.279011, 0.774847, 406563e-9, 0, 0.302468, 0.755621, 404903e-9, 0, 0.326887, 0.735511, 397486e-9, 0, 0.352266, 0.715435, 39357e-8, 0, 0.378605, 0.695403, 384739e-9, 0, 0.405897, 0.674681, 376108e-9, 0, 0.43413, 0.65359, 365997e-9, 0, 0.463277, 0.632471, 354957e-9, 0, 0.493295, 0.61151, 343593e-9, 0, 0.524106, 0.59064, 331841e-9, 0, 0.555561, 0.569386, 318891e-9, 0, 0.587302, 0.548785, 3072e-7, 0, 0.619048, 0.528146, 29361e-8, 0, 0.650794, 0.507872, 281709e-9, 0, 0.68254, 0.487805, 268627e-9, 0, 0.714286, 0.468196, 255887e-9, 0, 0.746032, 0.448922, 243997e-9, 0, 0.777778, 0.430093, 231662e-9, 0, 0.809524, 0.411845, 220339e-9, 0, 0.84127, 0.393808, 208694e-9, 0, 0.873016, 0.376615, 198045e-9, 0, 0.904762, 0.359655, 187375e-9, 0, 0.936508, 0.343452, 177371e-9, 0, 0.968254, 0.32765, 167525e-9, 0, 1, 1, 169351e-10, 0, 0, 1, 169356e-10, 0, 0, 1, 169427e-10, 0, 0, 0.999999, 169736e-10, 0, 0, 0.999998, 170575e-10, 0, 0, 0.999995, 172372e-10, 0, 0, 0.99999, 175739e-10, 0, 0, 0.999979, 181568e-10, 0, 0, 0.999966, 191206e-10, 0, 0, 0.999944, 20677e-9, 0, 0, 0.999912, 231644e-10, 0, 0, 0.999869, 271268e-10, 0, 0, 0.999811, 334272e-10, 0, 0, 0.99973, 433979e-10, 0, 0, 0.999617, 590083e-10, 0, 680315e-10, 0.999445, 829497e-10, 0, 612796e-9, 0.999138, 118019e-9, 0, 187408e-8, 0.998095, 156712e-9, 0, 395791e-8, 0.993919, 125054e-9, 0, 692144e-8, 0.991333, 126091e-9, 0, 0.0107962, 0.989226, 144912e-9, 0, 0.0155986, 0.986954, 175737e-9, 0, 0.0213364, 0.983982, 213883e-9, 0, 0.0280114, 0.979128, 234526e-9, 0, 0.0356226, 0.973327, 243725e-9, 0, 0.0441668, 0.967416, 2773e-7, 0, 0.0536399, 0.959729, 308799e-9, 0, 0.0640376, 0.949758, 322447e-9, 0, 0.0753554, 0.939173, 350021e-9, 0, 0.0875893, 0.9296, 370089e-9, 0, 0.100736, 0.921181, 391365e-9, 0, 0.114793, 0.91164, 413636e-9, 0, 0.129759, 0.900435, 427068e-9, 0, 0.145632, 0.888183, 441046e-9, 0, 0.162412, 0.874772, 454968e-9, 0, 0.180101, 0.859566, 461882e-9, 0, 0.1987, 0.843579, 471556e-9, 0, 0.218213, 0.826453, 474335e-9, 0, 0.238641, 0.809164, 477078e-9, 0, 0.259989, 0.792179, 47755e-8, 0, 0.282262, 0.773866, 472573e-9, 0, 0.305464, 0.754944, 469765e-9, 0, 0.329599, 0.735133, 462371e-9, 0, 0.35467, 0.714858, 453674e-9, 0, 0.380678, 0.694829, 443888e-9, 0, 0.407622, 0.674453, 432052e-9, 0, 0.435493, 0.653685, 420315e-9, 0, 0.464275, 0.632666, 406829e-9, 0, 0.493938, 0.611676, 392234e-9, 0, 0.524422, 0.591193, 379208e-9, 0, 0.555624, 0.570145, 36319e-8, 0, 0.587302, 0.549566, 349111e-9, 0, 0.619048, 0.529278, 334166e-9, 0, 0.650794, 0.509026, 318456e-9, 0, 0.68254, 0.489186, 30449e-8, 0, 0.714286, 0.469662, 289051e-9, 0, 0.746032, 0.450691, 275494e-9, 0, 0.777778, 0.431841, 261437e-9, 0, 0.809524, 0.413752, 247846e-9, 0, 0.84127, 0.395951, 235085e-9, 0, 0.873016, 0.378633, 222245e-9, 0, 0.904762, 0.36194, 210533e-9, 0, 0.936508, 0.345599, 198494e-9, 0, 0.968254, 0.329999, 188133e-9, 0, 1, 1, 269663e-10, 0, 0, 1, 26967e-9, 0, 0, 1, 269772e-10, 0, 0, 0.999999, 270214e-10, 0, 0, 0.999998, 271415e-10, 0, 0, 0.999994, 27398e-9, 0, 0, 0.999988, 278771e-10, 0, 0, 0.999977, 287019e-10, 0, 0, 0.999961, 300544e-10, 0, 0, 0.999937, 322138e-10, 0, 0, 0.999904, 356163e-10, 0, 0, 0.999854, 409465e-10, 0, 0, 0.99979, 492651e-10, 0, 0, 0.999699, 621722e-10, 0, 88288e-11, 0.999572, 819715e-10, 0, 223369e-9, 0.999381, 111689e-9, 0, 105414e-8, 0.999016, 153862e-9, 0, 26493e-7, 0.997437, 187667e-9, 0, 508608e-8, 0.993545, 155672e-9, 0, 840554e-8, 0.991135, 161455e-9, 0, 0.012629, 0.989157, 188241e-9, 0, 0.0177661, 0.986874, 226229e-9, 0, 0.0238198, 0.983714, 268668e-9, 0, 0.0307887, 0.978301, 277109e-9, 0, 0.0386688, 0.973227, 303446e-9, 0, 0.0474554, 0.967317, 341851e-9, 0, 0.0571428, 0.959477, 370885e-9, 0, 0.0677256, 0.950012, 392753e-9, 0, 0.0791988, 0.939484, 42781e-8, 0, 0.0915576, 0.928135, 443866e-9, 0, 0.104798, 0.919819, 472959e-9, 0, 0.118918, 0.910049, 491551e-9, 0, 0.133915, 0.899181, 512616e-9, 0, 0.149788, 0.886881, 523563e-9, 0, 0.166537, 0.87359, 540183e-9, 0, 0.184164, 0.858613, 547386e-9, 0, 0.202669, 0.842809, 554809e-9, 0, 0.222056, 0.825727, 558316e-9, 0, 0.242329, 0.808086, 557824e-9, 0, 0.263492, 0.790728, 556346e-9, 0, 0.285551, 0.772987, 552672e-9, 0, 0.30851, 0.7541, 543738e-9, 0, 0.332376, 0.734669, 536107e-9, 0, 0.357153, 0.714411, 523342e-9, 0, 0.382845, 0.694196, 512238e-9, 0, 0.409454, 0.674252, 497465e-9, 0, 0.436977, 0.65357, 481096e-9, 0, 0.465404, 0.632999, 467054e-9, 0, 0.494713, 0.611994, 448771e-9, 0, 0.524864, 0.591604, 431889e-9, 0, 0.555779, 0.571134, 415238e-9, 0, 0.587302, 0.550528, 396369e-9, 0, 0.619048, 0.530292, 379477e-9, 0, 0.650794, 0.510364, 361488e-9, 0, 0.68254, 0.490749, 343787e-9, 0, 0.714286, 0.471266, 327822e-9, 0, 0.746032, 0.452462, 310626e-9, 0, 0.777778, 0.433907, 295352e-9, 0, 0.809524, 0.415659, 279179e-9, 0, 0.84127, 0.398138, 264685e-9, 0, 0.873016, 0.380833, 249905e-9, 0, 0.904762, 0.364247, 236282e-9, 0, 0.936508, 0.348041, 222905e-9, 0, 0.968254, 0.332389, 210522e-9, 0, 1, 1, 420604e-10, 0, 0, 1, 420614e-10, 0, 0, 1, 420757e-10, 0, 0, 0.999999, 42138e-9, 0, 0, 0.999997, 423067e-10, 0, 0, 0.999993, 426668e-10, 0, 0, 0.999986, 433372e-10, 0, 0, 0.999974, 444857e-10, 0, 0, 0.999956, 463554e-10, 0, 0, 0.99993, 493105e-10, 0, 0, 0.999892, 539077e-10, 0, 0, 0.999838, 610005e-10, 0, 0, 0.999767, 718822e-10, 0, 0, 0.999666, 884581e-10, 0, 365471e-10, 0.999525, 113398e-9, 0, 485623e-9, 0.999311, 150043e-9, 0, 162096e-8, 0.998865, 200063e-9, 0, 355319e-8, 0.996278, 211014e-9, 0, 633818e-8, 0.992956, 189672e-9, 0, 0.0100043, 0.991017, 210262e-9, 0, 0.0145648, 0.989055, 244292e-9, 0, 0.0200237, 0.986741, 290481e-9, 0, 0.0263798, 0.983288, 334303e-9, 0, 0.033629, 0.977784, 340307e-9, 0, 0.0417652, 0.973037, 377864e-9, 0, 0.0507821, 0.967181, 4239e-7, 0, 0.060673, 0.958971, 443854e-9, 0, 0.0714314, 0.950093, 483039e-9, 0, 0.0830518, 0.939552, 517934e-9, 0, 0.0955288, 0.927678, 539449e-9, 0, 0.108859, 0.918278, 568604e-9, 0, 0.123038, 0.908449, 588505e-9, 0, 0.138065, 0.897713, 612473e-9, 0, 0.153938, 0.885533, 625575e-9, 0, 0.170657, 0.872131, 63854e-8, 0, 0.188224, 0.857517, 647034e-9, 0, 0.20664, 0.841796, 65209e-8, 0, 0.225909, 0.824726, 6544e-7, 0, 0.246035, 0.807297, 655744e-9, 0, 0.267022, 0.789058, 646716e-9, 0, 0.288878, 0.77189, 643898e-9, 0, 0.311607, 0.753082, 629973e-9, 0, 0.335216, 0.7341, 621564e-9, 0, 0.359713, 0.714094, 605171e-9, 0, 0.385103, 0.693839, 588752e-9, 0, 0.41139, 0.673891, 573294e-9, 0, 0.438576, 0.653565, 552682e-9, 0, 0.466656, 0.633326, 533446e-9, 0, 0.495617, 0.612582, 514635e-9, 0, 0.525431, 0.59205, 49303e-8, 0, 0.556041, 0.571918, 471842e-9, 0, 0.587338, 0.551572, 451713e-9, 0, 0.619048, 0.531553, 430049e-9, 0, 0.650794, 0.51175, 410445e-9, 0, 0.68254, 0.49238, 390098e-9, 0, 0.714286, 0.473143, 370033e-9, 0, 0.746032, 0.45423, 351205e-9, 0, 0.777778, 0.435963, 332049e-9, 0, 0.809524, 0.41787, 315021e-9, 0, 0.84127, 0.400387, 297315e-9, 0, 0.873016, 0.383332, 281385e-9, 0, 0.904762, 0.366665, 265397e-9, 0, 0.936508, 0.350633, 250601e-9, 0, 0.968254, 0.334964, 23589e-8, 0, 1, 1, 643736e-10, 0, 0, 1, 64375e-9, 0, 0, 1, 643947e-10, 0, 0, 0.999999, 64481e-9, 0, 0, 0.999997, 647143e-10, 0, 0, 0.999994, 652119e-10, 0, 0, 0.999985, 661359e-10, 0, 0, 0.999972, 677116e-10, 0, 0, 0.999952, 702599e-10, 0, 0, 0.999922, 742517e-10, 0, 0, 0.99988, 803906e-10, 0, 0, 0.99982, 897315e-10, 0, 0, 0.999741, 103838e-9, 0, 0, 0.999629, 12496e-8, 0, 149024e-9, 0.999474, 156161e-9, 0, 861027e-9, 0.999229, 201034e-9, 0, 231198e-8, 0.998662, 259069e-9, 0, 458147e-8, 0.995299, 245439e-9, 0, 770895e-8, 0.992732, 24498e-8, 0, 0.0117126, 0.990847, 273211e-9, 0, 0.0165989, 0.988911, 316492e-9, 0, 0.0223674, 0.98654, 37161e-8, 0, 0.0290135, 0.982636, 410352e-9, 0, 0.0365309, 0.977346, 421756e-9, 0, 0.0449117, 0.972909, 475578e-9, 0, 0.0541481, 0.966821, 522482e-9, 0, 0.0642326, 0.958686, 545008e-9, 0, 0.075158, 0.949754, 589286e-9, 0, 0.0869181, 0.939184, 619995e-9, 0, 0.0995074, 0.927505, 654266e-9, 0, 0.112922, 0.916606, 682362e-9, 0, 0.127157, 0.906707, 704286e-9, 0, 0.142212, 0.895937, 725909e-9, 0, 0.158085, 0.883913, 743939e-9, 0, 0.174776, 0.870642, 755157e-9, 0, 0.192287, 0.856241, 764387e-9, 0, 0.210619, 0.84069, 771032e-9, 0, 0.229775, 0.823728, 765906e-9, 0, 0.249761, 0.806481, 767604e-9, 0, 0.270582, 0.787924, 754385e-9, 0, 0.292243, 0.770588, 749668e-9, 0, 0.314753, 0.751991, 731613e-9, 0, 0.338118, 0.733407, 717655e-9, 0, 0.362347, 0.713688, 700604e-9, 0, 0.387447, 0.693595, 678765e-9, 0, 0.413424, 0.673426, 657042e-9, 0, 0.440284, 0.65359, 635892e-9, 0, 0.468027, 0.633576, 611569e-9, 0, 0.496645, 0.613144, 586011e-9, 0, 0.526122, 0.592711, 563111e-9, 0, 0.556417, 0.572722, 537699e-9, 0, 0.587451, 0.552762, 512556e-9, 0, 0.619048, 0.532985, 489757e-9, 0, 0.650794, 0.513219, 464139e-9, 0, 0.68254, 0.493992, 442193e-9, 0, 0.714286, 0.47509, 418629e-9, 0, 0.746032, 0.456287, 397045e-9, 0, 0.777778, 0.438152, 375504e-9, 0, 0.809524, 0.420294, 35492e-8, 0, 0.84127, 0.402749, 335327e-9, 0, 0.873016, 0.385879, 316422e-9, 0, 0.904762, 0.369352, 298333e-9, 0, 0.936508, 0.353301, 281417e-9, 0, 0.968254, 0.337781, 265203e-9, 0, 1, 1, 968267e-10, 0, 0, 1, 968284e-10, 0, 0, 1, 968556e-10, 0, 0, 0.999999, 969733e-10, 0, 0, 0.999997, 972913e-10, 0, 0, 0.999993, 979688e-10, 0, 0, 0.999984, 992239e-10, 0, 0, 0.999969, 101356e-9, 0, 0, 0.999946, 104784e-9, 0, 0, 0.999913, 110111e-9, 0, 0, 0.999868, 118217e-9, 0, 0, 0.999801, 130396e-9, 0, 0, 0.999712, 148523e-9, 0, 124907e-10, 0.999589, 175233e-9, 0, 355405e-9, 0.999416, 213999e-9, 0, 13528e-7, 0.999136, 268529e-9, 0, 312557e-8, 0.998367, 333088e-9, 0, 573045e-8, 0.994701, 304757e-9, 0, 919397e-8, 0.992497, 318031e-9, 0, 0.0135261, 0.990608, 353863e-9, 0, 0.0187278, 0.988715, 409044e-9, 0, 0.0247947, 0.986241, 472967e-9, 0, 0.0317196, 0.981696, 495104e-9, 0, 0.039494, 0.977097, 532873e-9, 0, 0.0481087, 0.972583, 594447e-9, 0, 0.0575549, 0.966142, 636867e-9, 0, 0.0678242, 0.95823, 669899e-9, 0, 0.0789089, 0.949677, 719499e-9, 0, 0.0908023, 0.939226, 750584e-9, 0, 0.103499, 0.927501, 793183e-9, 0, 0.116993, 0.915199, 81995e-8, 0, 0.131282, 0.90498, 847654e-9, 0, 0.146364, 0.894243, 868929e-9, 0, 0.162237, 0.882154, 884278e-9, 0, 0.178902, 0.869161, 898108e-9, 0, 0.196358, 0.854751, 901254e-9, 0, 0.21461, 0.839368, 90679e-8, 0, 0.23366, 0.822874, 901541e-9, 0, 0.253512, 0.805514, 897297e-9, 0, 0.274174, 0.78716, 881856e-9, 0, 0.29565, 0.769061, 870032e-9, 0, 0.31795, 0.751, 851719e-9, 0, 0.341081, 0.732614, 830671e-9, 0, 0.365053, 0.713171, 806569e-9, 0, 0.389874, 0.693472, 78338e-8, 0, 0.415553, 0.673528, 756404e-9, 0, 0.442098, 0.653397, 726872e-9, 0, 0.469512, 0.633781, 700494e-9, 0, 0.497794, 0.613877, 67105e-8, 0, 0.526935, 0.593506, 640361e-9, 0, 0.556908, 0.573667, 613502e-9, 0, 0.587657, 0.553932, 583177e-9, 0, 0.61906, 0.534345, 554375e-9, 0, 0.650794, 0.515042, 527811e-9, 0, 0.68254, 0.495674, 499367e-9, 0, 0.714286, 0.477132, 47429e-8, 0, 0.746032, 0.458609, 447726e-9, 0, 0.777778, 0.440354, 424205e-9, 0, 0.809524, 0.422765, 399549e-9, 0, 0.84127, 0.405472, 378315e-9, 0, 0.873016, 0.388482, 355327e-9, 0, 0.904762, 0.372191, 336122e-9, 0, 0.936508, 0.356099, 315247e-9, 0, 0.968254, 0.340737, 29794e-8, 0, 1, 1, 143327e-9, 0, 0, 1, 14333e-8, 0, 0, 1, 143366e-9, 0, 0, 0.999999, 143524e-9, 0, 0, 0.999996, 143952e-9, 0, 0, 0.999991, 144862e-9, 0, 0, 0.999981, 146544e-9, 0, 0, 0.999966, 149391e-9, 0, 0, 0.999941, 153946e-9, 0, 0, 0.999905, 160971e-9, 0, 0, 0.999852, 171562e-9, 0, 0, 0.99978, 18729e-8, 0, 0, 0.999681, 210386e-9, 0, 826239e-10, 0.999546, 243906e-9, 0, 664807e-9, 0.999352, 291739e-9, 0, 196192e-8, 0.999027, 357419e-9, 0, 405941e-8, 0.997886, 422349e-9, 0, 699664e-8, 0.99419, 385008e-9, 0, 0.0107896, 0.99214, 409775e-9, 0, 0.0154415, 0.990274, 456418e-9, 0, 0.0209488, 0.988455, 527008e-9, 0, 0.0273037, 0.985804, 597685e-9, 0, 0.0344969, 0.98103, 613124e-9, 0, 0.0425183, 0.976674, 668321e-9, 0, 0.0513575, 0.972021, 736985e-9, 0, 0.0610046, 0.965274, 773789e-9, 0, 0.0714508, 0.958046, 830852e-9, 0, 0.0826877, 0.949333, 875766e-9, 0, 0.0947085, 0.939135, 917088e-9, 0, 0.107507, 0.927119, 952244e-9, 0, 0.121078, 0.91469, 990626e-9, 0, 0.135419, 0.903006, 101304e-8, 0, 0.150526, 0.892368, 103834e-8, 0, 0.166399, 0.880231, 105002e-8, 0, 0.183038, 0.867432, 106331e-8, 0, 0.200443, 0.853208, 106783e-8, 0, 0.218618, 0.837956, 106458e-8, 0, 0.237566, 0.821772, 105945e-8, 0, 0.257291, 0.804328, 104685e-8, 0, 0.2778, 0.786465, 103178e-8, 0, 0.2991, 0.768004, 101077e-8, 0, 0.321199, 0.74972, 985504e-9, 0, 0.344106, 0.731682, 962893e-9, 0, 0.36783, 0.712813, 932146e-9, 0, 0.392383, 0.693139, 89871e-8, 0, 0.417774, 0.673566, 869678e-9, 0, 0.444013, 0.653483, 835525e-9, 0, 0.471107, 0.633891, 799853e-9, 0, 0.49906, 0.614433, 766838e-9, 0, 0.527869, 0.594586, 732227e-9, 0, 0.557517, 0.574769, 696442e-9, 0, 0.587966, 0.555149, 663935e-9, 0, 0.61913, 0.535898, 629826e-9, 0, 0.650794, 0.516753, 596486e-9, 0, 0.68254, 0.497816, 567078e-9, 0, 0.714286, 0.479034, 534399e-9, 0, 0.746032, 0.460975, 507013e-9, 0, 0.777778, 0.442935, 477421e-9, 0, 0.809524, 0.425263, 451101e-9, 0, 0.84127, 0.408248, 424964e-9, 0, 0.873016, 0.391339, 39993e-8, 0, 0.904762, 0.37513, 377619e-9, 0, 0.936508, 0.359172, 354418e-9, 0, 0.968254, 0.343876, 334823e-9, 0, 1, 1, 209042e-9, 0, 0, 1, 209045e-9, 0, 0, 1, 209093e-9, 0, 0, 0.999999, 209304e-9, 0, 0, 0.999996, 209871e-9, 0, 0, 0.999991, 211078e-9, 0, 0, 0.999979, 213304e-9, 0, 0, 0.999963, 217061e-9, 0, 0, 0.999933, 223042e-9, 0, 0, 0.999894, 232206e-9, 0, 0, 0.999837, 245901e-9, 0, 0, 0.999756, 266023e-9, 0, 102927e-11, 0.999648, 295204e-9, 0, 233468e-9, 0.999499, 336958e-9, 0, 108237e-8, 0.999283, 395563e-9, 0, 268832e-8, 0.998896, 473785e-9, 0, 511138e-8, 0.997006, 520008e-9, 0, 837705e-8, 0.993819, 497261e-9, 0, 0.0124928, 0.991632, 523722e-9, 0, 0.0174561, 0.989875, 587258e-9, 0, 0.0232596, 0.988109, 676329e-9, 0, 0.0298932, 0.985155, 747701e-9, 0, 0.0373453, 0.980479, 768803e-9, 0, 0.0456045, 0.976271, 841054e-9, 0, 0.0546593, 0.971347, 911469e-9, 0, 0.0644994, 0.964528, 953057e-9, 0, 0.0751152, 0.957632, 102221e-8, 0, 0.0864981, 0.948681, 106122e-8, 0, 0.0986407, 0.938716, 111857e-8, 0, 0.111537, 0.926629, 114762e-8, 0, 0.125182, 0.914025, 118995e-8, 0, 0.139571, 0.901026, 121228e-8, 0, 0.154703, 0.890358, 123946e-8, 0, 0.170576, 0.878283, 12527e-7, 0, 0.18719, 0.865459, 125536e-8, 0, 0.204547, 0.851407, 126134e-8, 0, 0.222648, 0.836276, 124759e-8, 0, 0.241498, 0.820436, 124443e-8, 0, 0.261101, 0.803253, 122071e-8, 0, 0.281465, 0.785562, 120107e-8, 0, 0.302595, 0.76718, 117762e-8, 0, 0.324501, 0.748551, 114289e-8, 0, 0.347192, 0.730564, 110872e-8, 0, 0.370679, 0.712253, 107636e-8, 0, 0.394973, 0.692867, 103646e-8, 0, 0.420085, 0.673695, 996793e-9, 0, 0.446027, 0.653912, 95675e-8, 0, 0.47281, 0.634129, 916739e-9, 0, 0.500441, 0.615004, 874401e-9, 0, 0.528921, 0.595587, 833411e-9, 0, 0.558244, 0.575965, 794556e-9, 0, 0.588384, 0.5566, 75196e-8, 0, 0.619281, 0.537428, 716381e-9, 0, 0.650795, 0.518623, 676558e-9, 0, 0.68254, 0.499964, 64074e-8, 0, 0.714286, 0.481356, 605984e-9, 0, 0.746032, 0.463279, 570256e-9, 0, 0.777778, 0.445673, 540138e-9, 0, 0.809524, 0.428032, 507299e-9, 0, 0.84127, 0.411112, 479553e-9, 0, 0.873016, 0.394444, 450737e-9, 0, 0.904762, 0.378247, 424269e-9, 0, 0.936508, 0.362415, 399111e-9, 0, 0.968254, 0.347103, 375274e-9, 0, 1, 1, 300729e-9, 0, 0, 1, 300733e-9, 0, 0, 1, 300797e-9, 0, 0, 0.999998, 301072e-9, 0, 0, 0.999996, 301817e-9, 0, 0, 0.999989, 303398e-9, 0, 0, 0.999977, 306309e-9, 0, 0, 0.999958, 311209e-9, 0, 0, 0.999927, 318975e-9, 0, 0, 0.999884, 330804e-9, 0, 0, 0.99982, 34834e-8, 0, 0, 0.999733, 373854e-9, 0, 326995e-10, 0.999613, 410424e-9, 0, 477174e-9, 0.999447, 462047e-9, 0, 161099e-8, 0.999204, 533322e-9, 0, 353153e-8, 0.998725, 624964e-9, 0, 627965e-8, 0.995871, 631786e-9, 0, 98693e-7, 0.993194, 632017e-9, 0, 0.0143011, 0.991541, 68923e-8, 0, 0.019568, 0.989773, 766892e-9, 0, 0.0256593, 0.987647, 863668e-9, 0, 0.0325625, 0.984193, 922089e-9, 0, 0.0402647, 0.980016, 970749e-9, 0, 0.0487532, 0.975859, 106027e-8, 0, 0.058016, 0.970514, 112239e-8, 0, 0.0680419, 0.963625, 117212e-8, 0, 0.0788208, 0.956959, 125211e-8, 0, 0.0903439, 0.947956, 129411e-8, 0, 0.102604, 0.93809, 135879e-8, 0, 0.115594, 0.92659, 139309e-8, 0, 0.129309, 0.913829, 143253e-8, 0, 0.143745, 0.90005, 145809e-8, 0, 0.158901, 0.888129, 14748e-7, 0, 0.174774, 0.87607, 148756e-8, 0, 0.191365, 0.863461, 148714e-8, 0, 0.208674, 0.849594, 148892e-8, 0, 0.226705, 0.834531, 146496e-8, 0, 0.245461, 0.81903, 14579e-7, 0, 0.264947, 0.802122, 143039e-8, 0, 0.28517, 0.78445, 139717e-8, 0, 0.306137, 0.766434, 136312e-8, 0, 0.327857, 0.747816, 132597e-8, 0, 0.350341, 0.729519, 128323e-8, 0, 0.373598, 0.711454, 123803e-8, 0, 0.397642, 0.692699, 119097e-8, 0, 0.422485, 0.673723, 114565e-8, 0, 0.448139, 0.654386, 109552e-8, 0, 0.474619, 0.634673, 104553e-8, 0, 0.501933, 0.615554, 99985e-8, 0, 0.530089, 0.596462, 948207e-9, 0, 0.559087, 0.577385, 902299e-9, 0, 0.588913, 0.558257, 856448e-9, 0, 0.619525, 0.5392, 810395e-9, 0, 0.650826, 0.520543, 768558e-9, 0, 0.68254, 0.502206, 7239e-7, 0, 0.714286, 0.48402, 685794e-9, 0, 0.746032, 0.465779, 64471e-8, 0, 0.777778, 0.448455, 609583e-9, 0, 0.809524, 0.431091, 57227e-8, 0, 0.84127, 0.414147, 54042e-8, 0, 0.873016, 0.39765, 506545e-9, 0, 0.904762, 0.381576, 477635e-9, 0, 0.936508, 0.365881, 448446e-9, 0, 0.968254, 0.350582, 421424e-9, 0, 1, 1, 427144e-9, 0, 0, 1, 427151e-9, 0, 0, 1, 427232e-9, 0, 0, 0.999998, 42759e-8, 0, 0, 0.999995, 428555e-9, 0, 0, 0.999988, 430603e-9, 0, 0, 0.999976, 434368e-9, 0, 0, 0.999952, 440688e-9, 0, 0, 0.999919, 450667e-9, 0, 0, 0.999871, 46578e-8, 0, 0, 0.999801, 488024e-9, 0, 0, 0.999704, 520092e-9, 0, 129791e-9, 0.999572, 565553e-9, 0, 821056e-9, 0.999389, 628906e-9, 0, 225241e-8, 0.999114, 714911e-9, 0, 449109e-8, 0.998488, 819218e-9, 0, 756249e-8, 0.995234, 80415e-8, 0, 0.0114716, 0.993021, 830181e-9, 0, 0.0162131, 0.991407, 902645e-9, 0, 0.021776, 0.989625, 996934e-9, 0, 0.0281471, 0.987064, 109707e-8, 0, 0.0353118, 0.983265, 114353e-8, 0, 0.0432562, 0.979535, 12272e-7, 0, 0.0519665, 0.975224, 132642e-8, 0, 0.0614298, 0.969574, 138092e-8, 0, 0.0716348, 0.963021, 145896e-8, 0, 0.0825709, 0.956046, 152834e-8, 0, 0.094229, 0.947136, 158217e-8, 0, 0.106602, 0.937313, 16347e-7, 0, 0.119682, 0.926073, 168383e-8, 0, 0.133465, 0.913121, 171627e-8, 0, 0.147947, 0.899165, 174229e-8, 0, 0.163125, 0.885891, 176137e-8, 0, 0.178998, 0.873783, 176406e-8, 0, 0.195566, 0.861331, 176156e-8, 0, 0.21283, 0.847569, 175346e-8, 0, 0.230793, 0.832785, 172753e-8, 0, 0.249459, 0.817442, 170204e-8, 0, 0.268832, 0.800613, 166576e-8, 0, 0.28892, 0.783597, 162909e-8, 0, 0.30973, 0.76571, 15826e-7, 0, 0.331271, 0.747021, 153106e-8, 0, 0.353554, 0.728593, 148036e-8, 0, 0.37659, 0.710661, 142808e-8, 0, 0.400391, 0.692426, 136906e-8, 0, 0.424973, 0.673623, 131066e-8, 0, 0.450347, 0.65494, 125569e-8, 0, 0.476531, 0.635448, 119517e-8, 0, 0.503535, 0.616221, 113828e-8, 0, 0.531372, 0.597531, 10816e-7, 0, 0.560047, 0.578795, 102673e-8, 0, 0.589554, 0.559892, 970985e-9, 0, 0.619869, 0.541307, 919773e-9, 0, 0.650923, 0.522608, 868479e-9, 0, 0.68254, 0.504484, 82137e-8, 0, 0.714286, 0.486603, 772916e-9, 0, 0.746032, 0.468802, 730353e-9, 0, 0.777778, 0.451172, 684955e-9, 0, 0.809524, 0.434348, 647565e-9, 0, 0.84127, 0.417445, 605863e-9, 0, 0.873016, 0.401077, 571885e-9, 0, 0.904762, 0.385039, 536034e-9, 0, 0.936508, 0.369483, 504227e-9, 0, 0.968254, 0.354272, 473165e-9, 0, 1, 1, 599525e-9, 0, 0, 1, 599533e-9, 0, 0, 1, 599639e-9, 0, 0, 0.999998, 600097e-9, 0, 0, 0.999994, 601336e-9, 0, 0, 0.999987, 603958e-9, 0, 0, 0.999972, 608775e-9, 0, 0, 0.999949, 616842e-9, 0, 0, 0.999912, 629534e-9, 0, 0, 0.999857, 648658e-9, 0, 0, 0.999781, 676615e-9, 0, 538873e-11, 0.999674, 716574e-9, 0, 308602e-9, 0.999528, 772641e-9, 0, 127003e-8, 0.999326, 849806e-9, 0, 300783e-8, 0.999009, 952682e-9, 0, 556637e-8, 0.998112, 106394e-8, 0, 895889e-8, 0.994496, 102228e-8, 0, 0.0131827, 0.992806, 108586e-8, 0, 0.0182277, 0.991211, 11759e-7, 0, 0.0240795, 0.989415, 128955e-8, 0, 0.030723, 0.986499, 139038e-8, 0, 0.0381418, 0.982679, 144539e-8, 0, 0.046321, 0.978839, 153954e-8, 0, 0.0552459, 0.974295, 164417e-8, 0, 0.0649034, 0.968784, 171517e-8, 0, 0.0752814, 0.962324, 180282e-8, 0, 0.0863693, 0.954956, 186387e-8, 0, 0.0981578, 0.94624, 193817e-8, 0, 0.110639, 0.936517, 198156e-8, 0, 0.123806, 0.925186, 203042e-8, 0, 0.137655, 0.91252, 20664e-7, 0, 0.15218, 0.898441, 207822e-8, 0, 0.16738, 0.884394, 20992e-7, 0, 0.183253, 0.871273, 208748e-8, 0, 0.199799, 0.859057, 208686e-8, 0, 0.21702, 0.845243, 205519e-8, 0, 0.234918, 0.830723, 202868e-8, 0, 0.253496, 0.815801, 199501e-8, 0, 0.272761, 0.79914, 194193e-8, 0, 0.292719, 0.782372, 188824e-8, 0, 0.313377, 0.76482, 183695e-8, 0, 0.334745, 0.746586, 177418e-8, 0, 0.356833, 0.7281, 170628e-8, 0, 0.379654, 0.709842, 164063e-8, 0, 0.403221, 0.692019, 157355e-8, 0, 0.427548, 0.67364, 150262e-8, 0, 0.452651, 0.655277, 143473e-8, 0, 0.478545, 0.636438, 136371e-8, 0, 0.505246, 0.617364, 129911e-8, 0, 0.532768, 0.598603, 123014e-8, 0, 0.561122, 0.580195, 116587e-8, 0, 0.590309, 0.561786, 110398e-8, 0, 0.620318, 0.543377, 104148e-8, 0, 0.651102, 0.525093, 983984e-9, 0, 0.682545, 0.506791, 92667e-8, 0, 0.714286, 0.489291, 874326e-9, 0, 0.746032, 0.471811, 821734e-9, 0, 0.777778, 0.454435, 774698e-9, 0, 0.809524, 0.437493, 727302e-9, 0, 0.84127, 0.420977, 684039e-9, 0, 0.873016, 0.404729, 64373e-8, 0, 0.904762, 0.388756, 60285e-8, 0, 0.936508, 0.373344, 56765e-8, 0, 0.968254, 0.358191, 531929e-9, 0, 1, 1, 832169e-9, 0, 0, 1, 832178e-9, 0, 0, 1, 83231e-8, 0, 0, 0.999998, 832893e-9, 0, 0, 0.999995, 834465e-9, 0, 0, 0.999985, 837791e-9, 0, 0, 0.999969, 843893e-9, 0, 0, 0.999944, 854086e-9, 0, 0, 0.999903, 870071e-9, 0, 0, 0.999843, 894042e-9, 0, 0, 0.999759, 928865e-9, 0, 531805e-10, 0.999643, 978242e-9, 0, 579365e-9, 0.99948, 104684e-8, 0, 182774e-8, 0.999255, 114012e-8, 0, 387804e-8, 0.998885, 126188e-8, 0, 675709e-8, 0.997405, 135888e-8, 0, 0.010468, 0.99424, 133626e-8, 0, 0.0150018, 0.992458, 140905e-8, 0, 0.0203443, 0.990929, 152305e-8, 0, 0.0264786, 0.989116, 165882e-8, 0, 0.0333875, 0.985624, 174128e-8, 0, 0.0410536, 0.982003, 182108e-8, 0, 0.0494609, 0.978336, 194498e-8, 0, 0.0585941, 0.973184, 202708e-8, 0, 0.0684396, 0.9678, 212166e-8, 0, 0.0789851, 0.961348, 221366e-8, 0, 0.0902199, 0.953841, 228219e-8, 0, 0.102134, 0.94534, 235662e-8, 0, 0.114721, 0.935552, 240572e-8, 0, 0.127972, 0.924064, 244405e-8, 0, 0.141884, 0.911827, 247557e-8, 0, 0.156451, 0.897731, 248374e-8, 0, 0.171672, 0.883409, 249863e-8, 0, 0.187545, 0.868625, 246688e-8, 0, 0.20407, 0.856529, 246523e-8, 0, 0.221249, 0.842999, 242368e-8, 0, 0.239083, 0.828505, 237354e-8, 0, 0.257578, 0.813825, 232588e-8, 0, 0.276738, 0.797813, 226731e-8, 0, 0.296569, 0.781097, 219704e-8, 0, 0.31708, 0.764038, 212394e-8, 0, 0.338281, 0.746067, 204786e-8, 0, 0.360181, 0.727687, 196728e-8, 0, 0.382794, 0.709571, 188779e-8, 0, 0.406133, 0.691503, 180532e-8, 0, 0.430213, 0.673673, 171849e-8, 0, 0.45505, 0.655732, 164147e-8, 0, 0.480662, 0.637399, 155858e-8, 0, 0.507065, 0.618616, 147641e-8, 0, 0.534278, 0.60005, 140125e-8, 0, 0.562313, 0.581713, 132441e-8, 0, 0.59118, 0.563546, 125014e-8, 0, 0.620875, 0.545605, 118249e-8, 0, 0.651373, 0.527559, 11116e-7, 0, 0.682593, 0.509764, 104979e-8, 0, 0.714286, 0.49193, 985977e-9, 0, 0.746032, 0.475011, 928592e-9, 0, 0.777778, 0.457878, 873466e-9, 0, 0.809524, 0.440979, 819585e-9, 0, 0.84127, 0.424613, 772365e-9, 0, 0.873016, 0.408549, 722195e-9, 0, 0.904762, 0.392771, 680014e-9, 0, 0.936508, 0.377317, 636797e-9, 0, 0.968254, 0.362352, 598318e-9, 0, 1, 1, 114313e-8, 0, 0, 1, 114314e-8, 0, 0, 0.999999, 114331e-8, 0, 0, 0.999998, 114404e-8, 0, 0, 0.999994, 114601e-8, 0, 0, 0.999984, 115019e-8, 0, 0, 0.999967, 115784e-8, 0, 0, 0.999937, 11706e-7, 0, 0, 0.999894, 119054e-8, 0, 0, 0.999828, 122031e-8, 0, 0, 0.999735, 126331e-8, 0, 169263e-9, 0.999606, 132382e-8, 0, 949167e-9, 0.999426, 14071e-7, 0, 249668e-8, 0.999173, 151895e-8, 0, 486392e-8, 0.99873, 166102e-8, 0, 806323e-8, 0.996243, 17023e-7, 0, 0.0120895, 0.993779, 172782e-8, 0, 0.0169288, 0.9919, 18108e-7, 0, 0.0225633, 0.990524, 196028e-8, 0, 0.028974, 0.98868, 212014e-8, 0, 0.036142, 0.984663, 217598e-8, 0, 0.044049, 0.981457, 230563e-8, 0, 0.0526781, 0.977608, 243966e-8, 0, 0.0620137, 0.972215, 251336e-8, 0, 0.0720418, 0.966798, 26285e-7, 0, 0.0827499, 0.960241, 271409e-8, 0, 0.0941271, 0.952489, 278381e-8, 0, 0.106164, 0.944127, 285399e-8, 0, 0.118852, 0.934282, 290994e-8, 0, 0.132185, 0.923271, 294558e-8, 0, 0.146157, 0.910803, 296269e-8, 0, 0.160766, 0.896705, 296803e-8, 0, 0.176007, 0.88238, 296637e-8, 0, 0.19188, 0.867116, 293163e-8, 0, 0.208385, 0.853636, 289418e-8, 0, 0.225523, 0.840469, 284663e-8, 0, 0.243296, 0.82639, 278594e-8, 0, 0.261709, 0.811759, 271618e-8, 0, 0.280767, 0.796113, 263187e-8, 0, 0.300476, 0.779518, 254589e-8, 0, 0.320845, 0.763142, 246003e-8, 0, 0.341883, 0.745464, 236529e-8, 0, 0.363601, 0.727491, 226536e-8, 0, 0.386011, 0.709414, 216375e-8, 0, 0.409128, 0.691396, 207127e-8, 0, 0.432967, 0.67368, 197106e-8, 0, 0.457545, 0.656049, 187022e-8, 0, 0.482881, 0.638188, 177605e-8, 0, 0.508992, 0.620177, 168482e-8, 0, 0.535899, 0.601506, 158909e-8, 0, 0.563619, 0.58362, 150583e-8, 0, 0.592165, 0.565496, 141791e-8, 0, 0.621544, 0.54789, 133693e-8, 0, 0.651743, 0.530323, 126038e-8, 0, 0.682709, 0.512795, 118556e-8, 0, 0.714286, 0.495199, 111527e-8, 0, 0.746032, 0.478101, 10489e-7, 0, 0.777778, 0.461511, 984264e-9, 0, 0.809524, 0.444879, 92591e-8, 0, 0.84127, 0.428424, 866582e-9, 0, 0.873016, 0.412495, 814463e-9, 0, 0.904762, 0.396975, 764498e-9, 0, 0.936508, 0.381614, 715967e-9, 0, 0.968254, 0.366732, 672483e-9, 0, 1, 1, 155501e-8, 0, 0, 1, 155503e-8, 0, 0, 1, 155524e-8, 0, 0, 0.999998, 155615e-8, 0, 0, 0.999994, 15586e-7, 0, 0, 0.999983, 156379e-8, 0, 0, 0.999963, 15733e-7, 0, 0, 0.999932, 158911e-8, 0, 0, 0.999882, 161376e-8, 0, 0, 0.99981, 165041e-8, 0, 100875e-10, 0.999708, 170304e-8, 0, 367658e-9, 0.999565, 177658e-8, 0, 14234e-7, 0.999368, 187688e-8, 0, 327939e-8, 0.999081, 200989e-8, 0, 596629e-8, 0.99852, 217177e-8, 0, 94852e-7, 0.99549, 21745e-7, 0, 0.013824, 0.993252, 222357e-8, 0, 0.0189642, 0.991727, 235022e-8, 0, 0.0248856, 0.989951, 250561e-8, 0, 0.0315669, 0.988029, 268829e-8, 0, 0.0389882, 0.984029, 27496e-7, 0, 0.0471302, 0.980683, 289793e-8, 0, 0.0559754, 0.976554, 303315e-8, 0, 0.0655081, 0.97139, 313257e-8, 0, 0.0757138, 0.965544, 323656e-8, 0, 0.08658, 0.95912, 333432e-8, 0, 0.0980954, 0.951183, 34039e-7, 0, 0.110251, 0.942974, 347515e-8, 0, 0.123038, 0.932642, 350381e-8, 0, 0.13645, 0.922158, 354519e-8, 0, 0.150482, 0.909404, 353851e-8, 0, 0.165129, 0.896071, 35435e-7, 0, 0.18039, 0.881206, 349936e-8, 0, 0.196263, 0.866077, 347256e-8, 0, 0.212748, 0.85093, 3415e-6, 0, 0.229847, 0.837703, 333367e-8, 0, 0.247561, 0.823878, 3249e-6, 0, 0.265895, 0.809449, 316347e-8, 0, 0.284854, 0.794379, 306351e-8, 0, 0.304445, 0.778138, 29499e-7, 0, 0.324675, 0.761997, 284099e-8, 0, 0.345555, 0.744938, 272104e-8, 0, 0.367095, 0.727212, 260715e-8, 0, 0.389309, 0.709549, 248855e-8, 0, 0.41221, 0.691704, 236783e-8, 0, 0.435814, 0.673689, 225178e-8, 0, 0.460138, 0.656453, 213765e-8, 0, 0.485203, 0.639128, 202178e-8, 0, 0.511028, 0.621512, 191443e-8, 0, 0.537634, 0.603598, 180977e-8, 0, 0.565041, 0.58559, 170456e-8, 0, 0.593268, 0.567852, 160927e-8, 0, 0.622327, 0.5503, 151395e-8, 0, 0.652217, 0.533033, 142499e-8, 0, 0.682907, 0.515942, 133955e-8, 0, 0.714296, 0.498814, 12602e-7, 0, 0.746032, 0.481595, 118188e-8, 0, 0.777778, 0.465117, 111171e-8, 0, 0.809524, 0.448865, 104091e-8, 0, 0.84127, 0.432711, 976618e-9, 0, 0.873016, 0.416822, 91859e-8, 0, 0.904762, 0.401272, 857704e-9, 0, 0.936508, 0.386226, 807172e-9, 0, 0.968254, 0.371321, 75464e-8, 0, 1, 1, 209596e-8, 0, 0, 1, 209598e-8, 0, 0, 1, 209624e-8, 0, 0, 0.999997, 209736e-8, 0, 0, 0.999991, 210039e-8, 0, 0, 0.999979, 210678e-8, 0, 0, 0.999959, 211847e-8, 0, 0, 0.999925, 21379e-7, 0, 0, 0.99987, 216809e-8, 0, 0, 0.999791, 221281e-8, 0, 681487e-10, 0.999677, 227669e-8, 0, 658161e-9, 0.999521, 236533e-8, 0, 200635e-8, 0.999301, 248514e-8, 0, 41779e-7, 0.998977, 264185e-8, 0, 718648e-8, 0.998191, 281695e-8, 0, 0.0110239, 0.994801, 278518e-8, 0, 0.015672, 0.993091, 288774e-8, 0, 0.0211091, 0.991571, 303931e-8, 0, 0.0273123, 0.9897, 321643e-8, 0, 0.034259, 0.987023, 337332e-8, 0, 0.0419282, 0.983289, 346146e-8, 0, 0.0502998, 0.979892, 363704e-8, 0, 0.0593562, 0.975111, 373601e-8, 0, 0.069081, 0.970351, 38842e-7, 0, 0.0794598, 0.964131, 397053e-8, 0, 0.0904798, 0.957747, 408078e-8, 0, 0.10213, 0.949536, 413533e-8, 0, 0.1144, 0.941372, 420305e-8, 0, 0.127284, 0.931049, 422815e-8, 0, 0.140772, 0.920647, 425048e-8, 0, 0.154862, 0.908033, 42281e-7, 0, 0.169548, 0.895028, 422026e-8, 0, 0.184828, 0.879968, 415042e-8, 0, 0.200701, 0.864875, 408821e-8, 0, 0.217167, 0.84918, 400909e-8, 0, 0.234227, 0.834934, 391178e-8, 0, 0.251884, 0.821397, 380066e-8, 0, 0.270141, 0.807135, 367974e-8, 0, 0.289004, 0.792363, 355172e-8, 0, 0.308479, 0.776661, 3411e-6, 0, 0.328575, 0.760705, 328123e-8, 0, 0.349301, 0.744408, 314003e-8, 0, 0.370668, 0.726994, 29906e-7, 0, 0.392689, 0.709598, 285034e-8, 0, 0.415379, 0.692112, 271179e-8, 0, 0.438754, 0.674435, 257185e-8, 0, 0.46283, 0.65676, 243425e-8, 0, 0.48763, 0.639982, 230351e-8, 0, 0.513173, 0.622983, 21777e-7, 0, 0.539482, 0.605471, 204991e-8, 0, 0.566579, 0.58796, 193759e-8, 0, 0.594488, 0.570463, 181976e-8, 0, 0.623226, 0.553058, 171497e-8, 0, 0.6528, 0.535894, 161109e-8, 0, 0.683198, 0.519089, 151394e-8, 0, 0.714354, 0.502454, 142122e-8, 0, 0.746032, 0.485681, 133488e-8, 0, 0.777778, 0.468935, 124975e-8, 0, 0.809524, 0.452951, 117309e-8, 0, 0.84127, 0.437139, 110155e-8, 0, 0.873016, 0.421446, 103124e-8, 0, 0.904762, 0.405951, 966387e-9, 0, 0.936508, 0.391003, 908119e-9, 0, 0.968254, 0.376198, 848057e-9, 0, 1, 1, 280076e-8, 0, 0, 1, 280078e-8, 0, 0, 0.999999, 280109e-8, 0, 0, 0.999997, 280246e-8, 0, 0, 0.999992, 280616e-8, 0, 0, 0.999979, 281396e-8, 0, 0, 0.999956, 282822e-8, 0, 0, 0.999916, 285186e-8, 0, 0, 0.999857, 28885e-7, 0, 0, 0.999768, 294259e-8, 0, 196026e-9, 0.999645, 301946e-8, 0, 104842e-8, 0.99947, 312541e-8, 0, 270199e-8, 0.999229, 326733e-8, 0, 519449e-8, 0.998852, 344992e-8, 0, 852602e-8, 0.997558, 361052e-8, 0, 0.0126804, 0.994417, 35898e-7, 0, 0.017635, 0.992824, 372393e-8, 0, 0.023365, 0.991344, 390695e-8, 0, 0.0298456, 0.989337, 410392e-8, 0, 0.0370529, 0.985811, 420987e-8, 0, 0.0449651, 0.982772, 437488e-8, 0, 0.0535615, 0.979001, 455069e-8, 0, 0.0628243, 0.974102, 464462e-8, 0, 0.0727368, 0.969197, 480577e-8, 0, 0.0832844, 0.962759, 487818e-8, 0, 0.0944545, 0.956207, 498176e-8, 0, 0.106236, 0.947909, 503392e-8, 0, 0.118619, 0.939596, 507474e-8, 0, 0.131595, 0.929642, 509798e-8, 0, 0.145159, 0.918807, 508476e-8, 0, 0.159305, 0.906921, 505634e-8, 0, 0.174028, 0.893312, 498845e-8, 0, 0.189327, 0.878933, 49133e-7, 0, 0.2052, 0.863986, 48259e-7, 0, 0.221647, 0.847936, 470848e-8, 0, 0.23867, 0.832253, 456889e-8, 0, 0.25627, 0.818619, 442726e-8, 0, 0.274453, 0.804788, 427677e-8, 0, 0.293222, 0.790241, 411906e-8, 0, 0.312585, 0.775162, 394833e-8, 0, 0.33255, 0.759463, 377366e-8, 0, 0.353126, 0.743598, 361026e-8, 0, 0.374324, 0.72697, 343627e-8, 0, 0.396158, 0.709646, 326422e-8, 0, 0.418641, 0.69277, 309717e-8, 0, 0.44179, 0.675371, 29356e-7, 0, 0.465624, 0.657863, 277712e-8, 0, 0.490163, 0.640772, 261738e-8, 0, 0.515429, 0.624441, 24737e-7, 0, 0.541445, 0.607497, 233125e-8, 0, 0.568236, 0.590438, 218994e-8, 0, 0.595828, 0.573224, 20664e-7, 0, 0.624242, 0.556168, 193526e-8, 0, 0.653496, 0.539232, 182463e-8, 0, 0.683588, 0.522352, 170735e-8, 0, 0.714482, 0.506172, 160555e-8, 0, 0.746032, 0.489842, 150451e-8, 0, 0.777778, 0.473463, 140938e-8, 0, 0.809524, 0.457266, 132568e-8, 0, 0.84127, 0.441609, 12376e-7, 0, 0.873016, 0.426348, 116265e-8, 0, 0.904762, 0.411002, 108935e-8, 0, 0.936508, 0.396045, 101946e-8, 0, 0.968254, 0.381448, 955665e-9, 0, 1, 1, 37121e-7, 0, 0, 1, 371213e-8, 0, 0, 1, 371251e-8, 0, 0, 0.999997, 371417e-8, 0, 0, 0.99999, 371863e-8, 0, 0, 0.999977, 372807e-8, 0, 0, 0.99995, 374529e-8, 0, 0, 0.999908, 37738e-7, 0, 0, 0.999843, 381789e-8, 0, 123596e-10, 0.999745, 388273e-8, 0, 407442e-9, 0.999608, 397443e-8, 0, 15447e-7, 0.999415, 409998e-8, 0, 351385e-8, 0.999143, 426662e-8, 0, 63316e-7, 0.9987, 447625e-8, 0, 998679e-8, 0.996363, 455323e-8, 0, 0.0144569, 0.994021, 461052e-8, 0, 0.0197151, 0.992372, 476359e-8, 0, 0.0257344, 0.991007, 499101e-8, 0, 0.0324882, 0.988767, 51972e-7, 0, 0.0399517, 0.984872, 528407e-8, 0, 0.0481022, 0.982004, 548926e-8, 0, 0.0569191, 0.977714, 564385e-8, 0, 0.0663839, 0.973076, 57693e-7, 0, 0.0764801, 0.967565, 58924e-7, 0, 0.0871928, 0.961384, 599629e-8, 0, 0.0985095, 0.954435, 605998e-8, 0, 0.110419, 0.946303, 61133e-7, 0, 0.122912, 0.937662, 612028e-8, 0, 0.13598, 0.927867, 612209e-8, 0, 0.149617, 0.916475, 604813e-8, 0, 0.163817, 0.90541, 603088e-8, 0, 0.178577, 0.891591, 592218e-8, 0, 0.193894, 0.877573, 578854e-8, 0, 0.209767, 0.862511, 566648e-8, 0, 0.226196, 0.846861, 551481e-8, 0, 0.243182, 0.83068, 533754e-8, 0, 0.260728, 0.815725, 515487e-8, 0, 0.278837, 0.802321, 49655e-7, 0, 0.297515, 0.787826, 475421e-8, 0, 0.316768, 0.773454, 456002e-8, 0, 0.336605, 0.758224, 434727e-8, 0, 0.357034, 0.74265, 414444e-8, 0, 0.378067, 0.726729, 393738e-8, 0, 0.399717, 0.710155, 373575e-8, 0, 0.421998, 0.693312, 353736e-8, 0, 0.444928, 0.67653, 334368e-8, 0, 0.468523, 0.659444, 315981e-8, 0, 0.492806, 0.642051, 297809e-8, 0, 0.517798, 0.625758, 280592e-8, 0, 0.543525, 0.609615, 264254e-8, 0, 0.570012, 0.592919, 248459e-8, 0, 0.597288, 0.576298, 233327e-8, 0, 0.625379, 0.559489, 219519e-8, 0, 0.654307, 0.542891, 205441e-8, 0, 0.684084, 0.526255, 193385e-8, 0, 0.714693, 0.509853, 180745e-8, 0, 0.746044, 0.494131, 169817e-8, 0, 0.777778, 0.478114, 15913e-7, 0, 0.809524, 0.462274, 148981e-8, 0, 0.84127, 0.446412, 139537e-8, 0, 0.873016, 0.431274, 130984e-8, 0, 0.904762, 0.41635, 122403e-8, 0, 0.936508, 0.401476, 114809e-8, 0, 0.968254, 0.386993, 107563e-8, 0, 1, 1, 488216e-8, 0, 0, 1, 48822e-7, 0, 0, 1, 488265e-8, 0, 0, 0.999997, 488463e-8, 0, 0, 0.999988, 488999e-8, 0, 0, 0.999974, 490129e-8, 0, 0, 0.999946, 492191e-8, 0, 0, 0.999897, 495598e-8, 0, 0, 0.999825, 500855e-8, 0, 744791e-10, 0.999718, 508559e-8, 0, 712744e-9, 0.999565, 5194e-6, 0, 215249e-8, 0.999352, 534147e-8, 0, 444576e-8, 0.999046, 553523e-8, 0, 759218e-8, 0.998492, 577016e-8, 0, 0.0115714, 0.995564, 578487e-8, 0, 0.0163557, 0.993339, 586414e-8, 0, 0.021915, 0.991834, 606002e-8, 0, 0.0282201, 0.990496, 633312e-8, 0, 0.0352433, 0.987826, 651941e-8, 0, 0.042959, 0.98383, 660842e-8, 0, 0.0513439, 0.98109, 685523e-8, 0, 0.0603772, 0.976131, 695778e-8, 0, 0.0700402, 0.971922, 714236e-8, 0, 0.0803163, 0.965901, 721437e-8, 0, 0.0911908, 0.959606, 732017e-8, 0, 0.102651, 0.952504, 735788e-8, 0, 0.114686, 0.944365, 738493e-8, 0, 0.127286, 0.935652, 737969e-8, 0, 0.140443, 0.925813, 733612e-8, 0, 0.154151, 0.914397, 723094e-8, 0, 0.168405, 0.903257, 714002e-8, 0, 0.183201, 0.890015, 700149e-8, 0, 0.198536, 0.876014, 682813e-8, 0, 0.214409, 0.861436, 665567e-8, 0, 0.23082, 0.845752, 644526e-8, 0, 0.24777, 0.829169, 621635e-8, 0, 0.265263, 0.813435, 597789e-8, 0, 0.283301, 0.799701, 575694e-8, 0, 0.301889, 0.785726, 549866e-8, 0, 0.321035, 0.77152, 52503e-7, 0, 0.340746, 0.75683, 499619e-8, 0, 0.361032, 0.741951, 47543e-7, 0, 0.381904, 0.726367, 45084e-7, 0, 0.403374, 0.710537, 426784e-8, 0, 0.425457, 0.693965, 403487e-8, 0, 0.448169, 0.677724, 38075e-7, 0, 0.47153, 0.66117, 359431e-8, 0, 0.495561, 0.644274, 338354e-8, 0, 0.520284, 0.627449, 318163e-8, 0, 0.545725, 0.611645, 299672e-8, 0, 0.571911, 0.595614, 281016e-8, 0, 0.598873, 0.579426, 264252e-8, 0, 0.62664, 0.563016, 247509e-8, 0, 0.655239, 0.546728, 232647e-8, 0, 0.684692, 0.530539, 217803e-8, 0, 0.714999, 0.514164, 204216e-8, 0, 0.746106, 0.498344, 191403e-8, 0, 0.777778, 0.482957, 179203e-8, 0, 0.809524, 0.467336, 167695e-8, 0, 0.84127, 0.451994, 157567e-8, 0, 0.873016, 0.436514, 147113e-8, 0, 0.904762, 0.42178, 138034e-8, 0, 0.936508, 0.407271, 129219e-8, 0, 0.968254, 0.392822, 12098e-7, 0, 1, 1, 637427e-8, 0, 0, 1, 637431e-8, 0, 0, 0.999999, 637485e-8, 0, 0, 0.999996, 637721e-8, 0, 0, 0.999987, 638357e-8, 0, 0, 0.999971, 6397e-6, 0, 0, 0.999939, 642142e-8, 0, 0, 0.999888, 646177e-8, 0, 0, 0.999807, 652387e-8, 0, 207916e-9, 0.999689, 661454e-8, 0, 112051e-8, 0.99952, 674155e-8, 0, 287719e-8, 0.999283, 691313e-8, 0, 550145e-8, 0.998936, 713598e-8, 0, 897928e-8, 0.998165, 738501e-8, 0, 0.0132829, 0.994847, 734388e-8, 0, 0.01838, 0.993182, 749991e-8, 0, 0.0242381, 0.991665, 77246e-7, 0, 0.030826, 0.989708, 797579e-8, 0, 0.0381152, 0.986663, 813011e-8, 0, 0.0460794, 0.983288, 830365e-8, 0, 0.0546951, 0.980104, 853496e-8, 0, 0.0639411, 0.974855, 861045e-8, 0, 0.0737988, 0.97045, 879133e-8, 0, 0.0842516, 0.964509, 886377e-8, 0, 0.0952848, 0.957594, 890346e-8, 0, 0.106886, 0.950546, 893289e-8, 0, 0.119044, 0.942225, 890074e-8, 0, 0.131749, 0.933365, 886826e-8, 0, 0.144994, 0.923202, 87316e-7, 0, 0.158772, 0.912605, 863082e-8, 0, 0.173078, 0.901099, 847403e-8, 0, 0.187908, 0.888177, 825838e-8, 0, 0.203261, 0.873955, 801834e-8, 0, 0.219134, 0.860091, 779026e-8, 0, 0.235527, 0.84434, 752478e-8, 0, 0.252443, 0.828517, 724074e-8, 0, 0.269883, 0.81239, 693769e-8, 0, 0.287851, 0.79721, 664817e-8, 0, 0.306352, 0.783489, 634763e-8, 0, 0.325393, 0.769514, 604221e-8, 0, 0.344981, 0.755419, 573568e-8, 0, 0.365126, 0.741083, 544359e-8, 0, 0.385839, 0.726059, 515515e-8, 0, 0.407132, 0.710809, 487139e-8, 0, 0.42902, 0.695052, 459846e-8, 0, 0.45152, 0.678886, 433412e-8, 0, 0.474651, 0.663042, 407981e-8, 0, 0.498433, 0.646634, 384264e-8, 0, 0.52289, 0.630117, 360897e-8, 0, 0.548048, 0.613804, 338863e-8, 0, 0.573936, 0.598338, 318486e-8, 0, 0.600584, 0.582687, 298377e-8, 0, 0.628027, 0.566809, 280082e-8, 0, 0.656295, 0.550817, 262255e-8, 0, 0.685417, 0.534937, 245835e-8, 0, 0.715406, 0.519151, 230574e-8, 0, 0.74624, 0.503118, 21549e-7, 0, 0.777778, 0.487723, 202008e-8, 0, 0.809524, 0.472725, 189355e-8, 0, 0.84127, 0.457599, 177108e-8, 0, 0.873016, 0.442558, 165843e-8, 0, 0.904762, 0.427624, 155494e-8, 0, 0.936508, 0.413171, 145273e-8, 0, 0.968254, 0.399122, 136454e-8, 0, 1, 1, 826496e-8, 0, 0, 1, 826499e-8, 0, 0, 1, 826564e-8, 0, 0, 0.999996, 826842e-8, 0, 0, 0.999987, 827589e-8, 0, 0, 0.999967, 829167e-8, 0, 0, 0.999933, 832037e-8, 0, 0, 0.999876, 836768e-8, 0, 109338e-10, 0.999786, 844031e-8, 0, 427145e-9, 0.999655, 854603e-8, 0, 16384e-7, 0.999468, 869337e-8, 0, 372392e-8, 0.999203, 8891e-6, 0, 668513e-8, 0.998803, 914387e-8, 0, 0.0104968, 0.99748, 935838e-8, 0, 0.015125, 0.994446, 933309e-8, 0, 0.0205338, 0.99292, 953084e-8, 0, 0.0266884, 0.991414, 97893e-7, 0, 0.0335565, 0.989049, 0.0100228, 0, 0.0411086, 0.98582, 0.0101664, 0, 0.0493181, 0.982441, 0.0103582, 0, 0.0581613, 0.978595, 0.0105292, 0, 0.0676169, 0.973495, 0.0106274, 0, 0.0776661, 0.968405, 0.0107261, 0, 0.0882926, 0.962717, 0.0108234, 0, 0.0994817, 0.955478, 0.0108102, 0, 0.111221, 0.948275, 0.0107914, 0, 0.123499, 0.940006, 0.0107161, 0, 0.136308, 0.930831, 0.0106309, 0, 0.149639, 0.920648, 0.0104083, 0, 0.163485, 0.910205, 0.0102312, 0, 0.177843, 0.898445, 0.0100051, 0, 0.192707, 0.885986, 971928e-8, 0, 0.208077, 0.872204, 940747e-8, 0, 0.22395, 0.858436, 91085e-7, 0, 0.240326, 0.843454, 876595e-8, 0, 0.257208, 0.827437, 839794e-8, 0, 0.274596, 0.811488, 803692e-8, 0, 0.292496, 0.796039, 767352e-8, 0, 0.310911, 0.781083, 73097e-7, 0, 0.329849, 0.767642, 694032e-8, 0, 0.349316, 0.753901, 657476e-8, 0, 0.369323, 0.740131, 622699e-8, 0, 0.38988, 0.725845, 58838e-7, 0, 0.410999, 0.710991, 555586e-8, 0, 0.432696, 0.696002, 523089e-8, 0, 0.454987, 0.680461, 492494e-8, 0, 0.47789, 0.664875, 463464e-8, 0, 0.501426, 0.649273, 435422e-8, 0, 0.52562, 0.63302, 40875e-7, 0, 0.550498, 0.61705, 384075e-8, 0, 0.576089, 0.601154, 359557e-8, 0, 0.602427, 0.586008, 337636e-8, 0, 0.629544, 0.570699, 316019e-8, 0, 0.657479, 0.555166, 296033e-8, 0, 0.686264, 0.539645, 277552e-8, 0, 0.715924, 0.524159, 259499e-8, 0, 0.746459, 0.508682, 243257e-8, 0, 0.777789, 0.493163, 227851e-8, 0, 0.809524, 0.478004, 213083e-8, 0, 0.84127, 0.46347, 199502e-8, 0, 0.873016, 0.448778, 186967e-8, 0, 0.904762, 0.434105, 174732e-8, 0, 0.936508, 0.419576, 163861e-8, 0, 0.968254, 0.405541, 153341e-8, 0, 1, 1, 0.0106462, 0, 0, 1, 0.0106462, 0, 0, 0.999999, 0.010647, 0, 0, 0.999995, 0.0106502, 0, 0, 0.999985, 0.0106589, 0, 0, 0.999964, 0.0106773, 0, 0, 0.999925, 0.0107106, 0, 0, 0.999861, 0.0107655, 0, 712986e-10, 0.999763, 0.0108497, 0, 743959e-9, 0.999616, 0.0109716, 0, 227361e-8, 0.999408, 0.0111408, 0, 46983e-7, 0.999112, 0.0113659, 0, 800158e-8, 0.998637, 0.0116475, 0, 0.0121493, 0.996223, 0.0117231, 0, 0.0171023, 0.994006, 0.0118064, 0, 0.0228218, 0.992444, 0.0120254, 0, 0.0292711, 0.991028, 0.0123314, 0, 0.036417, 0.98803, 0.0124954, 0, 0.0442295, 0.984816, 0.0126538, 0, 0.0526815, 0.981399, 0.0128537, 0, 0.0617492, 0.977085, 0.0129694, 0, 0.0714114, 0.972154, 0.013091, 0, 0.0816495, 0.966617, 0.0131166, 0, 0.0924472, 0.960628, 0.0131583, 0, 0.10379, 0.953295, 0.0131094, 0, 0.115665, 0.94575, 0.0129966, 0, 0.128062, 0.937654, 0.0128796, 0, 0.140972, 0.927716, 0.0126477, 0, 0.154387, 0.917932, 0.0123889, 0, 0.168301, 0.907719, 0.012131, 0, 0.182709, 0.89584, 0.0118013, 0, 0.197608, 0.883526, 0.0114145, 0, 0.212994, 0.870301, 0.0110075, 0, 0.228867, 0.856272, 0.0106019, 0, 0.245227, 0.842251, 0.0101938, 0, 0.262074, 0.826466, 973254e-8, 0, 0.279412, 0.810859, 92846e-7, 0, 0.297244, 0.795051, 883304e-8, 0, 0.315575, 0.780053, 840272e-8, 0, 0.334412, 0.76575, 796438e-8, 0, 0.35376, 0.752298, 752526e-8, 0, 0.373631, 0.739153, 711486e-8, 0, 0.394034, 0.725514, 670361e-8, 0, 0.414983, 0.711473, 632656e-8, 0, 0.436491, 0.696936, 595206e-8, 0, 0.458575, 0.682126, 559191e-8, 0, 0.481253, 0.667027, 525362e-8, 0, 0.504547, 0.651875, 493805e-8, 0, 0.528481, 0.636463, 462848e-8, 0, 0.553081, 0.620641, 433936e-8, 0, 0.578377, 0.604931, 407e-5, 0, 0.604404, 0.589549, 380864e-8, 0, 0.631197, 0.574712, 357049e-8, 0, 0.658795, 0.559775, 334466e-8, 0, 0.687238, 0.544514, 312505e-8, 0, 0.716559, 0.529555, 293199e-8, 0, 0.746776, 0.514402, 274204e-8, 0, 0.777849, 0.499302, 256647e-8, 0, 0.809524, 0.484114, 239901e-8, 0, 0.84127, 0.469308, 225148e-8, 0, 0.873016, 0.455133, 210178e-8, 0, 0.904762, 0.440939, 19727e-7, 0, 0.936508, 0.426627, 184382e-8, 0, 0.968254, 0.412509, 172548e-8, 0, 1, 1, 0.013628, 0, 0, 1, 0.0136281, 0, 0, 0.999999, 0.0136289, 0, 0, 0.999995, 0.0136327, 0, 0, 0.999983, 0.0136427, 0, 0, 0.99996, 0.0136638, 0, 0, 0.999917, 0.0137022, 0, 0, 0.999846, 0.0137652, 0, 204597e-9, 0.999736, 0.0138615, 0, 116837e-8, 0.999573, 0.0140007, 0, 303325e-8, 0.99934, 0.0141927, 0, 580613e-8, 0.999004, 0.0144457, 0, 945626e-8, 0.998407, 0.0147489, 0, 0.0139421, 0.995464, 0.014731, 0, 0.0192202, 0.993328, 0.0148283, 0, 0.0252495, 0.991799, 0.0150797, 0, 0.0319921, 0.990397, 0.0154316, 0, 0.0394138, 0.986835, 0.0155005, 0, 0.0474843, 0.983938, 0.0157308, 0, 0.0561763, 0.980154, 0.0158753, 0, 0.0654661, 0.975659, 0.0159581, 0, 0.0753326, 0.970171, 0.0159832, 0, 0.0857571, 0.964803, 0.0160084, 0, 0.0967236, 0.958366, 0.0159484, 0, 0.108218, 0.950613, 0.0158001, 0, 0.120227, 0.942874, 0.0155845, 0, 0.132741, 0.935005, 0.0154292, 0, 0.145751, 0.924991, 0.0150742, 0, 0.159249, 0.914814, 0.0146757, 0, 0.17323, 0.904743, 0.0143097, 0, 0.187687, 0.893216, 0.0138695, 0, 0.202619, 0.880769, 0.0133706, 0, 0.218021, 0.868136, 0.0128606, 0, 0.233894, 0.85469, 0.0123403, 0, 0.250238, 0.840593, 0.0118091, 0, 0.267052, 0.825808, 0.011253, 0, 0.284341, 0.81009, 0.0107099, 0, 0.302106, 0.79504, 0.0101636, 0, 0.320354, 0.779757, 964041e-8, 0, 0.33909, 0.764697, 911896e-8, 0, 0.358322, 0.750913, 859533e-8, 0, 0.378059, 0.738175, 811592e-8, 0, 0.398311, 0.725242, 764504e-8, 0, 0.41909, 0.711864, 718885e-8, 0, 0.440412, 0.698009, 675843e-8, 0, 0.462292, 0.683841, 634984e-8, 0, 0.484748, 0.669391, 595502e-8, 0, 0.507802, 0.654731, 558671e-8, 0, 0.531477, 0.639805, 523578e-8, 0, 0.555802, 0.624789, 490834e-8, 0, 0.580805, 0.609325, 459448e-8, 0, 0.606522, 0.593975, 430342e-8, 0, 0.63299, 0.578983, 403019e-8, 0, 0.66025, 0.564442, 37707e-7, 0, 0.688346, 0.549835, 35316e-7, 0, 0.717319, 0.535039, 330255e-8, 0, 0.7472, 0.520403, 308932e-8, 0, 0.777982, 0.505687, 289335e-8, 0, 0.809524, 0.490939, 270818e-8, 0, 0.84127, 0.476233, 25343e-7, 0, 0.873016, 0.461624, 237097e-8, 0, 0.904762, 0.447833, 222065e-8, 0, 0.936508, 0.433992, 207561e-8, 0, 0.968254, 0.420147, 194955e-8, 0, 1, 1, 0.0173415, 0, 0, 1, 0.0173416, 0, 0, 0.999999, 0.0173426, 0, 0, 0.999995, 0.0173468, 0, 0, 0.999983, 0.0173582, 0, 0, 0.999954, 0.0173822, 0, 0, 0.999908, 0.0174258, 0, 669501e-11, 0.999828, 0.0174973, 0, 427399e-9, 0.999705, 0.0176063, 0, 171019e-8, 0.999524, 0.0177631, 0, 39248e-7, 0.999263, 0.0179781, 0, 705382e-8, 0.998878, 0.018258, 0, 0.0110552, 0.998012, 0.0185551, 0, 0.0158812, 0.994614, 0.0184264, 0, 0.0214852, 0.993132, 0.0186385, 0, 0.0278239, 0.991563, 0.0189067, 0, 0.0348585, 0.989298, 0.0191577, 0, 0.0425544, 0.986036, 0.0192522, 0, 0.050881, 0.982558, 0.0194063, 0, 0.059811, 0.978531, 0.019486, 0, 0.0693209, 0.974198, 0.0195847, 0, 0.0793895, 0.968148, 0.0194749, 0, 0.0899984, 0.962565, 0.0194277, 0, 0.101132, 0.956041, 0.0192991, 0, 0.112775, 0.947749, 0.0189893, 0, 0.124917, 0.94018, 0.018704, 0, 0.137547, 0.93165, 0.0183458, 0, 0.150655, 0.921798, 0.0178775, 0, 0.164236, 0.911573, 0.0173618, 0, 0.178281, 0.901569, 0.0168482, 0, 0.192788, 0.890341, 0.016265, 0, 0.207752, 0.877835, 0.0156199, 0, 0.223171, 0.865472, 0.0149516, 0, 0.239044, 0.852905, 0.0143274, 0, 0.255371, 0.838906, 0.0136643, 0, 0.272153, 0.824888, 0.0129903, 0, 0.289393, 0.809977, 0.0123218, 0, 0.307093, 0.794697, 0.0116572, 0, 0.325259, 0.780028, 0.0110307, 0, 0.343896, 0.765124, 0.0104236, 0, 0.363012, 0.750411, 98219e-7, 0, 0.382617, 0.737264, 924397e-8, 0, 0.402719, 0.724799, 868719e-8, 0, 0.423332, 0.712253, 816476e-8, 0, 0.444469, 0.699267, 767262e-8, 0, 0.466146, 0.685618, 719746e-8, 0, 0.488383, 0.671736, 673916e-8, 0, 0.511199, 0.657777, 631937e-8, 0, 0.534618, 0.643497, 592411e-8, 0, 0.558668, 0.62889, 553928e-8, 0, 0.58338, 0.614299, 51934e-7, 0, 0.608787, 0.599197, 485985e-8, 0, 0.634929, 0.584175, 454357e-8, 0, 0.661849, 0.569541, 425787e-8, 0, 0.689594, 0.555193, 397905e-8, 0, 0.718211, 0.540947, 372364e-8, 0, 0.747742, 0.526593, 348599e-8, 0, 0.778205, 0.512335, 326103e-8, 0, 0.80953, 0.498017, 305137e-8, 0, 0.84127, 0.483609, 285485e-8, 0, 0.873016, 0.469368, 267472e-8, 0, 0.904762, 0.455037, 249945e-8, 0, 0.936508, 0.441493, 234792e-8, 0, 0.968254, 0.428147, 219936e-8, 0, 1, 1, 0.0219422, 0, 0, 1, 0.0219423, 0, 0, 0.999998, 0.0219434, 0, 0, 0.999993, 0.0219481, 0, 0, 0.999981, 0.021961, 0, 0, 0.999949, 0.0219879, 0, 0, 0.999896, 0.0220367, 0, 593194e-10, 0.999808, 0.0221167, 0, 75364e-8, 0.99967, 0.0222383, 0, 237884e-8, 0.999466, 0.0224125, 0, 495612e-8, 0.999174, 0.0226495, 0, 844887e-8, 0.998725, 0.0229525, 0, 0.0128058, 0.996979, 0.0231123, 0, 0.0179742, 0.994317, 0.0230742, 0, 0.0239047, 0.992781, 0.0232895, 0, 0.0305526, 0.991191, 0.0235734, 0, 0.0378786, 0.987787, 0.0236152, 0, 0.0458475, 0.985092, 0.0237994, 0, 0.0544287, 0.981121, 0.0238553, 0, 0.0635952, 0.976924, 0.0238706, 0, 0.0733233, 0.97218, 0.0238704, 0, 0.0835922, 0.965956, 0.0236598, 0, 0.0943839, 0.959998, 0.0234735, 0, 0.105682, 0.953245, 0.0232277, 0, 0.117474, 0.944445, 0.0226973, 0, 0.129747, 0.937087, 0.0223527, 0, 0.142491, 0.928341, 0.0218144, 0, 0.155697, 0.9184, 0.0211516, 0, 0.169358, 0.907959, 0.0204553, 0, 0.183469, 0.89808, 0.0197673, 0, 0.198024, 0.887047, 0.0189915, 0, 0.21302, 0.875221, 0.0182082, 0, 0.228455, 0.86269, 0.0173584, 0, 0.244329, 0.850735, 0.0165718, 0, 0.260639, 0.837545, 0.0157524, 0, 0.277389, 0.823639, 0.0149482, 0, 0.29458, 0.809699, 0.0141431, 0, 0.312216, 0.794797, 0.0133527, 0, 0.3303, 0.780578, 0.0126193, 0, 0.34884, 0.766019, 0.0118914, 0, 0.367842, 0.751447, 0.0111839, 0, 0.387315, 0.737275, 0.010514, 0, 0.40727, 0.724545, 987277e-8, 0, 0.427717, 0.712644, 926569e-8, 0, 0.448671, 0.700432, 869029e-8, 0, 0.470149, 0.687664, 814691e-8, 0, 0.492167, 0.674288, 763012e-8, 0, 0.514746, 0.660966, 714437e-8, 0, 0.537911, 0.647264, 668457e-8, 0, 0.561688, 0.633431, 626581e-8, 0, 0.586108, 0.619133, 585593e-8, 0, 0.611206, 0.604935, 548188e-8, 0, 0.637022, 0.590236, 513288e-8, 0, 0.663599, 0.575473, 47906e-7, 0, 0.690989, 0.561228, 448895e-8, 0, 0.719242, 0.547054, 420233e-8, 0, 0.748411, 0.533175, 392869e-8, 0, 0.778531, 0.519163, 367445e-8, 0, 0.809583, 0.505328, 344097e-8, 0, 0.84127, 0.491446, 322003e-8, 0, 0.873016, 0.477356, 301283e-8, 0, 0.904762, 0.46356, 282592e-8, 0, 0.936508, 0.449623, 264956e-8, 0, 0.968254, 0.436068, 246956e-8, 0, 1, 1, 0.0276135, 0, 0, 1, 0.0276136, 0, 0, 0.999998, 0.0276148, 0, 0, 0.999993, 0.0276201, 0, 0, 0.999976, 0.0276342, 0, 0, 0.999945, 0.027664, 0, 0, 0.999884, 0.0277179, 0, 18679e-8, 0.999784, 0.027806, 0, 119607e-8, 0.99963, 0.0279394, 0, 318407e-8, 0.999401, 0.0281295, 0, 613601e-8, 0.999066, 0.0283858, 0, 999963e-8, 0.998524, 0.0287027, 0, 0.0147164, 0.995702, 0.0286256, 0, 0.0202295, 0.993593, 0.0286733, 0, 0.0264876, 0.992067, 0.0288989, 0, 0.0334452, 0.990548, 0.0292135, 0, 0.0410621, 0.986775, 0.0291296, 0, 0.0493032, 0.984054, 0.0293099, 0, 0.0581381, 0.979481, 0.0291881, 0, 0.0675397, 0.975297, 0.0291598, 0, 0.0774848, 0.96981, 0.028954, 0, 0.0879528, 0.963524, 0.028628, 0, 0.0989258, 0.957398, 0.0283135, 0, 0.110388, 0.950088, 0.0278469, 0, 0.122327, 0.941538, 0.0271798, 0, 0.134729, 0.933332, 0.0265388, 0, 0.147587, 0.924392, 0.0257776, 0, 0.160889, 0.914581, 0.024916, 0, 0.174631, 0.904347, 0.0240242, 0, 0.188806, 0.894324, 0.0231229, 0, 0.203409, 0.883724, 0.022153, 0, 0.218437, 0.872207, 0.0211355, 0, 0.233888, 0.859927, 0.0201048, 0, 0.249761, 0.848373, 0.0191263, 0, 0.266056, 0.836023, 0.0181306, 0, 0.282774, 0.82289, 0.0171718, 0, 0.299917, 0.809324, 0.0162196, 0, 0.317488, 0.795361, 0.0152622, 0, 0.335493, 0.781253, 0.01439, 0, 0.353936, 0.767338, 0.013533, 0, 0.372825, 0.753156, 0.0127244, 0, 0.392168, 0.739122, 0.0119454, 0, 0.411976, 0.725358, 0.0112054, 0, 0.432259, 0.712949, 0.010487, 0, 0.453032, 0.701621, 984032e-8, 0, 0.47431, 0.689703, 921495e-8, 0, 0.496111, 0.677216, 862492e-8, 0, 0.518456, 0.664217, 806882e-8, 0, 0.541367, 0.65137, 755922e-8, 0, 0.564872, 0.638, 705705e-8, 0, 0.589001, 0.62453, 661266e-8, 0, 0.613789, 0.610601, 618432e-8, 0, 0.639277, 0.59676, 578033e-8, 0, 0.66551, 0.582433, 540927e-8, 0, 0.692539, 0.568026, 506104e-8, 0, 0.720422, 0.55414, 47353e-7, 0, 0.749216, 0.540178, 442889e-8, 0, 0.778974, 0.526513, 414363e-8, 0, 0.809711, 0.512954, 388237e-8, 0, 0.84127, 0.499403, 362875e-8, 0, 0.873016, 0.486026, 340827e-8, 0, 0.904762, 0.472345, 318598e-8, 0, 0.936508, 0.458828, 297635e-8, 0, 0.968254, 0.445379, 279447e-8, 0, 1, 1, 0.0345716, 0, 0, 1, 0.0345717, 0, 0, 0.999999, 0.034573, 0, 0, 0.999991, 0.0345787, 0, 0, 0.999974, 0.0345941, 0, 0, 0.999937, 0.0346263, 0, 188589e-11, 0.999869, 0.0346847, 0, 409238e-9, 0.999757, 0.0347798, 0, 17674e-7, 0.999582, 0.0349233, 0, 413658e-8, 0.999322, 0.0351265, 0, 747408e-8, 0.998939, 0.0353967, 0, 0.0117157, 0.998219, 0.0357018, 0, 0.0167966, 0.994974, 0.0354726, 0, 0.0226572, 0.993201, 0.0355621, 0, 0.0292445, 0.991573, 0.0357641, 0, 0.0365123, 0.989301, 0.0359252, 0, 0.0444203, 0.985712, 0.0358017, 0, 0.0529334, 0.982411, 0.0358353, 0, 0.0620214, 0.977827, 0.035617, 0, 0.0716574, 0.973278, 0.0354398, 0, 0.0818186, 0.967397, 0.0350483, 0, 0.0924846, 0.960696, 0.0344795, 0, 0.103638, 0.954349, 0.0339861, 0, 0.115263, 0.946066, 0.0331323, 0, 0.127348, 0.938012, 0.032359, 0, 0.13988, 0.929413, 0.0314413, 0, 0.152849, 0.920355, 0.0304103, 0, 0.166248, 0.910586, 0.0292785, 0, 0.18007, 0.900609, 0.0281391, 0, 0.194308, 0.890093, 0.0269103, 0, 0.208958, 0.880013, 0.0257269, 0, 0.224018, 0.869001, 0.0244671, 0, 0.239485, 0.85751, 0.0232252, 0, 0.255359, 0.84582, 0.0220117, 0, 0.271638, 0.834383, 0.0208274, 0, 0.288324, 0.822158, 0.0196628, 0, 0.305419, 0.809056, 0.0185306, 0, 0.322927, 0.795832, 0.0174174, 0, 0.340851, 0.782547, 0.0163758, 0, 0.359199, 0.7689, 0.015391, 0, 0.377975, 0.755526, 0.0144488, 0, 0.397189, 0.741681, 0.0135372, 0, 0.416851, 0.728178, 0.0126957, 0, 0.436971, 0.714642, 0.0118812, 0, 0.457564, 0.702756, 0.0111165, 0, 0.478644, 0.69175, 0.0104145, 0, 0.500229, 0.680159, 974439e-8, 0, 0.522339, 0.668073, 911926e-8, 0, 0.544997, 0.655405, 851393e-8, 0, 0.56823, 0.642921, 797637e-8, 0, 0.592068, 0.629993, 745119e-8, 0, 0.616546, 0.616828, 696972e-8, 0, 0.641705, 0.603305, 652425e-8, 0, 0.66759, 0.589833, 610188e-8, 0, 0.694255, 0.575945, 570834e-8, 0, 0.72176, 0.561745, 533384e-8, 0, 0.750168, 0.548277, 500001e-8, 0, 0.779545, 0.534467, 467582e-8, 0, 0.809933, 0.521032, 438092e-8, 0, 0.841272, 0.507877, 410348e-8, 0, 0.873016, 0.494654, 383618e-8, 0, 0.904762, 0.481592, 358699e-8, 0, 0.936508, 0.468509, 337281e-8, 0, 0.968254, 0.455293, 316196e-8, 0, 1, 1, 0.0430698, 0, 0, 1, 0.0430699, 0, 0, 0.999998, 0.0430713, 0, 0, 0.999991, 0.0430773, 0, 0, 0.99997, 0.0430936, 0, 0, 0.999928, 0.0431277, 0, 406396e-10, 0.999852, 0.0431893, 0, 744376e-9, 0.999724, 0.0432895, 0, 24806e-7, 0.999527, 0.0434397, 0, 524779e-8, 0.99923, 0.0436507, 0, 898164e-8, 0.998783, 0.0439255, 0, 0.0136083, 0.997507, 0.0441104, 0, 0.0190582, 0.994418, 0.0438225, 0, 0.0252694, 0.992864, 0.0439396, 0, 0.0321879, 0.991127, 0.0440962, 0, 0.039767, 0.987331, 0.0438408, 0, 0.0479667, 0.984819, 0.0438991, 0, 0.056752, 0.980384, 0.0435906, 0, 0.0660929, 0.975846, 0.0432543, 0, 0.075963, 0.970748, 0.0428293, 0, 0.0863398, 0.964303, 0.042153, 0, 0.0972035, 0.95772, 0.0414111, 0, 0.108537, 0.950747, 0.0405893, 0, 0.120325, 0.942533, 0.0394887, 0, 0.132554, 0.934045, 0.0383544, 0, 0.145215, 0.924942, 0.037057, 0, 0.158296, 0.915811, 0.0356993, 0, 0.17179, 0.90612, 0.0342401, 0, 0.185691, 0.896434, 0.0328078, 0, 0.199993, 0.886021, 0.031288, 0, 0.214691, 0.876081, 0.0297776, 0, 0.229782, 0.865608, 0.0282334, 0, 0.245265, 0.854924, 0.026749, 0, 0.261138, 0.843607, 0.02526, 0, 0.277401, 0.832456, 0.0238214, 0, 0.294056, 0.821342, 0.0224682, 0, 0.311104, 0.809303, 0.0211297, 0, 0.328548, 0.796468, 0.0198387, 0, 0.346394, 0.784046, 0.0186227, 0, 0.364645, 0.771262, 0.0174561, 0, 0.38331, 0.758118, 0.0163806, 0, 0.402396, 0.745075, 0.0153287, 0, 0.421912, 0.731926, 0.0143647, 0, 0.44187, 0.71863, 0.0134363, 0, 0.462283, 0.705414, 0.0125603, 0, 0.483165, 0.693792, 0.0117508, 0, 0.504535, 0.683108, 0.0110016, 0, 0.52641, 0.67183, 0.0102757, 0, 0.548816, 0.66015, 962044e-8, 0, 0.571776, 0.647907, 898031e-8, 0, 0.595323, 0.635734, 840811e-8, 0, 0.619489, 0.623208, 786211e-8, 0, 0.644317, 0.610438, 734953e-8, 0, 0.669852, 0.597345, 687688e-8, 0, 0.696148, 0.584138, 643469e-8, 0, 0.723267, 0.5707, 602236e-8, 0, 0.75128, 0.556966, 56324e-7, 0, 0.780258, 0.543607, 528277e-8, 0, 0.810268, 0.530213, 493999e-8, 0, 0.841311, 0.516912, 462265e-8, 0, 0.873016, 0.503916, 43307e-7, 0, 0.904762, 0.491146, 406858e-8, 0, 0.936508, 0.478439, 381436e-8, 0, 0.968254, 0.465834, 358003e-8, 0, 1, 1, 0.0534039, 0, 0, 1, 0.053404, 0, 0, 0.999998, 0.0534055, 0, 0, 0.999989, 0.0534116, 0, 0, 0.999968, 0.0534283, 0, 0, 0.999918, 0.0534633, 0, 155895e-9, 0.99983, 0.0535262, 0, 120914e-8, 0.999685, 0.0536281, 0, 334944e-8, 0.999461, 0.0537799, 0, 653077e-8, 0.999119, 0.0539902, 0, 0.0106718, 0.998582, 0.0542524, 0, 0.0156907, 0.995919, 0.0540318, 0, 0.0215147, 0.993735, 0.0538914, 0, 0.0280801, 0.992126, 0.0539557, 0, 0.0353323, 0.990266, 0.0540401, 0, 0.0432247, 0.986317, 0.0536064, 0, 0.0517172, 0.983213, 0.0534425, 0, 0.0607754, 0.978303, 0.0528622, 0, 0.0703698, 0.973665, 0.0523363, 0, 0.0804742, 0.968091, 0.0516165, 0, 0.0910667, 0.961026, 0.0505434, 0, 0.102128, 0.954333, 0.049523, 0, 0.113641, 0.946372, 0.0481698, 0, 0.125591, 0.938254, 0.0467674, 0, 0.137965, 0.929516, 0.0452341, 0, 0.150754, 0.920106, 0.0435083, 0, 0.163947, 0.910899, 0.0417399, 0, 0.177537, 0.901532, 0.0399389, 0, 0.191516, 0.891919, 0.0380901, 0, 0.205881, 0.882006, 0.0362341, 0, 0.220626, 0.871965, 0.0343444, 0, 0.235749, 0.862145, 0.0324832, 0, 0.251248, 0.852058, 0.0306681, 0, 0.267121, 0.84161, 0.0289097, 0, 0.283368, 0.830806, 0.0272079, 0, 0.299992, 0.820476, 0.0256089, 0, 0.316992, 0.809514, 0.0240394, 0, 0.334374, 0.797865, 0.0225379, 0, 0.35214, 0.785621, 0.0211235, 0, 0.370296, 0.773765, 0.0197908, 0, 0.388849, 0.761629, 0.0185235, 0, 0.407807, 0.748891, 0.0173358, 0, 0.427178, 0.736437, 0.0162305, 0, 0.446974, 0.723707, 0.0151778, 0, 0.467207, 0.710606, 0.0141791, 0, 0.487892, 0.698019, 0.0132592, 0, 0.509046, 0.686203, 0.0123887, 0, 0.530687, 0.675692, 0.0115976, 0, 0.552839, 0.664826, 0.0108325, 0, 0.575527, 0.65349, 0.0101348, 0, 0.59878, 0.641774, 947756e-8, 0, 0.622634, 0.629794, 886058e-8, 0, 0.647128, 0.617647, 828526e-8, 0, 0.672308, 0.60534, 775312e-8, 0, 0.698231, 0.592718, 726033e-8, 0, 0.724958, 0.579746, 679731e-8, 0, 0.752563, 0.566763, 636111e-8, 0, 0.781127, 0.553515, 595228e-8, 0, 0.810733, 0.540118, 556876e-8, 0, 0.841426, 0.527325, 523051e-8, 0, 0.873016, 0.514265, 490712e-8, 0, 0.904762, 0.501406, 460297e-8, 0, 0.936508, 0.488922, 431247e-8, 0, 0.968254, 0.476541, 40472e-7, 0, 1, 1, 0.0659184, 0, 0, 1, 0.0659185, 0, 0, 0.999998, 0.06592, 0, 0, 0.999988, 0.0659259, 0, 0, 0.999963, 0.0659423, 0, 0, 0.999907, 0.0659764, 0, 374198e-9, 0.999806, 0.0660376, 0, 182071e-8, 0.999639, 0.0661361, 0, 43894e-7, 0.999378, 0.0662814, 0, 800055e-8, 0.998985, 0.0664779, 0, 0.0125594, 0.998285, 0.0666914, 0, 0.0179786, 0.995071, 0.0661989, 0, 0.0241822, 0.993172, 0.0660454, 0, 0.031106, 0.991438, 0.0660105, 0, 0.0386952, 0.988428, 0.0656875, 0, 0.0469032, 0.985218, 0.0652913, 0, 0.0556905, 0.981128, 0.0647107, 0, 0.065023, 0.976015, 0.0638491, 0, 0.0748717, 0.97097, 0.062993, 0, 0.0852112, 0.964582, 0.0617927, 0, 0.0960199, 0.957383, 0.0603626, 0, 0.107279, 0.949969, 0.0588128, 0, 0.118971, 0.941843, 0.0570274, 0, 0.131084, 0.933624, 0.0551885, 0, 0.143604, 0.924543, 0.053122, 0, 0.156521, 0.914919, 0.0508897, 0, 0.169825, 0.905773, 0.0486418, 0, 0.18351, 0.896434, 0.0463364, 0, 0.197569, 0.887195, 0.0440623, 0, 0.211997, 0.877706, 0.0417799, 0, 0.226789, 0.867719, 0.03945, 0, 0.241944, 0.858587, 0.037243, 0, 0.257458, 0.849317, 0.0350956, 0, 0.273331, 0.839585, 0.0329852, 0, 0.289563, 0.829856, 0.0310028, 0, 0.306154, 0.819589, 0.0290953, 0, 0.323108, 0.809714, 0.0272738, 0, 0.340426, 0.79934, 0.0255631, 0, 0.358113, 0.788224, 0.0239175, 0, 0.376175, 0.776619, 0.0223831, 0, 0.394616, 0.76521, 0.0209298, 0, 0.413445, 0.753716, 0.0195786, 0, 0.432671, 0.741564, 0.0183001, 0, 0.452305, 0.729413, 0.0171259, 0, 0.472358, 0.717146, 0.0159933, 0, 0.492845, 0.70436, 0.0149495, 0, 0.513783, 0.69219, 0.0139681, 0, 0.535189, 0.680289, 0.0130577, 0, 0.557087, 0.669611, 0.0122198, 0, 0.5795, 0.659113, 0.0114174, 0, 0.602459, 0.648148, 0.0106729, 0, 0.625997, 0.636905, 998997e-8, 0, 0.650154, 0.625154, 934313e-8, 0, 0.674976, 0.613481, 874839e-8, 0, 0.700518, 0.60154, 818265e-8, 0, 0.726845, 0.58943, 766889e-8, 0, 0.754032, 0.576828, 717153e-8, 0, 0.782167, 0.564194, 672696e-8, 0, 0.811344, 0.551501, 630863e-8, 0, 0.841644, 0.538635, 592177e-8, 0, 0.873016, 0.525724, 554888e-8, 0, 0.904762, 0.513209, 520225e-8, 0, 0.936508, 0.500457, 488231e-8, 0, 0.968254, 0.48799, 457153e-8, 0, 1, 1, 0.0810131, 0, 0, 1, 0.0810133, 0, 0, 0.999997, 0.0810145, 0, 0, 0.999985, 0.08102, 0, 0, 0.999956, 0.0810347, 0, 195026e-10, 0.999893, 0.0810656, 0, 719316e-9, 0.999777, 0.0811205, 0, 259774e-8, 0.999583, 0.081208, 0, 561807e-8, 0.999281, 0.0813343, 0, 967472e-8, 0.998813, 0.0814969, 0, 0.0146627, 0.997597, 0.0815217, 0, 0.0204902, 0.994379, 0.0808502, 0, 0.0270802, 0.992744, 0.0806792, 0, 0.0343674, 0.990745, 0.0804589, 0, 0.0422974, 0.986646, 0.0796107, 0, 0.0508242, 0.983611, 0.0790913, 0, 0.0599087, 0.978869, 0.0780746, 0, 0.0695175, 0.973475, 0.0768218, 0, 0.0796223, 0.967845, 0.0754926, 0, 0.0901983, 0.960778, 0.0737063, 0, 0.101224, 0.953333, 0.0718052, 0, 0.112682, 0.945274, 0.0695946, 0, 0.124555, 0.936955, 0.0672492, 0, 0.136831, 0.928319, 0.0647732, 0, 0.149496, 0.919075, 0.0620947, 0, 0.162542, 0.909114, 0.0591816, 0, 0.175958, 0.900137, 0.0563917, 0, 0.189739, 0.891069, 0.0535392, 0, 0.203877, 0.882262, 0.0507642, 0, 0.218368, 0.873232, 0.0479793, 0, 0.233208, 0.864042, 0.045226, 0, 0.248393, 0.855002, 0.0425413, 0, 0.263923, 0.846569, 0.0400126, 0, 0.279796, 0.837714, 0.0375269, 0, 0.296012, 0.828918, 0.0352027, 0, 0.312573, 0.819783, 0.0330011, 0, 0.329479, 0.810129, 0.0308908, 0, 0.346734, 0.800866, 0.0289112, 0, 0.364342, 0.79093, 0.0270255, 0, 0.382307, 0.780593, 0.0252758, 0, 0.400637, 0.769511, 0.0236178, 0, 0.419337, 0.758558, 0.0220652, 0, 0.438418, 0.747632, 0.0206289, 0, 0.457889, 0.736146, 0.0192873, 0, 0.477761, 0.724093, 0.0180333, 0, 0.49805, 0.71234, 0.0168264, 0, 0.51877, 0.700201, 0.015746, 0, 0.53994, 0.687949, 0.0147027, 0, 0.561581, 0.676163, 0.0137512, 0, 0.583718, 0.665001, 0.0128655, 0, 0.60638, 0.65472, 0.0120366, 0, 0.629599, 0.644213, 0.0112604, 0, 0.653415, 0.633382, 0.0105413, 0, 0.677874, 0.62212, 986498e-8, 0, 0.70303, 0.610631, 923308e-8, 0, 0.728948, 0.599078, 864206e-8, 0, 0.755706, 0.587519, 811784e-8, 0, 0.783396, 0.575505, 761237e-8, 0, 0.812121, 0.563148, 713949e-8, 0, 0.841989, 0.550828, 668379e-8, 0, 0.873035, 0.538458, 627715e-8, 0, 0.904762, 0.525905, 588336e-8, 0, 0.936508, 0.513517, 552687e-8, 0, 0.968254, 0.501395, 519681e-8, 0, 1, 1, 0.0991506, 0, 0, 1, 0.0991504, 0, 0, 0.999996, 0.0991515, 0, 0, 0.999984, 0.0991558, 0, 0, 0.999947, 0.0991672, 0, 114389e-9, 0.999874, 0.0991912, 0, 121503e-8, 0.999739, 0.0992331, 0, 356108e-8, 0.999514, 0.0992983, 0, 705578e-8, 0.999159, 0.0993877, 0, 0.011574, 0.998586, 0.0994837, 0, 0.017003, 0.995731, 0.0988425, 0, 0.0232484, 0.993384, 0.098276, 0, 0.0302318, 0.991615, 0.0979269, 0, 0.0378884, 0.989029, 0.0973432, 0, 0.0461641, 0.985373, 0.0963539, 0, 0.0550136, 0.981278, 0.0952306, 0, 0.0643988, 0.975777, 0.0936233, 0, 0.0742868, 0.970526, 0.0920219, 0, 0.0846501, 0.963755, 0.0898912, 0, 0.0954644, 0.956676, 0.0876064, 0, 0.106709, 0.948099, 0.0847751, 0, 0.118367, 0.939718, 0.0818638, 0, 0.130423, 0.931305, 0.078857, 0, 0.142862, 0.922342, 0.0756127, 0, 0.155674, 0.912842, 0.0721473, 0, 0.168849, 0.903304, 0.0686195, 0, 0.182378, 0.89411, 0.0650589, 0, 0.196255, 0.885512, 0.0616022, 0, 0.210473, 0.877193, 0.0582434, 0, 0.225027, 0.86877, 0.0548979, 0, 0.239915, 0.860267, 0.0516095, 0, 0.255132, 0.851915, 0.048468, 0, 0.270678, 0.843912, 0.0454447, 0, 0.286551, 0.83604, 0.0425612, 0, 0.302751, 0.828245, 0.0398752, 0, 0.31928, 0.820159, 0.0373198, 0, 0.336138, 0.81167, 0.034916, 0, 0.35333, 0.802659, 0.0326402, 0, 0.370858, 0.793921, 0.0304901, 0, 0.388728, 0.784713, 0.0284857, 0, 0.406944, 0.774946, 0.0266186, 0, 0.425515, 0.76448, 0.0248593, 0, 0.444449, 0.753793, 0.0232114, 0, 0.463756, 0.743506, 0.0217039, 0, 0.483447, 0.732555, 0.0202841, 0, 0.503535, 0.720965, 0.0189648, 0, 0.524036, 0.709422, 0.0177189, 0, 0.544968, 0.697756, 0.0165626, 0, 0.56635, 0.685565, 0.015483, 0, 0.588208, 0.673987, 0.0144892, 0, 0.610569, 0.66244, 0.0135607, 0, 0.633466, 0.651675, 0.0126956, 0, 0.656936, 0.641598, 0.0118788, 0, 0.681025, 0.63121, 0.0111261, 0, 0.705788, 0.620514, 0.010437, 0, 0.731289, 0.609366, 978747e-8, 0, 0.757606, 0.598137, 917257e-8, 0, 0.784834, 0.586966, 859778e-8, 0, 0.813085, 0.575549, 806803e-8, 0, 0.842485, 0.563797, 757294e-8, 0, 0.87313, 0.551758, 710592e-8, 0, 0.904762, 0.539894, 66841e-7, 0, 0.936508, 0.527901, 627901e-8, 0, 0.968254, 0.515819, 590506e-8, 0, 1, 1, 0.120864, 0, 0, 1, 0.120864, 0, 0, 0.999996, 0.120864, 0, 0, 0.99998, 0.120867, 0, 0, 0.99994, 0.120872, 0, 323781e-9, 0.999852, 0.120884, 0, 188693e-8, 0.999693, 0.120903, 0, 473489e-8, 0.999426, 0.120929, 0, 872704e-8, 0.999002, 0.120955, 0, 0.0137237, 0.998235, 0.120918, 0, 0.0196068, 0.994608, 0.119764, 0, 0.0262803, 0.992997, 0.119265, 0, 0.0336657, 0.990968, 0.11863, 0, 0.0416987, 0.987002, 0.117261, 0, 0.0503261, 0.983524, 0.116009, 0, 0.0595035, 0.97875, 0.114252, 0, 0.0691935, 0.972652, 0.11193, 0, 0.0793645, 0.966613, 0.109555, 0, 0.0899894, 0.959275, 0.106612, 0, 0.101045, 0.951272, 0.103375, 0, 0.112512, 0.942323, 0.0996594, 0, 0.124372, 0.933679, 0.0958841, 0, 0.136611, 0.924822, 0.0919265, 0, 0.149216, 0.915742, 0.0878061, 0, 0.162176, 0.906348, 0.0834894, 0, 0.175482, 0.896883, 0.079085, 0, 0.189125, 0.88774, 0.0746745, 0, 0.203098, 0.87986, 0.0705773, 0, 0.217396, 0.871998, 0.0665005, 0, 0.232015, 0.864325, 0.0625413, 0, 0.24695, 0.856685, 0.0586781, 0, 0.2622, 0.84925, 0.0550063, 0, 0.277761, 0.841719, 0.0514727, 0, 0.293634, 0.834755, 0.0481398, 0, 0.309819, 0.827853, 0.0450172, 0, 0.326315, 0.820888, 0.0420969, 0, 0.343126, 0.813616, 0.0393702, 0, 0.360254, 0.805767, 0.0367771, 0, 0.377701, 0.797338, 0.0343274, 0, 0.395474, 0.789122, 0.0320529, 0, 0.413577, 0.780601, 0.0299485, 0, 0.432018, 0.771424, 0.0279812, 0, 0.450804, 0.761502, 0.0261054, 0, 0.469944, 0.751166, 0.0243942, 0, 0.489451, 0.741276, 0.0228087, 0, 0.509337, 0.730898, 0.0213265, 0, 0.529617, 0.719878, 0.0199307, 0, 0.550307, 0.708379, 0.0186574, 0, 0.571428, 0.697165, 0.0174446, 0, 0.593003, 0.685554, 0.0163144, 0, 0.615059, 0.673631, 0.015276, 0, 0.637628, 0.662385, 0.0143003, 0, 0.660746, 0.651059, 0.0134112, 0, 0.68446, 0.640451, 0.0125794, 0, 0.70882, 0.630536, 0.011793, 0, 0.733893, 0.620316, 0.0110547, 0, 0.759756, 0.609722, 0.0103668, 0, 0.786505, 0.598804, 973009e-8, 0, 0.814259, 0.587871, 912812e-8, 0, 0.843157, 0.577121, 858916e-8, 0, 0.87334, 0.566019, 807333e-8, 0, 0.904762, 0.554664, 759687e-8, 0, 0.936508, 0.543101, 714759e-8, 0, 0.968254, 0.531558, 673418e-8, 0, 1, 1, 0.146767, 0, 0, 1, 0.146767, 0, 0, 0.999997, 0.146767, 0, 0, 0.999977, 0.146765, 0, 320658e-11, 0.999929, 0.146762, 0, 682576e-9, 0.999823, 0.146753, 0, 276402e-8, 0.999633, 0.146735, 0, 614771e-8, 0.999314, 0.146699, 0, 0.0106613, 0.998796, 0.14662, 0, 0.0161546, 0.997124, 0.146107, 0, 0.0225063, 0.994062, 0.144857, 0, 0.0296198, 0.992154, 0.144011, 0, 0.037417, 0.989186, 0.142712, 0, 0.0458348, 0.985279, 0.140926, 0, 0.0548211, 0.980826, 0.13885, 0, 0.0643326, 0.975056, 0.136168, 0, 0.074333, 0.969005, 0.133217, 0, 0.0847917, 0.961554, 0.12959, 0, 0.0956828, 0.954206, 0.125886, 0, 0.106984, 0.945046, 0.121335, 0, 0.118675, 0.935678, 0.116492, 0, 0.130741, 0.926748, 0.111635, 0, 0.143166, 0.917764, 0.106625, 0, 0.155939, 0.908358, 0.101325, 0, 0.169049, 0.899219, 0.0960249, 0, 0.182487, 0.890089, 0.0906527, 0, 0.196245, 0.881488, 0.0853905, 0, 0.210317, 0.874031, 0.0804177, 0, 0.224697, 0.866932, 0.0756005, 0, 0.23938, 0.859976, 0.0709019, 0, 0.254364, 0.853375, 0.0664391, 0, 0.269646, 0.846971, 0.0622012, 0, 0.285223, 0.840483, 0.058129, 0, 0.301096, 0.833969, 0.0542762, 0, 0.317265, 0.82806, 0.0507042, 0, 0.333729, 0.822128, 0.047368, 0, 0.350491, 0.815989, 0.044272, 0, 0.367554, 0.809336, 0.0413444, 0, 0.38492, 0.802177, 0.038601, 0, 0.402594, 0.79441, 0.0360227, 0, 0.420582, 0.786573, 0.0336383, 0, 0.438891, 0.778619, 0.0314321, 0, 0.457527, 0.77, 0.029362, 0, 0.476499, 0.760698, 0.0274102, 0, 0.49582, 0.750932, 0.0256146, 0, 0.5155, 0.740993, 0.023974, 0, 0.535555, 0.731159, 0.0224182, 0, 0.556, 0.720836, 0.0209889, 0, 0.576855, 0.709913, 0.0196411, 0, 0.598143, 0.698415, 0.0183824, 0, 0.619888, 0.68745, 0.0172222, 0, 0.642123, 0.676154, 0.0161509, 0, 0.664883, 0.664383, 0.0151397, 0, 0.688211, 0.6533, 0.0141873, 0, 0.71216, 0.642072, 0.0133105, 0, 0.736792, 0.631412, 0.0124932, 0, 0.762186, 0.621622, 0.0117408, 0, 0.788439, 0.611681, 0.0110358, 0, 0.815672, 0.60142, 0.0103775, 0, 0.844034, 0.59083, 975623e-8, 0, 0.873699, 0.580254, 918084e-8, 0, 0.904765, 0.569841, 864721e-8, 0, 0.936508, 0.559224, 815731e-8, 0, 0.968254, 0.548315, 767924e-8, 0, 1, 1, 0.177563, 0, 0, 1, 0.177563, 0, 0, 0.999994, 0.177562, 0, 0, 0.999972, 0.177555, 0, 664171e-10, 0.999914, 0.177536, 0, 12276e-7, 0.999787, 0.177496, 0, 388025e-8, 0.999556, 0.17742, 0, 783463e-8, 0.999165, 0.177285, 0, 0.0128953, 0.9985, 0.177037, 0, 0.0189053, 0.995388, 0.175634, 0, 0.025742, 0.993102, 0.174375, 0, 0.033309, 0.990992, 0.173121, 0, 0.0415298, 0.986932, 0.170896, 0, 0.0503425, 0.982786, 0.16847, 0, 0.0596964, 0.977592, 0.165455, 0, 0.0695498, 0.971075, 0.161676, 0, 0.0798676, 0.963967, 0.157458, 0, 0.0906201, 0.956397, 0.152836, 0, 0.101783, 0.947489, 0.147467, 0, 0.113333, 0.937564, 0.14145, 0, 0.125254, 0.928182, 0.135383, 0, 0.137529, 0.919027, 0.129212, 0, 0.150144, 0.909618, 0.12276, 0, 0.163088, 0.900492, 0.116273, 0, 0.176351, 0.891671, 0.1098, 0, 0.189924, 0.883146, 0.103362, 0, 0.203799, 0.875151, 0.0970799, 0, 0.21797, 0.868338, 0.0911732, 0, 0.232433, 0.862033, 0.0854966, 0, 0.247182, 0.856107, 0.0800691, 0, 0.262216, 0.850644, 0.0749618, 0, 0.27753, 0.845261, 0.070079, 0, 0.293124, 0.839885, 0.0654321, 0, 0.308997, 0.834609, 0.0610975, 0, 0.325149, 0.829083, 0.0569741, 0, 0.341581, 0.82404, 0.0531736, 0, 0.358294, 0.818968, 0.049665, 0, 0.37529, 0.813496, 0.0463856, 0, 0.392573, 0.807533, 0.0433217, 0, 0.410148, 0.80099, 0.0404402, 0, 0.428019, 0.793891, 0.0377578, 0, 0.446192, 0.786281, 0.0352616, 0, 0.464676, 0.778773, 0.0329577, 0, 0.483478, 0.770737, 0.030808, 0, 0.502608, 0.762094, 0.0287964, 0, 0.522079, 0.752898, 0.0269254, 0, 0.541905, 0.743306, 0.0251926, 0, 0.5621, 0.733416, 0.023595, 0, 0.582684, 0.723742, 0.0221155, 0, 0.603677, 0.713542, 0.0207435, 0, 0.625106, 0.702755, 0.019434, 0, 0.646998, 0.691484, 0.0182046, 0, 0.66939, 0.680531, 0.0170771, 0, 0.692324, 0.66953, 0.0160339, 0, 0.715849, 0.658126, 0.0150677, 0, 0.740028, 0.646933, 0.0141551, 0, 0.764937, 0.636107, 0.0133179, 0, 0.790673, 0.625271, 0.0125284, 0, 0.817358, 0.615225, 0.0117937, 0, 0.84515, 0.605678, 0.0111181, 0, 0.874244, 0.59583, 0.0104759, 0, 0.904828, 0.585704, 986672e-8, 0, 0.936508, 0.575413, 929712e-8, 0, 0.968254, 0.565373, 876713e-8, 0, 1, 1, 0.214058, 0, 0, 0.999999, 0.214058, 0, 0, 0.999994, 0.214055, 0, 0, 0.999966, 0.214039, 0, 259642e-9, 0.999893, 0.213998, 0, 200075e-8, 0.999737, 0.21391, 0, 527775e-8, 0.999449, 0.213745, 0, 983959e-8, 0.99896, 0.213458, 0, 0.0154755, 0.9979, 0.212855, 0, 0.0220249, 0.994278, 0.210779, 0, 0.0293654, 0.992254, 0.20926, 0, 0.0374021, 0.98881, 0.206908, 0, 0.0460604, 0.984715, 0.204009, 0, 0.0552802, 0.979738, 0.200471, 0, 0.0650127, 0.972884, 0.195813, 0, 0.0752175, 0.965996, 0.190856, 0, 0.0858612, 0.957974, 0.185077, 0, 0.0969155, 0.949155, 0.17868, 0, 0.108356, 0.939288, 0.171513, 0, 0.120163, 0.928996, 0.163838, 0, 0.132319, 0.919563, 0.156246, 0, 0.144808, 0.910004, 0.148359, 0, 0.157618, 0.900791, 0.140417, 0, 0.170737, 0.892135, 0.132569, 0, 0.184155, 0.883803, 0.124741, 0, 0.197866, 0.876034, 0.117091, 0, 0.211861, 0.869219, 0.109835, 0, 0.226134, 0.863062, 0.102859, 0, 0.240682, 0.857795, 0.0962928, 0, 0.255499, 0.853009, 0.0900725, 0, 0.270583, 0.848603, 0.0842101, 0, 0.285931, 0.844335, 0.0786527, 0, 0.301542, 0.840208, 0.0734397, 0, 0.317415, 0.836035, 0.0685334, 0, 0.33355, 0.83172, 0.0639275, 0, 0.349948, 0.827135, 0.0595909, 0, 0.36661, 0.822797, 0.0556204, 0, 0.383539, 0.818387, 0.0519394, 0, 0.400738, 0.813565, 0.0485317, 0, 0.41821, 0.808142, 0.0453138, 0, 0.435961, 0.802212, 0.0423354, 0, 0.453997, 0.79573, 0.0395553, 0, 0.472324, 0.788741, 0.036988, 0, 0.490951, 0.781093, 0.0345688, 0, 0.509887, 0.773597, 0.0323297, 0, 0.529144, 0.765622, 0.0302719, 0, 0.548735, 0.757083, 0.0283477, 0, 0.568674, 0.747992, 0.0265562, 0, 0.588979, 0.738591, 0.0248844, 0, 0.609671, 0.728719, 0.0233342, 0, 0.630773, 0.719146, 0.0219081, 0, 0.652314, 0.709165, 0.0205711, 0, 0.674328, 0.69875, 0.0193248, 0, 0.696854, 0.687884, 0.0181582, 0, 0.719942, 0.676818, 0.0170746, 0, 0.743651, 0.666247, 0.0160718, 0, 0.768057, 0.655284, 0.0151262, 0, 0.793253, 0.64401, 0.0142561, 0, 0.819363, 0.633353, 0.0134327, 0, 0.846547, 0.622674, 0.012653, 0, 0.875017, 0.612265, 0.0119354, 0, 0.905021, 0.602455, 0.0112533, 0, 0.936508, 0.593147, 0.0106234, 0, 0.968254, 0.583592, 0.0100213, 0, 1, 1, 0.25717, 0, 0, 1, 0.25717, 0, 0, 0.999992, 0.257164, 0, 0, 0.999958, 0.257135, 0, 641715e-9, 0.999864, 0.25706, 0, 305314e-8, 0.999666, 0.256897, 0, 700975e-8, 0.999302, 0.256596, 0, 0.0122194, 0.998663, 0.25607, 0, 0.0184622, 0.995607, 0.254123, 0, 0.0255773, 0.993094, 0.252081, 0, 0.0334439, 0.9907, 0.249867, 0, 0.0419696, 0.98594, 0.246118, 0, 0.0510823, 0.981214, 0.242049, 0, 0.0607242, 0.974966, 0.236869, 0, 0.0708486, 0.967589, 0.230724, 0, 0.081417, 0.95915, 0.223635, 0, 0.0923974, 0.950257, 0.21596, 0, 0.103763, 0.940165, 0.207296, 0, 0.115491, 0.929396, 0.197901, 0, 0.127562, 0.919288, 0.188437, 0, 0.13996, 0.909428, 0.178762, 0, 0.15267, 0.900105, 0.169072, 0, 0.165679, 0.891418, 0.159478, 0, 0.178979, 0.883347, 0.15002, 0, 0.192558, 0.875992, 0.140813, 0, 0.20641, 0.869466, 0.13196, 0, 0.220529, 0.863699, 0.123501, 0, 0.234907, 0.858553, 0.115436, 0, 0.249542, 0.854379, 0.107901, 0, 0.264428, 0.850894, 0.10088, 0, 0.279564, 0.847632, 0.0942296, 0, 0.294947, 0.844571, 0.0879861, 0, 0.310575, 0.84163, 0.0821534, 0, 0.326448, 0.838542, 0.0766409, 0, 0.342566, 0.835412, 0.0715322, 0, 0.358929, 0.831899, 0.0666883, 0, 0.37554, 0.828177, 0.0622175, 0, 0.392399, 0.82416, 0.0580452, 0, 0.409511, 0.820393, 0.054267, 0, 0.426878, 0.816068, 0.0507172, 0, 0.444506, 0.811201, 0.0474041, 0, 0.4624, 0.805785, 0.0443174, 0, 0.480566, 0.799878, 0.0414562, 0, 0.499013, 0.793469, 0.0388147, 0, 0.517749, 0.786473, 0.0363453, 0, 0.536785, 0.778874, 0.0340225, 0, 0.556134, 0.771277, 0.0318599, 0, 0.575809, 0.763426, 0.0298859, 0, 0.595827, 0.755044, 0.0280357, 0, 0.616207, 0.746161, 0.0262979, 0, 0.636973, 0.737124, 0.0247295, 0, 0.65815, 0.72761, 0.0232514, 0, 0.679772, 0.717822, 0.0218755, 0, 0.701876, 0.708279, 0.0205942, 0, 0.724509, 0.698333, 0.0193947, 0, 0.74773, 0.68802, 0.0182717, 0, 0.771609, 0.677321, 0.0172044, 0, 0.79624, 0.666504, 0.0162122, 0, 0.821743, 0.656184, 0.0152924, 0, 0.84828, 0.64556, 0.0144326, 0, 0.876069, 0.634636, 0.0136157, 0, 0.905404, 0.624124, 0.0128612, 0, 0.936508, 0.613914, 0.0121435, 0, 0.968254, 0.603589, 0.0114887, 0, 1, 1, 0.307946, 0, 0, 0.999999, 0.307945, 0, 0, 0.999988, 0.307934, 0, 204479e-10, 0.999944, 0.307886, 0, 127833e-8, 0.999824, 0.307756, 0, 445047e-8, 0.999565, 0.30748, 0, 914673e-8, 0.999085, 0.306966, 0, 0.0150498, 0.998103, 0.306004, 0, 0.0219367, 0.994249, 0.303028, 0, 0.0296485, 0.991807, 0.300435, 0, 0.038068, 0.987773, 0.296554, 0, 0.0471062, 0.982673, 0.2916, 0, 0.0566942, 0.976623, 0.285641, 0, 0.0667768, 0.968757, 0.27815, 0, 0.0773099, 0.959849, 0.269529, 0, 0.088257, 0.950663, 0.260248, 0, 0.0995879, 0.940129, 0.249704, 0, 0.111277, 0.92895, 0.238291, 0, 0.123304, 0.917996, 0.226501, 0, 0.13565, 0.907813, 0.214669, 0, 0.148299, 0.898305, 0.202835, 0, 0.161237, 0.889626, 0.191158, 0, 0.174455, 0.88175, 0.179695, 0, 0.187941, 0.874715, 0.168548, 0, 0.201687, 0.868746, 0.15792, 0, 0.215687, 0.863703, 0.147807, 0, 0.229933, 0.859315, 0.138149, 0, 0.24442, 0.855538, 0.128993, 0, 0.259145, 0.852428, 0.120414, 0, 0.274103, 0.850168, 0.112498, 0, 0.289293, 0.848132, 0.105054, 0, 0.304711, 0.846291, 0.0981087, 0, 0.320357, 0.844431, 0.0915942, 0, 0.33623, 0.842493, 0.0855056, 0, 0.35233, 0.840368, 0.0798204, 0, 0.368658, 0.83798, 0.0745097, 0, 0.385214, 0.83523, 0.0695424, 0, 0.402002, 0.832091, 0.0649092, 0, 0.419023, 0.828667, 0.0606291, 0, 0.436282, 0.824805, 0.0566523, 0, 0.453782, 0.820988, 0.0530229, 0, 0.471529, 0.816635, 0.0496364, 0, 0.489528, 0.811725, 0.0464658, 0, 0.507788, 0.806316, 0.0435082, 0, 0.526317, 0.800469, 0.0407873, 0, 0.545124, 0.794107, 0.038255, 0, 0.564221, 0.787218, 0.0358825, 0, 0.583621, 0.779872, 0.0336785, 0, 0.603341, 0.772097, 0.0316379, 0, 0.623397, 0.764484, 0.0297379, 0, 0.643812, 0.756428, 0.0279581, 0, 0.664611, 0.748022, 0.0263153, 0, 0.685824, 0.739268, 0.0247799, 0, 0.707488, 0.73024, 0.0233385, 0, 0.729646, 0.720893, 0.0220035, 0, 0.752354, 0.71119, 0.0207555, 0, 0.77568, 0.701791, 0.0195843, 0, 0.799715, 0.692184, 0.0184891, 0, 0.824574, 0.682258, 0.0174541, 0, 0.850417, 0.67206, 0.0164873, 0, 0.877466, 0.661717, 0.0155959, 0, 0.90604, 0.651462, 0.0147519, 0, 0.936528, 0.641467, 0.0139727, 0, 0.968254, 0.631229, 0.0132363, 0, 1, 1, 0.367573, 0, 0, 0.999999, 0.367571, 0, 0, 0.999984, 0.367553, 0, 183382e-9, 0.999925, 0.367473, 0, 225254e-8, 0.999759, 0.367259, 0, 628165e-8, 0.99941, 0.366801, 0, 0.0117858, 0.998739, 0.365946, 0, 0.0184359, 0.995529, 0.363191, 0, 0.0260114, 0.992875, 0.360171, 0, 0.0343581, 0.989135, 0.355981, 0, 0.0433637, 0.984166, 0.350401, 0, 0.0529438, 0.977871, 0.343348, 0, 0.0630334, 0.96951, 0.334341, 0, 0.0735805, 0.959964, 0.323862, 0, 0.0845437, 0.950162, 0.312521, 0, 0.095889, 0.938882, 0.299577, 0, 0.107588, 0.926992, 0.285573, 0, 0.119617, 0.915589, 0.271212, 0, 0.131957, 0.904791, 0.256611, 0, 0.144591, 0.895177, 0.242224, 0, 0.157503, 0.886403, 0.227952, 0, 0.170682, 0.878957, 0.214192, 0, 0.184117, 0.872418, 0.200795, 0, 0.197799, 0.867029, 0.188015, 0, 0.21172, 0.862835, 0.175975, 0, 0.225873, 0.859411, 0.164526, 0, 0.240253, 0.856655, 0.153693, 0, 0.254854, 0.854519, 0.14352, 0, 0.269673, 0.852828, 0.13397, 0, 0.284707, 0.851412, 0.124984, 0, 0.299953, 0.850609, 0.116748, 0, 0.315408, 0.849855, 0.10905, 0, 0.331073, 0.849017, 0.101839, 0, 0.346946, 0.848079, 0.0951359, 0, 0.363028, 0.846911, 0.0888774, 0, 0.379318, 0.845445, 0.0830375, 0, 0.395818, 0.84362, 0.0775844, 0, 0.41253, 0.841411, 0.0725054, 0, 0.429457, 0.838768, 0.0677691, 0, 0.446602, 0.835801, 0.0634016, 0, 0.463968, 0.832341, 0.0593095, 0, 0.481561, 0.828424, 0.0555121, 0, 0.499386, 0.824312, 0.052024, 0, 0.51745, 0.819918, 0.0487865, 0, 0.535761, 0.815072, 0.0457801, 0, 0.554328, 0.809863, 0.0430184, 0, 0.573162, 0.804164, 0.0404245, 0, 0.592275, 0.798034, 0.0380146, 0, 0.611681, 0.791436, 0.0357436, 0, 0.631398, 0.784498, 0.0336475, 0, 0.651445, 0.777125, 0.0316666, 0, 0.671845, 0.769365, 0.0298122, 0, 0.692628, 0.761579, 0.0281001, 0, 0.713827, 0.753746, 0.0265049, 0, 0.735484, 0.745573, 0.0250067, 0, 0.75765, 0.737083, 0.0236026, 0, 0.78039, 0.728545, 0.0223302, 0, 0.803789, 0.719691, 0.0211243, 0, 0.82796, 0.710569, 0.0199983, 0, 0.853056, 0.701216, 0.0189569, 0, 0.879298, 0.692094, 0.0179702, 0, 0.907014, 0.682909, 0.0170418, 0, 0.936691, 0.673509, 0.0161732, 0, 0.968254, 0.663863, 0.0153406, 0, 1, 1, 0.437395, 0, 0, 0.999998, 0.437394, 0, 0, 0.99998, 0.437363, 0, 616704e-9, 0.999891, 0.437232, 0, 367925e-8, 0.999656, 0.436877, 0, 867446e-8, 0.999148, 0.436121, 0, 0.0150679, 0.997959, 0.434564, 0, 0.022531, 0.993464, 0.430134, 0, 0.0308507, 0.990606, 0.426077, 0, 0.0398805, 0.985027, 0.419397, 0, 0.0495148, 0.978491, 0.41118, 0, 0.0596749, 0.969643, 0.40048, 0, 0.0703001, 0.959189, 0.38769, 0, 0.0813427, 0.948223, 0.373575, 0, 0.0927641, 0.935955, 0.357622, 0, 0.104533, 0.923237, 0.34043, 0, 0.116624, 0.911074, 0.322735, 0, 0.129015, 0.899724, 0.30479, 0, 0.141687, 0.890189, 0.287392, 0, 0.154626, 0.881796, 0.270248, 0, 0.167818, 0.874781, 0.253659, 0, 0.181252, 0.869166, 0.237786, 0, 0.194918, 0.864725, 0.222618, 0, 0.208807, 0.861565, 0.208356, 0, 0.222913, 0.859284, 0.194867, 0, 0.237229, 0.857677, 0.18212, 0, 0.25175, 0.856714, 0.17018, 0, 0.266473, 0.856155, 0.158969, 0, 0.281392, 0.8558, 0.148413, 0, 0.296505, 0.855672, 0.138578, 0, 0.311811, 0.855538, 0.129345, 0, 0.327306, 0.855689, 0.120861, 0, 0.342991, 0.855767, 0.112969, 0, 0.358864, 0.855618, 0.105593, 0, 0.374925, 0.85525, 0.0987451, 0, 0.391176, 0.854583, 0.0923727, 0, 0.407616, 0.853534, 0.0864143, 0, 0.424249, 0.852061, 0.0808338, 0, 0.441076, 0.850253, 0.0756771, 0, 0.4581, 0.848004, 0.0708612, 0, 0.475324, 0.845333, 0.0663784, 0, 0.492754, 0.842376, 0.0622631, 0, 0.510394, 0.838956, 0.0584112, 0, 0.528251, 0.835121, 0.0548328, 0, 0.546331, 0.830842, 0.0514838, 0, 0.564644, 0.826212, 0.048355, 0, 0.583198, 0.821522, 0.0454714, 0, 0.602005, 0.816551, 0.0428263, 0, 0.621078, 0.811211, 0.0403612, 0, 0.640434, 0.805479, 0.038039, 0, 0.660089, 0.799409, 0.0358739, 0, 0.680066, 0.79306, 0.0338727, 0, 0.70039, 0.786395, 0.0319985, 0, 0.721094, 0.779416, 0.030241, 0, 0.742215, 0.77214, 0.0285951, 0, 0.7638, 0.764636, 0.0270747, 0, 0.785912, 0.756836, 0.0256354, 0, 0.808628, 0.749315, 0.0243027, 0, 0.832055, 0.741561, 0.0230497, 0, 0.856338, 0.733589, 0.0218801, 0, 0.88169, 0.725479, 0.020784, 0, 0.908441, 0.717255, 0.0197702, 0, 0.937125, 0.708829, 0.0188168, 0, 0.968254, 0.700191, 0.0179113, 0, 1, 1, 0.518937, 0, 0, 0.999998, 0.518933, 0, 0, 0.999967, 0.518883, 0, 147741e-8, 0.999832, 0.51866, 0, 573221e-8, 0.999466, 0.518057, 0, 0.011826, 0.998644, 0.516752, 0, 0.0192116, 0.994458, 0.512347, 0, 0.027573, 0.991223, 0.507675, 0, 0.0367099, 0.985515, 0.500188, 0, 0.046487, 0.978308, 0.490408, 0, 0.0568071, 0.968359, 0.477357, 0, 0.0675984, 0.95682, 0.461752, 0, 0.0788059, 0.943929, 0.443796, 0, 0.090386, 0.930224, 0.423893, 0, 0.102304, 0.916514, 0.402682, 0, 0.114532, 0.903653, 0.380914, 0, 0.127047, 0.892315, 0.359212, 0, 0.139828, 0.882942, 0.338102, 0, 0.152861, 0.875438, 0.31773, 0, 0.16613, 0.869642, 0.298186, 0, 0.179624, 0.865304, 0.279491, 0, 0.193332, 0.862382, 0.261804, 0, 0.207247, 0.860666, 0.245146, 0, 0.22136, 0.859788, 0.229406, 0, 0.235666, 0.859608, 0.214605, 0, 0.250158, 0.859912, 0.200691, 0, 0.264832, 0.86053, 0.187623, 0, 0.279684, 0.861368, 0.17539, 0, 0.294711, 0.862237, 0.163901, 0, 0.309911, 0.863127, 0.153175, 0, 0.32528, 0.863923, 0.143147, 0, 0.340819, 0.864567, 0.133781, 0, 0.356524, 0.865013, 0.125042, 0, 0.372397, 0.86539, 0.116952, 0, 0.388438, 0.865591, 0.109476, 0, 0.404645, 0.865517, 0.102542, 0, 0.421022, 0.865084, 0.0960688, 0, 0.437569, 0.864309, 0.0900499, 0, 0.454287, 0.863151, 0.0844328, 0, 0.471181, 0.861649, 0.0792218, 0, 0.488253, 0.859742, 0.0743482, 0, 0.505507, 0.857446, 0.0697963, 0, 0.522947, 0.854757, 0.0655364, 0, 0.54058, 0.851783, 0.061608, 0, 0.558412, 0.848516, 0.0579701, 0, 0.576449, 0.844897, 0.0545742, 0, 0.594701, 0.840956, 0.0514167, 0, 0.613178, 0.836676, 0.0484598, 0, 0.631892, 0.832075, 0.0456934, 0, 0.650856, 0.827191, 0.0431178, 0, 0.670088, 0.822295, 0.0407718, 0, 0.689606, 0.817294, 0.0386032, 0, 0.709434, 0.812013, 0.0365675, 0, 0.7296, 0.806465, 0.0346547, 0, 0.750138, 0.800691, 0.0328717, 0, 0.771093, 0.794709, 0.031211, 0, 0.792519, 0.788493, 0.0296504, 0, 0.814488, 0.782049, 0.0281782, 0, 0.837097, 0.775403, 0.0267965, 0, 0.860481, 0.76857, 0.0255002, 0, 0.884842, 0.761536, 0.0242759, 0, 0.910494, 0.754303, 0.0231142, 0, 0.937985, 0.74692, 0.0220305, 0, 0.968254, 0.739745, 0.0210192, 0, 1, 1, 0.613914, 0, 0, 0.999996, 0.613907, 0, 963597e-10, 0.999942, 0.613814, 0, 301247e-8, 0.999704, 0.613407, 0, 870385e-8, 0.999046, 0.612302, 0, 0.0160714, 0.995516, 0.608266, 0, 0.0245899, 0.991726, 0.602863, 0, 0.0339681, 0.985157, 0.593956, 0, 0.0440254, 0.97642, 0.581748, 0, 0.0546409, 0.964404, 0.565183, 0, 0.0657284, 0.950601, 0.545273, 0, 0.0772246, 0.935158, 0.522129, 0, 0.0890812, 0.919364, 0.496782, 0, 0.10126, 0.904754, 0.470571, 0, 0.113731, 0.89176, 0.444037, 0, 0.126469, 0.881492, 0.418322, 0, 0.139454, 0.873656, 0.393522, 0, 0.15267, 0.868053, 0.369795, 0, 0.166101, 0.864336, 0.347171, 0, 0.179736, 0.862259, 0.325737, 0, 0.193565, 0.861556, 0.305532, 0, 0.207578, 0.861776, 0.286416, 0, 0.221769, 0.862661, 0.268355, 0, 0.23613, 0.864015, 0.251334, 0, 0.250656, 0.865711, 0.235352, 0, 0.265343, 0.867519, 0.220302, 0, 0.280187, 0.869351, 0.206161, 0, 0.295183, 0.871144, 0.192908, 0, 0.31033, 0.872839, 0.180505, 0, 0.325624, 0.874307, 0.168848, 0, 0.341065, 0.875667, 0.158021, 0, 0.35665, 0.876758, 0.147877, 0, 0.37238, 0.87764, 0.138441, 0, 0.388253, 0.878237, 0.129627, 0, 0.404269, 0.878563, 0.121415, 0, 0.42043, 0.878572, 0.113741, 0, 0.436735, 0.87842, 0.106652, 0, 0.453187, 0.878057, 0.100097, 0, 0.469786, 0.877413, 0.0940128, 0, 0.486536, 0.87646, 0.0883462, 0, 0.503439, 0.875233, 0.0830924, 0, 0.520498, 0.8737, 0.0781975, 0, 0.537717, 0.871873, 0.07364, 0, 0.555102, 0.86978, 0.0694103, 0, 0.572657, 0.867405, 0.0654696, 0, 0.59039, 0.864751, 0.0617914, 0, 0.608307, 0.861818, 0.0583491, 0, 0.626419, 0.858645, 0.0551443, 0, 0.644733, 0.855307, 0.0521894, 0, 0.663264, 0.851736, 0.0494334, 0, 0.682025, 0.847927, 0.0468504, 0, 0.701032, 0.843888, 0.0444261, 0, 0.720308, 0.839629, 0.0421497, 0, 0.739875, 0.835158, 0.0400082, 0, 0.759764, 0.830509, 0.0380076, 0, 0.780014, 0.825714, 0.0361488, 0, 0.800673, 0.820729, 0.0343956, 0, 0.821803, 0.815751, 0.0327781, 0, 0.843492, 0.810752, 0.031275, 0, 0.86586, 0.805587, 0.0298542, 0, 0.889087, 0.800317, 0.0285397, 0, 0.913466, 0.79489, 0.0272948, 0, 0.93952, 0.789314, 0.0261139, 0, 0.96835, 0.783593, 0.0249938, 0, 1, 1, 0.724258, 0, 0, 0.999992, 0.724243, 0, 726889e-9, 0.99987, 0.724044, 0, 569574e-8, 0.999336, 0.72317, 0, 0.0131702, 0.996271, 0.719432, 0, 0.0220738, 0.991159, 0.712576, 0, 0.0319405, 0.982465, 0.700927, 0, 0.0425202, 0.97049, 0.684297, 0, 0.0536599, 0.953973, 0.661244, 0, 0.065258, 0.935546, 0.633804, 0, 0.0772427, 0.916596, 0.603071, 0, 0.0895616, 0.899353, 0.57105, 0, 0.102175, 0.885216, 0.539206, 0, 0.11505, 0.875076, 0.508714, 0, 0.128164, 0.868334, 0.479571, 0, 0.141495, 0.864414, 0.451796, 0, 0.155026, 0.862678, 0.425328, 0, 0.168745, 0.862835, 0.400352, 0, 0.182639, 0.864067, 0.376532, 0, 0.196699, 0.866086, 0.35391, 0, 0.210915, 0.868557, 0.332424, 0, 0.225282, 0.871271, 0.312053, 0, 0.239792, 0.874058, 0.292764, 0, 0.25444, 0.8768, 0.27453, 0, 0.269223, 0.87939, 0.257297, 0, 0.284135, 0.8819, 0.24114, 0, 0.299174, 0.884187, 0.225934, 0, 0.314337, 0.886262, 0.211669, 0, 0.329622, 0.888119, 0.198311, 0, 0.345026, 0.889709, 0.185783, 0, 0.360549, 0.891054, 0.174063, 0, 0.376189, 0.892196, 0.163143, 0, 0.391946, 0.893101, 0.152952, 0, 0.407819, 0.893803, 0.143475, 0, 0.423808, 0.894277, 0.134647, 0, 0.439914, 0.894532, 0.126434, 0, 0.456137, 0.894576, 0.1188, 0, 0.472479, 0.894393, 0.111694, 0, 0.48894, 0.893976, 0.105069, 0, 0.505523, 0.893346, 0.0989077, 0, 0.52223, 0.892502, 0.0931724, 0, 0.539064, 0.891441, 0.0878276, 0, 0.556028, 0.890276, 0.082903, 0, 0.573125, 0.888972, 0.0783505, 0, 0.590361, 0.887469, 0.0741083, 0, 0.607741, 0.885785, 0.0701633, 0, 0.62527, 0.883914, 0.0664835, 0, 0.642957, 0.881872, 0.0630567, 0, 0.660809, 0.879651, 0.0598527, 0, 0.678836, 0.877267, 0.0568615, 0, 0.69705, 0.874717, 0.05406, 0, 0.715465, 0.872012, 0.0514378, 0, 0.734098, 0.869157, 0.0489805, 0, 0.752968, 0.866155, 0.0466727, 0, 0.772101, 0.863014, 0.0445056, 0, 0.791529, 0.859748, 0.0424733, 0, 0.81129, 0.856416, 0.0405957, 0, 0.831438, 0.852958, 0.0388273, 0, 0.852044, 0.849382, 0.0371619, 0, 0.87321, 0.845694, 0.0355959, 0, 0.89509, 0.841893, 0.0341155, 0, 0.917932, 0.837981, 0.0327141, 0, 0.942204, 0.833963, 0.0313856, 0, 0.968981, 0.829847, 0.0301275, 0, 1, 1, 0.85214, 0, 0, 0.999969, 0.852095, 0, 279627e-8, 0.999483, 0.851408, 0, 0.0107635, 0.994545, 0.84579, 0, 0.0206454, 0.986188, 0.835231, 0, 0.0315756, 0.969847, 0.814687, 0, 0.0432021, 0.945951, 0.783735, 0, 0.0553396, 0.91917, 0.746074, 0, 0.0678766, 0.895488, 0.706938, 0, 0.0807395, 0.878232, 0.669534, 0, 0.0938767, 0.868252, 0.635168, 0, 0.10725, 0.863873, 0.603069, 0, 0.120832, 0.863369, 0.572514, 0, 0.134598, 0.86545, 0.543169, 0, 0.148533, 0.868803, 0.514578, 0, 0.16262, 0.872794, 0.486762, 0, 0.176849, 0.87702, 0.459811, 0, 0.19121, 0.881054, 0.433654, 0, 0.205694, 0.884974, 0.408574, 0, 0.220294, 0.888587, 0.384525, 0, 0.235005, 0.891877, 0.36156, 0, 0.24982, 0.894793, 0.339661, 0, 0.264737, 0.89743, 0.318913, 0, 0.279751, 0.899796, 0.299302, 0, 0.294859, 0.901943, 0.280843, 0, 0.310058, 0.903858, 0.263481, 0, 0.325346, 0.905574, 0.247197, 0, 0.340721, 0.907069, 0.231915, 0, 0.356181, 0.908379, 0.217614, 0, 0.371725, 0.90952, 0.20425, 0, 0.387353, 0.910483, 0.191758, 0, 0.403063, 0.91128, 0.180092, 0, 0.418854, 0.911936, 0.169222, 0, 0.434727, 0.912454, 0.159098, 0, 0.450682, 0.912835, 0.149668, 0, 0.466718, 0.913078, 0.140884, 0, 0.482837, 0.913192, 0.132709, 0, 0.499038, 0.913175, 0.125095, 0, 0.515324, 0.91304, 0.118012, 0, 0.531695, 0.912781, 0.111417, 0, 0.548153, 0.91241, 0.105281, 0, 0.5647, 0.911924, 0.0995691, 0, 0.581338, 0.911331, 0.0942531, 0, 0.59807, 0.910637, 0.0893076, 0, 0.6149, 0.90984, 0.0846998, 0, 0.63183, 0.908941, 0.0804044, 0, 0.648865, 0.907944, 0.0763984, 0, 0.666011, 0.906857, 0.0726638, 0, 0.683273, 0.90568, 0.0691783, 0, 0.700659, 0.904416, 0.0659222, 0, 0.718176, 0.903067, 0.0628782, 0, 0.735834, 0.901637, 0.0600307, 0, 0.753646, 0.900128, 0.0573647, 0, 0.771625, 0.898544, 0.0548668, 0, 0.78979, 0.89689, 0.052527, 0, 0.808162, 0.895165, 0.0503306, 0, 0.826771, 0.893371, 0.0482668, 0, 0.845654, 0.891572, 0.0463605, 0, 0.864863, 0.889763, 0.0445998, 0, 0.884472, 0.887894, 0.0429451, 0, 0.904592, 0.885967, 0.0413884, 0, 0.925407, 0.883984, 0.0399225, 0, 0.947271, 0.881945, 0.0385405, 0, 0.97105, 0.879854, 0.0372362, 0, 1, 0.999804, 0.995833, 0, 0, 0.938155, 0.933611, 0, 0.0158731, 0.864755, 0.854311, 0, 0.0317461, 0.888594, 0.865264, 0, 0.0476191, 0.905575, 0.863922, 0, 0.0634921, 0.915125, 0.850558, 0, 0.0793651, 0.920665, 0.829254, 0, 0.0952381, 0.924073, 0.802578, 0, 0.111111, 0.926304, 0.772211, 0, 0.126984, 0.927829, 0.739366, 0, 0.142857, 0.928924, 0.705033, 0, 0.15873, 0.92973, 0.670019, 0, 0.174603, 0.930339, 0.634993, 0, 0.190476, 0.930811, 0.600485, 0, 0.206349, 0.931191, 0.566897, 0, 0.222222, 0.93149, 0.534485, 0, 0.238095, 0.931737, 0.503429, 0, 0.253968, 0.931939, 0.473811, 0, 0.269841, 0.932108, 0.445668, 0, 0.285714, 0.93225, 0.418993, 0, 0.301587, 0.932371, 0.393762, 0, 0.31746, 0.932474, 0.369939, 0, 0.333333, 0.932562, 0.347479, 0, 0.349206, 0.932638, 0.326336, 0, 0.365079, 0.932703, 0.306462, 0, 0.380952, 0.93276, 0.287805, 0, 0.396825, 0.932809, 0.270313, 0, 0.412698, 0.932851, 0.253933, 0, 0.428571, 0.932887, 0.23861, 0, 0.444444, 0.932917, 0.224289, 0, 0.460317, 0.932943, 0.210917, 0, 0.47619, 0.932965, 0.19844, 0, 0.492063, 0.932982, 0.186807, 0, 0.507937, 0.932995, 0.175966, 0, 0.52381, 0.933005, 0.165869, 0, 0.539683, 0.933011, 0.156468, 0, 0.555556, 0.933013, 0.147719, 0, 0.571429, 0.933013, 0.139579, 0, 0.587302, 0.93301, 0.132007, 0, 0.603175, 0.933004, 0.124965, 0, 0.619048, 0.932994, 0.118416, 0, 0.634921, 0.932982, 0.112326, 0, 0.650794, 0.932968, 0.106663, 0, 0.666667, 0.93295, 0.101397, 0, 0.68254, 0.932931, 0.0964993, 0, 0.698413, 0.932908, 0.0919438, 0, 0.714286, 0.932883, 0.0877057, 0, 0.730159, 0.932856, 0.0837623, 0, 0.746032, 0.932827, 0.0800921, 0, 0.761905, 0.932796, 0.0766754, 0, 0.777778, 0.932762, 0.0734936, 0, 0.793651, 0.932727, 0.0705296, 0, 0.809524, 0.932689, 0.0677676, 0, 0.825397, 0.93265, 0.0651929, 0, 0.84127, 0.932609, 0.0627917, 0, 0.857143, 0.932565, 0.0605515, 0, 0.873016, 0.932521, 0.0584606, 0, 0.888889, 0.932474, 0.0565082, 0, 0.904762, 0.932427, 0.0546841, 0, 0.920635, 0.932377, 0.0529793, 0, 0.936508, 0.932326, 0.0513851, 0, 0.952381, 0.932274, 0.0498936, 0, 0.968254, 0.93222, 0.0484975, 0, 0.984127, 0.932164, 0.0471899, 0, 1]; - const ltc_float_1 = new Float32Array(LTC_MAT_1); - const ltc_float_2 = new Float32Array(LTC_MAT_2); - const LTC_FLOAT_1 = new DataTexture(ltc_float_1, 64, 64, RGBAFormat, FloatType, UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, NearestFilter, 1); - const LTC_FLOAT_2 = new DataTexture(ltc_float_2, 64, 64, RGBAFormat, FloatType, UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, NearestFilter, 1); - LTC_FLOAT_1.needsUpdate = true; - LTC_FLOAT_2.needsUpdate = true; - const ltc_half_1 = new Uint16Array(LTC_MAT_1.length); - LTC_MAT_1.forEach(function(x2, index2) { - ltc_half_1[index2] = DataUtils.toHalfFloat(x2); - }); - const ltc_half_2 = new Uint16Array(LTC_MAT_2.length); - LTC_MAT_2.forEach(function(x2, index2) { - ltc_half_2[index2] = DataUtils.toHalfFloat(x2); - }); - const LTC_HALF_1 = new DataTexture(ltc_half_1, 64, 64, RGBAFormat, HalfFloatType, UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, NearestFilter, 1); - const LTC_HALF_2 = new DataTexture(ltc_half_2, 64, 64, RGBAFormat, HalfFloatType, UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, NearestFilter, 1); - LTC_HALF_1.needsUpdate = true; - LTC_HALF_2.needsUpdate = true; - this.LTC_HALF_1 = LTC_HALF_1; - this.LTC_HALF_1 = LTC_HALF_2; - this.LTC_FLOAT_1 = LTC_FLOAT_1; - this.LTC_FLOAT_2 = LTC_FLOAT_2; - return this; - } -}; -RectAreaLightTexturesLib.LTC_HALF_1 = null; -RectAreaLightTexturesLib.LTC_HALF_1 = null; -RectAreaLightTexturesLib.LTC_FLOAT_1 = null; -RectAreaLightTexturesLib.LTC_FLOAT_2 = null; - -// node_modules/three/examples/jsm/lights/RectAreaLightUniformsLib.js -var RectAreaLightUniformsLib = class { - static init() { - RectAreaLightTexturesLib.init(); - const { LTC_FLOAT_1, LTC_FLOAT_2, LTC_HALF_1, LTC_HALF_2 } = RectAreaLightTexturesLib; - UniformsLib.LTC_FLOAT_1 = LTC_FLOAT_1; - UniformsLib.LTC_FLOAT_2 = LTC_FLOAT_2; - UniformsLib.LTC_HALF_1 = LTC_HALF_1; - UniformsLib.LTC_HALF_2 = LTC_HALF_2; - } -}; - -// node_modules/three/examples/jsm/lines/LineSegmentsGeometry.js -var _box = new Box3(); -var _vector3 = new Vector3(); -var LineSegmentsGeometry = class extends InstancedBufferGeometry { - constructor() { - super(); - this.isLineSegmentsGeometry = true; - this.type = "LineSegmentsGeometry"; - const positions = [-1, 2, 0, 1, 2, 0, -1, 1, 0, 1, 1, 0, -1, 0, 0, 1, 0, 0, -1, -1, 0, 1, -1, 0]; - const uvs = [-1, 2, 1, 2, -1, 1, 1, 1, -1, -1, 1, -1, -1, -2, 1, -2]; - const index2 = [0, 2, 1, 2, 3, 1, 2, 4, 3, 4, 5, 3, 4, 6, 5, 6, 7, 5]; - this.setIndex(index2); - this.setAttribute("position", new Float32BufferAttribute(positions, 3)); - this.setAttribute("uv", new Float32BufferAttribute(uvs, 2)); - } - applyMatrix4(matrix3) { - const start = this.attributes.instanceStart; - const end = this.attributes.instanceEnd; - if (start !== void 0) { - start.applyMatrix4(matrix3); - end.applyMatrix4(matrix3); - start.needsUpdate = true; - } - if (this.boundingBox !== null) { - this.computeBoundingBox(); - } - if (this.boundingSphere !== null) { - this.computeBoundingSphere(); - } - return this; - } - setPositions(array) { - let lineSegments; - if (array instanceof Float32Array) { - lineSegments = array; - } else if (Array.isArray(array)) { - lineSegments = new Float32Array(array); - } - const instanceBuffer = new InstancedInterleavedBuffer(lineSegments, 6, 1); - this.setAttribute("instanceStart", new InterleavedBufferAttribute(instanceBuffer, 3, 0)); - this.setAttribute("instanceEnd", new InterleavedBufferAttribute(instanceBuffer, 3, 3)); - this.computeBoundingBox(); - this.computeBoundingSphere(); - return this; - } - setColors(array) { - let colors; - if (array instanceof Float32Array) { - colors = array; - } else if (Array.isArray(array)) { - colors = new Float32Array(array); - } - const instanceColorBuffer = new InstancedInterleavedBuffer(colors, 6, 1); - this.setAttribute("instanceColorStart", new InterleavedBufferAttribute(instanceColorBuffer, 3, 0)); - this.setAttribute("instanceColorEnd", new InterleavedBufferAttribute(instanceColorBuffer, 3, 3)); - return this; - } - fromWireframeGeometry(geometry) { - this.setPositions(geometry.attributes.position.array); - return this; - } - fromEdgesGeometry(geometry) { - this.setPositions(geometry.attributes.position.array); - return this; - } - fromMesh(mesh) { - this.fromWireframeGeometry(new WireframeGeometry(mesh.geometry)); - return this; - } - fromLineSegments(lineSegments) { - const geometry = lineSegments.geometry; - this.setPositions(geometry.attributes.position.array); - return this; - } - computeBoundingBox() { - if (this.boundingBox === null) { - this.boundingBox = new Box3(); - } - const start = this.attributes.instanceStart; - const end = this.attributes.instanceEnd; - if (start !== void 0 && end !== void 0) { - this.boundingBox.setFromBufferAttribute(start); - _box.setFromBufferAttribute(end); - this.boundingBox.union(_box); - } - } - computeBoundingSphere() { - if (this.boundingSphere === null) { - this.boundingSphere = new Sphere(); - } - if (this.boundingBox === null) { - this.computeBoundingBox(); - } - const start = this.attributes.instanceStart; - const end = this.attributes.instanceEnd; - if (start !== void 0 && end !== void 0) { - const center = this.boundingSphere.center; - this.boundingBox.getCenter(center); - let maxRadiusSq = 0; - for (let i = 0, il = start.count; i < il; i++) { - _vector3.fromBufferAttribute(start, i); - maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector3)); - _vector3.fromBufferAttribute(end, i); - maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector3)); - } - this.boundingSphere.radius = Math.sqrt(maxRadiusSq); - if (isNaN(this.boundingSphere.radius)) { - console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.", this); - } - } - } - toJSON() { - } - applyMatrix(matrix3) { - console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."); - return this.applyMatrix4(matrix3); - } -}; - -// node_modules/three/examples/jsm/lines/LineMaterial.js -UniformsLib.line = { - worldUnits: { value: 1 }, - linewidth: { value: 1 }, - resolution: { value: new Vector2(1, 1) }, - dashOffset: { value: 0 }, - dashScale: { value: 1 }, - dashSize: { value: 1 }, - gapSize: { value: 1 } - // todo FIX - maybe change to totalSize -}; -ShaderLib["line"] = { - uniforms: UniformsUtils.merge([ - UniformsLib.common, - UniformsLib.fog, - UniformsLib.line - ]), - vertexShader: ( - /* glsl */ - ` - #include - #include - #include - #include - #include - - uniform float linewidth; - uniform vec2 resolution; - - attribute vec3 instanceStart; - attribute vec3 instanceEnd; - - attribute vec3 instanceColorStart; - attribute vec3 instanceColorEnd; - - #ifdef WORLD_UNITS - - varying vec4 worldPos; - varying vec3 worldStart; - varying vec3 worldEnd; - - #ifdef USE_DASH - - varying vec2 vUv; - - #endif - - #else - - varying vec2 vUv; - - #endif - - #ifdef USE_DASH - - uniform float dashScale; - attribute float instanceDistanceStart; - attribute float instanceDistanceEnd; - varying float vLineDistance; - - #endif - - void trimSegment( const in vec4 start, inout vec4 end ) { - - // trim end segment so it terminates between the camera plane and the near plane - - // conservative estimate of the near plane - float a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column - float b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column - float nearEstimate = - 0.5 * b / a; - - float alpha = ( nearEstimate - start.z ) / ( end.z - start.z ); - - end.xyz = mix( start.xyz, end.xyz, alpha ); - - } - - void main() { - - #ifdef USE_COLOR - - vColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd; - - #endif - - #ifdef USE_DASH - - vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd; - vUv = uv; - - #endif - - float aspect = resolution.x / resolution.y; - - // camera space - vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 ); - vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 ); - - #ifdef WORLD_UNITS - - worldStart = start.xyz; - worldEnd = end.xyz; - - #else - - vUv = uv; - - #endif - - // special case for perspective projection, and segments that terminate either in, or behind, the camera plane - // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space - // but we need to perform ndc-space calculations in the shader, so we must address this issue directly - // perhaps there is a more elegant solution -- WestLangley - - bool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column - - if ( perspective ) { - - if ( start.z < 0.0 && end.z >= 0.0 ) { - - trimSegment( start, end ); - - } else if ( end.z < 0.0 && start.z >= 0.0 ) { - - trimSegment( end, start ); - - } - - } - - // clip space - vec4 clipStart = projectionMatrix * start; - vec4 clipEnd = projectionMatrix * end; - - // ndc space - vec3 ndcStart = clipStart.xyz / clipStart.w; - vec3 ndcEnd = clipEnd.xyz / clipEnd.w; - - // direction - vec2 dir = ndcEnd.xy - ndcStart.xy; - - // account for clip-space aspect ratio - dir.x *= aspect; - dir = normalize( dir ); - - #ifdef WORLD_UNITS - - vec3 worldDir = normalize( end.xyz - start.xyz ); - vec3 tmpFwd = normalize( mix( start.xyz, end.xyz, 0.5 ) ); - vec3 worldUp = normalize( cross( worldDir, tmpFwd ) ); - vec3 worldFwd = cross( worldDir, worldUp ); - worldPos = position.y < 0.5 ? start: end; - - // height offset - float hw = linewidth * 0.5; - worldPos.xyz += position.x < 0.0 ? hw * worldUp : - hw * worldUp; - - // don't extend the line if we're rendering dashes because we - // won't be rendering the endcaps - #ifndef USE_DASH - - // cap extension - worldPos.xyz += position.y < 0.5 ? - hw * worldDir : hw * worldDir; - - // add width to the box - worldPos.xyz += worldFwd * hw; - - // endcaps - if ( position.y > 1.0 || position.y < 0.0 ) { - - worldPos.xyz -= worldFwd * 2.0 * hw; - - } - - #endif - - // project the worldpos - vec4 clip = projectionMatrix * worldPos; - - // shift the depth of the projected points so the line - // segments overlap neatly - vec3 clipPose = ( position.y < 0.5 ) ? ndcStart : ndcEnd; - clip.z = clipPose.z * clip.w; - - #else - - vec2 offset = vec2( dir.y, - dir.x ); - // undo aspect ratio adjustment - dir.x /= aspect; - offset.x /= aspect; - - // sign flip - if ( position.x < 0.0 ) offset *= - 1.0; - - // endcaps - if ( position.y < 0.0 ) { - - offset += - dir; - - } else if ( position.y > 1.0 ) { - - offset += dir; - - } - - // adjust for linewidth - offset *= linewidth; - - // adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ... - offset /= resolution.y; - - // select end - vec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd; - - // back to clip space - offset *= clip.w; - - clip.xy += offset; - - #endif - - gl_Position = clip; - - vec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation - - #include - #include - #include - - } - ` - ), - fragmentShader: ( - /* glsl */ - ` - uniform vec3 diffuse; - uniform float opacity; - uniform float linewidth; - - #ifdef USE_DASH - - uniform float dashOffset; - uniform float dashSize; - uniform float gapSize; - - #endif - - varying float vLineDistance; - - #ifdef WORLD_UNITS - - varying vec4 worldPos; - varying vec3 worldStart; - varying vec3 worldEnd; - - #ifdef USE_DASH - - varying vec2 vUv; - - #endif - - #else - - varying vec2 vUv; - - #endif - - #include - #include - #include - #include - #include - - vec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) { - - float mua; - float mub; - - vec3 p13 = p1 - p3; - vec3 p43 = p4 - p3; - - vec3 p21 = p2 - p1; - - float d1343 = dot( p13, p43 ); - float d4321 = dot( p43, p21 ); - float d1321 = dot( p13, p21 ); - float d4343 = dot( p43, p43 ); - float d2121 = dot( p21, p21 ); - - float denom = d2121 * d4343 - d4321 * d4321; - - float numer = d1343 * d4321 - d1321 * d4343; - - mua = numer / denom; - mua = clamp( mua, 0.0, 1.0 ); - mub = ( d1343 + d4321 * ( mua ) ) / d4343; - mub = clamp( mub, 0.0, 1.0 ); - - return vec2( mua, mub ); - - } - - void main() { - - #include - - #ifdef USE_DASH - - if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps - - if ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX - - #endif - - float alpha = opacity; - - #ifdef WORLD_UNITS - - // Find the closest points on the view ray and the line segment - vec3 rayEnd = normalize( worldPos.xyz ) * 1e5; - vec3 lineDir = worldEnd - worldStart; - vec2 params = closestLineToLine( worldStart, worldEnd, vec3( 0.0, 0.0, 0.0 ), rayEnd ); - - vec3 p1 = worldStart + lineDir * params.x; - vec3 p2 = rayEnd * params.y; - vec3 delta = p1 - p2; - float len = length( delta ); - float norm = len / linewidth; - - #ifndef USE_DASH - - #ifdef USE_ALPHA_TO_COVERAGE - - float dnorm = fwidth( norm ); - alpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm ); - - #else - - if ( norm > 0.5 ) { - - discard; - - } - - #endif - - #endif - - #else - - #ifdef USE_ALPHA_TO_COVERAGE - - // artifacts appear on some hardware if a derivative is taken within a conditional - float a = vUv.x; - float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; - float len2 = a * a + b * b; - float dlen = fwidth( len2 ); - - if ( abs( vUv.y ) > 1.0 ) { - - alpha = 1.0 - smoothstep( 1.0 - dlen, 1.0 + dlen, len2 ); - - } - - #else - - if ( abs( vUv.y ) > 1.0 ) { - - float a = vUv.x; - float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; - float len2 = a * a + b * b; - - if ( len2 > 1.0 ) discard; - - } - - #endif - - #endif - - vec4 diffuseColor = vec4( diffuse, alpha ); - - #include - #include - - gl_FragColor = vec4( diffuseColor.rgb, alpha ); - - #include - #include - #include - #include - - } - ` - ) -}; -var LineMaterial = class extends ShaderMaterial { - constructor(parameters) { - super({ - type: "LineMaterial", - uniforms: UniformsUtils.clone(ShaderLib["line"].uniforms), - vertexShader: ShaderLib["line"].vertexShader, - fragmentShader: ShaderLib["line"].fragmentShader, - clipping: true - // required for clipping support - }); - this.isLineMaterial = true; - this.setValues(parameters); - } - get color() { - return this.uniforms.diffuse.value; - } - set color(value2) { - this.uniforms.diffuse.value = value2; - } - get worldUnits() { - return "WORLD_UNITS" in this.defines; - } - set worldUnits(value2) { - if (value2 === true) { - this.defines.WORLD_UNITS = ""; - } else { - delete this.defines.WORLD_UNITS; - } - } - get linewidth() { - return this.uniforms.linewidth.value; - } - set linewidth(value2) { - if (!this.uniforms.linewidth) return; - this.uniforms.linewidth.value = value2; - } - get dashed() { - return "USE_DASH" in this.defines; - } - set dashed(value2) { - if (value2 === true !== this.dashed) { - this.needsUpdate = true; - } - if (value2 === true) { - this.defines.USE_DASH = ""; - } else { - delete this.defines.USE_DASH; - } - } - get dashScale() { - return this.uniforms.dashScale.value; - } - set dashScale(value2) { - this.uniforms.dashScale.value = value2; - } - get dashSize() { - return this.uniforms.dashSize.value; - } - set dashSize(value2) { - this.uniforms.dashSize.value = value2; - } - get dashOffset() { - return this.uniforms.dashOffset.value; - } - set dashOffset(value2) { - this.uniforms.dashOffset.value = value2; - } - get gapSize() { - return this.uniforms.gapSize.value; - } - set gapSize(value2) { - this.uniforms.gapSize.value = value2; - } - get opacity() { - return this.uniforms.opacity.value; - } - set opacity(value2) { - if (!this.uniforms) return; - this.uniforms.opacity.value = value2; - } - get resolution() { - return this.uniforms.resolution.value; - } - set resolution(value2) { - this.uniforms.resolution.value.copy(value2); - } - get alphaToCoverage() { - return "USE_ALPHA_TO_COVERAGE" in this.defines; - } - set alphaToCoverage(value2) { - if (!this.defines) return; - if (value2 === true !== this.alphaToCoverage) { - this.needsUpdate = true; - } - if (value2 === true) { - this.defines.USE_ALPHA_TO_COVERAGE = ""; - } else { - delete this.defines.USE_ALPHA_TO_COVERAGE; - } - } -}; - -// node_modules/three/examples/jsm/lines/LineSegments2.js -var _viewport = new Vector4(); -var _start = new Vector3(); -var _end = new Vector3(); -var _start4 = new Vector4(); -var _end4 = new Vector4(); -var _ssOrigin = new Vector4(); -var _ssOrigin3 = new Vector3(); -var _mvMatrix = new Matrix4(); -var _line = new Line3(); -var _closestPoint2 = new Vector3(); -var _box2 = new Box3(); -var _sphere = new Sphere(); -var _clipToWorldVector = new Vector4(); -var _ray2; -var _lineWidth; -function getWorldSpaceHalfWidth(camera, distance, resolution) { - _clipToWorldVector.set(0, 0, -distance, 1).applyMatrix4(camera.projectionMatrix); - _clipToWorldVector.multiplyScalar(1 / _clipToWorldVector.w); - _clipToWorldVector.x = _lineWidth / resolution.width; - _clipToWorldVector.y = _lineWidth / resolution.height; - _clipToWorldVector.applyMatrix4(camera.projectionMatrixInverse); - _clipToWorldVector.multiplyScalar(1 / _clipToWorldVector.w); - return Math.abs(Math.max(_clipToWorldVector.x, _clipToWorldVector.y)); -} -function raycastWorldUnits(lineSegments, intersects) { - const matrixWorld = lineSegments.matrixWorld; - const geometry = lineSegments.geometry; - const instanceStart = geometry.attributes.instanceStart; - const instanceEnd = geometry.attributes.instanceEnd; - const segmentCount = Math.min(geometry.instanceCount, instanceStart.count); - for (let i = 0, l2 = segmentCount; i < l2; i++) { - _line.start.fromBufferAttribute(instanceStart, i); - _line.end.fromBufferAttribute(instanceEnd, i); - _line.applyMatrix4(matrixWorld); - const pointOnLine = new Vector3(); - const point = new Vector3(); - _ray2.distanceSqToSegment(_line.start, _line.end, point, pointOnLine); - const isInside = point.distanceTo(pointOnLine) < _lineWidth * 0.5; - if (isInside) { - intersects.push({ - point, - pointOnLine, - distance: _ray2.origin.distanceTo(point), - object: lineSegments, - face: null, - faceIndex: i, - uv: null, - uv1: null - }); - } - } -} -function raycastScreenSpace(lineSegments, camera, intersects) { - const projectionMatrix = camera.projectionMatrix; - const material = lineSegments.material; - const resolution = material.resolution; - const matrixWorld = lineSegments.matrixWorld; - const geometry = lineSegments.geometry; - const instanceStart = geometry.attributes.instanceStart; - const instanceEnd = geometry.attributes.instanceEnd; - const segmentCount = Math.min(geometry.instanceCount, instanceStart.count); - const near = -camera.near; - _ray2.at(1, _ssOrigin); - _ssOrigin.w = 1; - _ssOrigin.applyMatrix4(camera.matrixWorldInverse); - _ssOrigin.applyMatrix4(projectionMatrix); - _ssOrigin.multiplyScalar(1 / _ssOrigin.w); - _ssOrigin.x *= resolution.x / 2; - _ssOrigin.y *= resolution.y / 2; - _ssOrigin.z = 0; - _ssOrigin3.copy(_ssOrigin); - _mvMatrix.multiplyMatrices(camera.matrixWorldInverse, matrixWorld); - for (let i = 0, l2 = segmentCount; i < l2; i++) { - _start4.fromBufferAttribute(instanceStart, i); - _end4.fromBufferAttribute(instanceEnd, i); - _start4.w = 1; - _end4.w = 1; - _start4.applyMatrix4(_mvMatrix); - _end4.applyMatrix4(_mvMatrix); - const isBehindCameraNear = _start4.z > near && _end4.z > near; - if (isBehindCameraNear) { - continue; - } - if (_start4.z > near) { - const deltaDist = _start4.z - _end4.z; - const t3 = (_start4.z - near) / deltaDist; - _start4.lerp(_end4, t3); - } else if (_end4.z > near) { - const deltaDist = _end4.z - _start4.z; - const t3 = (_end4.z - near) / deltaDist; - _end4.lerp(_start4, t3); - } - _start4.applyMatrix4(projectionMatrix); - _end4.applyMatrix4(projectionMatrix); - _start4.multiplyScalar(1 / _start4.w); - _end4.multiplyScalar(1 / _end4.w); - _start4.x *= resolution.x / 2; - _start4.y *= resolution.y / 2; - _end4.x *= resolution.x / 2; - _end4.y *= resolution.y / 2; - _line.start.copy(_start4); - _line.start.z = 0; - _line.end.copy(_end4); - _line.end.z = 0; - const param = _line.closestPointToPointParameter(_ssOrigin3, true); - _line.at(param, _closestPoint2); - const zPos = MathUtils.lerp(_start4.z, _end4.z, param); - const isInClipSpace = zPos >= -1 && zPos <= 1; - const isInside = _ssOrigin3.distanceTo(_closestPoint2) < _lineWidth * 0.5; - if (isInClipSpace && isInside) { - _line.start.fromBufferAttribute(instanceStart, i); - _line.end.fromBufferAttribute(instanceEnd, i); - _line.start.applyMatrix4(matrixWorld); - _line.end.applyMatrix4(matrixWorld); - const pointOnLine = new Vector3(); - const point = new Vector3(); - _ray2.distanceSqToSegment(_line.start, _line.end, point, pointOnLine); - intersects.push({ - point, - pointOnLine, - distance: _ray2.origin.distanceTo(point), - object: lineSegments, - face: null, - faceIndex: i, - uv: null, - uv1: null - }); - } - } -} -var LineSegments2 = class extends Mesh { - constructor(geometry = new LineSegmentsGeometry(), material = new LineMaterial({ color: Math.random() * 16777215 })) { - super(geometry, material); - this.isLineSegments2 = true; - this.type = "LineSegments2"; - } - // for backwards-compatibility, but could be a method of LineSegmentsGeometry... - computeLineDistances() { - const geometry = this.geometry; - const instanceStart = geometry.attributes.instanceStart; - const instanceEnd = geometry.attributes.instanceEnd; - const lineDistances = new Float32Array(2 * instanceStart.count); - for (let i = 0, j = 0, l2 = instanceStart.count; i < l2; i++, j += 2) { - _start.fromBufferAttribute(instanceStart, i); - _end.fromBufferAttribute(instanceEnd, i); - lineDistances[j] = j === 0 ? 0 : lineDistances[j - 1]; - lineDistances[j + 1] = lineDistances[j] + _start.distanceTo(_end); - } - const instanceDistanceBuffer = new InstancedInterleavedBuffer(lineDistances, 2, 1); - geometry.setAttribute("instanceDistanceStart", new InterleavedBufferAttribute(instanceDistanceBuffer, 1, 0)); - geometry.setAttribute("instanceDistanceEnd", new InterleavedBufferAttribute(instanceDistanceBuffer, 1, 1)); - return this; - } - raycast(raycaster, intersects) { - const worldUnits = this.material.worldUnits; - const camera = raycaster.camera; - if (camera === null && !worldUnits) { - console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.'); - } - const threshold = raycaster.params.Line2 !== void 0 ? raycaster.params.Line2.threshold || 0 : 0; - _ray2 = raycaster.ray; - const matrixWorld = this.matrixWorld; - const geometry = this.geometry; - const material = this.material; - _lineWidth = material.linewidth + threshold; - if (geometry.boundingSphere === null) { - geometry.computeBoundingSphere(); - } - _sphere.copy(geometry.boundingSphere).applyMatrix4(matrixWorld); - let sphereMargin; - if (worldUnits) { - sphereMargin = _lineWidth * 0.5; - } else { - const distanceToSphere = Math.max(camera.near, _sphere.distanceToPoint(_ray2.origin)); - sphereMargin = getWorldSpaceHalfWidth(camera, distanceToSphere, material.resolution); - } - _sphere.radius += sphereMargin; - if (_ray2.intersectsSphere(_sphere) === false) { - return; - } - if (geometry.boundingBox === null) { - geometry.computeBoundingBox(); - } - _box2.copy(geometry.boundingBox).applyMatrix4(matrixWorld); - let boxMargin; - if (worldUnits) { - boxMargin = _lineWidth * 0.5; - } else { - const distanceToBox = Math.max(camera.near, _box2.distanceToPoint(_ray2.origin)); - boxMargin = getWorldSpaceHalfWidth(camera, distanceToBox, material.resolution); - } - _box2.expandByScalar(boxMargin); - if (_ray2.intersectsBox(_box2) === false) { - return; - } - if (worldUnits) { - raycastWorldUnits(this, intersects); - } else { - raycastScreenSpace(this, camera, intersects); - } - } - onBeforeRender(renderer2) { - const uniforms = this.material.uniforms; - if (uniforms && uniforms.resolution) { - renderer2.getViewport(_viewport); - this.material.uniforms.resolution.value.set(_viewport.z, _viewport.w); - } - } -}; - -// node_modules/three/examples/jsm/lines/LineGeometry.js -var LineGeometry = class extends LineSegmentsGeometry { - constructor() { - super(); - this.isLineGeometry = true; - this.type = "LineGeometry"; - } - setPositions(array) { - const length2 = array.length - 3; - const points = new Float32Array(2 * length2); - for (let i = 0; i < length2; i += 3) { - points[2 * i] = array[i]; - points[2 * i + 1] = array[i + 1]; - points[2 * i + 2] = array[i + 2]; - points[2 * i + 3] = array[i + 3]; - points[2 * i + 4] = array[i + 4]; - points[2 * i + 5] = array[i + 5]; - } - super.setPositions(points); - return this; - } - setColors(array) { - const length2 = array.length - 3; - const colors = new Float32Array(2 * length2); - for (let i = 0; i < length2; i += 3) { - colors[2 * i] = array[i]; - colors[2 * i + 1] = array[i + 1]; - colors[2 * i + 2] = array[i + 2]; - colors[2 * i + 3] = array[i + 3]; - colors[2 * i + 4] = array[i + 4]; - colors[2 * i + 5] = array[i + 5]; - } - super.setColors(colors); - return this; - } - fromLine(line2) { - const geometry = line2.geometry; - this.setPositions(geometry.attributes.position.array); - return this; - } -}; - -// node_modules/three/examples/jsm/lines/Line2.js -var Line2 = class extends LineSegments2 { - constructor(geometry = new LineGeometry(), material = new LineMaterial({ color: Math.random() * 16777215 })) { - super(geometry, material); - this.isLine2 = true; - this.type = "Line2"; - } -}; - -// node_modules/three/examples/jsm/lines/Wireframe.js -var _start2 = new Vector3(); -var _end2 = new Vector3(); -var _viewport2 = new Vector4(); -var Wireframe = class extends Mesh { - constructor(geometry = new LineSegmentsGeometry(), material = new LineMaterial({ color: Math.random() * 16777215 })) { - super(geometry, material); - this.isWireframe = true; - this.type = "Wireframe"; - } - // for backwards-compatibility, but could be a method of LineSegmentsGeometry... - computeLineDistances() { - const geometry = this.geometry; - const instanceStart = geometry.attributes.instanceStart; - const instanceEnd = geometry.attributes.instanceEnd; - const lineDistances = new Float32Array(2 * instanceStart.count); - for (let i = 0, j = 0, l2 = instanceStart.count; i < l2; i++, j += 2) { - _start2.fromBufferAttribute(instanceStart, i); - _end2.fromBufferAttribute(instanceEnd, i); - lineDistances[j] = j === 0 ? 0 : lineDistances[j - 1]; - lineDistances[j + 1] = lineDistances[j] + _start2.distanceTo(_end2); - } - const instanceDistanceBuffer = new InstancedInterleavedBuffer(lineDistances, 2, 1); - geometry.setAttribute("instanceDistanceStart", new InterleavedBufferAttribute(instanceDistanceBuffer, 1, 0)); - geometry.setAttribute("instanceDistanceEnd", new InterleavedBufferAttribute(instanceDistanceBuffer, 1, 1)); - return this; - } - onBeforeRender(renderer2) { - const uniforms = this.material.uniforms; - if (uniforms && uniforms.resolution) { - renderer2.getViewport(_viewport2); - this.material.uniforms.resolution.value.set(_viewport2.z, _viewport2.w); - } - } -}; - -// node_modules/three/examples/jsm/lines/WireframeGeometry2.js -var WireframeGeometry2 = class extends LineSegmentsGeometry { - constructor(geometry) { - super(); - this.isWireframeGeometry2 = true; - this.type = "WireframeGeometry2"; - this.fromWireframeGeometry(new WireframeGeometry(geometry)); - } -}; - -// node_modules/three/examples/jsm/loaders/EXRLoader.js -var EXRLoader = class extends DataTextureLoader { - constructor(manager) { - super(manager); - this.type = HalfFloatType; - } - parse(buffer) { - const USHORT_RANGE = 1 << 16; - const BITMAP_SIZE = USHORT_RANGE >> 3; - const HUF_ENCBITS = 16; - const HUF_DECBITS = 14; - const HUF_ENCSIZE = (1 << HUF_ENCBITS) + 1; - const HUF_DECSIZE = 1 << HUF_DECBITS; - const HUF_DECMASK = HUF_DECSIZE - 1; - const NBITS = 16; - const A_OFFSET = 1 << NBITS - 1; - const MOD_MASK = (1 << NBITS) - 1; - const SHORT_ZEROCODE_RUN = 59; - const LONG_ZEROCODE_RUN = 63; - const SHORTEST_LONG_RUN = 2 + LONG_ZEROCODE_RUN - SHORT_ZEROCODE_RUN; - const ULONG_SIZE = 8; - const FLOAT32_SIZE = 4; - const INT32_SIZE = 4; - const INT16_SIZE = 2; - const INT8_SIZE = 1; - const STATIC_HUFFMAN = 0; - const DEFLATE = 1; - const UNKNOWN = 0; - const LOSSY_DCT = 1; - const RLE = 2; - const logBase = Math.pow(2.7182818, 2.2); - function reverseLutFromBitmap(bitmap, lut) { - let k2 = 0; - for (let i = 0; i < USHORT_RANGE; ++i) { - if (i == 0 || bitmap[i >> 3] & 1 << (i & 7)) { - lut[k2++] = i; - } - } - const n2 = k2 - 1; - while (k2 < USHORT_RANGE) lut[k2++] = 0; - return n2; - } - function hufClearDecTable(hdec) { - for (let i = 0; i < HUF_DECSIZE; i++) { - hdec[i] = {}; - hdec[i].len = 0; - hdec[i].lit = 0; - hdec[i].p = null; - } - } - const getBitsReturn = { l: 0, c: 0, lc: 0 }; - function getBits(nBits, c2, lc2, uInt8Array2, inOffset) { - while (lc2 < nBits) { - c2 = c2 << 8 | parseUint8Array(uInt8Array2, inOffset); - lc2 += 8; - } - lc2 -= nBits; - getBitsReturn.l = c2 >> lc2 & (1 << nBits) - 1; - getBitsReturn.c = c2; - getBitsReturn.lc = lc2; - } - const hufTableBuffer = new Array(59); - function hufCanonicalCodeTable(hcode) { - for (let i = 0; i <= 58; ++i) hufTableBuffer[i] = 0; - for (let i = 0; i < HUF_ENCSIZE; ++i) hufTableBuffer[hcode[i]] += 1; - let c2 = 0; - for (let i = 58; i > 0; --i) { - const nc = c2 + hufTableBuffer[i] >> 1; - hufTableBuffer[i] = c2; - c2 = nc; - } - for (let i = 0; i < HUF_ENCSIZE; ++i) { - const l2 = hcode[i]; - if (l2 > 0) hcode[i] = l2 | hufTableBuffer[l2]++ << 6; - } - } - function hufUnpackEncTable(uInt8Array2, inOffset, ni, im, iM, hcode) { - const p2 = inOffset; - let c2 = 0; - let lc2 = 0; - for (; im <= iM; im++) { - if (p2.value - inOffset.value > ni) return false; - getBits(6, c2, lc2, uInt8Array2, p2); - const l2 = getBitsReturn.l; - c2 = getBitsReturn.c; - lc2 = getBitsReturn.lc; - hcode[im] = l2; - if (l2 == LONG_ZEROCODE_RUN) { - if (p2.value - inOffset.value > ni) { - throw new Error("Something wrong with hufUnpackEncTable"); - } - getBits(8, c2, lc2, uInt8Array2, p2); - let zerun = getBitsReturn.l + SHORTEST_LONG_RUN; - c2 = getBitsReturn.c; - lc2 = getBitsReturn.lc; - if (im + zerun > iM + 1) { - throw new Error("Something wrong with hufUnpackEncTable"); - } - while (zerun--) hcode[im++] = 0; - im--; - } else if (l2 >= SHORT_ZEROCODE_RUN) { - let zerun = l2 - SHORT_ZEROCODE_RUN + 2; - if (im + zerun > iM + 1) { - throw new Error("Something wrong with hufUnpackEncTable"); - } - while (zerun--) hcode[im++] = 0; - im--; - } - } - hufCanonicalCodeTable(hcode); - } - function hufLength(code) { - return code & 63; - } - function hufCode(code) { - return code >> 6; - } - function hufBuildDecTable(hcode, im, iM, hdecod) { - for (; im <= iM; im++) { - const c2 = hufCode(hcode[im]); - const l2 = hufLength(hcode[im]); - if (c2 >> l2) { - throw new Error("Invalid table entry"); - } - if (l2 > HUF_DECBITS) { - const pl = hdecod[c2 >> l2 - HUF_DECBITS]; - if (pl.len) { - throw new Error("Invalid table entry"); - } - pl.lit++; - if (pl.p) { - const p2 = pl.p; - pl.p = new Array(pl.lit); - for (let i = 0; i < pl.lit - 1; ++i) { - pl.p[i] = p2[i]; - } - } else { - pl.p = new Array(1); - } - pl.p[pl.lit - 1] = im; - } else if (l2) { - let plOffset = 0; - for (let i = 1 << HUF_DECBITS - l2; i > 0; i--) { - const pl = hdecod[(c2 << HUF_DECBITS - l2) + plOffset]; - if (pl.len || pl.p) { - throw new Error("Invalid table entry"); - } - pl.len = l2; - pl.lit = im; - plOffset++; - } - } - } - return true; - } - const getCharReturn = { c: 0, lc: 0 }; - function getChar(c2, lc2, uInt8Array2, inOffset) { - c2 = c2 << 8 | parseUint8Array(uInt8Array2, inOffset); - lc2 += 8; - getCharReturn.c = c2; - getCharReturn.lc = lc2; - } - const getCodeReturn = { c: 0, lc: 0 }; - function getCode(po, rlc, c2, lc2, uInt8Array2, inOffset, outBuffer, outBufferOffset, outBufferEndOffset) { - if (po == rlc) { - if (lc2 < 8) { - getChar(c2, lc2, uInt8Array2, inOffset); - c2 = getCharReturn.c; - lc2 = getCharReturn.lc; - } - lc2 -= 8; - let cs = c2 >> lc2; - cs = new Uint8Array([cs])[0]; - if (outBufferOffset.value + cs > outBufferEndOffset) { - return false; - } - const s = outBuffer[outBufferOffset.value - 1]; - while (cs-- > 0) { - outBuffer[outBufferOffset.value++] = s; - } - } else if (outBufferOffset.value < outBufferEndOffset) { - outBuffer[outBufferOffset.value++] = po; - } else { - return false; - } - getCodeReturn.c = c2; - getCodeReturn.lc = lc2; - } - function UInt16(value2) { - return value2 & 65535; - } - function Int16(value2) { - const ref = UInt16(value2); - return ref > 32767 ? ref - 65536 : ref; - } - const wdec14Return = { a: 0, b: 0 }; - function wdec14(l2, h) { - const ls = Int16(l2); - const hs = Int16(h); - const hi = hs; - const ai = ls + (hi & 1) + (hi >> 1); - const as = ai; - const bs = ai - hi; - wdec14Return.a = as; - wdec14Return.b = bs; - } - function wdec16(l2, h) { - const m = UInt16(l2); - const d = UInt16(h); - const bb = m - (d >> 1) & MOD_MASK; - const aa = d + bb - A_OFFSET & MOD_MASK; - wdec14Return.a = aa; - wdec14Return.b = bb; - } - function wav2Decode(buffer2, j, nx, ox, ny, oy, mx) { - const w14 = mx < 1 << 14; - const n2 = nx > ny ? ny : nx; - let p2 = 1; - let p22; - let py; - while (p2 <= n2) p2 <<= 1; - p2 >>= 1; - p22 = p2; - p2 >>= 1; - while (p2 >= 1) { - py = 0; - const ey = py + oy * (ny - p22); - const oy1 = oy * p2; - const oy2 = oy * p22; - const ox1 = ox * p2; - const ox2 = ox * p22; - let i00, i01, i10, i11; - for (; py <= ey; py += oy2) { - let px = py; - const ex = py + ox * (nx - p22); - for (; px <= ex; px += ox2) { - const p01 = px + ox1; - const p10 = px + oy1; - const p11 = p10 + ox1; - if (w14) { - wdec14(buffer2[px + j], buffer2[p10 + j]); - i00 = wdec14Return.a; - i10 = wdec14Return.b; - wdec14(buffer2[p01 + j], buffer2[p11 + j]); - i01 = wdec14Return.a; - i11 = wdec14Return.b; - wdec14(i00, i01); - buffer2[px + j] = wdec14Return.a; - buffer2[p01 + j] = wdec14Return.b; - wdec14(i10, i11); - buffer2[p10 + j] = wdec14Return.a; - buffer2[p11 + j] = wdec14Return.b; - } else { - wdec16(buffer2[px + j], buffer2[p10 + j]); - i00 = wdec14Return.a; - i10 = wdec14Return.b; - wdec16(buffer2[p01 + j], buffer2[p11 + j]); - i01 = wdec14Return.a; - i11 = wdec14Return.b; - wdec16(i00, i01); - buffer2[px + j] = wdec14Return.a; - buffer2[p01 + j] = wdec14Return.b; - wdec16(i10, i11); - buffer2[p10 + j] = wdec14Return.a; - buffer2[p11 + j] = wdec14Return.b; - } - } - if (nx & p2) { - const p10 = px + oy1; - if (w14) - wdec14(buffer2[px + j], buffer2[p10 + j]); - else - wdec16(buffer2[px + j], buffer2[p10 + j]); - i00 = wdec14Return.a; - buffer2[p10 + j] = wdec14Return.b; - buffer2[px + j] = i00; - } - } - if (ny & p2) { - let px = py; - const ex = py + ox * (nx - p22); - for (; px <= ex; px += ox2) { - const p01 = px + ox1; - if (w14) - wdec14(buffer2[px + j], buffer2[p01 + j]); - else - wdec16(buffer2[px + j], buffer2[p01 + j]); - i00 = wdec14Return.a; - buffer2[p01 + j] = wdec14Return.b; - buffer2[px + j] = i00; - } - } - p22 = p2; - p2 >>= 1; - } - return py; - } - function hufDecode(encodingTable, decodingTable, uInt8Array2, inOffset, ni, rlc, no, outBuffer, outOffset) { - let c2 = 0; - let lc2 = 0; - const outBufferEndOffset = no; - const inOffsetEnd = Math.trunc(inOffset.value + (ni + 7) / 8); - while (inOffset.value < inOffsetEnd) { - getChar(c2, lc2, uInt8Array2, inOffset); - c2 = getCharReturn.c; - lc2 = getCharReturn.lc; - while (lc2 >= HUF_DECBITS) { - const index2 = c2 >> lc2 - HUF_DECBITS & HUF_DECMASK; - const pl = decodingTable[index2]; - if (pl.len) { - lc2 -= pl.len; - getCode(pl.lit, rlc, c2, lc2, uInt8Array2, inOffset, outBuffer, outOffset, outBufferEndOffset); - c2 = getCodeReturn.c; - lc2 = getCodeReturn.lc; - } else { - if (!pl.p) { - throw new Error("hufDecode issues"); - } - let j; - for (j = 0; j < pl.lit; j++) { - const l2 = hufLength(encodingTable[pl.p[j]]); - while (lc2 < l2 && inOffset.value < inOffsetEnd) { - getChar(c2, lc2, uInt8Array2, inOffset); - c2 = getCharReturn.c; - lc2 = getCharReturn.lc; - } - if (lc2 >= l2) { - if (hufCode(encodingTable[pl.p[j]]) == (c2 >> lc2 - l2 & (1 << l2) - 1)) { - lc2 -= l2; - getCode(pl.p[j], rlc, c2, lc2, uInt8Array2, inOffset, outBuffer, outOffset, outBufferEndOffset); - c2 = getCodeReturn.c; - lc2 = getCodeReturn.lc; - break; - } - } - } - if (j == pl.lit) { - throw new Error("hufDecode issues"); - } - } - } - } - const i = 8 - ni & 7; - c2 >>= i; - lc2 -= i; - while (lc2 > 0) { - const pl = decodingTable[c2 << HUF_DECBITS - lc2 & HUF_DECMASK]; - if (pl.len) { - lc2 -= pl.len; - getCode(pl.lit, rlc, c2, lc2, uInt8Array2, inOffset, outBuffer, outOffset, outBufferEndOffset); - c2 = getCodeReturn.c; - lc2 = getCodeReturn.lc; - } else { - throw new Error("hufDecode issues"); - } - } - return true; - } - function hufUncompress(uInt8Array2, inDataView, inOffset, nCompressed, outBuffer, nRaw) { - const outOffset = { value: 0 }; - const initialInOffset = inOffset.value; - const im = parseUint32(inDataView, inOffset); - const iM = parseUint32(inDataView, inOffset); - inOffset.value += 4; - const nBits = parseUint32(inDataView, inOffset); - inOffset.value += 4; - if (im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE) { - throw new Error("Something wrong with HUF_ENCSIZE"); - } - const freq = new Array(HUF_ENCSIZE); - const hdec = new Array(HUF_DECSIZE); - hufClearDecTable(hdec); - const ni = nCompressed - (inOffset.value - initialInOffset); - hufUnpackEncTable(uInt8Array2, inOffset, ni, im, iM, freq); - if (nBits > 8 * (nCompressed - (inOffset.value - initialInOffset))) { - throw new Error("Something wrong with hufUncompress"); - } - hufBuildDecTable(freq, im, iM, hdec); - hufDecode(freq, hdec, uInt8Array2, inOffset, nBits, iM, nRaw, outBuffer, outOffset); - } - function applyLut(lut, data2, nData) { - for (let i = 0; i < nData; ++i) { - data2[i] = lut[data2[i]]; - } - } - function predictor(source) { - for (let t3 = 1; t3 < source.length; t3++) { - const d = source[t3 - 1] + source[t3] - 128; - source[t3] = d; - } - } - function interleaveScalar(source, out) { - let t1 = 0; - let t22 = Math.floor((source.length + 1) / 2); - let s = 0; - const stop = source.length - 1; - while (true) { - if (s > stop) break; - out[s++] = source[t1++]; - if (s > stop) break; - out[s++] = source[t22++]; - } - } - function decodeRunLength(source) { - let size2 = source.byteLength; - const out = new Array(); - let p2 = 0; - const reader = new DataView(source); - while (size2 > 0) { - const l2 = reader.getInt8(p2++); - if (l2 < 0) { - const count = -l2; - size2 -= count + 1; - for (let i = 0; i < count; i++) { - out.push(reader.getUint8(p2++)); - } - } else { - const count = l2; - size2 -= 2; - const value2 = reader.getUint8(p2++); - for (let i = 0; i < count + 1; i++) { - out.push(value2); - } - } - } - return out; - } - function lossyDctDecode(cscSet, rowPtrs, channelData, acBuffer, dcBuffer, outBuffer) { - let dataView = new DataView(outBuffer.buffer); - const width2 = channelData[cscSet.idx[0]].width; - const height2 = channelData[cscSet.idx[0]].height; - const numComp = 3; - const numFullBlocksX = Math.floor(width2 / 8); - const numBlocksX = Math.ceil(width2 / 8); - const numBlocksY = Math.ceil(height2 / 8); - const leftoverX = width2 - (numBlocksX - 1) * 8; - const leftoverY = height2 - (numBlocksY - 1) * 8; - const currAcComp = { value: 0 }; - const currDcComp = new Array(numComp); - const dctData = new Array(numComp); - const halfZigBlock = new Array(numComp); - const rowBlock = new Array(numComp); - const rowOffsets = new Array(numComp); - for (let comp2 = 0; comp2 < numComp; ++comp2) { - rowOffsets[comp2] = rowPtrs[cscSet.idx[comp2]]; - currDcComp[comp2] = comp2 < 1 ? 0 : currDcComp[comp2 - 1] + numBlocksX * numBlocksY; - dctData[comp2] = new Float32Array(64); - halfZigBlock[comp2] = new Uint16Array(64); - rowBlock[comp2] = new Uint16Array(numBlocksX * 64); - } - for (let blocky = 0; blocky < numBlocksY; ++blocky) { - let maxY = 8; - if (blocky == numBlocksY - 1) - maxY = leftoverY; - let maxX = 8; - for (let blockx = 0; blockx < numBlocksX; ++blockx) { - if (blockx == numBlocksX - 1) - maxX = leftoverX; - for (let comp2 = 0; comp2 < numComp; ++comp2) { - halfZigBlock[comp2].fill(0); - halfZigBlock[comp2][0] = dcBuffer[currDcComp[comp2]++]; - unRleAC(currAcComp, acBuffer, halfZigBlock[comp2]); - unZigZag(halfZigBlock[comp2], dctData[comp2]); - dctInverse(dctData[comp2]); - } - if (numComp == 3) { - csc709Inverse(dctData); - } - for (let comp2 = 0; comp2 < numComp; ++comp2) { - convertToHalf(dctData[comp2], rowBlock[comp2], blockx * 64); - } - } - let offset2 = 0; - for (let comp2 = 0; comp2 < numComp; ++comp2) { - const type = channelData[cscSet.idx[comp2]].type; - for (let y2 = 8 * blocky; y2 < 8 * blocky + maxY; ++y2) { - offset2 = rowOffsets[comp2][y2]; - for (let blockx = 0; blockx < numFullBlocksX; ++blockx) { - const src = blockx * 64 + (y2 & 7) * 8; - dataView.setUint16(offset2 + 0 * INT16_SIZE * type, rowBlock[comp2][src + 0], true); - dataView.setUint16(offset2 + 1 * INT16_SIZE * type, rowBlock[comp2][src + 1], true); - dataView.setUint16(offset2 + 2 * INT16_SIZE * type, rowBlock[comp2][src + 2], true); - dataView.setUint16(offset2 + 3 * INT16_SIZE * type, rowBlock[comp2][src + 3], true); - dataView.setUint16(offset2 + 4 * INT16_SIZE * type, rowBlock[comp2][src + 4], true); - dataView.setUint16(offset2 + 5 * INT16_SIZE * type, rowBlock[comp2][src + 5], true); - dataView.setUint16(offset2 + 6 * INT16_SIZE * type, rowBlock[comp2][src + 6], true); - dataView.setUint16(offset2 + 7 * INT16_SIZE * type, rowBlock[comp2][src + 7], true); - offset2 += 8 * INT16_SIZE * type; - } - } - if (numFullBlocksX != numBlocksX) { - for (let y2 = 8 * blocky; y2 < 8 * blocky + maxY; ++y2) { - const offset3 = rowOffsets[comp2][y2] + 8 * numFullBlocksX * INT16_SIZE * type; - const src = numFullBlocksX * 64 + (y2 & 7) * 8; - for (let x2 = 0; x2 < maxX; ++x2) { - dataView.setUint16(offset3 + x2 * INT16_SIZE * type, rowBlock[comp2][src + x2], true); - } - } - } - } - } - const halfRow = new Uint16Array(width2); - dataView = new DataView(outBuffer.buffer); - for (let comp2 = 0; comp2 < numComp; ++comp2) { - channelData[cscSet.idx[comp2]].decoded = true; - const type = channelData[cscSet.idx[comp2]].type; - if (channelData[comp2].type != 2) continue; - for (let y2 = 0; y2 < height2; ++y2) { - const offset2 = rowOffsets[comp2][y2]; - for (let x2 = 0; x2 < width2; ++x2) { - halfRow[x2] = dataView.getUint16(offset2 + x2 * INT16_SIZE * type, true); - } - for (let x2 = 0; x2 < width2; ++x2) { - dataView.setFloat32(offset2 + x2 * INT16_SIZE * type, decodeFloat162(halfRow[x2]), true); - } - } - } - } - function unRleAC(currAcComp, acBuffer, halfZigBlock) { - let acValue; - let dctComp = 1; - while (dctComp < 64) { - acValue = acBuffer[currAcComp.value]; - if (acValue == 65280) { - dctComp = 64; - } else if (acValue >> 8 == 255) { - dctComp += acValue & 255; - } else { - halfZigBlock[dctComp] = acValue; - dctComp++; - } - currAcComp.value++; - } - } - function unZigZag(src, dst) { - dst[0] = decodeFloat162(src[0]); - dst[1] = decodeFloat162(src[1]); - dst[2] = decodeFloat162(src[5]); - dst[3] = decodeFloat162(src[6]); - dst[4] = decodeFloat162(src[14]); - dst[5] = decodeFloat162(src[15]); - dst[6] = decodeFloat162(src[27]); - dst[7] = decodeFloat162(src[28]); - dst[8] = decodeFloat162(src[2]); - dst[9] = decodeFloat162(src[4]); - dst[10] = decodeFloat162(src[7]); - dst[11] = decodeFloat162(src[13]); - dst[12] = decodeFloat162(src[16]); - dst[13] = decodeFloat162(src[26]); - dst[14] = decodeFloat162(src[29]); - dst[15] = decodeFloat162(src[42]); - dst[16] = decodeFloat162(src[3]); - dst[17] = decodeFloat162(src[8]); - dst[18] = decodeFloat162(src[12]); - dst[19] = decodeFloat162(src[17]); - dst[20] = decodeFloat162(src[25]); - dst[21] = decodeFloat162(src[30]); - dst[22] = decodeFloat162(src[41]); - dst[23] = decodeFloat162(src[43]); - dst[24] = decodeFloat162(src[9]); - dst[25] = decodeFloat162(src[11]); - dst[26] = decodeFloat162(src[18]); - dst[27] = decodeFloat162(src[24]); - dst[28] = decodeFloat162(src[31]); - dst[29] = decodeFloat162(src[40]); - dst[30] = decodeFloat162(src[44]); - dst[31] = decodeFloat162(src[53]); - dst[32] = decodeFloat162(src[10]); - dst[33] = decodeFloat162(src[19]); - dst[34] = decodeFloat162(src[23]); - dst[35] = decodeFloat162(src[32]); - dst[36] = decodeFloat162(src[39]); - dst[37] = decodeFloat162(src[45]); - dst[38] = decodeFloat162(src[52]); - dst[39] = decodeFloat162(src[54]); - dst[40] = decodeFloat162(src[20]); - dst[41] = decodeFloat162(src[22]); - dst[42] = decodeFloat162(src[33]); - dst[43] = decodeFloat162(src[38]); - dst[44] = decodeFloat162(src[46]); - dst[45] = decodeFloat162(src[51]); - dst[46] = decodeFloat162(src[55]); - dst[47] = decodeFloat162(src[60]); - dst[48] = decodeFloat162(src[21]); - dst[49] = decodeFloat162(src[34]); - dst[50] = decodeFloat162(src[37]); - dst[51] = decodeFloat162(src[47]); - dst[52] = decodeFloat162(src[50]); - dst[53] = decodeFloat162(src[56]); - dst[54] = decodeFloat162(src[59]); - dst[55] = decodeFloat162(src[61]); - dst[56] = decodeFloat162(src[35]); - dst[57] = decodeFloat162(src[36]); - dst[58] = decodeFloat162(src[48]); - dst[59] = decodeFloat162(src[49]); - dst[60] = decodeFloat162(src[57]); - dst[61] = decodeFloat162(src[58]); - dst[62] = decodeFloat162(src[62]); - dst[63] = decodeFloat162(src[63]); - } - function dctInverse(data2) { - const a2 = 0.5 * Math.cos(3.14159 / 4); - const b3 = 0.5 * Math.cos(3.14159 / 16); - const c2 = 0.5 * Math.cos(3.14159 / 8); - const d = 0.5 * Math.cos(3 * 3.14159 / 16); - const e = 0.5 * Math.cos(5 * 3.14159 / 16); - const f = 0.5 * Math.cos(3 * 3.14159 / 8); - const g2 = 0.5 * Math.cos(7 * 3.14159 / 16); - const alpha = new Array(4); - const beta = new Array(4); - const theta = new Array(4); - const gamma = new Array(4); - for (let row = 0; row < 8; ++row) { - const rowPtr = row * 8; - alpha[0] = c2 * data2[rowPtr + 2]; - alpha[1] = f * data2[rowPtr + 2]; - alpha[2] = c2 * data2[rowPtr + 6]; - alpha[3] = f * data2[rowPtr + 6]; - beta[0] = b3 * data2[rowPtr + 1] + d * data2[rowPtr + 3] + e * data2[rowPtr + 5] + g2 * data2[rowPtr + 7]; - beta[1] = d * data2[rowPtr + 1] - g2 * data2[rowPtr + 3] - b3 * data2[rowPtr + 5] - e * data2[rowPtr + 7]; - beta[2] = e * data2[rowPtr + 1] - b3 * data2[rowPtr + 3] + g2 * data2[rowPtr + 5] + d * data2[rowPtr + 7]; - beta[3] = g2 * data2[rowPtr + 1] - e * data2[rowPtr + 3] + d * data2[rowPtr + 5] - b3 * data2[rowPtr + 7]; - theta[0] = a2 * (data2[rowPtr + 0] + data2[rowPtr + 4]); - theta[3] = a2 * (data2[rowPtr + 0] - data2[rowPtr + 4]); - theta[1] = alpha[0] + alpha[3]; - theta[2] = alpha[1] - alpha[2]; - gamma[0] = theta[0] + theta[1]; - gamma[1] = theta[3] + theta[2]; - gamma[2] = theta[3] - theta[2]; - gamma[3] = theta[0] - theta[1]; - data2[rowPtr + 0] = gamma[0] + beta[0]; - data2[rowPtr + 1] = gamma[1] + beta[1]; - data2[rowPtr + 2] = gamma[2] + beta[2]; - data2[rowPtr + 3] = gamma[3] + beta[3]; - data2[rowPtr + 4] = gamma[3] - beta[3]; - data2[rowPtr + 5] = gamma[2] - beta[2]; - data2[rowPtr + 6] = gamma[1] - beta[1]; - data2[rowPtr + 7] = gamma[0] - beta[0]; - } - for (let column = 0; column < 8; ++column) { - alpha[0] = c2 * data2[16 + column]; - alpha[1] = f * data2[16 + column]; - alpha[2] = c2 * data2[48 + column]; - alpha[3] = f * data2[48 + column]; - beta[0] = b3 * data2[8 + column] + d * data2[24 + column] + e * data2[40 + column] + g2 * data2[56 + column]; - beta[1] = d * data2[8 + column] - g2 * data2[24 + column] - b3 * data2[40 + column] - e * data2[56 + column]; - beta[2] = e * data2[8 + column] - b3 * data2[24 + column] + g2 * data2[40 + column] + d * data2[56 + column]; - beta[3] = g2 * data2[8 + column] - e * data2[24 + column] + d * data2[40 + column] - b3 * data2[56 + column]; - theta[0] = a2 * (data2[column] + data2[32 + column]); - theta[3] = a2 * (data2[column] - data2[32 + column]); - theta[1] = alpha[0] + alpha[3]; - theta[2] = alpha[1] - alpha[2]; - gamma[0] = theta[0] + theta[1]; - gamma[1] = theta[3] + theta[2]; - gamma[2] = theta[3] - theta[2]; - gamma[3] = theta[0] - theta[1]; - data2[0 + column] = gamma[0] + beta[0]; - data2[8 + column] = gamma[1] + beta[1]; - data2[16 + column] = gamma[2] + beta[2]; - data2[24 + column] = gamma[3] + beta[3]; - data2[32 + column] = gamma[3] - beta[3]; - data2[40 + column] = gamma[2] - beta[2]; - data2[48 + column] = gamma[1] - beta[1]; - data2[56 + column] = gamma[0] - beta[0]; - } - } - function csc709Inverse(data2) { - for (let i = 0; i < 64; ++i) { - const y2 = data2[0][i]; - const cb = data2[1][i]; - const cr = data2[2][i]; - data2[0][i] = y2 + 1.5747 * cr; - data2[1][i] = y2 - 0.1873 * cb - 0.4682 * cr; - data2[2][i] = y2 + 1.8556 * cb; - } - } - function convertToHalf(src, dst, idx) { - for (let i = 0; i < 64; ++i) { - dst[idx + i] = DataUtils.toHalfFloat(toLinear(src[i])); - } - } - function toLinear(float) { - if (float <= 1) { - return Math.sign(float) * Math.pow(Math.abs(float), 2.2); - } else { - return Math.sign(float) * Math.pow(logBase, Math.abs(float) - 1); - } - } - function uncompressRAW(info) { - return new DataView(info.array.buffer, info.offset.value, info.size); - } - function uncompressRLE(info) { - const compressed = info.viewer.buffer.slice(info.offset.value, info.offset.value + info.size); - const rawBuffer = new Uint8Array(decodeRunLength(compressed)); - const tmpBuffer = new Uint8Array(rawBuffer.length); - predictor(rawBuffer); - interleaveScalar(rawBuffer, tmpBuffer); - return new DataView(tmpBuffer.buffer); - } - function uncompressZIP(info) { - const compressed = info.array.slice(info.offset.value, info.offset.value + info.size); - const rawBuffer = unzlibSync(compressed); - const tmpBuffer = new Uint8Array(rawBuffer.length); - predictor(rawBuffer); - interleaveScalar(rawBuffer, tmpBuffer); - return new DataView(tmpBuffer.buffer); - } - function uncompressPIZ(info) { - const inDataView = info.viewer; - const inOffset = { value: info.offset.value }; - const outBuffer = new Uint16Array(info.columns * info.lines * (info.inputChannels.length * info.type)); - const bitmap = new Uint8Array(BITMAP_SIZE); - let outBufferEnd = 0; - const pizChannelData = new Array(info.inputChannels.length); - for (let i = 0, il = info.inputChannels.length; i < il; i++) { - pizChannelData[i] = {}; - pizChannelData[i]["start"] = outBufferEnd; - pizChannelData[i]["end"] = pizChannelData[i]["start"]; - pizChannelData[i]["nx"] = info.columns; - pizChannelData[i]["ny"] = info.lines; - pizChannelData[i]["size"] = info.type; - outBufferEnd += pizChannelData[i].nx * pizChannelData[i].ny * pizChannelData[i].size; - } - const minNonZero = parseUint16(inDataView, inOffset); - const maxNonZero = parseUint16(inDataView, inOffset); - if (maxNonZero >= BITMAP_SIZE) { - throw new Error("Something is wrong with PIZ_COMPRESSION BITMAP_SIZE"); - } - if (minNonZero <= maxNonZero) { - for (let i = 0; i < maxNonZero - minNonZero + 1; i++) { - bitmap[i + minNonZero] = parseUint8(inDataView, inOffset); - } - } - const lut = new Uint16Array(USHORT_RANGE); - const maxValue = reverseLutFromBitmap(bitmap, lut); - const length2 = parseUint32(inDataView, inOffset); - hufUncompress(info.array, inDataView, inOffset, length2, outBuffer, outBufferEnd); - for (let i = 0; i < info.inputChannels.length; ++i) { - const cd = pizChannelData[i]; - for (let j = 0; j < pizChannelData[i].size; ++j) { - wav2Decode( - outBuffer, - cd.start + j, - cd.nx, - cd.size, - cd.ny, - cd.nx * cd.size, - maxValue - ); - } - } - applyLut(lut, outBuffer, outBufferEnd); - let tmpOffset = 0; - const tmpBuffer = new Uint8Array(outBuffer.buffer.byteLength); - for (let y2 = 0; y2 < info.lines; y2++) { - for (let c2 = 0; c2 < info.inputChannels.length; c2++) { - const cd = pizChannelData[c2]; - const n2 = cd.nx * cd.size; - const cp = new Uint8Array(outBuffer.buffer, cd.end * INT16_SIZE, n2 * INT16_SIZE); - tmpBuffer.set(cp, tmpOffset); - tmpOffset += n2 * INT16_SIZE; - cd.end += n2; - } - } - return new DataView(tmpBuffer.buffer); - } - function uncompressPXR(info) { - const compressed = info.array.slice(info.offset.value, info.offset.value + info.size); - const rawBuffer = unzlibSync(compressed); - const byteSize = info.inputChannels.length * info.lines * info.columns * info.totalBytes; - const tmpBuffer = new ArrayBuffer(byteSize); - const viewer = new DataView(tmpBuffer); - let tmpBufferEnd = 0; - let writePtr = 0; - const ptr = new Array(4); - for (let y2 = 0; y2 < info.lines; y2++) { - for (let c2 = 0; c2 < info.inputChannels.length; c2++) { - let pixel = 0; - const type = info.inputChannels[c2].pixelType; - switch (type) { - case 1: - ptr[0] = tmpBufferEnd; - ptr[1] = ptr[0] + info.columns; - tmpBufferEnd = ptr[1] + info.columns; - for (let j = 0; j < info.columns; ++j) { - const diff = rawBuffer[ptr[0]++] << 8 | rawBuffer[ptr[1]++]; - pixel += diff; - viewer.setUint16(writePtr, pixel, true); - writePtr += 2; - } - break; - case 2: - ptr[0] = tmpBufferEnd; - ptr[1] = ptr[0] + info.columns; - ptr[2] = ptr[1] + info.columns; - tmpBufferEnd = ptr[2] + info.columns; - for (let j = 0; j < info.columns; ++j) { - const diff = rawBuffer[ptr[0]++] << 24 | rawBuffer[ptr[1]++] << 16 | rawBuffer[ptr[2]++] << 8; - pixel += diff; - viewer.setUint32(writePtr, pixel, true); - writePtr += 4; - } - break; - } - } - } - return viewer; - } - function uncompressDWA(info) { - const inDataView = info.viewer; - const inOffset = { value: info.offset.value }; - const outBuffer = new Uint8Array(info.columns * info.lines * (info.inputChannels.length * info.type * INT16_SIZE)); - const dwaHeader = { - version: parseInt64(inDataView, inOffset), - unknownUncompressedSize: parseInt64(inDataView, inOffset), - unknownCompressedSize: parseInt64(inDataView, inOffset), - acCompressedSize: parseInt64(inDataView, inOffset), - dcCompressedSize: parseInt64(inDataView, inOffset), - rleCompressedSize: parseInt64(inDataView, inOffset), - rleUncompressedSize: parseInt64(inDataView, inOffset), - rleRawSize: parseInt64(inDataView, inOffset), - totalAcUncompressedCount: parseInt64(inDataView, inOffset), - totalDcUncompressedCount: parseInt64(inDataView, inOffset), - acCompression: parseInt64(inDataView, inOffset) - }; - if (dwaHeader.version < 2) - throw new Error("EXRLoader.parse: " + EXRHeader.compression + " version " + dwaHeader.version + " is unsupported"); - const channelRules = new Array(); - let ruleSize = parseUint16(inDataView, inOffset) - INT16_SIZE; - while (ruleSize > 0) { - const name2 = parseNullTerminatedString(inDataView.buffer, inOffset); - const value2 = parseUint8(inDataView, inOffset); - const compression = value2 >> 2 & 3; - const csc = (value2 >> 4) - 1; - const index2 = new Int8Array([csc])[0]; - const type = parseUint8(inDataView, inOffset); - channelRules.push({ - name: name2, - index: index2, - type, - compression - }); - ruleSize -= name2.length + 3; - } - const channels = EXRHeader.channels; - const channelData = new Array(info.inputChannels.length); - for (let i = 0; i < info.inputChannels.length; ++i) { - const cd = channelData[i] = {}; - const channel = channels[i]; - cd.name = channel.name; - cd.compression = UNKNOWN; - cd.decoded = false; - cd.type = channel.pixelType; - cd.pLinear = channel.pLinear; - cd.width = info.columns; - cd.height = info.lines; - } - const cscSet = { - idx: new Array(3) - }; - for (let offset2 = 0; offset2 < info.inputChannels.length; ++offset2) { - const cd = channelData[offset2]; - for (let i = 0; i < channelRules.length; ++i) { - const rule = channelRules[i]; - if (cd.name == rule.name) { - cd.compression = rule.compression; - if (rule.index >= 0) { - cscSet.idx[rule.index] = offset2; - } - cd.offset = offset2; - } - } - } - let acBuffer, dcBuffer, rleBuffer; - if (dwaHeader.acCompressedSize > 0) { - switch (dwaHeader.acCompression) { - case STATIC_HUFFMAN: - acBuffer = new Uint16Array(dwaHeader.totalAcUncompressedCount); - hufUncompress(info.array, inDataView, inOffset, dwaHeader.acCompressedSize, acBuffer, dwaHeader.totalAcUncompressedCount); - break; - case DEFLATE: - const compressed = info.array.slice(inOffset.value, inOffset.value + dwaHeader.totalAcUncompressedCount); - const data2 = unzlibSync(compressed); - acBuffer = new Uint16Array(data2.buffer); - inOffset.value += dwaHeader.totalAcUncompressedCount; - break; - } - } - if (dwaHeader.dcCompressedSize > 0) { - const zlibInfo = { - array: info.array, - offset: inOffset, - size: dwaHeader.dcCompressedSize - }; - dcBuffer = new Uint16Array(uncompressZIP(zlibInfo).buffer); - inOffset.value += dwaHeader.dcCompressedSize; - } - if (dwaHeader.rleRawSize > 0) { - const compressed = info.array.slice(inOffset.value, inOffset.value + dwaHeader.rleCompressedSize); - const data2 = unzlibSync(compressed); - rleBuffer = decodeRunLength(data2.buffer); - inOffset.value += dwaHeader.rleCompressedSize; - } - let outBufferEnd = 0; - const rowOffsets = new Array(channelData.length); - for (let i = 0; i < rowOffsets.length; ++i) { - rowOffsets[i] = new Array(); - } - for (let y2 = 0; y2 < info.lines; ++y2) { - for (let chan = 0; chan < channelData.length; ++chan) { - rowOffsets[chan].push(outBufferEnd); - outBufferEnd += channelData[chan].width * info.type * INT16_SIZE; - } - } - lossyDctDecode(cscSet, rowOffsets, channelData, acBuffer, dcBuffer, outBuffer); - for (let i = 0; i < channelData.length; ++i) { - const cd = channelData[i]; - if (cd.decoded) continue; - switch (cd.compression) { - case RLE: - let row = 0; - let rleOffset = 0; - for (let y2 = 0; y2 < info.lines; ++y2) { - let rowOffsetBytes = rowOffsets[i][row]; - for (let x2 = 0; x2 < cd.width; ++x2) { - for (let byte = 0; byte < INT16_SIZE * cd.type; ++byte) { - outBuffer[rowOffsetBytes++] = rleBuffer[rleOffset + byte * cd.width * cd.height]; - } - rleOffset++; - } - row++; - } - break; - case LOSSY_DCT: - default: - throw new Error("EXRLoader.parse: unsupported channel compression"); - } - } - return new DataView(outBuffer.buffer); - } - function parseNullTerminatedString(buffer2, offset2) { - const uintBuffer = new Uint8Array(buffer2); - let endOffset = 0; - while (uintBuffer[offset2.value + endOffset] != 0) { - endOffset += 1; - } - const stringValue = new TextDecoder().decode( - uintBuffer.slice(offset2.value, offset2.value + endOffset) - ); - offset2.value = offset2.value + endOffset + 1; - return stringValue; - } - function parseFixedLengthString(buffer2, offset2, size2) { - const stringValue = new TextDecoder().decode( - new Uint8Array(buffer2).slice(offset2.value, offset2.value + size2) - ); - offset2.value = offset2.value + size2; - return stringValue; - } - function parseRational(dataView, offset2) { - const x2 = parseInt32(dataView, offset2); - const y2 = parseUint32(dataView, offset2); - return [x2, y2]; - } - function parseTimecode(dataView, offset2) { - const x2 = parseUint32(dataView, offset2); - const y2 = parseUint32(dataView, offset2); - return [x2, y2]; - } - function parseInt32(dataView, offset2) { - const Int32 = dataView.getInt32(offset2.value, true); - offset2.value = offset2.value + INT32_SIZE; - return Int32; - } - function parseUint32(dataView, offset2) { - const Uint32 = dataView.getUint32(offset2.value, true); - offset2.value = offset2.value + INT32_SIZE; - return Uint32; - } - function parseUint8Array(uInt8Array2, offset2) { - const Uint8 = uInt8Array2[offset2.value]; - offset2.value = offset2.value + INT8_SIZE; - return Uint8; - } - function parseUint8(dataView, offset2) { - const Uint8 = dataView.getUint8(offset2.value); - offset2.value = offset2.value + INT8_SIZE; - return Uint8; - } - const parseInt64 = function(dataView, offset2) { - let int; - if ("getBigInt64" in DataView.prototype) { - int = Number(dataView.getBigInt64(offset2.value, true)); - } else { - int = dataView.getUint32(offset2.value + 4, true) + Number(dataView.getUint32(offset2.value, true) << 32); - } - offset2.value += ULONG_SIZE; - return int; - }; - function parseFloat32(dataView, offset2) { - const float = dataView.getFloat32(offset2.value, true); - offset2.value += FLOAT32_SIZE; - return float; - } - function decodeFloat32(dataView, offset2) { - return DataUtils.toHalfFloat(parseFloat32(dataView, offset2)); - } - function decodeFloat162(binary) { - const exponent = (binary & 31744) >> 10, fraction = binary & 1023; - return (binary >> 15 ? -1 : 1) * (exponent ? exponent === 31 ? fraction ? NaN : Infinity : Math.pow(2, exponent - 15) * (1 + fraction / 1024) : 6103515625e-14 * (fraction / 1024)); - } - function parseUint16(dataView, offset2) { - const Uint16 = dataView.getUint16(offset2.value, true); - offset2.value += INT16_SIZE; - return Uint16; - } - function parseFloat16(buffer2, offset2) { - return decodeFloat162(parseUint16(buffer2, offset2)); - } - function parseChlist(dataView, buffer2, offset2, size2) { - const startOffset = offset2.value; - const channels = []; - while (offset2.value < startOffset + size2 - 1) { - const name2 = parseNullTerminatedString(buffer2, offset2); - const pixelType = parseInt32(dataView, offset2); - const pLinear = parseUint8(dataView, offset2); - offset2.value += 3; - const xSampling = parseInt32(dataView, offset2); - const ySampling = parseInt32(dataView, offset2); - channels.push({ - name: name2, - pixelType, - pLinear, - xSampling, - ySampling - }); - } - offset2.value += 1; - return channels; - } - function parseChromaticities(dataView, offset2) { - const redX = parseFloat32(dataView, offset2); - const redY = parseFloat32(dataView, offset2); - const greenX = parseFloat32(dataView, offset2); - const greenY = parseFloat32(dataView, offset2); - const blueX = parseFloat32(dataView, offset2); - const blueY = parseFloat32(dataView, offset2); - const whiteX = parseFloat32(dataView, offset2); - const whiteY = parseFloat32(dataView, offset2); - return { redX, redY, greenX, greenY, blueX, blueY, whiteX, whiteY }; - } - function parseCompression(dataView, offset2) { - const compressionCodes = [ - "NO_COMPRESSION", - "RLE_COMPRESSION", - "ZIPS_COMPRESSION", - "ZIP_COMPRESSION", - "PIZ_COMPRESSION", - "PXR24_COMPRESSION", - "B44_COMPRESSION", - "B44A_COMPRESSION", - "DWAA_COMPRESSION", - "DWAB_COMPRESSION" - ]; - const compression = parseUint8(dataView, offset2); - return compressionCodes[compression]; - } - function parseBox2i(dataView, offset2) { - const xMin = parseInt32(dataView, offset2); - const yMin = parseInt32(dataView, offset2); - const xMax = parseInt32(dataView, offset2); - const yMax = parseInt32(dataView, offset2); - return { xMin, yMin, xMax, yMax }; - } - function parseLineOrder(dataView, offset2) { - const lineOrders = [ - "INCREASING_Y", - "DECREASING_Y", - "RANDOM_Y" - ]; - const lineOrder = parseUint8(dataView, offset2); - return lineOrders[lineOrder]; - } - function parseEnvmap(dataView, offset2) { - const envmaps = [ - "ENVMAP_LATLONG", - "ENVMAP_CUBE" - ]; - const envmap = parseUint8(dataView, offset2); - return envmaps[envmap]; - } - function parseTiledesc(dataView, offset2) { - const levelModes = [ - "ONE_LEVEL", - "MIPMAP_LEVELS", - "RIPMAP_LEVELS" - ]; - const roundingModes = [ - "ROUND_DOWN", - "ROUND_UP" - ]; - const xSize = parseUint32(dataView, offset2); - const ySize = parseUint32(dataView, offset2); - const modes = parseUint8(dataView, offset2); - return { - xSize, - ySize, - levelMode: levelModes[modes & 15], - roundingMode: roundingModes[modes >> 4] - }; - } - function parseV2f(dataView, offset2) { - const x2 = parseFloat32(dataView, offset2); - const y2 = parseFloat32(dataView, offset2); - return [x2, y2]; - } - function parseV3f(dataView, offset2) { - const x2 = parseFloat32(dataView, offset2); - const y2 = parseFloat32(dataView, offset2); - const z = parseFloat32(dataView, offset2); - return [x2, y2, z]; - } - function parseValue(dataView, buffer2, offset2, type, size2) { - if (type === "string" || type === "stringvector" || type === "iccProfile") { - return parseFixedLengthString(buffer2, offset2, size2); - } else if (type === "chlist") { - return parseChlist(dataView, buffer2, offset2, size2); - } else if (type === "chromaticities") { - return parseChromaticities(dataView, offset2); - } else if (type === "compression") { - return parseCompression(dataView, offset2); - } else if (type === "box2i") { - return parseBox2i(dataView, offset2); - } else if (type === "envmap") { - return parseEnvmap(dataView, offset2); - } else if (type === "tiledesc") { - return parseTiledesc(dataView, offset2); - } else if (type === "lineOrder") { - return parseLineOrder(dataView, offset2); - } else if (type === "float") { - return parseFloat32(dataView, offset2); - } else if (type === "v2f") { - return parseV2f(dataView, offset2); - } else if (type === "v3f") { - return parseV3f(dataView, offset2); - } else if (type === "int") { - return parseInt32(dataView, offset2); - } else if (type === "rational") { - return parseRational(dataView, offset2); - } else if (type === "timecode") { - return parseTimecode(dataView, offset2); - } else if (type === "preview") { - offset2.value += size2; - return "skipped"; - } else { - offset2.value += size2; - return void 0; - } - } - function roundLog2(x2, mode) { - const log22 = Math.log2(x2); - return mode == "ROUND_DOWN" ? Math.floor(log22) : Math.ceil(log22); - } - function calculateTileLevels(tiledesc, w, h) { - let num = 0; - switch (tiledesc.levelMode) { - case "ONE_LEVEL": - num = 1; - break; - case "MIPMAP_LEVELS": - num = roundLog2(Math.max(w, h), tiledesc.roundingMode) + 1; - break; - case "RIPMAP_LEVELS": - throw new Error("THREE.EXRLoader: RIPMAP_LEVELS tiles currently unsupported."); - } - return num; - } - function calculateTiles(count, dataSize, size2, roundingMode) { - const tiles = new Array(count); - for (let i = 0; i < count; i++) { - const b3 = 1 << i; - let s = dataSize / b3 | 0; - if (roundingMode == "ROUND_UP" && s * b3 < dataSize) s += 1; - const l2 = Math.max(s, 1); - tiles[i] = (l2 + size2 - 1) / size2 | 0; - } - return tiles; - } - function parseTiles() { - const EXRDecoder2 = this; - const offset2 = EXRDecoder2.offset; - const tmpOffset = { value: 0 }; - for (let tile = 0; tile < EXRDecoder2.tileCount; tile++) { - const tileX = parseInt32(EXRDecoder2.viewer, offset2); - const tileY = parseInt32(EXRDecoder2.viewer, offset2); - offset2.value += 8; - EXRDecoder2.size = parseUint32(EXRDecoder2.viewer, offset2); - const startX = tileX * EXRDecoder2.blockWidth; - const startY = tileY * EXRDecoder2.blockHeight; - EXRDecoder2.columns = startX + EXRDecoder2.blockWidth > EXRDecoder2.width ? EXRDecoder2.width - startX : EXRDecoder2.blockWidth; - EXRDecoder2.lines = startY + EXRDecoder2.blockHeight > EXRDecoder2.height ? EXRDecoder2.height - startY : EXRDecoder2.blockHeight; - const bytesBlockLine = EXRDecoder2.columns * EXRDecoder2.totalBytes; - const isCompressed = EXRDecoder2.size < EXRDecoder2.lines * bytesBlockLine; - const viewer = isCompressed ? EXRDecoder2.uncompress(EXRDecoder2) : uncompressRAW(EXRDecoder2); - offset2.value += EXRDecoder2.size; - for (let line2 = 0; line2 < EXRDecoder2.lines; line2++) { - const lineOffset = line2 * EXRDecoder2.columns * EXRDecoder2.totalBytes; - for (let channelID = 0; channelID < EXRDecoder2.inputChannels.length; channelID++) { - const name2 = EXRHeader.channels[channelID].name; - const lOff = EXRDecoder2.channelByteOffsets[name2] * EXRDecoder2.columns; - const cOff = EXRDecoder2.decodeChannels[name2]; - if (cOff === void 0) continue; - tmpOffset.value = lineOffset + lOff; - const outLineOffset = (EXRDecoder2.height - (1 + startY + line2)) * EXRDecoder2.outLineWidth; - for (let x2 = 0; x2 < EXRDecoder2.columns; x2++) { - const outIndex = outLineOffset + (x2 + startX) * EXRDecoder2.outputChannels + cOff; - EXRDecoder2.byteArray[outIndex] = EXRDecoder2.getter(viewer, tmpOffset); - } - } - } - } - } - function parseScanline() { - const EXRDecoder2 = this; - const offset2 = EXRDecoder2.offset; - const tmpOffset = { value: 0 }; - for (let scanlineBlockIdx = 0; scanlineBlockIdx < EXRDecoder2.height / EXRDecoder2.blockHeight; scanlineBlockIdx++) { - const line2 = parseInt32(EXRDecoder2.viewer, offset2) - EXRHeader.dataWindow.yMin; - EXRDecoder2.size = parseUint32(EXRDecoder2.viewer, offset2); - EXRDecoder2.lines = line2 + EXRDecoder2.blockHeight > EXRDecoder2.height ? EXRDecoder2.height - line2 : EXRDecoder2.blockHeight; - const bytesPerLine = EXRDecoder2.columns * EXRDecoder2.totalBytes; - const isCompressed = EXRDecoder2.size < EXRDecoder2.lines * bytesPerLine; - const viewer = isCompressed ? EXRDecoder2.uncompress(EXRDecoder2) : uncompressRAW(EXRDecoder2); - offset2.value += EXRDecoder2.size; - for (let line_y = 0; line_y < EXRDecoder2.blockHeight; line_y++) { - const scan_y = scanlineBlockIdx * EXRDecoder2.blockHeight; - const true_y = line_y + EXRDecoder2.scanOrder(scan_y); - if (true_y >= EXRDecoder2.height) continue; - const lineOffset = line_y * bytesPerLine; - const outLineOffset = (EXRDecoder2.height - 1 - true_y) * EXRDecoder2.outLineWidth; - for (let channelID = 0; channelID < EXRDecoder2.inputChannels.length; channelID++) { - const name2 = EXRHeader.channels[channelID].name; - const lOff = EXRDecoder2.channelByteOffsets[name2] * EXRDecoder2.columns; - const cOff = EXRDecoder2.decodeChannels[name2]; - if (cOff === void 0) continue; - tmpOffset.value = lineOffset + lOff; - for (let x2 = 0; x2 < EXRDecoder2.columns; x2++) { - const outIndex = outLineOffset + x2 * EXRDecoder2.outputChannels + cOff; - EXRDecoder2.byteArray[outIndex] = EXRDecoder2.getter(viewer, tmpOffset); - } - } - } - } - } - function parseHeader(dataView, buffer2, offset2) { - const EXRHeader2 = {}; - if (dataView.getUint32(0, true) != 20000630) { - throw new Error("THREE.EXRLoader: Provided file doesn't appear to be in OpenEXR format."); - } - EXRHeader2.version = dataView.getUint8(4); - const spec = dataView.getUint8(5); - EXRHeader2.spec = { - singleTile: !!(spec & 2), - longName: !!(spec & 4), - deepFormat: !!(spec & 8), - multiPart: !!(spec & 16) - }; - offset2.value = 8; - let keepReading = true; - while (keepReading) { - const attributeName = parseNullTerminatedString(buffer2, offset2); - if (attributeName == 0) { - keepReading = false; - } else { - const attributeType = parseNullTerminatedString(buffer2, offset2); - const attributeSize = parseUint32(dataView, offset2); - const attributeValue = parseValue(dataView, buffer2, offset2, attributeType, attributeSize); - if (attributeValue === void 0) { - console.warn(`THREE.EXRLoader: Skipped unknown header attribute type '${attributeType}'.`); - } else { - EXRHeader2[attributeName] = attributeValue; - } - } - } - if ((spec & ~6) != 0) { - console.error("THREE.EXRHeader:", EXRHeader2); - throw new Error("THREE.EXRLoader: Provided file is currently unsupported."); - } - return EXRHeader2; - } - function setupDecoder(EXRHeader2, dataView, uInt8Array2, offset2, outputType) { - const EXRDecoder2 = { - size: 0, - viewer: dataView, - array: uInt8Array2, - offset: offset2, - width: EXRHeader2.dataWindow.xMax - EXRHeader2.dataWindow.xMin + 1, - height: EXRHeader2.dataWindow.yMax - EXRHeader2.dataWindow.yMin + 1, - inputChannels: EXRHeader2.channels, - channelByteOffsets: {}, - scanOrder: null, - totalBytes: null, - columns: null, - lines: null, - type: null, - uncompress: null, - getter: null, - format: null, - colorSpace: LinearSRGBColorSpace - }; - switch (EXRHeader2.compression) { - case "NO_COMPRESSION": - EXRDecoder2.blockHeight = 1; - EXRDecoder2.uncompress = uncompressRAW; - break; - case "RLE_COMPRESSION": - EXRDecoder2.blockHeight = 1; - EXRDecoder2.uncompress = uncompressRLE; - break; - case "ZIPS_COMPRESSION": - EXRDecoder2.blockHeight = 1; - EXRDecoder2.uncompress = uncompressZIP; - break; - case "ZIP_COMPRESSION": - EXRDecoder2.blockHeight = 16; - EXRDecoder2.uncompress = uncompressZIP; - break; - case "PIZ_COMPRESSION": - EXRDecoder2.blockHeight = 32; - EXRDecoder2.uncompress = uncompressPIZ; - break; - case "PXR24_COMPRESSION": - EXRDecoder2.blockHeight = 16; - EXRDecoder2.uncompress = uncompressPXR; - break; - case "DWAA_COMPRESSION": - EXRDecoder2.blockHeight = 32; - EXRDecoder2.uncompress = uncompressDWA; - break; - case "DWAB_COMPRESSION": - EXRDecoder2.blockHeight = 256; - EXRDecoder2.uncompress = uncompressDWA; - break; - default: - throw new Error("EXRLoader.parse: " + EXRHeader2.compression + " is unsupported"); - } - const channels = {}; - for (const channel of EXRHeader2.channels) { - switch (channel.name) { - case "Y": - case "R": - case "G": - case "B": - case "A": - channels[channel.name] = true; - EXRDecoder2.type = channel.pixelType; - } - } - let fillAlpha = false; - if (channels.R && channels.G && channels.B) { - fillAlpha = !channels.A; - EXRDecoder2.outputChannels = 4; - EXRDecoder2.decodeChannels = { R: 0, G: 1, B: 2, A: 3 }; - } else if (channels.Y) { - EXRDecoder2.outputChannels = 1; - EXRDecoder2.decodeChannels = { Y: 0 }; - } else { - throw new Error("EXRLoader.parse: file contains unsupported data channels."); - } - if (EXRDecoder2.type == 1) { - switch (outputType) { - case FloatType: - EXRDecoder2.getter = parseFloat16; - break; - case HalfFloatType: - EXRDecoder2.getter = parseUint16; - break; - } - } else if (EXRDecoder2.type == 2) { - switch (outputType) { - case FloatType: - EXRDecoder2.getter = parseFloat32; - break; - case HalfFloatType: - EXRDecoder2.getter = decodeFloat32; - } - } else { - throw new Error("EXRLoader.parse: unsupported pixelType " + EXRDecoder2.type + " for " + EXRHeader2.compression + "."); - } - EXRDecoder2.columns = EXRDecoder2.width; - const size2 = EXRDecoder2.width * EXRDecoder2.height * EXRDecoder2.outputChannels; - switch (outputType) { - case FloatType: - EXRDecoder2.byteArray = new Float32Array(size2); - if (fillAlpha) - EXRDecoder2.byteArray.fill(1, 0, size2); - break; - case HalfFloatType: - EXRDecoder2.byteArray = new Uint16Array(size2); - if (fillAlpha) - EXRDecoder2.byteArray.fill(15360, 0, size2); - break; - default: - console.error("THREE.EXRLoader: unsupported type: ", outputType); - break; - } - let byteOffset = 0; - for (const channel of EXRHeader2.channels) { - if (EXRDecoder2.decodeChannels[channel.name] !== void 0) { - EXRDecoder2.channelByteOffsets[channel.name] = byteOffset; - } - byteOffset += channel.pixelType * 2; - } - EXRDecoder2.totalBytes = byteOffset; - EXRDecoder2.outLineWidth = EXRDecoder2.width * EXRDecoder2.outputChannels; - if (EXRHeader2.lineOrder === "INCREASING_Y") { - EXRDecoder2.scanOrder = (y2) => y2; - } else { - EXRDecoder2.scanOrder = (y2) => EXRDecoder2.height - 1 - y2; - } - if (EXRDecoder2.outputChannels == 4) { - EXRDecoder2.format = RGBAFormat; - EXRDecoder2.colorSpace = LinearSRGBColorSpace; - } else { - EXRDecoder2.format = RedFormat; - EXRDecoder2.colorSpace = NoColorSpace; - } - if (EXRHeader2.spec.singleTile) { - EXRDecoder2.blockHeight = EXRHeader2.tiles.ySize; - EXRDecoder2.blockWidth = EXRHeader2.tiles.xSize; - const numXLevels = calculateTileLevels(EXRHeader2.tiles, EXRDecoder2.width, EXRDecoder2.height); - const numXTiles = calculateTiles(numXLevels, EXRDecoder2.width, EXRHeader2.tiles.xSize, EXRHeader2.tiles.roundingMode); - const numYTiles = calculateTiles(numXLevels, EXRDecoder2.height, EXRHeader2.tiles.ySize, EXRHeader2.tiles.roundingMode); - EXRDecoder2.tileCount = numXTiles[0] * numYTiles[0]; - for (let l2 = 0; l2 < numXLevels; l2++) - for (let y2 = 0; y2 < numYTiles[l2]; y2++) - for (let x2 = 0; x2 < numXTiles[l2]; x2++) - parseInt64(dataView, offset2); - EXRDecoder2.decode = parseTiles.bind(EXRDecoder2); - } else { - EXRDecoder2.blockWidth = EXRDecoder2.width; - const blockCount = Math.ceil(EXRDecoder2.height / EXRDecoder2.blockHeight); - for (let i = 0; i < blockCount; i++) - parseInt64(dataView, offset2); - EXRDecoder2.decode = parseScanline.bind(EXRDecoder2); - } - return EXRDecoder2; - } - const offset = { value: 0 }; - const bufferDataView = new DataView(buffer); - const uInt8Array = new Uint8Array(buffer); - const EXRHeader = parseHeader(bufferDataView, buffer, offset); - const EXRDecoder = setupDecoder(EXRHeader, bufferDataView, uInt8Array, offset, this.type); - EXRDecoder.decode(); - return { - header: EXRHeader, - width: EXRDecoder.width, - height: EXRDecoder.height, - data: EXRDecoder.byteArray, - format: EXRDecoder.format, - colorSpace: EXRDecoder.colorSpace, - type: this.type - }; - } - setDataType(value2) { - this.type = value2; - return this; - } - load(url, onLoad, onProgress, onError) { - function onLoadCallback(texture, texData) { - texture.colorSpace = texData.colorSpace; - texture.minFilter = LinearFilter; - texture.magFilter = LinearFilter; - texture.generateMipmaps = false; - texture.flipY = false; - if (onLoad) onLoad(texture, texData); - } - return super.load(url, onLoadCallback, onProgress, onError); - } -}; - -// node_modules/three/examples/jsm/loaders/3DMLoader.js -var _taskCache = /* @__PURE__ */ new WeakMap(); -var Rhino3dmLoader = class extends Loader { - constructor(manager) { - super(manager); - this.libraryPath = ""; - this.libraryPending = null; - this.libraryBinary = null; - this.libraryConfig = {}; - this.url = ""; - this.workerLimit = 4; - this.workerPool = []; - this.workerNextTaskID = 1; - this.workerSourceURL = ""; - this.workerConfig = {}; - this.materials = []; - this.warnings = []; - } - setLibraryPath(path) { - this.libraryPath = path; - return this; - } - setWorkerLimit(workerLimit) { - this.workerLimit = workerLimit; - return this; - } - load(url, onLoad, onProgress, onError) { - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(this.requestHeader); - this.url = url; - loader.load(url, (buffer) => { - if (_taskCache.has(buffer)) { - const cachedTask = _taskCache.get(buffer); - return cachedTask.promise.then(onLoad).catch(onError); - } - this.decodeObjects(buffer, url).then((result) => { - result.userData.warnings = this.warnings; - onLoad(result); - }).catch((e) => onError(e)); - }, onProgress, onError); - } - debug() { - console.log("Task load: ", this.workerPool.map((worker) => worker._taskLoad)); - } - decodeObjects(buffer, url) { - let worker; - let taskID; - const taskCost = buffer.byteLength; - const objectPending = this._getWorker(taskCost).then((_worker) => { - worker = _worker; - taskID = this.workerNextTaskID++; - return new Promise((resolve, reject2) => { - worker._callbacks[taskID] = { resolve, reject: reject2 }; - worker.postMessage({ type: "decode", id: taskID, buffer }, [buffer]); - }); - }).then((message) => this._createGeometry(message.data)).catch((e) => { - throw e; - }); - objectPending.catch(() => true).then(() => { - if (worker && taskID) { - this._releaseTask(worker, taskID); - } - }); - _taskCache.set(buffer, { - url, - promise: objectPending - }); - return objectPending; - } - parse(data2, onLoad, onError) { - this.decodeObjects(data2, "").then((result) => { - result.userData.warnings = this.warnings; - onLoad(result); - }).catch((e) => onError(e)); - } - _compareMaterials(material) { - const mat = {}; - mat.name = material.name; - mat.color = {}; - mat.color.r = material.color.r; - mat.color.g = material.color.g; - mat.color.b = material.color.b; - mat.type = material.type; - mat.vertexColors = material.vertexColors; - const json = JSON.stringify(mat); - for (let i = 0; i < this.materials.length; i++) { - const m = this.materials[i]; - const _mat = {}; - _mat.name = m.name; - _mat.color = {}; - _mat.color.r = m.color.r; - _mat.color.g = m.color.g; - _mat.color.b = m.color.b; - _mat.type = m.type; - _mat.vertexColors = m.vertexColors; - if (JSON.stringify(_mat) === json) { - return m; - } - } - this.materials.push(material); - return material; - } - _createMaterial(material, renderEnvironment) { - if (material === void 0) { - return new MeshStandardMaterial({ - color: new Color(1, 1, 1), - metalness: 0.8, - name: Loader.DEFAULT_MATERIAL_NAME, - side: DoubleSide - }); - } - const mat = new MeshPhysicalMaterial({ - color: new Color(material.diffuseColor.r / 255, material.diffuseColor.g / 255, material.diffuseColor.b / 255), - emissive: new Color(material.emissionColor.r, material.emissionColor.g, material.emissionColor.b), - flatShading: material.disableLighting, - ior: material.indexOfRefraction, - name: material.name, - reflectivity: material.reflectivity, - opacity: 1 - material.transparency, - side: DoubleSide, - specularColor: material.specularColor, - transparent: material.transparency > 0 ? true : false - }); - mat.userData.id = material.id; - if (material.pbrSupported) { - const pbr = material.pbr; - mat.anisotropy = pbr.anisotropic; - mat.anisotropyRotation = pbr.anisotropicRotation; - mat.color = new Color(pbr.baseColor.r, pbr.baseColor.g, pbr.baseColor.b); - mat.clearcoat = pbr.clearcoat; - mat.clearcoatRoughness = pbr.clearcoatRoughness; - mat.metalness = pbr.metallic; - mat.transmission = 1 - pbr.opacity; - mat.roughness = pbr.roughness; - mat.sheen = pbr.sheen; - mat.specularIntensity = pbr.specular; - mat.thickness = pbr.subsurface; - } - if (material.pbrSupported && material.pbr.opacity === 0 && material.transparency === 1) { - mat.opacity = 0.2; - mat.transmission = 1; - } - const textureLoader = new TextureLoader(); - for (let i = 0; i < material.textures.length; i++) { - const texture = material.textures[i]; - if (texture.image !== null) { - const map2 = textureLoader.load(texture.image); - switch (texture.type) { - case "Bump": - mat.bumpMap = map2; - break; - case "Diffuse": - mat.map = map2; - break; - case "Emap": - mat.envMap = map2; - break; - case "Opacity": - mat.transmissionMap = map2; - break; - case "Transparency": - mat.alphaMap = map2; - mat.transparent = true; - break; - case "PBR_Alpha": - mat.alphaMap = map2; - mat.transparent = true; - break; - case "PBR_AmbientOcclusion": - mat.aoMap = map2; - break; - case "PBR_Anisotropic": - mat.anisotropyMap = map2; - break; - case "PBR_BaseColor": - mat.map = map2; - break; - case "PBR_Clearcoat": - mat.clearcoatMap = map2; - break; - case "PBR_ClearcoatBump": - mat.clearcoatNormalMap = map2; - break; - case "PBR_ClearcoatRoughness": - mat.clearcoatRoughnessMap = map2; - break; - case "PBR_Displacement": - mat.displacementMap = map2; - break; - case "PBR_Emission": - mat.emissiveMap = map2; - break; - case "PBR_Metallic": - mat.metalnessMap = map2; - break; - case "PBR_Roughness": - mat.roughnessMap = map2; - break; - case "PBR_Sheen": - mat.sheenColorMap = map2; - break; - case "PBR_Specular": - mat.specularColorMap = map2; - break; - case "PBR_Subsurface": - mat.thicknessMap = map2; - break; - default: - this.warnings.push({ - message: `THREE.3DMLoader: No conversion exists for 3dm ${texture.type}.`, - type: "no conversion" - }); - break; - } - map2.wrapS = texture.wrapU === 0 ? RepeatWrapping : ClampToEdgeWrapping; - map2.wrapT = texture.wrapV === 0 ? RepeatWrapping : ClampToEdgeWrapping; - if (texture.repeat) { - map2.repeat.set(texture.repeat[0], texture.repeat[1]); - } - } - } - if (renderEnvironment) { - new EXRLoader().load(renderEnvironment.image, function(texture) { - texture.mapping = THREE.EquirectangularReflectionMapping; - mat.envMap = texture; - }); - } - return mat; - } - _createGeometry(data2) { - const object = new Object3D(); - const instanceDefinitionObjects = []; - const instanceDefinitions = []; - const instanceReferences = []; - object.userData["layers"] = data2.layers; - object.userData["groups"] = data2.groups; - object.userData["settings"] = data2.settings; - object.userData.settings["renderSettings"] = data2.renderSettings; - object.userData["objectType"] = "File3dm"; - object.userData["materials"] = null; - object.name = this.url; - let objects = data2.objects; - const materials = data2.materials; - for (let i = 0; i < objects.length; i++) { - const obj = objects[i]; - const attributes = obj.attributes; - switch (obj.objectType) { - case "InstanceDefinition": - instanceDefinitions.push(obj); - break; - case "InstanceReference": - instanceReferences.push(obj); - break; - default: - let matId = null; - switch (attributes.materialSource.name) { - case "ObjectMaterialSource_MaterialFromLayer": - if (attributes.layerIndex >= 0) { - matId = data2.layers[attributes.layerIndex].renderMaterialIndex; - } - break; - case "ObjectMaterialSource_MaterialFromObject": - if (attributes.materialIndex >= 0) { - matId = attributes.materialIndex; - } - break; - } - let material = null; - if (matId >= 0) { - const rMaterial = materials[matId]; - material = this._createMaterial(rMaterial, data2.renderEnvironment); - } - const _object = this._createObject(obj, material); - if (_object === void 0) { - continue; - } - const layer = data2.layers[attributes.layerIndex]; - _object.visible = layer ? data2.layers[attributes.layerIndex].visible : true; - if (attributes.isInstanceDefinitionObject) { - instanceDefinitionObjects.push(_object); - } else { - object.add(_object); - } - break; - } - } - for (let i = 0; i < instanceDefinitions.length; i++) { - const iDef = instanceDefinitions[i]; - objects = []; - for (let j = 0; j < iDef.attributes.objectIds.length; j++) { - const objId = iDef.attributes.objectIds[j]; - for (let p2 = 0; p2 < instanceDefinitionObjects.length; p2++) { - const idoId = instanceDefinitionObjects[p2].userData.attributes.id; - if (objId === idoId) { - objects.push(instanceDefinitionObjects[p2]); - } - } - } - for (let j = 0; j < instanceReferences.length; j++) { - const iRef = instanceReferences[j]; - if (iRef.geometry.parentIdefId === iDef.attributes.id) { - const iRefObject = new Object3D(); - const xf = iRef.geometry.xform.array; - const matrix3 = new Matrix4(); - matrix3.set(...xf); - iRefObject.applyMatrix4(matrix3); - for (let p2 = 0; p2 < objects.length; p2++) { - iRefObject.add(objects[p2].clone(true)); - } - object.add(iRefObject); - } - } - } - object.userData["materials"] = this.materials; - object.name = ""; - return object; - } - _createObject(obj, mat) { - const loader = new BufferGeometryLoader(); - const attributes = obj.attributes; - let geometry, material, _color5, color; - switch (obj.objectType) { - case "Point": - case "PointSet": - geometry = loader.parse(obj.geometry); - if (geometry.attributes.hasOwnProperty("color")) { - material = new PointsMaterial({ vertexColors: true, sizeAttenuation: false, size: 2 }); - } else { - _color5 = attributes.drawColor; - color = new Color(_color5.r / 255, _color5.g / 255, _color5.b / 255); - material = new PointsMaterial({ color, sizeAttenuation: false, size: 2 }); - } - material = this._compareMaterials(material); - const points = new Points(geometry, material); - points.userData["attributes"] = attributes; - points.userData["objectType"] = obj.objectType; - if (attributes.name) { - points.name = attributes.name; - } - return points; - case "Mesh": - case "Extrusion": - case "SubD": - case "Brep": - if (obj.geometry === null) return; - geometry = loader.parse(obj.geometry); - if (mat === null) { - mat = this._createMaterial(); - } - if (geometry.attributes.hasOwnProperty("color")) { - mat.vertexColors = true; - } - mat = this._compareMaterials(mat); - const mesh = new Mesh(geometry, mat); - mesh.castShadow = attributes.castsShadows; - mesh.receiveShadow = attributes.receivesShadows; - mesh.userData["attributes"] = attributes; - mesh.userData["objectType"] = obj.objectType; - if (attributes.name) { - mesh.name = attributes.name; - } - return mesh; - case "Curve": - geometry = loader.parse(obj.geometry); - _color5 = attributes.drawColor; - color = new Color(_color5.r / 255, _color5.g / 255, _color5.b / 255); - material = new LineBasicMaterial({ color }); - material = this._compareMaterials(material); - const lines = new Line(geometry, material); - lines.userData["attributes"] = attributes; - lines.userData["objectType"] = obj.objectType; - if (attributes.name) { - lines.name = attributes.name; - } - return lines; - case "TextDot": - geometry = obj.geometry; - const ctx = document.createElement("canvas").getContext("2d"); - const font = `${geometry.fontHeight}px ${geometry.fontFace}`; - ctx.font = font; - const width2 = ctx.measureText(geometry.text).width + 10; - const height2 = geometry.fontHeight + 10; - const r = window.devicePixelRatio; - ctx.canvas.width = width2 * r; - ctx.canvas.height = height2 * r; - ctx.canvas.style.width = width2 + "px"; - ctx.canvas.style.height = height2 + "px"; - ctx.setTransform(r, 0, 0, r, 0, 0); - ctx.font = font; - ctx.textBaseline = "middle"; - ctx.textAlign = "center"; - color = attributes.drawColor; - ctx.fillStyle = `rgba(${color.r},${color.g},${color.b},${color.a})`; - ctx.fillRect(0, 0, width2, height2); - ctx.fillStyle = "white"; - ctx.fillText(geometry.text, width2 / 2, height2 / 2); - const texture = new CanvasTexture(ctx.canvas); - texture.minFilter = LinearFilter; - texture.wrapS = ClampToEdgeWrapping; - texture.wrapT = ClampToEdgeWrapping; - material = new SpriteMaterial({ map: texture, depthTest: false }); - const sprite = new Sprite(material); - sprite.position.set(geometry.point[0], geometry.point[1], geometry.point[2]); - sprite.scale.set(width2 / 10, height2 / 10, 1); - sprite.userData["attributes"] = attributes; - sprite.userData["objectType"] = obj.objectType; - if (attributes.name) { - sprite.name = attributes.name; - } - return sprite; - case "Light": - geometry = obj.geometry; - let light; - switch (geometry.lightStyle.name) { - case "LightStyle_WorldPoint": - light = new PointLight(); - light.castShadow = attributes.castsShadows; - light.position.set(geometry.location[0], geometry.location[1], geometry.location[2]); - light.shadow.normalBias = 0.1; - break; - case "LightStyle_WorldSpot": - light = new SpotLight(); - light.castShadow = attributes.castsShadows; - light.position.set(geometry.location[0], geometry.location[1], geometry.location[2]); - light.target.position.set(geometry.direction[0], geometry.direction[1], geometry.direction[2]); - light.angle = geometry.spotAngleRadians; - light.shadow.normalBias = 0.1; - break; - case "LightStyle_WorldRectangular": - light = new RectAreaLight(); - const width3 = Math.abs(geometry.width[2]); - const height3 = Math.abs(geometry.length[0]); - light.position.set(geometry.location[0] - height3 / 2, geometry.location[1], geometry.location[2] - width3 / 2); - light.height = height3; - light.width = width3; - light.lookAt(geometry.direction[0], geometry.direction[1], geometry.direction[2]); - break; - case "LightStyle_WorldDirectional": - light = new DirectionalLight(); - light.castShadow = attributes.castsShadows; - light.position.set(geometry.location[0], geometry.location[1], geometry.location[2]); - light.target.position.set(geometry.direction[0], geometry.direction[1], geometry.direction[2]); - light.shadow.normalBias = 0.1; - break; - case "LightStyle_WorldLinear": - break; - default: - break; - } - if (light) { - light.intensity = geometry.intensity; - _color5 = geometry.diffuse; - color = new Color(_color5.r / 255, _color5.g / 255, _color5.b / 255); - light.color = color; - light.userData["attributes"] = attributes; - light.userData["objectType"] = obj.objectType; - } - return light; - } - } - _initLibrary() { - if (!this.libraryPending) { - const jsLoader = new FileLoader(this.manager); - jsLoader.setPath(this.libraryPath); - const jsContent = new Promise((resolve, reject2) => { - jsLoader.load("rhino3dm.js", resolve, void 0, reject2); - }); - const binaryLoader = new FileLoader(this.manager); - binaryLoader.setPath(this.libraryPath); - binaryLoader.setResponseType("arraybuffer"); - const binaryContent = new Promise((resolve, reject2) => { - binaryLoader.load("rhino3dm.wasm", resolve, void 0, reject2); - }); - this.libraryPending = Promise.all([jsContent, binaryContent]).then(([jsContent2, binaryContent2]) => { - this.libraryConfig.wasmBinary = binaryContent2; - const fn = Rhino3dmWorker.toString(); - const body = [ - "/* rhino3dm.js */", - jsContent2, - "/* worker */", - fn.substring(fn.indexOf("{") + 1, fn.lastIndexOf("}")) - ].join("\n"); - this.workerSourceURL = URL.createObjectURL(new Blob([body])); - }); - } - return this.libraryPending; - } - _getWorker(taskCost) { - return this._initLibrary().then(() => { - if (this.workerPool.length < this.workerLimit) { - const worker2 = new Worker(this.workerSourceURL); - worker2._callbacks = {}; - worker2._taskCosts = {}; - worker2._taskLoad = 0; - worker2.postMessage({ - type: "init", - libraryConfig: this.libraryConfig - }); - worker2.onmessage = (e) => { - const message = e.data; - switch (message.type) { - case "warning": - this.warnings.push(message.data); - console.warn(message.data); - break; - case "decode": - worker2._callbacks[message.id].resolve(message); - break; - case "error": - worker2._callbacks[message.id].reject(message); - break; - default: - console.error('THREE.Rhino3dmLoader: Unexpected message, "' + message.type + '"'); - } - }; - this.workerPool.push(worker2); - } else { - this.workerPool.sort(function(a2, b3) { - return a2._taskLoad > b3._taskLoad ? -1 : 1; - }); - } - const worker = this.workerPool[this.workerPool.length - 1]; - worker._taskLoad += taskCost; - return worker; - }); - } - _releaseTask(worker, taskID) { - worker._taskLoad -= worker._taskCosts[taskID]; - delete worker._callbacks[taskID]; - delete worker._taskCosts[taskID]; - } - dispose() { - for (let i = 0; i < this.workerPool.length; ++i) { - this.workerPool[i].terminate(); - } - this.workerPool.length = 0; - return this; - } -}; -function Rhino3dmWorker() { - let libraryPending; - let libraryConfig; - let rhino; - let taskID; - onmessage = function(e) { - const message = e.data; - switch (message.type) { - case "init": - libraryConfig = message.libraryConfig; - const wasmBinary = libraryConfig.wasmBinary; - let RhinoModule; - libraryPending = new Promise(function(resolve) { - RhinoModule = { wasmBinary, onRuntimeInitialized: resolve }; - rhino3dm(RhinoModule); - }).then(() => { - rhino = RhinoModule; - }); - break; - case "decode": - taskID = message.id; - const buffer = message.buffer; - libraryPending.then(() => { - try { - const data2 = decodeObjects(rhino, buffer); - self.postMessage({ type: "decode", id: message.id, data: data2 }); - } catch (error) { - self.postMessage({ type: "error", id: message.id, error }); - } - }); - break; - } - }; - function decodeObjects(rhino2, buffer) { - const arr = new Uint8Array(buffer); - const doc = rhino2.File3dm.fromByteArray(arr); - const objects = []; - const materials = []; - const layers = []; - const views = []; - const namedViews = []; - const groups = []; - const strings = []; - const objs = doc.objects(); - const cnt = objs.count; - for (let i = 0; i < cnt; i++) { - const _object = objs.get(i); - const object = extractObjectData(_object, doc); - _object.delete(); - if (object) { - objects.push(object); - } - } - for (let i = 0; i < doc.instanceDefinitions().count; i++) { - const idef = doc.instanceDefinitions().get(i); - const idefAttributes = extractProperties(idef); - idefAttributes.objectIds = idef.getObjectIds(); - objects.push({ geometry: null, attributes: idefAttributes, objectType: "InstanceDefinition" }); - } - const textureTypes = [ - // rhino.TextureType.Bitmap, - rhino2.TextureType.Diffuse, - rhino2.TextureType.Bump, - rhino2.TextureType.Transparency, - rhino2.TextureType.Opacity, - rhino2.TextureType.Emap - ]; - const pbrTextureTypes = [ - rhino2.TextureType.PBR_BaseColor, - rhino2.TextureType.PBR_Subsurface, - rhino2.TextureType.PBR_SubsurfaceScattering, - rhino2.TextureType.PBR_SubsurfaceScatteringRadius, - rhino2.TextureType.PBR_Metallic, - rhino2.TextureType.PBR_Specular, - rhino2.TextureType.PBR_SpecularTint, - rhino2.TextureType.PBR_Roughness, - rhino2.TextureType.PBR_Anisotropic, - rhino2.TextureType.PBR_Anisotropic_Rotation, - rhino2.TextureType.PBR_Sheen, - rhino2.TextureType.PBR_SheenTint, - rhino2.TextureType.PBR_Clearcoat, - rhino2.TextureType.PBR_ClearcoatBump, - rhino2.TextureType.PBR_ClearcoatRoughness, - rhino2.TextureType.PBR_OpacityIor, - rhino2.TextureType.PBR_OpacityRoughness, - rhino2.TextureType.PBR_Emission, - rhino2.TextureType.PBR_AmbientOcclusion, - rhino2.TextureType.PBR_Displacement - ]; - for (let i = 0; i < doc.materials().count; i++) { - const _material = doc.materials().get(i); - const material = extractProperties(_material); - const textures = []; - textures.push(...extractTextures(_material, textureTypes, doc)); - material.pbrSupported = _material.physicallyBased().supported; - if (material.pbrSupported) { - textures.push(...extractTextures(_material, pbrTextureTypes, doc)); - material.pbr = extractProperties(_material.physicallyBased()); - } - material.textures = textures; - materials.push(material); - _material.delete(); - } - for (let i = 0; i < doc.layers().count; i++) { - const _layer = doc.layers().get(i); - const layer = extractProperties(_layer); - layers.push(layer); - _layer.delete(); - } - for (let i = 0; i < doc.views().count; i++) { - const _view = doc.views().get(i); - const view = extractProperties(_view); - views.push(view); - _view.delete(); - } - for (let i = 0; i < doc.namedViews().count; i++) { - const _namedView = doc.namedViews().get(i); - const namedView = extractProperties(_namedView); - namedViews.push(namedView); - _namedView.delete(); - } - for (let i = 0; i < doc.groups().count; i++) { - const _group = doc.groups().get(i); - const group = extractProperties(_group); - groups.push(group); - _group.delete(); - } - const settings = extractProperties(doc.settings()); - const strings_count = doc.strings().count; - for (let i = 0; i < strings_count; i++) { - strings.push(doc.strings().get(i)); - } - const reflectionId = doc.settings().renderSettings().renderEnvironments.reflectionId; - const rc = doc.renderContent(); - let renderEnvironment = null; - for (let i = 0; i < rc.count; i++) { - const content2 = rc.get(i); - switch (content2.kind) { - case "environment": - const id = content2.id; - if (id !== reflectionId) break; - const renderTexture = content2.findChild("texture"); - const fileName = renderTexture.fileName; - for (let j = 0; j < doc.embeddedFiles().count; j++) { - const _fileName = doc.embeddedFiles().get(j).fileName; - if (fileName === _fileName) { - const background = doc.getEmbeddedFileAsBase64(fileName); - const backgroundImage = "data:image/png;base64," + background; - renderEnvironment = { type: "renderEnvironment", image: backgroundImage, name: fileName }; - } - } - break; - } - } - const renderSettings = { - ambientLight: doc.settings().renderSettings().ambientLight, - backgroundColorTop: doc.settings().renderSettings().backgroundColorTop, - backgroundColorBottom: doc.settings().renderSettings().backgroundColorBottom, - useHiddenLights: doc.settings().renderSettings().useHiddenLights, - depthCue: doc.settings().renderSettings().depthCue, - flatShade: doc.settings().renderSettings().flatShade, - renderBackFaces: doc.settings().renderSettings().renderBackFaces, - renderPoints: doc.settings().renderSettings().renderPoints, - renderCurves: doc.settings().renderSettings().renderCurves, - renderIsoParams: doc.settings().renderSettings().renderIsoParams, - renderMeshEdges: doc.settings().renderSettings().renderMeshEdges, - renderAnnotations: doc.settings().renderSettings().renderAnnotations, - useViewportSize: doc.settings().renderSettings().useViewportSize, - scaleBackgroundToFit: doc.settings().renderSettings().scaleBackgroundToFit, - transparentBackground: doc.settings().renderSettings().transparentBackground, - imageDpi: doc.settings().renderSettings().imageDpi, - shadowMapLevel: doc.settings().renderSettings().shadowMapLevel, - namedView: doc.settings().renderSettings().namedView, - snapShot: doc.settings().renderSettings().snapShot, - specificViewport: doc.settings().renderSettings().specificViewport, - groundPlane: extractProperties(doc.settings().renderSettings().groundPlane), - safeFrame: extractProperties(doc.settings().renderSettings().safeFrame), - dithering: extractProperties(doc.settings().renderSettings().dithering), - skylight: extractProperties(doc.settings().renderSettings().skylight), - linearWorkflow: extractProperties(doc.settings().renderSettings().linearWorkflow), - renderChannels: extractProperties(doc.settings().renderSettings().renderChannels), - sun: extractProperties(doc.settings().renderSettings().sun), - renderEnvironments: extractProperties(doc.settings().renderSettings().renderEnvironments), - postEffects: extractProperties(doc.settings().renderSettings().postEffects) - }; - doc.delete(); - return { objects, materials, layers, views, namedViews, groups, strings, settings, renderSettings, renderEnvironment }; - } - function extractTextures(m, tTypes, d) { - const textures = []; - for (let i = 0; i < tTypes.length; i++) { - const _texture = m.getTexture(tTypes[i]); - if (_texture) { - let textureType = tTypes[i].constructor.name; - textureType = textureType.substring(12, textureType.length); - const texture = extractTextureData(_texture, textureType, d); - textures.push(texture); - _texture.delete(); - } - } - return textures; - } - function extractTextureData(t3, tType, d) { - const texture = { type: tType }; - const image = d.getEmbeddedFileAsBase64(t3.fileName); - texture.wrapU = t3.wrapU; - texture.wrapV = t3.wrapV; - texture.wrapW = t3.wrapW; - const uvw = t3.uvwTransform.toFloatArray(true); - texture.repeat = [uvw[0], uvw[5]]; - if (image) { - texture.image = "data:image/png;base64," + image; - } else { - self.postMessage({ - type: "warning", - id: taskID, - data: { - message: `THREE.3DMLoader: Image for ${tType} texture not embedded in file.`, - type: "missing resource" - } - }); - texture.image = null; - } - return texture; - } - function extractObjectData(object, doc) { - const _geometry2 = object.geometry(); - const _attributes = object.attributes(); - let objectType = _geometry2.objectType; - let geometry, attributes, position2, data2, mesh; - switch (objectType) { - case rhino.ObjectType.Curve: - const pts = curveToPoints(_geometry2, 100); - position2 = {}; - attributes = {}; - data2 = {}; - position2.itemSize = 3; - position2.type = "Float32Array"; - position2.array = []; - for (let j = 0; j < pts.length; j++) { - position2.array.push(pts[j][0]); - position2.array.push(pts[j][1]); - position2.array.push(pts[j][2]); - } - attributes.position = position2; - data2.attributes = attributes; - geometry = { data: data2 }; - break; - case rhino.ObjectType.Point: - const pt = _geometry2.location; - position2 = {}; - const color = {}; - attributes = {}; - data2 = {}; - position2.itemSize = 3; - position2.type = "Float32Array"; - position2.array = [pt[0], pt[1], pt[2]]; - const _color5 = _attributes.drawColor(doc); - color.itemSize = 3; - color.type = "Float32Array"; - color.array = [_color5.r / 255, _color5.g / 255, _color5.b / 255]; - attributes.position = position2; - attributes.color = color; - data2.attributes = attributes; - geometry = { data: data2 }; - break; - case rhino.ObjectType.PointSet: - case rhino.ObjectType.Mesh: - geometry = _geometry2.toThreejsJSON(); - break; - case rhino.ObjectType.Brep: - const faces = _geometry2.faces(); - mesh = new rhino.Mesh(); - for (let faceIndex = 0; faceIndex < faces.count; faceIndex++) { - const face = faces.get(faceIndex); - const _mesh = face.getMesh(rhino.MeshType.Any); - if (_mesh) { - mesh.append(_mesh); - _mesh.delete(); - } - face.delete(); - } - if (mesh.faces().count > 0) { - mesh.compact(); - geometry = mesh.toThreejsJSON(); - faces.delete(); - } - mesh.delete(); - break; - case rhino.ObjectType.Extrusion: - mesh = _geometry2.getMesh(rhino.MeshType.Any); - if (mesh) { - geometry = mesh.toThreejsJSON(); - mesh.delete(); - } - break; - case rhino.ObjectType.TextDot: - geometry = extractProperties(_geometry2); - break; - case rhino.ObjectType.Light: - geometry = extractProperties(_geometry2); - if (geometry.lightStyle.name === "LightStyle_WorldLinear") { - self.postMessage({ - type: "warning", - id: taskID, - data: { - message: `THREE.3DMLoader: No conversion exists for ${objectType.constructor.name} ${geometry.lightStyle.name}`, - type: "no conversion", - guid: _attributes.id - } - }); - } - break; - case rhino.ObjectType.InstanceReference: - geometry = extractProperties(_geometry2); - geometry.xform = extractProperties(_geometry2.xform); - geometry.xform.array = _geometry2.xform.toFloatArray(true); - break; - case rhino.ObjectType.SubD: - _geometry2.subdivide(3); - mesh = rhino.Mesh.createFromSubDControlNet(_geometry2, false); - if (mesh) { - geometry = mesh.toThreejsJSON(); - mesh.delete(); - } - break; - default: - self.postMessage({ - type: "warning", - id: taskID, - data: { - message: `THREE.3DMLoader: Conversion not implemented for ${objectType.constructor.name}`, - type: "not implemented", - guid: _attributes.id - } - }); - break; - } - if (geometry) { - attributes = extractProperties(_attributes); - attributes.geometry = extractProperties(_geometry2); - if (_attributes.groupCount > 0) { - attributes.groupIds = _attributes.getGroupList(); - } - if (_attributes.userStringCount > 0) { - attributes.userStrings = _attributes.getUserStrings(); - } - if (_geometry2.userStringCount > 0) { - attributes.geometry.userStrings = _geometry2.getUserStrings(); - } - if (_attributes.decals().count > 0) { - self.postMessage({ - type: "warning", - id: taskID, - data: { - message: "THREE.3DMLoader: No conversion exists for the decals associated with this object.", - type: "no conversion", - guid: _attributes.id - } - }); - } - attributes.drawColor = _attributes.drawColor(doc); - objectType = objectType.constructor.name; - objectType = objectType.substring(11, objectType.length); - return { geometry, attributes, objectType }; - } else { - self.postMessage({ - type: "warning", - id: taskID, - data: { - message: `THREE.3DMLoader: ${objectType.constructor.name} has no associated mesh geometry.`, - type: "missing mesh", - guid: _attributes.id - } - }); - } - } - function extractProperties(object) { - const result = {}; - for (const property2 in object) { - const value2 = object[property2]; - if (typeof value2 !== "function") { - if (typeof value2 === "object" && value2 !== null && value2.hasOwnProperty("constructor")) { - result[property2] = { name: value2.constructor.name, value: value2.value }; - } else if (typeof value2 === "object" && value2 !== null) { - result[property2] = extractProperties(value2); - } else { - result[property2] = value2; - } - } else { - } - } - return result; - } - function curveToPoints(curve, pointLimit) { - let pointCount = pointLimit; - let rc = []; - const ts = []; - if (curve instanceof rhino.LineCurve) { - return [curve.pointAtStart, curve.pointAtEnd]; - } - if (curve instanceof rhino.PolylineCurve) { - pointCount = curve.pointCount; - for (let i = 0; i < pointCount; i++) { - rc.push(curve.point(i)); - } - return rc; - } - if (curve instanceof rhino.PolyCurve) { - const segmentCount = curve.segmentCount; - for (let i = 0; i < segmentCount; i++) { - const segment = curve.segmentCurve(i); - const segmentArray = curveToPoints(segment, pointCount); - rc = rc.concat(segmentArray); - segment.delete(); - } - return rc; - } - if (curve instanceof rhino.ArcCurve) { - pointCount = Math.floor(curve.angleDegrees / 5); - pointCount = pointCount < 2 ? 2 : pointCount; - } - if (curve instanceof rhino.NurbsCurve && curve.degree === 1) { - const pLine = curve.tryGetPolyline(); - for (let i = 0; i < pLine.count; i++) { - rc.push(pLine.get(i)); - } - pLine.delete(); - return rc; - } - const domain = curve.domain; - const divisions = pointCount - 1; - for (let j = 0; j < pointCount; j++) { - const t3 = domain[0] + j / divisions * (domain[1] - domain[0]); - if (t3 === domain[0] || t3 === domain[1]) { - ts.push(t3); - continue; - } - const tan = curve.tangentAt(t3); - const prevTan = curve.tangentAt(ts.slice(-1)[0]); - const tS = tan[0] * tan[0] + tan[1] * tan[1] + tan[2] * tan[2]; - const ptS = prevTan[0] * prevTan[0] + prevTan[1] * prevTan[1] + prevTan[2] * prevTan[2]; - const denominator = Math.sqrt(tS * ptS); - let angle; - if (denominator === 0) { - angle = Math.PI / 2; - } else { - const theta = (tan.x * prevTan.x + tan.y * prevTan.y + tan.z * prevTan.z) / denominator; - angle = Math.acos(Math.max(-1, Math.min(1, theta))); - } - if (angle < 0.1) continue; - ts.push(t3); - } - rc = ts.map((t3) => curve.pointAt(t3)); - return rc; - } -} - -// node_modules/three/examples/jsm/loaders/3MFLoader.js -var COLOR_SPACE_3MF = SRGBColorSpace; -var ThreeMFLoader = class extends Loader { - constructor(manager) { - super(manager); - this.availableExtensions = []; - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(scope.manager); - loader.setPath(scope.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(scope.requestHeader); - loader.setWithCredentials(scope.withCredentials); - loader.load(url, function(buffer) { - try { - onLoad(scope.parse(buffer)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(data2) { - const scope = this; - const textureLoader = new TextureLoader(this.manager); - function loadDocument(data3) { - let zip = null; - let file = null; - let relsName; - let modelRelsName; - const modelPartNames = []; - const texturesPartNames = []; - let modelRels; - const modelParts = {}; - const printTicketParts = {}; - const texturesParts = {}; - const textDecoder = new TextDecoder(); - try { - zip = unzipSync(new Uint8Array(data3)); - } catch (e) { - if (e instanceof ReferenceError) { - console.error("THREE.3MFLoader: fflate missing and file is compressed."); - return null; - } - } - for (file in zip) { - if (file.match(/\_rels\/.rels$/)) { - relsName = file; - } else if (file.match(/3D\/_rels\/.*\.model\.rels$/)) { - modelRelsName = file; - } else if (file.match(/^3D\/.*\.model$/)) { - modelPartNames.push(file); - } else if (file.match(/^3D\/Textures?\/.*/)) { - texturesPartNames.push(file); - } - } - if (relsName === void 0) throw new Error("THREE.ThreeMFLoader: Cannot find relationship file `rels` in 3MF archive."); - const relsView = zip[relsName]; - const relsFileText = textDecoder.decode(relsView); - const rels = parseRelsXml(relsFileText); - if (modelRelsName) { - const relsView2 = zip[modelRelsName]; - const relsFileText2 = textDecoder.decode(relsView2); - modelRels = parseRelsXml(relsFileText2); - } - for (let i = 0; i < modelPartNames.length; i++) { - const modelPart = modelPartNames[i]; - const view = zip[modelPart]; - const fileText = textDecoder.decode(view); - const xmlData = new DOMParser().parseFromString(fileText, "application/xml"); - if (xmlData.documentElement.nodeName.toLowerCase() !== "model") { - console.error("THREE.3MFLoader: Error loading 3MF - no 3MF document found: ", modelPart); - } - const modelNode = xmlData.querySelector("model"); - const extensions = {}; - for (let i2 = 0; i2 < modelNode.attributes.length; i2++) { - const attr = modelNode.attributes[i2]; - if (attr.name.match(/^xmlns:(.+)$/)) { - extensions[attr.value] = RegExp.$1; - } - } - const modelData = parseModelNode(modelNode); - modelData["xml"] = modelNode; - if (0 < Object.keys(extensions).length) { - modelData["extensions"] = extensions; - } - modelParts[modelPart] = modelData; - } - for (let i = 0; i < texturesPartNames.length; i++) { - const texturesPartName = texturesPartNames[i]; - texturesParts[texturesPartName] = zip[texturesPartName].buffer; - } - return { - rels, - modelRels, - model: modelParts, - printTicket: printTicketParts, - texture: texturesParts - }; - } - function parseRelsXml(relsFileText) { - const relationships = []; - const relsXmlData = new DOMParser().parseFromString(relsFileText, "application/xml"); - const relsNodes = relsXmlData.querySelectorAll("Relationship"); - for (let i = 0; i < relsNodes.length; i++) { - const relsNode = relsNodes[i]; - const relationship = { - target: relsNode.getAttribute("Target"), - //required - id: relsNode.getAttribute("Id"), - //required - type: relsNode.getAttribute("Type") - //required - }; - relationships.push(relationship); - } - return relationships; - } - function parseMetadataNodes(metadataNodes) { - const metadataData = {}; - for (let i = 0; i < metadataNodes.length; i++) { - const metadataNode = metadataNodes[i]; - const name2 = metadataNode.getAttribute("name"); - const validNames = [ - "Title", - "Designer", - "Description", - "Copyright", - "LicenseTerms", - "Rating", - "CreationDate", - "ModificationDate" - ]; - if (0 <= validNames.indexOf(name2)) { - metadataData[name2] = metadataNode.textContent; - } - } - return metadataData; - } - function parseBasematerialsNode(basematerialsNode) { - const basematerialsData = { - id: basematerialsNode.getAttribute("id"), - // required - basematerials: [] - }; - const basematerialNodes = basematerialsNode.querySelectorAll("base"); - for (let i = 0; i < basematerialNodes.length; i++) { - const basematerialNode = basematerialNodes[i]; - const basematerialData = parseBasematerialNode(basematerialNode); - basematerialData.index = i; - basematerialsData.basematerials.push(basematerialData); - } - return basematerialsData; - } - function parseTexture2DNode(texture2DNode) { - const texture2dData = { - id: texture2DNode.getAttribute("id"), - // required - path: texture2DNode.getAttribute("path"), - // required - contenttype: texture2DNode.getAttribute("contenttype"), - // required - tilestyleu: texture2DNode.getAttribute("tilestyleu"), - tilestylev: texture2DNode.getAttribute("tilestylev"), - filter: texture2DNode.getAttribute("filter") - }; - return texture2dData; - } - function parseTextures2DGroupNode(texture2DGroupNode) { - const texture2DGroupData = { - id: texture2DGroupNode.getAttribute("id"), - // required - texid: texture2DGroupNode.getAttribute("texid"), - // required - displaypropertiesid: texture2DGroupNode.getAttribute("displaypropertiesid") - }; - const tex2coordNodes = texture2DGroupNode.querySelectorAll("tex2coord"); - const uvs = []; - for (let i = 0; i < tex2coordNodes.length; i++) { - const tex2coordNode = tex2coordNodes[i]; - const u = tex2coordNode.getAttribute("u"); - const v = tex2coordNode.getAttribute("v"); - uvs.push(parseFloat(u), parseFloat(v)); - } - texture2DGroupData["uvs"] = new Float32Array(uvs); - return texture2DGroupData; - } - function parseColorGroupNode(colorGroupNode) { - const colorGroupData = { - id: colorGroupNode.getAttribute("id"), - // required - displaypropertiesid: colorGroupNode.getAttribute("displaypropertiesid") - }; - const colorNodes = colorGroupNode.querySelectorAll("color"); - const colors = []; - const colorObject = new Color(); - for (let i = 0; i < colorNodes.length; i++) { - const colorNode = colorNodes[i]; - const color = colorNode.getAttribute("color"); - colorObject.setStyle(color.substring(0, 7), COLOR_SPACE_3MF); - colors.push(colorObject.r, colorObject.g, colorObject.b); - } - colorGroupData["colors"] = new Float32Array(colors); - return colorGroupData; - } - function parseMetallicDisplaypropertiesNode(metallicDisplaypropetiesNode) { - const metallicDisplaypropertiesData = { - id: metallicDisplaypropetiesNode.getAttribute("id") - // required - }; - const metallicNodes = metallicDisplaypropetiesNode.querySelectorAll("pbmetallic"); - const metallicData = []; - for (let i = 0; i < metallicNodes.length; i++) { - const metallicNode = metallicNodes[i]; - metallicData.push({ - name: metallicNode.getAttribute("name"), - // required - metallicness: parseFloat(metallicNode.getAttribute("metallicness")), - // required - roughness: parseFloat(metallicNode.getAttribute("roughness")) - // required - }); - } - metallicDisplaypropertiesData.data = metallicData; - return metallicDisplaypropertiesData; - } - function parseBasematerialNode(basematerialNode) { - const basematerialData = {}; - basematerialData["name"] = basematerialNode.getAttribute("name"); - basematerialData["displaycolor"] = basematerialNode.getAttribute("displaycolor"); - basematerialData["displaypropertiesid"] = basematerialNode.getAttribute("displaypropertiesid"); - return basematerialData; - } - function parseMeshNode(meshNode) { - const meshData = {}; - const vertices = []; - const vertexNodes = meshNode.querySelectorAll("vertices vertex"); - for (let i = 0; i < vertexNodes.length; i++) { - const vertexNode = vertexNodes[i]; - const x2 = vertexNode.getAttribute("x"); - const y2 = vertexNode.getAttribute("y"); - const z = vertexNode.getAttribute("z"); - vertices.push(parseFloat(x2), parseFloat(y2), parseFloat(z)); - } - meshData["vertices"] = new Float32Array(vertices); - const triangleProperties = []; - const triangles = []; - const triangleNodes = meshNode.querySelectorAll("triangles triangle"); - for (let i = 0; i < triangleNodes.length; i++) { - const triangleNode = triangleNodes[i]; - const v12 = triangleNode.getAttribute("v1"); - const v2 = triangleNode.getAttribute("v2"); - const v3 = triangleNode.getAttribute("v3"); - const p1 = triangleNode.getAttribute("p1"); - const p2 = triangleNode.getAttribute("p2"); - const p3 = triangleNode.getAttribute("p3"); - const pid = triangleNode.getAttribute("pid"); - const triangleProperty = {}; - triangleProperty["v1"] = parseInt(v12, 10); - triangleProperty["v2"] = parseInt(v2, 10); - triangleProperty["v3"] = parseInt(v3, 10); - triangles.push(triangleProperty["v1"], triangleProperty["v2"], triangleProperty["v3"]); - if (p1) { - triangleProperty["p1"] = parseInt(p1, 10); - } - if (p2) { - triangleProperty["p2"] = parseInt(p2, 10); - } - if (p3) { - triangleProperty["p3"] = parseInt(p3, 10); - } - if (pid) { - triangleProperty["pid"] = pid; - } - if (0 < Object.keys(triangleProperty).length) { - triangleProperties.push(triangleProperty); - } - } - meshData["triangleProperties"] = triangleProperties; - meshData["triangles"] = new Uint32Array(triangles); - return meshData; - } - function parseComponentsNode(componentsNode) { - const components = []; - const componentNodes = componentsNode.querySelectorAll("component"); - for (let i = 0; i < componentNodes.length; i++) { - const componentNode = componentNodes[i]; - const componentData = parseComponentNode(componentNode); - components.push(componentData); - } - return components; - } - function parseComponentNode(componentNode) { - const componentData = {}; - componentData["objectId"] = componentNode.getAttribute("objectid"); - const transform2 = componentNode.getAttribute("transform"); - if (transform2) { - componentData["transform"] = parseTransform(transform2); - } - return componentData; - } - function parseTransform(transform2) { - const t3 = []; - transform2.split(" ").forEach(function(s) { - t3.push(parseFloat(s)); - }); - const matrix3 = new Matrix4(); - matrix3.set( - t3[0], - t3[3], - t3[6], - t3[9], - t3[1], - t3[4], - t3[7], - t3[10], - t3[2], - t3[5], - t3[8], - t3[11], - 0, - 0, - 0, - 1 - ); - return matrix3; - } - function parseObjectNode(objectNode) { - const objectData = { - type: objectNode.getAttribute("type") - }; - const id = objectNode.getAttribute("id"); - if (id) { - objectData["id"] = id; - } - const pid = objectNode.getAttribute("pid"); - if (pid) { - objectData["pid"] = pid; - } - const pindex = objectNode.getAttribute("pindex"); - if (pindex) { - objectData["pindex"] = pindex; - } - const thumbnail = objectNode.getAttribute("thumbnail"); - if (thumbnail) { - objectData["thumbnail"] = thumbnail; - } - const partnumber = objectNode.getAttribute("partnumber"); - if (partnumber) { - objectData["partnumber"] = partnumber; - } - const name2 = objectNode.getAttribute("name"); - if (name2) { - objectData["name"] = name2; - } - const meshNode = objectNode.querySelector("mesh"); - if (meshNode) { - objectData["mesh"] = parseMeshNode(meshNode); - } - const componentsNode = objectNode.querySelector("components"); - if (componentsNode) { - objectData["components"] = parseComponentsNode(componentsNode); - } - return objectData; - } - function parseResourcesNode(resourcesNode) { - const resourcesData = {}; - resourcesData["basematerials"] = {}; - const basematerialsNodes = resourcesNode.querySelectorAll("basematerials"); - for (let i = 0; i < basematerialsNodes.length; i++) { - const basematerialsNode = basematerialsNodes[i]; - const basematerialsData = parseBasematerialsNode(basematerialsNode); - resourcesData["basematerials"][basematerialsData["id"]] = basematerialsData; - } - resourcesData["texture2d"] = {}; - const textures2DNodes = resourcesNode.querySelectorAll("texture2d"); - for (let i = 0; i < textures2DNodes.length; i++) { - const textures2DNode = textures2DNodes[i]; - const texture2DData = parseTexture2DNode(textures2DNode); - resourcesData["texture2d"][texture2DData["id"]] = texture2DData; - } - resourcesData["colorgroup"] = {}; - const colorGroupNodes = resourcesNode.querySelectorAll("colorgroup"); - for (let i = 0; i < colorGroupNodes.length; i++) { - const colorGroupNode = colorGroupNodes[i]; - const colorGroupData = parseColorGroupNode(colorGroupNode); - resourcesData["colorgroup"][colorGroupData["id"]] = colorGroupData; - } - resourcesData["pbmetallicdisplayproperties"] = {}; - const pbmetallicdisplaypropertiesNodes = resourcesNode.querySelectorAll("pbmetallicdisplayproperties"); - for (let i = 0; i < pbmetallicdisplaypropertiesNodes.length; i++) { - const pbmetallicdisplaypropertiesNode = pbmetallicdisplaypropertiesNodes[i]; - const pbmetallicdisplaypropertiesData = parseMetallicDisplaypropertiesNode(pbmetallicdisplaypropertiesNode); - resourcesData["pbmetallicdisplayproperties"][pbmetallicdisplaypropertiesData["id"]] = pbmetallicdisplaypropertiesData; - } - resourcesData["texture2dgroup"] = {}; - const textures2DGroupNodes = resourcesNode.querySelectorAll("texture2dgroup"); - for (let i = 0; i < textures2DGroupNodes.length; i++) { - const textures2DGroupNode = textures2DGroupNodes[i]; - const textures2DGroupData = parseTextures2DGroupNode(textures2DGroupNode); - resourcesData["texture2dgroup"][textures2DGroupData["id"]] = textures2DGroupData; - } - resourcesData["object"] = {}; - const objectNodes = resourcesNode.querySelectorAll("object"); - for (let i = 0; i < objectNodes.length; i++) { - const objectNode = objectNodes[i]; - const objectData = parseObjectNode(objectNode); - resourcesData["object"][objectData["id"]] = objectData; - } - return resourcesData; - } - function parseBuildNode(buildNode) { - const buildData = []; - const itemNodes = buildNode.querySelectorAll("item"); - for (let i = 0; i < itemNodes.length; i++) { - const itemNode = itemNodes[i]; - const buildItem = { - objectId: itemNode.getAttribute("objectid") - }; - const transform2 = itemNode.getAttribute("transform"); - if (transform2) { - buildItem["transform"] = parseTransform(transform2); - } - buildData.push(buildItem); - } - return buildData; - } - function parseModelNode(modelNode) { - const modelData = { unit: modelNode.getAttribute("unit") || "millimeter" }; - const metadataNodes = modelNode.querySelectorAll("metadata"); - if (metadataNodes) { - modelData["metadata"] = parseMetadataNodes(metadataNodes); - } - const resourcesNode = modelNode.querySelector("resources"); - if (resourcesNode) { - modelData["resources"] = parseResourcesNode(resourcesNode); - } - const buildNode = modelNode.querySelector("build"); - if (buildNode) { - modelData["build"] = parseBuildNode(buildNode); - } - return modelData; - } - function buildTexture(texture2dgroup, objects2, modelData, textureData) { - const texid = texture2dgroup.texid; - const texture2ds = modelData.resources.texture2d; - const texture2d = texture2ds[texid]; - if (texture2d) { - const data3 = textureData[texture2d.path]; - const type = texture2d.contenttype; - const blob = new Blob([data3], { type }); - const sourceURI = URL.createObjectURL(blob); - const texture = textureLoader.load(sourceURI, function() { - URL.revokeObjectURL(sourceURI); - }); - texture.colorSpace = COLOR_SPACE_3MF; - switch (texture2d.tilestyleu) { - case "wrap": - texture.wrapS = RepeatWrapping; - break; - case "mirror": - texture.wrapS = MirroredRepeatWrapping; - break; - case "none": - case "clamp": - texture.wrapS = ClampToEdgeWrapping; - break; - default: - texture.wrapS = RepeatWrapping; - } - switch (texture2d.tilestylev) { - case "wrap": - texture.wrapT = RepeatWrapping; - break; - case "mirror": - texture.wrapT = MirroredRepeatWrapping; - break; - case "none": - case "clamp": - texture.wrapT = ClampToEdgeWrapping; - break; - default: - texture.wrapT = RepeatWrapping; - } - switch (texture2d.filter) { - case "auto": - texture.magFilter = LinearFilter; - texture.minFilter = LinearMipmapLinearFilter; - break; - case "linear": - texture.magFilter = LinearFilter; - texture.minFilter = LinearFilter; - break; - case "nearest": - texture.magFilter = NearestFilter; - texture.minFilter = NearestFilter; - break; - default: - texture.magFilter = LinearFilter; - texture.minFilter = LinearMipmapLinearFilter; - } - return texture; - } else { - return null; - } - } - function buildBasematerialsMeshes(basematerials, triangleProperties, meshData, objects2, modelData, textureData, objectData) { - const objectPindex = objectData.pindex; - const materialMap = {}; - for (let i = 0, l2 = triangleProperties.length; i < l2; i++) { - const triangleProperty = triangleProperties[i]; - const pindex = triangleProperty.p1 !== void 0 ? triangleProperty.p1 : objectPindex; - if (materialMap[pindex] === void 0) materialMap[pindex] = []; - materialMap[pindex].push(triangleProperty); - } - const keys2 = Object.keys(materialMap); - const meshes = []; - for (let i = 0, l2 = keys2.length; i < l2; i++) { - const materialIndex = keys2[i]; - const trianglePropertiesProps = materialMap[materialIndex]; - const basematerialData = basematerials.basematerials[materialIndex]; - const material = getBuild(basematerialData, objects2, modelData, textureData, objectData, buildBasematerial); - const geometry = new BufferGeometry(); - const positionData = []; - const vertices = meshData.vertices; - for (let j = 0, jl = trianglePropertiesProps.length; j < jl; j++) { - const triangleProperty = trianglePropertiesProps[j]; - positionData.push(vertices[triangleProperty.v1 * 3 + 0]); - positionData.push(vertices[triangleProperty.v1 * 3 + 1]); - positionData.push(vertices[triangleProperty.v1 * 3 + 2]); - positionData.push(vertices[triangleProperty.v2 * 3 + 0]); - positionData.push(vertices[triangleProperty.v2 * 3 + 1]); - positionData.push(vertices[triangleProperty.v2 * 3 + 2]); - positionData.push(vertices[triangleProperty.v3 * 3 + 0]); - positionData.push(vertices[triangleProperty.v3 * 3 + 1]); - positionData.push(vertices[triangleProperty.v3 * 3 + 2]); - } - geometry.setAttribute("position", new Float32BufferAttribute(positionData, 3)); - const mesh = new Mesh(geometry, material); - meshes.push(mesh); - } - return meshes; - } - function buildTexturedMesh(texture2dgroup, triangleProperties, meshData, objects2, modelData, textureData, objectData) { - const geometry = new BufferGeometry(); - const positionData = []; - const uvData = []; - const vertices = meshData.vertices; - const uvs = texture2dgroup.uvs; - for (let i = 0, l2 = triangleProperties.length; i < l2; i++) { - const triangleProperty = triangleProperties[i]; - positionData.push(vertices[triangleProperty.v1 * 3 + 0]); - positionData.push(vertices[triangleProperty.v1 * 3 + 1]); - positionData.push(vertices[triangleProperty.v1 * 3 + 2]); - positionData.push(vertices[triangleProperty.v2 * 3 + 0]); - positionData.push(vertices[triangleProperty.v2 * 3 + 1]); - positionData.push(vertices[triangleProperty.v2 * 3 + 2]); - positionData.push(vertices[triangleProperty.v3 * 3 + 0]); - positionData.push(vertices[triangleProperty.v3 * 3 + 1]); - positionData.push(vertices[triangleProperty.v3 * 3 + 2]); - uvData.push(uvs[triangleProperty.p1 * 2 + 0]); - uvData.push(uvs[triangleProperty.p1 * 2 + 1]); - uvData.push(uvs[triangleProperty.p2 * 2 + 0]); - uvData.push(uvs[triangleProperty.p2 * 2 + 1]); - uvData.push(uvs[triangleProperty.p3 * 2 + 0]); - uvData.push(uvs[triangleProperty.p3 * 2 + 1]); - } - geometry.setAttribute("position", new Float32BufferAttribute(positionData, 3)); - geometry.setAttribute("uv", new Float32BufferAttribute(uvData, 2)); - const texture = getBuild(texture2dgroup, objects2, modelData, textureData, objectData, buildTexture); - const material = new MeshPhongMaterial({ map: texture, flatShading: true }); - const mesh = new Mesh(geometry, material); - return mesh; - } - function buildVertexColorMesh(colorgroup, triangleProperties, meshData, objectData) { - const geometry = new BufferGeometry(); - const positionData = []; - const colorData = []; - const vertices = meshData.vertices; - const colors = colorgroup.colors; - for (let i = 0, l2 = triangleProperties.length; i < l2; i++) { - const triangleProperty = triangleProperties[i]; - const v12 = triangleProperty.v1; - const v2 = triangleProperty.v2; - const v3 = triangleProperty.v3; - positionData.push(vertices[v12 * 3 + 0]); - positionData.push(vertices[v12 * 3 + 1]); - positionData.push(vertices[v12 * 3 + 2]); - positionData.push(vertices[v2 * 3 + 0]); - positionData.push(vertices[v2 * 3 + 1]); - positionData.push(vertices[v2 * 3 + 2]); - positionData.push(vertices[v3 * 3 + 0]); - positionData.push(vertices[v3 * 3 + 1]); - positionData.push(vertices[v3 * 3 + 2]); - const p1 = triangleProperty.p1 !== void 0 ? triangleProperty.p1 : objectData.pindex; - const p2 = triangleProperty.p2 !== void 0 ? triangleProperty.p2 : p1; - const p3 = triangleProperty.p3 !== void 0 ? triangleProperty.p3 : p1; - colorData.push(colors[p1 * 3 + 0]); - colorData.push(colors[p1 * 3 + 1]); - colorData.push(colors[p1 * 3 + 2]); - colorData.push(colors[p2 * 3 + 0]); - colorData.push(colors[p2 * 3 + 1]); - colorData.push(colors[p2 * 3 + 2]); - colorData.push(colors[p3 * 3 + 0]); - colorData.push(colors[p3 * 3 + 1]); - colorData.push(colors[p3 * 3 + 2]); - } - geometry.setAttribute("position", new Float32BufferAttribute(positionData, 3)); - geometry.setAttribute("color", new Float32BufferAttribute(colorData, 3)); - const material = new MeshPhongMaterial({ vertexColors: true, flatShading: true }); - const mesh = new Mesh(geometry, material); - return mesh; - } - function buildDefaultMesh(meshData) { - const geometry = new BufferGeometry(); - geometry.setIndex(new BufferAttribute(meshData["triangles"], 1)); - geometry.setAttribute("position", new BufferAttribute(meshData["vertices"], 3)); - const material = new MeshPhongMaterial({ - name: Loader.DEFAULT_MATERIAL_NAME, - color: 16777215, - flatShading: true - }); - const mesh = new Mesh(geometry, material); - return mesh; - } - function buildMeshes(resourceMap, meshData, objects2, modelData, textureData, objectData) { - const keys2 = Object.keys(resourceMap); - const meshes = []; - for (let i = 0, il = keys2.length; i < il; i++) { - const resourceId = keys2[i]; - const triangleProperties = resourceMap[resourceId]; - const resourceType = getResourceType(resourceId, modelData); - switch (resourceType) { - case "material": - const basematerials = modelData.resources.basematerials[resourceId]; - const newMeshes = buildBasematerialsMeshes(basematerials, triangleProperties, meshData, objects2, modelData, textureData, objectData); - for (let j = 0, jl = newMeshes.length; j < jl; j++) { - meshes.push(newMeshes[j]); - } - break; - case "texture": - const texture2dgroup = modelData.resources.texture2dgroup[resourceId]; - meshes.push(buildTexturedMesh(texture2dgroup, triangleProperties, meshData, objects2, modelData, textureData, objectData)); - break; - case "vertexColors": - const colorgroup = modelData.resources.colorgroup[resourceId]; - meshes.push(buildVertexColorMesh(colorgroup, triangleProperties, meshData, objectData)); - break; - case "default": - meshes.push(buildDefaultMesh(meshData)); - break; - default: - console.error("THREE.3MFLoader: Unsupported resource type."); - } - } - if (objectData.name) { - for (let i = 0; i < meshes.length; i++) { - meshes[i].name = objectData.name; - } - } - return meshes; - } - function getResourceType(pid, modelData) { - if (modelData.resources.texture2dgroup[pid] !== void 0) { - return "texture"; - } else if (modelData.resources.basematerials[pid] !== void 0) { - return "material"; - } else if (modelData.resources.colorgroup[pid] !== void 0) { - return "vertexColors"; - } else if (pid === "default") { - return "default"; - } else { - return void 0; - } - } - function analyzeObject(meshData, objectData) { - const resourceMap = {}; - const triangleProperties = meshData["triangleProperties"]; - const objectPid = objectData.pid; - for (let i = 0, l2 = triangleProperties.length; i < l2; i++) { - const triangleProperty = triangleProperties[i]; - let pid = triangleProperty.pid !== void 0 ? triangleProperty.pid : objectPid; - if (pid === void 0) pid = "default"; - if (resourceMap[pid] === void 0) resourceMap[pid] = []; - resourceMap[pid].push(triangleProperty); - } - return resourceMap; - } - function buildGroup(meshData, objects2, modelData, textureData, objectData) { - const group = new Group(); - const resourceMap = analyzeObject(meshData, objectData); - const meshes = buildMeshes(resourceMap, meshData, objects2, modelData, textureData, objectData); - for (let i = 0, l2 = meshes.length; i < l2; i++) { - group.add(meshes[i]); - } - return group; - } - function applyExtensions(extensions, meshData, modelXml) { - if (!extensions) { - return; - } - const availableExtensions = []; - const keys2 = Object.keys(extensions); - for (let i = 0; i < keys2.length; i++) { - const ns = keys2[i]; - for (let j = 0; j < scope.availableExtensions.length; j++) { - const extension = scope.availableExtensions[j]; - if (extension.ns === ns) { - availableExtensions.push(extension); - } - } - } - for (let i = 0; i < availableExtensions.length; i++) { - const extension = availableExtensions[i]; - extension.apply(modelXml, extensions[extension["ns"]], meshData); - } - } - function getBuild(data3, objects2, modelData, textureData, objectData, builder) { - if (data3.build !== void 0) return data3.build; - data3.build = builder(data3, objects2, modelData, textureData, objectData); - return data3.build; - } - function buildBasematerial(materialData, objects2, modelData) { - let material; - const displaypropertiesid = materialData.displaypropertiesid; - const pbmetallicdisplayproperties = modelData.resources.pbmetallicdisplayproperties; - if (displaypropertiesid !== null && pbmetallicdisplayproperties[displaypropertiesid] !== void 0) { - const pbmetallicdisplayproperty = pbmetallicdisplayproperties[displaypropertiesid]; - const metallicData = pbmetallicdisplayproperty.data[materialData.index]; - material = new MeshStandardMaterial({ flatShading: true, roughness: metallicData.roughness, metalness: metallicData.metallicness }); - } else { - material = new MeshPhongMaterial({ flatShading: true }); - } - material.name = materialData.name; - const displaycolor = materialData.displaycolor; - const color = displaycolor.substring(0, 7); - material.color.setStyle(color, COLOR_SPACE_3MF); - if (displaycolor.length === 9) { - material.opacity = parseInt(displaycolor.charAt(7) + displaycolor.charAt(8), 16) / 255; - } - return material; - } - function buildComposite(compositeData, objects2, modelData, textureData) { - const composite = new Group(); - for (let j = 0; j < compositeData.length; j++) { - const component = compositeData[j]; - let build2 = objects2[component.objectId]; - if (build2 === void 0) { - buildObject(component.objectId, objects2, modelData, textureData); - build2 = objects2[component.objectId]; - } - const object3D = build2.clone(); - const transform2 = component.transform; - if (transform2) { - object3D.applyMatrix4(transform2); - } - composite.add(object3D); - } - return composite; - } - function buildObject(objectId, objects2, modelData, textureData) { - const objectData = modelData["resources"]["object"][objectId]; - if (objectData["mesh"]) { - const meshData = objectData["mesh"]; - const extensions = modelData["extensions"]; - const modelXml = modelData["xml"]; - applyExtensions(extensions, meshData, modelXml); - objects2[objectData.id] = getBuild(meshData, objects2, modelData, textureData, objectData, buildGroup); - } else { - const compositeData = objectData["components"]; - objects2[objectData.id] = getBuild(compositeData, objects2, modelData, textureData, objectData, buildComposite); - } - if (objectData.name) { - objects2[objectData.id].name = objectData.name; - } - } - function buildObjects(data3mf2) { - const modelsData = data3mf2.model; - const modelRels = data3mf2.modelRels; - const objects2 = {}; - const modelsKeys = Object.keys(modelsData); - const textureData = {}; - if (modelRels) { - for (let i = 0, l2 = modelRels.length; i < l2; i++) { - const modelRel = modelRels[i]; - const textureKey = modelRel.target.substring(1); - if (data3mf2.texture[textureKey]) { - textureData[modelRel.target] = data3mf2.texture[textureKey]; - } - } - } - for (let i = 0; i < modelsKeys.length; i++) { - const modelsKey = modelsKeys[i]; - const modelData = modelsData[modelsKey]; - const objectIds = Object.keys(modelData["resources"]["object"]); - for (let j = 0; j < objectIds.length; j++) { - const objectId = objectIds[j]; - buildObject(objectId, objects2, modelData, textureData); - } - } - return objects2; - } - function fetch3DModelPart(rels) { - for (let i = 0; i < rels.length; i++) { - const rel = rels[i]; - const extension = rel.target.split(".").pop(); - if (extension.toLowerCase() === "model") return rel; - } - } - function build(objects2, data3mf2) { - const group = new Group(); - const relationship = fetch3DModelPart(data3mf2["rels"]); - const buildData = data3mf2.model[relationship["target"].substring(1)]["build"]; - for (let i = 0; i < buildData.length; i++) { - const buildItem = buildData[i]; - const object3D = objects2[buildItem["objectId"]].clone(); - const transform2 = buildItem["transform"]; - if (transform2) { - object3D.applyMatrix4(transform2); - } - group.add(object3D); - } - return group; - } - const data3mf = loadDocument(data2); - const objects = buildObjects(data3mf); - return build(objects, data3mf); - } - addExtension(extension) { - this.availableExtensions.push(extension); - } -}; - -// node_modules/three/examples/jsm/loaders/AMFLoader.js -var AMFLoader = class extends Loader { - constructor(manager) { - super(manager); - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(scope.manager); - loader.setPath(scope.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(scope.requestHeader); - loader.setWithCredentials(scope.withCredentials); - loader.load(url, function(text2) { - try { - onLoad(scope.parse(text2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(data2) { - function loadDocument(data3) { - let view = new DataView(data3); - const magic = String.fromCharCode(view.getUint8(0), view.getUint8(1)); - if (magic === "PK") { - let zip = null; - let file = null; - console.log("THREE.AMFLoader: Loading Zip"); - try { - zip = unzipSync(new Uint8Array(data3)); - } catch (e) { - if (e instanceof ReferenceError) { - console.log("THREE.AMFLoader: fflate missing and file is compressed."); - return null; - } - } - for (file in zip) { - if (file.toLowerCase().slice(-4) === ".amf") { - break; - } - } - console.log("THREE.AMFLoader: Trying to load file asset: " + file); - view = new DataView(zip[file].buffer); - } - const fileText = new TextDecoder().decode(view); - const xmlData2 = new DOMParser().parseFromString(fileText, "application/xml"); - if (xmlData2.documentElement.nodeName.toLowerCase() !== "amf") { - console.log("THREE.AMFLoader: Error loading AMF - no AMF document found."); - return null; - } - return xmlData2; - } - function loadDocumentScale(node) { - let scale2 = 1; - let unit = "millimeter"; - if (node.documentElement.attributes.unit !== void 0) { - unit = node.documentElement.attributes.unit.value.toLowerCase(); - } - const scaleUnits = { - millimeter: 1, - inch: 25.4, - feet: 304.8, - meter: 1e3, - micron: 1e-3 - }; - if (scaleUnits[unit] !== void 0) { - scale2 = scaleUnits[unit]; - } - console.log("THREE.AMFLoader: Unit scale: " + scale2); - return scale2; - } - function loadMaterials(node) { - let matName = "AMF Material"; - const matId = node.attributes.id.textContent; - let color = { r: 1, g: 1, b: 1, a: 1 }; - let loadedMaterial = null; - for (let i2 = 0; i2 < node.childNodes.length; i2++) { - const matChildEl = node.childNodes[i2]; - if (matChildEl.nodeName === "metadata" && matChildEl.attributes.type !== void 0) { - if (matChildEl.attributes.type.value === "name") { - matName = matChildEl.textContent; - } - } else if (matChildEl.nodeName === "color") { - color = loadColor(matChildEl); - } - } - loadedMaterial = new MeshPhongMaterial({ - flatShading: true, - color: new Color(color.r, color.g, color.b), - name: matName - }); - if (color.a !== 1) { - loadedMaterial.transparent = true; - loadedMaterial.opacity = color.a; - } - return { id: matId, material: loadedMaterial }; - } - function loadColor(node) { - const color = { r: 1, g: 1, b: 1, a: 1 }; - for (let i2 = 0; i2 < node.childNodes.length; i2++) { - const matColor = node.childNodes[i2]; - if (matColor.nodeName === "r") { - color.r = matColor.textContent; - } else if (matColor.nodeName === "g") { - color.g = matColor.textContent; - } else if (matColor.nodeName === "b") { - color.b = matColor.textContent; - } else if (matColor.nodeName === "a") { - color.a = matColor.textContent; - } - } - return color; - } - function loadMeshVolume(node) { - const volume = { name: "", triangles: [], materialid: null }; - let currVolumeNode = node.firstElementChild; - if (node.attributes.materialid !== void 0) { - volume.materialId = node.attributes.materialid.nodeValue; - } - while (currVolumeNode) { - if (currVolumeNode.nodeName === "metadata") { - if (currVolumeNode.attributes.type !== void 0) { - if (currVolumeNode.attributes.type.value === "name") { - volume.name = currVolumeNode.textContent; - } - } - } else if (currVolumeNode.nodeName === "triangle") { - const v12 = currVolumeNode.getElementsByTagName("v1")[0].textContent; - const v2 = currVolumeNode.getElementsByTagName("v2")[0].textContent; - const v3 = currVolumeNode.getElementsByTagName("v3")[0].textContent; - volume.triangles.push(v12, v2, v3); - } - currVolumeNode = currVolumeNode.nextElementSibling; - } - return volume; - } - function loadMeshVertices(node) { - const vertArray = []; - const normalArray = []; - let currVerticesNode = node.firstElementChild; - while (currVerticesNode) { - if (currVerticesNode.nodeName === "vertex") { - let vNode = currVerticesNode.firstElementChild; - while (vNode) { - if (vNode.nodeName === "coordinates") { - const x2 = vNode.getElementsByTagName("x")[0].textContent; - const y2 = vNode.getElementsByTagName("y")[0].textContent; - const z = vNode.getElementsByTagName("z")[0].textContent; - vertArray.push(x2, y2, z); - } else if (vNode.nodeName === "normal") { - const nx = vNode.getElementsByTagName("nx")[0].textContent; - const ny = vNode.getElementsByTagName("ny")[0].textContent; - const nz = vNode.getElementsByTagName("nz")[0].textContent; - normalArray.push(nx, ny, nz); - } - vNode = vNode.nextElementSibling; - } - } - currVerticesNode = currVerticesNode.nextElementSibling; - } - return { "vertices": vertArray, "normals": normalArray }; - } - function loadObject(node) { - const objId = node.attributes.id.textContent; - const loadedObject = { name: "amfobject", meshes: [] }; - let currColor = null; - let currObjNode = node.firstElementChild; - while (currObjNode) { - if (currObjNode.nodeName === "metadata") { - if (currObjNode.attributes.type !== void 0) { - if (currObjNode.attributes.type.value === "name") { - loadedObject.name = currObjNode.textContent; - } - } - } else if (currObjNode.nodeName === "color") { - currColor = loadColor(currObjNode); - } else if (currObjNode.nodeName === "mesh") { - let currMeshNode = currObjNode.firstElementChild; - const mesh = { vertices: [], normals: [], volumes: [], color: currColor }; - while (currMeshNode) { - if (currMeshNode.nodeName === "vertices") { - const loadedVertices = loadMeshVertices(currMeshNode); - mesh.normals = mesh.normals.concat(loadedVertices.normals); - mesh.vertices = mesh.vertices.concat(loadedVertices.vertices); - } else if (currMeshNode.nodeName === "volume") { - mesh.volumes.push(loadMeshVolume(currMeshNode)); - } - currMeshNode = currMeshNode.nextElementSibling; - } - loadedObject.meshes.push(mesh); - } - currObjNode = currObjNode.nextElementSibling; - } - return { "id": objId, "obj": loadedObject }; - } - const xmlData = loadDocument(data2); - let amfName = ""; - let amfAuthor = ""; - const amfScale = loadDocumentScale(xmlData); - const amfMaterials = {}; - const amfObjects = {}; - const childNodes = xmlData.documentElement.childNodes; - let i, j; - for (i = 0; i < childNodes.length; i++) { - const child = childNodes[i]; - if (child.nodeName === "metadata") { - if (child.attributes.type !== void 0) { - if (child.attributes.type.value === "name") { - amfName = child.textContent; - } else if (child.attributes.type.value === "author") { - amfAuthor = child.textContent; - } - } - } else if (child.nodeName === "material") { - const loadedMaterial = loadMaterials(child); - amfMaterials[loadedMaterial.id] = loadedMaterial.material; - } else if (child.nodeName === "object") { - const loadedObject = loadObject(child); - amfObjects[loadedObject.id] = loadedObject.obj; - } - } - const sceneObject = new Group(); - const defaultMaterial = new MeshPhongMaterial({ - name: Loader.DEFAULT_MATERIAL_NAME, - color: 11184895, - flatShading: true - }); - sceneObject.name = amfName; - sceneObject.userData.author = amfAuthor; - sceneObject.userData.loader = "AMF"; - for (const id in amfObjects) { - const part = amfObjects[id]; - const meshes = part.meshes; - const newObject = new Group(); - newObject.name = part.name || ""; - for (i = 0; i < meshes.length; i++) { - let objDefaultMaterial = defaultMaterial; - const mesh = meshes[i]; - const vertices = new Float32BufferAttribute(mesh.vertices, 3); - let normals = null; - if (mesh.normals.length) { - normals = new Float32BufferAttribute(mesh.normals, 3); - } - if (mesh.color) { - const color = mesh.color; - objDefaultMaterial = defaultMaterial.clone(); - objDefaultMaterial.color = new Color(color.r, color.g, color.b); - if (color.a !== 1) { - objDefaultMaterial.transparent = true; - objDefaultMaterial.opacity = color.a; - } - } - const volumes = mesh.volumes; - for (j = 0; j < volumes.length; j++) { - const volume = volumes[j]; - const newGeometry = new BufferGeometry(); - let material = objDefaultMaterial; - newGeometry.setIndex(volume.triangles); - newGeometry.setAttribute("position", vertices.clone()); - if (normals) { - newGeometry.setAttribute("normal", normals.clone()); - } - if (amfMaterials[volume.materialId] !== void 0) { - material = amfMaterials[volume.materialId]; - } - newGeometry.scale(amfScale, amfScale, amfScale); - newObject.add(new Mesh(newGeometry, material.clone())); - } - } - sceneObject.add(newObject); - } - return sceneObject; - } -}; - -// node_modules/three/examples/jsm/loaders/BVHLoader.js -var BVHLoader = class extends Loader { - constructor(manager) { - super(manager); - this.animateBonePositions = true; - this.animateBoneRotations = true; - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(scope.manager); - loader.setPath(scope.path); - loader.setRequestHeader(scope.requestHeader); - loader.setWithCredentials(scope.withCredentials); - loader.load(url, function(text2) { - try { - onLoad(scope.parse(text2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(text2) { - function readBvh(lines2) { - if (nextLine(lines2) !== "HIERARCHY") { - console.error("THREE.BVHLoader: HIERARCHY expected."); - } - const list = []; - const root = readNode(lines2, nextLine(lines2), list); - if (nextLine(lines2) !== "MOTION") { - console.error("THREE.BVHLoader: MOTION expected."); - } - let tokens = nextLine(lines2).split(/[\s]+/); - const numFrames = parseInt(tokens[1]); - if (isNaN(numFrames)) { - console.error("THREE.BVHLoader: Failed to read number of frames."); - } - tokens = nextLine(lines2).split(/[\s]+/); - const frameTime = parseFloat(tokens[2]); - if (isNaN(frameTime)) { - console.error("THREE.BVHLoader: Failed to read frame time."); - } - for (let i = 0; i < numFrames; i++) { - tokens = nextLine(lines2).split(/[\s]+/); - readFrameData(tokens, i * frameTime, root); - } - return list; - } - function readFrameData(data2, frameTime, bone) { - if (bone.type === "ENDSITE") return; - const keyframe = { - time: frameTime, - position: new Vector3(), - rotation: new Quaternion() - }; - bone.frames.push(keyframe); - const quat = new Quaternion(); - const vx = new Vector3(1, 0, 0); - const vy = new Vector3(0, 1, 0); - const vz = new Vector3(0, 0, 1); - for (let i = 0; i < bone.channels.length; i++) { - switch (bone.channels[i]) { - case "Xposition": - keyframe.position.x = parseFloat(data2.shift().trim()); - break; - case "Yposition": - keyframe.position.y = parseFloat(data2.shift().trim()); - break; - case "Zposition": - keyframe.position.z = parseFloat(data2.shift().trim()); - break; - case "Xrotation": - quat.setFromAxisAngle(vx, parseFloat(data2.shift().trim()) * Math.PI / 180); - keyframe.rotation.multiply(quat); - break; - case "Yrotation": - quat.setFromAxisAngle(vy, parseFloat(data2.shift().trim()) * Math.PI / 180); - keyframe.rotation.multiply(quat); - break; - case "Zrotation": - quat.setFromAxisAngle(vz, parseFloat(data2.shift().trim()) * Math.PI / 180); - keyframe.rotation.multiply(quat); - break; - default: - console.warn("THREE.BVHLoader: Invalid channel type."); - } - } - for (let i = 0; i < bone.children.length; i++) { - readFrameData(data2, frameTime, bone.children[i]); - } - } - function readNode(lines2, firstline, list) { - const node = { name: "", type: "", frames: [] }; - list.push(node); - let tokens = firstline.split(/[\s]+/); - if (tokens[0].toUpperCase() === "END" && tokens[1].toUpperCase() === "SITE") { - node.type = "ENDSITE"; - node.name = "ENDSITE"; - } else { - node.name = tokens[1]; - node.type = tokens[0].toUpperCase(); - } - if (nextLine(lines2) !== "{") { - console.error("THREE.BVHLoader: Expected opening { after type & name"); - } - tokens = nextLine(lines2).split(/[\s]+/); - if (tokens[0] !== "OFFSET") { - console.error("THREE.BVHLoader: Expected OFFSET but got: " + tokens[0]); - } - if (tokens.length !== 4) { - console.error("THREE.BVHLoader: Invalid number of values for OFFSET."); - } - const offset = new Vector3( - parseFloat(tokens[1]), - parseFloat(tokens[2]), - parseFloat(tokens[3]) - ); - if (isNaN(offset.x) || isNaN(offset.y) || isNaN(offset.z)) { - console.error("THREE.BVHLoader: Invalid values of OFFSET."); - } - node.offset = offset; - if (node.type !== "ENDSITE") { - tokens = nextLine(lines2).split(/[\s]+/); - if (tokens[0] !== "CHANNELS") { - console.error("THREE.BVHLoader: Expected CHANNELS definition."); - } - const numChannels = parseInt(tokens[1]); - node.channels = tokens.splice(2, numChannels); - node.children = []; - } - while (true) { - const line2 = nextLine(lines2); - if (line2 === "}") { - return node; - } else { - node.children.push(readNode(lines2, line2, list)); - } - } - } - function toTHREEBone(source, list) { - const bone = new Bone(); - list.push(bone); - bone.position.add(source.offset); - bone.name = source.name; - if (source.type !== "ENDSITE") { - for (let i = 0; i < source.children.length; i++) { - bone.add(toTHREEBone(source.children[i], list)); - } - } - return bone; - } - function toTHREEAnimation(bones2) { - const tracks = []; - for (let i = 0; i < bones2.length; i++) { - const bone = bones2[i]; - if (bone.type === "ENDSITE") - continue; - const times = []; - const positions = []; - const rotations = []; - for (let j = 0; j < bone.frames.length; j++) { - const frame = bone.frames[j]; - times.push(frame.time); - positions.push(frame.position.x + bone.offset.x); - positions.push(frame.position.y + bone.offset.y); - positions.push(frame.position.z + bone.offset.z); - rotations.push(frame.rotation.x); - rotations.push(frame.rotation.y); - rotations.push(frame.rotation.z); - rotations.push(frame.rotation.w); - } - if (scope.animateBonePositions) { - tracks.push(new VectorKeyframeTrack(bone.name + ".position", times, positions)); - } - if (scope.animateBoneRotations) { - tracks.push(new QuaternionKeyframeTrack(bone.name + ".quaternion", times, rotations)); - } - } - return new AnimationClip("animation", -1, tracks); - } - function nextLine(lines2) { - let line2; - while ((line2 = lines2.shift().trim()).length === 0) { - } - return line2; - } - const scope = this; - const lines = text2.split(/[\r\n]+/g); - const bones = readBvh(lines); - const threeBones = []; - toTHREEBone(bones[0], threeBones); - const threeClip = toTHREEAnimation(bones); - return { - skeleton: new Skeleton(threeBones), - clip: threeClip - }; - } -}; - -// node_modules/three/examples/jsm/loaders/TGALoader.js -var TGALoader = class extends DataTextureLoader { - constructor(manager) { - super(manager); - } - parse(buffer) { - function tgaCheckHeader(header2) { - switch (header2.image_type) { - case TGA_TYPE_INDEXED: - case TGA_TYPE_RLE_INDEXED: - if (header2.colormap_length > 256 || header2.colormap_size !== 24 || header2.colormap_type !== 1) { - throw new Error("THREE.TGALoader: Invalid type colormap data for indexed type."); - } - break; - case TGA_TYPE_RGB: - case TGA_TYPE_GREY: - case TGA_TYPE_RLE_RGB: - case TGA_TYPE_RLE_GREY: - if (header2.colormap_type) { - throw new Error("THREE.TGALoader: Invalid type colormap data for colormap type."); - } - break; - case TGA_TYPE_NO_DATA: - throw new Error("THREE.TGALoader: No data."); - default: - throw new Error("THREE.TGALoader: Invalid type " + header2.image_type); - } - if (header2.width <= 0 || header2.height <= 0) { - throw new Error("THREE.TGALoader: Invalid image size."); - } - if (header2.pixel_size !== 8 && header2.pixel_size !== 16 && header2.pixel_size !== 24 && header2.pixel_size !== 32) { - throw new Error("THREE.TGALoader: Invalid pixel size " + header2.pixel_size); - } - } - function tgaParse(use_rle2, use_pal2, header2, offset2, data2) { - let pixel_data, palettes; - const pixel_size = header2.pixel_size >> 3; - const pixel_total = header2.width * header2.height * pixel_size; - if (use_pal2) { - palettes = data2.subarray(offset2, offset2 += header2.colormap_length * (header2.colormap_size >> 3)); - } - if (use_rle2) { - pixel_data = new Uint8Array(pixel_total); - let c2, count, i; - let shift = 0; - const pixels = new Uint8Array(pixel_size); - while (shift < pixel_total) { - c2 = data2[offset2++]; - count = (c2 & 127) + 1; - if (c2 & 128) { - for (i = 0; i < pixel_size; ++i) { - pixels[i] = data2[offset2++]; - } - for (i = 0; i < count; ++i) { - pixel_data.set(pixels, shift + i * pixel_size); - } - shift += pixel_size * count; - } else { - count *= pixel_size; - for (i = 0; i < count; ++i) { - pixel_data[shift + i] = data2[offset2++]; - } - shift += count; - } - } - } else { - pixel_data = data2.subarray( - offset2, - offset2 += use_pal2 ? header2.width * header2.height : pixel_total - ); - } - return { - pixel_data, - palettes - }; - } - function tgaGetImageData8bits(imageData2, y_start, y_step, y_end, x_start, x_step, x_end, image, palettes) { - const colormap = palettes; - let color, i = 0, x2, y2; - const width2 = header.width; - for (y2 = y_start; y2 !== y_end; y2 += y_step) { - for (x2 = x_start; x2 !== x_end; x2 += x_step, i++) { - color = image[i]; - imageData2[(x2 + width2 * y2) * 4 + 3] = 255; - imageData2[(x2 + width2 * y2) * 4 + 2] = colormap[color * 3 + 0]; - imageData2[(x2 + width2 * y2) * 4 + 1] = colormap[color * 3 + 1]; - imageData2[(x2 + width2 * y2) * 4 + 0] = colormap[color * 3 + 2]; - } - } - return imageData2; - } - function tgaGetImageData16bits(imageData2, y_start, y_step, y_end, x_start, x_step, x_end, image) { - let color, i = 0, x2, y2; - const width2 = header.width; - for (y2 = y_start; y2 !== y_end; y2 += y_step) { - for (x2 = x_start; x2 !== x_end; x2 += x_step, i += 2) { - color = image[i + 0] + (image[i + 1] << 8); - imageData2[(x2 + width2 * y2) * 4 + 0] = (color & 31744) >> 7; - imageData2[(x2 + width2 * y2) * 4 + 1] = (color & 992) >> 2; - imageData2[(x2 + width2 * y2) * 4 + 2] = (color & 31) << 3; - imageData2[(x2 + width2 * y2) * 4 + 3] = color & 32768 ? 0 : 255; - } - } - return imageData2; - } - function tgaGetImageData24bits(imageData2, y_start, y_step, y_end, x_start, x_step, x_end, image) { - let i = 0, x2, y2; - const width2 = header.width; - for (y2 = y_start; y2 !== y_end; y2 += y_step) { - for (x2 = x_start; x2 !== x_end; x2 += x_step, i += 3) { - imageData2[(x2 + width2 * y2) * 4 + 3] = 255; - imageData2[(x2 + width2 * y2) * 4 + 2] = image[i + 0]; - imageData2[(x2 + width2 * y2) * 4 + 1] = image[i + 1]; - imageData2[(x2 + width2 * y2) * 4 + 0] = image[i + 2]; - } - } - return imageData2; - } - function tgaGetImageData32bits(imageData2, y_start, y_step, y_end, x_start, x_step, x_end, image) { - let i = 0, x2, y2; - const width2 = header.width; - for (y2 = y_start; y2 !== y_end; y2 += y_step) { - for (x2 = x_start; x2 !== x_end; x2 += x_step, i += 4) { - imageData2[(x2 + width2 * y2) * 4 + 2] = image[i + 0]; - imageData2[(x2 + width2 * y2) * 4 + 1] = image[i + 1]; - imageData2[(x2 + width2 * y2) * 4 + 0] = image[i + 2]; - imageData2[(x2 + width2 * y2) * 4 + 3] = image[i + 3]; - } - } - return imageData2; - } - function tgaGetImageDataGrey8bits(imageData2, y_start, y_step, y_end, x_start, x_step, x_end, image) { - let color, i = 0, x2, y2; - const width2 = header.width; - for (y2 = y_start; y2 !== y_end; y2 += y_step) { - for (x2 = x_start; x2 !== x_end; x2 += x_step, i++) { - color = image[i]; - imageData2[(x2 + width2 * y2) * 4 + 0] = color; - imageData2[(x2 + width2 * y2) * 4 + 1] = color; - imageData2[(x2 + width2 * y2) * 4 + 2] = color; - imageData2[(x2 + width2 * y2) * 4 + 3] = 255; - } - } - return imageData2; - } - function tgaGetImageDataGrey16bits(imageData2, y_start, y_step, y_end, x_start, x_step, x_end, image) { - let i = 0, x2, y2; - const width2 = header.width; - for (y2 = y_start; y2 !== y_end; y2 += y_step) { - for (x2 = x_start; x2 !== x_end; x2 += x_step, i += 2) { - imageData2[(x2 + width2 * y2) * 4 + 0] = image[i + 0]; - imageData2[(x2 + width2 * y2) * 4 + 1] = image[i + 0]; - imageData2[(x2 + width2 * y2) * 4 + 2] = image[i + 0]; - imageData2[(x2 + width2 * y2) * 4 + 3] = image[i + 1]; - } - } - return imageData2; - } - function getTgaRGBA(data2, width2, height2, image, palette) { - let x_start, y_start, x_step, y_step, x_end, y_end; - switch ((header.flags & TGA_ORIGIN_MASK) >> TGA_ORIGIN_SHIFT) { - default: - case TGA_ORIGIN_UL: - x_start = 0; - x_step = 1; - x_end = width2; - y_start = 0; - y_step = 1; - y_end = height2; - break; - case TGA_ORIGIN_BL: - x_start = 0; - x_step = 1; - x_end = width2; - y_start = height2 - 1; - y_step = -1; - y_end = -1; - break; - case TGA_ORIGIN_UR: - x_start = width2 - 1; - x_step = -1; - x_end = -1; - y_start = 0; - y_step = 1; - y_end = height2; - break; - case TGA_ORIGIN_BR: - x_start = width2 - 1; - x_step = -1; - x_end = -1; - y_start = height2 - 1; - y_step = -1; - y_end = -1; - break; - } - if (use_grey) { - switch (header.pixel_size) { - case 8: - tgaGetImageDataGrey8bits(data2, y_start, y_step, y_end, x_start, x_step, x_end, image); - break; - case 16: - tgaGetImageDataGrey16bits(data2, y_start, y_step, y_end, x_start, x_step, x_end, image); - break; - default: - throw new Error("THREE.TGALoader: Format not supported."); - break; - } - } else { - switch (header.pixel_size) { - case 8: - tgaGetImageData8bits(data2, y_start, y_step, y_end, x_start, x_step, x_end, image, palette); - break; - case 16: - tgaGetImageData16bits(data2, y_start, y_step, y_end, x_start, x_step, x_end, image); - break; - case 24: - tgaGetImageData24bits(data2, y_start, y_step, y_end, x_start, x_step, x_end, image); - break; - case 32: - tgaGetImageData32bits(data2, y_start, y_step, y_end, x_start, x_step, x_end, image); - break; - default: - throw new Error("THREE.TGALoader: Format not supported."); - break; - } - } - return data2; - } - const TGA_TYPE_NO_DATA = 0, TGA_TYPE_INDEXED = 1, TGA_TYPE_RGB = 2, TGA_TYPE_GREY = 3, TGA_TYPE_RLE_INDEXED = 9, TGA_TYPE_RLE_RGB = 10, TGA_TYPE_RLE_GREY = 11, TGA_ORIGIN_MASK = 48, TGA_ORIGIN_SHIFT = 4, TGA_ORIGIN_BL = 0, TGA_ORIGIN_BR = 1, TGA_ORIGIN_UL = 2, TGA_ORIGIN_UR = 3; - if (buffer.length < 19) throw new Error("THREE.TGALoader: Not enough data to contain header."); - let offset = 0; - const content2 = new Uint8Array(buffer), header = { - id_length: content2[offset++], - colormap_type: content2[offset++], - image_type: content2[offset++], - colormap_index: content2[offset++] | content2[offset++] << 8, - colormap_length: content2[offset++] | content2[offset++] << 8, - colormap_size: content2[offset++], - origin: [ - content2[offset++] | content2[offset++] << 8, - content2[offset++] | content2[offset++] << 8 - ], - width: content2[offset++] | content2[offset++] << 8, - height: content2[offset++] | content2[offset++] << 8, - pixel_size: content2[offset++], - flags: content2[offset++] - }; - tgaCheckHeader(header); - if (header.id_length + offset > buffer.length) { - throw new Error("THREE.TGALoader: No data."); - } - offset += header.id_length; - let use_rle = false, use_pal = false, use_grey = false; - switch (header.image_type) { - case TGA_TYPE_RLE_INDEXED: - use_rle = true; - use_pal = true; - break; - case TGA_TYPE_INDEXED: - use_pal = true; - break; - case TGA_TYPE_RLE_RGB: - use_rle = true; - break; - case TGA_TYPE_RGB: - break; - case TGA_TYPE_RLE_GREY: - use_rle = true; - use_grey = true; - break; - case TGA_TYPE_GREY: - use_grey = true; - break; - } - const imageData = new Uint8Array(header.width * header.height * 4); - const result = tgaParse(use_rle, use_pal, header, offset, content2); - getTgaRGBA(imageData, header.width, header.height, result.pixel_data, result.palettes); - return { - data: imageData, - width: header.width, - height: header.height, - flipY: true, - generateMipmaps: true, - minFilter: LinearMipmapLinearFilter - }; - } -}; - -// node_modules/three/examples/jsm/loaders/ColladaLoader.js -var ColladaLoader = class extends Loader { - load(url, onLoad, onProgress, onError) { - const scope = this; - const path = scope.path === "" ? LoaderUtils.extractUrlBase(url) : scope.path; - const loader = new FileLoader(scope.manager); - loader.setPath(scope.path); - loader.setRequestHeader(scope.requestHeader); - loader.setWithCredentials(scope.withCredentials); - loader.load(url, function(text2) { - try { - onLoad(scope.parse(text2, path)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(text2, path) { - function getElementsByTagName(xml2, name2) { - const array = []; - const childNodes = xml2.childNodes; - for (let i = 0, l2 = childNodes.length; i < l2; i++) { - const child = childNodes[i]; - if (child.nodeName === name2) { - array.push(child); - } - } - return array; - } - function parseStrings(text3) { - if (text3.length === 0) return []; - const parts = text3.trim().split(/\s+/); - const array = new Array(parts.length); - for (let i = 0, l2 = parts.length; i < l2; i++) { - array[i] = parts[i]; - } - return array; - } - function parseFloats(text3) { - if (text3.length === 0) return []; - const parts = text3.trim().split(/\s+/); - const array = new Array(parts.length); - for (let i = 0, l2 = parts.length; i < l2; i++) { - array[i] = parseFloat(parts[i]); - } - return array; - } - function parseInts(text3) { - if (text3.length === 0) return []; - const parts = text3.trim().split(/\s+/); - const array = new Array(parts.length); - for (let i = 0, l2 = parts.length; i < l2; i++) { - array[i] = parseInt(parts[i]); - } - return array; - } - function parseId(text3) { - return text3.substring(1); - } - function generateId() { - return "three_default_" + count++; - } - function isEmpty2(object) { - return Object.keys(object).length === 0; - } - function parseAsset(xml2) { - return { - unit: parseAssetUnit(getElementsByTagName(xml2, "unit")[0]), - upAxis: parseAssetUpAxis(getElementsByTagName(xml2, "up_axis")[0]) - }; - } - function parseAssetUnit(xml2) { - if (xml2 !== void 0 && xml2.hasAttribute("meter") === true) { - return parseFloat(xml2.getAttribute("meter")); - } else { - return 1; - } - } - function parseAssetUpAxis(xml2) { - return xml2 !== void 0 ? xml2.textContent : "Y_UP"; - } - function parseLibrary(xml2, libraryName, nodeName, parser) { - const library2 = getElementsByTagName(xml2, libraryName)[0]; - if (library2 !== void 0) { - const elements = getElementsByTagName(library2, nodeName); - for (let i = 0; i < elements.length; i++) { - parser(elements[i]); - } - } - } - function buildLibrary(data2, builder) { - for (const name2 in data2) { - const object = data2[name2]; - object.build = builder(data2[name2]); - } - } - function getBuild(data2, builder) { - if (data2.build !== void 0) return data2.build; - data2.build = builder(data2); - return data2.build; - } - function parseAnimation(xml2) { - const data2 = { - sources: {}, - samplers: {}, - channels: {} - }; - let hasChildren = false; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - let id; - switch (child.nodeName) { - case "source": - id = child.getAttribute("id"); - data2.sources[id] = parseSource(child); - break; - case "sampler": - id = child.getAttribute("id"); - data2.samplers[id] = parseAnimationSampler(child); - break; - case "channel": - id = child.getAttribute("target"); - data2.channels[id] = parseAnimationChannel(child); - break; - case "animation": - parseAnimation(child); - hasChildren = true; - break; - default: - console.log(child); - } - } - if (hasChildren === false) { - library.animations[xml2.getAttribute("id") || MathUtils.generateUUID()] = data2; - } - } - function parseAnimationSampler(xml2) { - const data2 = { - inputs: {} - }; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "input": - const id = parseId(child.getAttribute("source")); - const semantic = child.getAttribute("semantic"); - data2.inputs[semantic] = id; - break; - } - } - return data2; - } - function parseAnimationChannel(xml2) { - const data2 = {}; - const target = xml2.getAttribute("target"); - let parts = target.split("/"); - const id = parts.shift(); - let sid = parts.shift(); - const arraySyntax = sid.indexOf("(") !== -1; - const memberSyntax = sid.indexOf(".") !== -1; - if (memberSyntax) { - parts = sid.split("."); - sid = parts.shift(); - data2.member = parts.shift(); - } else if (arraySyntax) { - const indices = sid.split("("); - sid = indices.shift(); - for (let i = 0; i < indices.length; i++) { - indices[i] = parseInt(indices[i].replace(/\)/, "")); - } - data2.indices = indices; - } - data2.id = id; - data2.sid = sid; - data2.arraySyntax = arraySyntax; - data2.memberSyntax = memberSyntax; - data2.sampler = parseId(xml2.getAttribute("source")); - return data2; - } - function buildAnimation(data2) { - const tracks = []; - const channels = data2.channels; - const samplers = data2.samplers; - const sources = data2.sources; - for (const target in channels) { - if (channels.hasOwnProperty(target)) { - const channel = channels[target]; - const sampler = samplers[channel.sampler]; - const inputId = sampler.inputs.INPUT; - const outputId = sampler.inputs.OUTPUT; - const inputSource = sources[inputId]; - const outputSource = sources[outputId]; - const animation = buildAnimationChannel(channel, inputSource, outputSource); - createKeyframeTracks(animation, tracks); - } - } - return tracks; - } - function getAnimation(id) { - return getBuild(library.animations[id], buildAnimation); - } - function buildAnimationChannel(channel, inputSource, outputSource) { - const node = library.nodes[channel.id]; - const object3D = getNode(node.id); - const transform2 = node.transforms[channel.sid]; - const defaultMatrix = node.matrix.clone().transpose(); - let time2, stride; - let i, il, j, jl; - const data2 = {}; - switch (transform2) { - case "matrix": - for (i = 0, il = inputSource.array.length; i < il; i++) { - time2 = inputSource.array[i]; - stride = i * outputSource.stride; - if (data2[time2] === void 0) data2[time2] = {}; - if (channel.arraySyntax === true) { - const value2 = outputSource.array[stride]; - const index2 = channel.indices[0] + 4 * channel.indices[1]; - data2[time2][index2] = value2; - } else { - for (j = 0, jl = outputSource.stride; j < jl; j++) { - data2[time2][j] = outputSource.array[stride + j]; - } - } - } - break; - case "translate": - console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform2); - break; - case "rotate": - console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform2); - break; - case "scale": - console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform2); - break; - } - const keyframes = prepareAnimationData(data2, defaultMatrix); - const animation = { - name: object3D.uuid, - keyframes - }; - return animation; - } - function prepareAnimationData(data2, defaultMatrix) { - const keyframes = []; - for (const time2 in data2) { - keyframes.push({ time: parseFloat(time2), value: data2[time2] }); - } - keyframes.sort(ascending); - for (let i = 0; i < 16; i++) { - transformAnimationData(keyframes, i, defaultMatrix.elements[i]); - } - return keyframes; - function ascending(a2, b3) { - return a2.time - b3.time; - } - } - const position2 = new Vector3(); - const scale2 = new Vector3(); - const quaternion = new Quaternion(); - function createKeyframeTracks(animation, tracks) { - const keyframes = animation.keyframes; - const name2 = animation.name; - const times = []; - const positionData = []; - const quaternionData = []; - const scaleData = []; - for (let i = 0, l2 = keyframes.length; i < l2; i++) { - const keyframe = keyframes[i]; - const time2 = keyframe.time; - const value2 = keyframe.value; - matrix3.fromArray(value2).transpose(); - matrix3.decompose(position2, quaternion, scale2); - times.push(time2); - positionData.push(position2.x, position2.y, position2.z); - quaternionData.push(quaternion.x, quaternion.y, quaternion.z, quaternion.w); - scaleData.push(scale2.x, scale2.y, scale2.z); - } - if (positionData.length > 0) tracks.push(new VectorKeyframeTrack(name2 + ".position", times, positionData)); - if (quaternionData.length > 0) tracks.push(new QuaternionKeyframeTrack(name2 + ".quaternion", times, quaternionData)); - if (scaleData.length > 0) tracks.push(new VectorKeyframeTrack(name2 + ".scale", times, scaleData)); - return tracks; - } - function transformAnimationData(keyframes, property2, defaultValue) { - let keyframe; - let empty = true; - let i, l2; - for (i = 0, l2 = keyframes.length; i < l2; i++) { - keyframe = keyframes[i]; - if (keyframe.value[property2] === void 0) { - keyframe.value[property2] = null; - } else { - empty = false; - } - } - if (empty === true) { - for (i = 0, l2 = keyframes.length; i < l2; i++) { - keyframe = keyframes[i]; - keyframe.value[property2] = defaultValue; - } - } else { - createMissingKeyframes(keyframes, property2); - } - } - function createMissingKeyframes(keyframes, property2) { - let prev, next; - for (let i = 0, l2 = keyframes.length; i < l2; i++) { - const keyframe = keyframes[i]; - if (keyframe.value[property2] === null) { - prev = getPrev(keyframes, i, property2); - next = getNext(keyframes, i, property2); - if (prev === null) { - keyframe.value[property2] = next.value[property2]; - continue; - } - if (next === null) { - keyframe.value[property2] = prev.value[property2]; - continue; - } - interpolate(keyframe, prev, next, property2); - } - } - } - function getPrev(keyframes, i, property2) { - while (i >= 0) { - const keyframe = keyframes[i]; - if (keyframe.value[property2] !== null) return keyframe; - i--; - } - return null; - } - function getNext(keyframes, i, property2) { - while (i < keyframes.length) { - const keyframe = keyframes[i]; - if (keyframe.value[property2] !== null) return keyframe; - i++; - } - return null; - } - function interpolate(key2, prev, next, property2) { - if (next.time - prev.time === 0) { - key2.value[property2] = prev.value[property2]; - return; - } - key2.value[property2] = (key2.time - prev.time) * (next.value[property2] - prev.value[property2]) / (next.time - prev.time) + prev.value[property2]; - } - function parseAnimationClip(xml2) { - const data2 = { - name: xml2.getAttribute("id") || "default", - start: parseFloat(xml2.getAttribute("start") || 0), - end: parseFloat(xml2.getAttribute("end") || 0), - animations: [] - }; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "instance_animation": - data2.animations.push(parseId(child.getAttribute("url"))); - break; - } - } - library.clips[xml2.getAttribute("id")] = data2; - } - function buildAnimationClip(data2) { - const tracks = []; - const name2 = data2.name; - const duration = data2.end - data2.start || -1; - const animations2 = data2.animations; - for (let i = 0, il = animations2.length; i < il; i++) { - const animationTracks = getAnimation(animations2[i]); - for (let j = 0, jl = animationTracks.length; j < jl; j++) { - tracks.push(animationTracks[j]); - } - } - return new AnimationClip(name2, duration, tracks); - } - function getAnimationClip(id) { - return getBuild(library.clips[id], buildAnimationClip); - } - function parseController(xml2) { - const data2 = {}; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "skin": - data2.id = parseId(child.getAttribute("source")); - data2.skin = parseSkin(child); - break; - case "morph": - data2.id = parseId(child.getAttribute("source")); - console.warn("THREE.ColladaLoader: Morph target animation not supported yet."); - break; - } - } - library.controllers[xml2.getAttribute("id")] = data2; - } - function parseSkin(xml2) { - const data2 = { - sources: {} - }; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "bind_shape_matrix": - data2.bindShapeMatrix = parseFloats(child.textContent); - break; - case "source": - const id = child.getAttribute("id"); - data2.sources[id] = parseSource(child); - break; - case "joints": - data2.joints = parseJoints(child); - break; - case "vertex_weights": - data2.vertexWeights = parseVertexWeights(child); - break; - } - } - return data2; - } - function parseJoints(xml2) { - const data2 = { - inputs: {} - }; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "input": - const semantic = child.getAttribute("semantic"); - const id = parseId(child.getAttribute("source")); - data2.inputs[semantic] = id; - break; - } - } - return data2; - } - function parseVertexWeights(xml2) { - const data2 = { - inputs: {} - }; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "input": - const semantic = child.getAttribute("semantic"); - const id = parseId(child.getAttribute("source")); - const offset = parseInt(child.getAttribute("offset")); - data2.inputs[semantic] = { id, offset }; - break; - case "vcount": - data2.vcount = parseInts(child.textContent); - break; - case "v": - data2.v = parseInts(child.textContent); - break; - } - } - return data2; - } - function buildController(data2) { - const build = { - id: data2.id - }; - const geometry = library.geometries[build.id]; - if (data2.skin !== void 0) { - build.skin = buildSkin(data2.skin); - geometry.sources.skinIndices = build.skin.indices; - geometry.sources.skinWeights = build.skin.weights; - } - return build; - } - function buildSkin(data2) { - const BONE_LIMIT = 4; - const build = { - joints: [], - // this must be an array to preserve the joint order - indices: { - array: [], - stride: BONE_LIMIT - }, - weights: { - array: [], - stride: BONE_LIMIT - } - }; - const sources = data2.sources; - const vertexWeights = data2.vertexWeights; - const vcount = vertexWeights.vcount; - const v = vertexWeights.v; - const jointOffset = vertexWeights.inputs.JOINT.offset; - const weightOffset = vertexWeights.inputs.WEIGHT.offset; - const jointSource = data2.sources[data2.joints.inputs.JOINT]; - const inverseSource = data2.sources[data2.joints.inputs.INV_BIND_MATRIX]; - const weights = sources[vertexWeights.inputs.WEIGHT.id].array; - let stride = 0; - let i, j, l2; - for (i = 0, l2 = vcount.length; i < l2; i++) { - const jointCount = vcount[i]; - const vertexSkinData = []; - for (j = 0; j < jointCount; j++) { - const skinIndex = v[stride + jointOffset]; - const weightId = v[stride + weightOffset]; - const skinWeight = weights[weightId]; - vertexSkinData.push({ index: skinIndex, weight: skinWeight }); - stride += 2; - } - vertexSkinData.sort(descending); - for (j = 0; j < BONE_LIMIT; j++) { - const d = vertexSkinData[j]; - if (d !== void 0) { - build.indices.array.push(d.index); - build.weights.array.push(d.weight); - } else { - build.indices.array.push(0); - build.weights.array.push(0); - } - } - } - if (data2.bindShapeMatrix) { - build.bindMatrix = new Matrix4().fromArray(data2.bindShapeMatrix).transpose(); - } else { - build.bindMatrix = new Matrix4().identity(); - } - for (i = 0, l2 = jointSource.array.length; i < l2; i++) { - const name2 = jointSource.array[i]; - const boneInverse = new Matrix4().fromArray(inverseSource.array, i * inverseSource.stride).transpose(); - build.joints.push({ name: name2, boneInverse }); - } - return build; - function descending(a2, b3) { - return b3.weight - a2.weight; - } - } - function getController(id) { - return getBuild(library.controllers[id], buildController); - } - function parseImage(xml2) { - const data2 = { - init_from: getElementsByTagName(xml2, "init_from")[0].textContent - }; - library.images[xml2.getAttribute("id")] = data2; - } - function buildImage(data2) { - if (data2.build !== void 0) return data2.build; - return data2.init_from; - } - function getImage(id) { - const data2 = library.images[id]; - if (data2 !== void 0) { - return getBuild(data2, buildImage); - } - console.warn("THREE.ColladaLoader: Couldn't find image with ID:", id); - return null; - } - function parseEffect(xml2) { - const data2 = {}; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "profile_COMMON": - data2.profile = parseEffectProfileCOMMON(child); - break; - } - } - library.effects[xml2.getAttribute("id")] = data2; - } - function parseEffectProfileCOMMON(xml2) { - const data2 = { - surfaces: {}, - samplers: {} - }; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "newparam": - parseEffectNewparam(child, data2); - break; - case "technique": - data2.technique = parseEffectTechnique(child); - break; - case "extra": - data2.extra = parseEffectExtra(child); - break; - } - } - return data2; - } - function parseEffectNewparam(xml2, data2) { - const sid = xml2.getAttribute("sid"); - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "surface": - data2.surfaces[sid] = parseEffectSurface(child); - break; - case "sampler2D": - data2.samplers[sid] = parseEffectSampler(child); - break; - } - } - } - function parseEffectSurface(xml2) { - const data2 = {}; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "init_from": - data2.init_from = child.textContent; - break; - } - } - return data2; - } - function parseEffectSampler(xml2) { - const data2 = {}; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "source": - data2.source = child.textContent; - break; - } - } - return data2; - } - function parseEffectTechnique(xml2) { - const data2 = {}; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "constant": - case "lambert": - case "blinn": - case "phong": - data2.type = child.nodeName; - data2.parameters = parseEffectParameters(child); - break; - case "extra": - data2.extra = parseEffectExtra(child); - break; - } - } - return data2; - } - function parseEffectParameters(xml2) { - const data2 = {}; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "emission": - case "diffuse": - case "specular": - case "bump": - case "ambient": - case "shininess": - case "transparency": - data2[child.nodeName] = parseEffectParameter(child); - break; - case "transparent": - data2[child.nodeName] = { - opaque: child.hasAttribute("opaque") ? child.getAttribute("opaque") : "A_ONE", - data: parseEffectParameter(child) - }; - break; - } - } - return data2; - } - function parseEffectParameter(xml2) { - const data2 = {}; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "color": - data2[child.nodeName] = parseFloats(child.textContent); - break; - case "float": - data2[child.nodeName] = parseFloat(child.textContent); - break; - case "texture": - data2[child.nodeName] = { id: child.getAttribute("texture"), extra: parseEffectParameterTexture(child) }; - break; - } - } - return data2; - } - function parseEffectParameterTexture(xml2) { - const data2 = { - technique: {} - }; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "extra": - parseEffectParameterTextureExtra(child, data2); - break; - } - } - return data2; - } - function parseEffectParameterTextureExtra(xml2, data2) { - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "technique": - parseEffectParameterTextureExtraTechnique(child, data2); - break; - } - } - } - function parseEffectParameterTextureExtraTechnique(xml2, data2) { - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "repeatU": - case "repeatV": - case "offsetU": - case "offsetV": - data2.technique[child.nodeName] = parseFloat(child.textContent); - break; - case "wrapU": - case "wrapV": - if (child.textContent.toUpperCase() === "TRUE") { - data2.technique[child.nodeName] = 1; - } else if (child.textContent.toUpperCase() === "FALSE") { - data2.technique[child.nodeName] = 0; - } else { - data2.technique[child.nodeName] = parseInt(child.textContent); - } - break; - case "bump": - data2[child.nodeName] = parseEffectExtraTechniqueBump(child); - break; - } - } - } - function parseEffectExtra(xml2) { - const data2 = {}; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "technique": - data2.technique = parseEffectExtraTechnique(child); - break; - } - } - return data2; - } - function parseEffectExtraTechnique(xml2) { - const data2 = {}; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "double_sided": - data2[child.nodeName] = parseInt(child.textContent); - break; - case "bump": - data2[child.nodeName] = parseEffectExtraTechniqueBump(child); - break; - } - } - return data2; - } - function parseEffectExtraTechniqueBump(xml2) { - const data2 = {}; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "texture": - data2[child.nodeName] = { id: child.getAttribute("texture"), texcoord: child.getAttribute("texcoord"), extra: parseEffectParameterTexture(child) }; - break; - } - } - return data2; - } - function buildEffect(data2) { - return data2; - } - function getEffect(id) { - return getBuild(library.effects[id], buildEffect); - } - function parseMaterial(xml2) { - const data2 = { - name: xml2.getAttribute("name") - }; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "instance_effect": - data2.url = parseId(child.getAttribute("url")); - break; - } - } - library.materials[xml2.getAttribute("id")] = data2; - } - function getTextureLoader(image) { - let loader; - let extension = image.slice((image.lastIndexOf(".") - 1 >>> 0) + 2); - extension = extension.toLowerCase(); - switch (extension) { - case "tga": - loader = tgaLoader; - break; - default: - loader = textureLoader; - } - return loader; - } - function buildMaterial2(data2) { - const effect2 = getEffect(data2.url); - const technique = effect2.profile.technique; - let material; - switch (technique.type) { - case "phong": - case "blinn": - material = new MeshPhongMaterial(); - break; - case "lambert": - material = new MeshLambertMaterial(); - break; - default: - material = new MeshBasicMaterial(); - break; - } - material.name = data2.name || ""; - function getTexture(textureObject, colorSpace = null) { - const sampler = effect2.profile.samplers[textureObject.id]; - let image = null; - if (sampler !== void 0) { - const surface = effect2.profile.surfaces[sampler.source]; - image = getImage(surface.init_from); - } else { - console.warn("THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530)."); - image = getImage(textureObject.id); - } - if (image !== null) { - const loader = getTextureLoader(image); - if (loader !== void 0) { - const texture = loader.load(image); - const extra = textureObject.extra; - if (extra !== void 0 && extra.technique !== void 0 && isEmpty2(extra.technique) === false) { - const technique2 = extra.technique; - texture.wrapS = technique2.wrapU ? RepeatWrapping : ClampToEdgeWrapping; - texture.wrapT = technique2.wrapV ? RepeatWrapping : ClampToEdgeWrapping; - texture.offset.set(technique2.offsetU || 0, technique2.offsetV || 0); - texture.repeat.set(technique2.repeatU || 1, technique2.repeatV || 1); - } else { - texture.wrapS = RepeatWrapping; - texture.wrapT = RepeatWrapping; - } - if (colorSpace !== null) { - texture.colorSpace = colorSpace; - } - return texture; - } else { - console.warn("THREE.ColladaLoader: Loader for texture %s not found.", image); - return null; - } - } else { - console.warn("THREE.ColladaLoader: Couldn't create texture with ID:", textureObject.id); - return null; - } - } - const parameters = technique.parameters; - for (const key2 in parameters) { - const parameter = parameters[key2]; - switch (key2) { - case "diffuse": - if (parameter.color) material.color.fromArray(parameter.color); - if (parameter.texture) material.map = getTexture(parameter.texture, SRGBColorSpace); - break; - case "specular": - if (parameter.color && material.specular) material.specular.fromArray(parameter.color); - if (parameter.texture) material.specularMap = getTexture(parameter.texture); - break; - case "bump": - if (parameter.texture) material.normalMap = getTexture(parameter.texture); - break; - case "ambient": - if (parameter.texture) material.lightMap = getTexture(parameter.texture, SRGBColorSpace); - break; - case "shininess": - if (parameter.float && material.shininess) material.shininess = parameter.float; - break; - case "emission": - if (parameter.color && material.emissive) material.emissive.fromArray(parameter.color); - if (parameter.texture) material.emissiveMap = getTexture(parameter.texture, SRGBColorSpace); - break; - } - } - material.color.convertSRGBToLinear(); - if (material.specular) material.specular.convertSRGBToLinear(); - if (material.emissive) material.emissive.convertSRGBToLinear(); - let transparent = parameters["transparent"]; - let transparency = parameters["transparency"]; - if (transparency === void 0 && transparent) { - transparency = { - float: 1 - }; - } - if (transparent === void 0 && transparency) { - transparent = { - opaque: "A_ONE", - data: { - color: [1, 1, 1, 1] - } - }; - } - if (transparent && transparency) { - if (transparent.data.texture) { - material.transparent = true; - } else { - const color = transparent.data.color; - switch (transparent.opaque) { - case "A_ONE": - material.opacity = color[3] * transparency.float; - break; - case "RGB_ZERO": - material.opacity = 1 - color[0] * transparency.float; - break; - case "A_ZERO": - material.opacity = 1 - color[3] * transparency.float; - break; - case "RGB_ONE": - material.opacity = color[0] * transparency.float; - break; - default: - console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.', transparent.opaque); - } - if (material.opacity < 1) material.transparent = true; - } - } - if (technique.extra !== void 0 && technique.extra.technique !== void 0) { - const techniques = technique.extra.technique; - for (const k2 in techniques) { - const v = techniques[k2]; - switch (k2) { - case "double_sided": - material.side = v === 1 ? DoubleSide : FrontSide; - break; - case "bump": - material.normalMap = getTexture(v.texture); - material.normalScale = new Vector2(1, 1); - break; - } - } - } - return material; - } - function getMaterial2(id) { - return getBuild(library.materials[id], buildMaterial2); - } - function parseCamera(xml2) { - const data2 = { - name: xml2.getAttribute("name") - }; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "optics": - data2.optics = parseCameraOptics(child); - break; - } - } - library.cameras[xml2.getAttribute("id")] = data2; - } - function parseCameraOptics(xml2) { - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - switch (child.nodeName) { - case "technique_common": - return parseCameraTechnique(child); - } - } - return {}; - } - function parseCameraTechnique(xml2) { - const data2 = {}; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - switch (child.nodeName) { - case "perspective": - case "orthographic": - data2.technique = child.nodeName; - data2.parameters = parseCameraParameters(child); - break; - } - } - return data2; - } - function parseCameraParameters(xml2) { - const data2 = {}; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - switch (child.nodeName) { - case "xfov": - case "yfov": - case "xmag": - case "ymag": - case "znear": - case "zfar": - case "aspect_ratio": - data2[child.nodeName] = parseFloat(child.textContent); - break; - } - } - return data2; - } - function buildCamera2(data2) { - let camera; - switch (data2.optics.technique) { - case "perspective": - camera = new PerspectiveCamera( - data2.optics.parameters.yfov, - data2.optics.parameters.aspect_ratio, - data2.optics.parameters.znear, - data2.optics.parameters.zfar - ); - break; - case "orthographic": - let ymag = data2.optics.parameters.ymag; - let xmag = data2.optics.parameters.xmag; - const aspectRatio = data2.optics.parameters.aspect_ratio; - xmag = xmag === void 0 ? ymag * aspectRatio : xmag; - ymag = ymag === void 0 ? xmag / aspectRatio : ymag; - xmag *= 0.5; - ymag *= 0.5; - camera = new OrthographicCamera( - -xmag, - xmag, - ymag, - -ymag, - // left, right, top, bottom - data2.optics.parameters.znear, - data2.optics.parameters.zfar - ); - break; - default: - camera = new PerspectiveCamera(); - break; - } - camera.name = data2.name || ""; - return camera; - } - function getCamera(id) { - const data2 = library.cameras[id]; - if (data2 !== void 0) { - return getBuild(data2, buildCamera2); - } - console.warn("THREE.ColladaLoader: Couldn't find camera with ID:", id); - return null; - } - function parseLight(xml2) { - let data2 = {}; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "technique_common": - data2 = parseLightTechnique(child); - break; - } - } - library.lights[xml2.getAttribute("id")] = data2; - } - function parseLightTechnique(xml2) { - const data2 = {}; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "directional": - case "point": - case "spot": - case "ambient": - data2.technique = child.nodeName; - data2.parameters = parseLightParameters(child); - } - } - return data2; - } - function parseLightParameters(xml2) { - const data2 = {}; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "color": - const array = parseFloats(child.textContent); - data2.color = new Color().fromArray(array).convertSRGBToLinear(); - break; - case "falloff_angle": - data2.falloffAngle = parseFloat(child.textContent); - break; - case "quadratic_attenuation": - const f = parseFloat(child.textContent); - data2.distance = f ? Math.sqrt(1 / f) : 0; - break; - } - } - return data2; - } - function buildLight(data2) { - let light; - switch (data2.technique) { - case "directional": - light = new DirectionalLight(); - break; - case "point": - light = new PointLight(); - break; - case "spot": - light = new SpotLight(); - break; - case "ambient": - light = new AmbientLight(); - break; - } - if (data2.parameters.color) light.color.copy(data2.parameters.color); - if (data2.parameters.distance) light.distance = data2.parameters.distance; - return light; - } - function getLight(id) { - const data2 = library.lights[id]; - if (data2 !== void 0) { - return getBuild(data2, buildLight); - } - console.warn("THREE.ColladaLoader: Couldn't find light with ID:", id); - return null; - } - function parseGeometry(xml2) { - const data2 = { - name: xml2.getAttribute("name"), - sources: {}, - vertices: {}, - primitives: [] - }; - const mesh = getElementsByTagName(xml2, "mesh")[0]; - if (mesh === void 0) return; - for (let i = 0; i < mesh.childNodes.length; i++) { - const child = mesh.childNodes[i]; - if (child.nodeType !== 1) continue; - const id = child.getAttribute("id"); - switch (child.nodeName) { - case "source": - data2.sources[id] = parseSource(child); - break; - case "vertices": - data2.vertices = parseGeometryVertices(child); - break; - case "polygons": - console.warn("THREE.ColladaLoader: Unsupported primitive type: ", child.nodeName); - break; - case "lines": - case "linestrips": - case "polylist": - case "triangles": - data2.primitives.push(parseGeometryPrimitive(child)); - break; - default: - console.log(child); - } - } - library.geometries[xml2.getAttribute("id")] = data2; - } - function parseSource(xml2) { - const data2 = { - array: [], - stride: 3 - }; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "float_array": - data2.array = parseFloats(child.textContent); - break; - case "Name_array": - data2.array = parseStrings(child.textContent); - break; - case "technique_common": - const accessor = getElementsByTagName(child, "accessor")[0]; - if (accessor !== void 0) { - data2.stride = parseInt(accessor.getAttribute("stride")); - } - break; - } - } - return data2; - } - function parseGeometryVertices(xml2) { - const data2 = {}; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - data2[child.getAttribute("semantic")] = parseId(child.getAttribute("source")); - } - return data2; - } - function parseGeometryPrimitive(xml2) { - const primitive = { - type: xml2.nodeName, - material: xml2.getAttribute("material"), - count: parseInt(xml2.getAttribute("count")), - inputs: {}, - stride: 0, - hasUV: false - }; - for (let i = 0, l2 = xml2.childNodes.length; i < l2; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "input": - const id = parseId(child.getAttribute("source")); - const semantic = child.getAttribute("semantic"); - const offset = parseInt(child.getAttribute("offset")); - const set = parseInt(child.getAttribute("set")); - const inputname = set > 0 ? semantic + set : semantic; - primitive.inputs[inputname] = { id, offset }; - primitive.stride = Math.max(primitive.stride, offset + 1); - if (semantic === "TEXCOORD") primitive.hasUV = true; - break; - case "vcount": - primitive.vcount = parseInts(child.textContent); - break; - case "p": - primitive.p = parseInts(child.textContent); - break; - } - } - return primitive; - } - function groupPrimitives(primitives) { - const build = {}; - for (let i = 0; i < primitives.length; i++) { - const primitive = primitives[i]; - if (build[primitive.type] === void 0) build[primitive.type] = []; - build[primitive.type].push(primitive); - } - return build; - } - function checkUVCoordinates(primitives) { - let count2 = 0; - for (let i = 0, l2 = primitives.length; i < l2; i++) { - const primitive = primitives[i]; - if (primitive.hasUV === true) { - count2++; - } - } - if (count2 > 0 && count2 < primitives.length) { - primitives.uvsNeedsFix = true; - } - } - function buildGeometry(data2) { - const build = {}; - const sources = data2.sources; - const vertices = data2.vertices; - const primitives = data2.primitives; - if (primitives.length === 0) return {}; - const groupedPrimitives = groupPrimitives(primitives); - for (const type in groupedPrimitives) { - const primitiveType = groupedPrimitives[type]; - checkUVCoordinates(primitiveType); - build[type] = buildGeometryType(primitiveType, sources, vertices); - } - return build; - } - function buildGeometryType(primitives, sources, vertices) { - const build = {}; - const position3 = { array: [], stride: 0 }; - const normal = { array: [], stride: 0 }; - const uv = { array: [], stride: 0 }; - const uv1 = { array: [], stride: 0 }; - const color = { array: [], stride: 0 }; - const skinIndex = { array: [], stride: 4 }; - const skinWeight = { array: [], stride: 4 }; - const geometry = new BufferGeometry(); - const materialKeys = []; - let start = 0; - for (let p2 = 0; p2 < primitives.length; p2++) { - const primitive = primitives[p2]; - const inputs = primitive.inputs; - let count2 = 0; - switch (primitive.type) { - case "lines": - case "linestrips": - count2 = primitive.count * 2; - break; - case "triangles": - count2 = primitive.count * 3; - break; - case "polylist": - for (let g2 = 0; g2 < primitive.count; g2++) { - const vc = primitive.vcount[g2]; - switch (vc) { - case 3: - count2 += 3; - break; - case 4: - count2 += 6; - break; - default: - count2 += (vc - 2) * 3; - break; - } - } - break; - default: - console.warn("THREE.ColladaLoader: Unknow primitive type:", primitive.type); - } - geometry.addGroup(start, count2, p2); - start += count2; - if (primitive.material) { - materialKeys.push(primitive.material); - } - for (const name2 in inputs) { - const input = inputs[name2]; - switch (name2) { - case "VERTEX": - for (const key2 in vertices) { - const id = vertices[key2]; - switch (key2) { - case "POSITION": - const prevLength = position3.array.length; - buildGeometryData(primitive, sources[id], input.offset, position3.array); - position3.stride = sources[id].stride; - if (sources.skinWeights && sources.skinIndices) { - buildGeometryData(primitive, sources.skinIndices, input.offset, skinIndex.array); - buildGeometryData(primitive, sources.skinWeights, input.offset, skinWeight.array); - } - if (primitive.hasUV === false && primitives.uvsNeedsFix === true) { - const count3 = (position3.array.length - prevLength) / position3.stride; - for (let i = 0; i < count3; i++) { - uv.array.push(0, 0); - } - } - break; - case "NORMAL": - buildGeometryData(primitive, sources[id], input.offset, normal.array); - normal.stride = sources[id].stride; - break; - case "COLOR": - buildGeometryData(primitive, sources[id], input.offset, color.array); - color.stride = sources[id].stride; - break; - case "TEXCOORD": - buildGeometryData(primitive, sources[id], input.offset, uv.array); - uv.stride = sources[id].stride; - break; - case "TEXCOORD1": - buildGeometryData(primitive, sources[id], input.offset, uv1.array); - uv.stride = sources[id].stride; - break; - default: - console.warn('THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.', key2); - } - } - break; - case "NORMAL": - buildGeometryData(primitive, sources[input.id], input.offset, normal.array); - normal.stride = sources[input.id].stride; - break; - case "COLOR": - buildGeometryData(primitive, sources[input.id], input.offset, color.array, true); - color.stride = sources[input.id].stride; - break; - case "TEXCOORD": - buildGeometryData(primitive, sources[input.id], input.offset, uv.array); - uv.stride = sources[input.id].stride; - break; - case "TEXCOORD1": - buildGeometryData(primitive, sources[input.id], input.offset, uv1.array); - uv1.stride = sources[input.id].stride; - break; - } - } - } - if (position3.array.length > 0) geometry.setAttribute("position", new Float32BufferAttribute(position3.array, position3.stride)); - if (normal.array.length > 0) geometry.setAttribute("normal", new Float32BufferAttribute(normal.array, normal.stride)); - if (color.array.length > 0) geometry.setAttribute("color", new Float32BufferAttribute(color.array, color.stride)); - if (uv.array.length > 0) geometry.setAttribute("uv", new Float32BufferAttribute(uv.array, uv.stride)); - if (uv1.array.length > 0) geometry.setAttribute("uv1", new Float32BufferAttribute(uv1.array, uv1.stride)); - if (skinIndex.array.length > 0) geometry.setAttribute("skinIndex", new Float32BufferAttribute(skinIndex.array, skinIndex.stride)); - if (skinWeight.array.length > 0) geometry.setAttribute("skinWeight", new Float32BufferAttribute(skinWeight.array, skinWeight.stride)); - build.data = geometry; - build.type = primitives[0].type; - build.materialKeys = materialKeys; - return build; - } - function buildGeometryData(primitive, source, offset, array, isColor = false) { - const indices = primitive.p; - const stride = primitive.stride; - const vcount = primitive.vcount; - function pushVector(i) { - let index2 = indices[i + offset] * sourceStride; - const length2 = index2 + sourceStride; - for (; index2 < length2; index2++) { - array.push(sourceArray[index2]); - } - if (isColor) { - const startIndex = array.length - sourceStride - 1; - tempColor.setRGB( - array[startIndex + 0], - array[startIndex + 1], - array[startIndex + 2] - ).convertSRGBToLinear(); - array[startIndex + 0] = tempColor.r; - array[startIndex + 1] = tempColor.g; - array[startIndex + 2] = tempColor.b; - } - } - const sourceArray = source.array; - const sourceStride = source.stride; - if (primitive.vcount !== void 0) { - let index2 = 0; - for (let i = 0, l2 = vcount.length; i < l2; i++) { - const count2 = vcount[i]; - if (count2 === 4) { - const a2 = index2 + stride * 0; - const b3 = index2 + stride * 1; - const c2 = index2 + stride * 2; - const d = index2 + stride * 3; - pushVector(a2); - pushVector(b3); - pushVector(d); - pushVector(b3); - pushVector(c2); - pushVector(d); - } else if (count2 === 3) { - const a2 = index2 + stride * 0; - const b3 = index2 + stride * 1; - const c2 = index2 + stride * 2; - pushVector(a2); - pushVector(b3); - pushVector(c2); - } else if (count2 > 4) { - for (let k2 = 1, kl = count2 - 2; k2 <= kl; k2++) { - const a2 = index2 + stride * 0; - const b3 = index2 + stride * k2; - const c2 = index2 + stride * (k2 + 1); - pushVector(a2); - pushVector(b3); - pushVector(c2); - } - } - index2 += stride * count2; - } - } else { - for (let i = 0, l2 = indices.length; i < l2; i += stride) { - pushVector(i); - } - } - } - function getGeometry(id) { - return getBuild(library.geometries[id], buildGeometry); - } - function parseKinematicsModel(xml2) { - const data2 = { - name: xml2.getAttribute("name") || "", - joints: {}, - links: [] - }; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "technique_common": - parseKinematicsTechniqueCommon(child, data2); - break; - } - } - library.kinematicsModels[xml2.getAttribute("id")] = data2; - } - function buildKinematicsModel(data2) { - if (data2.build !== void 0) return data2.build; - return data2; - } - function getKinematicsModel(id) { - return getBuild(library.kinematicsModels[id], buildKinematicsModel); - } - function parseKinematicsTechniqueCommon(xml2, data2) { - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "joint": - data2.joints[child.getAttribute("sid")] = parseKinematicsJoint(child); - break; - case "link": - data2.links.push(parseKinematicsLink(child)); - break; - } - } - } - function parseKinematicsJoint(xml2) { - let data2; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "prismatic": - case "revolute": - data2 = parseKinematicsJointParameter(child); - break; - } - } - return data2; - } - function parseKinematicsJointParameter(xml2) { - const data2 = { - sid: xml2.getAttribute("sid"), - name: xml2.getAttribute("name") || "", - axis: new Vector3(), - limits: { - min: 0, - max: 0 - }, - type: xml2.nodeName, - static: false, - zeroPosition: 0, - middlePosition: 0 - }; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "axis": - const array = parseFloats(child.textContent); - data2.axis.fromArray(array); - break; - case "limits": - const max2 = child.getElementsByTagName("max")[0]; - const min = child.getElementsByTagName("min")[0]; - data2.limits.max = parseFloat(max2.textContent); - data2.limits.min = parseFloat(min.textContent); - break; - } - } - if (data2.limits.min >= data2.limits.max) { - data2.static = true; - } - data2.middlePosition = (data2.limits.min + data2.limits.max) / 2; - return data2; - } - function parseKinematicsLink(xml2) { - const data2 = { - sid: xml2.getAttribute("sid"), - name: xml2.getAttribute("name") || "", - attachments: [], - transforms: [] - }; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "attachment_full": - data2.attachments.push(parseKinematicsAttachment(child)); - break; - case "matrix": - case "translate": - case "rotate": - data2.transforms.push(parseKinematicsTransform(child)); - break; - } - } - return data2; - } - function parseKinematicsAttachment(xml2) { - const data2 = { - joint: xml2.getAttribute("joint").split("/").pop(), - transforms: [], - links: [] - }; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "link": - data2.links.push(parseKinematicsLink(child)); - break; - case "matrix": - case "translate": - case "rotate": - data2.transforms.push(parseKinematicsTransform(child)); - break; - } - } - return data2; - } - function parseKinematicsTransform(xml2) { - const data2 = { - type: xml2.nodeName - }; - const array = parseFloats(xml2.textContent); - switch (data2.type) { - case "matrix": - data2.obj = new Matrix4(); - data2.obj.fromArray(array).transpose(); - break; - case "translate": - data2.obj = new Vector3(); - data2.obj.fromArray(array); - break; - case "rotate": - data2.obj = new Vector3(); - data2.obj.fromArray(array); - data2.angle = MathUtils.degToRad(array[3]); - break; - } - return data2; - } - function parsePhysicsModel(xml2) { - const data2 = { - name: xml2.getAttribute("name") || "", - rigidBodies: {} - }; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "rigid_body": - data2.rigidBodies[child.getAttribute("name")] = {}; - parsePhysicsRigidBody(child, data2.rigidBodies[child.getAttribute("name")]); - break; - } - } - library.physicsModels[xml2.getAttribute("id")] = data2; - } - function parsePhysicsRigidBody(xml2, data2) { - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "technique_common": - parsePhysicsTechniqueCommon(child, data2); - break; - } - } - } - function parsePhysicsTechniqueCommon(xml2, data2) { - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "inertia": - data2.inertia = parseFloats(child.textContent); - break; - case "mass": - data2.mass = parseFloats(child.textContent)[0]; - break; - } - } - } - function parseKinematicsScene(xml2) { - const data2 = { - bindJointAxis: [] - }; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "bind_joint_axis": - data2.bindJointAxis.push(parseKinematicsBindJointAxis(child)); - break; - } - } - library.kinematicsScenes[parseId(xml2.getAttribute("url"))] = data2; - } - function parseKinematicsBindJointAxis(xml2) { - const data2 = { - target: xml2.getAttribute("target").split("/").pop() - }; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - switch (child.nodeName) { - case "axis": - const param = child.getElementsByTagName("param")[0]; - data2.axis = param.textContent; - const tmpJointIndex = data2.axis.split("inst_").pop().split("axis")[0]; - data2.jointIndex = tmpJointIndex.substring(0, tmpJointIndex.length - 1); - break; - } - } - return data2; - } - function buildKinematicsScene(data2) { - if (data2.build !== void 0) return data2.build; - return data2; - } - function getKinematicsScene(id) { - return getBuild(library.kinematicsScenes[id], buildKinematicsScene); - } - function setupKinematics() { - const kinematicsModelId = Object.keys(library.kinematicsModels)[0]; - const kinematicsSceneId = Object.keys(library.kinematicsScenes)[0]; - const visualSceneId = Object.keys(library.visualScenes)[0]; - if (kinematicsModelId === void 0 || kinematicsSceneId === void 0) return; - const kinematicsModel = getKinematicsModel(kinematicsModelId); - const kinematicsScene = getKinematicsScene(kinematicsSceneId); - const visualScene = getVisualScene(visualSceneId); - const bindJointAxis = kinematicsScene.bindJointAxis; - const jointMap = {}; - for (let i = 0, l2 = bindJointAxis.length; i < l2; i++) { - const axis = bindJointAxis[i]; - const targetElement = collada.querySelector('[sid="' + axis.target + '"]'); - if (targetElement) { - const parentVisualElement = targetElement.parentElement; - connect(axis.jointIndex, parentVisualElement); - } - } - function connect(jointIndex, visualElement) { - const visualElementName = visualElement.getAttribute("name"); - const joint = kinematicsModel.joints[jointIndex]; - visualScene.traverse(function(object) { - if (object.name === visualElementName) { - jointMap[jointIndex] = { - object, - transforms: buildTransformList(visualElement), - joint, - position: joint.zeroPosition - }; - } - }); - } - const m0 = new Matrix4(); - kinematics = { - joints: kinematicsModel && kinematicsModel.joints, - getJointValue: function(jointIndex) { - const jointData = jointMap[jointIndex]; - if (jointData) { - return jointData.position; - } else { - console.warn("THREE.ColladaLoader: Joint " + jointIndex + " doesn't exist."); - } - }, - setJointValue: function(jointIndex, value2) { - const jointData = jointMap[jointIndex]; - if (jointData) { - const joint = jointData.joint; - if (value2 > joint.limits.max || value2 < joint.limits.min) { - console.warn("THREE.ColladaLoader: Joint " + jointIndex + " value " + value2 + " outside of limits (min: " + joint.limits.min + ", max: " + joint.limits.max + ")."); - } else if (joint.static) { - console.warn("THREE.ColladaLoader: Joint " + jointIndex + " is static."); - } else { - const object = jointData.object; - const axis = joint.axis; - const transforms = jointData.transforms; - matrix3.identity(); - for (let i = 0; i < transforms.length; i++) { - const transform2 = transforms[i]; - if (transform2.sid && transform2.sid.indexOf(jointIndex) !== -1) { - switch (joint.type) { - case "revolute": - matrix3.multiply(m0.makeRotationAxis(axis, MathUtils.degToRad(value2))); - break; - case "prismatic": - matrix3.multiply(m0.makeTranslation(axis.x * value2, axis.y * value2, axis.z * value2)); - break; - default: - console.warn("THREE.ColladaLoader: Unknown joint type: " + joint.type); - break; - } - } else { - switch (transform2.type) { - case "matrix": - matrix3.multiply(transform2.obj); - break; - case "translate": - matrix3.multiply(m0.makeTranslation(transform2.obj.x, transform2.obj.y, transform2.obj.z)); - break; - case "scale": - matrix3.scale(transform2.obj); - break; - case "rotate": - matrix3.multiply(m0.makeRotationAxis(transform2.obj, transform2.angle)); - break; - } - } - } - object.matrix.copy(matrix3); - object.matrix.decompose(object.position, object.quaternion, object.scale); - jointMap[jointIndex].position = value2; - } - } else { - console.log("THREE.ColladaLoader: " + jointIndex + " does not exist."); - } - } - }; - } - function buildTransformList(node) { - const transforms = []; - const xml2 = collada.querySelector('[id="' + node.id + '"]'); - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - let array, vector2; - switch (child.nodeName) { - case "matrix": - array = parseFloats(child.textContent); - const matrix4 = new Matrix4().fromArray(array).transpose(); - transforms.push({ - sid: child.getAttribute("sid"), - type: child.nodeName, - obj: matrix4 - }); - break; - case "translate": - case "scale": - array = parseFloats(child.textContent); - vector2 = new Vector3().fromArray(array); - transforms.push({ - sid: child.getAttribute("sid"), - type: child.nodeName, - obj: vector2 - }); - break; - case "rotate": - array = parseFloats(child.textContent); - vector2 = new Vector3().fromArray(array); - const angle = MathUtils.degToRad(array[3]); - transforms.push({ - sid: child.getAttribute("sid"), - type: child.nodeName, - obj: vector2, - angle - }); - break; - } - } - return transforms; - } - function prepareNodes(xml2) { - const elements = xml2.getElementsByTagName("node"); - for (let i = 0; i < elements.length; i++) { - const element = elements[i]; - if (element.hasAttribute("id") === false) { - element.setAttribute("id", generateId()); - } - } - } - const matrix3 = new Matrix4(); - const vector = new Vector3(); - function parseNode(xml2) { - const data2 = { - name: xml2.getAttribute("name") || "", - type: xml2.getAttribute("type"), - id: xml2.getAttribute("id"), - sid: xml2.getAttribute("sid"), - matrix: new Matrix4(), - nodes: [], - instanceCameras: [], - instanceControllers: [], - instanceLights: [], - instanceGeometries: [], - instanceNodes: [], - transforms: {} - }; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - if (child.nodeType !== 1) continue; - let array; - switch (child.nodeName) { - case "node": - data2.nodes.push(child.getAttribute("id")); - parseNode(child); - break; - case "instance_camera": - data2.instanceCameras.push(parseId(child.getAttribute("url"))); - break; - case "instance_controller": - data2.instanceControllers.push(parseNodeInstance(child)); - break; - case "instance_light": - data2.instanceLights.push(parseId(child.getAttribute("url"))); - break; - case "instance_geometry": - data2.instanceGeometries.push(parseNodeInstance(child)); - break; - case "instance_node": - data2.instanceNodes.push(parseId(child.getAttribute("url"))); - break; - case "matrix": - array = parseFloats(child.textContent); - data2.matrix.multiply(matrix3.fromArray(array).transpose()); - data2.transforms[child.getAttribute("sid")] = child.nodeName; - break; - case "translate": - array = parseFloats(child.textContent); - vector.fromArray(array); - data2.matrix.multiply(matrix3.makeTranslation(vector.x, vector.y, vector.z)); - data2.transforms[child.getAttribute("sid")] = child.nodeName; - break; - case "rotate": - array = parseFloats(child.textContent); - const angle = MathUtils.degToRad(array[3]); - data2.matrix.multiply(matrix3.makeRotationAxis(vector.fromArray(array), angle)); - data2.transforms[child.getAttribute("sid")] = child.nodeName; - break; - case "scale": - array = parseFloats(child.textContent); - data2.matrix.scale(vector.fromArray(array)); - data2.transforms[child.getAttribute("sid")] = child.nodeName; - break; - case "extra": - break; - default: - console.log(child); - } - } - if (hasNode(data2.id)) { - console.warn("THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.", data2.id); - } else { - library.nodes[data2.id] = data2; - } - return data2; - } - function parseNodeInstance(xml2) { - const data2 = { - id: parseId(xml2.getAttribute("url")), - materials: {}, - skeletons: [] - }; - for (let i = 0; i < xml2.childNodes.length; i++) { - const child = xml2.childNodes[i]; - switch (child.nodeName) { - case "bind_material": - const instances = child.getElementsByTagName("instance_material"); - for (let j = 0; j < instances.length; j++) { - const instance = instances[j]; - const symbol = instance.getAttribute("symbol"); - const target = instance.getAttribute("target"); - data2.materials[symbol] = parseId(target); - } - break; - case "skeleton": - data2.skeletons.push(parseId(child.textContent)); - break; - default: - break; - } - } - return data2; - } - function buildSkeleton(skeletons, joints) { - const boneData = []; - const sortedBoneData = []; - let i, j, data2; - for (i = 0; i < skeletons.length; i++) { - const skeleton = skeletons[i]; - let root; - if (hasNode(skeleton)) { - root = getNode(skeleton); - buildBoneHierarchy(root, joints, boneData); - } else if (hasVisualScene(skeleton)) { - const visualScene = library.visualScenes[skeleton]; - const children = visualScene.children; - for (let j2 = 0; j2 < children.length; j2++) { - const child = children[j2]; - if (child.type === "JOINT") { - const root2 = getNode(child.id); - buildBoneHierarchy(root2, joints, boneData); - } - } - } else { - console.error("THREE.ColladaLoader: Unable to find root bone of skeleton with ID:", skeleton); - } - } - for (i = 0; i < joints.length; i++) { - for (j = 0; j < boneData.length; j++) { - data2 = boneData[j]; - if (data2.bone.name === joints[i].name) { - sortedBoneData[i] = data2; - data2.processed = true; - break; - } - } - } - for (i = 0; i < boneData.length; i++) { - data2 = boneData[i]; - if (data2.processed === false) { - sortedBoneData.push(data2); - data2.processed = true; - } - } - const bones = []; - const boneInverses = []; - for (i = 0; i < sortedBoneData.length; i++) { - data2 = sortedBoneData[i]; - bones.push(data2.bone); - boneInverses.push(data2.boneInverse); - } - return new Skeleton(bones, boneInverses); - } - function buildBoneHierarchy(root, joints, boneData) { - root.traverse(function(object) { - if (object.isBone === true) { - let boneInverse; - for (let i = 0; i < joints.length; i++) { - const joint = joints[i]; - if (joint.name === object.name) { - boneInverse = joint.boneInverse; - break; - } - } - if (boneInverse === void 0) { - boneInverse = new Matrix4(); - } - boneData.push({ bone: object, boneInverse, processed: false }); - } - }); - } - function buildNode(data2) { - const objects = []; - const matrix4 = data2.matrix; - const nodes = data2.nodes; - const type = data2.type; - const instanceCameras = data2.instanceCameras; - const instanceControllers = data2.instanceControllers; - const instanceLights = data2.instanceLights; - const instanceGeometries = data2.instanceGeometries; - const instanceNodes = data2.instanceNodes; - for (let i = 0, l2 = nodes.length; i < l2; i++) { - objects.push(getNode(nodes[i])); - } - for (let i = 0, l2 = instanceCameras.length; i < l2; i++) { - const instanceCamera = getCamera(instanceCameras[i]); - if (instanceCamera !== null) { - objects.push(instanceCamera.clone()); - } - } - for (let i = 0, l2 = instanceControllers.length; i < l2; i++) { - const instance = instanceControllers[i]; - const controller = getController(instance.id); - const geometries = getGeometry(controller.id); - const newObjects = buildObjects(geometries, instance.materials); - const skeletons = instance.skeletons; - const joints = controller.skin.joints; - const skeleton = buildSkeleton(skeletons, joints); - for (let j = 0, jl = newObjects.length; j < jl; j++) { - const object2 = newObjects[j]; - if (object2.isSkinnedMesh) { - object2.bind(skeleton, controller.skin.bindMatrix); - object2.normalizeSkinWeights(); - } - objects.push(object2); - } - } - for (let i = 0, l2 = instanceLights.length; i < l2; i++) { - const instanceLight = getLight(instanceLights[i]); - if (instanceLight !== null) { - objects.push(instanceLight.clone()); - } - } - for (let i = 0, l2 = instanceGeometries.length; i < l2; i++) { - const instance = instanceGeometries[i]; - const geometries = getGeometry(instance.id); - const newObjects = buildObjects(geometries, instance.materials); - for (let j = 0, jl = newObjects.length; j < jl; j++) { - objects.push(newObjects[j]); - } - } - for (let i = 0, l2 = instanceNodes.length; i < l2; i++) { - objects.push(getNode(instanceNodes[i]).clone()); - } - let object; - if (nodes.length === 0 && objects.length === 1) { - object = objects[0]; - } else { - object = type === "JOINT" ? new Bone() : new Group(); - for (let i = 0; i < objects.length; i++) { - object.add(objects[i]); - } - } - object.name = type === "JOINT" ? data2.sid : data2.name; - object.matrix.copy(matrix4); - object.matrix.decompose(object.position, object.quaternion, object.scale); - return object; - } - const fallbackMaterial = new MeshBasicMaterial({ - name: Loader.DEFAULT_MATERIAL_NAME, - color: 16711935 - }); - function resolveMaterialBinding(keys2, instanceMaterials) { - const materials = []; - for (let i = 0, l2 = keys2.length; i < l2; i++) { - const id = instanceMaterials[keys2[i]]; - if (id === void 0) { - console.warn("THREE.ColladaLoader: Material with key %s not found. Apply fallback material.", keys2[i]); - materials.push(fallbackMaterial); - } else { - materials.push(getMaterial2(id)); - } - } - return materials; - } - function buildObjects(geometries, instanceMaterials) { - const objects = []; - for (const type in geometries) { - const geometry = geometries[type]; - const materials = resolveMaterialBinding(geometry.materialKeys, instanceMaterials); - if (materials.length === 0) { - if (type === "lines" || type === "linestrips") { - materials.push(new LineBasicMaterial()); - } else { - materials.push(new MeshPhongMaterial()); - } - } - if (type === "lines" || type === "linestrips") { - for (let i = 0, l2 = materials.length; i < l2; i++) { - const material2 = materials[i]; - if (material2.isMeshPhongMaterial === true || material2.isMeshLambertMaterial === true) { - const lineMaterial = new LineBasicMaterial(); - lineMaterial.color.copy(material2.color); - lineMaterial.opacity = material2.opacity; - lineMaterial.transparent = material2.transparent; - materials[i] = lineMaterial; - } - } - } - const skinning = geometry.data.attributes.skinIndex !== void 0; - const material = materials.length === 1 ? materials[0] : materials; - let object; - switch (type) { - case "lines": - object = new LineSegments(geometry.data, material); - break; - case "linestrips": - object = new Line(geometry.data, material); - break; - case "triangles": - case "polylist": - if (skinning) { - object = new SkinnedMesh(geometry.data, material); - } else { - object = new Mesh(geometry.data, material); - } - break; - } - objects.push(object); - } - return objects; - } - function hasNode(id) { - return library.nodes[id] !== void 0; - } - function getNode(id) { - return getBuild(library.nodes[id], buildNode); - } - function parseVisualScene(xml2) { - const data2 = { - name: xml2.getAttribute("name"), - children: [] - }; - prepareNodes(xml2); - const elements = getElementsByTagName(xml2, "node"); - for (let i = 0; i < elements.length; i++) { - data2.children.push(parseNode(elements[i])); - } - library.visualScenes[xml2.getAttribute("id")] = data2; - } - function buildVisualScene(data2) { - const group = new Group(); - group.name = data2.name; - const children = data2.children; - for (let i = 0; i < children.length; i++) { - const child = children[i]; - group.add(getNode(child.id)); - } - return group; - } - function hasVisualScene(id) { - return library.visualScenes[id] !== void 0; - } - function getVisualScene(id) { - return getBuild(library.visualScenes[id], buildVisualScene); - } - function parseScene(xml2) { - const instance = getElementsByTagName(xml2, "instance_visual_scene")[0]; - return getVisualScene(parseId(instance.getAttribute("url"))); - } - function setupAnimations() { - const clips = library.clips; - if (isEmpty2(clips) === true) { - if (isEmpty2(library.animations) === false) { - const tracks = []; - for (const id in library.animations) { - const animationTracks = getAnimation(id); - for (let i = 0, l2 = animationTracks.length; i < l2; i++) { - tracks.push(animationTracks[i]); - } - } - animations.push(new AnimationClip("default", -1, tracks)); - } - } else { - for (const id in clips) { - animations.push(getAnimationClip(id)); - } - } - } - function parserErrorToText(parserError2) { - let result = ""; - const stack = [parserError2]; - while (stack.length) { - const node = stack.shift(); - if (node.nodeType === Node.TEXT_NODE) { - result += node.textContent; - } else { - result += "\n"; - stack.push.apply(stack, node.childNodes); - } - } - return result.trim(); - } - if (text2.length === 0) { - return { scene: new Scene() }; - } - const xml = new DOMParser().parseFromString(text2, "application/xml"); - const collada = getElementsByTagName(xml, "COLLADA")[0]; - const parserError = xml.getElementsByTagName("parsererror")[0]; - if (parserError !== void 0) { - const errorElement = getElementsByTagName(parserError, "div")[0]; - let errorText; - if (errorElement) { - errorText = errorElement.textContent; - } else { - errorText = parserErrorToText(parserError); - } - console.error("THREE.ColladaLoader: Failed to parse collada file.\n", errorText); - return null; - } - const version = collada.getAttribute("version"); - console.debug("THREE.ColladaLoader: File version", version); - const asset = parseAsset(getElementsByTagName(collada, "asset")[0]); - const textureLoader = new TextureLoader(this.manager); - textureLoader.setPath(this.resourcePath || path).setCrossOrigin(this.crossOrigin); - let tgaLoader; - if (TGALoader) { - tgaLoader = new TGALoader(this.manager); - tgaLoader.setPath(this.resourcePath || path); - } - const tempColor = new Color(); - const animations = []; - let kinematics = {}; - let count = 0; - const library = { - animations: {}, - clips: {}, - controllers: {}, - images: {}, - effects: {}, - materials: {}, - cameras: {}, - lights: {}, - geometries: {}, - nodes: {}, - visualScenes: {}, - kinematicsModels: {}, - physicsModels: {}, - kinematicsScenes: {} - }; - parseLibrary(collada, "library_animations", "animation", parseAnimation); - parseLibrary(collada, "library_animation_clips", "animation_clip", parseAnimationClip); - parseLibrary(collada, "library_controllers", "controller", parseController); - parseLibrary(collada, "library_images", "image", parseImage); - parseLibrary(collada, "library_effects", "effect", parseEffect); - parseLibrary(collada, "library_materials", "material", parseMaterial); - parseLibrary(collada, "library_cameras", "camera", parseCamera); - parseLibrary(collada, "library_lights", "light", parseLight); - parseLibrary(collada, "library_geometries", "geometry", parseGeometry); - parseLibrary(collada, "library_nodes", "node", parseNode); - parseLibrary(collada, "library_visual_scenes", "visual_scene", parseVisualScene); - parseLibrary(collada, "library_kinematics_models", "kinematics_model", parseKinematicsModel); - parseLibrary(collada, "library_physics_models", "physics_model", parsePhysicsModel); - parseLibrary(collada, "scene", "instance_kinematics_scene", parseKinematicsScene); - buildLibrary(library.animations, buildAnimation); - buildLibrary(library.clips, buildAnimationClip); - buildLibrary(library.controllers, buildController); - buildLibrary(library.images, buildImage); - buildLibrary(library.effects, buildEffect); - buildLibrary(library.materials, buildMaterial2); - buildLibrary(library.cameras, buildCamera2); - buildLibrary(library.lights, buildLight); - buildLibrary(library.geometries, buildGeometry); - buildLibrary(library.visualScenes, buildVisualScene); - setupAnimations(); - setupKinematics(); - const scene = parseScene(getElementsByTagName(collada, "scene")[0]); - scene.animations = animations; - if (asset.upAxis === "Z_UP") { - console.warn("THREE.ColladaLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted, see #24289."); - scene.rotation.set(-Math.PI / 2, 0, 0); - } - scene.scale.multiplyScalar(asset.unit); - return { - get animations() { - console.warn("THREE.ColladaLoader: Please access animations over scene.animations now."); - return animations; - }, - kinematics, - library, - scene - }; - } -}; - -// node_modules/three/examples/jsm/loaders/DDSLoader.js -var DDSLoader = class extends CompressedTextureLoader { - constructor(manager) { - super(manager); - } - parse(buffer, loadMipmaps) { - const dds = { mipmaps: [], width: 0, height: 0, format: null, mipmapCount: 1 }; - const DDS_MAGIC = 542327876; - const DDSD_MIPMAPCOUNT = 131072; - const DDSCAPS2_CUBEMAP = 512; - const DDSCAPS2_CUBEMAP_POSITIVEX = 1024; - const DDSCAPS2_CUBEMAP_NEGATIVEX = 2048; - const DDSCAPS2_CUBEMAP_POSITIVEY = 4096; - const DDSCAPS2_CUBEMAP_NEGATIVEY = 8192; - const DDSCAPS2_CUBEMAP_POSITIVEZ = 16384; - const DDSCAPS2_CUBEMAP_NEGATIVEZ = 32768; - const DXGI_FORMAT_BC6H_UF16 = 95; - const DXGI_FORMAT_BC6H_SF16 = 96; - function fourCCToInt32(value2) { - return value2.charCodeAt(0) + (value2.charCodeAt(1) << 8) + (value2.charCodeAt(2) << 16) + (value2.charCodeAt(3) << 24); - } - function int32ToFourCC(value2) { - return String.fromCharCode( - value2 & 255, - value2 >> 8 & 255, - value2 >> 16 & 255, - value2 >> 24 & 255 - ); - } - function loadARGBMip(buffer2, dataOffset2, width2, height2) { - const dataLength = width2 * height2 * 4; - const srcBuffer = new Uint8Array(buffer2, dataOffset2, dataLength); - const byteArray = new Uint8Array(dataLength); - let dst = 0; - let src = 0; - for (let y2 = 0; y2 < height2; y2++) { - for (let x2 = 0; x2 < width2; x2++) { - const b3 = srcBuffer[src]; - src++; - const g2 = srcBuffer[src]; - src++; - const r = srcBuffer[src]; - src++; - const a2 = srcBuffer[src]; - src++; - byteArray[dst] = r; - dst++; - byteArray[dst] = g2; - dst++; - byteArray[dst] = b3; - dst++; - byteArray[dst] = a2; - dst++; - } - } - return byteArray; - } - const FOURCC_DXT1 = fourCCToInt32("DXT1"); - const FOURCC_DXT3 = fourCCToInt32("DXT3"); - const FOURCC_DXT5 = fourCCToInt32("DXT5"); - const FOURCC_ETC1 = fourCCToInt32("ETC1"); - const FOURCC_DX10 = fourCCToInt32("DX10"); - const headerLengthInt = 31; - const extendedHeaderLengthInt = 5; - const off_magic = 0; - const off_size = 1; - const off_flags = 2; - const off_height = 3; - const off_width = 4; - const off_mipmapCount = 7; - const off_pfFourCC = 21; - const off_RGBBitCount = 22; - const off_RBitMask = 23; - const off_GBitMask = 24; - const off_BBitMask = 25; - const off_ABitMask = 26; - const off_caps2 = 28; - const off_dxgiFormat = 0; - const header = new Int32Array(buffer, 0, headerLengthInt); - if (header[off_magic] !== DDS_MAGIC) { - console.error("THREE.DDSLoader.parse: Invalid magic number in DDS header."); - return dds; - } - let blockBytes; - const fourCC = header[off_pfFourCC]; - let isRGBAUncompressed = false; - let dataOffset = header[off_size] + 4; - switch (fourCC) { - case FOURCC_DXT1: - blockBytes = 8; - dds.format = RGB_S3TC_DXT1_Format; - break; - case FOURCC_DXT3: - blockBytes = 16; - dds.format = RGBA_S3TC_DXT3_Format; - break; - case FOURCC_DXT5: - blockBytes = 16; - dds.format = RGBA_S3TC_DXT5_Format; - break; - case FOURCC_ETC1: - blockBytes = 8; - dds.format = RGB_ETC1_Format; - break; - case FOURCC_DX10: - dataOffset += extendedHeaderLengthInt * 4; - const extendedHeader = new Int32Array(buffer, (headerLengthInt + 1) * 4, extendedHeaderLengthInt); - const dxgiFormat = extendedHeader[off_dxgiFormat]; - switch (dxgiFormat) { - case DXGI_FORMAT_BC6H_SF16: { - blockBytes = 16; - dds.format = RGB_BPTC_SIGNED_Format; - break; - } - case DXGI_FORMAT_BC6H_UF16: { - blockBytes = 16; - dds.format = RGB_BPTC_UNSIGNED_Format; - break; - } - default: { - console.error("THREE.DDSLoader.parse: Unsupported DXGI_FORMAT code ", dxgiFormat); - return dds; - } - } - break; - default: - if (header[off_RGBBitCount] === 32 && header[off_RBitMask] & 16711680 && header[off_GBitMask] & 65280 && header[off_BBitMask] & 255 && header[off_ABitMask] & 4278190080) { - isRGBAUncompressed = true; - blockBytes = 64; - dds.format = RGBAFormat; - } else { - console.error("THREE.DDSLoader.parse: Unsupported FourCC code ", int32ToFourCC(fourCC)); - return dds; - } - } - dds.mipmapCount = 1; - if (header[off_flags] & DDSD_MIPMAPCOUNT && loadMipmaps !== false) { - dds.mipmapCount = Math.max(1, header[off_mipmapCount]); - } - const caps2 = header[off_caps2]; - dds.isCubemap = caps2 & DDSCAPS2_CUBEMAP ? true : false; - if (dds.isCubemap && (!(caps2 & DDSCAPS2_CUBEMAP_POSITIVEX) || !(caps2 & DDSCAPS2_CUBEMAP_NEGATIVEX) || !(caps2 & DDSCAPS2_CUBEMAP_POSITIVEY) || !(caps2 & DDSCAPS2_CUBEMAP_NEGATIVEY) || !(caps2 & DDSCAPS2_CUBEMAP_POSITIVEZ) || !(caps2 & DDSCAPS2_CUBEMAP_NEGATIVEZ))) { - console.error("THREE.DDSLoader.parse: Incomplete cubemap faces"); - return dds; - } - dds.width = header[off_width]; - dds.height = header[off_height]; - const faces = dds.isCubemap ? 6 : 1; - for (let face = 0; face < faces; face++) { - let width2 = dds.width; - let height2 = dds.height; - for (let i = 0; i < dds.mipmapCount; i++) { - let byteArray, dataLength; - if (isRGBAUncompressed) { - byteArray = loadARGBMip(buffer, dataOffset, width2, height2); - dataLength = byteArray.length; - } else { - dataLength = Math.max(4, width2) / 4 * Math.max(4, height2) / 4 * blockBytes; - byteArray = new Uint8Array(buffer, dataOffset, dataLength); - } - const mipmap = { "data": byteArray, "width": width2, "height": height2 }; - dds.mipmaps.push(mipmap); - dataOffset += dataLength; - width2 = Math.max(width2 >> 1, 1); - height2 = Math.max(height2 >> 1, 1); - } - } - return dds; - } -}; - -// node_modules/three/examples/jsm/loaders/DRACOLoader.js -var _taskCache2 = /* @__PURE__ */ new WeakMap(); -var DRACOLoader = class extends Loader { - constructor(manager) { - super(manager); - this.decoderPath = ""; - this.decoderConfig = {}; - this.decoderBinary = null; - this.decoderPending = null; - this.workerLimit = 4; - this.workerPool = []; - this.workerNextTaskID = 1; - this.workerSourceURL = ""; - this.defaultAttributeIDs = { - position: "POSITION", - normal: "NORMAL", - color: "COLOR", - uv: "TEX_COORD" - }; - this.defaultAttributeTypes = { - position: "Float32Array", - normal: "Float32Array", - color: "Float32Array", - uv: "Float32Array" - }; - } - setDecoderPath(path) { - this.decoderPath = path; - return this; - } - setDecoderConfig(config) { - this.decoderConfig = config; - return this; - } - setWorkerLimit(workerLimit) { - this.workerLimit = workerLimit; - return this; - } - load(url, onLoad, onProgress, onError) { - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(this.requestHeader); - loader.setWithCredentials(this.withCredentials); - loader.load(url, (buffer) => { - this.parse(buffer, onLoad, onError); - }, onProgress, onError); - } - parse(buffer, onLoad, onError = () => { - }) { - this.decodeDracoFile(buffer, onLoad, null, null, SRGBColorSpace, onError).catch(onError); - } - decodeDracoFile(buffer, callback, attributeIDs, attributeTypes, vertexColorSpace = LinearSRGBColorSpace, onError = () => { - }) { - const taskConfig = { - attributeIDs: attributeIDs || this.defaultAttributeIDs, - attributeTypes: attributeTypes || this.defaultAttributeTypes, - useUniqueIDs: !!attributeIDs, - vertexColorSpace - }; - return this.decodeGeometry(buffer, taskConfig).then(callback).catch(onError); - } - decodeGeometry(buffer, taskConfig) { - const taskKey = JSON.stringify(taskConfig); - if (_taskCache2.has(buffer)) { - const cachedTask = _taskCache2.get(buffer); - if (cachedTask.key === taskKey) { - return cachedTask.promise; - } else if (buffer.byteLength === 0) { - throw new Error( - "THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred." - ); - } - } - let worker; - const taskID = this.workerNextTaskID++; - const taskCost = buffer.byteLength; - const geometryPending = this._getWorker(taskID, taskCost).then((_worker) => { - worker = _worker; - return new Promise((resolve, reject2) => { - worker._callbacks[taskID] = { resolve, reject: reject2 }; - worker.postMessage({ type: "decode", id: taskID, taskConfig, buffer }, [buffer]); - }); - }).then((message) => this._createGeometry(message.geometry)); - geometryPending.catch(() => true).then(() => { - if (worker && taskID) { - this._releaseTask(worker, taskID); - } - }); - _taskCache2.set(buffer, { - key: taskKey, - promise: geometryPending - }); - return geometryPending; - } - _createGeometry(geometryData) { - const geometry = new BufferGeometry(); - if (geometryData.index) { - geometry.setIndex(new BufferAttribute(geometryData.index.array, 1)); - } - for (let i = 0; i < geometryData.attributes.length; i++) { - const result = geometryData.attributes[i]; - const name2 = result.name; - const array = result.array; - const itemSize = result.itemSize; - const attribute = new BufferAttribute(array, itemSize); - if (name2 === "color") { - this._assignVertexColorSpace(attribute, result.vertexColorSpace); - attribute.normalized = array instanceof Float32Array === false; - } - geometry.setAttribute(name2, attribute); - } - return geometry; - } - _assignVertexColorSpace(attribute, inputColorSpace) { - if (inputColorSpace !== SRGBColorSpace) return; - const _color5 = new Color(); - for (let i = 0, il = attribute.count; i < il; i++) { - _color5.fromBufferAttribute(attribute, i).convertSRGBToLinear(); - attribute.setXYZ(i, _color5.r, _color5.g, _color5.b); - } - } - _loadLibrary(url, responseType) { - const loader = new FileLoader(this.manager); - loader.setPath(this.decoderPath); - loader.setResponseType(responseType); - loader.setWithCredentials(this.withCredentials); - return new Promise((resolve, reject2) => { - loader.load(url, resolve, void 0, reject2); - }); - } - preload() { - this._initDecoder(); - return this; - } - _initDecoder() { - if (this.decoderPending) return this.decoderPending; - const useJS = typeof WebAssembly !== "object" || this.decoderConfig.type === "js"; - const librariesPending = []; - if (useJS) { - librariesPending.push(this._loadLibrary("draco_decoder.js", "text")); - } else { - librariesPending.push(this._loadLibrary("draco_wasm_wrapper.js", "text")); - librariesPending.push(this._loadLibrary("draco_decoder.wasm", "arraybuffer")); - } - this.decoderPending = Promise.all(librariesPending).then((libraries) => { - const jsContent = libraries[0]; - if (!useJS) { - this.decoderConfig.wasmBinary = libraries[1]; - } - const fn = DRACOWorker.toString(); - const body = [ - "/* draco decoder */", - jsContent, - "", - "/* worker */", - fn.substring(fn.indexOf("{") + 1, fn.lastIndexOf("}")) - ].join("\n"); - this.workerSourceURL = URL.createObjectURL(new Blob([body])); - }); - return this.decoderPending; - } - _getWorker(taskID, taskCost) { - return this._initDecoder().then(() => { - if (this.workerPool.length < this.workerLimit) { - const worker2 = new Worker(this.workerSourceURL); - worker2._callbacks = {}; - worker2._taskCosts = {}; - worker2._taskLoad = 0; - worker2.postMessage({ type: "init", decoderConfig: this.decoderConfig }); - worker2.onmessage = function(e) { - const message = e.data; - switch (message.type) { - case "decode": - worker2._callbacks[message.id].resolve(message); - break; - case "error": - worker2._callbacks[message.id].reject(message); - break; - default: - console.error('THREE.DRACOLoader: Unexpected message, "' + message.type + '"'); - } - }; - this.workerPool.push(worker2); - } else { - this.workerPool.sort(function(a2, b3) { - return a2._taskLoad > b3._taskLoad ? -1 : 1; - }); - } - const worker = this.workerPool[this.workerPool.length - 1]; - worker._taskCosts[taskID] = taskCost; - worker._taskLoad += taskCost; - return worker; - }); - } - _releaseTask(worker, taskID) { - worker._taskLoad -= worker._taskCosts[taskID]; - delete worker._callbacks[taskID]; - delete worker._taskCosts[taskID]; - } - debug() { - console.log("Task load: ", this.workerPool.map((worker) => worker._taskLoad)); - } - dispose() { - for (let i = 0; i < this.workerPool.length; ++i) { - this.workerPool[i].terminate(); - } - this.workerPool.length = 0; - if (this.workerSourceURL !== "") { - URL.revokeObjectURL(this.workerSourceURL); - } - return this; - } -}; -function DRACOWorker() { - let decoderConfig; - let decoderPending; - onmessage = function(e) { - const message = e.data; - switch (message.type) { - case "init": - decoderConfig = message.decoderConfig; - decoderPending = new Promise(function(resolve) { - decoderConfig.onModuleLoaded = function(draco) { - resolve({ draco }); - }; - DracoDecoderModule(decoderConfig); - }); - break; - case "decode": - const buffer = message.buffer; - const taskConfig = message.taskConfig; - decoderPending.then((module2) => { - const draco = module2.draco; - const decoder = new draco.Decoder(); - try { - const geometry = decodeGeometry(draco, decoder, new Int8Array(buffer), taskConfig); - const buffers = geometry.attributes.map((attr) => attr.array.buffer); - if (geometry.index) buffers.push(geometry.index.array.buffer); - self.postMessage({ type: "decode", id: message.id, geometry }, buffers); - } catch (error) { - console.error(error); - self.postMessage({ type: "error", id: message.id, error: error.message }); - } finally { - draco.destroy(decoder); - } - }); - break; - } - }; - function decodeGeometry(draco, decoder, array, taskConfig) { - const attributeIDs = taskConfig.attributeIDs; - const attributeTypes = taskConfig.attributeTypes; - let dracoGeometry; - let decodingStatus; - const geometryType = decoder.GetEncodedGeometryType(array); - if (geometryType === draco.TRIANGULAR_MESH) { - dracoGeometry = new draco.Mesh(); - decodingStatus = decoder.DecodeArrayToMesh(array, array.byteLength, dracoGeometry); - } else if (geometryType === draco.POINT_CLOUD) { - dracoGeometry = new draco.PointCloud(); - decodingStatus = decoder.DecodeArrayToPointCloud(array, array.byteLength, dracoGeometry); - } else { - throw new Error("THREE.DRACOLoader: Unexpected geometry type."); - } - if (!decodingStatus.ok() || dracoGeometry.ptr === 0) { - throw new Error("THREE.DRACOLoader: Decoding failed: " + decodingStatus.error_msg()); - } - const geometry = { index: null, attributes: [] }; - for (const attributeName in attributeIDs) { - const attributeType = self[attributeTypes[attributeName]]; - let attribute; - let attributeID; - if (taskConfig.useUniqueIDs) { - attributeID = attributeIDs[attributeName]; - attribute = decoder.GetAttributeByUniqueId(dracoGeometry, attributeID); - } else { - attributeID = decoder.GetAttributeId(dracoGeometry, draco[attributeIDs[attributeName]]); - if (attributeID === -1) continue; - attribute = decoder.GetAttribute(dracoGeometry, attributeID); - } - const attributeResult = decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute); - if (attributeName === "color") { - attributeResult.vertexColorSpace = taskConfig.vertexColorSpace; - } - geometry.attributes.push(attributeResult); - } - if (geometryType === draco.TRIANGULAR_MESH) { - geometry.index = decodeIndex(draco, decoder, dracoGeometry); - } - draco.destroy(dracoGeometry); - return geometry; - } - function decodeIndex(draco, decoder, dracoGeometry) { - const numFaces = dracoGeometry.num_faces(); - const numIndices = numFaces * 3; - const byteLength = numIndices * 4; - const ptr = draco._malloc(byteLength); - decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr); - const index2 = new Uint32Array(draco.HEAPF32.buffer, ptr, numIndices).slice(); - draco._free(ptr); - return { array: index2, itemSize: 1 }; - } - function decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute) { - const numComponents = attribute.num_components(); - const numPoints = dracoGeometry.num_points(); - const numValues = numPoints * numComponents; - const byteLength = numValues * attributeType.BYTES_PER_ELEMENT; - const dataType = getDracoDataType(draco, attributeType); - const ptr = draco._malloc(byteLength); - decoder.GetAttributeDataArrayForAllPoints(dracoGeometry, attribute, dataType, byteLength, ptr); - const array = new attributeType(draco.HEAPF32.buffer, ptr, numValues).slice(); - draco._free(ptr); - return { - name: attributeName, - array, - itemSize: numComponents - }; - } - function getDracoDataType(draco, attributeType) { - switch (attributeType) { - case Float32Array: - return draco.DT_FLOAT32; - case Int8Array: - return draco.DT_INT8; - case Int16Array: - return draco.DT_INT16; - case Int32Array: - return draco.DT_INT32; - case Uint8Array: - return draco.DT_UINT8; - case Uint16Array: - return draco.DT_UINT16; - case Uint32Array: - return draco.DT_UINT32; - } - } -} - -// node_modules/three/examples/jsm/loaders/FBXLoader.js -var fbxTree; -var connections; -var sceneGraph; -var FBXLoader = class extends Loader { - constructor(manager) { - super(manager); - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const path = scope.path === "" ? LoaderUtils.extractUrlBase(url) : scope.path; - const loader = new FileLoader(this.manager); - loader.setPath(scope.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(scope.requestHeader); - loader.setWithCredentials(scope.withCredentials); - loader.load(url, function(buffer) { - try { - onLoad(scope.parse(buffer, path)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(FBXBuffer, path) { - if (isFbxFormatBinary(FBXBuffer)) { - fbxTree = new BinaryParser().parse(FBXBuffer); - } else { - const FBXText = convertArrayBufferToString(FBXBuffer); - if (!isFbxFormatASCII(FBXText)) { - throw new Error("THREE.FBXLoader: Unknown format."); - } - if (getFbxVersion(FBXText) < 7e3) { - throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: " + getFbxVersion(FBXText)); - } - fbxTree = new TextParser().parse(FBXText); - } - const textureLoader = new TextureLoader(this.manager).setPath(this.resourcePath || path).setCrossOrigin(this.crossOrigin); - return new FBXTreeParser(textureLoader, this.manager).parse(fbxTree); - } -}; -var FBXTreeParser = class { - constructor(textureLoader, manager) { - this.textureLoader = textureLoader; - this.manager = manager; - } - parse() { - connections = this.parseConnections(); - const images = this.parseImages(); - const textures = this.parseTextures(images); - const materials = this.parseMaterials(textures); - const deformers = this.parseDeformers(); - const geometryMap = new GeometryParser().parse(deformers); - this.parseScene(deformers, geometryMap, materials); - return sceneGraph; - } - // Parses FBXTree.Connections which holds parent-child connections between objects (e.g. material -> texture, model->geometry ) - // and details the connection type - parseConnections() { - const connectionMap = /* @__PURE__ */ new Map(); - if ("Connections" in fbxTree) { - const rawConnections = fbxTree.Connections.connections; - rawConnections.forEach(function(rawConnection) { - const fromID = rawConnection[0]; - const toID = rawConnection[1]; - const relationship = rawConnection[2]; - if (!connectionMap.has(fromID)) { - connectionMap.set(fromID, { - parents: [], - children: [] - }); - } - const parentRelationship = { ID: toID, relationship }; - connectionMap.get(fromID).parents.push(parentRelationship); - if (!connectionMap.has(toID)) { - connectionMap.set(toID, { - parents: [], - children: [] - }); - } - const childRelationship = { ID: fromID, relationship }; - connectionMap.get(toID).children.push(childRelationship); - }); - } - return connectionMap; - } - // Parse FBXTree.Objects.Video for embedded image data - // These images are connected to textures in FBXTree.Objects.Textures - // via FBXTree.Connections. - parseImages() { - const images = {}; - const blobs = {}; - if ("Video" in fbxTree.Objects) { - const videoNodes = fbxTree.Objects.Video; - for (const nodeID in videoNodes) { - const videoNode = videoNodes[nodeID]; - const id = parseInt(nodeID); - images[id] = videoNode.RelativeFilename || videoNode.Filename; - if ("Content" in videoNode) { - const arrayBufferContent = videoNode.Content instanceof ArrayBuffer && videoNode.Content.byteLength > 0; - const base64Content = typeof videoNode.Content === "string" && videoNode.Content !== ""; - if (arrayBufferContent || base64Content) { - const image = this.parseImage(videoNodes[nodeID]); - blobs[videoNode.RelativeFilename || videoNode.Filename] = image; - } - } - } - } - for (const id in images) { - const filename = images[id]; - if (blobs[filename] !== void 0) images[id] = blobs[filename]; - else images[id] = images[id].split("\\").pop(); - } - return images; - } - // Parse embedded image data in FBXTree.Video.Content - parseImage(videoNode) { - const content2 = videoNode.Content; - const fileName = videoNode.RelativeFilename || videoNode.Filename; - const extension = fileName.slice(fileName.lastIndexOf(".") + 1).toLowerCase(); - let type; - switch (extension) { - case "bmp": - type = "image/bmp"; - break; - case "jpg": - case "jpeg": - type = "image/jpeg"; - break; - case "png": - type = "image/png"; - break; - case "tif": - type = "image/tiff"; - break; - case "tga": - if (this.manager.getHandler(".tga") === null) { - console.warn("FBXLoader: TGA loader not found, skipping ", fileName); - } - type = "image/tga"; - break; - default: - console.warn('FBXLoader: Image type "' + extension + '" is not supported.'); - return; - } - if (typeof content2 === "string") { - return "data:" + type + ";base64," + content2; - } else { - const array = new Uint8Array(content2); - return window.URL.createObjectURL(new Blob([array], { type })); - } - } - // Parse nodes in FBXTree.Objects.Texture - // These contain details such as UV scaling, cropping, rotation etc and are connected - // to images in FBXTree.Objects.Video - parseTextures(images) { - const textureMap = /* @__PURE__ */ new Map(); - if ("Texture" in fbxTree.Objects) { - const textureNodes = fbxTree.Objects.Texture; - for (const nodeID in textureNodes) { - const texture = this.parseTexture(textureNodes[nodeID], images); - textureMap.set(parseInt(nodeID), texture); - } - } - return textureMap; - } - // Parse individual node in FBXTree.Objects.Texture - parseTexture(textureNode, images) { - const texture = this.loadTexture(textureNode, images); - texture.ID = textureNode.id; - texture.name = textureNode.attrName; - const wrapModeU = textureNode.WrapModeU; - const wrapModeV = textureNode.WrapModeV; - const valueU = wrapModeU !== void 0 ? wrapModeU.value : 0; - const valueV = wrapModeV !== void 0 ? wrapModeV.value : 0; - texture.wrapS = valueU === 0 ? RepeatWrapping : ClampToEdgeWrapping; - texture.wrapT = valueV === 0 ? RepeatWrapping : ClampToEdgeWrapping; - if ("Scaling" in textureNode) { - const values2 = textureNode.Scaling.value; - texture.repeat.x = values2[0]; - texture.repeat.y = values2[1]; - } - if ("Translation" in textureNode) { - const values2 = textureNode.Translation.value; - texture.offset.x = values2[0]; - texture.offset.y = values2[1]; - } - return texture; - } - // load a texture specified as a blob or data URI, or via an external URL using TextureLoader - loadTexture(textureNode, images) { - const nonNativeExtensions = /* @__PURE__ */ new Set(["tga", "tif", "tiff", "exr", "dds", "hdr", "ktx2"]); - const extension = textureNode.FileName.split(".").pop().toLowerCase(); - const loader = nonNativeExtensions.has(extension) ? this.manager.getHandler(`.${extension}`) : this.textureLoader; - if (!loader) { - console.warn( - `FBXLoader: ${extension.toUpperCase()} loader not found, creating placeholder texture for`, - textureNode.RelativeFilename - ); - return new Texture(); - } - const loaderPath = loader.path; - if (!loaderPath) { - loader.setPath(this.textureLoader.path); - } - const children = connections.get(textureNode.id).children; - let fileName; - if (children !== void 0 && children.length > 0 && images[children[0].ID] !== void 0) { - fileName = images[children[0].ID]; - if (fileName.indexOf("blob:") === 0 || fileName.indexOf("data:") === 0) { - loader.setPath(void 0); - } - } - const texture = loader.load(fileName); - loader.setPath(loaderPath); - return texture; - } - // Parse nodes in FBXTree.Objects.Material - parseMaterials(textureMap) { - const materialMap = /* @__PURE__ */ new Map(); - if ("Material" in fbxTree.Objects) { - const materialNodes = fbxTree.Objects.Material; - for (const nodeID in materialNodes) { - const material = this.parseMaterial(materialNodes[nodeID], textureMap); - if (material !== null) materialMap.set(parseInt(nodeID), material); - } - } - return materialMap; - } - // Parse single node in FBXTree.Objects.Material - // Materials are connected to texture maps in FBXTree.Objects.Textures - // FBX format currently only supports Lambert and Phong shading models - parseMaterial(materialNode, textureMap) { - const ID = materialNode.id; - const name2 = materialNode.attrName; - let type = materialNode.ShadingModel; - if (typeof type === "object") { - type = type.value; - } - if (!connections.has(ID)) return null; - const parameters = this.parseParameters(materialNode, textureMap, ID); - let material; - switch (type.toLowerCase()) { - case "phong": - material = new MeshPhongMaterial(); - break; - case "lambert": - material = new MeshLambertMaterial(); - break; - default: - console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.', type); - material = new MeshPhongMaterial(); - break; - } - material.setValues(parameters); - material.name = name2; - return material; - } - // Parse FBX material and return parameters suitable for a three.js material - // Also parse the texture map and return any textures associated with the material - parseParameters(materialNode, textureMap, ID) { - const parameters = {}; - if (materialNode.BumpFactor) { - parameters.bumpScale = materialNode.BumpFactor.value; - } - if (materialNode.Diffuse) { - parameters.color = new Color().fromArray(materialNode.Diffuse.value).convertSRGBToLinear(); - } else if (materialNode.DiffuseColor && (materialNode.DiffuseColor.type === "Color" || materialNode.DiffuseColor.type === "ColorRGB")) { - parameters.color = new Color().fromArray(materialNode.DiffuseColor.value).convertSRGBToLinear(); - } - if (materialNode.DisplacementFactor) { - parameters.displacementScale = materialNode.DisplacementFactor.value; - } - if (materialNode.Emissive) { - parameters.emissive = new Color().fromArray(materialNode.Emissive.value).convertSRGBToLinear(); - } else if (materialNode.EmissiveColor && (materialNode.EmissiveColor.type === "Color" || materialNode.EmissiveColor.type === "ColorRGB")) { - parameters.emissive = new Color().fromArray(materialNode.EmissiveColor.value).convertSRGBToLinear(); - } - if (materialNode.EmissiveFactor) { - parameters.emissiveIntensity = parseFloat(materialNode.EmissiveFactor.value); - } - if (materialNode.Opacity) { - parameters.opacity = parseFloat(materialNode.Opacity.value); - } - if (parameters.opacity < 1) { - parameters.transparent = true; - } - if (materialNode.ReflectionFactor) { - parameters.reflectivity = materialNode.ReflectionFactor.value; - } - if (materialNode.Shininess) { - parameters.shininess = materialNode.Shininess.value; - } - if (materialNode.Specular) { - parameters.specular = new Color().fromArray(materialNode.Specular.value).convertSRGBToLinear(); - } else if (materialNode.SpecularColor && materialNode.SpecularColor.type === "Color") { - parameters.specular = new Color().fromArray(materialNode.SpecularColor.value).convertSRGBToLinear(); - } - const scope = this; - connections.get(ID).children.forEach(function(child) { - const type = child.relationship; - switch (type) { - case "Bump": - parameters.bumpMap = scope.getTexture(textureMap, child.ID); - break; - case "Maya|TEX_ao_map": - parameters.aoMap = scope.getTexture(textureMap, child.ID); - break; - case "DiffuseColor": - case "Maya|TEX_color_map": - parameters.map = scope.getTexture(textureMap, child.ID); - if (parameters.map !== void 0) { - parameters.map.colorSpace = SRGBColorSpace; - } - break; - case "DisplacementColor": - parameters.displacementMap = scope.getTexture(textureMap, child.ID); - break; - case "EmissiveColor": - parameters.emissiveMap = scope.getTexture(textureMap, child.ID); - if (parameters.emissiveMap !== void 0) { - parameters.emissiveMap.colorSpace = SRGBColorSpace; - } - break; - case "NormalMap": - case "Maya|TEX_normal_map": - parameters.normalMap = scope.getTexture(textureMap, child.ID); - break; - case "ReflectionColor": - parameters.envMap = scope.getTexture(textureMap, child.ID); - if (parameters.envMap !== void 0) { - parameters.envMap.mapping = EquirectangularReflectionMapping; - parameters.envMap.colorSpace = SRGBColorSpace; - } - break; - case "SpecularColor": - parameters.specularMap = scope.getTexture(textureMap, child.ID); - if (parameters.specularMap !== void 0) { - parameters.specularMap.colorSpace = SRGBColorSpace; - } - break; - case "TransparentColor": - case "TransparencyFactor": - parameters.alphaMap = scope.getTexture(textureMap, child.ID); - parameters.transparent = true; - break; - case "AmbientColor": - case "ShininessExponent": - case "SpecularFactor": - case "VectorDisplacementColor": - default: - console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.", type); - break; - } - }); - return parameters; - } - // get a texture from the textureMap for use by a material. - getTexture(textureMap, id) { - if ("LayeredTexture" in fbxTree.Objects && id in fbxTree.Objects.LayeredTexture) { - console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."); - id = connections.get(id).children[0].ID; - } - return textureMap.get(id); - } - // Parse nodes in FBXTree.Objects.Deformer - // Deformer node can contain skinning or Vertex Cache animation data, however only skinning is supported here - // Generates map of Skeleton-like objects for use later when generating and binding skeletons. - parseDeformers() { - const skeletons = {}; - const morphTargets = {}; - if ("Deformer" in fbxTree.Objects) { - const DeformerNodes = fbxTree.Objects.Deformer; - for (const nodeID in DeformerNodes) { - const deformerNode = DeformerNodes[nodeID]; - const relationships = connections.get(parseInt(nodeID)); - if (deformerNode.attrType === "Skin") { - const skeleton = this.parseSkeleton(relationships, DeformerNodes); - skeleton.ID = nodeID; - if (relationships.parents.length > 1) console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."); - skeleton.geometryID = relationships.parents[0].ID; - skeletons[nodeID] = skeleton; - } else if (deformerNode.attrType === "BlendShape") { - const morphTarget = { - id: nodeID - }; - morphTarget.rawTargets = this.parseMorphTargets(relationships, DeformerNodes); - morphTarget.id = nodeID; - if (relationships.parents.length > 1) console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."); - morphTargets[nodeID] = morphTarget; - } - } - } - return { - skeletons, - morphTargets - }; - } - // Parse single nodes in FBXTree.Objects.Deformer - // The top level skeleton node has type 'Skin' and sub nodes have type 'Cluster' - // Each skin node represents a skeleton and each cluster node represents a bone - parseSkeleton(relationships, deformerNodes) { - const rawBones = []; - relationships.children.forEach(function(child) { - const boneNode = deformerNodes[child.ID]; - if (boneNode.attrType !== "Cluster") return; - const rawBone = { - ID: child.ID, - indices: [], - weights: [], - transformLink: new Matrix4().fromArray(boneNode.TransformLink.a) - // transform: new Matrix4().fromArray( boneNode.Transform.a ), - // linkMode: boneNode.Mode, - }; - if ("Indexes" in boneNode) { - rawBone.indices = boneNode.Indexes.a; - rawBone.weights = boneNode.Weights.a; - } - rawBones.push(rawBone); - }); - return { - rawBones, - bones: [] - }; - } - // The top level morph deformer node has type "BlendShape" and sub nodes have type "BlendShapeChannel" - parseMorphTargets(relationships, deformerNodes) { - const rawMorphTargets = []; - for (let i = 0; i < relationships.children.length; i++) { - const child = relationships.children[i]; - const morphTargetNode = deformerNodes[child.ID]; - const rawMorphTarget = { - name: morphTargetNode.attrName, - initialWeight: morphTargetNode.DeformPercent, - id: morphTargetNode.id, - fullWeights: morphTargetNode.FullWeights.a - }; - if (morphTargetNode.attrType !== "BlendShapeChannel") return; - rawMorphTarget.geoID = connections.get(parseInt(child.ID)).children.filter(function(child2) { - return child2.relationship === void 0; - })[0].ID; - rawMorphTargets.push(rawMorphTarget); - } - return rawMorphTargets; - } - // create the main Group() to be returned by the loader - parseScene(deformers, geometryMap, materialMap) { - sceneGraph = new Group(); - const modelMap = this.parseModels(deformers.skeletons, geometryMap, materialMap); - const modelNodes = fbxTree.Objects.Model; - const scope = this; - modelMap.forEach(function(model) { - const modelNode = modelNodes[model.ID]; - scope.setLookAtProperties(model, modelNode); - const parentConnections = connections.get(model.ID).parents; - parentConnections.forEach(function(connection) { - const parent2 = modelMap.get(connection.ID); - if (parent2 !== void 0) parent2.add(model); - }); - if (model.parent === null) { - sceneGraph.add(model); - } - }); - this.bindSkeleton(deformers.skeletons, geometryMap, modelMap); - this.addGlobalSceneSettings(); - sceneGraph.traverse(function(node) { - if (node.userData.transformData) { - if (node.parent) { - node.userData.transformData.parentMatrix = node.parent.matrix; - node.userData.transformData.parentMatrixWorld = node.parent.matrixWorld; - } - const transform2 = generateTransform(node.userData.transformData); - node.applyMatrix4(transform2); - node.updateWorldMatrix(); - } - }); - const animations = new AnimationParser().parse(); - if (sceneGraph.children.length === 1 && sceneGraph.children[0].isGroup) { - sceneGraph.children[0].animations = animations; - sceneGraph = sceneGraph.children[0]; - } - sceneGraph.animations = animations; - } - // parse nodes in FBXTree.Objects.Model - parseModels(skeletons, geometryMap, materialMap) { - const modelMap = /* @__PURE__ */ new Map(); - const modelNodes = fbxTree.Objects.Model; - for (const nodeID in modelNodes) { - const id = parseInt(nodeID); - const node = modelNodes[nodeID]; - const relationships = connections.get(id); - let model = this.buildSkeleton(relationships, skeletons, id, node.attrName); - if (!model) { - switch (node.attrType) { - case "Camera": - model = this.createCamera(relationships); - break; - case "Light": - model = this.createLight(relationships); - break; - case "Mesh": - model = this.createMesh(relationships, geometryMap, materialMap); - break; - case "NurbsCurve": - model = this.createCurve(relationships, geometryMap); - break; - case "LimbNode": - case "Root": - model = new Bone(); - break; - case "Null": - default: - model = new Group(); - break; - } - model.name = node.attrName ? PropertyBinding.sanitizeNodeName(node.attrName) : ""; - model.userData.originalName = node.attrName; - model.ID = id; - } - this.getTransformData(model, node); - modelMap.set(id, model); - } - return modelMap; - } - buildSkeleton(relationships, skeletons, id, name2) { - let bone = null; - relationships.parents.forEach(function(parent2) { - for (const ID in skeletons) { - const skeleton = skeletons[ID]; - skeleton.rawBones.forEach(function(rawBone, i) { - if (rawBone.ID === parent2.ID) { - const subBone = bone; - bone = new Bone(); - bone.matrixWorld.copy(rawBone.transformLink); - bone.name = name2 ? PropertyBinding.sanitizeNodeName(name2) : ""; - bone.userData.originalName = name2; - bone.ID = id; - skeleton.bones[i] = bone; - if (subBone !== null) { - bone.add(subBone); - } - } - }); - } - }); - return bone; - } - // create a PerspectiveCamera or OrthographicCamera - createCamera(relationships) { - let model; - let cameraAttribute; - relationships.children.forEach(function(child) { - const attr = fbxTree.Objects.NodeAttribute[child.ID]; - if (attr !== void 0) { - cameraAttribute = attr; - } - }); - if (cameraAttribute === void 0) { - model = new Object3D(); - } else { - let type = 0; - if (cameraAttribute.CameraProjectionType !== void 0 && cameraAttribute.CameraProjectionType.value === 1) { - type = 1; - } - let nearClippingPlane = 1; - if (cameraAttribute.NearPlane !== void 0) { - nearClippingPlane = cameraAttribute.NearPlane.value / 1e3; - } - let farClippingPlane = 1e3; - if (cameraAttribute.FarPlane !== void 0) { - farClippingPlane = cameraAttribute.FarPlane.value / 1e3; - } - let width2 = window.innerWidth; - let height2 = window.innerHeight; - if (cameraAttribute.AspectWidth !== void 0 && cameraAttribute.AspectHeight !== void 0) { - width2 = cameraAttribute.AspectWidth.value; - height2 = cameraAttribute.AspectHeight.value; - } - const aspect = width2 / height2; - let fov = 45; - if (cameraAttribute.FieldOfView !== void 0) { - fov = cameraAttribute.FieldOfView.value; - } - const focalLength = cameraAttribute.FocalLength ? cameraAttribute.FocalLength.value : null; - switch (type) { - case 0: - model = new PerspectiveCamera(fov, aspect, nearClippingPlane, farClippingPlane); - if (focalLength !== null) model.setFocalLength(focalLength); - break; - case 1: - model = new OrthographicCamera(-width2 / 2, width2 / 2, height2 / 2, -height2 / 2, nearClippingPlane, farClippingPlane); - break; - default: - console.warn("THREE.FBXLoader: Unknown camera type " + type + "."); - model = new Object3D(); - break; - } - } - return model; - } - // Create a DirectionalLight, PointLight or SpotLight - createLight(relationships) { - let model; - let lightAttribute; - relationships.children.forEach(function(child) { - const attr = fbxTree.Objects.NodeAttribute[child.ID]; - if (attr !== void 0) { - lightAttribute = attr; - } - }); - if (lightAttribute === void 0) { - model = new Object3D(); - } else { - let type; - if (lightAttribute.LightType === void 0) { - type = 0; - } else { - type = lightAttribute.LightType.value; - } - let color = 16777215; - if (lightAttribute.Color !== void 0) { - color = new Color().fromArray(lightAttribute.Color.value).convertSRGBToLinear(); - } - let intensity = lightAttribute.Intensity === void 0 ? 1 : lightAttribute.Intensity.value / 100; - if (lightAttribute.CastLightOnObject !== void 0 && lightAttribute.CastLightOnObject.value === 0) { - intensity = 0; - } - let distance = 0; - if (lightAttribute.FarAttenuationEnd !== void 0) { - if (lightAttribute.EnableFarAttenuation !== void 0 && lightAttribute.EnableFarAttenuation.value === 0) { - distance = 0; - } else { - distance = lightAttribute.FarAttenuationEnd.value; - } - } - const decay = 1; - switch (type) { - case 0: - model = new PointLight(color, intensity, distance, decay); - break; - case 1: - model = new DirectionalLight(color, intensity); - break; - case 2: - let angle = Math.PI / 3; - if (lightAttribute.InnerAngle !== void 0) { - angle = MathUtils.degToRad(lightAttribute.InnerAngle.value); - } - let penumbra = 0; - if (lightAttribute.OuterAngle !== void 0) { - penumbra = MathUtils.degToRad(lightAttribute.OuterAngle.value); - penumbra = Math.max(penumbra, 1); - } - model = new SpotLight(color, intensity, distance, angle, penumbra, decay); - break; - default: - console.warn("THREE.FBXLoader: Unknown light type " + lightAttribute.LightType.value + ", defaulting to a PointLight."); - model = new PointLight(color, intensity); - break; - } - if (lightAttribute.CastShadows !== void 0 && lightAttribute.CastShadows.value === 1) { - model.castShadow = true; - } - } - return model; - } - createMesh(relationships, geometryMap, materialMap) { - let model; - let geometry = null; - let material = null; - const materials = []; - relationships.children.forEach(function(child) { - if (geometryMap.has(child.ID)) { - geometry = geometryMap.get(child.ID); - } - if (materialMap.has(child.ID)) { - materials.push(materialMap.get(child.ID)); - } - }); - if (materials.length > 1) { - material = materials; - } else if (materials.length > 0) { - material = materials[0]; - } else { - material = new MeshPhongMaterial({ - name: Loader.DEFAULT_MATERIAL_NAME, - color: 13421772 - }); - materials.push(material); - } - if ("color" in geometry.attributes) { - materials.forEach(function(material2) { - material2.vertexColors = true; - }); - } - if (geometry.FBX_Deformer) { - model = new SkinnedMesh(geometry, material); - model.normalizeSkinWeights(); - } else { - model = new Mesh(geometry, material); - } - return model; - } - createCurve(relationships, geometryMap) { - const geometry = relationships.children.reduce(function(geo, child) { - if (geometryMap.has(child.ID)) geo = geometryMap.get(child.ID); - return geo; - }, null); - const material = new LineBasicMaterial({ - name: Loader.DEFAULT_MATERIAL_NAME, - color: 3342591, - linewidth: 1 - }); - return new Line(geometry, material); - } - // parse the model node for transform data - getTransformData(model, modelNode) { - const transformData = {}; - if ("InheritType" in modelNode) transformData.inheritType = parseInt(modelNode.InheritType.value); - if ("RotationOrder" in modelNode) transformData.eulerOrder = getEulerOrder(modelNode.RotationOrder.value); - else transformData.eulerOrder = "ZYX"; - if ("Lcl_Translation" in modelNode) transformData.translation = modelNode.Lcl_Translation.value; - if ("PreRotation" in modelNode) transformData.preRotation = modelNode.PreRotation.value; - if ("Lcl_Rotation" in modelNode) transformData.rotation = modelNode.Lcl_Rotation.value; - if ("PostRotation" in modelNode) transformData.postRotation = modelNode.PostRotation.value; - if ("Lcl_Scaling" in modelNode) transformData.scale = modelNode.Lcl_Scaling.value; - if ("ScalingOffset" in modelNode) transformData.scalingOffset = modelNode.ScalingOffset.value; - if ("ScalingPivot" in modelNode) transformData.scalingPivot = modelNode.ScalingPivot.value; - if ("RotationOffset" in modelNode) transformData.rotationOffset = modelNode.RotationOffset.value; - if ("RotationPivot" in modelNode) transformData.rotationPivot = modelNode.RotationPivot.value; - model.userData.transformData = transformData; - } - setLookAtProperties(model, modelNode) { - if ("LookAtProperty" in modelNode) { - const children = connections.get(model.ID).children; - children.forEach(function(child) { - if (child.relationship === "LookAtProperty") { - const lookAtTarget = fbxTree.Objects.Model[child.ID]; - if ("Lcl_Translation" in lookAtTarget) { - const pos = lookAtTarget.Lcl_Translation.value; - if (model.target !== void 0) { - model.target.position.fromArray(pos); - sceneGraph.add(model.target); - } else { - model.lookAt(new Vector3().fromArray(pos)); - } - } - } - }); - } - } - bindSkeleton(skeletons, geometryMap, modelMap) { - const bindMatrices = this.parsePoseNodes(); - for (const ID in skeletons) { - const skeleton = skeletons[ID]; - const parents = connections.get(parseInt(skeleton.ID)).parents; - parents.forEach(function(parent2) { - if (geometryMap.has(parent2.ID)) { - const geoID = parent2.ID; - const geoRelationships = connections.get(geoID); - geoRelationships.parents.forEach(function(geoConnParent) { - if (modelMap.has(geoConnParent.ID)) { - const model = modelMap.get(geoConnParent.ID); - model.bind(new Skeleton(skeleton.bones), bindMatrices[geoConnParent.ID]); - } - }); - } - }); - } - } - parsePoseNodes() { - const bindMatrices = {}; - if ("Pose" in fbxTree.Objects) { - const BindPoseNode = fbxTree.Objects.Pose; - for (const nodeID in BindPoseNode) { - if (BindPoseNode[nodeID].attrType === "BindPose" && BindPoseNode[nodeID].NbPoseNodes > 0) { - const poseNodes = BindPoseNode[nodeID].PoseNode; - if (Array.isArray(poseNodes)) { - poseNodes.forEach(function(poseNode) { - bindMatrices[poseNode.Node] = new Matrix4().fromArray(poseNode.Matrix.a); - }); - } else { - bindMatrices[poseNodes.Node] = new Matrix4().fromArray(poseNodes.Matrix.a); - } - } - } - } - return bindMatrices; - } - addGlobalSceneSettings() { - if ("GlobalSettings" in fbxTree) { - if ("AmbientColor" in fbxTree.GlobalSettings) { - const ambientColor = fbxTree.GlobalSettings.AmbientColor.value; - const r = ambientColor[0]; - const g2 = ambientColor[1]; - const b3 = ambientColor[2]; - if (r !== 0 || g2 !== 0 || b3 !== 0) { - const color = new Color(r, g2, b3).convertSRGBToLinear(); - sceneGraph.add(new AmbientLight(color, 1)); - } - } - if ("UnitScaleFactor" in fbxTree.GlobalSettings) { - sceneGraph.userData.unitScaleFactor = fbxTree.GlobalSettings.UnitScaleFactor.value; - } - } - } -}; -var GeometryParser = class { - constructor() { - this.negativeMaterialIndices = false; - } - // Parse nodes in FBXTree.Objects.Geometry - parse(deformers) { - const geometryMap = /* @__PURE__ */ new Map(); - if ("Geometry" in fbxTree.Objects) { - const geoNodes = fbxTree.Objects.Geometry; - for (const nodeID in geoNodes) { - const relationships = connections.get(parseInt(nodeID)); - const geo = this.parseGeometry(relationships, geoNodes[nodeID], deformers); - geometryMap.set(parseInt(nodeID), geo); - } - } - if (this.negativeMaterialIndices === true) { - console.warn("THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected."); - } - return geometryMap; - } - // Parse single node in FBXTree.Objects.Geometry - parseGeometry(relationships, geoNode, deformers) { - switch (geoNode.attrType) { - case "Mesh": - return this.parseMeshGeometry(relationships, geoNode, deformers); - break; - case "NurbsCurve": - return this.parseNurbsGeometry(geoNode); - break; - } - } - // Parse single node mesh geometry in FBXTree.Objects.Geometry - parseMeshGeometry(relationships, geoNode, deformers) { - const skeletons = deformers.skeletons; - const morphTargets = []; - const modelNodes = relationships.parents.map(function(parent2) { - return fbxTree.Objects.Model[parent2.ID]; - }); - if (modelNodes.length === 0) return; - const skeleton = relationships.children.reduce(function(skeleton2, child) { - if (skeletons[child.ID] !== void 0) skeleton2 = skeletons[child.ID]; - return skeleton2; - }, null); - relationships.children.forEach(function(child) { - if (deformers.morphTargets[child.ID] !== void 0) { - morphTargets.push(deformers.morphTargets[child.ID]); - } - }); - const modelNode = modelNodes[0]; - const transformData = {}; - if ("RotationOrder" in modelNode) transformData.eulerOrder = getEulerOrder(modelNode.RotationOrder.value); - if ("InheritType" in modelNode) transformData.inheritType = parseInt(modelNode.InheritType.value); - if ("GeometricTranslation" in modelNode) transformData.translation = modelNode.GeometricTranslation.value; - if ("GeometricRotation" in modelNode) transformData.rotation = modelNode.GeometricRotation.value; - if ("GeometricScaling" in modelNode) transformData.scale = modelNode.GeometricScaling.value; - const transform2 = generateTransform(transformData); - return this.genGeometry(geoNode, skeleton, morphTargets, transform2); - } - // Generate a BufferGeometry from a node in FBXTree.Objects.Geometry - genGeometry(geoNode, skeleton, morphTargets, preTransform) { - const geo = new BufferGeometry(); - if (geoNode.attrName) geo.name = geoNode.attrName; - const geoInfo = this.parseGeoNode(geoNode, skeleton); - const buffers = this.genBuffers(geoInfo); - const positionAttribute = new Float32BufferAttribute(buffers.vertex, 3); - positionAttribute.applyMatrix4(preTransform); - geo.setAttribute("position", positionAttribute); - if (buffers.colors.length > 0) { - geo.setAttribute("color", new Float32BufferAttribute(buffers.colors, 3)); - } - if (skeleton) { - geo.setAttribute("skinIndex", new Uint16BufferAttribute(buffers.weightsIndices, 4)); - geo.setAttribute("skinWeight", new Float32BufferAttribute(buffers.vertexWeights, 4)); - geo.FBX_Deformer = skeleton; - } - if (buffers.normal.length > 0) { - const normalMatrix = new Matrix3().getNormalMatrix(preTransform); - const normalAttribute = new Float32BufferAttribute(buffers.normal, 3); - normalAttribute.applyNormalMatrix(normalMatrix); - geo.setAttribute("normal", normalAttribute); - } - buffers.uvs.forEach(function(uvBuffer, i) { - const name2 = i === 0 ? "uv" : `uv${i}`; - geo.setAttribute(name2, new Float32BufferAttribute(buffers.uvs[i], 2)); - }); - if (geoInfo.material && geoInfo.material.mappingType !== "AllSame") { - let prevMaterialIndex = buffers.materialIndex[0]; - let startIndex = 0; - buffers.materialIndex.forEach(function(currentIndex, i) { - if (currentIndex !== prevMaterialIndex) { - geo.addGroup(startIndex, i - startIndex, prevMaterialIndex); - prevMaterialIndex = currentIndex; - startIndex = i; - } - }); - if (geo.groups.length > 0) { - const lastGroup = geo.groups[geo.groups.length - 1]; - const lastIndex = lastGroup.start + lastGroup.count; - if (lastIndex !== buffers.materialIndex.length) { - geo.addGroup(lastIndex, buffers.materialIndex.length - lastIndex, prevMaterialIndex); - } - } - if (geo.groups.length === 0) { - geo.addGroup(0, buffers.materialIndex.length, buffers.materialIndex[0]); - } - } - this.addMorphTargets(geo, geoNode, morphTargets, preTransform); - return geo; - } - parseGeoNode(geoNode, skeleton) { - const geoInfo = {}; - geoInfo.vertexPositions = geoNode.Vertices !== void 0 ? geoNode.Vertices.a : []; - geoInfo.vertexIndices = geoNode.PolygonVertexIndex !== void 0 ? geoNode.PolygonVertexIndex.a : []; - if (geoNode.LayerElementColor) { - geoInfo.color = this.parseVertexColors(geoNode.LayerElementColor[0]); - } - if (geoNode.LayerElementMaterial) { - geoInfo.material = this.parseMaterialIndices(geoNode.LayerElementMaterial[0]); - } - if (geoNode.LayerElementNormal) { - geoInfo.normal = this.parseNormals(geoNode.LayerElementNormal[0]); - } - if (geoNode.LayerElementUV) { - geoInfo.uv = []; - let i = 0; - while (geoNode.LayerElementUV[i]) { - if (geoNode.LayerElementUV[i].UV) { - geoInfo.uv.push(this.parseUVs(geoNode.LayerElementUV[i])); - } - i++; - } - } - geoInfo.weightTable = {}; - if (skeleton !== null) { - geoInfo.skeleton = skeleton; - skeleton.rawBones.forEach(function(rawBone, i) { - rawBone.indices.forEach(function(index2, j) { - if (geoInfo.weightTable[index2] === void 0) geoInfo.weightTable[index2] = []; - geoInfo.weightTable[index2].push({ - id: i, - weight: rawBone.weights[j] - }); - }); - }); - } - return geoInfo; - } - genBuffers(geoInfo) { - const buffers = { - vertex: [], - normal: [], - colors: [], - uvs: [], - materialIndex: [], - vertexWeights: [], - weightsIndices: [] - }; - let polygonIndex = 0; - let faceLength = 0; - let displayedWeightsWarning = false; - let facePositionIndexes = []; - let faceNormals = []; - let faceColors = []; - let faceUVs = []; - let faceWeights = []; - let faceWeightIndices = []; - const scope = this; - geoInfo.vertexIndices.forEach(function(vertexIndex, polygonVertexIndex) { - let materialIndex; - let endOfFace = false; - if (vertexIndex < 0) { - vertexIndex = vertexIndex ^ -1; - endOfFace = true; - } - let weightIndices = []; - let weights = []; - facePositionIndexes.push(vertexIndex * 3, vertexIndex * 3 + 1, vertexIndex * 3 + 2); - if (geoInfo.color) { - const data2 = getData(polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.color); - faceColors.push(data2[0], data2[1], data2[2]); - } - if (geoInfo.skeleton) { - if (geoInfo.weightTable[vertexIndex] !== void 0) { - geoInfo.weightTable[vertexIndex].forEach(function(wt) { - weights.push(wt.weight); - weightIndices.push(wt.id); - }); - } - if (weights.length > 4) { - if (!displayedWeightsWarning) { - console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."); - displayedWeightsWarning = true; - } - const wIndex = [0, 0, 0, 0]; - const Weight = [0, 0, 0, 0]; - weights.forEach(function(weight, weightIndex) { - let currentWeight = weight; - let currentIndex = weightIndices[weightIndex]; - Weight.forEach(function(comparedWeight, comparedWeightIndex, comparedWeightArray) { - if (currentWeight > comparedWeight) { - comparedWeightArray[comparedWeightIndex] = currentWeight; - currentWeight = comparedWeight; - const tmp = wIndex[comparedWeightIndex]; - wIndex[comparedWeightIndex] = currentIndex; - currentIndex = tmp; - } - }); - }); - weightIndices = wIndex; - weights = Weight; - } - while (weights.length < 4) { - weights.push(0); - weightIndices.push(0); - } - for (let i = 0; i < 4; ++i) { - faceWeights.push(weights[i]); - faceWeightIndices.push(weightIndices[i]); - } - } - if (geoInfo.normal) { - const data2 = getData(polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.normal); - faceNormals.push(data2[0], data2[1], data2[2]); - } - if (geoInfo.material && geoInfo.material.mappingType !== "AllSame") { - materialIndex = getData(polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.material)[0]; - if (materialIndex < 0) { - scope.negativeMaterialIndices = true; - materialIndex = 0; - } - } - if (geoInfo.uv) { - geoInfo.uv.forEach(function(uv, i) { - const data2 = getData(polygonVertexIndex, polygonIndex, vertexIndex, uv); - if (faceUVs[i] === void 0) { - faceUVs[i] = []; - } - faceUVs[i].push(data2[0]); - faceUVs[i].push(data2[1]); - }); - } - faceLength++; - if (endOfFace) { - scope.genFace(buffers, geoInfo, facePositionIndexes, materialIndex, faceNormals, faceColors, faceUVs, faceWeights, faceWeightIndices, faceLength); - polygonIndex++; - faceLength = 0; - facePositionIndexes = []; - faceNormals = []; - faceColors = []; - faceUVs = []; - faceWeights = []; - faceWeightIndices = []; - } - }); - return buffers; - } - // See https://www.khronos.org/opengl/wiki/Calculating_a_Surface_Normal - getNormalNewell(vertices) { - const normal = new Vector3(0, 0, 0); - for (let i = 0; i < vertices.length; i++) { - const current = vertices[i]; - const next = vertices[(i + 1) % vertices.length]; - normal.x += (current.y - next.y) * (current.z + next.z); - normal.y += (current.z - next.z) * (current.x + next.x); - normal.z += (current.x - next.x) * (current.y + next.y); - } - normal.normalize(); - return normal; - } - getNormalTangentAndBitangent(vertices) { - const normalVector = this.getNormalNewell(vertices); - const up = Math.abs(normalVector.z) > 0.5 ? new Vector3(0, 1, 0) : new Vector3(0, 0, 1); - const tangent = up.cross(normalVector).normalize(); - const bitangent = normalVector.clone().cross(tangent).normalize(); - return { - normal: normalVector, - tangent, - bitangent - }; - } - flattenVertex(vertex, normalTangent, normalBitangent) { - return new Vector2( - vertex.dot(normalTangent), - vertex.dot(normalBitangent) - ); - } - // Generate data for a single face in a geometry. If the face is a quad then split it into 2 tris - genFace(buffers, geoInfo, facePositionIndexes, materialIndex, faceNormals, faceColors, faceUVs, faceWeights, faceWeightIndices, faceLength) { - let triangles; - if (faceLength > 3) { - const vertices = []; - const positions = geoInfo.baseVertexPositions || geoInfo.vertexPositions; - for (let i = 0; i < facePositionIndexes.length; i += 3) { - vertices.push( - new Vector3( - positions[facePositionIndexes[i]], - positions[facePositionIndexes[i + 1]], - positions[facePositionIndexes[i + 2]] - ) - ); - } - const { tangent, bitangent } = this.getNormalTangentAndBitangent(vertices); - const triangulationInput = []; - for (const vertex of vertices) { - triangulationInput.push(this.flattenVertex(vertex, tangent, bitangent)); - } - triangles = ShapeUtils.triangulateShape(triangulationInput, []); - } else { - triangles = [[0, 1, 2]]; - } - for (const [i0, i1, i2] of triangles) { - buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i0 * 3]]); - buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i0 * 3 + 1]]); - buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i0 * 3 + 2]]); - buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i1 * 3]]); - buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i1 * 3 + 1]]); - buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i1 * 3 + 2]]); - buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i2 * 3]]); - buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i2 * 3 + 1]]); - buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i2 * 3 + 2]]); - if (geoInfo.skeleton) { - buffers.vertexWeights.push(faceWeights[i0 * 4]); - buffers.vertexWeights.push(faceWeights[i0 * 4 + 1]); - buffers.vertexWeights.push(faceWeights[i0 * 4 + 2]); - buffers.vertexWeights.push(faceWeights[i0 * 4 + 3]); - buffers.vertexWeights.push(faceWeights[i1 * 4]); - buffers.vertexWeights.push(faceWeights[i1 * 4 + 1]); - buffers.vertexWeights.push(faceWeights[i1 * 4 + 2]); - buffers.vertexWeights.push(faceWeights[i1 * 4 + 3]); - buffers.vertexWeights.push(faceWeights[i2 * 4]); - buffers.vertexWeights.push(faceWeights[i2 * 4 + 1]); - buffers.vertexWeights.push(faceWeights[i2 * 4 + 2]); - buffers.vertexWeights.push(faceWeights[i2 * 4 + 3]); - buffers.weightsIndices.push(faceWeightIndices[i0 * 4]); - buffers.weightsIndices.push(faceWeightIndices[i0 * 4 + 1]); - buffers.weightsIndices.push(faceWeightIndices[i0 * 4 + 2]); - buffers.weightsIndices.push(faceWeightIndices[i0 * 4 + 3]); - buffers.weightsIndices.push(faceWeightIndices[i1 * 4]); - buffers.weightsIndices.push(faceWeightIndices[i1 * 4 + 1]); - buffers.weightsIndices.push(faceWeightIndices[i1 * 4 + 2]); - buffers.weightsIndices.push(faceWeightIndices[i1 * 4 + 3]); - buffers.weightsIndices.push(faceWeightIndices[i2 * 4]); - buffers.weightsIndices.push(faceWeightIndices[i2 * 4 + 1]); - buffers.weightsIndices.push(faceWeightIndices[i2 * 4 + 2]); - buffers.weightsIndices.push(faceWeightIndices[i2 * 4 + 3]); - } - if (geoInfo.color) { - buffers.colors.push(faceColors[i0 * 3]); - buffers.colors.push(faceColors[i0 * 3 + 1]); - buffers.colors.push(faceColors[i0 * 3 + 2]); - buffers.colors.push(faceColors[i1 * 3]); - buffers.colors.push(faceColors[i1 * 3 + 1]); - buffers.colors.push(faceColors[i1 * 3 + 2]); - buffers.colors.push(faceColors[i2 * 3]); - buffers.colors.push(faceColors[i2 * 3 + 1]); - buffers.colors.push(faceColors[i2 * 3 + 2]); - } - if (geoInfo.material && geoInfo.material.mappingType !== "AllSame") { - buffers.materialIndex.push(materialIndex); - buffers.materialIndex.push(materialIndex); - buffers.materialIndex.push(materialIndex); - } - if (geoInfo.normal) { - buffers.normal.push(faceNormals[i0 * 3]); - buffers.normal.push(faceNormals[i0 * 3 + 1]); - buffers.normal.push(faceNormals[i0 * 3 + 2]); - buffers.normal.push(faceNormals[i1 * 3]); - buffers.normal.push(faceNormals[i1 * 3 + 1]); - buffers.normal.push(faceNormals[i1 * 3 + 2]); - buffers.normal.push(faceNormals[i2 * 3]); - buffers.normal.push(faceNormals[i2 * 3 + 1]); - buffers.normal.push(faceNormals[i2 * 3 + 2]); - } - if (geoInfo.uv) { - geoInfo.uv.forEach(function(uv, j) { - if (buffers.uvs[j] === void 0) buffers.uvs[j] = []; - buffers.uvs[j].push(faceUVs[j][i0 * 2]); - buffers.uvs[j].push(faceUVs[j][i0 * 2 + 1]); - buffers.uvs[j].push(faceUVs[j][i1 * 2]); - buffers.uvs[j].push(faceUVs[j][i1 * 2 + 1]); - buffers.uvs[j].push(faceUVs[j][i2 * 2]); - buffers.uvs[j].push(faceUVs[j][i2 * 2 + 1]); - }); - } - } - } - addMorphTargets(parentGeo, parentGeoNode, morphTargets, preTransform) { - if (morphTargets.length === 0) return; - parentGeo.morphTargetsRelative = true; - parentGeo.morphAttributes.position = []; - const scope = this; - morphTargets.forEach(function(morphTarget) { - morphTarget.rawTargets.forEach(function(rawTarget) { - const morphGeoNode = fbxTree.Objects.Geometry[rawTarget.geoID]; - if (morphGeoNode !== void 0) { - scope.genMorphGeometry(parentGeo, parentGeoNode, morphGeoNode, preTransform, rawTarget.name); - } - }); - }); - } - // a morph geometry node is similar to a standard node, and the node is also contained - // in FBXTree.Objects.Geometry, however it can only have attributes for position, normal - // and a special attribute Index defining which vertices of the original geometry are affected - // Normal and position attributes only have data for the vertices that are affected by the morph - genMorphGeometry(parentGeo, parentGeoNode, morphGeoNode, preTransform, name2) { - const basePositions = parentGeoNode.Vertices !== void 0 ? parentGeoNode.Vertices.a : []; - const baseIndices = parentGeoNode.PolygonVertexIndex !== void 0 ? parentGeoNode.PolygonVertexIndex.a : []; - const morphPositionsSparse = morphGeoNode.Vertices !== void 0 ? morphGeoNode.Vertices.a : []; - const morphIndices = morphGeoNode.Indexes !== void 0 ? morphGeoNode.Indexes.a : []; - const length2 = parentGeo.attributes.position.count * 3; - const morphPositions = new Float32Array(length2); - for (let i = 0; i < morphIndices.length; i++) { - const morphIndex = morphIndices[i] * 3; - morphPositions[morphIndex] = morphPositionsSparse[i * 3]; - morphPositions[morphIndex + 1] = morphPositionsSparse[i * 3 + 1]; - morphPositions[morphIndex + 2] = morphPositionsSparse[i * 3 + 2]; - } - const morphGeoInfo = { - vertexIndices: baseIndices, - vertexPositions: morphPositions, - baseVertexPositions: basePositions - }; - const morphBuffers = this.genBuffers(morphGeoInfo); - const positionAttribute = new Float32BufferAttribute(morphBuffers.vertex, 3); - positionAttribute.name = name2 || morphGeoNode.attrName; - positionAttribute.applyMatrix4(preTransform); - parentGeo.morphAttributes.position.push(positionAttribute); - } - // Parse normal from FBXTree.Objects.Geometry.LayerElementNormal if it exists - parseNormals(NormalNode) { - const mappingType = NormalNode.MappingInformationType; - const referenceType = NormalNode.ReferenceInformationType; - const buffer = NormalNode.Normals.a; - let indexBuffer = []; - if (referenceType === "IndexToDirect") { - if ("NormalIndex" in NormalNode) { - indexBuffer = NormalNode.NormalIndex.a; - } else if ("NormalsIndex" in NormalNode) { - indexBuffer = NormalNode.NormalsIndex.a; - } - } - return { - dataSize: 3, - buffer, - indices: indexBuffer, - mappingType, - referenceType - }; - } - // Parse UVs from FBXTree.Objects.Geometry.LayerElementUV if it exists - parseUVs(UVNode) { - const mappingType = UVNode.MappingInformationType; - const referenceType = UVNode.ReferenceInformationType; - const buffer = UVNode.UV.a; - let indexBuffer = []; - if (referenceType === "IndexToDirect") { - indexBuffer = UVNode.UVIndex.a; - } - return { - dataSize: 2, - buffer, - indices: indexBuffer, - mappingType, - referenceType - }; - } - // Parse Vertex Colors from FBXTree.Objects.Geometry.LayerElementColor if it exists - parseVertexColors(ColorNode) { - const mappingType = ColorNode.MappingInformationType; - const referenceType = ColorNode.ReferenceInformationType; - const buffer = ColorNode.Colors.a; - let indexBuffer = []; - if (referenceType === "IndexToDirect") { - indexBuffer = ColorNode.ColorIndex.a; - } - for (let i = 0, c2 = new Color(); i < buffer.length; i += 4) { - c2.fromArray(buffer, i).convertSRGBToLinear().toArray(buffer, i); - } - return { - dataSize: 4, - buffer, - indices: indexBuffer, - mappingType, - referenceType - }; - } - // Parse mapping and material data in FBXTree.Objects.Geometry.LayerElementMaterial if it exists - parseMaterialIndices(MaterialNode) { - const mappingType = MaterialNode.MappingInformationType; - const referenceType = MaterialNode.ReferenceInformationType; - if (mappingType === "NoMappingInformation") { - return { - dataSize: 1, - buffer: [0], - indices: [0], - mappingType: "AllSame", - referenceType - }; - } - const materialIndexBuffer = MaterialNode.Materials.a; - const materialIndices = []; - for (let i = 0; i < materialIndexBuffer.length; ++i) { - materialIndices.push(i); - } - return { - dataSize: 1, - buffer: materialIndexBuffer, - indices: materialIndices, - mappingType, - referenceType - }; - } - // Generate a NurbGeometry from a node in FBXTree.Objects.Geometry - parseNurbsGeometry(geoNode) { - const order = parseInt(geoNode.Order); - if (isNaN(order)) { - console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s", geoNode.Order, geoNode.id); - return new BufferGeometry(); - } - const degree = order - 1; - const knots = geoNode.KnotVector.a; - const controlPoints = []; - const pointsValues = geoNode.Points.a; - for (let i = 0, l2 = pointsValues.length; i < l2; i += 4) { - controlPoints.push(new Vector4().fromArray(pointsValues, i)); - } - let startKnot, endKnot; - if (geoNode.Form === "Closed") { - controlPoints.push(controlPoints[0]); - } else if (geoNode.Form === "Periodic") { - startKnot = degree; - endKnot = knots.length - 1 - startKnot; - for (let i = 0; i < degree; ++i) { - controlPoints.push(controlPoints[i]); - } - } - const curve = new NURBSCurve(degree, knots, controlPoints, startKnot, endKnot); - const points = curve.getPoints(controlPoints.length * 12); - return new BufferGeometry().setFromPoints(points); - } -}; -var AnimationParser = class { - // take raw animation clips and turn them into three.js animation clips - parse() { - const animationClips = []; - const rawClips = this.parseClips(); - if (rawClips !== void 0) { - for (const key2 in rawClips) { - const rawClip = rawClips[key2]; - const clip = this.addClip(rawClip); - animationClips.push(clip); - } - } - return animationClips; - } - parseClips() { - if (fbxTree.Objects.AnimationCurve === void 0) return void 0; - const curveNodesMap = this.parseAnimationCurveNodes(); - this.parseAnimationCurves(curveNodesMap); - const layersMap = this.parseAnimationLayers(curveNodesMap); - const rawClips = this.parseAnimStacks(layersMap); - return rawClips; - } - // parse nodes in FBXTree.Objects.AnimationCurveNode - // each AnimationCurveNode holds data for an animation transform for a model (e.g. left arm rotation ) - // and is referenced by an AnimationLayer - parseAnimationCurveNodes() { - const rawCurveNodes = fbxTree.Objects.AnimationCurveNode; - const curveNodesMap = /* @__PURE__ */ new Map(); - for (const nodeID in rawCurveNodes) { - const rawCurveNode = rawCurveNodes[nodeID]; - if (rawCurveNode.attrName.match(/S|R|T|DeformPercent/) !== null) { - const curveNode = { - id: rawCurveNode.id, - attr: rawCurveNode.attrName, - curves: {} - }; - curveNodesMap.set(curveNode.id, curveNode); - } - } - return curveNodesMap; - } - // parse nodes in FBXTree.Objects.AnimationCurve and connect them up to - // previously parsed AnimationCurveNodes. Each AnimationCurve holds data for a single animated - // axis ( e.g. times and values of x rotation) - parseAnimationCurves(curveNodesMap) { - const rawCurves = fbxTree.Objects.AnimationCurve; - for (const nodeID in rawCurves) { - const animationCurve = { - id: rawCurves[nodeID].id, - times: rawCurves[nodeID].KeyTime.a.map(convertFBXTimeToSeconds), - values: rawCurves[nodeID].KeyValueFloat.a - }; - const relationships = connections.get(animationCurve.id); - if (relationships !== void 0) { - const animationCurveID = relationships.parents[0].ID; - const animationCurveRelationship = relationships.parents[0].relationship; - if (animationCurveRelationship.match(/X/)) { - curveNodesMap.get(animationCurveID).curves["x"] = animationCurve; - } else if (animationCurveRelationship.match(/Y/)) { - curveNodesMap.get(animationCurveID).curves["y"] = animationCurve; - } else if (animationCurveRelationship.match(/Z/)) { - curveNodesMap.get(animationCurveID).curves["z"] = animationCurve; - } else if (animationCurveRelationship.match(/DeformPercent/) && curveNodesMap.has(animationCurveID)) { - curveNodesMap.get(animationCurveID).curves["morph"] = animationCurve; - } - } - } - } - // parse nodes in FBXTree.Objects.AnimationLayer. Each layers holds references - // to various AnimationCurveNodes and is referenced by an AnimationStack node - // note: theoretically a stack can have multiple layers, however in practice there always seems to be one per stack - parseAnimationLayers(curveNodesMap) { - const rawLayers = fbxTree.Objects.AnimationLayer; - const layersMap = /* @__PURE__ */ new Map(); - for (const nodeID in rawLayers) { - const layerCurveNodes = []; - const connection = connections.get(parseInt(nodeID)); - if (connection !== void 0) { - const children = connection.children; - children.forEach(function(child, i) { - if (curveNodesMap.has(child.ID)) { - const curveNode = curveNodesMap.get(child.ID); - if (curveNode.curves.x !== void 0 || curveNode.curves.y !== void 0 || curveNode.curves.z !== void 0) { - if (layerCurveNodes[i] === void 0) { - const modelID = connections.get(child.ID).parents.filter(function(parent2) { - return parent2.relationship !== void 0; - })[0].ID; - if (modelID !== void 0) { - const rawModel = fbxTree.Objects.Model[modelID.toString()]; - if (rawModel === void 0) { - console.warn("THREE.FBXLoader: Encountered a unused curve.", child); - return; - } - const node = { - modelName: rawModel.attrName ? PropertyBinding.sanitizeNodeName(rawModel.attrName) : "", - ID: rawModel.id, - initialPosition: [0, 0, 0], - initialRotation: [0, 0, 0], - initialScale: [1, 1, 1] - }; - sceneGraph.traverse(function(child2) { - if (child2.ID === rawModel.id) { - node.transform = child2.matrix; - if (child2.userData.transformData) node.eulerOrder = child2.userData.transformData.eulerOrder; - } - }); - if (!node.transform) node.transform = new Matrix4(); - if ("PreRotation" in rawModel) node.preRotation = rawModel.PreRotation.value; - if ("PostRotation" in rawModel) node.postRotation = rawModel.PostRotation.value; - layerCurveNodes[i] = node; - } - } - if (layerCurveNodes[i]) layerCurveNodes[i][curveNode.attr] = curveNode; - } else if (curveNode.curves.morph !== void 0) { - if (layerCurveNodes[i] === void 0) { - const deformerID = connections.get(child.ID).parents.filter(function(parent2) { - return parent2.relationship !== void 0; - })[0].ID; - const morpherID = connections.get(deformerID).parents[0].ID; - const geoID = connections.get(morpherID).parents[0].ID; - const modelID = connections.get(geoID).parents[0].ID; - const rawModel = fbxTree.Objects.Model[modelID]; - const node = { - modelName: rawModel.attrName ? PropertyBinding.sanitizeNodeName(rawModel.attrName) : "", - morphName: fbxTree.Objects.Deformer[deformerID].attrName - }; - layerCurveNodes[i] = node; - } - layerCurveNodes[i][curveNode.attr] = curveNode; - } - } - }); - layersMap.set(parseInt(nodeID), layerCurveNodes); - } - } - return layersMap; - } - // parse nodes in FBXTree.Objects.AnimationStack. These are the top level node in the animation - // hierarchy. Each Stack node will be used to create a AnimationClip - parseAnimStacks(layersMap) { - const rawStacks = fbxTree.Objects.AnimationStack; - const rawClips = {}; - for (const nodeID in rawStacks) { - const children = connections.get(parseInt(nodeID)).children; - if (children.length > 1) { - console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers."); - } - const layer = layersMap.get(children[0].ID); - rawClips[nodeID] = { - name: rawStacks[nodeID].attrName, - layer - }; - } - return rawClips; - } - addClip(rawClip) { - let tracks = []; - const scope = this; - rawClip.layer.forEach(function(rawTracks) { - tracks = tracks.concat(scope.generateTracks(rawTracks)); - }); - return new AnimationClip(rawClip.name, -1, tracks); - } - generateTracks(rawTracks) { - const tracks = []; - let initialPosition = new Vector3(); - let initialScale = new Vector3(); - if (rawTracks.transform) rawTracks.transform.decompose(initialPosition, new Quaternion(), initialScale); - initialPosition = initialPosition.toArray(); - initialScale = initialScale.toArray(); - if (rawTracks.T !== void 0 && Object.keys(rawTracks.T.curves).length > 0) { - const positionTrack = this.generateVectorTrack(rawTracks.modelName, rawTracks.T.curves, initialPosition, "position"); - if (positionTrack !== void 0) tracks.push(positionTrack); - } - if (rawTracks.R !== void 0 && Object.keys(rawTracks.R.curves).length > 0) { - const rotationTrack = this.generateRotationTrack(rawTracks.modelName, rawTracks.R.curves, rawTracks.preRotation, rawTracks.postRotation, rawTracks.eulerOrder); - if (rotationTrack !== void 0) tracks.push(rotationTrack); - } - if (rawTracks.S !== void 0 && Object.keys(rawTracks.S.curves).length > 0) { - const scaleTrack = this.generateVectorTrack(rawTracks.modelName, rawTracks.S.curves, initialScale, "scale"); - if (scaleTrack !== void 0) tracks.push(scaleTrack); - } - if (rawTracks.DeformPercent !== void 0) { - const morphTrack = this.generateMorphTrack(rawTracks); - if (morphTrack !== void 0) tracks.push(morphTrack); - } - return tracks; - } - generateVectorTrack(modelName, curves, initialValue, type) { - const times = this.getTimesForAllAxes(curves); - const values2 = this.getKeyframeTrackValues(times, curves, initialValue); - return new VectorKeyframeTrack(modelName + "." + type, times, values2); - } - generateRotationTrack(modelName, curves, preRotation, postRotation, eulerOrder) { - let times; - let values2; - if (curves.x !== void 0 && curves.y !== void 0 && curves.z !== void 0) { - const result = this.interpolateRotations(curves.x, curves.y, curves.z, eulerOrder); - times = result[0]; - values2 = result[1]; - } - if (preRotation !== void 0) { - preRotation = preRotation.map(MathUtils.degToRad); - preRotation.push(eulerOrder); - preRotation = new Euler().fromArray(preRotation); - preRotation = new Quaternion().setFromEuler(preRotation); - } - if (postRotation !== void 0) { - postRotation = postRotation.map(MathUtils.degToRad); - postRotation.push(eulerOrder); - postRotation = new Euler().fromArray(postRotation); - postRotation = new Quaternion().setFromEuler(postRotation).invert(); - } - const quaternion = new Quaternion(); - const euler = new Euler(); - const quaternionValues = []; - if (!values2 || !times) return new QuaternionKeyframeTrack(modelName + ".quaternion", [0], [0]); - for (let i = 0; i < values2.length; i += 3) { - euler.set(values2[i], values2[i + 1], values2[i + 2], eulerOrder); - quaternion.setFromEuler(euler); - if (preRotation !== void 0) quaternion.premultiply(preRotation); - if (postRotation !== void 0) quaternion.multiply(postRotation); - if (i > 2) { - const prevQuat = new Quaternion().fromArray( - quaternionValues, - (i - 3) / 3 * 4 - ); - if (prevQuat.dot(quaternion) < 0) { - quaternion.set(-quaternion.x, -quaternion.y, -quaternion.z, -quaternion.w); - } - } - quaternion.toArray(quaternionValues, i / 3 * 4); - } - return new QuaternionKeyframeTrack(modelName + ".quaternion", times, quaternionValues); - } - generateMorphTrack(rawTracks) { - const curves = rawTracks.DeformPercent.curves.morph; - const values2 = curves.values.map(function(val2) { - return val2 / 100; - }); - const morphNum = sceneGraph.getObjectByName(rawTracks.modelName).morphTargetDictionary[rawTracks.morphName]; - return new NumberKeyframeTrack(rawTracks.modelName + ".morphTargetInfluences[" + morphNum + "]", curves.times, values2); - } - // For all animated objects, times are defined separately for each axis - // Here we'll combine the times into one sorted array without duplicates - getTimesForAllAxes(curves) { - let times = []; - if (curves.x !== void 0) times = times.concat(curves.x.times); - if (curves.y !== void 0) times = times.concat(curves.y.times); - if (curves.z !== void 0) times = times.concat(curves.z.times); - times = times.sort(function(a2, b3) { - return a2 - b3; - }); - if (times.length > 1) { - let targetIndex = 1; - let lastValue = times[0]; - for (let i = 1; i < times.length; i++) { - const currentValue = times[i]; - if (currentValue !== lastValue) { - times[targetIndex] = currentValue; - lastValue = currentValue; - targetIndex++; - } - } - times = times.slice(0, targetIndex); - } - return times; - } - getKeyframeTrackValues(times, curves, initialValue) { - const prevValue = initialValue; - const values2 = []; - let xIndex = -1; - let yIndex = -1; - let zIndex = -1; - times.forEach(function(time2) { - if (curves.x) xIndex = curves.x.times.indexOf(time2); - if (curves.y) yIndex = curves.y.times.indexOf(time2); - if (curves.z) zIndex = curves.z.times.indexOf(time2); - if (xIndex !== -1) { - const xValue = curves.x.values[xIndex]; - values2.push(xValue); - prevValue[0] = xValue; - } else { - values2.push(prevValue[0]); - } - if (yIndex !== -1) { - const yValue = curves.y.values[yIndex]; - values2.push(yValue); - prevValue[1] = yValue; - } else { - values2.push(prevValue[1]); - } - if (zIndex !== -1) { - const zValue = curves.z.values[zIndex]; - values2.push(zValue); - prevValue[2] = zValue; - } else { - values2.push(prevValue[2]); - } - }); - return values2; - } - // Rotations are defined as Euler angles which can have values of any size - // These will be converted to quaternions which don't support values greater than - // PI, so we'll interpolate large rotations - interpolateRotations(curvex, curvey, curvez, eulerOrder) { - const times = []; - const values2 = []; - times.push(curvex.times[0]); - values2.push(MathUtils.degToRad(curvex.values[0])); - values2.push(MathUtils.degToRad(curvey.values[0])); - values2.push(MathUtils.degToRad(curvez.values[0])); - for (let i = 1; i < curvex.values.length; i++) { - const initialValue = [ - curvex.values[i - 1], - curvey.values[i - 1], - curvez.values[i - 1] - ]; - if (isNaN(initialValue[0]) || isNaN(initialValue[1]) || isNaN(initialValue[2])) { - continue; - } - const initialValueRad = initialValue.map(MathUtils.degToRad); - const currentValue = [ - curvex.values[i], - curvey.values[i], - curvez.values[i] - ]; - if (isNaN(currentValue[0]) || isNaN(currentValue[1]) || isNaN(currentValue[2])) { - continue; - } - const currentValueRad = currentValue.map(MathUtils.degToRad); - const valuesSpan = [ - currentValue[0] - initialValue[0], - currentValue[1] - initialValue[1], - currentValue[2] - initialValue[2] - ]; - const absoluteSpan = [ - Math.abs(valuesSpan[0]), - Math.abs(valuesSpan[1]), - Math.abs(valuesSpan[2]) - ]; - if (absoluteSpan[0] >= 180 || absoluteSpan[1] >= 180 || absoluteSpan[2] >= 180) { - const maxAbsSpan = Math.max(...absoluteSpan); - const numSubIntervals = maxAbsSpan / 180; - const E1 = new Euler(...initialValueRad, eulerOrder); - const E2 = new Euler(...currentValueRad, eulerOrder); - const Q1 = new Quaternion().setFromEuler(E1); - const Q22 = new Quaternion().setFromEuler(E2); - if (Q1.dot(Q22)) { - Q22.set(-Q22.x, -Q22.y, -Q22.z, -Q22.w); - } - const initialTime = curvex.times[i - 1]; - const timeSpan = curvex.times[i] - initialTime; - const Q3 = new Quaternion(); - const E3 = new Euler(); - for (let t3 = 0; t3 < 1; t3 += 1 / numSubIntervals) { - Q3.copy(Q1.clone().slerp(Q22.clone(), t3)); - times.push(initialTime + t3 * timeSpan); - E3.setFromQuaternion(Q3, eulerOrder); - values2.push(E3.x); - values2.push(E3.y); - values2.push(E3.z); - } - } else { - times.push(curvex.times[i]); - values2.push(MathUtils.degToRad(curvex.values[i])); - values2.push(MathUtils.degToRad(curvey.values[i])); - values2.push(MathUtils.degToRad(curvez.values[i])); - } - } - return [times, values2]; - } -}; -var TextParser = class { - getPrevNode() { - return this.nodeStack[this.currentIndent - 2]; - } - getCurrentNode() { - return this.nodeStack[this.currentIndent - 1]; - } - getCurrentProp() { - return this.currentProp; - } - pushStack(node) { - this.nodeStack.push(node); - this.currentIndent += 1; - } - popStack() { - this.nodeStack.pop(); - this.currentIndent -= 1; - } - setCurrentProp(val2, name2) { - this.currentProp = val2; - this.currentPropName = name2; - } - parse(text2) { - this.currentIndent = 0; - this.allNodes = new FBXTree(); - this.nodeStack = []; - this.currentProp = []; - this.currentPropName = ""; - const scope = this; - const split = text2.split(/[\r\n]+/); - split.forEach(function(line2, i) { - const matchComment = line2.match(/^[\s\t]*;/); - const matchEmpty = line2.match(/^[\s\t]*$/); - if (matchComment || matchEmpty) return; - const matchBeginning = line2.match("^\\t{" + scope.currentIndent + "}(\\w+):(.*){", ""); - const matchProperty = line2.match("^\\t{" + scope.currentIndent + "}(\\w+):[\\s\\t\\r\\n](.*)"); - const matchEnd = line2.match("^\\t{" + (scope.currentIndent - 1) + "}}"); - if (matchBeginning) { - scope.parseNodeBegin(line2, matchBeginning); - } else if (matchProperty) { - scope.parseNodeProperty(line2, matchProperty, split[++i]); - } else if (matchEnd) { - scope.popStack(); - } else if (line2.match(/^[^\s\t}]/)) { - scope.parseNodePropertyContinued(line2); - } - }); - return this.allNodes; - } - parseNodeBegin(line2, property2) { - const nodeName = property2[1].trim().replace(/^"/, "").replace(/"$/, ""); - const nodeAttrs = property2[2].split(",").map(function(attr) { - return attr.trim().replace(/^"/, "").replace(/"$/, ""); - }); - const node = { name: nodeName }; - const attrs = this.parseNodeAttr(nodeAttrs); - const currentNode = this.getCurrentNode(); - if (this.currentIndent === 0) { - this.allNodes.add(nodeName, node); - } else { - if (nodeName in currentNode) { - if (nodeName === "PoseNode") { - currentNode.PoseNode.push(node); - } else if (currentNode[nodeName].id !== void 0) { - currentNode[nodeName] = {}; - currentNode[nodeName][currentNode[nodeName].id] = currentNode[nodeName]; - } - if (attrs.id !== "") currentNode[nodeName][attrs.id] = node; - } else if (typeof attrs.id === "number") { - currentNode[nodeName] = {}; - currentNode[nodeName][attrs.id] = node; - } else if (nodeName !== "Properties70") { - if (nodeName === "PoseNode") currentNode[nodeName] = [node]; - else currentNode[nodeName] = node; - } - } - if (typeof attrs.id === "number") node.id = attrs.id; - if (attrs.name !== "") node.attrName = attrs.name; - if (attrs.type !== "") node.attrType = attrs.type; - this.pushStack(node); - } - parseNodeAttr(attrs) { - let id = attrs[0]; - if (attrs[0] !== "") { - id = parseInt(attrs[0]); - if (isNaN(id)) { - id = attrs[0]; - } - } - let name2 = "", type = ""; - if (attrs.length > 1) { - name2 = attrs[1].replace(/^(\w+)::/, ""); - type = attrs[2]; - } - return { id, name: name2, type }; - } - parseNodeProperty(line2, property2, contentLine) { - let propName = property2[1].replace(/^"/, "").replace(/"$/, "").trim(); - let propValue = property2[2].replace(/^"/, "").replace(/"$/, "").trim(); - if (propName === "Content" && propValue === ",") { - propValue = contentLine.replace(/"/g, "").replace(/,$/, "").trim(); - } - const currentNode = this.getCurrentNode(); - const parentName = currentNode.name; - if (parentName === "Properties70") { - this.parseNodeSpecialProperty(line2, propName, propValue); - return; - } - if (propName === "C") { - const connProps = propValue.split(",").slice(1); - const from = parseInt(connProps[0]); - const to = parseInt(connProps[1]); - let rest = propValue.split(",").slice(3); - rest = rest.map(function(elem2) { - return elem2.trim().replace(/^"/, ""); - }); - propName = "connections"; - propValue = [from, to]; - append(propValue, rest); - if (currentNode[propName] === void 0) { - currentNode[propName] = []; - } - } - if (propName === "Node") currentNode.id = propValue; - if (propName in currentNode && Array.isArray(currentNode[propName])) { - currentNode[propName].push(propValue); - } else { - if (propName !== "a") currentNode[propName] = propValue; - else currentNode.a = propValue; - } - this.setCurrentProp(currentNode, propName); - if (propName === "a" && propValue.slice(-1) !== ",") { - currentNode.a = parseNumberArray(propValue); - } - } - parseNodePropertyContinued(line2) { - const currentNode = this.getCurrentNode(); - currentNode.a += line2; - if (line2.slice(-1) !== ",") { - currentNode.a = parseNumberArray(currentNode.a); - } - } - // parse "Property70" - parseNodeSpecialProperty(line2, propName, propValue) { - const props = propValue.split('",').map(function(prop) { - return prop.trim().replace(/^\"/, "").replace(/\s/, "_"); - }); - const innerPropName = props[0]; - const innerPropType1 = props[1]; - const innerPropType2 = props[2]; - const innerPropFlag = props[3]; - let innerPropValue = props[4]; - switch (innerPropType1) { - case "int": - case "enum": - case "bool": - case "ULongLong": - case "double": - case "Number": - case "FieldOfView": - innerPropValue = parseFloat(innerPropValue); - break; - case "Color": - case "ColorRGB": - case "Vector3D": - case "Lcl_Translation": - case "Lcl_Rotation": - case "Lcl_Scaling": - innerPropValue = parseNumberArray(innerPropValue); - break; - } - this.getPrevNode()[innerPropName] = { - "type": innerPropType1, - "type2": innerPropType2, - "flag": innerPropFlag, - "value": innerPropValue - }; - this.setCurrentProp(this.getPrevNode(), innerPropName); - } -}; -var BinaryParser = class { - parse(buffer) { - const reader = new BinaryReader(buffer); - reader.skip(23); - const version = reader.getUint32(); - if (version < 6400) { - throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: " + version); - } - const allNodes = new FBXTree(); - while (!this.endOfContent(reader)) { - const node = this.parseNode(reader, version); - if (node !== null) allNodes.add(node.name, node); - } - return allNodes; - } - // Check if reader has reached the end of content. - endOfContent(reader) { - if (reader.size() % 16 === 0) { - return (reader.getOffset() + 160 + 16 & ~15) >= reader.size(); - } else { - return reader.getOffset() + 160 + 16 >= reader.size(); - } - } - // recursively parse nodes until the end of the file is reached - parseNode(reader, version) { - const node = {}; - const endOffset = version >= 7500 ? reader.getUint64() : reader.getUint32(); - const numProperties = version >= 7500 ? reader.getUint64() : reader.getUint32(); - version >= 7500 ? reader.getUint64() : reader.getUint32(); - const nameLen = reader.getUint8(); - const name2 = reader.getString(nameLen); - if (endOffset === 0) return null; - const propertyList = []; - for (let i = 0; i < numProperties; i++) { - propertyList.push(this.parseProperty(reader)); - } - const id = propertyList.length > 0 ? propertyList[0] : ""; - const attrName = propertyList.length > 1 ? propertyList[1] : ""; - const attrType = propertyList.length > 2 ? propertyList[2] : ""; - node.singleProperty = numProperties === 1 && reader.getOffset() === endOffset ? true : false; - while (endOffset > reader.getOffset()) { - const subNode = this.parseNode(reader, version); - if (subNode !== null) this.parseSubNode(name2, node, subNode); - } - node.propertyList = propertyList; - if (typeof id === "number") node.id = id; - if (attrName !== "") node.attrName = attrName; - if (attrType !== "") node.attrType = attrType; - if (name2 !== "") node.name = name2; - return node; - } - parseSubNode(name2, node, subNode) { - if (subNode.singleProperty === true) { - const value2 = subNode.propertyList[0]; - if (Array.isArray(value2)) { - node[subNode.name] = subNode; - subNode.a = value2; - } else { - node[subNode.name] = value2; - } - } else if (name2 === "Connections" && subNode.name === "C") { - const array = []; - subNode.propertyList.forEach(function(property2, i) { - if (i !== 0) array.push(property2); - }); - if (node.connections === void 0) { - node.connections = []; - } - node.connections.push(array); - } else if (subNode.name === "Properties70") { - const keys2 = Object.keys(subNode); - keys2.forEach(function(key2) { - node[key2] = subNode[key2]; - }); - } else if (name2 === "Properties70" && subNode.name === "P") { - let innerPropName = subNode.propertyList[0]; - let innerPropType1 = subNode.propertyList[1]; - const innerPropType2 = subNode.propertyList[2]; - const innerPropFlag = subNode.propertyList[3]; - let innerPropValue; - if (innerPropName.indexOf("Lcl ") === 0) innerPropName = innerPropName.replace("Lcl ", "Lcl_"); - if (innerPropType1.indexOf("Lcl ") === 0) innerPropType1 = innerPropType1.replace("Lcl ", "Lcl_"); - if (innerPropType1 === "Color" || innerPropType1 === "ColorRGB" || innerPropType1 === "Vector" || innerPropType1 === "Vector3D" || innerPropType1.indexOf("Lcl_") === 0) { - innerPropValue = [ - subNode.propertyList[4], - subNode.propertyList[5], - subNode.propertyList[6] - ]; - } else { - innerPropValue = subNode.propertyList[4]; - } - node[innerPropName] = { - "type": innerPropType1, - "type2": innerPropType2, - "flag": innerPropFlag, - "value": innerPropValue - }; - } else if (node[subNode.name] === void 0) { - if (typeof subNode.id === "number") { - node[subNode.name] = {}; - node[subNode.name][subNode.id] = subNode; - } else { - node[subNode.name] = subNode; - } - } else { - if (subNode.name === "PoseNode") { - if (!Array.isArray(node[subNode.name])) { - node[subNode.name] = [node[subNode.name]]; - } - node[subNode.name].push(subNode); - } else if (node[subNode.name][subNode.id] === void 0) { - node[subNode.name][subNode.id] = subNode; - } - } - } - parseProperty(reader) { - const type = reader.getString(1); - let length2; - switch (type) { - case "C": - return reader.getBoolean(); - case "D": - return reader.getFloat64(); - case "F": - return reader.getFloat32(); - case "I": - return reader.getInt32(); - case "L": - return reader.getInt64(); - case "R": - length2 = reader.getUint32(); - return reader.getArrayBuffer(length2); - case "S": - length2 = reader.getUint32(); - return reader.getString(length2); - case "Y": - return reader.getInt16(); - case "b": - case "c": - case "d": - case "f": - case "i": - case "l": - const arrayLength = reader.getUint32(); - const encoding = reader.getUint32(); - const compressedLength = reader.getUint32(); - if (encoding === 0) { - switch (type) { - case "b": - case "c": - return reader.getBooleanArray(arrayLength); - case "d": - return reader.getFloat64Array(arrayLength); - case "f": - return reader.getFloat32Array(arrayLength); - case "i": - return reader.getInt32Array(arrayLength); - case "l": - return reader.getInt64Array(arrayLength); - } - } - const data2 = unzlibSync(new Uint8Array(reader.getArrayBuffer(compressedLength))); - const reader2 = new BinaryReader(data2.buffer); - switch (type) { - case "b": - case "c": - return reader2.getBooleanArray(arrayLength); - case "d": - return reader2.getFloat64Array(arrayLength); - case "f": - return reader2.getFloat32Array(arrayLength); - case "i": - return reader2.getInt32Array(arrayLength); - case "l": - return reader2.getInt64Array(arrayLength); - } - break; - default: - throw new Error("THREE.FBXLoader: Unknown property type " + type); - } - } -}; -var BinaryReader = class { - constructor(buffer, littleEndian) { - this.dv = new DataView(buffer); - this.offset = 0; - this.littleEndian = littleEndian !== void 0 ? littleEndian : true; - this._textDecoder = new TextDecoder(); - } - getOffset() { - return this.offset; - } - size() { - return this.dv.buffer.byteLength; - } - skip(length2) { - this.offset += length2; - } - // seems like true/false representation depends on exporter. - // true: 1 or 'Y'(=0x59), false: 0 or 'T'(=0x54) - // then sees LSB. - getBoolean() { - return (this.getUint8() & 1) === 1; - } - getBooleanArray(size2) { - const a2 = []; - for (let i = 0; i < size2; i++) { - a2.push(this.getBoolean()); - } - return a2; - } - getUint8() { - const value2 = this.dv.getUint8(this.offset); - this.offset += 1; - return value2; - } - getInt16() { - const value2 = this.dv.getInt16(this.offset, this.littleEndian); - this.offset += 2; - return value2; - } - getInt32() { - const value2 = this.dv.getInt32(this.offset, this.littleEndian); - this.offset += 4; - return value2; - } - getInt32Array(size2) { - const a2 = []; - for (let i = 0; i < size2; i++) { - a2.push(this.getInt32()); - } - return a2; - } - getUint32() { - const value2 = this.dv.getUint32(this.offset, this.littleEndian); - this.offset += 4; - return value2; - } - // JavaScript doesn't support 64-bit integer so calculate this here - // 1 << 32 will return 1 so using multiply operation instead here. - // There's a possibility that this method returns wrong value if the value - // is out of the range between Number.MAX_SAFE_INTEGER and Number.MIN_SAFE_INTEGER. - // TODO: safely handle 64-bit integer - getInt64() { - let low, high; - if (this.littleEndian) { - low = this.getUint32(); - high = this.getUint32(); - } else { - high = this.getUint32(); - low = this.getUint32(); - } - if (high & 2147483648) { - high = ~high & 4294967295; - low = ~low & 4294967295; - if (low === 4294967295) high = high + 1 & 4294967295; - low = low + 1 & 4294967295; - return -(high * 4294967296 + low); - } - return high * 4294967296 + low; - } - getInt64Array(size2) { - const a2 = []; - for (let i = 0; i < size2; i++) { - a2.push(this.getInt64()); - } - return a2; - } - // Note: see getInt64() comment - getUint64() { - let low, high; - if (this.littleEndian) { - low = this.getUint32(); - high = this.getUint32(); - } else { - high = this.getUint32(); - low = this.getUint32(); - } - return high * 4294967296 + low; - } - getFloat32() { - const value2 = this.dv.getFloat32(this.offset, this.littleEndian); - this.offset += 4; - return value2; - } - getFloat32Array(size2) { - const a2 = []; - for (let i = 0; i < size2; i++) { - a2.push(this.getFloat32()); - } - return a2; - } - getFloat64() { - const value2 = this.dv.getFloat64(this.offset, this.littleEndian); - this.offset += 8; - return value2; - } - getFloat64Array(size2) { - const a2 = []; - for (let i = 0; i < size2; i++) { - a2.push(this.getFloat64()); - } - return a2; - } - getArrayBuffer(size2) { - const value2 = this.dv.buffer.slice(this.offset, this.offset + size2); - this.offset += size2; - return value2; - } - getString(size2) { - const start = this.offset; - let a2 = new Uint8Array(this.dv.buffer, start, size2); - this.skip(size2); - const nullByte = a2.indexOf(0); - if (nullByte >= 0) a2 = new Uint8Array(this.dv.buffer, start, nullByte); - return this._textDecoder.decode(a2); - } -}; -var FBXTree = class { - add(key2, val2) { - this[key2] = val2; - } -}; -function isFbxFormatBinary(buffer) { - const CORRECT = "Kaydara FBX Binary \0"; - return buffer.byteLength >= CORRECT.length && CORRECT === convertArrayBufferToString(buffer, 0, CORRECT.length); -} -function isFbxFormatASCII(text2) { - const CORRECT = ["K", "a", "y", "d", "a", "r", "a", "\\", "F", "B", "X", "\\", "B", "i", "n", "a", "r", "y", "\\", "\\"]; - let cursor = 0; - function read(offset) { - const result = text2[offset - 1]; - text2 = text2.slice(cursor + offset); - cursor++; - return result; - } - for (let i = 0; i < CORRECT.length; ++i) { - const num = read(1); - if (num === CORRECT[i]) { - return false; - } - } - return true; -} -function getFbxVersion(text2) { - const versionRegExp = /FBXVersion: (\d+)/; - const match = text2.match(versionRegExp); - if (match) { - const version = parseInt(match[1]); - return version; - } - throw new Error("THREE.FBXLoader: Cannot find the version number for the file given."); -} -function convertFBXTimeToSeconds(time2) { - return time2 / 46186158e3; -} -var dataArray = []; -function getData(polygonVertexIndex, polygonIndex, vertexIndex, infoObject) { - let index2; - switch (infoObject.mappingType) { - case "ByPolygonVertex": - index2 = polygonVertexIndex; - break; - case "ByPolygon": - index2 = polygonIndex; - break; - case "ByVertice": - index2 = vertexIndex; - break; - case "AllSame": - index2 = infoObject.indices[0]; - break; - default: - console.warn("THREE.FBXLoader: unknown attribute mapping type " + infoObject.mappingType); - } - if (infoObject.referenceType === "IndexToDirect") index2 = infoObject.indices[index2]; - const from = index2 * infoObject.dataSize; - const to = from + infoObject.dataSize; - return slice(dataArray, infoObject.buffer, from, to); -} -var tempEuler = new Euler(); -var tempVec = new Vector3(); -function generateTransform(transformData) { - const lTranslationM = new Matrix4(); - const lPreRotationM = new Matrix4(); - const lRotationM = new Matrix4(); - const lPostRotationM = new Matrix4(); - const lScalingM = new Matrix4(); - const lScalingPivotM = new Matrix4(); - const lScalingOffsetM = new Matrix4(); - const lRotationOffsetM = new Matrix4(); - const lRotationPivotM = new Matrix4(); - const lParentGX = new Matrix4(); - const lParentLX = new Matrix4(); - const lGlobalT = new Matrix4(); - const inheritType = transformData.inheritType ? transformData.inheritType : 0; - if (transformData.translation) lTranslationM.setPosition(tempVec.fromArray(transformData.translation)); - if (transformData.preRotation) { - const array = transformData.preRotation.map(MathUtils.degToRad); - array.push(transformData.eulerOrder || Euler.DEFAULT_ORDER); - lPreRotationM.makeRotationFromEuler(tempEuler.fromArray(array)); - } - if (transformData.rotation) { - const array = transformData.rotation.map(MathUtils.degToRad); - array.push(transformData.eulerOrder || Euler.DEFAULT_ORDER); - lRotationM.makeRotationFromEuler(tempEuler.fromArray(array)); - } - if (transformData.postRotation) { - const array = transformData.postRotation.map(MathUtils.degToRad); - array.push(transformData.eulerOrder || Euler.DEFAULT_ORDER); - lPostRotationM.makeRotationFromEuler(tempEuler.fromArray(array)); - lPostRotationM.invert(); - } - if (transformData.scale) lScalingM.scale(tempVec.fromArray(transformData.scale)); - if (transformData.scalingOffset) lScalingOffsetM.setPosition(tempVec.fromArray(transformData.scalingOffset)); - if (transformData.scalingPivot) lScalingPivotM.setPosition(tempVec.fromArray(transformData.scalingPivot)); - if (transformData.rotationOffset) lRotationOffsetM.setPosition(tempVec.fromArray(transformData.rotationOffset)); - if (transformData.rotationPivot) lRotationPivotM.setPosition(tempVec.fromArray(transformData.rotationPivot)); - if (transformData.parentMatrixWorld) { - lParentLX.copy(transformData.parentMatrix); - lParentGX.copy(transformData.parentMatrixWorld); - } - const lLRM = lPreRotationM.clone().multiply(lRotationM).multiply(lPostRotationM); - const lParentGRM = new Matrix4(); - lParentGRM.extractRotation(lParentGX); - const lParentTM = new Matrix4(); - lParentTM.copyPosition(lParentGX); - const lParentGRSM = lParentTM.clone().invert().multiply(lParentGX); - const lParentGSM = lParentGRM.clone().invert().multiply(lParentGRSM); - const lLSM = lScalingM; - const lGlobalRS = new Matrix4(); - if (inheritType === 0) { - lGlobalRS.copy(lParentGRM).multiply(lLRM).multiply(lParentGSM).multiply(lLSM); - } else if (inheritType === 1) { - lGlobalRS.copy(lParentGRM).multiply(lParentGSM).multiply(lLRM).multiply(lLSM); - } else { - const lParentLSM = new Matrix4().scale(new Vector3().setFromMatrixScale(lParentLX)); - const lParentLSM_inv = lParentLSM.clone().invert(); - const lParentGSM_noLocal = lParentGSM.clone().multiply(lParentLSM_inv); - lGlobalRS.copy(lParentGRM).multiply(lLRM).multiply(lParentGSM_noLocal).multiply(lLSM); - } - const lRotationPivotM_inv = lRotationPivotM.clone().invert(); - const lScalingPivotM_inv = lScalingPivotM.clone().invert(); - let lTransform = lTranslationM.clone().multiply(lRotationOffsetM).multiply(lRotationPivotM).multiply(lPreRotationM).multiply(lRotationM).multiply(lPostRotationM).multiply(lRotationPivotM_inv).multiply(lScalingOffsetM).multiply(lScalingPivotM).multiply(lScalingM).multiply(lScalingPivotM_inv); - const lLocalTWithAllPivotAndOffsetInfo = new Matrix4().copyPosition(lTransform); - const lGlobalTranslation = lParentGX.clone().multiply(lLocalTWithAllPivotAndOffsetInfo); - lGlobalT.copyPosition(lGlobalTranslation); - lTransform = lGlobalT.clone().multiply(lGlobalRS); - lTransform.premultiply(lParentGX.invert()); - return lTransform; -} -function getEulerOrder(order) { - order = order || 0; - const enums = [ - "ZYX", - // -> XYZ extrinsic - "YZX", - // -> XZY extrinsic - "XZY", - // -> YZX extrinsic - "ZXY", - // -> YXZ extrinsic - "YXZ", - // -> ZXY extrinsic - "XYZ" - // -> ZYX extrinsic - //'SphericXYZ', // not possible to support - ]; - if (order === 6) { - console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."); - return enums[0]; - } - return enums[order]; -} -function parseNumberArray(value2) { - const array = value2.split(",").map(function(val2) { - return parseFloat(val2); - }); - return array; -} -function convertArrayBufferToString(buffer, from, to) { - if (from === void 0) from = 0; - if (to === void 0) to = buffer.byteLength; - return new TextDecoder().decode(new Uint8Array(buffer, from, to)); -} -function append(a2, b3) { - for (let i = 0, j = a2.length, l2 = b3.length; i < l2; i++, j++) { - a2[j] = b3[i]; - } -} -function slice(a2, b3, from, to) { - for (let i = from, j = 0; i < to; i++, j++) { - a2[j] = b3[i]; - } - return a2; -} - -// node_modules/three/examples/jsm/loaders/FontLoader.js -var FontLoader = class extends Loader { - constructor(manager) { - super(manager); - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setRequestHeader(this.requestHeader); - loader.setWithCredentials(this.withCredentials); - loader.load(url, function(text2) { - const font = scope.parse(JSON.parse(text2)); - if (onLoad) onLoad(font); - }, onProgress, onError); - } - parse(json) { - return new Font(json); - } -}; -var Font = class { - constructor(data2) { - this.isFont = true; - this.type = "Font"; - this.data = data2; - } - generateShapes(text2, size2 = 100) { - const shapes = []; - const paths = createPaths(text2, size2, this.data); - for (let p2 = 0, pl = paths.length; p2 < pl; p2++) { - shapes.push(...paths[p2].toShapes()); - } - return shapes; - } -}; -function createPaths(text2, size2, data2) { - const chars = Array.from(text2); - const scale2 = size2 / data2.resolution; - const line_height = (data2.boundingBox.yMax - data2.boundingBox.yMin + data2.underlineThickness) * scale2; - const paths = []; - let offsetX = 0, offsetY = 0; - for (let i = 0; i < chars.length; i++) { - const char = chars[i]; - if (char === "\n") { - offsetX = 0; - offsetY -= line_height; - } else { - const ret = createPath2(char, scale2, offsetX, offsetY, data2); - offsetX += ret.offsetX; - paths.push(ret.path); - } - } - return paths; -} -function createPath2(char, scale2, offsetX, offsetY, data2) { - const glyph = data2.glyphs[char] || data2.glyphs["?"]; - if (!glyph) { - console.error('THREE.Font: character "' + char + '" does not exists in font family ' + data2.familyName + "."); - return; - } - const path = new ShapePath2(); - let x2, y2, cpx, cpy, cpx1, cpy1, cpx2, cpy2; - if (glyph.o) { - const outline = glyph._cachedOutline || (glyph._cachedOutline = glyph.o.split(" ")); - for (let i = 0, l2 = outline.length; i < l2; ) { - const action = outline[i++]; - switch (action) { - case "m": - x2 = outline[i++] * scale2 + offsetX; - y2 = outline[i++] * scale2 + offsetY; - path.moveTo(x2, y2); - break; - case "l": - x2 = outline[i++] * scale2 + offsetX; - y2 = outline[i++] * scale2 + offsetY; - path.lineTo(x2, y2); - break; - case "q": - cpx = outline[i++] * scale2 + offsetX; - cpy = outline[i++] * scale2 + offsetY; - cpx1 = outline[i++] * scale2 + offsetX; - cpy1 = outline[i++] * scale2 + offsetY; - path.quadraticCurveTo(cpx1, cpy1, cpx, cpy); - break; - case "b": - cpx = outline[i++] * scale2 + offsetX; - cpy = outline[i++] * scale2 + offsetY; - cpx1 = outline[i++] * scale2 + offsetX; - cpy1 = outline[i++] * scale2 + offsetY; - cpx2 = outline[i++] * scale2 + offsetX; - cpy2 = outline[i++] * scale2 + offsetY; - path.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, cpx, cpy); - break; - } - } - } - return { offsetX: glyph.ha * scale2, path }; -} - -// node_modules/three/examples/jsm/loaders/GCodeLoader.js -var GCodeLoader = class extends Loader { - constructor(manager) { - super(manager); - this.splitLayer = false; - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(scope.manager); - loader.setPath(scope.path); - loader.setRequestHeader(scope.requestHeader); - loader.setWithCredentials(scope.withCredentials); - loader.load(url, function(text2) { - try { - onLoad(scope.parse(text2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(data2) { - let state = { x: 0, y: 0, z: 0, e: 0, f: 0, extruding: false, relative: false }; - const layers = []; - let currentLayer = void 0; - const pathMaterial = new LineBasicMaterial({ color: 16711680 }); - pathMaterial.name = "path"; - const extrudingMaterial = new LineBasicMaterial({ color: 65280 }); - extrudingMaterial.name = "extruded"; - function newLayer(line2) { - currentLayer = { vertex: [], pathVertex: [], z: line2.z }; - layers.push(currentLayer); - } - function addSegment2(p1, p2) { - if (currentLayer === void 0) { - newLayer(p1); - } - if (state.extruding) { - currentLayer.vertex.push(p1.x, p1.y, p1.z); - currentLayer.vertex.push(p2.x, p2.y, p2.z); - } else { - currentLayer.pathVertex.push(p1.x, p1.y, p1.z); - currentLayer.pathVertex.push(p2.x, p2.y, p2.z); - } - } - function delta(v12, v2) { - return state.relative ? v2 : v2 - v12; - } - function absolute(v12, v2) { - return state.relative ? v12 + v2 : v2; - } - const lines = data2.replace(/;.+/g, "").split("\n"); - for (let i = 0; i < lines.length; i++) { - const tokens = lines[i].split(" "); - const cmd = tokens[0].toUpperCase(); - const args = {}; - tokens.splice(1).forEach(function(token) { - if (token[0] !== void 0) { - const key2 = token[0].toLowerCase(); - const value2 = parseFloat(token.substring(1)); - args[key2] = value2; - } - }); - if (cmd === "G0" || cmd === "G1") { - const line2 = { - x: args.x !== void 0 ? absolute(state.x, args.x) : state.x, - y: args.y !== void 0 ? absolute(state.y, args.y) : state.y, - z: args.z !== void 0 ? absolute(state.z, args.z) : state.z, - e: args.e !== void 0 ? absolute(state.e, args.e) : state.e, - f: args.f !== void 0 ? absolute(state.f, args.f) : state.f - }; - if (delta(state.e, line2.e) > 0) { - state.extruding = delta(state.e, line2.e) > 0; - if (currentLayer == void 0 || line2.z != currentLayer.z) { - newLayer(line2); - } - } - addSegment2(state, line2); - state = line2; - } else if (cmd === "G2" || cmd === "G3") { - } else if (cmd === "G90") { - state.relative = false; - } else if (cmd === "G91") { - state.relative = true; - } else if (cmd === "G92") { - const line2 = state; - line2.x = args.x !== void 0 ? args.x : line2.x; - line2.y = args.y !== void 0 ? args.y : line2.y; - line2.z = args.z !== void 0 ? args.z : line2.z; - line2.e = args.e !== void 0 ? args.e : line2.e; - } else { - } - } - function addObject(vertex, extruding, i) { - const geometry = new BufferGeometry(); - geometry.setAttribute("position", new Float32BufferAttribute(vertex, 3)); - const segments = new LineSegments(geometry, extruding ? extrudingMaterial : pathMaterial); - segments.name = "layer" + i; - object.add(segments); - } - const object = new Group(); - object.name = "gcode"; - if (this.splitLayer) { - for (let i = 0; i < layers.length; i++) { - const layer = layers[i]; - addObject(layer.vertex, true, i); - addObject(layer.pathVertex, false, i); - } - } else { - const vertex = [], pathVertex = []; - for (let i = 0; i < layers.length; i++) { - const layer = layers[i]; - const layerVertex = layer.vertex; - const layerPathVertex = layer.pathVertex; - for (let j = 0; j < layerVertex.length; j++) { - vertex.push(layerVertex[j]); - } - for (let j = 0; j < layerPathVertex.length; j++) { - pathVertex.push(layerPathVertex[j]); - } - } - addObject(vertex, true, layers.length); - addObject(pathVertex, false, layers.length); - } - object.rotation.set(-Math.PI / 2, 0, 0); - return object; - } -}; - -// node_modules/three/examples/jsm/loaders/RGBELoader.js -var RGBELoader = class extends DataTextureLoader { - constructor(manager) { - super(manager); - this.type = HalfFloatType; - } - // adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html - parse(buffer) { - const rgbe_read_error = 1, rgbe_write_error = 2, rgbe_format_error = 3, rgbe_memory_error = 4, rgbe_error = function(rgbe_error_code, msg) { - switch (rgbe_error_code) { - case rgbe_read_error: - throw new Error("THREE.RGBELoader: Read Error: " + (msg || "")); - case rgbe_write_error: - throw new Error("THREE.RGBELoader: Write Error: " + (msg || "")); - case rgbe_format_error: - throw new Error("THREE.RGBELoader: Bad File Format: " + (msg || "")); - default: - case rgbe_memory_error: - throw new Error("THREE.RGBELoader: Memory Error: " + (msg || "")); - } - }, RGBE_VALID_PROGRAMTYPE = 1, RGBE_VALID_FORMAT = 2, RGBE_VALID_DIMENSIONS = 4, NEWLINE = "\n", fgets = function(buffer2, lineLimit, consume) { - const chunkSize = 128; - lineLimit = !lineLimit ? 1024 : lineLimit; - let p2 = buffer2.pos, i = -1, len = 0, s = "", chunk = String.fromCharCode.apply(null, new Uint16Array(buffer2.subarray(p2, p2 + chunkSize))); - while (0 > (i = chunk.indexOf(NEWLINE)) && len < lineLimit && p2 < buffer2.byteLength) { - s += chunk; - len += chunk.length; - p2 += chunkSize; - chunk += String.fromCharCode.apply(null, new Uint16Array(buffer2.subarray(p2, p2 + chunkSize))); - } - if (-1 < i) { - if (false !== consume) buffer2.pos += len + i + 1; - return s + chunk.slice(0, i); - } - return false; - }, RGBE_ReadHeader = function(buffer2) { - const magic_token_re = /^#\?(\S+)/, gamma_re = /^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/, exposure_re = /^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/, format_re = /^\s*FORMAT=(\S+)\s*$/, dimensions_re = /^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/, header = { - valid: 0, - /* indicate which fields are valid */ - string: "", - /* the actual header string */ - comments: "", - /* comments found in header */ - programtype: "RGBE", - /* listed at beginning of file to identify it after "#?". defaults to "RGBE" */ - format: "", - /* RGBE format, default 32-bit_rle_rgbe */ - gamma: 1, - /* image has already been gamma corrected with given gamma. defaults to 1.0 (no correction) */ - exposure: 1, - /* a value of 1.0 in an image corresponds to watts/steradian/m^2. defaults to 1.0 */ - width: 0, - height: 0 - /* image dimensions, width/height */ - }; - let line2, match; - if (buffer2.pos >= buffer2.byteLength || !(line2 = fgets(buffer2))) { - rgbe_error(rgbe_read_error, "no header found"); - } - if (!(match = line2.match(magic_token_re))) { - rgbe_error(rgbe_format_error, "bad initial token"); - } - header.valid |= RGBE_VALID_PROGRAMTYPE; - header.programtype = match[1]; - header.string += line2 + "\n"; - while (true) { - line2 = fgets(buffer2); - if (false === line2) break; - header.string += line2 + "\n"; - if ("#" === line2.charAt(0)) { - header.comments += line2 + "\n"; - continue; - } - if (match = line2.match(gamma_re)) { - header.gamma = parseFloat(match[1]); - } - if (match = line2.match(exposure_re)) { - header.exposure = parseFloat(match[1]); - } - if (match = line2.match(format_re)) { - header.valid |= RGBE_VALID_FORMAT; - header.format = match[1]; - } - if (match = line2.match(dimensions_re)) { - header.valid |= RGBE_VALID_DIMENSIONS; - header.height = parseInt(match[1], 10); - header.width = parseInt(match[2], 10); - } - if (header.valid & RGBE_VALID_FORMAT && header.valid & RGBE_VALID_DIMENSIONS) break; - } - if (!(header.valid & RGBE_VALID_FORMAT)) { - rgbe_error(rgbe_format_error, "missing format specifier"); - } - if (!(header.valid & RGBE_VALID_DIMENSIONS)) { - rgbe_error(rgbe_format_error, "missing image size specifier"); - } - return header; - }, RGBE_ReadPixels_RLE = function(buffer2, w2, h2) { - const scanline_width = w2; - if ( - // run length encoding is not allowed so read flat - scanline_width < 8 || scanline_width > 32767 || // this file is not run length encoded - (2 !== buffer2[0] || 2 !== buffer2[1] || buffer2[2] & 128) - ) { - return new Uint8Array(buffer2); - } - if (scanline_width !== (buffer2[2] << 8 | buffer2[3])) { - rgbe_error(rgbe_format_error, "wrong scanline width"); - } - const data_rgba = new Uint8Array(4 * w2 * h2); - if (!data_rgba.length) { - rgbe_error(rgbe_memory_error, "unable to allocate buffer space"); - } - let offset = 0, pos = 0; - const ptr_end = 4 * scanline_width; - const rgbeStart = new Uint8Array(4); - const scanline_buffer = new Uint8Array(ptr_end); - let num_scanlines = h2; - while (num_scanlines > 0 && pos < buffer2.byteLength) { - if (pos + 4 > buffer2.byteLength) { - rgbe_error(rgbe_read_error); - } - rgbeStart[0] = buffer2[pos++]; - rgbeStart[1] = buffer2[pos++]; - rgbeStart[2] = buffer2[pos++]; - rgbeStart[3] = buffer2[pos++]; - if (2 != rgbeStart[0] || 2 != rgbeStart[1] || (rgbeStart[2] << 8 | rgbeStart[3]) != scanline_width) { - rgbe_error(rgbe_format_error, "bad rgbe scanline format"); - } - let ptr = 0, count; - while (ptr < ptr_end && pos < buffer2.byteLength) { - count = buffer2[pos++]; - const isEncodedRun = count > 128; - if (isEncodedRun) count -= 128; - if (0 === count || ptr + count > ptr_end) { - rgbe_error(rgbe_format_error, "bad scanline data"); - } - if (isEncodedRun) { - const byteValue = buffer2[pos++]; - for (let i = 0; i < count; i++) { - scanline_buffer[ptr++] = byteValue; - } - } else { - scanline_buffer.set(buffer2.subarray(pos, pos + count), ptr); - ptr += count; - pos += count; - } - } - const l2 = scanline_width; - for (let i = 0; i < l2; i++) { - let off = 0; - data_rgba[offset] = scanline_buffer[i + off]; - off += scanline_width; - data_rgba[offset + 1] = scanline_buffer[i + off]; - off += scanline_width; - data_rgba[offset + 2] = scanline_buffer[i + off]; - off += scanline_width; - data_rgba[offset + 3] = scanline_buffer[i + off]; - offset += 4; - } - num_scanlines--; - } - return data_rgba; - }; - const RGBEByteToRGBFloat = function(sourceArray, sourceOffset, destArray, destOffset) { - const e = sourceArray[sourceOffset + 3]; - const scale2 = Math.pow(2, e - 128) / 255; - destArray[destOffset + 0] = sourceArray[sourceOffset + 0] * scale2; - destArray[destOffset + 1] = sourceArray[sourceOffset + 1] * scale2; - destArray[destOffset + 2] = sourceArray[sourceOffset + 2] * scale2; - destArray[destOffset + 3] = 1; - }; - const RGBEByteToRGBHalf = function(sourceArray, sourceOffset, destArray, destOffset) { - const e = sourceArray[sourceOffset + 3]; - const scale2 = Math.pow(2, e - 128) / 255; - destArray[destOffset + 0] = DataUtils.toHalfFloat(Math.min(sourceArray[sourceOffset + 0] * scale2, 65504)); - destArray[destOffset + 1] = DataUtils.toHalfFloat(Math.min(sourceArray[sourceOffset + 1] * scale2, 65504)); - destArray[destOffset + 2] = DataUtils.toHalfFloat(Math.min(sourceArray[sourceOffset + 2] * scale2, 65504)); - destArray[destOffset + 3] = DataUtils.toHalfFloat(1); - }; - const byteArray = new Uint8Array(buffer); - byteArray.pos = 0; - const rgbe_header_info = RGBE_ReadHeader(byteArray); - const w = rgbe_header_info.width, h = rgbe_header_info.height, image_rgba_data = RGBE_ReadPixels_RLE(byteArray.subarray(byteArray.pos), w, h); - let data2, type; - let numElements; - switch (this.type) { - case FloatType: - numElements = image_rgba_data.length / 4; - const floatArray = new Float32Array(numElements * 4); - for (let j = 0; j < numElements; j++) { - RGBEByteToRGBFloat(image_rgba_data, j * 4, floatArray, j * 4); - } - data2 = floatArray; - type = FloatType; - break; - case HalfFloatType: - numElements = image_rgba_data.length / 4; - const halfArray = new Uint16Array(numElements * 4); - for (let j = 0; j < numElements; j++) { - RGBEByteToRGBHalf(image_rgba_data, j * 4, halfArray, j * 4); - } - data2 = halfArray; - type = HalfFloatType; - break; - default: - throw new Error("THREE.RGBELoader: Unsupported type: " + this.type); - break; - } - return { - width: w, - height: h, - data: data2, - header: rgbe_header_info.string, - gamma: rgbe_header_info.gamma, - exposure: rgbe_header_info.exposure, - type - }; - } - setDataType(value2) { - this.type = value2; - return this; - } - load(url, onLoad, onProgress, onError) { - function onLoadCallback(texture, texData) { - switch (texture.type) { - case FloatType: - case HalfFloatType: - texture.colorSpace = LinearSRGBColorSpace; - texture.minFilter = LinearFilter; - texture.magFilter = LinearFilter; - texture.generateMipmaps = false; - texture.flipY = true; - break; - } - if (onLoad) onLoad(texture, texData); - } - return super.load(url, onLoadCallback, onProgress, onError); - } -}; - -// node_modules/three/examples/jsm/loaders/HDRCubeTextureLoader.js -var HDRCubeTextureLoader = class extends Loader { - constructor(manager) { - super(manager); - this.hdrLoader = new RGBELoader(); - this.type = HalfFloatType; - } - load(urls, onLoad, onProgress, onError) { - const texture = new CubeTexture(); - texture.type = this.type; - switch (texture.type) { - case FloatType: - texture.colorSpace = LinearSRGBColorSpace; - texture.minFilter = LinearFilter; - texture.magFilter = LinearFilter; - texture.generateMipmaps = false; - break; - case HalfFloatType: - texture.colorSpace = LinearSRGBColorSpace; - texture.minFilter = LinearFilter; - texture.magFilter = LinearFilter; - texture.generateMipmaps = false; - break; - } - const scope = this; - let loaded = 0; - function loadHDRData(i, onLoad2, onProgress2, onError2) { - new FileLoader(scope.manager).setPath(scope.path).setResponseType("arraybuffer").setWithCredentials(scope.withCredentials).load(urls[i], function(buffer) { - loaded++; - const texData = scope.hdrLoader.parse(buffer); - if (!texData) return; - if (texData.data !== void 0) { - const dataTexture = new DataTexture(texData.data, texData.width, texData.height); - dataTexture.type = texture.type; - dataTexture.colorSpace = texture.colorSpace; - dataTexture.format = texture.format; - dataTexture.minFilter = texture.minFilter; - dataTexture.magFilter = texture.magFilter; - dataTexture.generateMipmaps = texture.generateMipmaps; - texture.images[i] = dataTexture; - } - if (loaded === 6) { - texture.needsUpdate = true; - if (onLoad2) onLoad2(texture); - } - }, onProgress2, onError2); - } - for (let i = 0; i < urls.length; i++) { - loadHDRData(i, onLoad, onProgress, onError); - } - return texture; - } - setDataType(value2) { - this.type = value2; - this.hdrLoader.setDataType(value2); - return this; - } -}; - -// node_modules/three/examples/jsm/loaders/IESLoader.js -var IESLoader = class extends Loader { - constructor(manager) { - super(manager); - this.type = HalfFloatType; - } - _getIESValues(iesLamp, type) { - const width2 = 360; - const height2 = 180; - const size2 = width2 * height2; - const data2 = new Array(size2); - function interpolateCandelaValues(phi, theta) { - let phiIndex = 0, thetaIndex = 0; - let startTheta2 = 0, endTheta2 = 0, startPhi = 0, endPhi = 0; - for (let i = 0; i < iesLamp.numHorAngles - 1; ++i) { - if (theta < iesLamp.horAngles[i + 1] || i == iesLamp.numHorAngles - 2) { - thetaIndex = i; - startTheta2 = iesLamp.horAngles[i]; - endTheta2 = iesLamp.horAngles[i + 1]; - break; - } - } - for (let i = 0; i < iesLamp.numVerAngles - 1; ++i) { - if (phi < iesLamp.verAngles[i + 1] || i == iesLamp.numVerAngles - 2) { - phiIndex = i; - startPhi = iesLamp.verAngles[i]; - endPhi = iesLamp.verAngles[i + 1]; - break; - } - } - const deltaTheta = endTheta2 - startTheta2; - const deltaPhi = endPhi - startPhi; - if (deltaPhi === 0) - return 0; - const t1 = deltaTheta === 0 ? 0 : (theta - startTheta2) / deltaTheta; - const t22 = (phi - startPhi) / deltaPhi; - const nextThetaIndex = deltaTheta === 0 ? thetaIndex : thetaIndex + 1; - const v12 = MathUtils.lerp(iesLamp.candelaValues[thetaIndex][phiIndex], iesLamp.candelaValues[nextThetaIndex][phiIndex], t1); - const v2 = MathUtils.lerp(iesLamp.candelaValues[thetaIndex][phiIndex + 1], iesLamp.candelaValues[nextThetaIndex][phiIndex + 1], t1); - const v = MathUtils.lerp(v12, v2, t22); - return v; - } - const startTheta = iesLamp.horAngles[0], endTheta = iesLamp.horAngles[iesLamp.numHorAngles - 1]; - for (let i = 0; i < size2; ++i) { - let theta = i % width2; - const phi = Math.floor(i / width2); - if (endTheta - startTheta !== 0 && (theta < startTheta || theta >= endTheta)) { - theta %= endTheta * 2; - if (theta > endTheta) - theta = endTheta * 2 - theta; - } - data2[phi + theta * height2] = interpolateCandelaValues(phi, theta); - } - let result = null; - if (type === UnsignedByteType) result = Uint8Array.from(data2.map((v) => Math.min(v * 255, 255))); - else if (type === HalfFloatType) result = Uint16Array.from(data2.map((v) => DataUtils.toHalfFloat(v))); - else if (type === FloatType) result = Float32Array.from(data2); - else console.error("IESLoader: Unsupported type:", type); - return result; - } - load(url, onLoad, onProgress, onError) { - const loader = new FileLoader(this.manager); - loader.setResponseType("text"); - loader.setCrossOrigin(this.crossOrigin); - loader.setWithCredentials(this.withCredentials); - loader.setPath(this.path); - loader.setRequestHeader(this.requestHeader); - loader.load(url, (text2) => { - onLoad(this.parse(text2)); - }, onProgress, onError); - } - parse(text2) { - const type = this.type; - const iesLamp = new IESLamp(text2); - const data2 = this._getIESValues(iesLamp, type); - const texture = new DataTexture(data2, 180, 1, RedFormat, type); - texture.minFilter = LinearFilter; - texture.magFilter = LinearFilter; - texture.needsUpdate = true; - return texture; - } -}; -function IESLamp(text2) { - const _self = this; - const textArray = text2.split("\n"); - let lineNumber = 0; - let line2; - _self.verAngles = []; - _self.horAngles = []; - _self.candelaValues = []; - _self.tiltData = {}; - _self.tiltData.angles = []; - _self.tiltData.mulFactors = []; - function textToArray(text3) { - text3 = text3.replace(/^\s+|\s+$/g, ""); - text3 = text3.replace(/,/g, " "); - text3 = text3.replace(/\s\s+/g, " "); - const array = text3.split(" "); - return array; - } - function readArray(count, array) { - while (true) { - const line3 = textArray[lineNumber++]; - const lineData = textToArray(line3); - for (let i = 0; i < lineData.length; ++i) { - array.push(Number(lineData[i])); - } - if (array.length === count) - break; - } - } - function readTilt() { - let line3 = textArray[lineNumber++]; - let lineData = textToArray(line3); - _self.tiltData.lampToLumGeometry = Number(lineData[0]); - line3 = textArray[lineNumber++]; - lineData = textToArray(line3); - _self.tiltData.numAngles = Number(lineData[0]); - readArray(_self.tiltData.numAngles, _self.tiltData.angles); - readArray(_self.tiltData.numAngles, _self.tiltData.mulFactors); - } - function readLampValues() { - const values2 = []; - readArray(10, values2); - _self.count = Number(values2[0]); - _self.lumens = Number(values2[1]); - _self.multiplier = Number(values2[2]); - _self.numVerAngles = Number(values2[3]); - _self.numHorAngles = Number(values2[4]); - _self.gonioType = Number(values2[5]); - _self.units = Number(values2[6]); - _self.width = Number(values2[7]); - _self.length = Number(values2[8]); - _self.height = Number(values2[9]); - } - function readLampFactors() { - const values2 = []; - readArray(3, values2); - _self.ballFactor = Number(values2[0]); - _self.blpFactor = Number(values2[1]); - _self.inputWatts = Number(values2[2]); - } - while (true) { - line2 = textArray[lineNumber++]; - if (line2.includes("TILT")) { - break; - } - } - if (!line2.includes("NONE")) { - if (line2.includes("INCLUDE")) { - readTilt(); - } else { - } - } - readLampValues(); - readLampFactors(); - for (let i = 0; i < _self.numHorAngles; ++i) { - _self.candelaValues.push([]); - } - readArray(_self.numVerAngles, _self.verAngles); - readArray(_self.numHorAngles, _self.horAngles); - for (let i = 0; i < _self.numHorAngles; ++i) { - readArray(_self.numVerAngles, _self.candelaValues[i]); - } - for (let i = 0; i < _self.numHorAngles; ++i) { - for (let j = 0; j < _self.numVerAngles; ++j) { - _self.candelaValues[i][j] *= _self.candelaValues[i][j] * _self.multiplier * _self.ballFactor * _self.blpFactor; - } - } - let maxVal = -1; - for (let i = 0; i < _self.numHorAngles; ++i) { - for (let j = 0; j < _self.numVerAngles; ++j) { - const value2 = _self.candelaValues[i][j]; - maxVal = maxVal < value2 ? value2 : maxVal; - } - } - const bNormalize = true; - if (bNormalize && maxVal > 0) { - for (let i = 0; i < _self.numHorAngles; ++i) { - for (let j = 0; j < _self.numVerAngles; ++j) { - _self.candelaValues[i][j] /= maxVal; - } - } - } -} - -// node_modules/three/examples/jsm/loaders/KMZLoader.js -var KMZLoader = class extends Loader { - constructor(manager) { - super(manager); - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(scope.manager); - loader.setPath(scope.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(scope.requestHeader); - loader.setWithCredentials(scope.withCredentials); - loader.load(url, function(text2) { - try { - onLoad(scope.parse(text2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(data2) { - function findFile(url) { - for (const path in zip) { - if (path.slice(-url.length) === url) { - return zip[path]; - } - } - } - const manager = new LoadingManager(); - manager.setURLModifier(function(url) { - const image = findFile(url); - if (image) { - console.log("Loading", url); - const blob = new Blob([image.buffer], { type: "application/octet-stream" }); - return URL.createObjectURL(blob); - } - return url; - }); - const zip = unzipSync(new Uint8Array(data2)); - if (zip["doc.kml"]) { - const xml = new DOMParser().parseFromString(strFromU8(zip["doc.kml"]), "application/xml"); - const model = xml.querySelector("Placemark Model Link href"); - if (model) { - const loader = new ColladaLoader(manager); - return loader.parse(strFromU8(zip[model.textContent])); - } - } else { - console.warn("KMZLoader: Missing doc.kml file."); - for (const path in zip) { - const extension = path.split(".").pop().toLowerCase(); - if (extension === "dae") { - const loader = new ColladaLoader(manager); - return loader.parse(strFromU8(zip[path])); - } - } - } - console.error("KMZLoader: Couldn't find .dae file."); - return { scene: new Group() }; - } -}; - -// node_modules/three/examples/jsm/utils/WorkerPool.js -var WorkerPool = class { - constructor(pool = 4) { - this.pool = pool; - this.queue = []; - this.workers = []; - this.workersResolve = []; - this.workerStatus = 0; - } - _initWorker(workerId) { - if (!this.workers[workerId]) { - const worker = this.workerCreator(); - worker.addEventListener("message", this._onMessage.bind(this, workerId)); - this.workers[workerId] = worker; - } - } - _getIdleWorker() { - for (let i = 0; i < this.pool; i++) - if (!(this.workerStatus & 1 << i)) return i; - return -1; - } - _onMessage(workerId, msg) { - const resolve = this.workersResolve[workerId]; - resolve && resolve(msg); - if (this.queue.length) { - const { resolve: resolve2, msg: msg2, transfer } = this.queue.shift(); - this.workersResolve[workerId] = resolve2; - this.workers[workerId].postMessage(msg2, transfer); - } else { - this.workerStatus ^= 1 << workerId; - } - } - setWorkerCreator(workerCreator) { - this.workerCreator = workerCreator; - } - setWorkerLimit(pool) { - this.pool = pool; - } - postMessage(msg, transfer) { - return new Promise((resolve) => { - const workerId = this._getIdleWorker(); - if (workerId !== -1) { - this._initWorker(workerId); - this.workerStatus |= 1 << workerId; - this.workersResolve[workerId] = resolve; - this.workers[workerId].postMessage(msg, transfer); - } else { - this.queue.push({ resolve, msg, transfer }); - } - }); - } - dispose() { - this.workers.forEach((worker) => worker.terminate()); - this.workersResolve.length = 0; - this.workers.length = 0; - this.queue.length = 0; - this.workerStatus = 0; - } -}; - -// node_modules/three/examples/jsm/libs/zstddec.module.js -var A; -var I; -var B; -var g = { env: { emscripten_notify_memory_growth: function(A2) { - B = new Uint8Array(I.exports.memory.buffer); -} } }; -var Q2 = class { - init() { - return A || (A = "undefined" != typeof fetch ? fetch("data:application/wasm;base64," + C).then((A2) => A2.arrayBuffer()).then((A2) => WebAssembly.instantiate(A2, g)).then(this._init) : WebAssembly.instantiate(Buffer.from(C, "base64"), g).then(this._init), A); - } - _init(A2) { - I = A2.instance, g.env.emscripten_notify_memory_growth(0); - } - decode(A2, g2 = 0) { - if (!I) throw new Error("ZSTDDecoder: Await .init() before decoding."); - const Q3 = A2.byteLength, C2 = I.exports.malloc(Q3); - B.set(A2, C2), g2 = g2 || Number(I.exports.ZSTD_findDecompressedSize(C2, Q3)); - const E2 = I.exports.malloc(g2), i = I.exports.ZSTD_decompress(E2, g2, C2, Q3), D = B.slice(E2, E2 + i); - return I.exports.free(C2), I.exports.free(E2), D; - } -}; -var C = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY0AAQMyIFEAMiBg0AIANBHzYCfCADIANB/ABqIANB+ABqIAQgBCAFaiAGGyIEIAEgAmoiAiAEaxAVIgUQAw0AIAMoAnwiBkEfSw0AIAMoAngiB0EJTw0AIABBiCBqIAMgBkGAC0GADCAHEBggA0E0NgJ8IAMgA0H8AGogA0H4AGogBCAFaiIEIAIgBGsQFSIFEAMNACADKAJ8IgZBNEsNACADKAJ4IgdBCk8NACAAQZAwaiADIAZBgA1B4A4gBxAYIANBIzYCfCADIANB/ABqIANB+ABqIAQgBWoiBCACIARrEBUiBRADDQAgAygCfCIGQSNLDQAgAygCeCIHQQpPDQAgACADIAZBwBBB0BEgBxAYIAQgBWoiBEEMaiIFIAJLDQAgAiAFayEFQQAhAgNAIAJBA0cEQCAEKAAAIgZBf2ogBU8NAiAAIAJBAnRqQZzQAWogBjYCACACQQFqIQIgBEEEaiEEDAELCyAEIAFrIQgLIANBgAFqJAAgCAtGAQN/IABBCGohAyAAKAIEIQJBACEAA0AgACACdkUEQCABIAMgAEEDdGotAAJBFktqIQEgAEEBaiEADAELCyABQQggAmt0C4YDAQV/Qbh/IQcCQCADRQ0AIAItAAAiBEUEQCABQQA2AgBBAUG4fyADQQFGGw8LAn8gAkEBaiIFIARBGHRBGHUiBkF/Sg0AGiAGQX9GBEAgA0EDSA0CIAUvAABBgP4BaiEEIAJBA2oMAQsgA0ECSA0BIAItAAEgBEEIdHJBgIB+aiEEIAJBAmoLIQUgASAENgIAIAVBAWoiASACIANqIgNLDQBBbCEHIABBEGogACAFLQAAIgVBBnZBI0EJIAEgAyABa0HAEEHQEUHwEiAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBmCBqIABBCGogBUEEdkEDcUEfQQggASABIAZqIAgbIgEgAyABa0GAC0GADEGAFyAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBoDBqIABBBGogBUECdkEDcUE0QQkgASABIAZqIAgbIgEgAyABa0GADUHgDkGQGSAAKAKM4QEgACgCnOIBIAQQHyIAEAMNACAAIAFqIAJrIQcLIAcLrQMBCn8jAEGABGsiCCQAAn9BUiACQf8BSw0AGkFUIANBDEsNABogAkEBaiELIABBBGohCUGAgAQgA0F/anRBEHUhCkEAIQJBASEEQQEgA3QiB0F/aiIMIQUDQCACIAtGRQRAAkAgASACQQF0Ig1qLwEAIgZB//8DRgRAIAkgBUECdGogAjoAAiAFQX9qIQVBASEGDAELIARBACAKIAZBEHRBEHVKGyEECyAIIA1qIAY7AQAgAkEBaiECDAELCyAAIAQ7AQIgACADOwEAIAdBA3YgB0EBdmpBA2ohBkEAIQRBACECA0AgBCALRkUEQCABIARBAXRqLgEAIQpBACEAA0AgACAKTkUEQCAJIAJBAnRqIAQ6AAIDQCACIAZqIAxxIgIgBUsNAAsgAEEBaiEADAELCyAEQQFqIQQMAQsLQX8gAg0AGkEAIQIDfyACIAdGBH9BAAUgCCAJIAJBAnRqIgAtAAJBAXRqIgEgAS8BACIBQQFqOwEAIAAgAyABEBRrIgU6AAMgACABIAVB/wFxdCAHazsBACACQQFqIQIMAQsLCyEFIAhBgARqJAAgBQvjBgEIf0FsIQcCQCACQQNJDQACQAJAAkACQCABLQAAIgNBA3EiCUEBaw4DAwEAAgsgACgCiOEBDQBBYg8LIAJBBUkNAkEDIQYgASgAACEFAn8CQAJAIANBAnZBA3EiCEF+aiIEQQFNBEAgBEEBaw0BDAILIAVBDnZB/wdxIQQgBUEEdkH/B3EhAyAIRQwCCyAFQRJ2IQRBBCEGIAVBBHZB//8AcSEDQQAMAQsgBUEEdkH//w9xIgNBgIAISw0DIAEtAARBCnQgBUEWdnIhBEEFIQZBAAshBSAEIAZqIgogAksNAgJAIANBgQZJDQAgACgCnOIBRQ0AQQAhAgNAIAJBg4ABSw0BIAJBQGshAgwAAAsACwJ/IAlBA0YEQCABIAZqIQEgAEHw4gFqIQIgACgCDCEGIAUEQCACIAMgASAEIAYQXwwCCyACIAMgASAEIAYQXQwBCyAAQbjQAWohAiABIAZqIQEgAEHw4gFqIQYgAEGo0ABqIQggBQRAIAggBiADIAEgBCACEF4MAQsgCCAGIAMgASAEIAIQXAsQAw0CIAAgAzYCgOIBIABBATYCiOEBIAAgAEHw4gFqNgLw4QEgCUECRgRAIAAgAEGo0ABqNgIMCyAAIANqIgBBiOMBakIANwAAIABBgOMBakIANwAAIABB+OIBakIANwAAIABB8OIBakIANwAAIAoPCwJ/AkACQAJAIANBAnZBA3FBf2oiBEECSw0AIARBAWsOAgACAQtBASEEIANBA3YMAgtBAiEEIAEvAABBBHYMAQtBAyEEIAEQIUEEdgsiAyAEaiIFQSBqIAJLBEAgBSACSw0CIABB8OIBaiABIARqIAMQCyEBIAAgAzYCgOIBIAAgATYC8OEBIAEgA2oiAEIANwAYIABCADcAECAAQgA3AAggAEIANwAAIAUPCyAAIAM2AoDiASAAIAEgBGo2AvDhASAFDwsCfwJAAkACQCADQQJ2QQNxQX9qIgRBAksNACAEQQFrDgIAAgELQQEhByADQQN2DAILQQIhByABLwAAQQR2DAELIAJBBEkgARAhIgJBj4CAAUtyDQFBAyEHIAJBBHYLIQIgAEHw4gFqIAEgB2otAAAgAkEgahAQIQEgACACNgKA4gEgACABNgLw4QEgB0EBaiEHCyAHC0sAIABC+erQ0OfJoeThADcDICAAQgA3AxggAELP1tO+0ser2UI3AxAgAELW64Lu6v2J9eAANwMIIABCADcDACAAQShqQQBBKBAQGgviAgICfwV+IABBKGoiASAAKAJIaiECAn4gACkDACIDQiBaBEAgACkDECIEQgeJIAApAwgiBUIBiXwgACkDGCIGQgyJfCAAKQMgIgdCEol8IAUQGSAEEBkgBhAZIAcQGQwBCyAAKQMYQsXP2bLx5brqJ3wLIAN8IQMDQCABQQhqIgAgAk0EQEIAIAEpAAAQCSADhUIbiUKHla+vmLbem55/fkLj3MqV/M7y9YV/fCEDIAAhAQwBCwsCQCABQQRqIgAgAksEQCABIQAMAQsgASgAAK1Ch5Wvr5i23puef34gA4VCF4lCz9bTvtLHq9lCfkL5893xmfaZqxZ8IQMLA0AgACACSQRAIAAxAABCxc/ZsvHluuonfiADhUILiUKHla+vmLbem55/fiEDIABBAWohAAwBCwsgA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC+8CAgJ/BH4gACAAKQMAIAKtfDcDAAJAAkAgACgCSCIDIAJqIgRBH00EQCABRQ0BIAAgA2pBKGogASACECAgACgCSCACaiEEDAELIAEgAmohAgJ/IAMEQCAAQShqIgQgA2ogAUEgIANrECAgACAAKQMIIAQpAAAQCTcDCCAAIAApAxAgACkAMBAJNwMQIAAgACkDGCAAKQA4EAk3AxggACAAKQMgIABBQGspAAAQCTcDICAAKAJIIQMgAEEANgJIIAEgA2tBIGohAQsgAUEgaiACTQsEQCACQWBqIQMgACkDICEFIAApAxghBiAAKQMQIQcgACkDCCEIA0AgCCABKQAAEAkhCCAHIAEpAAgQCSEHIAYgASkAEBAJIQYgBSABKQAYEAkhBSABQSBqIgEgA00NAAsgACAFNwMgIAAgBjcDGCAAIAc3AxAgACAINwMICyABIAJPDQEgAEEoaiABIAIgAWsiBBAgCyAAIAQ2AkgLCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQEBogAwVBun8LCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQCxogAwVBun8LC6gCAQZ/IwBBEGsiByQAIABB2OABaikDAEKAgIAQViEIQbh/IQUCQCAEQf//B0sNACAAIAMgBBBCIgUQAyIGDQAgACgCnOIBIQkgACAHQQxqIAMgAyAFaiAGGyIKIARBACAFIAYbayIGEEAiAxADBEAgAyEFDAELIAcoAgwhBCABRQRAQbp/IQUgBEEASg0BCyAGIANrIQUgAyAKaiEDAkAgCQRAIABBADYCnOIBDAELAkACQAJAIARBBUgNACAAQdjgAWopAwBCgICACFgNAAwBCyAAQQA2ApziAQwBCyAAKAIIED8hBiAAQQA2ApziASAGQRRPDQELIAAgASACIAMgBSAEIAgQOSEFDAELIAAgASACIAMgBSAEIAgQOiEFCyAHQRBqJAAgBQtnACAAQdDgAWogASACIAAoAuzhARAuIgEQAwRAIAEPC0G4fyECAkAgAQ0AIABB7OABaigCACIBBEBBYCECIAAoApjiASABRw0BC0EAIQIgAEHw4AFqKAIARQ0AIABBkOEBahBDCyACCycBAX8QVyIERQRAQUAPCyAEIAAgASACIAMgBBBLEE8hACAEEFYgAAs/AQF/AkACQAJAIAAoAqDiAUEBaiIBQQJLDQAgAUEBaw4CAAECCyAAEDBBAA8LIABBADYCoOIBCyAAKAKU4gELvAMCB38BfiMAQRBrIgkkAEG4fyEGAkAgBCgCACIIQQVBCSAAKALs4QEiBRtJDQAgAygCACIHQQFBBSAFGyAFEC8iBRADBEAgBSEGDAELIAggBUEDakkNACAAIAcgBRBJIgYQAw0AIAEgAmohCiAAQZDhAWohCyAIIAVrIQIgBSAHaiEHIAEhBQNAIAcgAiAJECwiBhADDQEgAkF9aiICIAZJBEBBuH8hBgwCCyAJKAIAIghBAksEQEFsIQYMAgsgB0EDaiEHAn8CQAJAAkAgCEEBaw4CAgABCyAAIAUgCiAFayAHIAYQSAwCCyAFIAogBWsgByAGEEcMAQsgBSAKIAVrIActAAAgCSgCCBBGCyIIEAMEQCAIIQYMAgsgACgC8OABBEAgCyAFIAgQRQsgAiAGayECIAYgB2ohByAFIAhqIQUgCSgCBEUNAAsgACkD0OABIgxCf1IEQEFsIQYgDCAFIAFrrFINAQsgACgC8OABBEBBaiEGIAJBBEkNASALEEQhDCAHKAAAIAynRw0BIAdBBGohByACQXxqIQILIAMgBzYCACAEIAI2AgAgBSABayEGCyAJQRBqJAAgBgsuACAAECsCf0EAQQAQAw0AGiABRSACRXJFBEBBYiAAIAEgAhA9EAMNARoLQQALCzcAIAEEQCAAIAAoAsTgASABKAIEIAEoAghqRzYCnOIBCyAAECtBABADIAFFckUEQCAAIAEQWwsL0QIBB38jAEEQayIGJAAgBiAENgIIIAYgAzYCDCAFBEAgBSgCBCEKIAUoAgghCQsgASEIAkACQANAIAAoAuzhARAWIQsCQANAIAQgC0kNASADKAAAQXBxQdDUtMIBRgRAIAMgBBAiIgcQAw0EIAQgB2shBCADIAdqIQMMAQsLIAYgAzYCDCAGIAQ2AggCQCAFBEAgACAFEE5BACEHQQAQA0UNAQwFCyAAIAogCRBNIgcQAw0ECyAAIAgQUCAMQQFHQQAgACAIIAIgBkEMaiAGQQhqEEwiByIDa0EAIAMQAxtBCkdyRQRAQbh/IQcMBAsgBxADDQMgAiAHayECIAcgCGohCEEBIQwgBigCDCEDIAYoAgghBAwBCwsgBiADNgIMIAYgBDYCCEG4fyEHIAQNASAIIAFrIQcMAQsgBiADNgIMIAYgBDYCCAsgBkEQaiQAIAcLRgECfyABIAAoArjgASICRwRAIAAgAjYCxOABIAAgATYCuOABIAAoArzgASEDIAAgATYCvOABIAAgASADIAJrajYCwOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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"; - -// node_modules/three/examples/jsm/loaders/KTX2Loader.js -var _taskCache3 = /* @__PURE__ */ new WeakMap(); -var _activeLoaders = 0; -var _zstd; -var KTX2Loader = class _KTX2Loader extends Loader { - constructor(manager) { - super(manager); - this.transcoderPath = ""; - this.transcoderBinary = null; - this.transcoderPending = null; - this.workerPool = new WorkerPool(); - this.workerSourceURL = ""; - this.workerConfig = null; - if (typeof MSC_TRANSCODER !== "undefined") { - console.warn( - 'THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.' - ); - } - } - setTranscoderPath(path) { - this.transcoderPath = path; - return this; - } - setWorkerLimit(num) { - this.workerPool.setWorkerLimit(num); - return this; - } - async detectSupportAsync(renderer2) { - this.workerConfig = { - astcSupported: await renderer2.hasFeatureAsync("texture-compression-astc"), - etc1Supported: await renderer2.hasFeatureAsync("texture-compression-etc1"), - etc2Supported: await renderer2.hasFeatureAsync("texture-compression-etc2"), - dxtSupported: await renderer2.hasFeatureAsync("texture-compression-bc"), - bptcSupported: await renderer2.hasFeatureAsync("texture-compression-bptc"), - pvrtcSupported: await renderer2.hasFeatureAsync("texture-compression-pvrtc") - }; - return this; - } - detectSupport(renderer2) { - if (renderer2.isWebGPURenderer === true) { - this.workerConfig = { - astcSupported: renderer2.hasFeature("texture-compression-astc"), - etc1Supported: renderer2.hasFeature("texture-compression-etc1"), - etc2Supported: renderer2.hasFeature("texture-compression-etc2"), - dxtSupported: renderer2.hasFeature("texture-compression-bc"), - bptcSupported: renderer2.hasFeature("texture-compression-bptc"), - pvrtcSupported: renderer2.hasFeature("texture-compression-pvrtc") - }; - } else { - this.workerConfig = { - astcSupported: renderer2.extensions.has("WEBGL_compressed_texture_astc"), - etc1Supported: renderer2.extensions.has("WEBGL_compressed_texture_etc1"), - etc2Supported: renderer2.extensions.has("WEBGL_compressed_texture_etc"), - dxtSupported: renderer2.extensions.has("WEBGL_compressed_texture_s3tc"), - bptcSupported: renderer2.extensions.has("EXT_texture_compression_bptc"), - pvrtcSupported: renderer2.extensions.has("WEBGL_compressed_texture_pvrtc") || renderer2.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc") - }; - } - return this; - } - init() { - if (!this.transcoderPending) { - const jsLoader = new FileLoader(this.manager); - jsLoader.setPath(this.transcoderPath); - jsLoader.setWithCredentials(this.withCredentials); - const jsContent = jsLoader.loadAsync("basis_transcoder.js"); - const binaryLoader = new FileLoader(this.manager); - binaryLoader.setPath(this.transcoderPath); - binaryLoader.setResponseType("arraybuffer"); - binaryLoader.setWithCredentials(this.withCredentials); - const binaryContent = binaryLoader.loadAsync("basis_transcoder.wasm"); - this.transcoderPending = Promise.all([jsContent, binaryContent]).then(([jsContent2, binaryContent2]) => { - const fn = _KTX2Loader.BasisWorker.toString(); - const body = [ - "/* constants */", - "let _EngineFormat = " + JSON.stringify(_KTX2Loader.EngineFormat), - "let _TranscoderFormat = " + JSON.stringify(_KTX2Loader.TranscoderFormat), - "let _BasisFormat = " + JSON.stringify(_KTX2Loader.BasisFormat), - "/* basis_transcoder.js */", - jsContent2, - "/* worker */", - fn.substring(fn.indexOf("{") + 1, fn.lastIndexOf("}")) - ].join("\n"); - this.workerSourceURL = URL.createObjectURL(new Blob([body])); - this.transcoderBinary = binaryContent2; - this.workerPool.setWorkerCreator(() => { - const worker = new Worker(this.workerSourceURL); - const transcoderBinary = this.transcoderBinary.slice(0); - worker.postMessage({ type: "init", config: this.workerConfig, transcoderBinary }, [transcoderBinary]); - return worker; - }); - }); - if (_activeLoaders > 0) { - console.warn( - "THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances." - ); - } - _activeLoaders++; - } - return this.transcoderPending; - } - load(url, onLoad, onProgress, onError) { - if (this.workerConfig === null) { - throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`."); - } - const loader = new FileLoader(this.manager); - loader.setResponseType("arraybuffer"); - loader.setWithCredentials(this.withCredentials); - loader.load(url, (buffer) => { - if (_taskCache3.has(buffer)) { - const cachedTask = _taskCache3.get(buffer); - return cachedTask.promise.then(onLoad).catch(onError); - } - this._createTexture(buffer).then((texture) => onLoad ? onLoad(texture) : null).catch(onError); - }, onProgress, onError); - } - _createTextureFrom(transcodeResult, container) { - const { faces, width: width2, height: height2, format, type, error, dfdFlags } = transcodeResult; - if (type === "error") return Promise.reject(error); - let texture; - if (container.faceCount === 6) { - texture = new CompressedCubeTexture(faces, format, UnsignedByteType); - } else { - const mipmaps = faces[0].mipmaps; - texture = container.layerCount > 1 ? new CompressedArrayTexture(mipmaps, width2, height2, container.layerCount, format, UnsignedByteType) : new CompressedTexture(mipmaps, width2, height2, format, UnsignedByteType); - } - texture.minFilter = faces[0].mipmaps.length === 1 ? LinearFilter : LinearMipmapLinearFilter; - texture.magFilter = LinearFilter; - texture.generateMipmaps = false; - texture.needsUpdate = true; - texture.colorSpace = parseColorSpace(container); - texture.premultiplyAlpha = !!(dfdFlags & p); - return texture; - } - /** - * @param {ArrayBuffer} buffer - * @param {object?} config - * @return {Promise} - */ - async _createTexture(buffer, config = {}) { - const container = Pi(new Uint8Array(buffer)); - if (container.vkFormat !== nt) { - return createRawTexture(container); - } - const taskConfig = config; - const texturePending = this.init().then(() => { - return this.workerPool.postMessage({ type: "transcode", buffer, taskConfig }, [buffer]); - }).then((e) => this._createTextureFrom(e.data, container)); - _taskCache3.set(buffer, { promise: texturePending }); - return texturePending; - } - dispose() { - this.workerPool.dispose(); - if (this.workerSourceURL) URL.revokeObjectURL(this.workerSourceURL); - _activeLoaders--; - return this; - } -}; -KTX2Loader.BasisFormat = { - ETC1S: 0, - UASTC_4x4: 1 -}; -KTX2Loader.TranscoderFormat = { - ETC1: 0, - ETC2: 1, - BC1: 2, - BC3: 3, - BC4: 4, - BC5: 5, - BC7_M6_OPAQUE_ONLY: 6, - BC7_M5: 7, - PVRTC1_4_RGB: 8, - PVRTC1_4_RGBA: 9, - ASTC_4x4: 10, - ATC_RGB: 11, - ATC_RGBA_INTERPOLATED_ALPHA: 12, - RGBA32: 13, - RGB565: 14, - BGR565: 15, - RGBA4444: 16 -}; -KTX2Loader.EngineFormat = { - RGBAFormat, - RGBA_ASTC_4x4_Format, - RGBA_BPTC_Format, - RGBA_ETC2_EAC_Format, - RGBA_PVRTC_4BPPV1_Format, - RGBA_S3TC_DXT5_Format, - RGB_ETC1_Format, - RGB_ETC2_Format, - RGB_PVRTC_4BPPV1_Format, - RGBA_S3TC_DXT1_Format -}; -KTX2Loader.BasisWorker = function() { - let config; - let transcoderPending; - let BasisModule; - const EngineFormat = _EngineFormat; - const TranscoderFormat = _TranscoderFormat; - const BasisFormat = _BasisFormat; - self.addEventListener("message", function(e) { - const message = e.data; - switch (message.type) { - case "init": - config = message.config; - init(message.transcoderBinary); - break; - case "transcode": - transcoderPending.then(() => { - try { - const { faces, buffers, width: width2, height: height2, hasAlpha, format, dfdFlags } = transcode(message.buffer); - self.postMessage({ type: "transcode", id: message.id, faces, width: width2, height: height2, hasAlpha, format, dfdFlags }, buffers); - } catch (error) { - console.error(error); - self.postMessage({ type: "error", id: message.id, error: error.message }); - } - }); - break; - } - }); - function init(wasmBinary) { - transcoderPending = new Promise((resolve) => { - BasisModule = { wasmBinary, onRuntimeInitialized: resolve }; - BASIS(BasisModule); - }).then(() => { - BasisModule.initializeBasis(); - if (BasisModule.KTX2File === void 0) { - console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder."); - } - }); - } - function transcode(buffer) { - const ktx2File = new BasisModule.KTX2File(new Uint8Array(buffer)); - function cleanup() { - ktx2File.close(); - ktx2File.delete(); - } - if (!ktx2File.isValid()) { - cleanup(); - throw new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file"); - } - const basisFormat = ktx2File.isUASTC() ? BasisFormat.UASTC_4x4 : BasisFormat.ETC1S; - const width2 = ktx2File.getWidth(); - const height2 = ktx2File.getHeight(); - const layerCount = ktx2File.getLayers() || 1; - const levelCount = ktx2File.getLevels(); - const faceCount = ktx2File.getFaces(); - const hasAlpha = ktx2File.getHasAlpha(); - const dfdFlags = ktx2File.getDFDFlags(); - const { transcoderFormat, engineFormat } = getTranscoderFormat(basisFormat, width2, height2, hasAlpha); - if (!width2 || !height2 || !levelCount) { - cleanup(); - throw new Error("THREE.KTX2Loader: Invalid texture"); - } - if (!ktx2File.startTranscoding()) { - cleanup(); - throw new Error("THREE.KTX2Loader: .startTranscoding failed"); - } - const faces = []; - const buffers = []; - for (let face = 0; face < faceCount; face++) { - const mipmaps = []; - for (let mip = 0; mip < levelCount; mip++) { - const layerMips = []; - let mipWidth, mipHeight; - for (let layer = 0; layer < layerCount; layer++) { - const levelInfo = ktx2File.getImageLevelInfo(mip, layer, face); - if (face === 0 && mip === 0 && layer === 0 && (levelInfo.origWidth % 4 !== 0 || levelInfo.origHeight % 4 !== 0)) { - console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."); - } - if (levelCount > 1) { - mipWidth = levelInfo.origWidth; - mipHeight = levelInfo.origHeight; - } else { - mipWidth = levelInfo.width; - mipHeight = levelInfo.height; - } - const dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, transcoderFormat)); - const status = ktx2File.transcodeImage(dst, mip, layer, face, transcoderFormat, 0, -1, -1); - if (!status) { - cleanup(); - throw new Error("THREE.KTX2Loader: .transcodeImage failed."); - } - layerMips.push(dst); - } - const mipData = concat(layerMips); - mipmaps.push({ data: mipData, width: mipWidth, height: mipHeight }); - buffers.push(mipData.buffer); - } - faces.push({ mipmaps, width: width2, height: height2, format: engineFormat }); - } - cleanup(); - return { faces, buffers, width: width2, height: height2, hasAlpha, format: engineFormat, dfdFlags }; - } - const FORMAT_OPTIONS = [ - { - if: "astcSupported", - basisFormat: [BasisFormat.UASTC_4x4], - transcoderFormat: [TranscoderFormat.ASTC_4x4, TranscoderFormat.ASTC_4x4], - engineFormat: [EngineFormat.RGBA_ASTC_4x4_Format, EngineFormat.RGBA_ASTC_4x4_Format], - priorityETC1S: Infinity, - priorityUASTC: 1, - needsPowerOfTwo: false - }, - { - if: "bptcSupported", - basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4], - transcoderFormat: [TranscoderFormat.BC7_M5, TranscoderFormat.BC7_M5], - engineFormat: [EngineFormat.RGBA_BPTC_Format, EngineFormat.RGBA_BPTC_Format], - priorityETC1S: 3, - priorityUASTC: 2, - needsPowerOfTwo: false - }, - { - if: "dxtSupported", - basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4], - transcoderFormat: [TranscoderFormat.BC1, TranscoderFormat.BC3], - engineFormat: [EngineFormat.RGBA_S3TC_DXT1_Format, EngineFormat.RGBA_S3TC_DXT5_Format], - priorityETC1S: 4, - priorityUASTC: 5, - needsPowerOfTwo: false - }, - { - if: "etc2Supported", - basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4], - transcoderFormat: [TranscoderFormat.ETC1, TranscoderFormat.ETC2], - engineFormat: [EngineFormat.RGB_ETC2_Format, EngineFormat.RGBA_ETC2_EAC_Format], - priorityETC1S: 1, - priorityUASTC: 3, - needsPowerOfTwo: false - }, - { - if: "etc1Supported", - basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4], - transcoderFormat: [TranscoderFormat.ETC1], - engineFormat: [EngineFormat.RGB_ETC1_Format], - priorityETC1S: 2, - priorityUASTC: 4, - needsPowerOfTwo: false - }, - { - if: "pvrtcSupported", - basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4], - transcoderFormat: [TranscoderFormat.PVRTC1_4_RGB, TranscoderFormat.PVRTC1_4_RGBA], - engineFormat: [EngineFormat.RGB_PVRTC_4BPPV1_Format, EngineFormat.RGBA_PVRTC_4BPPV1_Format], - priorityETC1S: 5, - priorityUASTC: 6, - needsPowerOfTwo: true - } - ]; - const ETC1S_OPTIONS = FORMAT_OPTIONS.sort(function(a2, b3) { - return a2.priorityETC1S - b3.priorityETC1S; - }); - const UASTC_OPTIONS = FORMAT_OPTIONS.sort(function(a2, b3) { - return a2.priorityUASTC - b3.priorityUASTC; - }); - function getTranscoderFormat(basisFormat, width2, height2, hasAlpha) { - let transcoderFormat; - let engineFormat; - const options = basisFormat === BasisFormat.ETC1S ? ETC1S_OPTIONS : UASTC_OPTIONS; - for (let i = 0; i < options.length; i++) { - const opt = options[i]; - if (!config[opt.if]) continue; - if (!opt.basisFormat.includes(basisFormat)) continue; - if (hasAlpha && opt.transcoderFormat.length < 2) continue; - if (opt.needsPowerOfTwo && !(isPowerOfTwo(width2) && isPowerOfTwo(height2))) continue; - transcoderFormat = opt.transcoderFormat[hasAlpha ? 1 : 0]; - engineFormat = opt.engineFormat[hasAlpha ? 1 : 0]; - return { transcoderFormat, engineFormat }; - } - console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."); - transcoderFormat = TranscoderFormat.RGBA32; - engineFormat = EngineFormat.RGBAFormat; - return { transcoderFormat, engineFormat }; - } - function isPowerOfTwo(value2) { - if (value2 <= 2) return true; - return (value2 & value2 - 1) === 0 && value2 !== 0; - } - function concat(arrays) { - if (arrays.length === 1) return arrays[0]; - let totalByteLength = 0; - for (let i = 0; i < arrays.length; i++) { - const array = arrays[i]; - totalByteLength += array.byteLength; - } - const result = new Uint8Array(totalByteLength); - let byteOffset = 0; - for (let i = 0; i < arrays.length; i++) { - const array = arrays[i]; - result.set(array, byteOffset); - byteOffset += array.byteLength; - } - return result; - } -}; -var UNCOMPRESSED_FORMATS = /* @__PURE__ */ new Set([RGBAFormat, RGFormat, RedFormat]); -var FORMAT_MAP = { - [Ae]: RGBAFormat, - [pe]: RGBAFormat, - [Ot]: RGBAFormat, - [Ft]: RGBAFormat, - [de]: RGFormat, - [se]: RGFormat, - [yt]: RGFormat, - [dt]: RGFormat, - [xe]: RedFormat, - [$t]: RedFormat, - [gt]: RedFormat, - [ct]: RedFormat, - [In]: RGBA_ASTC_6x6_Format, - [Sn]: RGBA_ASTC_6x6_Format -}; -var TYPE_MAP = { - [Ae]: FloatType, - [pe]: HalfFloatType, - [Ot]: UnsignedByteType, - [Ft]: UnsignedByteType, - [de]: FloatType, - [se]: HalfFloatType, - [yt]: UnsignedByteType, - [dt]: UnsignedByteType, - [xe]: FloatType, - [$t]: HalfFloatType, - [gt]: UnsignedByteType, - [ct]: UnsignedByteType, - [In]: UnsignedByteType, - [Sn]: UnsignedByteType -}; -async function createRawTexture(container) { - const { vkFormat } = container; - if (FORMAT_MAP[vkFormat] === void 0) { - throw new Error("THREE.KTX2Loader: Unsupported vkFormat."); - } - let zstd; - if (container.supercompressionScheme === n) { - if (!_zstd) { - _zstd = new Promise(async (resolve) => { - const zstd2 = new Q2(); - await zstd2.init(); - resolve(zstd2); - }); - } - zstd = await _zstd; - } - const mipmaps = []; - for (let levelIndex = 0; levelIndex < container.levels.length; levelIndex++) { - const levelWidth = Math.max(1, container.pixelWidth >> levelIndex); - const levelHeight = Math.max(1, container.pixelHeight >> levelIndex); - const levelDepth = container.pixelDepth ? Math.max(1, container.pixelDepth >> levelIndex) : 0; - const level = container.levels[levelIndex]; - let levelData; - if (container.supercompressionScheme === t) { - levelData = level.levelData; - } else if (container.supercompressionScheme === n) { - levelData = zstd.decode(level.levelData, level.uncompressedByteLength); - } else { - throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme."); - } - let data2; - if (TYPE_MAP[vkFormat] === FloatType) { - data2 = new Float32Array( - levelData.buffer, - levelData.byteOffset, - levelData.byteLength / Float32Array.BYTES_PER_ELEMENT - ); - } else if (TYPE_MAP[vkFormat] === HalfFloatType) { - data2 = new Uint16Array( - levelData.buffer, - levelData.byteOffset, - levelData.byteLength / Uint16Array.BYTES_PER_ELEMENT - ); - } else { - data2 = levelData; - } - mipmaps.push({ - data: data2, - width: levelWidth, - height: levelHeight, - depth: levelDepth - }); - } - let texture; - if (UNCOMPRESSED_FORMATS.has(FORMAT_MAP[vkFormat])) { - texture = container.pixelDepth === 0 ? new DataTexture(mipmaps[0].data, container.pixelWidth, container.pixelHeight) : new Data3DTexture(mipmaps[0].data, container.pixelWidth, container.pixelHeight, container.pixelDepth); - } else { - if (container.pixelDepth > 0) throw new Error("THREE.KTX2Loader: Unsupported pixelDepth."); - texture = new CompressedTexture(mipmaps, container.pixelWidth, container.pixelHeight); - } - texture.mipmaps = mipmaps; - texture.type = TYPE_MAP[vkFormat]; - texture.format = FORMAT_MAP[vkFormat]; - texture.colorSpace = parseColorSpace(container); - texture.needsUpdate = true; - return Promise.resolve(texture); -} -function parseColorSpace(container) { - const dfd = container.dataFormatDescriptor[0]; - if (dfd.colorPrimaries === F) { - return dfd.transferFunction === x ? SRGBColorSpace : LinearSRGBColorSpace; - } else if (dfd.colorPrimaries === X) { - return dfd.transferFunction === x ? DisplayP3ColorSpace : LinearDisplayP3ColorSpace; - } else if (dfd.colorPrimaries === E) { - return NoColorSpace; - } else { - console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${dfd.colorPrimaries}"`); - return NoColorSpace; - } -} - -// node_modules/three/examples/jsm/loaders/KTXLoader.js -var KTXLoader = class extends CompressedTextureLoader { - constructor(manager) { - super(manager); - } - parse(buffer, loadMipmaps) { - const ktx = new KhronosTextureContainer(buffer, 1); - return { - mipmaps: ktx.mipmaps(loadMipmaps), - width: ktx.pixelWidth, - height: ktx.pixelHeight, - format: ktx.glInternalFormat, - isCubemap: ktx.numberOfFaces === 6, - mipmapCount: ktx.numberOfMipmapLevels - }; - } -}; -var HEADER_LEN = 12 + 13 * 4; -var COMPRESSED_2D = 0; -var KhronosTextureContainer = class { - /** - * @param {ArrayBuffer} arrayBuffer- contents of the KTX container file - * @param {number} facesExpected- should be either 1 or 6, based whether a cube texture or or - * @param {boolean} threeDExpected- provision for indicating that data should be a 3D texture, not implemented - * @param {boolean} textureArrayExpected- provision for indicating that data should be a texture array, not implemented - */ - constructor(arrayBuffer, facesExpected) { - this.arrayBuffer = arrayBuffer; - const identifier = new Uint8Array(this.arrayBuffer, 0, 12); - if (identifier[0] !== 171 || identifier[1] !== 75 || identifier[2] !== 84 || identifier[3] !== 88 || identifier[4] !== 32 || identifier[5] !== 49 || identifier[6] !== 49 || identifier[7] !== 187 || identifier[8] !== 13 || identifier[9] !== 10 || identifier[10] !== 26 || identifier[11] !== 10) { - console.error("texture missing KTX identifier"); - return; - } - const dataSize = Uint32Array.BYTES_PER_ELEMENT; - const headerDataView = new DataView(this.arrayBuffer, 12, 13 * dataSize); - const endianness = headerDataView.getUint32(0, true); - const littleEndian = endianness === 67305985; - this.glType = headerDataView.getUint32(1 * dataSize, littleEndian); - this.glTypeSize = headerDataView.getUint32(2 * dataSize, littleEndian); - this.glFormat = headerDataView.getUint32(3 * dataSize, littleEndian); - this.glInternalFormat = headerDataView.getUint32(4 * dataSize, littleEndian); - this.glBaseInternalFormat = headerDataView.getUint32(5 * dataSize, littleEndian); - this.pixelWidth = headerDataView.getUint32(6 * dataSize, littleEndian); - this.pixelHeight = headerDataView.getUint32(7 * dataSize, littleEndian); - this.pixelDepth = headerDataView.getUint32(8 * dataSize, littleEndian); - this.numberOfArrayElements = headerDataView.getUint32(9 * dataSize, littleEndian); - this.numberOfFaces = headerDataView.getUint32(10 * dataSize, littleEndian); - this.numberOfMipmapLevels = headerDataView.getUint32(11 * dataSize, littleEndian); - this.bytesOfKeyValueData = headerDataView.getUint32(12 * dataSize, littleEndian); - if (this.glType !== 0) { - console.warn("only compressed formats currently supported"); - return; - } else { - this.numberOfMipmapLevels = Math.max(1, this.numberOfMipmapLevels); - } - if (this.pixelHeight === 0 || this.pixelDepth !== 0) { - console.warn("only 2D textures currently supported"); - return; - } - if (this.numberOfArrayElements !== 0) { - console.warn("texture arrays not currently supported"); - return; - } - if (this.numberOfFaces !== facesExpected) { - console.warn("number of faces expected" + facesExpected + ", but found " + this.numberOfFaces); - return; - } - this.loadType = COMPRESSED_2D; - } - mipmaps(loadMipmaps) { - const mipmaps = []; - let dataOffset = HEADER_LEN + this.bytesOfKeyValueData; - let width2 = this.pixelWidth; - let height2 = this.pixelHeight; - const mipmapCount = loadMipmaps ? this.numberOfMipmapLevels : 1; - for (let level = 0; level < mipmapCount; level++) { - const imageSize = new Int32Array(this.arrayBuffer, dataOffset, 1)[0]; - dataOffset += 4; - for (let face = 0; face < this.numberOfFaces; face++) { - const byteArray = new Uint8Array(this.arrayBuffer, dataOffset, imageSize); - mipmaps.push({ "data": byteArray, "width": width2, "height": height2 }); - dataOffset += imageSize; - dataOffset += 3 - (imageSize + 3) % 4; - } - width2 = Math.max(1, width2 * 0.5); - height2 = Math.max(1, height2 * 0.5); - } - return mipmaps; - } -}; - -// node_modules/three/examples/jsm/loaders/LDrawLoader.js -var FINISH_TYPE_DEFAULT = 0; -var FINISH_TYPE_CHROME = 1; -var FINISH_TYPE_PEARLESCENT = 2; -var FINISH_TYPE_RUBBER = 3; -var FINISH_TYPE_MATTE_METALLIC = 4; -var FINISH_TYPE_METAL = 5; -var FILE_LOCATION_TRY_PARTS = 0; -var FILE_LOCATION_TRY_P = 1; -var FILE_LOCATION_TRY_MODELS = 2; -var FILE_LOCATION_AS_IS = 3; -var FILE_LOCATION_TRY_RELATIVE = 4; -var FILE_LOCATION_TRY_ABSOLUTE = 5; -var FILE_LOCATION_NOT_FOUND = 6; -var MAIN_COLOUR_CODE = "16"; -var MAIN_EDGE_COLOUR_CODE = "24"; -var COLOR_SPACE_LDRAW = SRGBColorSpace; -var _tempVec0 = new Vector3(); -var _tempVec1 = new Vector3(); -var LDrawConditionalLineMaterial = class extends ShaderMaterial { - constructor(parameters) { - super({ - uniforms: UniformsUtils.merge([ - UniformsLib.fog, - { - diffuse: { - value: new Color() - }, - opacity: { - value: 1 - } - } - ]), - vertexShader: ( - /* glsl */ - ` - attribute vec3 control0; - attribute vec3 control1; - attribute vec3 direction; - varying float discardFlag; - - #include - #include - #include - #include - #include - void main() { - #include - - vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 ); - gl_Position = projectionMatrix * mvPosition; - - // Transform the line segment ends and control points into camera clip space - vec4 c0 = projectionMatrix * modelViewMatrix * vec4( control0, 1.0 ); - vec4 c1 = projectionMatrix * modelViewMatrix * vec4( control1, 1.0 ); - vec4 p0 = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); - vec4 p1 = projectionMatrix * modelViewMatrix * vec4( position + direction, 1.0 ); - - c0.xy /= c0.w; - c1.xy /= c1.w; - p0.xy /= p0.w; - p1.xy /= p1.w; - - // Get the direction of the segment and an orthogonal vector - vec2 dir = p1.xy - p0.xy; - vec2 norm = vec2( -dir.y, dir.x ); - - // Get control point directions from the line - vec2 c0dir = c0.xy - p1.xy; - vec2 c1dir = c1.xy - p1.xy; - - // If the vectors to the controls points are pointed in different directions away - // from the line segment then the line should not be drawn. - float d0 = dot( normalize( norm ), normalize( c0dir ) ); - float d1 = dot( normalize( norm ), normalize( c1dir ) ); - discardFlag = float( sign( d0 ) != sign( d1 ) ); - - #include - #include - #include - } - ` - ), - fragmentShader: ( - /* glsl */ - ` - uniform vec3 diffuse; - uniform float opacity; - varying float discardFlag; - - #include - #include - #include - #include - #include - void main() { - - if ( discardFlag > 0.5 ) discard; - - #include - vec3 outgoingLight = vec3( 0.0 ); - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - #include - outgoingLight = diffuseColor.rgb; // simple shader - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - #include - #include - #include - #include - } - ` - ) - }); - Object.defineProperties(this, { - opacity: { - get: function() { - return this.uniforms.opacity.value; - }, - set: function(value2) { - this.uniforms.opacity.value = value2; - } - }, - color: { - get: function() { - return this.uniforms.diffuse.value; - } - } - }); - this.setValues(parameters); - this.isLDrawConditionalLineMaterial = true; - } -}; -var ConditionalLineSegments = class extends LineSegments { - constructor(geometry, material) { - super(geometry, material); - this.isConditionalLine = true; - } -}; -function generateFaceNormals(faces) { - for (let i = 0, l2 = faces.length; i < l2; i++) { - const face = faces[i]; - const vertices = face.vertices; - const v0 = vertices[0]; - const v12 = vertices[1]; - const v2 = vertices[2]; - _tempVec0.subVectors(v12, v0); - _tempVec1.subVectors(v2, v12); - face.faceNormal = new Vector3().crossVectors(_tempVec0, _tempVec1).normalize(); - } -} -var _ray3 = new Ray(); -function smoothNormals(faces, lineSegments, checkSubSegments = false) { - const hashMultiplier = (1 + 1e-10) * 100; - function hashVertex(v) { - const x2 = ~~(v.x * hashMultiplier); - const y2 = ~~(v.y * hashMultiplier); - const z = ~~(v.z * hashMultiplier); - return `${x2},${y2},${z}`; - } - function hashEdge(v0, v12) { - return `${hashVertex(v0)}_${hashVertex(v12)}`; - } - function toNormalizedRay(v0, v12, targetRay) { - targetRay.direction.subVectors(v12, v0).normalize(); - const scalar = v0.dot(targetRay.direction); - targetRay.origin.copy(v0).addScaledVector(targetRay.direction, -scalar); - return targetRay; - } - function hashRay(ray) { - return hashEdge(ray.origin, ray.direction); - } - const hardEdges = /* @__PURE__ */ new Set(); - const hardEdgeRays = /* @__PURE__ */ new Map(); - const halfEdgeList = {}; - const normals = []; - for (let i = 0, l2 = lineSegments.length; i < l2; i++) { - const ls = lineSegments[i]; - const vertices = ls.vertices; - const v0 = vertices[0]; - const v12 = vertices[1]; - hardEdges.add(hashEdge(v0, v12)); - hardEdges.add(hashEdge(v12, v0)); - if (checkSubSegments) { - const ray = toNormalizedRay(v0, v12, new Ray()); - const rh1 = hashRay(ray); - if (!hardEdgeRays.has(rh1)) { - toNormalizedRay(v12, v0, ray); - const rh2 = hashRay(ray); - const info2 = { - ray, - distances: [] - }; - hardEdgeRays.set(rh1, info2); - hardEdgeRays.set(rh2, info2); - } - const info = hardEdgeRays.get(rh1); - let d0 = info.ray.direction.dot(v0); - let d1 = info.ray.direction.dot(v12); - if (d0 > d1) { - [d0, d1] = [d1, d0]; - } - info.distances.push(d0, d1); - } - } - for (let i = 0, l2 = faces.length; i < l2; i++) { - const tri = faces[i]; - const vertices = tri.vertices; - const vertCount = vertices.length; - for (let i2 = 0; i2 < vertCount; i2++) { - const index2 = i2; - const next = (i2 + 1) % vertCount; - const v0 = vertices[index2]; - const v12 = vertices[next]; - const hash = hashEdge(v0, v12); - if (hardEdges.has(hash)) { - continue; - } - if (checkSubSegments) { - toNormalizedRay(v0, v12, _ray3); - const rayHash = hashRay(_ray3); - if (hardEdgeRays.has(rayHash)) { - const info2 = hardEdgeRays.get(rayHash); - const { ray, distances } = info2; - let d0 = ray.direction.dot(v0); - let d1 = ray.direction.dot(v12); - if (d0 > d1) { - [d0, d1] = [d1, d0]; - } - let found = false; - for (let i3 = 0, l3 = distances.length; i3 < l3; i3 += 2) { - if (d0 >= distances[i3] && d1 <= distances[i3 + 1]) { - found = true; - break; - } - } - if (found) { - continue; - } - } - } - const info = { - index: index2, - tri - }; - halfEdgeList[hash] = info; - } - } - while (true) { - let halfEdge = null; - for (const key2 in halfEdgeList) { - halfEdge = halfEdgeList[key2]; - break; - } - if (halfEdge === null) { - break; - } - const queue = [halfEdge]; - while (queue.length > 0) { - const tri = queue.pop().tri; - const vertices = tri.vertices; - const vertNormals = tri.normals; - const faceNormal = tri.faceNormal; - const vertCount = vertices.length; - for (let i2 = 0; i2 < vertCount; i2++) { - const index2 = i2; - const next = (i2 + 1) % vertCount; - const v0 = vertices[index2]; - const v12 = vertices[next]; - const hash = hashEdge(v0, v12); - delete halfEdgeList[hash]; - const reverseHash = hashEdge(v12, v0); - const otherInfo = halfEdgeList[reverseHash]; - if (otherInfo) { - const otherTri = otherInfo.tri; - const otherIndex = otherInfo.index; - const otherNormals = otherTri.normals; - const otherVertCount = otherNormals.length; - const otherFaceNormal = otherTri.faceNormal; - if (Math.abs(otherTri.faceNormal.dot(tri.faceNormal)) < 0.25) { - continue; - } - if (reverseHash in halfEdgeList) { - queue.push(otherInfo); - delete halfEdgeList[reverseHash]; - } - const otherNext = (otherIndex + 1) % otherVertCount; - if (vertNormals[index2] && otherNormals[otherNext] && vertNormals[index2] !== otherNormals[otherNext]) { - otherNormals[otherNext].norm.add(vertNormals[index2].norm); - vertNormals[index2].norm = otherNormals[otherNext].norm; - } - let sharedNormal1 = vertNormals[index2] || otherNormals[otherNext]; - if (sharedNormal1 === null) { - sharedNormal1 = { norm: new Vector3() }; - normals.push(sharedNormal1.norm); - } - if (vertNormals[index2] === null) { - vertNormals[index2] = sharedNormal1; - sharedNormal1.norm.add(faceNormal); - } - if (otherNormals[otherNext] === null) { - otherNormals[otherNext] = sharedNormal1; - sharedNormal1.norm.add(otherFaceNormal); - } - if (vertNormals[next] && otherNormals[otherIndex] && vertNormals[next] !== otherNormals[otherIndex]) { - otherNormals[otherIndex].norm.add(vertNormals[next].norm); - vertNormals[next].norm = otherNormals[otherIndex].norm; - } - let sharedNormal2 = vertNormals[next] || otherNormals[otherIndex]; - if (sharedNormal2 === null) { - sharedNormal2 = { norm: new Vector3() }; - normals.push(sharedNormal2.norm); - } - if (vertNormals[next] === null) { - vertNormals[next] = sharedNormal2; - sharedNormal2.norm.add(faceNormal); - } - if (otherNormals[otherIndex] === null) { - otherNormals[otherIndex] = sharedNormal2; - sharedNormal2.norm.add(otherFaceNormal); - } - } - } - } - } - for (let i = 0, l2 = normals.length; i < l2; i++) { - normals[i].normalize(); - } -} -function isPartType(type) { - return type === "Part" || type === "Unofficial_Part"; -} -function isPrimitiveType(type) { - return /primitive/i.test(type) || type === "Subpart"; -} -var LineParser = class { - constructor(line2, lineNumber) { - this.line = line2; - this.lineLength = line2.length; - this.currentCharIndex = 0; - this.currentChar = " "; - this.lineNumber = lineNumber; - } - seekNonSpace() { - while (this.currentCharIndex < this.lineLength) { - this.currentChar = this.line.charAt(this.currentCharIndex); - if (this.currentChar !== " " && this.currentChar !== " ") { - return; - } - this.currentCharIndex++; - } - } - getToken() { - const pos0 = this.currentCharIndex++; - while (this.currentCharIndex < this.lineLength) { - this.currentChar = this.line.charAt(this.currentCharIndex); - if (this.currentChar === " " || this.currentChar === " ") { - break; - } - this.currentCharIndex++; - } - const pos1 = this.currentCharIndex; - this.seekNonSpace(); - return this.line.substring(pos0, pos1); - } - getVector() { - return new Vector3(parseFloat(this.getToken()), parseFloat(this.getToken()), parseFloat(this.getToken())); - } - getRemainingString() { - return this.line.substring(this.currentCharIndex, this.lineLength); - } - isAtTheEnd() { - return this.currentCharIndex >= this.lineLength; - } - setToEnd() { - this.currentCharIndex = this.lineLength; - } - getLineNumberString() { - return this.lineNumber >= 0 ? " at line " + this.lineNumber : ""; - } -}; -var LDrawParsedCache = class { - constructor(loader) { - this.loader = loader; - this._cache = {}; - } - cloneResult(original) { - const result = {}; - result.faces = original.faces.map((face) => { - return { - colorCode: face.colorCode, - material: face.material, - vertices: face.vertices.map((v) => v.clone()), - normals: face.normals.map(() => null), - faceNormal: null - }; - }); - result.conditionalSegments = original.conditionalSegments.map((face) => { - return { - colorCode: face.colorCode, - material: face.material, - vertices: face.vertices.map((v) => v.clone()), - controlPoints: face.controlPoints.map((v) => v.clone()) - }; - }); - result.lineSegments = original.lineSegments.map((face) => { - return { - colorCode: face.colorCode, - material: face.material, - vertices: face.vertices.map((v) => v.clone()) - }; - }); - result.type = original.type; - result.category = original.category; - result.keywords = original.keywords; - result.author = original.author; - result.subobjects = original.subobjects; - result.fileName = original.fileName; - result.totalFaces = original.totalFaces; - result.startingBuildingStep = original.startingBuildingStep; - result.materials = original.materials; - result.group = null; - return result; - } - async fetchData(fileName) { - let triedLowerCase = false; - let locationState = FILE_LOCATION_TRY_PARTS; - while (locationState !== FILE_LOCATION_NOT_FOUND) { - let subobjectURL = fileName; - switch (locationState) { - case FILE_LOCATION_AS_IS: - locationState = locationState + 1; - break; - case FILE_LOCATION_TRY_PARTS: - subobjectURL = "parts/" + subobjectURL; - locationState = locationState + 1; - break; - case FILE_LOCATION_TRY_P: - subobjectURL = "p/" + subobjectURL; - locationState = locationState + 1; - break; - case FILE_LOCATION_TRY_MODELS: - subobjectURL = "models/" + subobjectURL; - locationState = locationState + 1; - break; - case FILE_LOCATION_TRY_RELATIVE: - subobjectURL = fileName.substring(0, fileName.lastIndexOf("/") + 1) + subobjectURL; - locationState = locationState + 1; - break; - case FILE_LOCATION_TRY_ABSOLUTE: - if (triedLowerCase) { - locationState = FILE_LOCATION_NOT_FOUND; - } else { - fileName = fileName.toLowerCase(); - subobjectURL = fileName; - triedLowerCase = true; - locationState = FILE_LOCATION_TRY_PARTS; - } - break; - } - const loader = this.loader; - const fileLoader = new FileLoader(loader.manager); - fileLoader.setPath(loader.partsLibraryPath); - fileLoader.setRequestHeader(loader.requestHeader); - fileLoader.setWithCredentials(loader.withCredentials); - try { - const text2 = await fileLoader.loadAsync(subobjectURL); - return text2; - } catch (_) { - continue; - } - } - throw new Error('LDrawLoader: Subobject "' + fileName + '" could not be loaded.'); - } - parse(text2, fileName = null) { - const loader = this.loader; - const faces = []; - const lineSegments = []; - const conditionalSegments = []; - const subobjects = []; - const materials = {}; - const getLocalMaterial = (colorCode) => { - return materials[colorCode] || null; - }; - let type = "Model"; - let category = null; - let keywords = null; - let author = null; - let totalFaces = 0; - if (text2.indexOf("\r\n") !== -1) { - text2 = text2.replace(/\r\n/g, "\n"); - } - const lines = text2.split("\n"); - const numLines = lines.length; - let parsingEmbeddedFiles = false; - let currentEmbeddedFileName = null; - let currentEmbeddedText = null; - let bfcCertified = false; - let bfcCCW = true; - let bfcInverted = false; - let bfcCull = true; - let startingBuildingStep = false; - for (let lineIndex = 0; lineIndex < numLines; lineIndex++) { - const line2 = lines[lineIndex]; - if (line2.length === 0) continue; - if (parsingEmbeddedFiles) { - if (line2.startsWith("0 FILE ")) { - this.setData(currentEmbeddedFileName, currentEmbeddedText); - currentEmbeddedFileName = line2.substring(7); - currentEmbeddedText = ""; - } else { - currentEmbeddedText += line2 + "\n"; - } - continue; - } - const lp = new LineParser(line2, lineIndex + 1); - lp.seekNonSpace(); - if (lp.isAtTheEnd()) { - continue; - } - const lineType = lp.getToken(); - let material; - let colorCode; - let segment; - let ccw; - let doubleSided; - let v0, v12, v2, v3, c0, c1; - switch (lineType) { - case "0": - const meta2 = lp.getToken(); - if (meta2) { - switch (meta2) { - case "!LDRAW_ORG": - type = lp.getToken(); - break; - case "!COLOUR": - material = loader.parseColorMetaDirective(lp); - if (material) { - materials[material.userData.code] = material; - } else { - console.warn("LDrawLoader: Error parsing material" + lp.getLineNumberString()); - } - break; - case "!CATEGORY": - category = lp.getToken(); - break; - case "!KEYWORDS": - const newKeywords = lp.getRemainingString().split(","); - if (newKeywords.length > 0) { - if (!keywords) { - keywords = []; - } - newKeywords.forEach(function(keyword) { - keywords.push(keyword.trim()); - }); - } - break; - case "FILE": - if (lineIndex > 0) { - parsingEmbeddedFiles = true; - currentEmbeddedFileName = lp.getRemainingString(); - currentEmbeddedText = ""; - bfcCertified = false; - bfcCCW = true; - } - break; - case "BFC": - while (!lp.isAtTheEnd()) { - const token = lp.getToken(); - switch (token) { - case "CERTIFY": - case "NOCERTIFY": - bfcCertified = token === "CERTIFY"; - bfcCCW = true; - break; - case "CW": - case "CCW": - bfcCCW = token === "CCW"; - break; - case "INVERTNEXT": - bfcInverted = true; - break; - case "CLIP": - case "NOCLIP": - bfcCull = token === "CLIP"; - break; - default: - console.warn('THREE.LDrawLoader: BFC directive "' + token + '" is unknown.'); - break; - } - } - break; - case "STEP": - startingBuildingStep = true; - break; - case "Author:": - author = lp.getToken(); - break; - default: - break; - } - } - break; - case "1": - colorCode = lp.getToken(); - material = getLocalMaterial(colorCode); - const posX = parseFloat(lp.getToken()); - const posY = parseFloat(lp.getToken()); - const posZ = parseFloat(lp.getToken()); - const m0 = parseFloat(lp.getToken()); - const m1 = parseFloat(lp.getToken()); - const m2 = parseFloat(lp.getToken()); - const m3 = parseFloat(lp.getToken()); - const m4 = parseFloat(lp.getToken()); - const m5 = parseFloat(lp.getToken()); - const m6 = parseFloat(lp.getToken()); - const m7 = parseFloat(lp.getToken()); - const m8 = parseFloat(lp.getToken()); - const matrix3 = new Matrix4().set( - m0, - m1, - m2, - posX, - m3, - m4, - m5, - posY, - m6, - m7, - m8, - posZ, - 0, - 0, - 0, - 1 - ); - let fileName2 = lp.getRemainingString().trim().replace(/\\/g, "/"); - if (loader.fileMap[fileName2]) { - fileName2 = loader.fileMap[fileName2]; - } else { - if (fileName2.startsWith("s/")) { - fileName2 = "parts/" + fileName2; - } else if (fileName2.startsWith("48/")) { - fileName2 = "p/" + fileName2; - } - } - subobjects.push({ - material, - colorCode, - matrix: matrix3, - fileName: fileName2, - inverted: bfcInverted, - startingBuildingStep - }); - startingBuildingStep = false; - bfcInverted = false; - break; - case "2": - colorCode = lp.getToken(); - material = getLocalMaterial(colorCode); - v0 = lp.getVector(); - v12 = lp.getVector(); - segment = { - material, - colorCode, - vertices: [v0, v12] - }; - lineSegments.push(segment); - break; - case "5": - colorCode = lp.getToken(); - material = getLocalMaterial(colorCode); - v0 = lp.getVector(); - v12 = lp.getVector(); - c0 = lp.getVector(); - c1 = lp.getVector(); - segment = { - material, - colorCode, - vertices: [v0, v12], - controlPoints: [c0, c1] - }; - conditionalSegments.push(segment); - break; - case "3": - colorCode = lp.getToken(); - material = getLocalMaterial(colorCode); - ccw = bfcCCW; - doubleSided = !bfcCertified || !bfcCull; - if (ccw === true) { - v0 = lp.getVector(); - v12 = lp.getVector(); - v2 = lp.getVector(); - } else { - v2 = lp.getVector(); - v12 = lp.getVector(); - v0 = lp.getVector(); - } - faces.push({ - material, - colorCode, - faceNormal: null, - vertices: [v0, v12, v2], - normals: [null, null, null] - }); - totalFaces++; - if (doubleSided === true) { - faces.push({ - material, - colorCode, - faceNormal: null, - vertices: [v2, v12, v0], - normals: [null, null, null] - }); - totalFaces++; - } - break; - case "4": - colorCode = lp.getToken(); - material = getLocalMaterial(colorCode); - ccw = bfcCCW; - doubleSided = !bfcCertified || !bfcCull; - if (ccw === true) { - v0 = lp.getVector(); - v12 = lp.getVector(); - v2 = lp.getVector(); - v3 = lp.getVector(); - } else { - v3 = lp.getVector(); - v2 = lp.getVector(); - v12 = lp.getVector(); - v0 = lp.getVector(); - } - faces.push({ - material, - colorCode, - faceNormal: null, - vertices: [v0, v12, v2, v3], - normals: [null, null, null, null] - }); - totalFaces += 2; - if (doubleSided === true) { - faces.push({ - material, - colorCode, - faceNormal: null, - vertices: [v3, v2, v12, v0], - normals: [null, null, null, null] - }); - totalFaces += 2; - } - break; - default: - throw new Error('LDrawLoader: Unknown line type "' + lineType + '"' + lp.getLineNumberString() + "."); - } - } - if (parsingEmbeddedFiles) { - this.setData(currentEmbeddedFileName, currentEmbeddedText); - } - return { - faces, - conditionalSegments, - lineSegments, - type, - category, - keywords, - author, - subobjects, - totalFaces, - startingBuildingStep, - materials, - fileName, - group: null - }; - } - // returns an (optionally cloned) instance of the data - getData(fileName, clone2 = true) { - const key2 = fileName.toLowerCase(); - const result = this._cache[key2]; - if (result === null || result instanceof Promise) { - return null; - } - if (clone2) { - return this.cloneResult(result); - } else { - return result; - } - } - // kicks off a fetch and parse of the requested data if it hasn't already been loaded. Returns when - // the data is ready to use and can be retrieved synchronously with "getData". - async ensureDataLoaded(fileName) { - const key2 = fileName.toLowerCase(); - if (!(key2 in this._cache)) { - this._cache[key2] = this.fetchData(fileName).then((text2) => { - const info = this.parse(text2, fileName); - this._cache[key2] = info; - return info; - }); - } - await this._cache[key2]; - } - // sets the data in the cache from parsed data - setData(fileName, text2) { - const key2 = fileName.toLowerCase(); - this._cache[key2] = this.parse(text2, fileName); - } -}; -function getMaterialFromCode(colorCode, parentColorCode, materialHierarchy, forEdge) { - const isPassthrough = !forEdge && colorCode === MAIN_COLOUR_CODE || forEdge && colorCode === MAIN_EDGE_COLOUR_CODE; - if (isPassthrough) { - colorCode = parentColorCode; - } - return materialHierarchy[colorCode] || null; -} -var LDrawPartsGeometryCache = class { - constructor(loader) { - this.loader = loader; - this.parseCache = new LDrawParsedCache(loader); - this._cache = {}; - } - // Convert the given file information into a mesh by processing subobjects. - async processIntoMesh(info) { - const loader = this.loader; - const parseCache = this.parseCache; - const faceMaterials = /* @__PURE__ */ new Set(); - const processInfoSubobjects = async (info2, subobject = null) => { - const subobjects = info2.subobjects; - const promises = []; - for (let i = 0, l2 = subobjects.length; i < l2; i++) { - const subobject2 = subobjects[i]; - const promise = parseCache.ensureDataLoaded(subobject2.fileName).then(() => { - const subobjectInfo = parseCache.getData(subobject2.fileName, false); - if (!isPrimitiveType(subobjectInfo.type)) { - return this.loadModel(subobject2.fileName).catch((error) => { - console.warn(error); - return null; - }); - } - return processInfoSubobjects(parseCache.getData(subobject2.fileName), subobject2); - }); - promises.push(promise); - } - const group2 = new Group(); - group2.userData.category = info2.category; - group2.userData.keywords = info2.keywords; - group2.userData.author = info2.author; - group2.userData.type = info2.type; - group2.userData.fileName = info2.fileName; - info2.group = group2; - const subobjectInfos = await Promise.all(promises); - for (let i = 0, l2 = subobjectInfos.length; i < l2; i++) { - const subobject2 = info2.subobjects[i]; - const subobjectInfo = subobjectInfos[i]; - if (subobjectInfo === null) { - continue; - } - if (subobjectInfo.isGroup) { - const subobjectGroup = subobjectInfo; - subobject2.matrix.decompose(subobjectGroup.position, subobjectGroup.quaternion, subobjectGroup.scale); - subobjectGroup.userData.startingBuildingStep = subobject2.startingBuildingStep; - subobjectGroup.name = subobject2.fileName; - loader.applyMaterialsToMesh(subobjectGroup, subobject2.colorCode, info2.materials); - subobjectGroup.userData.colorCode = subobject2.colorCode; - group2.add(subobjectGroup); - continue; - } - if (subobjectInfo.group.children.length) { - group2.add(subobjectInfo.group); - } - const parentLineSegments = info2.lineSegments; - const parentConditionalSegments = info2.conditionalSegments; - const parentFaces = info2.faces; - const lineSegments = subobjectInfo.lineSegments; - const conditionalSegments = subobjectInfo.conditionalSegments; - const faces = subobjectInfo.faces; - const matrix3 = subobject2.matrix; - const inverted = subobject2.inverted; - const matrixScaleInverted = matrix3.determinant() < 0; - const colorCode = subobject2.colorCode; - const lineColorCode = colorCode === MAIN_COLOUR_CODE ? MAIN_EDGE_COLOUR_CODE : colorCode; - for (let i2 = 0, l3 = lineSegments.length; i2 < l3; i2++) { - const ls = lineSegments[i2]; - const vertices = ls.vertices; - vertices[0].applyMatrix4(matrix3); - vertices[1].applyMatrix4(matrix3); - ls.colorCode = ls.colorCode === MAIN_EDGE_COLOUR_CODE ? lineColorCode : ls.colorCode; - ls.material = ls.material || getMaterialFromCode(ls.colorCode, ls.colorCode, info2.materials, true); - parentLineSegments.push(ls); - } - for (let i2 = 0, l3 = conditionalSegments.length; i2 < l3; i2++) { - const os = conditionalSegments[i2]; - const vertices = os.vertices; - const controlPoints = os.controlPoints; - vertices[0].applyMatrix4(matrix3); - vertices[1].applyMatrix4(matrix3); - controlPoints[0].applyMatrix4(matrix3); - controlPoints[1].applyMatrix4(matrix3); - os.colorCode = os.colorCode === MAIN_EDGE_COLOUR_CODE ? lineColorCode : os.colorCode; - os.material = os.material || getMaterialFromCode(os.colorCode, os.colorCode, info2.materials, true); - parentConditionalSegments.push(os); - } - for (let i2 = 0, l3 = faces.length; i2 < l3; i2++) { - const tri = faces[i2]; - const vertices = tri.vertices; - for (let i3 = 0, l4 = vertices.length; i3 < l4; i3++) { - vertices[i3].applyMatrix4(matrix3); - } - tri.colorCode = tri.colorCode === MAIN_COLOUR_CODE ? colorCode : tri.colorCode; - tri.material = tri.material || getMaterialFromCode(tri.colorCode, colorCode, info2.materials, false); - faceMaterials.add(tri.colorCode); - if (matrixScaleInverted !== inverted) { - vertices.reverse(); - } - parentFaces.push(tri); - } - info2.totalFaces += subobjectInfo.totalFaces; - } - if (subobject) { - loader.applyMaterialsToMesh(group2, subobject.colorCode, info2.materials); - group2.userData.colorCode = subobject.colorCode; - } - return info2; - }; - for (let i = 0, l2 = info.faces; i < l2; i++) { - faceMaterials.add(info.faces[i].colorCode); - } - await processInfoSubobjects(info); - if (loader.smoothNormals) { - const checkSubSegments = faceMaterials.size > 1; - generateFaceNormals(info.faces); - smoothNormals(info.faces, info.lineSegments, checkSubSegments); - } - const group = info.group; - if (info.faces.length > 0) { - group.add(createObject(this.loader, info.faces, 3, false, info.totalFaces)); - } - if (info.lineSegments.length > 0) { - group.add(createObject(this.loader, info.lineSegments, 2)); - } - if (info.conditionalSegments.length > 0) { - group.add(createObject(this.loader, info.conditionalSegments, 2, true)); - } - return group; - } - hasCachedModel(fileName) { - return fileName !== null && fileName.toLowerCase() in this._cache; - } - async getCachedModel(fileName) { - if (fileName !== null && this.hasCachedModel(fileName)) { - const key2 = fileName.toLowerCase(); - const group = await this._cache[key2]; - return group.clone(); - } else { - return null; - } - } - // Loads and parses the model with the given file name. Returns a cached copy if available. - async loadModel(fileName) { - const parseCache = this.parseCache; - const key2 = fileName.toLowerCase(); - if (this.hasCachedModel(fileName)) { - return this.getCachedModel(fileName); - } else { - await parseCache.ensureDataLoaded(fileName); - const info = parseCache.getData(fileName); - const promise = this.processIntoMesh(info); - if (this.hasCachedModel(fileName)) { - return this.getCachedModel(fileName); - } - if (isPartType(info.type)) { - this._cache[key2] = promise; - } - const group = await promise; - return group.clone(); - } - } - // parses the given model text into a renderable object. Returns cached copy if available. - async parseModel(text2) { - const parseCache = this.parseCache; - const info = parseCache.parse(text2); - if (isPartType(info.type) && this.hasCachedModel(info.fileName)) { - return this.getCachedModel(info.fileName); - } - return this.processIntoMesh(info); - } -}; -function sortByMaterial(a2, b3) { - if (a2.colorCode === b3.colorCode) { - return 0; - } - if (a2.colorCode < b3.colorCode) { - return -1; - } - return 1; -} -function createObject(loader, elements, elementSize, isConditionalSegments = false, totalElements = null) { - elements.sort(sortByMaterial); - if (totalElements === null) { - totalElements = elements.length; - } - const positions = new Float32Array(elementSize * totalElements * 3); - const normals = elementSize === 3 ? new Float32Array(elementSize * totalElements * 3) : null; - const materials = []; - const quadArray = new Array(6); - const bufferGeometry = new BufferGeometry(); - let prevMaterial = null; - let index0 = 0; - let numGroupVerts = 0; - let offset = 0; - for (let iElem = 0, nElem = elements.length; iElem < nElem; iElem++) { - const elem2 = elements[iElem]; - let vertices = elem2.vertices; - if (vertices.length === 4) { - quadArray[0] = vertices[0]; - quadArray[1] = vertices[1]; - quadArray[2] = vertices[2]; - quadArray[3] = vertices[0]; - quadArray[4] = vertices[2]; - quadArray[5] = vertices[3]; - vertices = quadArray; - } - for (let j = 0, l2 = vertices.length; j < l2; j++) { - const v = vertices[j]; - const index2 = offset + j * 3; - positions[index2 + 0] = v.x; - positions[index2 + 1] = v.y; - positions[index2 + 2] = v.z; - } - if (elementSize === 3) { - if (!elem2.faceNormal) { - const v0 = vertices[0]; - const v12 = vertices[1]; - const v2 = vertices[2]; - _tempVec0.subVectors(v12, v0); - _tempVec1.subVectors(v2, v12); - elem2.faceNormal = new Vector3().crossVectors(_tempVec0, _tempVec1).normalize(); - } - let elemNormals = elem2.normals; - if (elemNormals.length === 4) { - quadArray[0] = elemNormals[0]; - quadArray[1] = elemNormals[1]; - quadArray[2] = elemNormals[2]; - quadArray[3] = elemNormals[0]; - quadArray[4] = elemNormals[2]; - quadArray[5] = elemNormals[3]; - elemNormals = quadArray; - } - for (let j = 0, l2 = elemNormals.length; j < l2; j++) { - let n2 = elem2.faceNormal; - if (elemNormals[j]) { - n2 = elemNormals[j].norm; - } - const index2 = offset + j * 3; - normals[index2 + 0] = n2.x; - normals[index2 + 1] = n2.y; - normals[index2 + 2] = n2.z; - } - } - if (prevMaterial !== elem2.colorCode) { - if (prevMaterial !== null) { - bufferGeometry.addGroup(index0, numGroupVerts, materials.length - 1); - } - const material = elem2.material; - if (material !== null) { - if (elementSize === 3) { - materials.push(material); - } else if (elementSize === 2) { - if (isConditionalSegments) { - const edgeMaterial = loader.edgeMaterialCache.get(material); - materials.push(loader.conditionalEdgeMaterialCache.get(edgeMaterial)); - } else { - materials.push(loader.edgeMaterialCache.get(material)); - } - } - } else { - materials.push(elem2.colorCode); - } - prevMaterial = elem2.colorCode; - index0 = offset / 3; - numGroupVerts = vertices.length; - } else { - numGroupVerts += vertices.length; - } - offset += 3 * vertices.length; - } - if (numGroupVerts > 0) { - bufferGeometry.addGroup(index0, Infinity, materials.length - 1); - } - bufferGeometry.setAttribute("position", new BufferAttribute(positions, 3)); - if (normals !== null) { - bufferGeometry.setAttribute("normal", new BufferAttribute(normals, 3)); - } - let object3d = null; - if (elementSize === 2) { - if (isConditionalSegments) { - object3d = new ConditionalLineSegments(bufferGeometry, materials.length === 1 ? materials[0] : materials); - } else { - object3d = new LineSegments(bufferGeometry, materials.length === 1 ? materials[0] : materials); - } - } else if (elementSize === 3) { - object3d = new Mesh(bufferGeometry, materials.length === 1 ? materials[0] : materials); - } - if (isConditionalSegments) { - object3d.isConditionalLine = true; - const controlArray0 = new Float32Array(elements.length * 3 * 2); - const controlArray1 = new Float32Array(elements.length * 3 * 2); - const directionArray = new Float32Array(elements.length * 3 * 2); - for (let i = 0, l2 = elements.length; i < l2; i++) { - const os = elements[i]; - const vertices = os.vertices; - const controlPoints = os.controlPoints; - const c0 = controlPoints[0]; - const c1 = controlPoints[1]; - const v0 = vertices[0]; - const v12 = vertices[1]; - const index2 = i * 3 * 2; - controlArray0[index2 + 0] = c0.x; - controlArray0[index2 + 1] = c0.y; - controlArray0[index2 + 2] = c0.z; - controlArray0[index2 + 3] = c0.x; - controlArray0[index2 + 4] = c0.y; - controlArray0[index2 + 5] = c0.z; - controlArray1[index2 + 0] = c1.x; - controlArray1[index2 + 1] = c1.y; - controlArray1[index2 + 2] = c1.z; - controlArray1[index2 + 3] = c1.x; - controlArray1[index2 + 4] = c1.y; - controlArray1[index2 + 5] = c1.z; - directionArray[index2 + 0] = v12.x - v0.x; - directionArray[index2 + 1] = v12.y - v0.y; - directionArray[index2 + 2] = v12.z - v0.z; - directionArray[index2 + 3] = v12.x - v0.x; - directionArray[index2 + 4] = v12.y - v0.y; - directionArray[index2 + 5] = v12.z - v0.z; - } - bufferGeometry.setAttribute("control0", new BufferAttribute(controlArray0, 3, false)); - bufferGeometry.setAttribute("control1", new BufferAttribute(controlArray1, 3, false)); - bufferGeometry.setAttribute("direction", new BufferAttribute(directionArray, 3, false)); - } - return object3d; -} -var LDrawLoader = class extends Loader { - constructor(manager) { - super(manager); - this.materials = []; - this.materialLibrary = {}; - this.edgeMaterialCache = /* @__PURE__ */ new WeakMap(); - this.conditionalEdgeMaterialCache = /* @__PURE__ */ new WeakMap(); - this.partsCache = new LDrawPartsGeometryCache(this); - this.fileMap = {}; - this.setMaterials([]); - this.smoothNormals = true; - this.partsLibraryPath = ""; - this.missingColorMaterial = new MeshStandardMaterial({ name: Loader.DEFAULT_MATERIAL_NAME, color: 16711935, roughness: 0.3, metalness: 0 }); - this.missingEdgeColorMaterial = new LineBasicMaterial({ name: Loader.DEFAULT_MATERIAL_NAME, color: 16711935 }); - this.missingConditionalEdgeColorMaterial = new LDrawConditionalLineMaterial({ name: Loader.DEFAULT_MATERIAL_NAME, fog: true, color: 16711935 }); - this.edgeMaterialCache.set(this.missingColorMaterial, this.missingEdgeColorMaterial); - this.conditionalEdgeMaterialCache.set(this.missingEdgeColorMaterial, this.missingConditionalEdgeColorMaterial); - } - setPartsLibraryPath(path) { - this.partsLibraryPath = path; - return this; - } - async preloadMaterials(url) { - const fileLoader = new FileLoader(this.manager); - fileLoader.setPath(this.path); - fileLoader.setRequestHeader(this.requestHeader); - fileLoader.setWithCredentials(this.withCredentials); - const text2 = await fileLoader.loadAsync(url); - const colorLineRegex = /^0 !COLOUR/; - const lines = text2.split(/[\n\r]/g); - const materials = []; - for (let i = 0, l2 = lines.length; i < l2; i++) { - const line2 = lines[i]; - if (colorLineRegex.test(line2)) { - const directive = line2.replace(colorLineRegex, ""); - const material = this.parseColorMetaDirective(new LineParser(directive)); - materials.push(material); - } - } - this.setMaterials(materials); - } - load(url, onLoad, onProgress, onError) { - const fileLoader = new FileLoader(this.manager); - fileLoader.setPath(this.path); - fileLoader.setRequestHeader(this.requestHeader); - fileLoader.setWithCredentials(this.withCredentials); - fileLoader.load(url, (text2) => { - this.partsCache.parseModel(text2, this.materialLibrary).then((group) => { - this.applyMaterialsToMesh(group, MAIN_COLOUR_CODE, this.materialLibrary, true); - this.computeBuildingSteps(group); - group.userData.fileName = url; - onLoad(group); - }).catch(onError); - }, onProgress, onError); - } - parse(text2, onLoad, onError) { - this.partsCache.parseModel(text2, this.materialLibrary).then((group) => { - this.applyMaterialsToMesh(group, MAIN_COLOUR_CODE, this.materialLibrary, true); - this.computeBuildingSteps(group); - group.userData.fileName = ""; - onLoad(group); - }).catch(onError); - } - setMaterials(materials) { - this.materialLibrary = {}; - this.materials = []; - for (let i = 0, l2 = materials.length; i < l2; i++) { - this.addMaterial(materials[i]); - } - this.addMaterial(this.parseColorMetaDirective(new LineParser("Main_Colour CODE 16 VALUE #FF8080 EDGE #333333"))); - this.addMaterial(this.parseColorMetaDirective(new LineParser("Edge_Colour CODE 24 VALUE #A0A0A0 EDGE #333333"))); - return this; - } - setFileMap(fileMap) { - this.fileMap = fileMap; - return this; - } - addMaterial(material) { - const matLib = this.materialLibrary; - if (!matLib[material.userData.code]) { - this.materials.push(material); - matLib[material.userData.code] = material; - } - return this; - } - getMaterial(colorCode) { - if (colorCode.startsWith("0x2")) { - const color = colorCode.substring(3); - return this.parseColorMetaDirective(new LineParser("Direct_Color_" + color + " CODE -1 VALUE #" + color + " EDGE #" + color)); - } - return this.materialLibrary[colorCode] || null; - } - // Applies the appropriate materials to a prebuilt hierarchy of geometry. Assumes that color codes are present - // in the material array if they need to be filled in. - applyMaterialsToMesh(group, parentColorCode, materialHierarchy, finalMaterialPass = false) { - const loader = this; - const parentIsPassthrough = parentColorCode === MAIN_COLOUR_CODE; - group.traverse((c2) => { - if (c2.isMesh || c2.isLineSegments) { - if (Array.isArray(c2.material)) { - for (let i = 0, l2 = c2.material.length; i < l2; i++) { - if (!c2.material[i].isMaterial) { - c2.material[i] = getMaterial2(c2, c2.material[i]); - } - } - } else if (!c2.material.isMaterial) { - c2.material = getMaterial2(c2, c2.material); - } - } - }); - function getMaterial2(c2, colorCode) { - if (parentIsPassthrough && !(colorCode in materialHierarchy) && !finalMaterialPass) { - return colorCode; - } - const forEdge = c2.isLineSegments || c2.isConditionalLine; - const isPassthrough = !forEdge && colorCode === MAIN_COLOUR_CODE || forEdge && colorCode === MAIN_EDGE_COLOUR_CODE; - if (isPassthrough) { - colorCode = parentColorCode; - } - let material = null; - if (colorCode in materialHierarchy) { - material = materialHierarchy[colorCode]; - } else if (finalMaterialPass) { - material = loader.getMaterial(colorCode); - if (material === null) { - console.warn(`LDrawLoader: Material properties for code ${colorCode} not available.`); - material = loader.missingColorMaterial; - } - } else { - return colorCode; - } - if (c2.isLineSegments) { - material = loader.edgeMaterialCache.get(material); - if (c2.isConditionalLine) { - material = loader.conditionalEdgeMaterialCache.get(material); - } - } - return material; - } - } - getMainMaterial() { - return this.getMaterial(MAIN_COLOUR_CODE); - } - getMainEdgeMaterial() { - const mat = this.getMaterial(MAIN_EDGE_COLOUR_CODE); - return mat ? this.edgeMaterialCache.get(mat) : null; - } - parseColorMetaDirective(lineParser) { - let code = null; - let fillColor = "#FF00FF"; - let edgeColor = "#FF00FF"; - let alpha = 1; - let isTransparent = false; - let luminance = 0; - let finishType = FINISH_TYPE_DEFAULT; - let edgeMaterial = null; - const name2 = lineParser.getToken(); - if (!name2) { - throw new Error('LDrawLoader: Material name was expected after "!COLOUR tag' + lineParser.getLineNumberString() + "."); - } - let token = null; - while (true) { - token = lineParser.getToken(); - if (!token) { - break; - } - if (!parseLuminance(token)) { - switch (token.toUpperCase()) { - case "CODE": - code = lineParser.getToken(); - break; - case "VALUE": - fillColor = lineParser.getToken(); - if (fillColor.startsWith("0x")) { - fillColor = "#" + fillColor.substring(2); - } else if (!fillColor.startsWith("#")) { - throw new Error("LDrawLoader: Invalid color while parsing material" + lineParser.getLineNumberString() + "."); - } - break; - case "EDGE": - edgeColor = lineParser.getToken(); - if (edgeColor.startsWith("0x")) { - edgeColor = "#" + edgeColor.substring(2); - } else if (!edgeColor.startsWith("#")) { - edgeMaterial = this.getMaterial(edgeColor); - if (!edgeMaterial) { - throw new Error("LDrawLoader: Invalid edge color while parsing material" + lineParser.getLineNumberString() + "."); - } - edgeMaterial = this.edgeMaterialCache.get(edgeMaterial); - } - break; - case "ALPHA": - alpha = parseInt(lineParser.getToken()); - if (isNaN(alpha)) { - throw new Error("LDrawLoader: Invalid alpha value in material definition" + lineParser.getLineNumberString() + "."); - } - alpha = Math.max(0, Math.min(1, alpha / 255)); - if (alpha < 1) { - isTransparent = true; - } - break; - case "LUMINANCE": - if (!parseLuminance(lineParser.getToken())) { - throw new Error("LDrawLoader: Invalid luminance value in material definition" + LineParser.getLineNumberString() + "."); - } - break; - case "CHROME": - finishType = FINISH_TYPE_CHROME; - break; - case "PEARLESCENT": - finishType = FINISH_TYPE_PEARLESCENT; - break; - case "RUBBER": - finishType = FINISH_TYPE_RUBBER; - break; - case "MATTE_METALLIC": - finishType = FINISH_TYPE_MATTE_METALLIC; - break; - case "METAL": - finishType = FINISH_TYPE_METAL; - break; - case "MATERIAL": - lineParser.setToEnd(); - break; - default: - throw new Error('LDrawLoader: Unknown token "' + token + '" while parsing material' + lineParser.getLineNumberString() + "."); - } - } - } - let material = null; - switch (finishType) { - case FINISH_TYPE_DEFAULT: - material = new MeshStandardMaterial({ roughness: 0.3, metalness: 0 }); - break; - case FINISH_TYPE_PEARLESCENT: - material = new MeshStandardMaterial({ roughness: 0.3, metalness: 0.25 }); - break; - case FINISH_TYPE_CHROME: - material = new MeshStandardMaterial({ roughness: 0, metalness: 1 }); - break; - case FINISH_TYPE_RUBBER: - material = new MeshStandardMaterial({ roughness: 0.9, metalness: 0 }); - break; - case FINISH_TYPE_MATTE_METALLIC: - material = new MeshStandardMaterial({ roughness: 0.8, metalness: 0.4 }); - break; - case FINISH_TYPE_METAL: - material = new MeshStandardMaterial({ roughness: 0.2, metalness: 0.85 }); - break; - default: - break; - } - material.color.setStyle(fillColor, COLOR_SPACE_LDRAW); - material.transparent = isTransparent; - material.premultipliedAlpha = true; - material.opacity = alpha; - material.depthWrite = !isTransparent; - material.polygonOffset = true; - material.polygonOffsetFactor = 1; - if (luminance !== 0) { - material.emissive.setStyle(fillColor, COLOR_SPACE_LDRAW).multiplyScalar(luminance); - } - if (!edgeMaterial) { - edgeMaterial = new LineBasicMaterial({ - color: new Color().setStyle(edgeColor, COLOR_SPACE_LDRAW), - transparent: isTransparent, - opacity: alpha, - depthWrite: !isTransparent - }); - edgeMaterial.color; - edgeMaterial.userData.code = code; - edgeMaterial.name = name2 + " - Edge"; - const conditionalEdgeMaterial = new LDrawConditionalLineMaterial({ - fog: true, - transparent: isTransparent, - depthWrite: !isTransparent, - color: new Color().setStyle(edgeColor, COLOR_SPACE_LDRAW), - opacity: alpha - }); - conditionalEdgeMaterial.userData.code = code; - conditionalEdgeMaterial.name = name2 + " - Conditional Edge"; - this.conditionalEdgeMaterialCache.set(edgeMaterial, conditionalEdgeMaterial); - } - material.userData.code = code; - material.name = name2; - this.edgeMaterialCache.set(material, edgeMaterial); - this.addMaterial(material); - return material; - function parseLuminance(token2) { - let lum; - if (token2.startsWith("LUMINANCE")) { - lum = parseInt(token2.substring(9)); - } else { - lum = parseInt(token2); - } - if (isNaN(lum)) { - return false; - } - luminance = Math.max(0, Math.min(1, lum / 255)); - return true; - } - } - computeBuildingSteps(model) { - let stepNumber = 0; - model.traverse((c2) => { - if (c2.isGroup) { - if (c2.userData.startingBuildingStep) { - stepNumber++; - } - c2.userData.buildingStep = stepNumber; - } - }); - model.userData.numBuildingSteps = stepNumber + 1; - } -}; - -// node_modules/three/examples/jsm/loaders/LUT3dlLoader.js -var LUT3dlLoader = class extends Loader { - constructor(manager) { - super(manager); - this.type = UnsignedByteType; - } - setType(type) { - if (type !== UnsignedByteType && type !== FloatType) { - throw new Error("LUT3dlLoader: Unsupported type"); - } - this.type = type; - return this; - } - load(url, onLoad, onProgress, onError) { - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setResponseType("text"); - loader.load(url, (text2) => { - try { - onLoad(this.parse(text2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - this.manager.itemError(url); - } - }, onProgress, onError); - } - parse(input) { - const regExpGridInfo = /^[\d ]+$/m; - const regExpDataPoints = /^([\d.e+-]+) +([\d.e+-]+) +([\d.e+-]+) *$/gm; - let result = regExpGridInfo.exec(input); - if (result === null) { - throw new Error("LUT3dlLoader: Missing grid information"); - } - const gridLines = result[0].trim().split(/\s+/g).map(Number); - const gridStep = gridLines[1] - gridLines[0]; - const size2 = gridLines.length; - const sizeSq = size2 ** 2; - for (let i = 1, l2 = gridLines.length; i < l2; ++i) { - if (gridStep !== gridLines[i] - gridLines[i - 1]) { - throw new Error("LUT3dlLoader: Inconsistent grid size"); - } - } - const dataFloat = new Float32Array(size2 ** 3 * 4); - let maxValue = 0; - let index2 = 0; - while ((result = regExpDataPoints.exec(input)) !== null) { - const r = Number(result[1]); - const g2 = Number(result[2]); - const b3 = Number(result[3]); - maxValue = Math.max(maxValue, r, g2, b3); - const bLayer = index2 % size2; - const gLayer = Math.floor(index2 / size2) % size2; - const rLayer = Math.floor(index2 / sizeSq) % size2; - const d4 = (bLayer * sizeSq + gLayer * size2 + rLayer) * 4; - dataFloat[d4 + 0] = r; - dataFloat[d4 + 1] = g2; - dataFloat[d4 + 2] = b3; - ++index2; - } - const bits2 = Math.ceil(Math.log2(maxValue)); - const maxBitValue = Math.pow(2, bits2); - const data2 = this.type === UnsignedByteType ? new Uint8Array(dataFloat.length) : dataFloat; - const scale2 = this.type === UnsignedByteType ? 255 : 1; - for (let i = 0, l2 = data2.length; i < l2; i += 4) { - const i1 = i + 1; - const i2 = i + 2; - const i3 = i + 3; - data2[i] = dataFloat[i] / maxBitValue * scale2; - data2[i1] = dataFloat[i1] / maxBitValue * scale2; - data2[i2] = dataFloat[i2] / maxBitValue * scale2; - data2[i3] = scale2; - } - const texture3D = new Data3DTexture(); - texture3D.image.data = data2; - texture3D.image.width = size2; - texture3D.image.height = size2; - texture3D.image.depth = size2; - texture3D.format = RGBAFormat; - texture3D.type = this.type; - texture3D.magFilter = LinearFilter; - texture3D.minFilter = LinearFilter; - texture3D.wrapS = ClampToEdgeWrapping; - texture3D.wrapT = ClampToEdgeWrapping; - texture3D.wrapR = ClampToEdgeWrapping; - texture3D.generateMipmaps = false; - texture3D.needsUpdate = true; - return { - size: size2, - texture3D - }; - } -}; - -// node_modules/three/examples/jsm/loaders/LUTCubeLoader.js -var LUTCubeLoader = class extends Loader { - constructor(manager) { - super(manager); - this.type = UnsignedByteType; - } - setType(type) { - if (type !== UnsignedByteType && type !== FloatType) { - throw new Error("LUTCubeLoader: Unsupported type"); - } - this.type = type; - return this; - } - load(url, onLoad, onProgress, onError) { - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setResponseType("text"); - loader.load(url, (text2) => { - try { - onLoad(this.parse(text2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - this.manager.itemError(url); - } - }, onProgress, onError); - } - parse(input) { - const regExpTitle = /TITLE +"([^"]*)"/; - const regExpSize = /LUT_3D_SIZE +(\d+)/; - const regExpDomainMin = /DOMAIN_MIN +([\d.]+) +([\d.]+) +([\d.]+)/; - const regExpDomainMax = /DOMAIN_MAX +([\d.]+) +([\d.]+) +([\d.]+)/; - const regExpDataPoints = /^([\d.e+-]+) +([\d.e+-]+) +([\d.e+-]+) *$/gm; - let result = regExpTitle.exec(input); - const title = result !== null ? result[1] : null; - result = regExpSize.exec(input); - if (result === null) { - throw new Error("LUTCubeLoader: Missing LUT_3D_SIZE information"); - } - const size2 = Number(result[1]); - const length2 = size2 ** 3 * 4; - const data2 = this.type === UnsignedByteType ? new Uint8Array(length2) : new Float32Array(length2); - const domainMin = new Vector3(0, 0, 0); - const domainMax = new Vector3(1, 1, 1); - result = regExpDomainMin.exec(input); - if (result !== null) { - domainMin.set(Number(result[1]), Number(result[2]), Number(result[3])); - } - result = regExpDomainMax.exec(input); - if (result !== null) { - domainMax.set(Number(result[1]), Number(result[2]), Number(result[3])); - } - if (domainMin.x > domainMax.x || domainMin.y > domainMax.y || domainMin.z > domainMax.z) { - throw new Error("LUTCubeLoader: Invalid input domain"); - } - const scale2 = this.type === UnsignedByteType ? 255 : 1; - let i = 0; - while ((result = regExpDataPoints.exec(input)) !== null) { - data2[i++] = Number(result[1]) * scale2; - data2[i++] = Number(result[2]) * scale2; - data2[i++] = Number(result[3]) * scale2; - data2[i++] = scale2; - } - const texture3D = new Data3DTexture(); - texture3D.image.data = data2; - texture3D.image.width = size2; - texture3D.image.height = size2; - texture3D.image.depth = size2; - texture3D.type = this.type; - texture3D.magFilter = LinearFilter; - texture3D.minFilter = LinearFilter; - texture3D.wrapS = ClampToEdgeWrapping; - texture3D.wrapT = ClampToEdgeWrapping; - texture3D.wrapR = ClampToEdgeWrapping; - texture3D.generateMipmaps = false; - texture3D.needsUpdate = true; - return { - title, - size: size2, - domainMin, - domainMax, - texture3D - }; - } -}; - -// node_modules/three/examples/jsm/loaders/lwo/LWO2Parser.js -var LWO2Parser = class { - constructor(IFFParser2) { - this.IFF = IFFParser2; - } - parseBlock() { - this.IFF.debugger.offset = this.IFF.reader.offset; - this.IFF.debugger.closeForms(); - const blockID = this.IFF.reader.getIDTag(); - let length2 = this.IFF.reader.getUint32(); - if (length2 > this.IFF.reader.dv.byteLength - this.IFF.reader.offset) { - this.IFF.reader.offset -= 4; - length2 = this.IFF.reader.getUint16(); - } - this.IFF.debugger.dataOffset = this.IFF.reader.offset; - this.IFF.debugger.length = length2; - switch (blockID) { - case "FORM": - this.IFF.parseForm(length2); - break; - case "ICON": - case "VMPA": - case "BBOX": - case "NORM": - case "PRE ": - case "POST": - case "KEY ": - case "SPAN": - case "TIME": - case "CLRS": - case "CLRA": - case "FILT": - case "DITH": - case "CONT": - case "BRIT": - case "SATR": - case "HUE ": - case "GAMM": - case "NEGA": - case "IFLT": - case "PFLT": - case "PROJ": - case "AXIS": - case "AAST": - case "PIXB": - case "AUVO": - case "STCK": - case "PROC": - case "VALU": - case "FUNC": - case "PNAM": - case "INAM": - case "GRST": - case "GREN": - case "GRPT": - case "FKEY": - case "IKEY": - case "CSYS": - case "OPAQ": - case "CMAP": - case "NLOC": - case "NZOM": - case "NVER": - case "NSRV": - case "NVSK": - case "NCRD": - case "WRPW": - case "WRPH": - case "NMOD": - case "NSEL": - case "NPRW": - case "NPLA": - case "NODS": - case "VERS": - case "ENUM": - case "TAG ": - case "OPAC": - case "CGMD": - case "CGTY": - case "CGST": - case "CGEN": - case "CGTS": - case "CGTE": - case "OSMP": - case "OMDE": - case "OUTR": - case "FLAG": - case "TRNL": - case "GLOW": - case "GVAL": - case "SHRP": - case "RFOP": - case "RSAN": - case "TROP": - case "RBLR": - case "TBLR": - case "CLRH": - case "CLRF": - case "ADTR": - case "LINE": - case "ALPH": - case "VCOL": - case "ENAB": - this.IFF.debugger.skipped = true; - this.IFF.reader.skip(length2); - break; - case "SURF": - this.IFF.parseSurfaceLwo2(length2); - break; - case "CLIP": - this.IFF.parseClipLwo2(length2); - break; - case "IPIX": - case "IMIP": - case "IMOD": - case "AMOD": - case "IINV": - case "INCR": - case "IAXS": - case "IFOT": - case "ITIM": - case "IWRL": - case "IUTI": - case "IINX": - case "IINY": - case "IINZ": - case "IREF": - if (length2 === 4) this.IFF.currentNode[blockID] = this.IFF.reader.getInt32(); - else this.IFF.reader.skip(length2); - break; - case "OTAG": - this.IFF.parseObjectTag(); - break; - case "LAYR": - this.IFF.parseLayer(length2); - break; - case "PNTS": - this.IFF.parsePoints(length2); - break; - case "VMAP": - this.IFF.parseVertexMapping(length2); - break; - case "AUVU": - case "AUVN": - this.IFF.reader.skip(length2 - 1); - this.IFF.reader.getVariableLengthIndex(); - break; - case "POLS": - this.IFF.parsePolygonList(length2); - break; - case "TAGS": - this.IFF.parseTagStrings(length2); - break; - case "PTAG": - this.IFF.parsePolygonTagMapping(length2); - break; - case "VMAD": - this.IFF.parseVertexMapping(length2, true); - break; - case "DESC": - this.IFF.currentForm.description = this.IFF.reader.getString(); - break; - case "TEXT": - case "CMNT": - case "NCOM": - this.IFF.currentForm.comment = this.IFF.reader.getString(); - break; - case "NAME": - this.IFF.currentForm.channelName = this.IFF.reader.getString(); - break; - case "WRAP": - this.IFF.currentForm.wrap = { w: this.IFF.reader.getUint16(), h: this.IFF.reader.getUint16() }; - break; - case "IMAG": - const index2 = this.IFF.reader.getVariableLengthIndex(); - this.IFF.currentForm.imageIndex = index2; - break; - case "OREF": - this.IFF.currentForm.referenceObject = this.IFF.reader.getString(); - break; - case "ROID": - this.IFF.currentForm.referenceObjectID = this.IFF.reader.getUint32(); - break; - case "SSHN": - this.IFF.currentSurface.surfaceShaderName = this.IFF.reader.getString(); - break; - case "AOVN": - this.IFF.currentSurface.surfaceCustomAOVName = this.IFF.reader.getString(); - break; - case "NSTA": - this.IFF.currentForm.disabled = this.IFF.reader.getUint16(); - break; - case "NRNM": - this.IFF.currentForm.realName = this.IFF.reader.getString(); - break; - case "NNME": - this.IFF.currentForm.refName = this.IFF.reader.getString(); - this.IFF.currentSurface.nodes[this.IFF.currentForm.refName] = this.IFF.currentForm; - break; - case "INME": - if (!this.IFF.currentForm.nodeName) this.IFF.currentForm.nodeName = []; - this.IFF.currentForm.nodeName.push(this.IFF.reader.getString()); - break; - case "IINN": - if (!this.IFF.currentForm.inputNodeName) this.IFF.currentForm.inputNodeName = []; - this.IFF.currentForm.inputNodeName.push(this.IFF.reader.getString()); - break; - case "IINM": - if (!this.IFF.currentForm.inputName) this.IFF.currentForm.inputName = []; - this.IFF.currentForm.inputName.push(this.IFF.reader.getString()); - break; - case "IONM": - if (!this.IFF.currentForm.inputOutputName) this.IFF.currentForm.inputOutputName = []; - this.IFF.currentForm.inputOutputName.push(this.IFF.reader.getString()); - break; - case "FNAM": - this.IFF.currentForm.fileName = this.IFF.reader.getString(); - break; - case "CHAN": - if (length2 === 4) this.IFF.currentForm.textureChannel = this.IFF.reader.getIDTag(); - else this.IFF.reader.skip(length2); - break; - case "SMAN": - const maxSmoothingAngle = this.IFF.reader.getFloat32(); - this.IFF.currentSurface.attributes.smooth = maxSmoothingAngle < 0 ? false : true; - break; - case "COLR": - this.IFF.currentSurface.attributes.Color = { value: this.IFF.reader.getFloat32Array(3) }; - this.IFF.reader.skip(2); - break; - case "LUMI": - this.IFF.currentSurface.attributes.Luminosity = { value: this.IFF.reader.getFloat32() }; - this.IFF.reader.skip(2); - break; - case "SPEC": - this.IFF.currentSurface.attributes.Specular = { value: this.IFF.reader.getFloat32() }; - this.IFF.reader.skip(2); - break; - case "DIFF": - this.IFF.currentSurface.attributes.Diffuse = { value: this.IFF.reader.getFloat32() }; - this.IFF.reader.skip(2); - break; - case "REFL": - this.IFF.currentSurface.attributes.Reflection = { value: this.IFF.reader.getFloat32() }; - this.IFF.reader.skip(2); - break; - case "GLOS": - this.IFF.currentSurface.attributes.Glossiness = { value: this.IFF.reader.getFloat32() }; - this.IFF.reader.skip(2); - break; - case "TRAN": - this.IFF.currentSurface.attributes.opacity = this.IFF.reader.getFloat32(); - this.IFF.reader.skip(2); - break; - case "BUMP": - this.IFF.currentSurface.attributes.bumpStrength = this.IFF.reader.getFloat32(); - this.IFF.reader.skip(2); - break; - case "SIDE": - this.IFF.currentSurface.attributes.side = this.IFF.reader.getUint16(); - break; - case "RIMG": - this.IFF.currentSurface.attributes.reflectionMap = this.IFF.reader.getVariableLengthIndex(); - break; - case "RIND": - this.IFF.currentSurface.attributes.refractiveIndex = this.IFF.reader.getFloat32(); - this.IFF.reader.skip(2); - break; - case "TIMG": - this.IFF.currentSurface.attributes.refractionMap = this.IFF.reader.getVariableLengthIndex(); - break; - case "IMAP": - this.IFF.reader.skip(2); - break; - case "TMAP": - this.IFF.debugger.skipped = true; - this.IFF.reader.skip(length2); - break; - case "IUVI": - this.IFF.currentNode.UVChannel = this.IFF.reader.getString(length2); - break; - case "IUTL": - this.IFF.currentNode.widthWrappingMode = this.IFF.reader.getUint32(); - break; - case "IVTL": - this.IFF.currentNode.heightWrappingMode = this.IFF.reader.getUint32(); - break; - case "BLOK": - break; - default: - this.IFF.parseUnknownCHUNK(blockID, length2); - } - if (blockID != "FORM") { - this.IFF.debugger.node = 1; - this.IFF.debugger.nodeID = blockID; - this.IFF.debugger.log(); - } - if (this.IFF.reader.offset >= this.IFF.currentFormEnd) { - this.IFF.currentForm = this.IFF.parentForm; - } - } -}; - -// node_modules/three/examples/jsm/loaders/lwo/LWO3Parser.js -var LWO3Parser = class { - constructor(IFFParser2) { - this.IFF = IFFParser2; - } - parseBlock() { - this.IFF.debugger.offset = this.IFF.reader.offset; - this.IFF.debugger.closeForms(); - const blockID = this.IFF.reader.getIDTag(); - const length2 = this.IFF.reader.getUint32(); - this.IFF.debugger.dataOffset = this.IFF.reader.offset; - this.IFF.debugger.length = length2; - switch (blockID) { - case "FORM": - this.IFF.parseForm(length2); - break; - case "ICON": - case "VMPA": - case "BBOX": - case "NORM": - case "PRE ": - case "POST": - case "KEY ": - case "SPAN": - case "TIME": - case "CLRS": - case "CLRA": - case "FILT": - case "DITH": - case "CONT": - case "BRIT": - case "SATR": - case "HUE ": - case "GAMM": - case "NEGA": - case "IFLT": - case "PFLT": - case "PROJ": - case "AXIS": - case "AAST": - case "PIXB": - case "STCK": - case "VALU": - case "PNAM": - case "INAM": - case "GRST": - case "GREN": - case "GRPT": - case "FKEY": - case "IKEY": - case "CSYS": - case "OPAQ": - case "CMAP": - case "NLOC": - case "NZOM": - case "NVER": - case "NSRV": - case "NCRD": - case "NMOD": - case "NSEL": - case "NPRW": - case "NPLA": - case "VERS": - case "ENUM": - case "TAG ": - case "CGMD": - case "CGTY": - case "CGST": - case "CGEN": - case "CGTS": - case "CGTE": - case "OSMP": - case "OMDE": - case "OUTR": - case "FLAG": - case "TRNL": - case "SHRP": - case "RFOP": - case "RSAN": - case "TROP": - case "RBLR": - case "TBLR": - case "CLRH": - case "CLRF": - case "ADTR": - case "GLOW": - case "LINE": - case "ALPH": - case "VCOL": - case "ENAB": - this.IFF.debugger.skipped = true; - this.IFF.reader.skip(length2); - break; - case "IPIX": - case "IMIP": - case "IMOD": - case "AMOD": - case "IINV": - case "INCR": - case "IAXS": - case "IFOT": - case "ITIM": - case "IWRL": - case "IUTI": - case "IINX": - case "IINY": - case "IINZ": - case "IREF": - if (length2 === 4) this.IFF.currentNode[blockID] = this.IFF.reader.getInt32(); - else this.IFF.reader.skip(length2); - break; - case "OTAG": - this.IFF.parseObjectTag(); - break; - case "LAYR": - this.IFF.parseLayer(length2); - break; - case "PNTS": - this.IFF.parsePoints(length2); - break; - case "VMAP": - this.IFF.parseVertexMapping(length2); - break; - case "POLS": - this.IFF.parsePolygonList(length2); - break; - case "TAGS": - this.IFF.parseTagStrings(length2); - break; - case "PTAG": - this.IFF.parsePolygonTagMapping(length2); - break; - case "VMAD": - this.IFF.parseVertexMapping(length2, true); - break; - case "DESC": - this.IFF.currentForm.description = this.IFF.reader.getString(); - break; - case "TEXT": - case "CMNT": - case "NCOM": - this.IFF.currentForm.comment = this.IFF.reader.getString(); - break; - case "NAME": - this.IFF.currentForm.channelName = this.IFF.reader.getString(); - break; - case "WRAP": - this.IFF.currentForm.wrap = { w: this.IFF.reader.getUint16(), h: this.IFF.reader.getUint16() }; - break; - case "IMAG": - const index2 = this.IFF.reader.getVariableLengthIndex(); - this.IFF.currentForm.imageIndex = index2; - break; - case "OREF": - this.IFF.currentForm.referenceObject = this.IFF.reader.getString(); - break; - case "ROID": - this.IFF.currentForm.referenceObjectID = this.IFF.reader.getUint32(); - break; - case "SSHN": - this.IFF.currentSurface.surfaceShaderName = this.IFF.reader.getString(); - break; - case "AOVN": - this.IFF.currentSurface.surfaceCustomAOVName = this.IFF.reader.getString(); - break; - case "NSTA": - this.IFF.currentForm.disabled = this.IFF.reader.getUint16(); - break; - case "NRNM": - this.IFF.currentForm.realName = this.IFF.reader.getString(); - break; - case "NNME": - this.IFF.currentForm.refName = this.IFF.reader.getString(); - this.IFF.currentSurface.nodes[this.IFF.currentForm.refName] = this.IFF.currentForm; - break; - case "INME": - if (!this.IFF.currentForm.nodeName) this.IFF.currentForm.nodeName = []; - this.IFF.currentForm.nodeName.push(this.IFF.reader.getString()); - break; - case "IINN": - if (!this.IFF.currentForm.inputNodeName) this.IFF.currentForm.inputNodeName = []; - this.IFF.currentForm.inputNodeName.push(this.IFF.reader.getString()); - break; - case "IINM": - if (!this.IFF.currentForm.inputName) this.IFF.currentForm.inputName = []; - this.IFF.currentForm.inputName.push(this.IFF.reader.getString()); - break; - case "IONM": - if (!this.IFF.currentForm.inputOutputName) this.IFF.currentForm.inputOutputName = []; - this.IFF.currentForm.inputOutputName.push(this.IFF.reader.getString()); - break; - case "FNAM": - this.IFF.currentForm.fileName = this.IFF.reader.getString(); - break; - case "CHAN": - if (length2 === 4) this.IFF.currentForm.textureChannel = this.IFF.reader.getIDTag(); - else this.IFF.reader.skip(length2); - break; - case "SMAN": - const maxSmoothingAngle = this.IFF.reader.getFloat32(); - this.IFF.currentSurface.attributes.smooth = maxSmoothingAngle < 0 ? false : true; - break; - case "COLR": - this.IFF.currentSurface.attributes.Color = { value: this.IFF.reader.getFloat32Array(3) }; - this.IFF.reader.skip(2); - break; - case "LUMI": - this.IFF.currentSurface.attributes.Luminosity = { value: this.IFF.reader.getFloat32() }; - this.IFF.reader.skip(2); - break; - case "SPEC": - this.IFF.currentSurface.attributes.Specular = { value: this.IFF.reader.getFloat32() }; - this.IFF.reader.skip(2); - break; - case "DIFF": - this.IFF.currentSurface.attributes.Diffuse = { value: this.IFF.reader.getFloat32() }; - this.IFF.reader.skip(2); - break; - case "REFL": - this.IFF.currentSurface.attributes.Reflection = { value: this.IFF.reader.getFloat32() }; - this.IFF.reader.skip(2); - break; - case "GLOS": - this.IFF.currentSurface.attributes.Glossiness = { value: this.IFF.reader.getFloat32() }; - this.IFF.reader.skip(2); - break; - case "TRAN": - this.IFF.currentSurface.attributes.opacity = this.IFF.reader.getFloat32(); - this.IFF.reader.skip(2); - break; - case "BUMP": - this.IFF.currentSurface.attributes.bumpStrength = this.IFF.reader.getFloat32(); - this.IFF.reader.skip(2); - break; - case "SIDE": - this.IFF.currentSurface.attributes.side = this.IFF.reader.getUint16(); - break; - case "RIMG": - this.IFF.currentSurface.attributes.reflectionMap = this.IFF.reader.getVariableLengthIndex(); - break; - case "RIND": - this.IFF.currentSurface.attributes.refractiveIndex = this.IFF.reader.getFloat32(); - this.IFF.reader.skip(2); - break; - case "TIMG": - this.IFF.currentSurface.attributes.refractionMap = this.IFF.reader.getVariableLengthIndex(); - break; - case "IMAP": - this.IFF.currentSurface.attributes.imageMapIndex = this.IFF.reader.getUint32(); - break; - case "IUVI": - this.IFF.currentNode.UVChannel = this.IFF.reader.getString(length2); - break; - case "IUTL": - this.IFF.currentNode.widthWrappingMode = this.IFF.reader.getUint32(); - break; - case "IVTL": - this.IFF.currentNode.heightWrappingMode = this.IFF.reader.getUint32(); - break; - default: - this.IFF.parseUnknownCHUNK(blockID, length2); - } - if (blockID != "FORM") { - this.IFF.debugger.node = 1; - this.IFF.debugger.nodeID = blockID; - this.IFF.debugger.log(); - } - if (this.IFF.reader.offset >= this.IFF.currentFormEnd) { - this.IFF.currentForm = this.IFF.parentForm; - } - } -}; - -// node_modules/three/examples/jsm/loaders/lwo/IFFParser.js -var IFFParser = class { - constructor() { - this.debugger = new Debugger(); - } - parse(buffer) { - this.reader = new DataViewReader(buffer); - this.tree = { - materials: {}, - layers: [], - tags: [], - textures: [] - }; - this.currentLayer = this.tree; - this.currentForm = this.tree; - this.parseTopForm(); - if (this.tree.format === void 0) return; - if (this.tree.format === "LWO2") { - this.parser = new LWO2Parser(this); - while (!this.reader.endOfFile()) this.parser.parseBlock(); - } else if (this.tree.format === "LWO3") { - this.parser = new LWO3Parser(this); - while (!this.reader.endOfFile()) this.parser.parseBlock(); - } - this.debugger.offset = this.reader.offset; - this.debugger.closeForms(); - return this.tree; - } - parseTopForm() { - this.debugger.offset = this.reader.offset; - var topForm = this.reader.getIDTag(); - if (topForm !== "FORM") { - console.warn("LWOLoader: Top-level FORM missing."); - return; - } - var length2 = this.reader.getUint32(); - this.debugger.dataOffset = this.reader.offset; - this.debugger.length = length2; - var type = this.reader.getIDTag(); - if (type === "LWO2") { - this.tree.format = type; - } else if (type === "LWO3") { - this.tree.format = type; - } - this.debugger.node = 0; - this.debugger.nodeID = type; - this.debugger.log(); - return; - } - /// - // FORM PARSING METHODS - /// - // Forms are organisational and can contain any number of sub chunks and sub forms - // FORM ::= 'FORM'[ID4], length[U4], type[ID4], ( chunk[CHUNK] | form[FORM] ) * } - parseForm(length2) { - var type = this.reader.getIDTag(); - switch (type) { - case "ISEQ": - case "ANIM": - case "STCC": - case "VPVL": - case "VPRM": - case "NROT": - case "WRPW": - case "WRPH": - case "FUNC": - case "FALL": - case "OPAC": - case "GRAD": - case "ENVS": - case "VMOP": - case "VMBG": - case "OMAX": - case "STEX": - case "CKBG": - case "CKEY": - case "VMLA": - case "VMLB": - this.debugger.skipped = true; - this.skipForm(length2); - break; - case "META": - case "NNDS": - case "NODS": - case "NDTA": - case "ADAT": - case "AOVS": - case "BLOK": - case "IBGC": - case "IOPC": - case "IIMG": - case "TXTR": - this.debugger.length = 4; - this.debugger.skipped = true; - break; - case "IFAL": - case "ISCL": - case "IPOS": - case "IROT": - case "IBMP": - case "IUTD": - case "IVTD": - this.parseTextureNodeAttribute(type); - break; - case "ENVL": - this.parseEnvelope(length2); - break; - case "CLIP": - if (this.tree.format === "LWO2") { - this.parseForm(length2); - } else { - this.parseClip(length2); - } - break; - case "STIL": - this.parseImage(); - break; - case "XREF": - this.reader.skip(8); - this.currentForm.referenceTexture = { - index: this.reader.getUint32(), - refName: this.reader.getString() - // internal unique ref - }; - break; - case "IMST": - this.parseImageStateForm(length2); - break; - case "SURF": - this.parseSurfaceForm(length2); - break; - case "VALU": - this.parseValueForm(length2); - break; - case "NTAG": - this.parseSubNode(length2); - break; - case "ATTR": - case "SATR": - this.setupForm("attributes", length2); - break; - case "NCON": - this.parseConnections(length2); - break; - case "SSHA": - this.parentForm = this.currentForm; - this.currentForm = this.currentSurface; - this.setupForm("surfaceShader", length2); - break; - case "SSHD": - this.setupForm("surfaceShaderData", length2); - break; - case "ENTR": - this.parseEntryForm(length2); - break; - case "IMAP": - this.parseImageMap(length2); - break; - case "TAMP": - this.parseXVAL("amplitude", length2); - break; - case "TMAP": - this.setupForm("textureMap", length2); - break; - case "CNTR": - this.parseXVAL3("center", length2); - break; - case "SIZE": - this.parseXVAL3("scale", length2); - break; - case "ROTA": - this.parseXVAL3("rotation", length2); - break; - default: - this.parseUnknownForm(type, length2); - } - this.debugger.node = 0; - this.debugger.nodeID = type; - this.debugger.log(); - } - setupForm(type, length2) { - if (!this.currentForm) this.currentForm = this.currentNode; - this.currentFormEnd = this.reader.offset + length2; - this.parentForm = this.currentForm; - if (!this.currentForm[type]) { - this.currentForm[type] = {}; - this.currentForm = this.currentForm[type]; - } else { - console.warn("LWOLoader: form already exists on parent: ", type, this.currentForm); - this.currentForm = this.currentForm[type]; - } - } - skipForm(length2) { - this.reader.skip(length2 - 4); - } - parseUnknownForm(type, length2) { - console.warn("LWOLoader: unknown FORM encountered: " + type, length2); - printBuffer(this.reader.dv.buffer, this.reader.offset, length2 - 4); - this.reader.skip(length2 - 4); - } - parseSurfaceForm(length2) { - this.reader.skip(8); - var name2 = this.reader.getString(); - var surface = { - attributes: {}, - // LWO2 style non-node attributes will go here - connections: {}, - name: name2, - inputName: name2, - nodes: {}, - source: this.reader.getString() - }; - this.tree.materials[name2] = surface; - this.currentSurface = surface; - this.parentForm = this.tree.materials; - this.currentForm = surface; - this.currentFormEnd = this.reader.offset + length2; - } - parseSurfaceLwo2(length2) { - var name2 = this.reader.getString(); - var surface = { - attributes: {}, - // LWO2 style non-node attributes will go here - connections: {}, - name: name2, - nodes: {}, - source: this.reader.getString() - }; - this.tree.materials[name2] = surface; - this.currentSurface = surface; - this.parentForm = this.tree.materials; - this.currentForm = surface; - this.currentFormEnd = this.reader.offset + length2; - } - parseSubNode(length2) { - this.reader.skip(8); - var name2 = this.reader.getString(); - var node = { - name: name2 - }; - this.currentForm = node; - this.currentNode = node; - this.currentFormEnd = this.reader.offset + length2; - } - // collect attributes from all nodes at the top level of a surface - parseConnections(length2) { - this.currentFormEnd = this.reader.offset + length2; - this.parentForm = this.currentForm; - this.currentForm = this.currentSurface.connections; - } - // surface node attribute data, e.g. specular, roughness etc - parseEntryForm(length2) { - this.reader.skip(8); - var name2 = this.reader.getString(); - this.currentForm = this.currentNode.attributes; - this.setupForm(name2, length2); - } - // parse values from material - doesn't match up to other LWO3 data types - // sub form of entry form - parseValueForm() { - this.reader.skip(8); - var valueType = this.reader.getString(); - if (valueType === "double") { - this.currentForm.value = this.reader.getUint64(); - } else if (valueType === "int") { - this.currentForm.value = this.reader.getUint32(); - } else if (valueType === "vparam") { - this.reader.skip(24); - this.currentForm.value = this.reader.getFloat64(); - } else if (valueType === "vparam3") { - this.reader.skip(24); - this.currentForm.value = this.reader.getFloat64Array(3); - } - } - // holds various data about texture node image state - // Data other thanmipMapLevel unknown - parseImageStateForm() { - this.reader.skip(8); - this.currentForm.mipMapLevel = this.reader.getFloat32(); - } - // LWO2 style image data node OR LWO3 textures defined at top level in editor (not as SURF node) - parseImageMap(length2) { - this.currentFormEnd = this.reader.offset + length2; - this.parentForm = this.currentForm; - if (!this.currentForm.maps) this.currentForm.maps = []; - var map2 = {}; - this.currentForm.maps.push(map2); - this.currentForm = map2; - this.reader.skip(10); - } - parseTextureNodeAttribute(type) { - this.reader.skip(28); - this.reader.skip(20); - switch (type) { - case "ISCL": - this.currentNode.scale = this.reader.getFloat32Array(3); - break; - case "IPOS": - this.currentNode.position = this.reader.getFloat32Array(3); - break; - case "IROT": - this.currentNode.rotation = this.reader.getFloat32Array(3); - break; - case "IFAL": - this.currentNode.falloff = this.reader.getFloat32Array(3); - break; - case "IBMP": - this.currentNode.amplitude = this.reader.getFloat32(); - break; - case "IUTD": - this.currentNode.uTiles = this.reader.getFloat32(); - break; - case "IVTD": - this.currentNode.vTiles = this.reader.getFloat32(); - break; - } - this.reader.skip(2); - } - // ENVL forms are currently ignored - parseEnvelope(length2) { - this.reader.skip(length2 - 4); - } - /// - // CHUNK PARSING METHODS - /// - // clips can either be defined inside a surface node, or at the top - // level and they have a different format in each case - parseClip(length2) { - var tag = this.reader.getIDTag(); - if (tag === "FORM") { - this.reader.skip(16); - this.currentNode.fileName = this.reader.getString(); - return; - } - this.reader.setOffset(this.reader.offset - 4); - this.currentFormEnd = this.reader.offset + length2; - this.parentForm = this.currentForm; - this.reader.skip(8); - var texture = { - index: this.reader.getUint32() - }; - this.tree.textures.push(texture); - this.currentForm = texture; - } - parseClipLwo2(length2) { - var texture = { - index: this.reader.getUint32(), - fileName: "" - }; - while (true) { - var tag = this.reader.getIDTag(); - var n_length = this.reader.getUint16(); - if (tag === "STIL") { - texture.fileName = this.reader.getString(); - break; - } - if (n_length >= length2) { - break; - } - } - this.tree.textures.push(texture); - this.currentForm = texture; - } - parseImage() { - this.reader.skip(8); - this.currentForm.fileName = this.reader.getString(); - } - parseXVAL(type, length2) { - var endOffset = this.reader.offset + length2 - 4; - this.reader.skip(8); - this.currentForm[type] = this.reader.getFloat32(); - this.reader.setOffset(endOffset); - } - parseXVAL3(type, length2) { - var endOffset = this.reader.offset + length2 - 4; - this.reader.skip(8); - this.currentForm[type] = { - x: this.reader.getFloat32(), - y: this.reader.getFloat32(), - z: this.reader.getFloat32() - }; - this.reader.setOffset(endOffset); - } - // Tags associated with an object - // OTAG { type[ID4], tag-string[S0] } - parseObjectTag() { - if (!this.tree.objectTags) this.tree.objectTags = {}; - this.tree.objectTags[this.reader.getIDTag()] = { - tagString: this.reader.getString() - }; - } - // Signals the start of a new layer. All the data chunks which follow will be included in this layer until another layer chunk is encountered. - // LAYR: number[U2], flags[U2], pivot[VEC12], name[S0], parent[U2] - parseLayer(length2) { - var number = this.reader.getUint16(); - var flags = this.reader.getUint16(); - var pivot = this.reader.getFloat32Array(3); - var layer = { - number, - flags, - // If the least significant bit of flags is set, the layer is hidden. - pivot: [-pivot[0], pivot[1], pivot[2]], - // Note: this seems to be superflous, as the geometry is translated when pivot is present - name: this.reader.getString() - }; - this.tree.layers.push(layer); - this.currentLayer = layer; - var parsedLength = 16 + stringOffset(this.currentLayer.name); - this.currentLayer.parent = parsedLength < length2 ? this.reader.getUint16() : -1; - } - // VEC12 * ( F4 + F4 + F4 ) array of x,y,z vectors - // Converting from left to right handed coordinate system: - // x -> -x and switch material FrontSide -> BackSide - parsePoints(length2) { - this.currentPoints = []; - for (var i = 0; i < length2 / 4; i += 3) { - this.currentPoints.push(-this.reader.getFloat32(), this.reader.getFloat32(), this.reader.getFloat32()); - } - } - // parse VMAP or VMAD - // Associates a set of floating-point vectors with a set of points. - // VMAP: { type[ID4], dimension[U2], name[S0], ( vert[VX], value[F4] # dimension ) * } - // VMAD Associates a set of floating-point vectors with the vertices of specific polygons. - // Similar to VMAP UVs, but associates with polygon vertices rather than points - // to solve to problem of UV seams: VMAD chunks are paired with VMAPs of the same name, - // if they exist. The vector values in the VMAD will then replace those in the - // corresponding VMAP, but only for calculations involving the specified polygons. - // VMAD { type[ID4], dimension[U2], name[S0], ( vert[VX], poly[VX], value[F4] # dimension ) * } - parseVertexMapping(length2, discontinuous) { - var finalOffset = this.reader.offset + length2; - var channelName = this.reader.getString(); - if (this.reader.offset === finalOffset) { - this.currentForm.UVChannel = channelName; - return; - } - this.reader.setOffset(this.reader.offset - stringOffset(channelName)); - var type = this.reader.getIDTag(); - this.reader.getUint16(); - var name2 = this.reader.getString(); - var remainingLength = length2 - 6 - stringOffset(name2); - switch (type) { - case "TXUV": - this.parseUVMapping(name2, finalOffset, discontinuous); - break; - case "MORF": - case "SPOT": - this.parseMorphTargets(name2, finalOffset, type); - break; - case "APSL": - case "NORM": - case "WGHT": - case "MNVW": - case "PICK": - case "RGB ": - case "RGBA": - this.reader.skip(remainingLength); - break; - default: - console.warn("LWOLoader: unknown vertex map type: " + type); - this.reader.skip(remainingLength); - } - } - parseUVMapping(name2, finalOffset, discontinuous) { - var uvIndices = []; - var polyIndices = []; - var uvs = []; - while (this.reader.offset < finalOffset) { - uvIndices.push(this.reader.getVariableLengthIndex()); - if (discontinuous) polyIndices.push(this.reader.getVariableLengthIndex()); - uvs.push(this.reader.getFloat32(), this.reader.getFloat32()); - } - if (discontinuous) { - if (!this.currentLayer.discontinuousUVs) this.currentLayer.discontinuousUVs = {}; - this.currentLayer.discontinuousUVs[name2] = { - uvIndices, - polyIndices, - uvs - }; - } else { - if (!this.currentLayer.uvs) this.currentLayer.uvs = {}; - this.currentLayer.uvs[name2] = { - uvIndices, - uvs - }; - } - } - parseMorphTargets(name2, finalOffset, type) { - var indices = []; - var points = []; - type = type === "MORF" ? "relative" : "absolute"; - while (this.reader.offset < finalOffset) { - indices.push(this.reader.getVariableLengthIndex()); - points.push(this.reader.getFloat32(), this.reader.getFloat32(), -this.reader.getFloat32()); - } - if (!this.currentLayer.morphTargets) this.currentLayer.morphTargets = {}; - this.currentLayer.morphTargets[name2] = { - indices, - points, - type - }; - } - // A list of polygons for the current layer. - // POLS { type[ID4], ( numvert+flags[U2], vert[VX] # numvert ) * } - parsePolygonList(length2) { - var finalOffset = this.reader.offset + length2; - var type = this.reader.getIDTag(); - var indices = []; - var polygonDimensions = []; - while (this.reader.offset < finalOffset) { - var numverts = this.reader.getUint16(); - numverts = numverts & 1023; - polygonDimensions.push(numverts); - for (var j = 0; j < numverts; j++) indices.push(this.reader.getVariableLengthIndex()); - } - var geometryData = { - type, - vertexIndices: indices, - polygonDimensions, - points: this.currentPoints - }; - if (polygonDimensions[0] === 1) geometryData.type = "points"; - else if (polygonDimensions[0] === 2) geometryData.type = "lines"; - this.currentLayer.geometry = geometryData; - } - // Lists the tag strings that can be associated with polygons by the PTAG chunk. - // TAGS { tag-string[S0] * } - parseTagStrings(length2) { - this.tree.tags = this.reader.getStringArray(length2); - } - // Associates tags of a given type with polygons in the most recent POLS chunk. - // PTAG { type[ID4], ( poly[VX], tag[U2] ) * } - parsePolygonTagMapping(length2) { - var finalOffset = this.reader.offset + length2; - var type = this.reader.getIDTag(); - if (type === "SURF") this.parseMaterialIndices(finalOffset); - else { - this.reader.skip(length2 - 4); - } - } - parseMaterialIndices(finalOffset) { - this.currentLayer.geometry.materialIndices = []; - while (this.reader.offset < finalOffset) { - var polygonIndex = this.reader.getVariableLengthIndex(); - var materialIndex = this.reader.getUint16(); - this.currentLayer.geometry.materialIndices.push(polygonIndex, materialIndex); - } - } - parseUnknownCHUNK(blockID, length2) { - console.warn("LWOLoader: unknown chunk type: " + blockID + " length: " + length2); - var data2 = this.reader.getString(length2); - this.currentForm[blockID] = data2; - } -}; -var DataViewReader = class { - constructor(buffer) { - this.dv = new DataView(buffer); - this.offset = 0; - this._textDecoder = new TextDecoder(); - this._bytes = new Uint8Array(buffer); - } - size() { - return this.dv.buffer.byteLength; - } - setOffset(offset) { - if (offset > 0 && offset < this.dv.buffer.byteLength) { - this.offset = offset; - } else { - console.error("LWOLoader: invalid buffer offset"); - } - } - endOfFile() { - if (this.offset >= this.size()) return true; - return false; - } - skip(length2) { - this.offset += length2; - } - getUint8() { - var value2 = this.dv.getUint8(this.offset); - this.offset += 1; - return value2; - } - getUint16() { - var value2 = this.dv.getUint16(this.offset); - this.offset += 2; - return value2; - } - getInt32() { - var value2 = this.dv.getInt32(this.offset, false); - this.offset += 4; - return value2; - } - getUint32() { - var value2 = this.dv.getUint32(this.offset, false); - this.offset += 4; - return value2; - } - getUint64() { - var low, high; - high = this.getUint32(); - low = this.getUint32(); - return high * 4294967296 + low; - } - getFloat32() { - var value2 = this.dv.getFloat32(this.offset, false); - this.offset += 4; - return value2; - } - getFloat32Array(size2) { - var a2 = []; - for (var i = 0; i < size2; i++) { - a2.push(this.getFloat32()); - } - return a2; - } - getFloat64() { - var value2 = this.dv.getFloat64(this.offset, this.littleEndian); - this.offset += 8; - return value2; - } - getFloat64Array(size2) { - var a2 = []; - for (var i = 0; i < size2; i++) { - a2.push(this.getFloat64()); - } - return a2; - } - // get variable-length index data type - // VX ::= index[U2] | (index + 0xFF000000)[U4] - // If the index value is less than 65,280 (0xFF00),then VX === U2 - // otherwise VX === U4 with bits 24-31 set - // When reading an index, if the first byte encountered is 255 (0xFF), then - // the four-byte form is being used and the first byte should be discarded or masked out. - getVariableLengthIndex() { - var firstByte = this.getUint8(); - if (firstByte === 255) { - return this.getUint8() * 65536 + this.getUint8() * 256 + this.getUint8(); - } - return firstByte * 256 + this.getUint8(); - } - // An ID tag is a sequence of 4 bytes containing 7-bit ASCII values - getIDTag() { - return this.getString(4); - } - getString(size2) { - if (size2 === 0) return; - const start = this.offset; - let result; - let length2; - if (size2) { - length2 = size2; - result = this._textDecoder.decode(new Uint8Array(this.dv.buffer, start, size2)); - } else { - length2 = this._bytes.indexOf(0, start) - start; - result = this._textDecoder.decode(new Uint8Array(this.dv.buffer, start, length2)); - length2++; - length2 += length2 % 2; - } - this.skip(length2); - return result; - } - getStringArray(size2) { - var a2 = this.getString(size2); - a2 = a2.split("\0"); - return a2.filter(Boolean); - } -}; -var Debugger = class { - constructor() { - this.active = false; - this.depth = 0; - this.formList = []; - } - enable() { - this.active = true; - } - log() { - if (!this.active) return; - var nodeType; - switch (this.node) { - case 0: - nodeType = "FORM"; - break; - case 1: - nodeType = "CHK"; - break; - case 2: - nodeType = "S-CHK"; - break; - } - console.log( - "| ".repeat(this.depth) + nodeType, - this.nodeID, - `( ${this.offset} ) -> ( ${this.dataOffset + this.length} )`, - this.node == 0 ? " {" : "", - this.skipped ? "SKIPPED" : "", - this.node == 0 && this.skipped ? "}" : "" - ); - if (this.node == 0 && !this.skipped) { - this.depth += 1; - this.formList.push(this.dataOffset + this.length); - } - this.skipped = false; - } - closeForms() { - if (!this.active) return; - for (var i = this.formList.length - 1; i >= 0; i--) { - if (this.offset >= this.formList[i]) { - this.depth -= 1; - console.log("| ".repeat(this.depth) + "}"); - this.formList.splice(-1, 1); - } - } - } -}; -function isEven(num) { - return num % 2; -} -function stringOffset(string) { - return string.length + 1 + (isEven(string.length + 1) ? 1 : 0); -} -function printBuffer(buffer, from, to) { - console.log(new TextDecoder().decode(new Uint8Array(buffer, from, to))); -} - -// node_modules/three/examples/jsm/loaders/LWOLoader.js -var _lwoTree; -var LWOLoader = class extends Loader { - constructor(manager, parameters = {}) { - super(manager); - this.resourcePath = parameters.resourcePath !== void 0 ? parameters.resourcePath : ""; - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const path = scope.path === "" ? extractParentUrl(url, "Objects") : scope.path; - const modelName = url.split(path).pop().split(".")[0]; - const loader = new FileLoader(this.manager); - loader.setPath(scope.path); - loader.setResponseType("arraybuffer"); - loader.load(url, function(buffer) { - try { - onLoad(scope.parse(buffer, path, modelName)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(iffBuffer, path, modelName) { - _lwoTree = new IFFParser().parse(iffBuffer); - const textureLoader = new TextureLoader(this.manager).setPath(this.resourcePath || path).setCrossOrigin(this.crossOrigin); - return new LWOTreeParser(textureLoader).parse(modelName); - } -}; -var LWOTreeParser = class { - constructor(textureLoader) { - this.textureLoader = textureLoader; - } - parse(modelName) { - this.materials = new MaterialParser(this.textureLoader).parse(); - this.defaultLayerName = modelName; - this.meshes = this.parseLayers(); - return { - materials: this.materials, - meshes: this.meshes - }; - } - parseLayers() { - const meshes = []; - const finalMeshes = []; - const geometryParser = new GeometryParser2(); - const scope = this; - _lwoTree.layers.forEach(function(layer) { - const geometry = geometryParser.parse(layer.geometry, layer); - const mesh = scope.parseMesh(geometry, layer); - meshes[layer.number] = mesh; - if (layer.parent === -1) finalMeshes.push(mesh); - else meshes[layer.parent].add(mesh); - }); - this.applyPivots(finalMeshes); - return finalMeshes; - } - parseMesh(geometry, layer) { - let mesh; - const materials = this.getMaterials(geometry.userData.matNames, layer.geometry.type); - if (layer.geometry.type === "points") mesh = new Points(geometry, materials); - else if (layer.geometry.type === "lines") mesh = new LineSegments(geometry, materials); - else mesh = new Mesh(geometry, materials); - if (layer.name) mesh.name = layer.name; - else mesh.name = this.defaultLayerName + "_layer_" + layer.number; - mesh.userData.pivot = layer.pivot; - return mesh; - } - // TODO: may need to be reversed in z to convert LWO to three.js coordinates - applyPivots(meshes) { - meshes.forEach(function(mesh) { - mesh.traverse(function(child) { - const pivot = child.userData.pivot; - child.position.x += pivot[0]; - child.position.y += pivot[1]; - child.position.z += pivot[2]; - if (child.parent) { - const parentPivot = child.parent.userData.pivot; - child.position.x -= parentPivot[0]; - child.position.y -= parentPivot[1]; - child.position.z -= parentPivot[2]; - } - }); - }); - } - getMaterials(namesArray, type) { - const materials = []; - const scope = this; - namesArray.forEach(function(name2, i) { - materials[i] = scope.getMaterialByName(name2); - }); - if (type === "points" || type === "lines") { - materials.forEach(function(mat, i) { - const spec = { - color: mat.color - }; - if (type === "points") { - spec.size = 0.1; - spec.map = mat.map; - materials[i] = new PointsMaterial(spec); - } else if (type === "lines") { - materials[i] = new LineBasicMaterial(spec); - } - }); - } - const filtered = materials.filter(Boolean); - if (filtered.length === 1) return filtered[0]; - return materials; - } - getMaterialByName(name2) { - return this.materials.filter(function(m) { - return m.name === name2; - })[0]; - } -}; -var MaterialParser = class { - constructor(textureLoader) { - this.textureLoader = textureLoader; - } - parse() { - const materials = []; - this.textures = {}; - for (const name2 in _lwoTree.materials) { - if (_lwoTree.format === "LWO3") { - materials.push(this.parseMaterial(_lwoTree.materials[name2], name2, _lwoTree.textures)); - } else if (_lwoTree.format === "LWO2") { - materials.push(this.parseMaterialLwo2(_lwoTree.materials[name2], name2, _lwoTree.textures)); - } - } - return materials; - } - parseMaterial(materialData, name2, textures) { - let params = { - name: name2, - side: this.getSide(materialData.attributes), - flatShading: this.getSmooth(materialData.attributes) - }; - const connections2 = this.parseConnections(materialData.connections, materialData.nodes); - const maps = this.parseTextureNodes(connections2.maps); - this.parseAttributeImageMaps(connections2.attributes, textures, maps, materialData.maps); - const attributes = this.parseAttributes(connections2.attributes, maps); - this.parseEnvMap(connections2, maps, attributes); - params = Object.assign(maps, params); - params = Object.assign(params, attributes); - const materialType = this.getMaterialType(connections2.attributes); - if (materialType !== MeshPhongMaterial) delete params.refractionRatio; - return new materialType(params); - } - parseMaterialLwo2(materialData, name2) { - let params = { - name: name2, - side: this.getSide(materialData.attributes), - flatShading: this.getSmooth(materialData.attributes) - }; - const attributes = this.parseAttributes(materialData.attributes, {}); - params = Object.assign(params, attributes); - return new MeshPhongMaterial(params); - } - // Note: converting from left to right handed coords by switching x -> -x in vertices, and - // then switching mat FrontSide -> BackSide - // NB: this means that FrontSide and BackSide have been switched! - getSide(attributes) { - if (!attributes.side) return BackSide; - switch (attributes.side) { - case 0: - case 1: - return BackSide; - case 2: - return FrontSide; - case 3: - return DoubleSide; - } - } - getSmooth(attributes) { - if (!attributes.smooth) return true; - return !attributes.smooth; - } - parseConnections(connections2, nodes) { - const materialConnections = { - maps: {} - }; - const inputName = connections2.inputName; - const inputNodeName = connections2.inputNodeName; - const nodeName = connections2.nodeName; - const scope = this; - inputName.forEach(function(name2, index2) { - if (name2 === "Material") { - const matNode = scope.getNodeByRefName(inputNodeName[index2], nodes); - materialConnections.attributes = matNode.attributes; - materialConnections.envMap = matNode.fileName; - materialConnections.name = inputNodeName[index2]; - } - }); - nodeName.forEach(function(name2, index2) { - if (name2 === materialConnections.name) { - materialConnections.maps[inputName[index2]] = scope.getNodeByRefName(inputNodeName[index2], nodes); - } - }); - return materialConnections; - } - getNodeByRefName(refName, nodes) { - for (const name2 in nodes) { - if (nodes[name2].refName === refName) return nodes[name2]; - } - } - parseTextureNodes(textureNodes) { - const maps = {}; - for (const name2 in textureNodes) { - const node = textureNodes[name2]; - const path = node.fileName; - if (!path) return; - const texture = this.loadTexture(path); - if (node.widthWrappingMode !== void 0) texture.wrapS = this.getWrappingType(node.widthWrappingMode); - if (node.heightWrappingMode !== void 0) texture.wrapT = this.getWrappingType(node.heightWrappingMode); - switch (name2) { - case "Color": - maps.map = texture; - maps.map.colorSpace = SRGBColorSpace; - break; - case "Roughness": - maps.roughnessMap = texture; - maps.roughness = 1; - break; - case "Specular": - maps.specularMap = texture; - maps.specularMap.colorSpace = SRGBColorSpace; - maps.specular = 16777215; - break; - case "Luminous": - maps.emissiveMap = texture; - maps.emissiveMap.colorSpace = SRGBColorSpace; - maps.emissive = 8421504; - break; - case "Luminous Color": - maps.emissive = 8421504; - break; - case "Metallic": - maps.metalnessMap = texture; - maps.metalness = 1; - break; - case "Transparency": - case "Alpha": - maps.alphaMap = texture; - maps.transparent = true; - break; - case "Normal": - maps.normalMap = texture; - if (node.amplitude !== void 0) maps.normalScale = new Vector2(node.amplitude, node.amplitude); - break; - case "Bump": - maps.bumpMap = texture; - break; - } - } - if (maps.roughnessMap && maps.specularMap) delete maps.specularMap; - return maps; - } - // maps can also be defined on individual material attributes, parse those here - // This occurs on Standard (Phong) surfaces - parseAttributeImageMaps(attributes, textures, maps) { - for (const name2 in attributes) { - const attribute = attributes[name2]; - if (attribute.maps) { - const mapData = attribute.maps[0]; - const path = this.getTexturePathByIndex(mapData.imageIndex, textures); - if (!path) return; - const texture = this.loadTexture(path); - if (mapData.wrap !== void 0) texture.wrapS = this.getWrappingType(mapData.wrap.w); - if (mapData.wrap !== void 0) texture.wrapT = this.getWrappingType(mapData.wrap.h); - switch (name2) { - case "Color": - maps.map = texture; - maps.map.colorSpace = SRGBColorSpace; - break; - case "Diffuse": - maps.aoMap = texture; - break; - case "Roughness": - maps.roughnessMap = texture; - maps.roughness = 1; - break; - case "Specular": - maps.specularMap = texture; - maps.specularMap.colorSpace = SRGBColorSpace; - maps.specular = 16777215; - break; - case "Luminosity": - maps.emissiveMap = texture; - maps.emissiveMap.colorSpace = SRGBColorSpace; - maps.emissive = 8421504; - break; - case "Metallic": - maps.metalnessMap = texture; - maps.metalness = 1; - break; - case "Transparency": - case "Alpha": - maps.alphaMap = texture; - maps.transparent = true; - break; - case "Normal": - maps.normalMap = texture; - break; - case "Bump": - maps.bumpMap = texture; - break; - } - } - } - } - parseAttributes(attributes, maps) { - const params = {}; - if (attributes.Color && !maps.map) { - params.color = new Color().fromArray(attributes.Color.value); - } else { - params.color = new Color(); - } - if (attributes.Transparency && attributes.Transparency.value !== 0) { - params.opacity = 1 - attributes.Transparency.value; - params.transparent = true; - } - if (attributes["Bump Height"]) params.bumpScale = attributes["Bump Height"].value * 0.1; - this.parsePhysicalAttributes(params, attributes, maps); - this.parseStandardAttributes(params, attributes, maps); - this.parsePhongAttributes(params, attributes, maps); - return params; - } - parsePhysicalAttributes(params, attributes) { - if (attributes.Clearcoat && attributes.Clearcoat.value > 0) { - params.clearcoat = attributes.Clearcoat.value; - if (attributes["Clearcoat Gloss"]) { - params.clearcoatRoughness = 0.5 * (1 - attributes["Clearcoat Gloss"].value); - } - } - } - parseStandardAttributes(params, attributes, maps) { - if (attributes.Luminous) { - params.emissiveIntensity = attributes.Luminous.value; - if (attributes["Luminous Color"] && !maps.emissive) { - params.emissive = new Color().fromArray(attributes["Luminous Color"].value); - } else { - params.emissive = new Color(8421504); - } - } - if (attributes.Roughness && !maps.roughnessMap) params.roughness = attributes.Roughness.value; - if (attributes.Metallic && !maps.metalnessMap) params.metalness = attributes.Metallic.value; - } - parsePhongAttributes(params, attributes, maps) { - if (attributes["Refraction Index"]) params.refractionRatio = 0.98 / attributes["Refraction Index"].value; - if (attributes.Diffuse) params.color.multiplyScalar(attributes.Diffuse.value); - if (attributes.Reflection) { - params.reflectivity = attributes.Reflection.value; - params.combine = AddOperation; - } - if (attributes.Luminosity) { - params.emissiveIntensity = attributes.Luminosity.value; - if (!maps.emissiveMap && !maps.map) { - params.emissive = params.color; - } else { - params.emissive = new Color(8421504); - } - } - if (!attributes.Roughness && attributes.Specular && !maps.specularMap) { - if (attributes["Color Highlight"]) { - params.specular = new Color().setScalar(attributes.Specular.value).lerp(params.color.clone().multiplyScalar(attributes.Specular.value), attributes["Color Highlight"].value); - } else { - params.specular = new Color().setScalar(attributes.Specular.value); - } - } - if (params.specular && attributes.Glossiness) params.shininess = 7 + Math.pow(2, attributes.Glossiness.value * 12 + 2); - } - parseEnvMap(connections2, maps, attributes) { - if (connections2.envMap) { - const envMap = this.loadTexture(connections2.envMap); - if (attributes.transparent && attributes.opacity < 0.999) { - envMap.mapping = EquirectangularRefractionMapping; - if (attributes.reflectivity !== void 0) { - delete attributes.reflectivity; - delete attributes.combine; - } - if (attributes.metalness !== void 0) { - attributes.metalness = 1; - } - attributes.opacity = 1; - } else envMap.mapping = EquirectangularReflectionMapping; - maps.envMap = envMap; - } - } - // get texture defined at top level by its index - getTexturePathByIndex(index2) { - let fileName = ""; - if (!_lwoTree.textures) return fileName; - _lwoTree.textures.forEach(function(texture) { - if (texture.index === index2) fileName = texture.fileName; - }); - return fileName; - } - loadTexture(path) { - if (!path) return null; - const texture = this.textureLoader.load( - path, - void 0, - void 0, - function() { - console.warn("LWOLoader: non-standard resource hierarchy. Use `resourcePath` parameter to specify root content directory."); - } - ); - return texture; - } - // 0 = Reset, 1 = Repeat, 2 = Mirror, 3 = Edge - getWrappingType(num) { - switch (num) { - case 0: - console.warn('LWOLoader: "Reset" texture wrapping type is not supported in three.js'); - return ClampToEdgeWrapping; - case 1: - return RepeatWrapping; - case 2: - return MirroredRepeatWrapping; - case 3: - return ClampToEdgeWrapping; - } - } - getMaterialType(nodeData) { - if (nodeData.Clearcoat && nodeData.Clearcoat.value > 0) return MeshPhysicalMaterial; - if (nodeData.Roughness) return MeshStandardMaterial; - return MeshPhongMaterial; - } -}; -var GeometryParser2 = class { - parse(geoData, layer) { - const geometry = new BufferGeometry(); - geometry.setAttribute("position", new Float32BufferAttribute(geoData.points, 3)); - const indices = this.splitIndices(geoData.vertexIndices, geoData.polygonDimensions); - geometry.setIndex(indices); - this.parseGroups(geometry, geoData); - geometry.computeVertexNormals(); - this.parseUVs(geometry, layer, indices); - this.parseMorphTargets(geometry, layer, indices); - geometry.translate(-layer.pivot[0], -layer.pivot[1], -layer.pivot[2]); - return geometry; - } - // split quads into tris - splitIndices(indices, polygonDimensions) { - const remappedIndices = []; - let i = 0; - polygonDimensions.forEach(function(dim) { - if (dim < 4) { - for (let k2 = 0; k2 < dim; k2++) remappedIndices.push(indices[i + k2]); - } else if (dim === 4) { - remappedIndices.push( - indices[i], - indices[i + 1], - indices[i + 2], - indices[i], - indices[i + 2], - indices[i + 3] - ); - } else if (dim > 4) { - for (let k2 = 1; k2 < dim - 1; k2++) { - remappedIndices.push(indices[i], indices[i + k2], indices[i + k2 + 1]); - } - console.warn("LWOLoader: polygons with greater than 4 sides are not supported"); - } - i += dim; - }); - return remappedIndices; - } - // NOTE: currently ignoring poly indices and assuming that they are intelligently ordered - parseGroups(geometry, geoData) { - const tags = _lwoTree.tags; - const matNames = []; - let elemSize = 3; - if (geoData.type === "lines") elemSize = 2; - if (geoData.type === "points") elemSize = 1; - const remappedIndices = this.splitMaterialIndices(geoData.polygonDimensions, geoData.materialIndices); - let indexNum = 0; - const indexPairs = {}; - let prevMaterialIndex; - let materialIndex; - let prevStart = 0; - let currentCount = 0; - for (let i = 0; i < remappedIndices.length; i += 2) { - materialIndex = remappedIndices[i + 1]; - if (i === 0) matNames[indexNum] = tags[materialIndex]; - if (prevMaterialIndex === void 0) prevMaterialIndex = materialIndex; - if (materialIndex !== prevMaterialIndex) { - let currentIndex; - if (indexPairs[tags[prevMaterialIndex]]) { - currentIndex = indexPairs[tags[prevMaterialIndex]]; - } else { - currentIndex = indexNum; - indexPairs[tags[prevMaterialIndex]] = indexNum; - matNames[indexNum] = tags[prevMaterialIndex]; - indexNum++; - } - geometry.addGroup(prevStart, currentCount, currentIndex); - prevStart += currentCount; - prevMaterialIndex = materialIndex; - currentCount = 0; - } - currentCount += elemSize; - } - if (geometry.groups.length > 0) { - let currentIndex; - if (indexPairs[tags[materialIndex]]) { - currentIndex = indexPairs[tags[materialIndex]]; - } else { - currentIndex = indexNum; - indexPairs[tags[materialIndex]] = indexNum; - matNames[indexNum] = tags[materialIndex]; - } - geometry.addGroup(prevStart, currentCount, currentIndex); - } - geometry.userData.matNames = matNames; - } - splitMaterialIndices(polygonDimensions, indices) { - const remappedIndices = []; - polygonDimensions.forEach(function(dim, i) { - if (dim <= 3) { - remappedIndices.push(indices[i * 2], indices[i * 2 + 1]); - } else if (dim === 4) { - remappedIndices.push(indices[i * 2], indices[i * 2 + 1], indices[i * 2], indices[i * 2 + 1]); - } else { - for (let k2 = 0; k2 < dim - 2; k2++) { - remappedIndices.push(indices[i * 2], indices[i * 2 + 1]); - } - } - }); - return remappedIndices; - } - // UV maps: - // 1: are defined via index into an array of points, not into a geometry - // - the geometry is also defined by an index into this array, but the indexes may not match - // 2: there can be any number of UV maps for a single geometry. Here these are combined, - // with preference given to the first map encountered - // 3: UV maps can be partial - that is, defined for only a part of the geometry - // 4: UV maps can be VMAP or VMAD (discontinuous, to allow for seams). In practice, most - // UV maps are defined as partially VMAP and partially VMAD - // VMADs are currently not supported - parseUVs(geometry, layer) { - const remappedUVs = Array.from(Array(geometry.attributes.position.count * 2), function() { - return 0; - }); - for (const name2 in layer.uvs) { - const uvs = layer.uvs[name2].uvs; - const uvIndices = layer.uvs[name2].uvIndices; - uvIndices.forEach(function(i, j) { - remappedUVs[i * 2] = uvs[j * 2]; - remappedUVs[i * 2 + 1] = uvs[j * 2 + 1]; - }); - } - geometry.setAttribute("uv", new Float32BufferAttribute(remappedUVs, 2)); - } - parseMorphTargets(geometry, layer) { - let num = 0; - for (const name2 in layer.morphTargets) { - const remappedPoints = geometry.attributes.position.array.slice(); - if (!geometry.morphAttributes.position) geometry.morphAttributes.position = []; - const morphPoints = layer.morphTargets[name2].points; - const morphIndices = layer.morphTargets[name2].indices; - const type = layer.morphTargets[name2].type; - morphIndices.forEach(function(i, j) { - if (type === "relative") { - remappedPoints[i * 3] += morphPoints[j * 3]; - remappedPoints[i * 3 + 1] += morphPoints[j * 3 + 1]; - remappedPoints[i * 3 + 2] += morphPoints[j * 3 + 2]; - } else { - remappedPoints[i * 3] = morphPoints[j * 3]; - remappedPoints[i * 3 + 1] = morphPoints[j * 3 + 1]; - remappedPoints[i * 3 + 2] = morphPoints[j * 3 + 2]; - } - }); - geometry.morphAttributes.position[num] = new Float32BufferAttribute(remappedPoints, 3); - geometry.morphAttributes.position[num].name = name2; - num++; - } - geometry.morphTargetsRelative = false; - } -}; -function extractParentUrl(url, dir) { - const index2 = url.indexOf(dir); - if (index2 === -1) return "./"; - return url.slice(0, index2); -} - -// node_modules/three/examples/jsm/loaders/LogLuvLoader.js -var LogLuvLoader = class extends DataTextureLoader { - constructor(manager) { - super(manager); - this.type = HalfFloatType; - } - parse(buffer) { - const ifds = UTIF.decode(buffer); - UTIF.decodeImage(buffer, ifds[0]); - const rgba = UTIF.toRGBA(ifds[0], this.type); - return { - width: ifds[0].width, - height: ifds[0].height, - data: rgba, - format: RGBAFormat, - type: this.type, - flipY: true - }; - } - setDataType(value2) { - this.type = value2; - return this; - } -}; -var UTIF = {}; -UTIF.decode = function(buff, prm) { - if (prm == null) prm = { parseMN: true, debug: false }; - var data2 = new Uint8Array(buff), offset = 0; - var id = UTIF._binBE.readASCII(data2, offset, 2); - offset += 2; - var bin = id == "II" ? UTIF._binLE : UTIF._binBE; - bin.readUshort(data2, offset); - offset += 2; - var ifdo = bin.readUint(data2, offset); - var ifds = []; - while (true) { - var cnt = bin.readUshort(data2, ifdo), typ = bin.readUshort(data2, ifdo + 4); - if (cnt != 0) { - if (typ < 1 || 13 < typ) { - console.log("error in TIFF"); - break; - } - } - UTIF._readIFD(bin, data2, ifdo, ifds, 0, prm); - ifdo = bin.readUint(data2, ifdo + 2 + cnt * 12); - if (ifdo == 0) break; - } - return ifds; -}; -UTIF.decodeImage = function(buff, img, ifds) { - if (img.data) return; - var data2 = new Uint8Array(buff); - var id = UTIF._binBE.readASCII(data2, 0, 2); - if (img["t256"] == null) return; - img.isLE = id == "II"; - img.width = img["t256"][0]; - img.height = img["t257"][0]; - var cmpr = img["t259"] ? img["t259"][0] : 1; - var fo = img["t266"] ? img["t266"][0] : 1; - if (img["t284"] && img["t284"][0] == 2) console.log("PlanarConfiguration 2 should not be used!"); - if (cmpr == 7 && img["t258"] && img["t258"].length > 3) img["t258"] = img["t258"].slice(0, 3); - var bipp; - if (img["t258"]) bipp = Math.min(32, img["t258"][0]) * img["t258"].length; - else bipp = img["t277"] ? img["t277"][0] : 1; - if (cmpr == 1 && img["t279"] != null && img["t278"] && img["t262"][0] == 32803) { - bipp = Math.round(img["t279"][0] * 8 / (img.width * img["t278"][0])); - } - var bipl = Math.ceil(img.width * bipp / 8) * 8; - var soff = img["t273"]; - if (soff == null) soff = img["t324"]; - var bcnt = img["t279"]; - if (cmpr == 1 && soff.length == 1) bcnt = [img.height * (bipl >>> 3)]; - if (bcnt == null) bcnt = img["t325"]; - var bytes = new Uint8Array(img.height * (bipl >>> 3)), bilen = 0; - if (img["t322"] != null) { - var tw = img["t322"][0], th = img["t323"][0]; - var tx = Math.floor((img.width + tw - 1) / tw); - var ty = Math.floor((img.height + th - 1) / th); - var tbuff = new Uint8Array(Math.ceil(tw * th * bipp / 8) | 0); - for (var y2 = 0; y2 < ty; y2++) - for (var x2 = 0; x2 < tx; x2++) { - var i = y2 * tx + x2; - for (var j = 0; j < tbuff.length; j++) tbuff[j] = 0; - UTIF.decode._decompress(img, ifds, data2, soff[i], bcnt[i], cmpr, tbuff, 0, fo); - if (cmpr == 6) bytes = tbuff; - else UTIF._copyTile(tbuff, Math.ceil(tw * bipp / 8) | 0, th, bytes, Math.ceil(img.width * bipp / 8) | 0, img.height, Math.ceil(x2 * tw * bipp / 8) | 0, y2 * th); - } - bilen = bytes.length * 8; - } else { - var rps = img["t278"] ? img["t278"][0] : img.height; - rps = Math.min(rps, img.height); - for (var i = 0; i < soff.length; i++) { - UTIF.decode._decompress(img, ifds, data2, soff[i], bcnt[i], cmpr, bytes, Math.ceil(bilen / 8) | 0, fo); - bilen += bipl * rps; - } - bilen = Math.min(bilen, bytes.length * 8); - } - img.data = new Uint8Array(bytes.buffer, 0, Math.ceil(bilen / 8) | 0); -}; -UTIF.decode._decompress = function(img, ifds, data2, off, len, cmpr, tgt, toff) { - if (cmpr == 34676) UTIF.decode._decodeLogLuv32(img, data2, off, len, tgt, toff); - else console.log("Unsupported compression", cmpr); - var bps = img["t258"] ? Math.min(32, img["t258"][0]) : 1; - var noc = img["t277"] ? img["t277"][0] : 1, bpp = bps * noc >>> 3, h = img["t278"] ? img["t278"][0] : img.height, bpl = Math.ceil(bps * noc * img.width / 8); - if (bps == 16 && !img.isLE && img["t33422"] == null) - for (var y2 = 0; y2 < h; y2++) { - var roff = toff + y2 * bpl; - for (var x2 = 1; x2 < bpl; x2 += 2) { - var t3 = tgt[roff + x2]; - tgt[roff + x2] = tgt[roff + x2 - 1]; - tgt[roff + x2 - 1] = t3; - } - } - if (img["t317"] && img["t317"][0] == 2) { - for (var y2 = 0; y2 < h; y2++) { - var ntoff = toff + y2 * bpl; - if (bps == 16) for (var j = bpp; j < bpl; j += 2) { - var nv = (tgt[ntoff + j + 1] << 8 | tgt[ntoff + j]) + (tgt[ntoff + j - bpp + 1] << 8 | tgt[ntoff + j - bpp]); - tgt[ntoff + j] = nv & 255; - tgt[ntoff + j + 1] = nv >>> 8 & 255; - } - else if (noc == 3) for (var j = 3; j < bpl; j += 3) { - tgt[ntoff + j] = tgt[ntoff + j] + tgt[ntoff + j - 3] & 255; - tgt[ntoff + j + 1] = tgt[ntoff + j + 1] + tgt[ntoff + j - 2] & 255; - tgt[ntoff + j + 2] = tgt[ntoff + j + 2] + tgt[ntoff + j - 1] & 255; - } - else for (var j = bpp; j < bpl; j++) tgt[ntoff + j] = tgt[ntoff + j] + tgt[ntoff + j - bpp] & 255; - } - } -}; -UTIF.decode._decodeLogLuv32 = function(img, data2, off, len, tgt, toff) { - var w = img.width, qw = w * 4; - var io = 0, out = new Uint8Array(qw); - while (io < len) { - var oo = 0; - while (oo < qw) { - var c2 = data2[off + io]; - io++; - if (c2 < 128) { - for (var j = 0; j < c2; j++) out[oo + j] = data2[off + io + j]; - oo += c2; - io += c2; - } else { - c2 = c2 - 126; - for (var j = 0; j < c2; j++) out[oo + j] = data2[off + io]; - oo += c2; - io++; - } - } - for (var x2 = 0; x2 < w; x2++) { - tgt[toff + 0] = out[x2]; - tgt[toff + 1] = out[x2 + w]; - tgt[toff + 2] = out[x2 + w * 2]; - tgt[toff + 4] = out[x2 + w * 3]; - toff += 6; - } - } -}; -UTIF.tags = {}; -UTIF._types = function() { - var main = new Array(250); - main.fill(0); - main = main.concat([0, 0, 0, 0, 4, 3, 3, 3, 3, 3, 0, 0, 3, 0, 0, 0, 3, 0, 0, 2, 2, 2, 2, 4, 3, 0, 0, 3, 4, 4, 3, 3, 5, 5, 3, 2, 5, 5, 0, 0, 0, 0, 4, 4, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 3, 5, 5, 3, 0, 3, 3, 4, 4, 4, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); - var rest = { 33432: 2, 33434: 5, 33437: 5, 34665: 4, 34850: 3, 34853: 4, 34855: 3, 34864: 3, 34866: 4, 36864: 7, 36867: 2, 36868: 2, 37121: 7, 37377: 10, 37378: 5, 37380: 10, 37381: 5, 37383: 3, 37384: 3, 37385: 3, 37386: 5, 37510: 7, 37520: 2, 37521: 2, 37522: 2, 40960: 7, 40961: 3, 40962: 4, 40963: 4, 40965: 4, 41486: 5, 41487: 5, 41488: 3, 41985: 3, 41986: 3, 41987: 3, 41988: 5, 41989: 3, 41990: 3, 41993: 3, 41994: 3, 41995: 7, 41996: 3, 42032: 2, 42033: 2, 42034: 5, 42036: 2, 42037: 2, 59932: 7 }; - return { - basic: { - main, - rest - }, - gps: { - main: [1, 2, 5, 2, 5, 1, 5, 5, 0, 9], - rest: { 18: 2, 29: 2 } - } - }; -}(); -UTIF._readIFD = function(bin, data2, offset, ifds, depth, prm) { - var cnt = bin.readUshort(data2, offset); - offset += 2; - var ifd = {}; - if (prm.debug) console.log(" ".repeat(depth), ifds.length - 1, ">>>----------------"); - for (var i = 0; i < cnt; i++) { - var tag = bin.readUshort(data2, offset); - offset += 2; - var type = bin.readUshort(data2, offset); - offset += 2; - var num = bin.readUint(data2, offset); - offset += 4; - var voff = bin.readUint(data2, offset); - offset += 4; - var arr = []; - if (type == 1 || type == 7) { - arr = new Uint8Array(data2.buffer, num < 5 ? offset - 4 : voff, num); - } - if (type == 2) { - var o0 = num < 5 ? offset - 4 : voff, c2 = data2[o0], len = Math.max(0, Math.min(num - 1, data2.length - o0)); - if (c2 < 128 || len == 0) arr.push(bin.readASCII(data2, o0, len)); - else arr = new Uint8Array(data2.buffer, o0, len); - } - if (type == 3) { - for (var j = 0; j < num; j++) arr.push(bin.readUshort(data2, (num < 3 ? offset - 4 : voff) + 2 * j)); - } - if (type == 4 || type == 13) { - for (var j = 0; j < num; j++) arr.push(bin.readUint(data2, (num < 2 ? offset - 4 : voff) + 4 * j)); - } - if (type == 5 || type == 10) { - var ri = type == 5 ? bin.readUint : bin.readInt; - for (var j = 0; j < num; j++) arr.push([ri(data2, voff + j * 8), ri(data2, voff + j * 8 + 4)]); - } - if (type == 8) { - for (var j = 0; j < num; j++) arr.push(bin.readShort(data2, (num < 3 ? offset - 4 : voff) + 2 * j)); - } - if (type == 9) { - for (var j = 0; j < num; j++) arr.push(bin.readInt(data2, (num < 2 ? offset - 4 : voff) + 4 * j)); - } - if (type == 11) { - for (var j = 0; j < num; j++) arr.push(bin.readFloat(data2, voff + j * 4)); - } - if (type == 12) { - for (var j = 0; j < num; j++) arr.push(bin.readDouble(data2, voff + j * 8)); - } - if (num != 0 && arr.length == 0) { - console.log(tag, "unknown TIFF tag type: ", type, "num:", num); - if (i == 0) return; - continue; - } - if (prm.debug) console.log(" ".repeat(depth), tag, type, UTIF.tags[tag], arr); - ifd["t" + tag] = arr; - if (tag == 330 || tag == 34665 || tag == 34853 || tag == 50740 && bin.readUshort(data2, bin.readUint(arr, 0)) < 300 || tag == 61440) { - var oarr = tag == 50740 ? [bin.readUint(arr, 0)] : arr; - var subfd = []; - for (var j = 0; j < oarr.length; j++) UTIF._readIFD(bin, data2, oarr[j], subfd, depth + 1, prm); - if (tag == 330) ifd.subIFD = subfd; - if (tag == 34665) ifd.exifIFD = subfd[0]; - if (tag == 34853) ifd.gpsiIFD = subfd[0]; - if (tag == 50740) ifd.dngPrvt = subfd[0]; - if (tag == 61440) ifd.fujiIFD = subfd[0]; - } - if (tag == 37500 && prm.parseMN) { - var mn = arr; - if (bin.readASCII(mn, 0, 5) == "Nikon") ifd.makerNote = UTIF["decode"](mn.slice(10).buffer)[0]; - else if (bin.readUshort(data2, voff) < 300 && bin.readUshort(data2, voff + 4) <= 12) { - var subsub = []; - UTIF._readIFD(bin, data2, voff, subsub, depth + 1, prm); - ifd.makerNote = subsub[0]; - } - } - } - ifds.push(ifd); - if (prm.debug) console.log(" ".repeat(depth), "<<<---------------"); - return offset; -}; -UTIF.toRGBA = function(out, type) { - const w = out.width, h = out.height, area = w * h, data2 = out.data; - let img; - switch (type) { - case HalfFloatType: - img = new Uint16Array(area * 4); - break; - case FloatType: - img = new Float32Array(area * 4); - break; - default: - throw new Error("THREE.LogLuvLoader: Unsupported texture data type: " + type); - } - let intp = out["t262"] ? out["t262"][0] : 2; - const bps = out["t258"] ? Math.min(32, out["t258"][0]) : 1; - if (out["t262"] == null && bps == 1) intp = 0; - if (intp == 32845) { - for (let y2 = 0; y2 < h; y2++) { - for (let x2 = 0; x2 < w; x2++) { - const si = (y2 * w + x2) * 6, qi = (y2 * w + x2) * 4; - let L = data2[si + 1] << 8 | data2[si]; - L = Math.pow(2, (L + 0.5) / 256 - 64); - const u = (data2[si + 3] + 0.5) / 410; - const v = (data2[si + 5] + 0.5) / 410; - const sX = 9 * u / (6 * u - 16 * v + 12); - const sY = 4 * v / (6 * u - 16 * v + 12); - const bY = L; - const X2 = sX * bY / sY, Y2 = bY, Z2 = (1 - sX - sY) * bY / sY; - const r = 2.69 * X2 - 1.276 * Y2 - 0.414 * Z2; - const g2 = -1.022 * X2 + 1.978 * Y2 + 0.044 * Z2; - const b3 = 0.061 * X2 - 0.224 * Y2 + 1.163 * Z2; - if (type === HalfFloatType) { - img[qi] = DataUtils.toHalfFloat(Math.min(r, 65504)); - img[qi + 1] = DataUtils.toHalfFloat(Math.min(g2, 65504)); - img[qi + 2] = DataUtils.toHalfFloat(Math.min(b3, 65504)); - img[qi + 3] = DataUtils.toHalfFloat(1); - } else { - img[qi] = r; - img[qi + 1] = g2; - img[qi + 2] = b3; - img[qi + 3] = 1; - } - } - } - } else { - throw new Error("THREE.LogLuvLoader: Unsupported Photometric interpretation: " + intp); - } - return img; -}; -UTIF._binBE = { - nextZero: function(data2, o) { - while (data2[o] != 0) o++; - return o; - }, - readUshort: function(buff, p2) { - return buff[p2] << 8 | buff[p2 + 1]; - }, - readShort: function(buff, p2) { - var a2 = UTIF._binBE.ui8; - a2[0] = buff[p2 + 1]; - a2[1] = buff[p2 + 0]; - return UTIF._binBE.i16[0]; - }, - readInt: function(buff, p2) { - var a2 = UTIF._binBE.ui8; - a2[0] = buff[p2 + 3]; - a2[1] = buff[p2 + 2]; - a2[2] = buff[p2 + 1]; - a2[3] = buff[p2 + 0]; - return UTIF._binBE.i32[0]; - }, - readUint: function(buff, p2) { - var a2 = UTIF._binBE.ui8; - a2[0] = buff[p2 + 3]; - a2[1] = buff[p2 + 2]; - a2[2] = buff[p2 + 1]; - a2[3] = buff[p2 + 0]; - return UTIF._binBE.ui32[0]; - }, - readASCII: function(buff, p2, l2) { - var s = ""; - for (var i = 0; i < l2; i++) s += String.fromCharCode(buff[p2 + i]); - return s; - }, - readFloat: function(buff, p2) { - var a2 = UTIF._binBE.ui8; - for (var i = 0; i < 4; i++) a2[i] = buff[p2 + 3 - i]; - return UTIF._binBE.fl32[0]; - }, - readDouble: function(buff, p2) { - var a2 = UTIF._binBE.ui8; - for (var i = 0; i < 8; i++) a2[i] = buff[p2 + 7 - i]; - return UTIF._binBE.fl64[0]; - }, - writeUshort: function(buff, p2, n2) { - buff[p2] = n2 >> 8 & 255; - buff[p2 + 1] = n2 & 255; - }, - writeInt: function(buff, p2, n2) { - var a2 = UTIF._binBE.ui8; - UTIF._binBE.i32[0] = n2; - buff[p2 + 3] = a2[0]; - buff[p2 + 2] = a2[1]; - buff[p2 + 1] = a2[2]; - buff[p2 + 0] = a2[3]; - }, - writeUint: function(buff, p2, n2) { - buff[p2] = n2 >> 24 & 255; - buff[p2 + 1] = n2 >> 16 & 255; - buff[p2 + 2] = n2 >> 8 & 255; - buff[p2 + 3] = n2 >> 0 & 255; - }, - writeASCII: function(buff, p2, s) { - for (var i = 0; i < s.length; i++) buff[p2 + i] = s.charCodeAt(i); - }, - writeDouble: function(buff, p2, n2) { - UTIF._binBE.fl64[0] = n2; - for (var i = 0; i < 8; i++) buff[p2 + i] = UTIF._binBE.ui8[7 - i]; - } -}; -UTIF._binBE.ui8 = new Uint8Array(8); -UTIF._binBE.i16 = new Int16Array(UTIF._binBE.ui8.buffer); -UTIF._binBE.i32 = new Int32Array(UTIF._binBE.ui8.buffer); -UTIF._binBE.ui32 = new Uint32Array(UTIF._binBE.ui8.buffer); -UTIF._binBE.fl32 = new Float32Array(UTIF._binBE.ui8.buffer); -UTIF._binBE.fl64 = new Float64Array(UTIF._binBE.ui8.buffer); -UTIF._binLE = { - nextZero: UTIF._binBE.nextZero, - readUshort: function(buff, p2) { - return buff[p2 + 1] << 8 | buff[p2]; - }, - readShort: function(buff, p2) { - var a2 = UTIF._binBE.ui8; - a2[0] = buff[p2 + 0]; - a2[1] = buff[p2 + 1]; - return UTIF._binBE.i16[0]; - }, - readInt: function(buff, p2) { - var a2 = UTIF._binBE.ui8; - a2[0] = buff[p2 + 0]; - a2[1] = buff[p2 + 1]; - a2[2] = buff[p2 + 2]; - a2[3] = buff[p2 + 3]; - return UTIF._binBE.i32[0]; - }, - readUint: function(buff, p2) { - var a2 = UTIF._binBE.ui8; - a2[0] = buff[p2 + 0]; - a2[1] = buff[p2 + 1]; - a2[2] = buff[p2 + 2]; - a2[3] = buff[p2 + 3]; - return UTIF._binBE.ui32[0]; - }, - readASCII: UTIF._binBE.readASCII, - readFloat: function(buff, p2) { - var a2 = UTIF._binBE.ui8; - for (var i = 0; i < 4; i++) a2[i] = buff[p2 + i]; - return UTIF._binBE.fl32[0]; - }, - readDouble: function(buff, p2) { - var a2 = UTIF._binBE.ui8; - for (var i = 0; i < 8; i++) a2[i] = buff[p2 + i]; - return UTIF._binBE.fl64[0]; - }, - writeUshort: function(buff, p2, n2) { - buff[p2] = n2 & 255; - buff[p2 + 1] = n2 >> 8 & 255; - }, - writeInt: function(buff, p2, n2) { - var a2 = UTIF._binBE.ui8; - UTIF._binBE.i32[0] = n2; - buff[p2 + 0] = a2[0]; - buff[p2 + 1] = a2[1]; - buff[p2 + 2] = a2[2]; - buff[p2 + 3] = a2[3]; - }, - writeUint: function(buff, p2, n2) { - buff[p2] = n2 >>> 0 & 255; - buff[p2 + 1] = n2 >>> 8 & 255; - buff[p2 + 2] = n2 >>> 16 & 255; - buff[p2 + 3] = n2 >>> 24 & 255; - }, - writeASCII: UTIF._binBE.writeASCII -}; -UTIF._copyTile = function(tb, tw, th, b3, w, h, xoff, yoff) { - var xlim = Math.min(tw, w - xoff); - var ylim = Math.min(th, h - yoff); - for (var y2 = 0; y2 < ylim; y2++) { - var tof = (yoff + y2) * w + xoff; - var sof = y2 * tw; - for (var x2 = 0; x2 < xlim; x2++) b3[tof + x2] = tb[sof + x2]; - } -}; - -// node_modules/three/examples/jsm/libs/lottie_canvas.module.js -var lottie = {}; -if (typeof document !== "undefined") { - function createTag(type) { - return document.createElement(type); - } - function extendPrototype(sources, destination) { - var i; - var len = sources.length; - var sourcePrototype; - for (i = 0; i < len; i += 1) { - sourcePrototype = sources[i].prototype; - for (var attr in sourcePrototype) { - if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr]; - } - } - } - function getDescriptor(object, prop) { - return Object.getOwnPropertyDescriptor(object, prop); - } - function createProxyFunction(prototype) { - function ProxyFunction() { - } - ProxyFunction.prototype = prototype; - return ProxyFunction; - } - function createSizedArray(len) { - return Array.apply(null, { length: len }); - } - function ProjectInterface$1() { - return {}; - } - function roundValues(flag) { - _shouldRoundValues = !!flag; - } - function bmRnd(value2) { - if (_shouldRoundValues) { - return Math.round(value2); - } - return value2; - } - function styleDiv(element) { - element.style.position = "absolute"; - element.style.top = 0; - element.style.left = 0; - element.style.display = "block"; - element.style.transformOrigin = "0 0"; - element.style.webkitTransformOrigin = "0 0"; - element.style.backfaceVisibility = "visible"; - element.style.webkitBackfaceVisibility = "visible"; - element.style.transformStyle = "preserve-3d"; - element.style.webkitTransformStyle = "preserve-3d"; - element.style.mozTransformStyle = "preserve-3d"; - } - function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) { - this.type = type; - this.currentTime = currentTime; - this.totalTime = totalTime; - this.direction = frameMultiplier < 0 ? -1 : 1; - } - function BMCompleteEvent(type, frameMultiplier) { - this.type = type; - this.direction = frameMultiplier < 0 ? -1 : 1; - } - function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) { - this.type = type; - this.currentLoop = currentLoop; - this.totalLoops = totalLoops; - this.direction = frameMultiplier < 0 ? -1 : 1; - } - function BMSegmentStartEvent(type, firstFrame, totalFrames) { - this.type = type; - this.firstFrame = firstFrame; - this.totalFrames = totalFrames; - } - function BMDestroyEvent(type, target) { - this.type = type; - this.target = target; - } - function BMRenderFrameErrorEvent(nativeError, currentTime) { - this.type = "renderFrameError"; - this.nativeError = nativeError; - this.currentTime = currentTime; - } - function BMConfigErrorEvent(nativeError) { - this.type = "configError"; - this.nativeError = nativeError; - } - function BMAnimationConfigErrorEvent(type, nativeError) { - this.type = type; - this.nativeError = nativeError; - } - function HSVtoRGB(h, s, v) { - var r; - var g2; - var b3; - var i; - var f; - var p2; - var q2; - var t3; - i = Math.floor(h * 6); - f = h * 6 - i; - p2 = v * (1 - s); - q2 = v * (1 - f * s); - t3 = v * (1 - (1 - f) * s); - switch (i % 6) { - case 0: - r = v; - g2 = t3; - b3 = p2; - break; - case 1: - r = q2; - g2 = v; - b3 = p2; - break; - case 2: - r = p2; - g2 = v; - b3 = t3; - break; - case 3: - r = p2; - g2 = q2; - b3 = v; - break; - case 4: - r = t3; - g2 = p2; - b3 = v; - break; - case 5: - r = v; - g2 = p2; - b3 = q2; - break; - default: - break; - } - return [ - r, - g2, - b3 - ]; - } - function RGBtoHSV(r, g2, b3) { - var max2 = Math.max(r, g2, b3); - var min = Math.min(r, g2, b3); - var d = max2 - min; - var h; - var s = max2 === 0 ? 0 : d / max2; - var v = max2 / 255; - switch (max2) { - case min: - h = 0; - break; - case r: - h = g2 - b3 + d * (g2 < b3 ? 6 : 0); - h /= 6 * d; - break; - case g2: - h = b3 - r + d * 2; - h /= 6 * d; - break; - case b3: - h = r - g2 + d * 4; - h /= 6 * d; - break; - default: - break; - } - return [ - h, - s, - v - ]; - } - function addSaturationToRGB(color, offset) { - var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255); - hsv[1] += offset; - if (hsv[1] > 1) { - hsv[1] = 1; - } else if (hsv[1] <= 0) { - hsv[1] = 0; - } - return HSVtoRGB(hsv[0], hsv[1], hsv[2]); - } - function addBrightnessToRGB(color, offset) { - var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255); - hsv[2] += offset; - if (hsv[2] > 1) { - hsv[2] = 1; - } else if (hsv[2] < 0) { - hsv[2] = 0; - } - return HSVtoRGB(hsv[0], hsv[1], hsv[2]); - } - function addHueToRGB(color, offset) { - var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255); - hsv[0] += offset / 360; - if (hsv[0] > 1) { - hsv[0] -= 1; - } else if (hsv[0] < 0) { - hsv[0] += 1; - } - return HSVtoRGB(hsv[0], hsv[1], hsv[2]); - } - function createNS(type) { - return document.createElementNS(svgNS, type); - } - function BaseEvent() { - } - function getRenderer(key2) { - return renderers[key2]; - } - function bezFunction() { - var math = Math; - function pointOnLine2D(x1, y1, x2, y2, x3, y3) { - var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1; - return det1 > -1e-3 && det1 < 1e-3; - } - function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) { - if (z1 === 0 && z2 === 0 && z3 === 0) { - return pointOnLine2D(x1, y1, x2, y2, x3, y3); - } - var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2)); - var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2)); - var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2)); - var diffDist; - if (dist1 > dist2) { - if (dist1 > dist3) { - diffDist = dist1 - dist2 - dist3; - } else { - diffDist = dist3 - dist2 - dist1; - } - } else if (dist3 > dist2) { - diffDist = dist3 - dist2 - dist1; - } else { - diffDist = dist2 - dist1 - dist3; - } - return diffDist > -1e-4 && diffDist < 1e-4; - } - var getBezierLength = /* @__PURE__ */ function() { - return function(pt1, pt2, pt3, pt4) { - var curveSegments = getDefaultCurveSegments(); - var k2; - var i; - var len; - var ptCoord; - var perc; - var addedLength = 0; - var ptDistance; - var point = []; - var lastPoint = []; - var lengthData = bezierLengthPool.newElement(); - len = pt3.length; - for (k2 = 0; k2 < curveSegments; k2 += 1) { - perc = k2 / (curveSegments - 1); - ptDistance = 0; - for (i = 0; i < len; i += 1) { - ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i]; - point[i] = ptCoord; - if (lastPoint[i] !== null) { - ptDistance += bmPow(point[i] - lastPoint[i], 2); - } - lastPoint[i] = point[i]; - } - if (ptDistance) { - ptDistance = bmSqrt(ptDistance); - addedLength += ptDistance; - } - lengthData.percents[k2] = perc; - lengthData.lengths[k2] = addedLength; - } - lengthData.addedLength = addedLength; - return lengthData; - }; - }(); - function getSegmentsLength(shapeData) { - var segmentsLength = segmentsLengthPool.newElement(); - var closed = shapeData.c; - var pathV = shapeData.v; - var pathO = shapeData.o; - var pathI = shapeData.i; - var i; - var len = shapeData._length; - var lengths2 = segmentsLength.lengths; - var totalLength = 0; - for (i = 0; i < len - 1; i += 1) { - lengths2[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]); - totalLength += lengths2[i].addedLength; - } - if (closed && len) { - lengths2[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]); - totalLength += lengths2[i].addedLength; - } - segmentsLength.totalLength = totalLength; - return segmentsLength; - } - function BezierData(length2) { - this.segmentLength = 0; - this.points = new Array(length2); - } - function PointData(partial2, point) { - this.partialLength = partial2; - this.point = point; - } - var buildBezierData = /* @__PURE__ */ function() { - var storedData = {}; - return function(pt1, pt2, pt3, pt4) { - var bezierName = (pt1[0] + "_" + pt1[1] + "_" + pt2[0] + "_" + pt2[1] + "_" + pt3[0] + "_" + pt3[1] + "_" + pt4[0] + "_" + pt4[1]).replace(/\./g, "p"); - if (!storedData[bezierName]) { - var curveSegments = getDefaultCurveSegments(); - var k2; - var i; - var len; - var ptCoord; - var perc; - var addedLength = 0; - var ptDistance; - var point; - var lastPoint = null; - if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) { - curveSegments = 2; - } - var bezierData = new BezierData(curveSegments); - len = pt3.length; - for (k2 = 0; k2 < curveSegments; k2 += 1) { - point = createSizedArray(len); - perc = k2 / (curveSegments - 1); - ptDistance = 0; - for (i = 0; i < len; i += 1) { - ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i]; - point[i] = ptCoord; - if (lastPoint !== null) { - ptDistance += bmPow(point[i] - lastPoint[i], 2); - } - } - ptDistance = bmSqrt(ptDistance); - addedLength += ptDistance; - bezierData.points[k2] = new PointData(ptDistance, point); - lastPoint = point; - } - bezierData.segmentLength = addedLength; - storedData[bezierName] = bezierData; - } - return storedData[bezierName]; - }; - }(); - function getDistancePerc(perc, bezierData) { - var percents = bezierData.percents; - var lengths2 = bezierData.lengths; - var len = percents.length; - var initPos = bmFloor((len - 1) * perc); - var lengthPos = perc * bezierData.addedLength; - var lPerc = 0; - if (initPos === len - 1 || initPos === 0 || lengthPos === lengths2[initPos]) { - return percents[initPos]; - } - var dir = lengths2[initPos] > lengthPos ? -1 : 1; - var flag = true; - while (flag) { - if (lengths2[initPos] <= lengthPos && lengths2[initPos + 1] > lengthPos) { - lPerc = (lengthPos - lengths2[initPos]) / (lengths2[initPos + 1] - lengths2[initPos]); - flag = false; - } else { - initPos += dir; - } - if (initPos < 0 || initPos >= len - 1) { - if (initPos === len - 1) { - return percents[initPos]; - } - flag = false; - } - } - return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc; - } - function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) { - var t1 = getDistancePerc(percent, bezierData); - var u1 = 1 - t1; - var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1e3) / 1e3; - var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1e3) / 1e3; - return [ptX, ptY]; - } - var bezierSegmentPoints = createTypedArray("float32", 8); - function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) { - if (startPerc < 0) { - startPerc = 0; - } else if (startPerc > 1) { - startPerc = 1; - } - var t0 = getDistancePerc(startPerc, bezierData); - endPerc = endPerc > 1 ? 1 : endPerc; - var t1 = getDistancePerc(endPerc, bezierData); - var i; - var len = pt1.length; - var u0 = 1 - t0; - var u1 = 1 - t1; - var u0u0u0 = u0 * u0 * u0; - var t0u0u0_3 = t0 * u0 * u0 * 3; - var t0t0u0_3 = t0 * t0 * u0 * 3; - var t0t0t0 = t0 * t0 * t0; - var u0u0u1 = u0 * u0 * u1; - var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; - var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; - var t0t0t1 = t0 * t0 * t1; - var u0u1u1 = u0 * u1 * u1; - var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; - var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; - var t0t1t1 = t0 * t1 * t1; - var u1u1u1 = u1 * u1 * u1; - var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; - var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; - var t1t1t1 = t1 * t1 * t1; - for (i = 0; i < len; i += 1) { - bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1e3) / 1e3; - bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1e3) / 1e3; - bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1e3) / 1e3; - bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1e3) / 1e3; - } - return bezierSegmentPoints; - } - return { - getSegmentsLength, - getNewSegment, - getPointInSegment, - buildBezierData, - pointOnLine2D, - pointOnLine3D - }; - } - function DynamicPropertyContainer() { - } - function ShapePath() { - this.c = false; - this._length = 0; - this._maxLength = 8; - this.v = createSizedArray(this._maxLength); - this.o = createSizedArray(this._maxLength); - this.i = createSizedArray(this._maxLength); - } - function ShapeCollection() { - this._length = 0; - this._maxLength = 4; - this.shapes = createSizedArray(this._maxLength); - } - function setLocation(href) { - setLocationHref(href); - } - function searchAnimations() { - if (standalone === true) { - animationManager.searchAnimations(animationData, standalone, renderer); - } else { - animationManager.searchAnimations(); - } - } - function setSubframeRendering(flag) { - setSubframeEnabled(flag); - } - function setPrefix(prefix) { - setIdPrefix(prefix); - } - function loadAnimation(params) { - if (standalone === true) { - params.animationData = JSON.parse(animationData); - } - return animationManager.loadAnimation(params); - } - function setQuality(value2) { - if (typeof value2 === "string") { - switch (value2) { - case "high": - setDefaultCurveSegments(200); - break; - default: - case "medium": - setDefaultCurveSegments(50); - break; - case "low": - setDefaultCurveSegments(10); - break; - } - } else if (!isNaN(value2) && value2 > 1) { - setDefaultCurveSegments(value2); - } - if (getDefaultCurveSegments() >= 50) { - roundValues(false); - } else { - roundValues(true); - } - } - function inBrowser() { - return typeof navigator !== "undefined"; - } - function installPlugin(type, plugin) { - if (type === "expressions") { - setExpressionsPlugin(plugin); - } - } - function getFactory(name2) { - switch (name2) { - case "propertyFactory": - return PropertyFactory; - case "shapePropertyFactory": - return ShapePropertyFactory; - case "matrix": - return Matrix; - default: - return null; - } - } - function checkReady() { - if (document.readyState === "complete") { - clearInterval(readyStateCheckInterval); - searchAnimations(); - } - } - function getQueryVariable(variable) { - var vars = queryString.split("&"); - for (var i = 0; i < vars.length; i += 1) { - var pair = vars[i].split("="); - if (decodeURIComponent(pair[0]) == variable) { - return decodeURIComponent(pair[1]); - } - } - return null; - } - function ShapeModifier() { - } - function TrimModifier() { - } - function PuckerAndBloatModifier() { - } - function RepeaterModifier() { - } - function RoundCornersModifier() { - } - function getFontProperties(fontData) { - var styles = fontData.fStyle ? fontData.fStyle.split(" ") : []; - var fWeight = "normal"; - var fStyle = "normal"; - var len = styles.length; - var styleName; - for (var i = 0; i < len; i += 1) { - styleName = styles[i].toLowerCase(); - switch (styleName) { - case "italic": - fStyle = "italic"; - break; - case "bold": - fWeight = "700"; - break; - case "black": - fWeight = "900"; - break; - case "medium": - fWeight = "500"; - break; - case "regular": - case "normal": - fWeight = "400"; - break; - case "light": - case "thin": - fWeight = "200"; - break; - default: - break; - } - } - return { - style: fStyle, - weight: fontData.fWeight || fWeight - }; - } - function RenderableElement() { - } - function SliderEffect(data2, elem2, container) { - this.p = PropertyFactory.getProp(elem2, data2.v, 0, 0, container); - } - function AngleEffect(data2, elem2, container) { - this.p = PropertyFactory.getProp(elem2, data2.v, 0, 0, container); - } - function ColorEffect(data2, elem2, container) { - this.p = PropertyFactory.getProp(elem2, data2.v, 1, 0, container); - } - function PointEffect(data2, elem2, container) { - this.p = PropertyFactory.getProp(elem2, data2.v, 1, 0, container); - } - function LayerIndexEffect(data2, elem2, container) { - this.p = PropertyFactory.getProp(elem2, data2.v, 0, 0, container); - } - function MaskIndexEffect(data2, elem2, container) { - this.p = PropertyFactory.getProp(elem2, data2.v, 0, 0, container); - } - function CheckboxEffect(data2, elem2, container) { - this.p = PropertyFactory.getProp(elem2, data2.v, 0, 0, container); - } - function NoValueEffect() { - this.p = {}; - } - function EffectsManager(data2, element) { - var effects = data2.ef || []; - this.effectElements = []; - var i; - var len = effects.length; - var effectItem; - for (i = 0; i < len; i += 1) { - effectItem = new GroupEffect(effects[i], element); - this.effectElements.push(effectItem); - } - } - function GroupEffect(data2, element) { - this.init(data2, element); - } - function BaseElement() { - } - function FrameElement() { - } - function FootageElement(data2, globalData2, comp2) { - this.initFrame(); - this.initRenderable(); - this.assetData = globalData2.getAssetData(data2.refId); - this.footageData = globalData2.imageLoader.getAsset(this.assetData); - this.initBaseData(data2, globalData2, comp2); - } - function AudioElement(data2, globalData2, comp2) { - this.initFrame(); - this.initRenderable(); - this.assetData = globalData2.getAssetData(data2.refId); - this.initBaseData(data2, globalData2, comp2); - this._isPlaying = false; - this._canPlay = false; - var assetPath = this.globalData.getAssetsPath(this.assetData); - this.audio = this.globalData.audioController.createAudio(assetPath); - this._currentTime = 0; - this.globalData.audioController.addAudio(this); - this._volumeMultiplier = 1; - this._volume = 1; - this._previousVolume = null; - this.tm = data2.tm ? PropertyFactory.getProp(this, data2.tm, 0, globalData2.frameRate, this) : { _placeholder: true }; - this.lv = PropertyFactory.getProp(this, data2.au && data2.au.lv ? data2.au.lv : { k: [100] }, 1, 0.01, this); - } - function BaseRenderer() { - } - function TransformElement() { - } - function MaskElement(data2, element, globalData2) { - this.data = data2; - this.element = element; - this.globalData = globalData2; - this.storedData = []; - this.masksProperties = this.data.masksProperties || []; - this.maskElement = null; - var defs = this.globalData.defs; - var i; - var len = this.masksProperties ? this.masksProperties.length : 0; - this.viewData = createSizedArray(len); - this.solidPath = ""; - var path; - var properties = this.masksProperties; - var count = 0; - var currentMasks = []; - var j; - var jLen; - var layerId = createElementID(); - var rect; - var expansor; - var feMorph; - var x2; - var maskType = "clipPath"; - var maskRef = "clip-path"; - for (i = 0; i < len; i += 1) { - if (properties[i].mode !== "a" && properties[i].mode !== "n" || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) { - maskType = "mask"; - maskRef = "mask"; - } - if ((properties[i].mode === "s" || properties[i].mode === "i") && count === 0) { - rect = createNS("rect"); - rect.setAttribute("fill", "#ffffff"); - rect.setAttribute("width", this.element.comp.data.w || 0); - rect.setAttribute("height", this.element.comp.data.h || 0); - currentMasks.push(rect); - } else { - rect = null; - } - path = createNS("path"); - if (properties[i].mode === "n") { - this.viewData[i] = { - op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element), - prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3), - elem: path, - lastPath: "" - }; - defs.appendChild(path); - } else { - count += 1; - path.setAttribute("fill", properties[i].mode === "s" ? "#000000" : "#ffffff"); - path.setAttribute("clip-rule", "nonzero"); - var filterID; - if (properties[i].x.k !== 0) { - maskType = "mask"; - maskRef = "mask"; - x2 = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element); - filterID = createElementID(); - expansor = createNS("filter"); - expansor.setAttribute("id", filterID); - feMorph = createNS("feMorphology"); - feMorph.setAttribute("operator", "erode"); - feMorph.setAttribute("in", "SourceGraphic"); - feMorph.setAttribute("radius", "0"); - expansor.appendChild(feMorph); - defs.appendChild(expansor); - path.setAttribute("stroke", properties[i].mode === "s" ? "#000000" : "#ffffff"); - } else { - feMorph = null; - x2 = null; - } - this.storedData[i] = { - elem: path, - x: x2, - expan: feMorph, - lastPath: "", - lastOperator: "", - filterId: filterID, - lastRadius: 0 - }; - if (properties[i].mode === "i") { - jLen = currentMasks.length; - var g2 = createNS("g"); - for (j = 0; j < jLen; j += 1) { - g2.appendChild(currentMasks[j]); - } - var mask2 = createNS("mask"); - mask2.setAttribute("mask-type", "alpha"); - mask2.setAttribute("id", layerId + "_" + count); - mask2.appendChild(path); - defs.appendChild(mask2); - g2.setAttribute("mask", "url(" + getLocationHref() + "#" + layerId + "_" + count + ")"); - currentMasks.length = 0; - currentMasks.push(g2); - } else { - currentMasks.push(path); - } - if (properties[i].inv && !this.solidPath) { - this.solidPath = this.createLayerSolidPath(); - } - this.viewData[i] = { - elem: path, - lastPath: "", - op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element), - prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3), - invRect: rect - }; - if (!this.viewData[i].prop.k) { - this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]); - } - } - } - this.maskElement = createNS(maskType); - len = currentMasks.length; - for (i = 0; i < len; i += 1) { - this.maskElement.appendChild(currentMasks[i]); - } - if (count > 0) { - this.maskElement.setAttribute("id", layerId); - this.element.maskedElement.setAttribute(maskRef, "url(" + getLocationHref() + "#" + layerId + ")"); - defs.appendChild(this.maskElement); - } - if (this.viewData.length) { - this.element.addRenderableComponent(this); - } - } - function SVGEffects(elem2) { - var i; - var source = "SourceGraphic"; - var len = elem2.data.ef ? elem2.data.ef.length : 0; - var filId = createElementID(); - var fil = filtersFactory.createFilter(filId, true); - var count = 0; - this.filters = []; - var filterManager; - for (i = 0; i < len; i += 1) { - filterManager = null; - var type = elem2.data.ef[i].ty; - if (registeredEffects[type]) { - var Effect = registeredEffects[type].effect; - filterManager = new Effect(fil, elem2.effectsManager.effectElements[i], elem2, idPrefix + count, source); - source = idPrefix + count; - if (registeredEffects[type].countsAsEffect) { - count += 1; - } - } - if (filterManager) { - this.filters.push(filterManager); - } - } - if (count) { - elem2.globalData.defs.appendChild(fil); - elem2.layerElement.setAttribute("filter", "url(" + getLocationHref() + "#" + filId + ")"); - } - if (this.filters.length) { - elem2.addRenderableComponent(this); - } - } - function registerEffect(id, effect2, countsAsEffect) { - registeredEffects[id] = { - effect: effect2, - countsAsEffect - }; - } - function SVGBaseElement() { - } - function HierarchyElement() { - } - function RenderableDOMElement() { - } - function IImageElement(data2, globalData2, comp2) { - this.assetData = globalData2.getAssetData(data2.refId); - this.initElement(data2, globalData2, comp2); - this.sourceRect = { - top: 0, - left: 0, - width: this.assetData.w, - height: this.assetData.h - }; - } - function ProcessedElement(element, position2) { - this.elem = element; - this.pos = position2; - } - function IShapeElement() { - } - function SVGShapeData(transformers, level, shape) { - this.caches = []; - this.styles = []; - this.transformers = transformers; - this.lStr = ""; - this.sh = shape; - this.lvl = level; - this._isAnimated = !!shape.k; - var i = 0; - var len = transformers.length; - while (i < len) { - if (transformers[i].mProps.dynamicProperties.length) { - this._isAnimated = true; - break; - } - i += 1; - } - } - function SVGStyleData(data2, level) { - this.data = data2; - this.type = data2.ty; - this.d = ""; - this.lvl = level; - this._mdf = false; - this.closed = data2.hd === true; - this.pElem = createNS("path"); - this.msElem = null; - } - function DashProperty(elem2, data2, renderer2, container) { - this.elem = elem2; - this.frameId = -1; - this.dataProps = createSizedArray(data2.length); - this.renderer = renderer2; - this.k = false; - this.dashStr = ""; - this.dashArray = createTypedArray("float32", data2.length ? data2.length - 1 : 0); - this.dashoffset = createTypedArray("float32", 1); - this.initDynamicPropertyContainer(container); - var i; - var len = data2.length || 0; - var prop; - for (i = 0; i < len; i += 1) { - prop = PropertyFactory.getProp(elem2, data2[i].v, 0, 0, this); - this.k = prop.k || this.k; - this.dataProps[i] = { n: data2[i].n, p: prop }; - } - if (!this.k) { - this.getValue(true); - } - this._isAnimated = this.k; - } - function SVGStrokeStyleData(elem2, data2, styleOb) { - this.initDynamicPropertyContainer(elem2); - this.getValue = this.iterateDynamicProperties; - this.o = PropertyFactory.getProp(elem2, data2.o, 0, 0.01, this); - this.w = PropertyFactory.getProp(elem2, data2.w, 0, null, this); - this.d = new DashProperty(elem2, data2.d || {}, "svg", this); - this.c = PropertyFactory.getProp(elem2, data2.c, 1, 255, this); - this.style = styleOb; - this._isAnimated = !!this._isAnimated; - } - function SVGFillStyleData(elem2, data2, styleOb) { - this.initDynamicPropertyContainer(elem2); - this.getValue = this.iterateDynamicProperties; - this.o = PropertyFactory.getProp(elem2, data2.o, 0, 0.01, this); - this.c = PropertyFactory.getProp(elem2, data2.c, 1, 255, this); - this.style = styleOb; - } - function SVGNoStyleData(elem2, data2, styleOb) { - this.initDynamicPropertyContainer(elem2); - this.getValue = this.iterateDynamicProperties; - this.style = styleOb; - } - function GradientProperty(elem2, data2, container) { - this.data = data2; - this.c = createTypedArray("uint8c", data2.p * 4); - var cLength = data2.k.k[0].s ? data2.k.k[0].s.length - data2.p * 4 : data2.k.k.length - data2.p * 4; - this.o = createTypedArray("float32", cLength); - this._cmdf = false; - this._omdf = false; - this._collapsable = this.checkCollapsable(); - this._hasOpacity = cLength; - this.initDynamicPropertyContainer(container); - this.prop = PropertyFactory.getProp(elem2, data2.k, 1, null, this); - this.k = this.prop.k; - this.getValue(true); - } - function SVGGradientFillStyleData(elem2, data2, styleOb) { - this.initDynamicPropertyContainer(elem2); - this.getValue = this.iterateDynamicProperties; - this.initGradientData(elem2, data2, styleOb); - } - function SVGGradientStrokeStyleData(elem2, data2, styleOb) { - this.initDynamicPropertyContainer(elem2); - this.getValue = this.iterateDynamicProperties; - this.w = PropertyFactory.getProp(elem2, data2.w, 0, null, this); - this.d = new DashProperty(elem2, data2.d || {}, "svg", this); - this.initGradientData(elem2, data2, styleOb); - this._isAnimated = !!this._isAnimated; - } - function ShapeGroupData() { - this.it = []; - this.prevViewData = []; - this.gr = createNS("g"); - } - function SVGTransformData(mProps, op, container) { - this.transform = { - mProps, - op, - container - }; - this.elements = []; - this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length; - } - function SVGShapeElement(data2, globalData2, comp2) { - this.shapes = []; - this.shapesData = data2.shapes; - this.stylesList = []; - this.shapeModifiers = []; - this.itemsData = []; - this.processedElements = []; - this.animatedContents = []; - this.initElement(data2, globalData2, comp2); - this.prevViewData = []; - } - function LetterProps(o, sw, sc, fc, m, p2) { - this.o = o; - this.sw = sw; - this.sc = sc; - this.fc = fc; - this.m = m; - this.p = p2; - this._mdf = { - o: true, - sw: !!sw, - sc: !!sc, - fc: !!fc, - m: true, - p: true - }; - } - function TextProperty(elem2, data2) { - this._frameId = initialDefaultFrame; - this.pv = ""; - this.v = ""; - this.kf = false; - this._isFirstFrame = true; - this._mdf = false; - this.data = data2; - this.elem = elem2; - this.comp = this.elem.comp; - this.keysIndex = 0; - this.canResize = false; - this.minimumFontSize = 1; - this.effectsSequence = []; - this.currentData = { - ascent: 0, - boxWidth: this.defaultBoxWidth, - f: "", - fStyle: "", - fWeight: "", - fc: "", - j: "", - justifyOffset: "", - l: [], - lh: 0, - lineWidths: [], - ls: "", - of: "", - s: "", - sc: "", - sw: 0, - t: 0, - tr: 0, - sz: 0, - ps: null, - fillColorAnim: false, - strokeColorAnim: false, - strokeWidthAnim: false, - yOffset: 0, - finalSize: 0, - finalText: [], - finalLineHeight: 0, - __complete: false - }; - this.copyData(this.currentData, this.data.d.k[0].s); - if (!this.searchProperty()) { - this.completeTextData(this.currentData); - } - } - function TextAnimatorDataProperty(elem2, animatorProps, container) { - var defaultData = { propType: false }; - var getProp = PropertyFactory.getProp; - var textAnimatorAnimatables = animatorProps.a; - this.a = { - r: textAnimatorAnimatables.r ? getProp(elem2, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData, - rx: textAnimatorAnimatables.rx ? getProp(elem2, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData, - ry: textAnimatorAnimatables.ry ? getProp(elem2, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData, - sk: textAnimatorAnimatables.sk ? getProp(elem2, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData, - sa: textAnimatorAnimatables.sa ? getProp(elem2, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData, - s: textAnimatorAnimatables.s ? getProp(elem2, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData, - a: textAnimatorAnimatables.a ? getProp(elem2, textAnimatorAnimatables.a, 1, 0, container) : defaultData, - o: textAnimatorAnimatables.o ? getProp(elem2, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData, - p: textAnimatorAnimatables.p ? getProp(elem2, textAnimatorAnimatables.p, 1, 0, container) : defaultData, - sw: textAnimatorAnimatables.sw ? getProp(elem2, textAnimatorAnimatables.sw, 0, 0, container) : defaultData, - sc: textAnimatorAnimatables.sc ? getProp(elem2, textAnimatorAnimatables.sc, 1, 0, container) : defaultData, - fc: textAnimatorAnimatables.fc ? getProp(elem2, textAnimatorAnimatables.fc, 1, 0, container) : defaultData, - fh: textAnimatorAnimatables.fh ? getProp(elem2, textAnimatorAnimatables.fh, 0, 0, container) : defaultData, - fs: textAnimatorAnimatables.fs ? getProp(elem2, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData, - fb: textAnimatorAnimatables.fb ? getProp(elem2, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData, - t: textAnimatorAnimatables.t ? getProp(elem2, textAnimatorAnimatables.t, 0, 0, container) : defaultData - }; - this.s = TextSelectorProp.getTextSelectorProp(elem2, animatorProps.s, container); - this.s.t = animatorProps.s.t; - } - function TextAnimatorProperty(textData, renderType, elem2) { - this._isFirstFrame = true; - this._hasMaskedPath = false; - this._frameId = -1; - this._textData = textData; - this._renderType = renderType; - this._elem = elem2; - this._animatorsData = createSizedArray(this._textData.a.length); - this._pathData = {}; - this._moreOptions = { - alignment: {} - }; - this.renderedLetters = []; - this.lettersChangedFlag = false; - this.initDynamicPropertyContainer(elem2); - } - function ITextElement() { - } - function SVGTextLottieElement(data2, globalData2, comp2) { - this.textSpans = []; - this.renderType = "svg"; - this.initElement(data2, globalData2, comp2); - } - function ISolidElement(data2, globalData2, comp2) { - this.initElement(data2, globalData2, comp2); - } - function NullElement(data2, globalData2, comp2) { - this.initFrame(); - this.initBaseData(data2, globalData2, comp2); - this.initFrame(); - this.initTransform(data2, globalData2, comp2); - this.initHierarchy(); - } - function SVGRendererBase() { - } - function ICompElement() { - } - function SVGCompElement(data2, globalData2, comp2) { - this.layers = data2.layers; - this.supports3d = true; - this.completeLayers = false; - this.pendingElements = []; - this.elements = this.layers ? createSizedArray(this.layers.length) : []; - this.initElement(data2, globalData2, comp2); - this.tm = data2.tm ? PropertyFactory.getProp(this, data2.tm, 0, globalData2.frameRate, this) : { _placeholder: true }; - } - function SVGRenderer(animationItem, config) { - this.animationItem = animationItem; - this.layers = null; - this.renderedFrame = -1; - this.svgElement = createNS("svg"); - var ariaLabel = ""; - if (config && config.title) { - var titleElement = createNS("title"); - var titleId = createElementID(); - titleElement.setAttribute("id", titleId); - titleElement.textContent = config.title; - this.svgElement.appendChild(titleElement); - ariaLabel += titleId; - } - if (config && config.description) { - var descElement = createNS("desc"); - var descId = createElementID(); - descElement.setAttribute("id", descId); - descElement.textContent = config.description; - this.svgElement.appendChild(descElement); - ariaLabel += " " + descId; - } - if (ariaLabel) { - this.svgElement.setAttribute("aria-labelledby", ariaLabel); - } - var defs = createNS("defs"); - this.svgElement.appendChild(defs); - var maskElement = createNS("g"); - this.svgElement.appendChild(maskElement); - this.layerElement = maskElement; - this.renderConfig = { - preserveAspectRatio: config && config.preserveAspectRatio || "xMidYMid meet", - imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || "xMidYMid slice", - contentVisibility: config && config.contentVisibility || "visible", - progressiveLoad: config && config.progressiveLoad || false, - hideOnTransparent: !(config && config.hideOnTransparent === false), - viewBoxOnly: config && config.viewBoxOnly || false, - viewBoxSize: config && config.viewBoxSize || false, - className: config && config.className || "", - id: config && config.id || "", - focusable: config && config.focusable, - filterSize: { - width: config && config.filterSize && config.filterSize.width || "100%", - height: config && config.filterSize && config.filterSize.height || "100%", - x: config && config.filterSize && config.filterSize.x || "0%", - y: config && config.filterSize && config.filterSize.y || "0%" - }, - width: config && config.width, - height: config && config.height - }; - this.globalData = { - _mdf: false, - frameNum: -1, - defs, - renderConfig: this.renderConfig - }; - this.elements = []; - this.pendingElements = []; - this.destroyed = false; - this.rendererType = "svg"; - } - function CVContextData() { - this.saved = []; - this.cArrPos = 0; - this.cTr = new Matrix(); - this.cO = 1; - var i; - var len = 15; - this.savedOp = createTypedArray("float32", len); - for (i = 0; i < len; i += 1) { - this.saved[i] = createTypedArray("float32", 16); - } - this._length = len; - } - function ShapeTransformManager() { - this.sequences = {}; - this.sequenceList = []; - this.transform_key_count = 0; - } - function CVEffects() { - } - function CVMaskElement(data2, element) { - this.data = data2; - this.element = element; - this.masksProperties = this.data.masksProperties || []; - this.viewData = createSizedArray(this.masksProperties.length); - var i; - var len = this.masksProperties.length; - var hasMasks = false; - for (i = 0; i < len; i += 1) { - if (this.masksProperties[i].mode !== "n") { - hasMasks = true; - } - this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3); - } - this.hasMasks = hasMasks; - if (hasMasks) { - this.element.addRenderableComponent(this); - } - } - function CVBaseElement() { - } - function CVShapeData(element, data2, styles, transformsManager) { - this.styledShapes = []; - this.tr = [0, 0, 0, 0, 0, 0]; - var ty = 4; - if (data2.ty === "rc") { - ty = 5; - } else if (data2.ty === "el") { - ty = 6; - } else if (data2.ty === "sr") { - ty = 7; - } - this.sh = ShapePropertyFactory.getShapeProp(element, data2, ty, element); - var i; - var len = styles.length; - var styledShape; - for (i = 0; i < len; i += 1) { - if (!styles[i].closed) { - styledShape = { - transforms: transformsManager.addTransformSequence(styles[i].transforms), - trNodes: [] - }; - this.styledShapes.push(styledShape); - styles[i].elements.push(styledShape); - } - } - } - function CVShapeElement(data2, globalData2, comp2) { - this.shapes = []; - this.shapesData = data2.shapes; - this.stylesList = []; - this.itemsData = []; - this.prevViewData = []; - this.shapeModifiers = []; - this.processedElements = []; - this.transformsManager = new ShapeTransformManager(); - this.initElement(data2, globalData2, comp2); - } - function CVTextElement(data2, globalData2, comp2) { - this.textSpans = []; - this.yOffset = 0; - this.fillColorAnim = false; - this.strokeColorAnim = false; - this.strokeWidthAnim = false; - this.stroke = false; - this.fill = false; - this.justifyOffset = 0; - this.currentRender = null; - this.renderType = "canvas"; - this.values = { - fill: "rgba(0,0,0,0)", - stroke: "rgba(0,0,0,0)", - sWidth: 0, - fValue: "" - }; - this.initElement(data2, globalData2, comp2); - } - function CVImageElement(data2, globalData2, comp2) { - this.assetData = globalData2.getAssetData(data2.refId); - this.img = globalData2.imageLoader.getAsset(this.assetData); - this.initElement(data2, globalData2, comp2); - } - function CVSolidElement(data2, globalData2, comp2) { - this.initElement(data2, globalData2, comp2); - } - function CanvasRendererBase(animationItem, config) { - this.animationItem = animationItem; - this.renderConfig = { - clearCanvas: config && config.clearCanvas !== void 0 ? config.clearCanvas : true, - context: config && config.context || null, - progressiveLoad: config && config.progressiveLoad || false, - preserveAspectRatio: config && config.preserveAspectRatio || "xMidYMid meet", - imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || "xMidYMid slice", - contentVisibility: config && config.contentVisibility || "visible", - className: config && config.className || "", - id: config && config.id || "" - }; - this.renderConfig.dpr = config && config.dpr || 1; - if (this.animationItem.wrapper) { - this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1; - } - this.renderedFrame = -1; - this.globalData = { - frameNum: -1, - _mdf: false, - renderConfig: this.renderConfig, - currentGlobalAlpha: -1 - }; - this.contextData = new CVContextData(); - this.elements = []; - this.pendingElements = []; - this.transformMat = new Matrix(); - this.completeLayers = false; - this.rendererType = "canvas"; - } - function CVCompElement(data2, globalData2, comp2) { - this.completeLayers = false; - this.layers = data2.layers; - this.pendingElements = []; - this.elements = createSizedArray(this.layers.length); - this.initElement(data2, globalData2, comp2); - this.tm = data2.tm ? PropertyFactory.getProp(this, data2.tm, 0, globalData2.frameRate, this) : { _placeholder: true }; - } - function CanvasRenderer(animationItem, config) { - this.animationItem = animationItem; - this.renderConfig = { - clearCanvas: config && config.clearCanvas !== void 0 ? config.clearCanvas : true, - context: config && config.context || null, - progressiveLoad: config && config.progressiveLoad || false, - preserveAspectRatio: config && config.preserveAspectRatio || "xMidYMid meet", - imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || "xMidYMid slice", - contentVisibility: config && config.contentVisibility || "visible", - className: config && config.className || "", - id: config && config.id || "" - }; - this.renderConfig.dpr = config && config.dpr || 1; - if (this.animationItem.wrapper) { - this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1; - } - this.renderedFrame = -1; - this.globalData = { - frameNum: -1, - _mdf: false, - renderConfig: this.renderConfig, - currentGlobalAlpha: -1 - }; - this.contextData = new CVContextData(); - this.elements = []; - this.pendingElements = []; - this.transformMat = new Matrix(); - this.completeLayers = false; - this.rendererType = "canvas"; - } - function seedRandom(pool, math) { - var global = this, width2 = 256, chunks = 6, digits = 52, rngname = "random", startdenom = math.pow(width2, chunks), significance = math.pow(2, digits), overflow = significance * 2, mask2 = width2 - 1, nodecrypto; - function seedrandom(seed, options, callback) { - var key2 = []; - options = options === true ? { entropy: true } : options || {}; - var shortseed = mixkey(flatten2( - options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, - 3 - ), key2); - var arc4 = new ARC4(key2); - var prng = function() { - var n2 = arc4.g(chunks), d = startdenom, x2 = 0; - while (n2 < significance) { - n2 = (n2 + x2) * width2; - d *= width2; - x2 = arc4.g(1); - } - while (n2 >= overflow) { - n2 /= 2; - d /= 2; - x2 >>>= 1; - } - return (n2 + x2) / d; - }; - prng.int32 = function() { - return arc4.g(4) | 0; - }; - prng.quick = function() { - return arc4.g(4) / 4294967296; - }; - prng.double = prng; - mixkey(tostring(arc4.S), pool); - return (options.pass || callback || function(prng2, seed2, is_math_call, state) { - if (state) { - if (state.S) { - copy(state, arc4); - } - prng2.state = function() { - return copy(arc4, {}); - }; - } - if (is_math_call) { - math[rngname] = prng2; - return seed2; - } else return prng2; - })( - prng, - shortseed, - "global" in options ? options.global : this == math, - options.state - ); - } - math["seed" + rngname] = seedrandom; - function ARC4(key2) { - var t3, keylen = key2.length, me = this, i = 0, j = me.i = me.j = 0, s = me.S = []; - if (!keylen) { - key2 = [keylen++]; - } - while (i < width2) { - s[i] = i++; - } - for (i = 0; i < width2; i++) { - s[i] = s[j = mask2 & j + key2[i % keylen] + (t3 = s[i])]; - s[j] = t3; - } - me.g = function(count) { - var t4, r = 0, i2 = me.i, j2 = me.j, s2 = me.S; - while (count--) { - t4 = s2[i2 = mask2 & i2 + 1]; - r = r * width2 + s2[mask2 & (s2[i2] = s2[j2 = mask2 & j2 + t4]) + (s2[j2] = t4)]; - } - me.i = i2; - me.j = j2; - return r; - }; - } - function copy(f, t3) { - t3.i = f.i; - t3.j = f.j; - t3.S = f.S.slice(); - return t3; - } - function flatten2(obj, depth) { - var result = [], typ = typeof obj, prop; - if (depth && typ == "object") { - for (prop in obj) { - try { - result.push(flatten2(obj[prop], depth - 1)); - } catch (e) { - } - } - } - return result.length ? result : typ == "string" ? obj : obj + "\0"; - } - function mixkey(seed, key2) { - var stringseed = seed + "", smear, j = 0; - while (j < stringseed.length) { - key2[mask2 & j] = mask2 & (smear ^= key2[mask2 & j] * 19) + stringseed.charCodeAt(j++); - } - return tostring(key2); - } - function autoseed() { - try { - if (nodecrypto) { - return tostring(nodecrypto.randomBytes(width2)); - } - var out = new Uint8Array(width2); - (global.crypto || global.msCrypto).getRandomValues(out); - return tostring(out); - } catch (e) { - var browser = global.navigator, plugins = browser && browser.plugins; - return [+/* @__PURE__ */ new Date(), global, plugins, global.screen, tostring(pool)]; - } - } - function tostring(a2) { - return String.fromCharCode.apply(0, a2); - } - mixkey(math.random(), pool); - } - function initialize$2(BMMath2) { - seedRandom([], BMMath2); - } - function addPropertyDecorator() { - function loopOut2(type, duration, durationFlag) { - if (!this.k || !this.keyframes) { - return this.pv; - } - type = type ? type.toLowerCase() : ""; - var currentFrame = this.comp.renderedFrame; - var keyframes = this.keyframes; - var lastKeyFrame = keyframes[keyframes.length - 1].t; - if (currentFrame <= lastKeyFrame) { - return this.pv; - } - var cycleDuration; - var firstKeyFrame; - if (!durationFlag) { - if (!duration || duration > keyframes.length - 1) { - duration = keyframes.length - 1; - } - firstKeyFrame = keyframes[keyframes.length - 1 - duration].t; - cycleDuration = lastKeyFrame - firstKeyFrame; - } else { - if (!duration) { - cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip); - } else { - cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration); - } - firstKeyFrame = lastKeyFrame - cycleDuration; - } - var i; - var len; - var ret; - if (type === "pingpong") { - var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration); - if (iterations % 2 !== 0) { - return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); - } - } else if (type === "offset") { - var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0); - var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0); - var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); - var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration); - if (this.pv.length) { - ret = new Array(initV.length); - len = ret.length; - for (i = 0; i < len; i += 1) { - ret[i] = (endV[i] - initV[i]) * repeats + current[i]; - } - return ret; - } - return (endV - initV) * repeats + current; - } else if (type === "continue") { - var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0); - var nextLastValue = this.getValueAtTime((lastKeyFrame - 1e-3) / this.comp.globalData.frameRate, 0); - if (this.pv.length) { - ret = new Array(lastValue.length); - len = ret.length; - for (i = 0; i < len; i += 1) { - ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 5e-4; - } - return ret; - } - return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 1e-3); - } - return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); - } - function loopIn2(type, duration, durationFlag) { - if (!this.k) { - return this.pv; - } - type = type ? type.toLowerCase() : ""; - var currentFrame = this.comp.renderedFrame; - var keyframes = this.keyframes; - var firstKeyFrame = keyframes[0].t; - if (currentFrame >= firstKeyFrame) { - return this.pv; - } - var cycleDuration; - var lastKeyFrame; - if (!durationFlag) { - if (!duration || duration > keyframes.length - 1) { - duration = keyframes.length - 1; - } - lastKeyFrame = keyframes[duration].t; - cycleDuration = lastKeyFrame - firstKeyFrame; - } else { - if (!duration) { - cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame); - } else { - cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration); - } - lastKeyFrame = firstKeyFrame + cycleDuration; - } - var i; - var len; - var ret; - if (type === "pingpong") { - var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration); - if (iterations % 2 === 0) { - return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); - } - } else if (type === "offset") { - var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0); - var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0); - var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); - var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1; - if (this.pv.length) { - ret = new Array(initV.length); - len = ret.length; - for (i = 0; i < len; i += 1) { - ret[i] = current[i] - (endV[i] - initV[i]) * repeats; - } - return ret; - } - return current - (endV - initV) * repeats; - } else if (type === "continue") { - var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0); - var nextFirstValue = this.getValueAtTime((firstKeyFrame + 1e-3) / this.comp.globalData.frameRate, 0); - if (this.pv.length) { - ret = new Array(firstValue.length); - len = ret.length; - for (i = 0; i < len; i += 1) { - ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 1e-3; - } - return ret; - } - return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 1e-3; - } - return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); - } - function smooth2(width2, samples) { - if (!this.k) { - return this.pv; - } - width2 = (width2 || 0.4) * 0.5; - samples = Math.floor(samples || 5); - if (samples <= 1) { - return this.pv; - } - var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate; - var initFrame = currentTime - width2; - var endFrame = currentTime + width2; - var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1; - var i = 0; - var j = 0; - var value2; - if (this.pv.length) { - value2 = createTypedArray("float32", this.pv.length); - } else { - value2 = 0; - } - var sampleValue; - while (i < samples) { - sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency); - if (this.pv.length) { - for (j = 0; j < this.pv.length; j += 1) { - value2[j] += sampleValue[j]; - } - } else { - value2 += sampleValue; - } - i += 1; - } - if (this.pv.length) { - for (j = 0; j < this.pv.length; j += 1) { - value2[j] /= samples; - } - } else { - value2 /= samples; - } - return value2; - } - function getTransformValueAtTime(time2) { - if (!this._transformCachingAtTime) { - this._transformCachingAtTime = { - v: new Matrix() - }; - } - var matrix3 = this._transformCachingAtTime.v; - matrix3.cloneFromProps(this.pre.props); - if (this.appliedTransformations < 1) { - var anchor = this.a.getValueAtTime(time2); - matrix3.translate( - -anchor[0] * this.a.mult, - -anchor[1] * this.a.mult, - anchor[2] * this.a.mult - ); - } - if (this.appliedTransformations < 2) { - var scale2 = this.s.getValueAtTime(time2); - matrix3.scale( - scale2[0] * this.s.mult, - scale2[1] * this.s.mult, - scale2[2] * this.s.mult - ); - } - if (this.sk && this.appliedTransformations < 3) { - var skew = this.sk.getValueAtTime(time2); - var skewAxis = this.sa.getValueAtTime(time2); - matrix3.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult); - } - if (this.r && this.appliedTransformations < 4) { - var rotation2 = this.r.getValueAtTime(time2); - matrix3.rotate(-rotation2 * this.r.mult); - } else if (!this.r && this.appliedTransformations < 4) { - var rotationZ = this.rz.getValueAtTime(time2); - var rotationY = this.ry.getValueAtTime(time2); - var rotationX = this.rx.getValueAtTime(time2); - var orientation = this.or.getValueAtTime(time2); - matrix3.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult); - } - if (this.data.p && this.data.p.s) { - var positionX = this.px.getValueAtTime(time2); - var positionY = this.py.getValueAtTime(time2); - if (this.data.p.z) { - var positionZ = this.pz.getValueAtTime(time2); - matrix3.translate( - positionX * this.px.mult, - positionY * this.py.mult, - -positionZ * this.pz.mult - ); - } else { - matrix3.translate(positionX * this.px.mult, positionY * this.py.mult, 0); - } - } else { - var position2 = this.p.getValueAtTime(time2); - matrix3.translate( - position2[0] * this.p.mult, - position2[1] * this.p.mult, - -position2[2] * this.p.mult - ); - } - return matrix3; - } - function getTransformStaticValueAtTime() { - return this.v.clone(new Matrix()); - } - var getTransformProperty = TransformPropertyFactory.getTransformProperty; - TransformPropertyFactory.getTransformProperty = function(elem2, data2, container) { - var prop = getTransformProperty(elem2, data2, container); - if (prop.dynamicProperties.length) { - prop.getValueAtTime = getTransformValueAtTime.bind(prop); - } else { - prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop); - } - prop.setGroupProperty = expressionHelpers.setGroupProperty; - return prop; - }; - var propertyGetProp = PropertyFactory.getProp; - PropertyFactory.getProp = function(elem2, data2, type, mult, container) { - var prop = propertyGetProp(elem2, data2, type, mult, container); - if (prop.kf) { - prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop); - } else { - prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop); - } - prop.setGroupProperty = expressionHelpers.setGroupProperty; - prop.loopOut = loopOut2; - prop.loopIn = loopIn2; - prop.smooth = smooth2; - prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop); - prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop); - prop.numKeys = data2.a === 1 ? data2.k.length : 0; - prop.propertyIndex = data2.ix; - var value2 = 0; - if (type !== 0) { - value2 = createTypedArray("float32", data2.a === 1 ? data2.k[0].s.length : data2.k.length); - } - prop._cachingAtTime = { - lastFrame: initialDefaultFrame, - lastIndex: 0, - value: value2 - }; - expressionHelpers.searchExpressions(elem2, data2, prop); - if (prop.k) { - container.addDynamicProperty(prop); - } - return prop; - }; - function getShapeValueAtTime(frameNum) { - if (!this._cachingAtTime) { - this._cachingAtTime = { - shapeValue: shapePool.clone(this.pv), - lastIndex: 0, - lastTime: initialDefaultFrame - }; - } - frameNum *= this.elem.globalData.frameRate; - frameNum -= this.offsetTime; - if (frameNum !== this._cachingAtTime.lastTime) { - this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0; - this._cachingAtTime.lastTime = frameNum; - this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime); - } - return this._cachingAtTime.shapeValue; - } - var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction(); - var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction(); - function ShapeExpressions() { - } - ShapeExpressions.prototype = { - vertices: function(prop, time2) { - if (this.k) { - this.getValue(); - } - var shapePath = this.v; - if (time2 !== void 0) { - shapePath = this.getValueAtTime(time2, 0); - } - var i; - var len = shapePath._length; - var vertices = shapePath[prop]; - var points = shapePath.v; - var arr = createSizedArray(len); - for (i = 0; i < len; i += 1) { - if (prop === "i" || prop === "o") { - arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]]; - } else { - arr[i] = [vertices[i][0], vertices[i][1]]; - } - } - return arr; - }, - points: function(time2) { - return this.vertices("v", time2); - }, - inTangents: function(time2) { - return this.vertices("i", time2); - }, - outTangents: function(time2) { - return this.vertices("o", time2); - }, - isClosed: function() { - return this.v.c; - }, - pointOnPath: function(perc, time2) { - var shapePath = this.v; - if (time2 !== void 0) { - shapePath = this.getValueAtTime(time2, 0); - } - if (!this._segmentsLength) { - this._segmentsLength = bez.getSegmentsLength(shapePath); - } - var segmentsLength = this._segmentsLength; - var lengths2 = segmentsLength.lengths; - var lengthPos = segmentsLength.totalLength * perc; - var i = 0; - var len = lengths2.length; - var accumulatedLength = 0; - var pt; - while (i < len) { - if (accumulatedLength + lengths2[i].addedLength > lengthPos) { - var initIndex = i; - var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1; - var segmentPerc = (lengthPos - accumulatedLength) / lengths2[i].addedLength; - pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths2[i]); - break; - } else { - accumulatedLength += lengths2[i].addedLength; - } - i += 1; - } - if (!pt) { - pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]]; - } - return pt; - }, - vectorOnPath: function(perc, time2, vectorType) { - if (perc == 1) { - perc = this.v.c; - } else if (perc == 0) { - perc = 0.999; - } - var pt1 = this.pointOnPath(perc, time2); - var pt2 = this.pointOnPath(perc + 1e-3, time2); - var xLength = pt2[0] - pt1[0]; - var yLength = pt2[1] - pt1[1]; - var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2)); - if (magnitude === 0) { - return [0, 0]; - } - var unitVector = vectorType === "tangent" ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude]; - return unitVector; - }, - tangentOnPath: function(perc, time2) { - return this.vectorOnPath(perc, time2, "tangent"); - }, - normalOnPath: function(perc, time2) { - return this.vectorOnPath(perc, time2, "normal"); - }, - setGroupProperty: expressionHelpers.setGroupProperty, - getValueAtTime: expressionHelpers.getStaticValueAtTime - }; - extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction); - extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction); - KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime; - KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression; - var propertyGetShapeProp = ShapePropertyFactory.getShapeProp; - ShapePropertyFactory.getShapeProp = function(elem2, data2, type, arr, trims) { - var prop = propertyGetShapeProp(elem2, data2, type, arr, trims); - prop.propertyIndex = data2.ix; - prop.lock = false; - if (type === 3) { - expressionHelpers.searchExpressions(elem2, data2.pt, prop); - } else if (type === 4) { - expressionHelpers.searchExpressions(elem2, data2.ks, prop); - } - if (prop.k) { - elem2.addDynamicProperty(prop); - } - return prop; - }; - } - function initialize$1() { - addPropertyDecorator(); - } - function addDecorator() { - function searchExpressions() { - if (this.data.d.x) { - this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this); - this.addEffect(this.getExpressionValue.bind(this)); - return true; - } - return null; - } - TextProperty.prototype.getExpressionValue = function(currentValue, text2) { - var newValue = this.calculateExpression(text2); - if (currentValue.t !== newValue) { - var newData = {}; - this.copyData(newData, currentValue); - newData.t = newValue.toString(); - newData.__complete = false; - return newData; - } - return currentValue; - }; - TextProperty.prototype.searchProperty = function() { - var isKeyframed = this.searchKeyframes(); - var hasExpressions = this.searchExpressions(); - this.kf = isKeyframed || hasExpressions; - return this.kf; - }; - TextProperty.prototype.searchExpressions = searchExpressions; - } - function initialize() { - addDecorator(); - } - const svgNS = "http://www.w3.org/2000/svg"; - let locationHref = ""; - let _useWebWorker = false; - const initialDefaultFrame = -999999; - const setWebWorker = (flag) => { - _useWebWorker = !!flag; - }; - const getWebWorker = () => _useWebWorker; - const setLocationHref = (value2) => { - locationHref = value2; - }; - const getLocationHref = () => locationHref; - const audioControllerFactory = function() { - function AudioController(audioFactory) { - this.audios = []; - this.audioFactory = audioFactory; - this._volume = 1; - this._isMuted = false; - } - AudioController.prototype = { - addAudio: function(audio) { - this.audios.push(audio); - }, - pause: function() { - var i; - var len = this.audios.length; - for (i = 0; i < len; i += 1) { - this.audios[i].pause(); - } - }, - resume: function() { - var i; - var len = this.audios.length; - for (i = 0; i < len; i += 1) { - this.audios[i].resume(); - } - }, - setRate: function(rateValue) { - var i; - var len = this.audios.length; - for (i = 0; i < len; i += 1) { - this.audios[i].setRate(rateValue); - } - }, - createAudio: function(assetPath) { - if (this.audioFactory) { - return this.audioFactory(assetPath); - } - if (window.Howl) { - return new window.Howl({ - src: [assetPath] - }); - } - return { - isPlaying: false, - play: function() { - this.isPlaying = true; - }, - seek: function() { - this.isPlaying = false; - }, - playing: function() { - }, - rate: function() { - }, - setVolume: function() { - } - }; - }, - setAudioFactory: function(audioFactory) { - this.audioFactory = audioFactory; - }, - setVolume: function(value2) { - this._volume = value2; - this._updateVolume(); - }, - mute: function() { - this._isMuted = true; - this._updateVolume(); - }, - unmute: function() { - this._isMuted = false; - this._updateVolume(); - }, - getVolume: function() { - return this._volume; - }, - _updateVolume: function() { - var i; - var len = this.audios.length; - for (i = 0; i < len; i += 1) { - this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1)); - } - } - }; - return function() { - return new AudioController(); - }; - }(); - const createTypedArray = function() { - function createRegularArray(type, len) { - var i = 0; - var arr = []; - var value2; - switch (type) { - case "int16": - case "uint8c": - value2 = 1; - break; - default: - value2 = 1.1; - break; - } - for (i = 0; i < len; i += 1) { - arr.push(value2); - } - return arr; - } - function createTypedArrayFactory(type, len) { - if (type === "float32") { - return new Float32Array(len); - } - if (type === "int16") { - return new Int16Array(len); - } - if (type === "uint8c") { - return new Uint8ClampedArray(len); - } - return createRegularArray(type, len); - } - if (typeof Uint8ClampedArray === "function" && typeof Float32Array === "function") { - return createTypedArrayFactory; - } - return createRegularArray; - }(); - let subframeEnabled = true; - let expressionsPlugin = null; - let idPrefix$1 = ""; - const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); - let _shouldRoundValues = false; - const bmPow = Math.pow; - const bmSqrt = Math.sqrt; - const bmFloor = Math.floor; - const bmMax = Math.max; - const bmMin = Math.min; - const BMMath = {}; - (function() { - var propertyNames = ["abs", "acos", "acosh", "asin", "asinh", "atan", "atanh", "atan2", "ceil", "cbrt", "expm1", "clz32", "cos", "cosh", "exp", "floor", "fround", "hypot", "imul", "log", "log1p", "log2", "log10", "max", "min", "pow", "random", "round", "sign", "sin", "sinh", "sqrt", "tan", "tanh", "trunc", "E", "LN10", "LN2", "LOG10E", "LOG2E", "PI", "SQRT1_2", "SQRT2"]; - var i; - var len = propertyNames.length; - for (i = 0; i < len; i += 1) { - BMMath[propertyNames[i]] = Math[propertyNames[i]]; - } - })(); - BMMath.random = Math.random; - BMMath.abs = function(val2) { - var tOfVal = typeof val2; - if (tOfVal === "object" && val2.length) { - var absArr = createSizedArray(val2.length); - var i; - var len = val2.length; - for (i = 0; i < len; i += 1) { - absArr[i] = Math.abs(val2[i]); - } - return absArr; - } - return Math.abs(val2); - }; - let defaultCurveSegments = 150; - const degToRads = Math.PI / 180; - const roundCorner = 0.5519; - const createElementID = /* @__PURE__ */ function() { - var _count = 0; - return function createID() { - _count += 1; - return idPrefix$1 + "__lottie_element_" + _count; - }; - }(); - const rgbToHex = function() { - var colorMap = []; - var i; - var hex; - for (i = 0; i < 256; i += 1) { - hex = i.toString(16); - colorMap[i] = hex.length === 1 ? "0" + hex : hex; - } - return function(r, g2, b3) { - if (r < 0) { - r = 0; - } - if (g2 < 0) { - g2 = 0; - } - if (b3 < 0) { - b3 = 0; - } - return "#" + colorMap[r] + colorMap[g2] + colorMap[b3]; - }; - }(); - const setSubframeEnabled = (flag) => { - subframeEnabled = !!flag; - }; - const getSubframeEnabled = () => subframeEnabled; - const setExpressionsPlugin = (value2) => { - expressionsPlugin = value2; - }; - const getExpressionsPlugin = () => expressionsPlugin; - const setDefaultCurveSegments = (value2) => { - defaultCurveSegments = value2; - }; - const getDefaultCurveSegments = () => defaultCurveSegments; - const setIdPrefix = (value2) => { - idPrefix$1 = value2; - }; - const getIdPrefix = () => idPrefix$1; - const dataManager = /* @__PURE__ */ function() { - var _counterId = 1; - var processes = []; - var workerFn; - var workerInstance; - var workerProxy = { - onmessage: function() { - }, - postMessage: function(path) { - workerFn({ - data: path - }); - } - }; - var _workerSelf = { - postMessage: function(data2) { - workerProxy.onmessage({ - data: data2 - }); - } - }; - function createWorker(fn) { - if (window.Worker && window.Blob && getWebWorker()) { - var blob = new Blob(["var _workerSelf = self; self.onmessage = ", fn.toString()], { type: "text/javascript" }); - var url = URL.createObjectURL(blob); - return new Worker(url); - } - workerFn = fn; - return workerProxy; - } - function setupWorker() { - if (!workerInstance) { - workerInstance = createWorker(function workerStart(e) { - function dataFunctionManager() { - function completeLayers(layers, comps) { - var layerData; - var i; - var len = layers.length; - var j; - var jLen; - var k2; - var kLen; - for (i = 0; i < len; i += 1) { - layerData = layers[i]; - if ("ks" in layerData && !layerData.completed) { - layerData.completed = true; - if (layerData.tt) { - layers[i - 1].td = layerData.tt; - } - if (layerData.hasMask) { - var maskProps = layerData.masksProperties; - jLen = maskProps.length; - for (j = 0; j < jLen; j += 1) { - if (maskProps[j].pt.k.i) { - convertPathsToAbsoluteValues(maskProps[j].pt.k); - } else { - kLen = maskProps[j].pt.k.length; - for (k2 = 0; k2 < kLen; k2 += 1) { - if (maskProps[j].pt.k[k2].s) { - convertPathsToAbsoluteValues(maskProps[j].pt.k[k2].s[0]); - } - if (maskProps[j].pt.k[k2].e) { - convertPathsToAbsoluteValues(maskProps[j].pt.k[k2].e[0]); - } - } - } - } - } - if (layerData.ty === 0) { - layerData.layers = findCompLayers(layerData.refId, comps); - completeLayers(layerData.layers, comps); - } else if (layerData.ty === 4) { - completeShapes(layerData.shapes); - } else if (layerData.ty === 5) { - completeText(layerData); - } - } - } - } - function completeChars(chars, assets) { - if (chars) { - var i = 0; - var len = chars.length; - for (i = 0; i < len; i += 1) { - if (chars[i].t === 1) { - chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); - completeLayers(chars[i].data.layers, assets); - } - } - } - } - function findComp(id, comps) { - var i = 0; - var len = comps.length; - while (i < len) { - if (comps[i].id === id) { - return comps[i]; - } - i += 1; - } - return null; - } - function findCompLayers(id, comps) { - var comp2 = findComp(id, comps); - if (comp2) { - if (!comp2.layers.__used) { - comp2.layers.__used = true; - return comp2.layers; - } - return JSON.parse(JSON.stringify(comp2.layers)); - } - return null; - } - function completeShapes(arr) { - var i; - var len = arr.length; - var j; - var jLen; - for (i = len - 1; i >= 0; i -= 1) { - if (arr[i].ty === "sh") { - if (arr[i].ks.k.i) { - convertPathsToAbsoluteValues(arr[i].ks.k); - } else { - jLen = arr[i].ks.k.length; - for (j = 0; j < jLen; j += 1) { - if (arr[i].ks.k[j].s) { - convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]); - } - if (arr[i].ks.k[j].e) { - convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]); - } - } - } - } else if (arr[i].ty === "gr") { - completeShapes(arr[i].it); - } - } - } - function convertPathsToAbsoluteValues(path) { - var i; - var len = path.i.length; - for (i = 0; i < len; i += 1) { - path.i[i][0] += path.v[i][0]; - path.i[i][1] += path.v[i][1]; - path.o[i][0] += path.v[i][0]; - path.o[i][1] += path.v[i][1]; - } - } - function checkVersion(minimum, animVersionString) { - var animVersion = animVersionString ? animVersionString.split(".") : [100, 100, 100]; - if (minimum[0] > animVersion[0]) { - return true; - } - if (animVersion[0] > minimum[0]) { - return false; - } - if (minimum[1] > animVersion[1]) { - return true; - } - if (animVersion[1] > minimum[1]) { - return false; - } - if (minimum[2] > animVersion[2]) { - return true; - } - if (animVersion[2] > minimum[2]) { - return false; - } - return null; - } - var checkText = /* @__PURE__ */ function() { - var minimumVersion = [4, 4, 14]; - function updateTextLayer(textLayer) { - var documentData = textLayer.t.d; - textLayer.t.d = { - k: [ - { - s: documentData, - t: 0 - } - ] - }; - } - function iterateLayers(layers) { - var i; - var len = layers.length; - for (i = 0; i < len; i += 1) { - if (layers[i].ty === 5) { - updateTextLayer(layers[i]); - } - } - } - return function(animationData2) { - if (checkVersion(minimumVersion, animationData2.v)) { - iterateLayers(animationData2.layers); - if (animationData2.assets) { - var i; - var len = animationData2.assets.length; - for (i = 0; i < len; i += 1) { - if (animationData2.assets[i].layers) { - iterateLayers(animationData2.assets[i].layers); - } - } - } - } - }; - }(); - var checkChars = /* @__PURE__ */ function() { - var minimumVersion = [4, 7, 99]; - return function(animationData2) { - if (animationData2.chars && !checkVersion(minimumVersion, animationData2.v)) { - var i; - var len = animationData2.chars.length; - for (i = 0; i < len; i += 1) { - var charData = animationData2.chars[i]; - if (charData.data && charData.data.shapes) { - completeShapes(charData.data.shapes); - charData.data.ip = 0; - charData.data.op = 99999; - charData.data.st = 0; - charData.data.sr = 1; - charData.data.ks = { - p: { k: [0, 0], a: 0 }, - s: { k: [100, 100], a: 0 }, - a: { k: [0, 0], a: 0 }, - r: { k: 0, a: 0 }, - o: { k: 100, a: 0 } - }; - if (!animationData2.chars[i].t) { - charData.data.shapes.push( - { - ty: "no" - } - ); - charData.data.shapes[0].it.push( - { - p: { k: [0, 0], a: 0 }, - s: { k: [100, 100], a: 0 }, - a: { k: [0, 0], a: 0 }, - r: { k: 0, a: 0 }, - o: { k: 100, a: 0 }, - sk: { k: 0, a: 0 }, - sa: { k: 0, a: 0 }, - ty: "tr" - } - ); - } - } - } - } - }; - }(); - var checkPathProperties = /* @__PURE__ */ function() { - var minimumVersion = [5, 7, 15]; - function updateTextLayer(textLayer) { - var pathData = textLayer.t.p; - if (typeof pathData.a === "number") { - pathData.a = { - a: 0, - k: pathData.a - }; - } - if (typeof pathData.p === "number") { - pathData.p = { - a: 0, - k: pathData.p - }; - } - if (typeof pathData.r === "number") { - pathData.r = { - a: 0, - k: pathData.r - }; - } - } - function iterateLayers(layers) { - var i; - var len = layers.length; - for (i = 0; i < len; i += 1) { - if (layers[i].ty === 5) { - updateTextLayer(layers[i]); - } - } - } - return function(animationData2) { - if (checkVersion(minimumVersion, animationData2.v)) { - iterateLayers(animationData2.layers); - if (animationData2.assets) { - var i; - var len = animationData2.assets.length; - for (i = 0; i < len; i += 1) { - if (animationData2.assets[i].layers) { - iterateLayers(animationData2.assets[i].layers); - } - } - } - } - }; - }(); - var checkColors = /* @__PURE__ */ function() { - var minimumVersion = [4, 1, 9]; - function iterateShapes(shapes) { - var i; - var len = shapes.length; - var j; - var jLen; - for (i = 0; i < len; i += 1) { - if (shapes[i].ty === "gr") { - iterateShapes(shapes[i].it); - } else if (shapes[i].ty === "fl" || shapes[i].ty === "st") { - if (shapes[i].c.k && shapes[i].c.k[0].i) { - jLen = shapes[i].c.k.length; - for (j = 0; j < jLen; j += 1) { - if (shapes[i].c.k[j].s) { - shapes[i].c.k[j].s[0] /= 255; - shapes[i].c.k[j].s[1] /= 255; - shapes[i].c.k[j].s[2] /= 255; - shapes[i].c.k[j].s[3] /= 255; - } - if (shapes[i].c.k[j].e) { - shapes[i].c.k[j].e[0] /= 255; - shapes[i].c.k[j].e[1] /= 255; - shapes[i].c.k[j].e[2] /= 255; - shapes[i].c.k[j].e[3] /= 255; - } - } - } else { - shapes[i].c.k[0] /= 255; - shapes[i].c.k[1] /= 255; - shapes[i].c.k[2] /= 255; - shapes[i].c.k[3] /= 255; - } - } - } - } - function iterateLayers(layers) { - var i; - var len = layers.length; - for (i = 0; i < len; i += 1) { - if (layers[i].ty === 4) { - iterateShapes(layers[i].shapes); - } - } - } - return function(animationData2) { - if (checkVersion(minimumVersion, animationData2.v)) { - iterateLayers(animationData2.layers); - if (animationData2.assets) { - var i; - var len = animationData2.assets.length; - for (i = 0; i < len; i += 1) { - if (animationData2.assets[i].layers) { - iterateLayers(animationData2.assets[i].layers); - } - } - } - } - }; - }(); - var checkShapes = /* @__PURE__ */ function() { - var minimumVersion = [4, 4, 18]; - function completeClosingShapes(arr) { - var i; - var len = arr.length; - var j; - var jLen; - for (i = len - 1; i >= 0; i -= 1) { - if (arr[i].ty === "sh") { - if (arr[i].ks.k.i) { - arr[i].ks.k.c = arr[i].closed; - } else { - jLen = arr[i].ks.k.length; - for (j = 0; j < jLen; j += 1) { - if (arr[i].ks.k[j].s) { - arr[i].ks.k[j].s[0].c = arr[i].closed; - } - if (arr[i].ks.k[j].e) { - arr[i].ks.k[j].e[0].c = arr[i].closed; - } - } - } - } else if (arr[i].ty === "gr") { - completeClosingShapes(arr[i].it); - } - } - } - function iterateLayers(layers) { - var layerData; - var i; - var len = layers.length; - var j; - var jLen; - var k2; - var kLen; - for (i = 0; i < len; i += 1) { - layerData = layers[i]; - if (layerData.hasMask) { - var maskProps = layerData.masksProperties; - jLen = maskProps.length; - for (j = 0; j < jLen; j += 1) { - if (maskProps[j].pt.k.i) { - maskProps[j].pt.k.c = maskProps[j].cl; - } else { - kLen = maskProps[j].pt.k.length; - for (k2 = 0; k2 < kLen; k2 += 1) { - if (maskProps[j].pt.k[k2].s) { - maskProps[j].pt.k[k2].s[0].c = maskProps[j].cl; - } - if (maskProps[j].pt.k[k2].e) { - maskProps[j].pt.k[k2].e[0].c = maskProps[j].cl; - } - } - } - } - } - if (layerData.ty === 4) { - completeClosingShapes(layerData.shapes); - } - } - } - return function(animationData2) { - if (checkVersion(minimumVersion, animationData2.v)) { - iterateLayers(animationData2.layers); - if (animationData2.assets) { - var i; - var len = animationData2.assets.length; - for (i = 0; i < len; i += 1) { - if (animationData2.assets[i].layers) { - iterateLayers(animationData2.assets[i].layers); - } - } - } - } - }; - }(); - function completeData(animationData2) { - if (animationData2.__complete) { - return; - } - checkColors(animationData2); - checkText(animationData2); - checkChars(animationData2); - checkPathProperties(animationData2); - checkShapes(animationData2); - completeLayers(animationData2.layers, animationData2.assets); - completeChars(animationData2.chars, animationData2.assets); - animationData2.__complete = true; - } - function completeText(data2) { - if (data2.t.a.length === 0 && !("m" in data2.t.p)) { - } - } - var moduleOb = {}; - moduleOb.completeData = completeData; - moduleOb.checkColors = checkColors; - moduleOb.checkChars = checkChars; - moduleOb.checkPathProperties = checkPathProperties; - moduleOb.checkShapes = checkShapes; - moduleOb.completeLayers = completeLayers; - return moduleOb; - } - if (!_workerSelf.dataManager) { - _workerSelf.dataManager = dataFunctionManager(); - } - if (!_workerSelf.assetLoader) { - _workerSelf.assetLoader = /* @__PURE__ */ function() { - function formatResponse(xhr) { - var contentTypeHeader = xhr.getResponseHeader("content-type"); - if (contentTypeHeader && xhr.responseType === "json" && contentTypeHeader.indexOf("json") !== -1) { - return xhr.response; - } - if (xhr.response && typeof xhr.response === "object") { - return xhr.response; - } - if (xhr.response && typeof xhr.response === "string") { - return JSON.parse(xhr.response); - } - if (xhr.responseText) { - return JSON.parse(xhr.responseText); - } - return null; - } - function loadAsset(path, fullPath, callback, errorCallback) { - var response; - var xhr = new XMLHttpRequest(); - try { - xhr.responseType = "json"; - } catch (err2) { - } - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - response = formatResponse(xhr); - callback(response); - } else { - try { - response = formatResponse(xhr); - callback(response); - } catch (err2) { - if (errorCallback) { - errorCallback(err2); - } - } - } - } - }; - try { - xhr.open("GET", path, true); - } catch (error) { - xhr.open("GET", fullPath + "/" + path, true); - } - xhr.send(); - } - return { - load: loadAsset - }; - }(); - } - if (e.data.type === "loadAnimation") { - _workerSelf.assetLoader.load( - e.data.path, - e.data.fullPath, - function(data2) { - _workerSelf.dataManager.completeData(data2); - _workerSelf.postMessage({ - id: e.data.id, - payload: data2, - status: "success" - }); - }, - function() { - _workerSelf.postMessage({ - id: e.data.id, - status: "error" - }); - } - ); - } else if (e.data.type === "complete") { - var animation = e.data.animation; - _workerSelf.dataManager.completeData(animation); - _workerSelf.postMessage({ - id: e.data.id, - payload: animation, - status: "success" - }); - } else if (e.data.type === "loadData") { - _workerSelf.assetLoader.load( - e.data.path, - e.data.fullPath, - function(data2) { - _workerSelf.postMessage({ - id: e.data.id, - payload: data2, - status: "success" - }); - }, - function() { - _workerSelf.postMessage({ - id: e.data.id, - status: "error" - }); - } - ); - } - }); - workerInstance.onmessage = function(event) { - var data2 = event.data; - var id = data2.id; - var process = processes[id]; - processes[id] = null; - if (data2.status === "success") { - process.onComplete(data2.payload); - } else if (process.onError) { - process.onError(); - } - }; - } - } - function createProcess(onComplete, onError) { - _counterId += 1; - var id = "processId_" + _counterId; - processes[id] = { - onComplete, - onError - }; - return id; - } - function loadAnimation2(path, onComplete, onError) { - setupWorker(); - var processId = createProcess(onComplete, onError); - workerInstance.postMessage({ - type: "loadAnimation", - path, - fullPath: window.location.origin + window.location.pathname, - id: processId - }); - } - function loadData(path, onComplete, onError) { - setupWorker(); - var processId = createProcess(onComplete, onError); - workerInstance.postMessage({ - type: "loadData", - path, - fullPath: window.location.origin + window.location.pathname, - id: processId - }); - } - function completeAnimation(anim, onComplete, onError) { - setupWorker(); - var processId = createProcess(onComplete, onError); - workerInstance.postMessage({ - type: "complete", - animation: anim, - id: processId - }); - } - return { - loadAnimation: loadAnimation2, - loadData, - completeAnimation - }; - }(); - const ImagePreloader = function() { - var proxyImage = function() { - var canvas = createTag("canvas"); - canvas.width = 1; - canvas.height = 1; - var ctx = canvas.getContext("2d"); - ctx.fillStyle = "rgba(0,0,0,0)"; - ctx.fillRect(0, 0, 1, 1); - return canvas; - }(); - function imageLoaded() { - this.loadedAssets += 1; - if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) { - if (this.imagesLoadedCb) { - this.imagesLoadedCb(null); - } - } - } - function footageLoaded() { - this.loadedFootagesCount += 1; - if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) { - if (this.imagesLoadedCb) { - this.imagesLoadedCb(null); - } - } - } - function getAssetsPath(assetData, assetsPath, originalPath) { - var path = ""; - if (assetData.e) { - path = assetData.p; - } else if (assetsPath) { - var imagePath = assetData.p; - if (imagePath.indexOf("images/") !== -1) { - imagePath = imagePath.split("/")[1]; - } - path = assetsPath + imagePath; - } else { - path = originalPath; - path += assetData.u ? assetData.u : ""; - path += assetData.p; - } - return path; - } - function testImageLoaded(img) { - var _count = 0; - var intervalId = setInterval((function() { - var box = img.getBBox(); - if (box.width || _count > 500) { - this._imageLoaded(); - clearInterval(intervalId); - } - _count += 1; - }).bind(this), 50); - } - function createImageData(assetData) { - var path = getAssetsPath(assetData, this.assetsPath, this.path); - var img = createNS("image"); - if (isSafari) { - this.testImageLoaded(img); - } else { - img.addEventListener("load", this._imageLoaded, false); - } - img.addEventListener("error", (function() { - ob2.img = proxyImage; - this._imageLoaded(); - }).bind(this), false); - img.setAttributeNS("http://www.w3.org/1999/xlink", "href", path); - if (this._elementHelper.append) { - this._elementHelper.append(img); - } else { - this._elementHelper.appendChild(img); - } - var ob2 = { - img, - assetData - }; - return ob2; - } - function createImgData(assetData) { - var path = getAssetsPath(assetData, this.assetsPath, this.path); - var img = createTag("img"); - img.crossOrigin = "anonymous"; - img.addEventListener("load", this._imageLoaded, false); - img.addEventListener("error", (function() { - ob2.img = proxyImage; - this._imageLoaded(); - }).bind(this), false); - img.src = path; - var ob2 = { - img, - assetData - }; - return ob2; - } - function createFootageData(data2) { - var ob2 = { - assetData: data2 - }; - var path = getAssetsPath(data2, this.assetsPath, this.path); - dataManager.loadData(path, (function(footageData) { - ob2.img = footageData; - this._footageLoaded(); - }).bind(this), (function() { - ob2.img = {}; - this._footageLoaded(); - }).bind(this)); - return ob2; - } - function loadAssets(assets, cb) { - this.imagesLoadedCb = cb; - var i; - var len = assets.length; - for (i = 0; i < len; i += 1) { - if (!assets[i].layers) { - if (!assets[i].t || assets[i].t === "seq") { - this.totalImages += 1; - this.images.push(this._createImageData(assets[i])); - } else if (assets[i].t === 3) { - this.totalFootages += 1; - this.images.push(this.createFootageData(assets[i])); - } - } - } - } - function setPath(path) { - this.path = path || ""; - } - function setAssetsPath(path) { - this.assetsPath = path || ""; - } - function getAsset(assetData) { - var i = 0; - var len = this.images.length; - while (i < len) { - if (this.images[i].assetData === assetData) { - return this.images[i].img; - } - i += 1; - } - return null; - } - function destroy() { - this.imagesLoadedCb = null; - this.images.length = 0; - } - function loadedImages() { - return this.totalImages === this.loadedAssets; - } - function loadedFootages() { - return this.totalFootages === this.loadedFootagesCount; - } - function setCacheType(type, elementHelper) { - if (type === "svg") { - this._elementHelper = elementHelper; - this._createImageData = this.createImageData.bind(this); - } else { - this._createImageData = this.createImgData.bind(this); - } - } - function ImagePreloaderFactory() { - this._imageLoaded = imageLoaded.bind(this); - this._footageLoaded = footageLoaded.bind(this); - this.testImageLoaded = testImageLoaded.bind(this); - this.createFootageData = createFootageData.bind(this); - this.assetsPath = ""; - this.path = ""; - this.totalImages = 0; - this.totalFootages = 0; - this.loadedAssets = 0; - this.loadedFootagesCount = 0; - this.imagesLoadedCb = null; - this.images = []; - } - ImagePreloaderFactory.prototype = { - loadAssets, - setAssetsPath, - setPath, - loadedImages, - loadedFootages, - destroy, - getAsset, - createImgData, - createImageData, - imageLoaded, - footageLoaded, - setCacheType - }; - return ImagePreloaderFactory; - }(); - BaseEvent.prototype = { - triggerEvent: function(eventName, args) { - if (this._cbs[eventName]) { - var callbacks = this._cbs[eventName]; - for (var i = 0; i < callbacks.length; i += 1) { - callbacks[i](args); - } - } - }, - addEventListener: function(eventName, callback) { - if (!this._cbs[eventName]) { - this._cbs[eventName] = []; - } - this._cbs[eventName].push(callback); - return (function() { - this.removeEventListener(eventName, callback); - }).bind(this); - }, - removeEventListener: function(eventName, callback) { - if (!callback) { - this._cbs[eventName] = null; - } else if (this._cbs[eventName]) { - var i = 0; - var len = this._cbs[eventName].length; - while (i < len) { - if (this._cbs[eventName][i] === callback) { - this._cbs[eventName].splice(i, 1); - i -= 1; - len -= 1; - } - i += 1; - } - if (!this._cbs[eventName].length) { - this._cbs[eventName] = null; - } - } - } - }; - const markerParser = /* @__PURE__ */ function() { - function parsePayloadLines(payload) { - var lines = payload.split("\r\n"); - var keys2 = {}; - var line2; - var keysCount = 0; - for (var i = 0; i < lines.length; i += 1) { - line2 = lines[i].split(":"); - if (line2.length === 2) { - keys2[line2[0]] = line2[1].trim(); - keysCount += 1; - } - } - if (keysCount === 0) { - throw new Error(); - } - return keys2; - } - return function(_markers) { - var markers = []; - for (var i = 0; i < _markers.length; i += 1) { - var _marker = _markers[i]; - var markerData = { - time: _marker.tm, - duration: _marker.dr - }; - try { - markerData.payload = JSON.parse(_markers[i].cm); - } catch (_) { - try { - markerData.payload = parsePayloadLines(_markers[i].cm); - } catch (__) { - markerData.payload = { - name: _markers[i].cm - }; - } - } - markers.push(markerData); - } - return markers; - }; - }(); - const ProjectInterface = /* @__PURE__ */ function() { - function registerComposition(comp2) { - this.compositions.push(comp2); - } - return function() { - function _thisProjectFunction(name2) { - var i = 0; - var len = this.compositions.length; - while (i < len) { - if (this.compositions[i].data && this.compositions[i].data.nm === name2) { - if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) { - this.compositions[i].prepareFrame(this.currentFrame); - } - return this.compositions[i].compInterface; - } - i += 1; - } - return null; - } - _thisProjectFunction.compositions = []; - _thisProjectFunction.currentFrame = 0; - _thisProjectFunction.registerComposition = registerComposition; - return _thisProjectFunction; - }; - }(); - const renderers = {}; - const registerRenderer = (key2, value2) => { - renderers[key2] = value2; - }; - const AnimationItem = function() { - this._cbs = []; - this.name = ""; - this.path = ""; - this.isLoaded = false; - this.currentFrame = 0; - this.currentRawFrame = 0; - this.firstFrame = 0; - this.totalFrames = 0; - this.frameRate = 0; - this.frameMult = 0; - this.playSpeed = 1; - this.playDirection = 1; - this.playCount = 0; - this.animationData = {}; - this.assets = []; - this.isPaused = true; - this.autoplay = false; - this.loop = true; - this.renderer = null; - this.animationID = createElementID(); - this.assetsPath = ""; - this.timeCompleted = 0; - this.segmentPos = 0; - this.isSubframeEnabled = getSubframeEnabled(); - this.segments = []; - this._idle = true; - this._completedLoop = false; - this.projectInterface = ProjectInterface(); - this.imagePreloader = new ImagePreloader(); - this.audioController = audioControllerFactory(); - this.markers = []; - this.configAnimation = this.configAnimation.bind(this); - this.onSetupError = this.onSetupError.bind(this); - this.onSegmentComplete = this.onSegmentComplete.bind(this); - this.drawnFrameEvent = new BMEnterFrameEvent("drawnFrame", 0, 0, 0); - }; - extendPrototype([BaseEvent], AnimationItem); - AnimationItem.prototype.setParams = function(params) { - if (params.wrapper || params.container) { - this.wrapper = params.wrapper || params.container; - } - var animType = "svg"; - if (params.animType) { - animType = params.animType; - } else if (params.renderer) { - animType = params.renderer; - } - const RendererClass = getRenderer(animType); - this.renderer = new RendererClass(this, params.rendererSettings); - this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs); - this.renderer.setProjectInterface(this.projectInterface); - this.animType = animType; - if (params.loop === "" || params.loop === null || params.loop === void 0 || params.loop === true) { - this.loop = true; - } else if (params.loop === false) { - this.loop = false; - } else { - this.loop = parseInt(params.loop, 10); - } - this.autoplay = "autoplay" in params ? params.autoplay : true; - this.name = params.name ? params.name : ""; - this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, "autoloadSegments") ? params.autoloadSegments : true; - this.assetsPath = params.assetsPath; - this.initialSegment = params.initialSegment; - if (params.audioFactory) { - this.audioController.setAudioFactory(params.audioFactory); - } - if (params.animationData) { - this.setupAnimation(params.animationData); - } else if (params.path) { - if (params.path.lastIndexOf("\\") !== -1) { - this.path = params.path.substr(0, params.path.lastIndexOf("\\") + 1); - } else { - this.path = params.path.substr(0, params.path.lastIndexOf("/") + 1); - } - this.fileName = params.path.substr(params.path.lastIndexOf("/") + 1); - this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf(".json")); - dataManager.loadAnimation( - params.path, - this.configAnimation, - this.onSetupError - ); - } - }; - AnimationItem.prototype.onSetupError = function() { - this.trigger("data_failed"); - }; - AnimationItem.prototype.setupAnimation = function(data2) { - dataManager.completeAnimation( - data2, - this.configAnimation - ); - }; - AnimationItem.prototype.setData = function(wrapper, animationData2) { - if (animationData2) { - if (typeof animationData2 !== "object") { - animationData2 = JSON.parse(animationData2); - } - } - var params = { - wrapper, - animationData: animationData2 - }; - var wrapperAttributes = wrapper.attributes; - params.path = wrapperAttributes.getNamedItem("data-animation-path") ? wrapperAttributes.getNamedItem("data-animation-path").value : wrapperAttributes.getNamedItem("data-bm-path") ? wrapperAttributes.getNamedItem("data-bm-path").value : wrapperAttributes.getNamedItem("bm-path") ? wrapperAttributes.getNamedItem("bm-path").value : ""; - params.animType = wrapperAttributes.getNamedItem("data-anim-type") ? wrapperAttributes.getNamedItem("data-anim-type").value : wrapperAttributes.getNamedItem("data-bm-type") ? wrapperAttributes.getNamedItem("data-bm-type").value : wrapperAttributes.getNamedItem("bm-type") ? wrapperAttributes.getNamedItem("bm-type").value : wrapperAttributes.getNamedItem("data-bm-renderer") ? wrapperAttributes.getNamedItem("data-bm-renderer").value : wrapperAttributes.getNamedItem("bm-renderer") ? wrapperAttributes.getNamedItem("bm-renderer").value : "canvas"; - var loop = wrapperAttributes.getNamedItem("data-anim-loop") ? wrapperAttributes.getNamedItem("data-anim-loop").value : wrapperAttributes.getNamedItem("data-bm-loop") ? wrapperAttributes.getNamedItem("data-bm-loop").value : wrapperAttributes.getNamedItem("bm-loop") ? wrapperAttributes.getNamedItem("bm-loop").value : ""; - if (loop === "false") { - params.loop = false; - } else if (loop === "true") { - params.loop = true; - } else if (loop !== "") { - params.loop = parseInt(loop, 10); - } - var autoplay = wrapperAttributes.getNamedItem("data-anim-autoplay") ? wrapperAttributes.getNamedItem("data-anim-autoplay").value : wrapperAttributes.getNamedItem("data-bm-autoplay") ? wrapperAttributes.getNamedItem("data-bm-autoplay").value : wrapperAttributes.getNamedItem("bm-autoplay") ? wrapperAttributes.getNamedItem("bm-autoplay").value : true; - params.autoplay = autoplay !== "false"; - params.name = wrapperAttributes.getNamedItem("data-name") ? wrapperAttributes.getNamedItem("data-name").value : wrapperAttributes.getNamedItem("data-bm-name") ? wrapperAttributes.getNamedItem("data-bm-name").value : wrapperAttributes.getNamedItem("bm-name") ? wrapperAttributes.getNamedItem("bm-name").value : ""; - var prerender = wrapperAttributes.getNamedItem("data-anim-prerender") ? wrapperAttributes.getNamedItem("data-anim-prerender").value : wrapperAttributes.getNamedItem("data-bm-prerender") ? wrapperAttributes.getNamedItem("data-bm-prerender").value : wrapperAttributes.getNamedItem("bm-prerender") ? wrapperAttributes.getNamedItem("bm-prerender").value : ""; - if (prerender === "false") { - params.prerender = false; - } - this.setParams(params); - }; - AnimationItem.prototype.includeLayers = function(data2) { - if (data2.op > this.animationData.op) { - this.animationData.op = data2.op; - this.totalFrames = Math.floor(data2.op - this.animationData.ip); - } - var layers = this.animationData.layers; - var i; - var len = layers.length; - var newLayers = data2.layers; - var j; - var jLen = newLayers.length; - for (j = 0; j < jLen; j += 1) { - i = 0; - while (i < len) { - if (layers[i].id === newLayers[j].id) { - layers[i] = newLayers[j]; - break; - } - i += 1; - } - } - if (data2.chars || data2.fonts) { - this.renderer.globalData.fontManager.addChars(data2.chars); - this.renderer.globalData.fontManager.addFonts(data2.fonts, this.renderer.globalData.defs); - } - if (data2.assets) { - len = data2.assets.length; - for (i = 0; i < len; i += 1) { - this.animationData.assets.push(data2.assets[i]); - } - } - this.animationData.__complete = false; - dataManager.completeAnimation( - this.animationData, - this.onSegmentComplete - ); - }; - AnimationItem.prototype.onSegmentComplete = function(data2) { - this.animationData = data2; - var expressionsPlugin2 = getExpressionsPlugin(); - if (expressionsPlugin2) { - expressionsPlugin2.initExpressions(this); - } - this.loadNextSegment(); - }; - AnimationItem.prototype.loadNextSegment = function() { - var segments = this.animationData.segments; - if (!segments || segments.length === 0 || !this.autoloadSegments) { - this.trigger("data_ready"); - this.timeCompleted = this.totalFrames; - return; - } - var segment = segments.shift(); - this.timeCompleted = segment.time * this.frameRate; - var segmentPath = this.path + this.fileName + "_" + this.segmentPos + ".json"; - this.segmentPos += 1; - dataManager.loadData(segmentPath, this.includeLayers.bind(this), (function() { - this.trigger("data_failed"); - }).bind(this)); - }; - AnimationItem.prototype.loadSegments = function() { - var segments = this.animationData.segments; - if (!segments) { - this.timeCompleted = this.totalFrames; - } - this.loadNextSegment(); - }; - AnimationItem.prototype.imagesLoaded = function() { - this.trigger("loaded_images"); - this.checkLoaded(); - }; - AnimationItem.prototype.preloadImages = function() { - this.imagePreloader.setAssetsPath(this.assetsPath); - this.imagePreloader.setPath(this.path); - this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this)); - }; - AnimationItem.prototype.configAnimation = function(animData) { - if (!this.renderer) { - return; - } - try { - this.animationData = animData; - if (this.initialSegment) { - this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]); - this.firstFrame = Math.round(this.initialSegment[0]); - } else { - this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip); - this.firstFrame = Math.round(this.animationData.ip); - } - this.renderer.configAnimation(animData); - if (!animData.assets) { - animData.assets = []; - } - this.assets = this.animationData.assets; - this.frameRate = this.animationData.fr; - this.frameMult = this.animationData.fr / 1e3; - this.renderer.searchExtraCompositions(animData.assets); - this.markers = markerParser(animData.markers || []); - this.trigger("config_ready"); - this.preloadImages(); - this.loadSegments(); - this.updaFrameModifier(); - this.waitForFontsLoaded(); - if (this.isPaused) { - this.audioController.pause(); - } - } catch (error) { - this.triggerConfigError(error); - } - }; - AnimationItem.prototype.waitForFontsLoaded = function() { - if (!this.renderer) { - return; - } - if (this.renderer.globalData.fontManager.isLoaded) { - this.checkLoaded(); - } else { - setTimeout(this.waitForFontsLoaded.bind(this), 20); - } - }; - AnimationItem.prototype.checkLoaded = function() { - if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== "canvas") && this.imagePreloader.loadedFootages()) { - this.isLoaded = true; - var expressionsPlugin2 = getExpressionsPlugin(); - if (expressionsPlugin2) { - expressionsPlugin2.initExpressions(this); - } - this.renderer.initItems(); - setTimeout((function() { - this.trigger("DOMLoaded"); - }).bind(this), 0); - this.gotoFrame(); - if (this.autoplay) { - this.play(); - } - } - }; - AnimationItem.prototype.resize = function() { - this.renderer.updateContainerSize(); - }; - AnimationItem.prototype.setSubframe = function(flag) { - this.isSubframeEnabled = !!flag; - }; - AnimationItem.prototype.gotoFrame = function() { - this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; - if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) { - this.currentFrame = this.timeCompleted; - } - this.trigger("enterFrame"); - this.renderFrame(); - this.trigger("drawnFrame"); - }; - AnimationItem.prototype.renderFrame = function() { - if (this.isLoaded === false || !this.renderer) { - return; - } - try { - this.renderer.renderFrame(this.currentFrame + this.firstFrame); - } catch (error) { - this.triggerRenderFrameError(error); - } - }; - AnimationItem.prototype.play = function(name2) { - if (name2 && this.name !== name2) { - return; - } - if (this.isPaused === true) { - this.isPaused = false; - this.trigger("_pause"); - this.audioController.resume(); - if (this._idle) { - this._idle = false; - this.trigger("_active"); - } - } - }; - AnimationItem.prototype.pause = function(name2) { - if (name2 && this.name !== name2) { - return; - } - if (this.isPaused === false) { - this.isPaused = true; - this.trigger("_play"); - this._idle = true; - this.trigger("_idle"); - this.audioController.pause(); - } - }; - AnimationItem.prototype.togglePause = function(name2) { - if (name2 && this.name !== name2) { - return; - } - if (this.isPaused === true) { - this.play(); - } else { - this.pause(); - } - }; - AnimationItem.prototype.stop = function(name2) { - if (name2 && this.name !== name2) { - return; - } - this.pause(); - this.playCount = 0; - this._completedLoop = false; - this.setCurrentRawFrameValue(0); - }; - AnimationItem.prototype.getMarkerData = function(markerName) { - var marker; - for (var i = 0; i < this.markers.length; i += 1) { - marker = this.markers[i]; - if (marker.payload && marker.payload.name === markerName) { - return marker; - } - } - return null; - }; - AnimationItem.prototype.goToAndStop = function(value2, isFrame, name2) { - if (name2 && this.name !== name2) { - return; - } - var numValue = Number(value2); - if (isNaN(numValue)) { - var marker = this.getMarkerData(value2); - if (marker) { - this.goToAndStop(marker.time, true); - } - } else if (isFrame) { - this.setCurrentRawFrameValue(value2); - } else { - this.setCurrentRawFrameValue(value2 * this.frameModifier); - } - this.pause(); - }; - AnimationItem.prototype.goToAndPlay = function(value2, isFrame, name2) { - if (name2 && this.name !== name2) { - return; - } - var numValue = Number(value2); - if (isNaN(numValue)) { - var marker = this.getMarkerData(value2); - if (marker) { - if (!marker.duration) { - this.goToAndStop(marker.time, true); - } else { - this.playSegments([marker.time, marker.time + marker.duration], true); - } - } - } else { - this.goToAndStop(numValue, isFrame, name2); - } - this.play(); - }; - AnimationItem.prototype.advanceTime = function(value2) { - if (this.isPaused === true || this.isLoaded === false) { - return; - } - var nextValue = this.currentRawFrame + value2 * this.frameModifier; - var _isComplete = false; - if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) { - if (!this.loop || this.playCount === this.loop) { - if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) { - _isComplete = true; - nextValue = this.totalFrames - 1; - } - } else if (nextValue >= this.totalFrames) { - this.playCount += 1; - if (!this.checkSegments(nextValue % this.totalFrames)) { - this.setCurrentRawFrameValue(nextValue % this.totalFrames); - this._completedLoop = true; - this.trigger("loopComplete"); - } - } else { - this.setCurrentRawFrameValue(nextValue); - } - } else if (nextValue < 0) { - if (!this.checkSegments(nextValue % this.totalFrames)) { - if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) { - this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames); - if (!this._completedLoop) { - this._completedLoop = true; - } else { - this.trigger("loopComplete"); - } - } else { - _isComplete = true; - nextValue = 0; - } - } - } else { - this.setCurrentRawFrameValue(nextValue); - } - if (_isComplete) { - this.setCurrentRawFrameValue(nextValue); - this.pause(); - this.trigger("complete"); - } - }; - AnimationItem.prototype.adjustSegment = function(arr, offset) { - this.playCount = 0; - if (arr[1] < arr[0]) { - if (this.frameModifier > 0) { - if (this.playSpeed < 0) { - this.setSpeed(-this.playSpeed); - } else { - this.setDirection(-1); - } - } - this.totalFrames = arr[0] - arr[1]; - this.timeCompleted = this.totalFrames; - this.firstFrame = arr[1]; - this.setCurrentRawFrameValue(this.totalFrames - 1e-3 - offset); - } else if (arr[1] > arr[0]) { - if (this.frameModifier < 0) { - if (this.playSpeed < 0) { - this.setSpeed(-this.playSpeed); - } else { - this.setDirection(1); - } - } - this.totalFrames = arr[1] - arr[0]; - this.timeCompleted = this.totalFrames; - this.firstFrame = arr[0]; - this.setCurrentRawFrameValue(1e-3 + offset); - } - this.trigger("segmentStart"); - }; - AnimationItem.prototype.setSegment = function(init, end) { - var pendingFrame = -1; - if (this.isPaused) { - if (this.currentRawFrame + this.firstFrame < init) { - pendingFrame = init; - } else if (this.currentRawFrame + this.firstFrame > end) { - pendingFrame = end - init; - } - } - this.firstFrame = init; - this.totalFrames = end - init; - this.timeCompleted = this.totalFrames; - if (pendingFrame !== -1) { - this.goToAndStop(pendingFrame, true); - } - }; - AnimationItem.prototype.playSegments = function(arr, forceFlag) { - if (forceFlag) { - this.segments.length = 0; - } - if (typeof arr[0] === "object") { - var i; - var len = arr.length; - for (i = 0; i < len; i += 1) { - this.segments.push(arr[i]); - } - } else { - this.segments.push(arr); - } - if (this.segments.length && forceFlag) { - this.adjustSegment(this.segments.shift(), 0); - } - if (this.isPaused) { - this.play(); - } - }; - AnimationItem.prototype.resetSegments = function(forceFlag) { - this.segments.length = 0; - this.segments.push([this.animationData.ip, this.animationData.op]); - if (forceFlag) { - this.checkSegments(0); - } - }; - AnimationItem.prototype.checkSegments = function(offset) { - if (this.segments.length) { - this.adjustSegment(this.segments.shift(), offset); - return true; - } - return false; - }; - AnimationItem.prototype.destroy = function(name2) { - if (name2 && this.name !== name2 || !this.renderer) { - return; - } - this.renderer.destroy(); - this.imagePreloader.destroy(); - this.trigger("destroy"); - this._cbs = null; - this.onEnterFrame = null; - this.onLoopComplete = null; - this.onComplete = null; - this.onSegmentStart = null; - this.onDestroy = null; - this.renderer = null; - this.renderer = null; - this.imagePreloader = null; - this.projectInterface = null; - }; - AnimationItem.prototype.setCurrentRawFrameValue = function(value2) { - this.currentRawFrame = value2; - this.gotoFrame(); - }; - AnimationItem.prototype.setSpeed = function(val2) { - this.playSpeed = val2; - this.updaFrameModifier(); - }; - AnimationItem.prototype.setDirection = function(val2) { - this.playDirection = val2 < 0 ? -1 : 1; - this.updaFrameModifier(); - }; - AnimationItem.prototype.setVolume = function(val2, name2) { - if (name2 && this.name !== name2) { - return; - } - this.audioController.setVolume(val2); - }; - AnimationItem.prototype.getVolume = function() { - return this.audioController.getVolume(); - }; - AnimationItem.prototype.mute = function(name2) { - if (name2 && this.name !== name2) { - return; - } - this.audioController.mute(); - }; - AnimationItem.prototype.unmute = function(name2) { - if (name2 && this.name !== name2) { - return; - } - this.audioController.unmute(); - }; - AnimationItem.prototype.updaFrameModifier = function() { - this.frameModifier = this.frameMult * this.playSpeed * this.playDirection; - this.audioController.setRate(this.playSpeed * this.playDirection); - }; - AnimationItem.prototype.getPath = function() { - return this.path; - }; - AnimationItem.prototype.getAssetsPath = function(assetData) { - var path = ""; - if (assetData.e) { - path = assetData.p; - } else if (this.assetsPath) { - var imagePath = assetData.p; - if (imagePath.indexOf("images/") !== -1) { - imagePath = imagePath.split("/")[1]; - } - path = this.assetsPath + imagePath; - } else { - path = this.path; - path += assetData.u ? assetData.u : ""; - path += assetData.p; - } - return path; - }; - AnimationItem.prototype.getAssetData = function(id) { - var i = 0; - var len = this.assets.length; - while (i < len) { - if (id === this.assets[i].id) { - return this.assets[i]; - } - i += 1; - } - return null; - }; - AnimationItem.prototype.hide = function() { - this.renderer.hide(); - }; - AnimationItem.prototype.show = function() { - this.renderer.show(); - }; - AnimationItem.prototype.getDuration = function(isFrame) { - return isFrame ? this.totalFrames : this.totalFrames / this.frameRate; - }; - AnimationItem.prototype.updateDocumentData = function(path, documentData, index2) { - try { - var element = this.renderer.getElementByPath(path); - element.updateDocumentData(documentData, index2); - } catch (error) { - } - }; - AnimationItem.prototype.trigger = function(name2) { - if (this._cbs && this._cbs[name2]) { - switch (name2) { - case "enterFrame": - this.triggerEvent(name2, new BMEnterFrameEvent(name2, this.currentFrame, this.totalFrames, this.frameModifier)); - break; - case "drawnFrame": - this.drawnFrameEvent.currentTime = this.currentFrame; - this.drawnFrameEvent.totalTime = this.totalFrames; - this.drawnFrameEvent.direction = this.frameModifier; - this.triggerEvent(name2, this.drawnFrameEvent); - break; - case "loopComplete": - this.triggerEvent(name2, new BMCompleteLoopEvent(name2, this.loop, this.playCount, this.frameMult)); - break; - case "complete": - this.triggerEvent(name2, new BMCompleteEvent(name2, this.frameMult)); - break; - case "segmentStart": - this.triggerEvent(name2, new BMSegmentStartEvent(name2, this.firstFrame, this.totalFrames)); - break; - case "destroy": - this.triggerEvent(name2, new BMDestroyEvent(name2, this)); - break; - default: - this.triggerEvent(name2); - } - } - if (name2 === "enterFrame" && this.onEnterFrame) { - this.onEnterFrame.call(this, new BMEnterFrameEvent(name2, this.currentFrame, this.totalFrames, this.frameMult)); - } - if (name2 === "loopComplete" && this.onLoopComplete) { - this.onLoopComplete.call(this, new BMCompleteLoopEvent(name2, this.loop, this.playCount, this.frameMult)); - } - if (name2 === "complete" && this.onComplete) { - this.onComplete.call(this, new BMCompleteEvent(name2, this.frameMult)); - } - if (name2 === "segmentStart" && this.onSegmentStart) { - this.onSegmentStart.call(this, new BMSegmentStartEvent(name2, this.firstFrame, this.totalFrames)); - } - if (name2 === "destroy" && this.onDestroy) { - this.onDestroy.call(this, new BMDestroyEvent(name2, this)); - } - }; - AnimationItem.prototype.triggerRenderFrameError = function(nativeError) { - var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame); - this.triggerEvent("error", error); - if (this.onError) { - this.onError.call(this, error); - } - }; - AnimationItem.prototype.triggerConfigError = function(nativeError) { - var error = new BMConfigErrorEvent(nativeError, this.currentFrame); - this.triggerEvent("error", error); - if (this.onError) { - this.onError.call(this, error); - } - }; - const animationManager = function() { - var moduleOb = {}; - var registeredAnimations = []; - var initTime = 0; - var len = 0; - var playingAnimationsNum = 0; - var _stopped = true; - var _isFrozen = false; - function removeElement(ev) { - var i = 0; - var animItem = ev.target; - while (i < len) { - if (registeredAnimations[i].animation === animItem) { - registeredAnimations.splice(i, 1); - i -= 1; - len -= 1; - if (!animItem.isPaused) { - subtractPlayingCount(); - } - } - i += 1; - } - } - function registerAnimation(element, animationData2) { - if (!element) { - return null; - } - var i = 0; - while (i < len) { - if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) { - return registeredAnimations[i].animation; - } - i += 1; - } - var animItem = new AnimationItem(); - setupAnimation(animItem, element); - animItem.setData(element, animationData2); - return animItem; - } - function getRegisteredAnimations() { - var i; - var lenAnims = registeredAnimations.length; - var animations = []; - for (i = 0; i < lenAnims; i += 1) { - animations.push(registeredAnimations[i].animation); - } - return animations; - } - function addPlayingCount() { - playingAnimationsNum += 1; - activate(); - } - function subtractPlayingCount() { - playingAnimationsNum -= 1; - } - function setupAnimation(animItem, element) { - animItem.addEventListener("destroy", removeElement); - animItem.addEventListener("_active", addPlayingCount); - animItem.addEventListener("_idle", subtractPlayingCount); - registeredAnimations.push({ elem: element, animation: animItem }); - len += 1; - } - function loadAnimation2(params) { - var animItem = new AnimationItem(); - setupAnimation(animItem, null); - animItem.setParams(params); - return animItem; - } - function setSpeed(val2, animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.setSpeed(val2, animation); - } - } - function setDirection(val2, animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.setDirection(val2, animation); - } - } - function play(animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.play(animation); - } - } - function resume(nowTime) { - var elapsedTime = nowTime - initTime; - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.advanceTime(elapsedTime); - } - initTime = nowTime; - if (playingAnimationsNum && !_isFrozen) { - window.requestAnimationFrame(resume); - } else { - _stopped = true; - } - } - function first2(nowTime) { - initTime = nowTime; - window.requestAnimationFrame(resume); - } - function pause(animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.pause(animation); - } - } - function goToAndStop(value2, isFrame, animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.goToAndStop(value2, isFrame, animation); - } - } - function stop(animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.stop(animation); - } - } - function togglePause(animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.togglePause(animation); - } - } - function destroy(animation) { - var i; - for (i = len - 1; i >= 0; i -= 1) { - registeredAnimations[i].animation.destroy(animation); - } - } - function searchAnimations2(animationData2, standalone2, renderer2) { - var animElements = [].concat( - [].slice.call(document.getElementsByClassName("lottie")), - [].slice.call(document.getElementsByClassName("bodymovin")) - ); - var i; - var lenAnims = animElements.length; - for (i = 0; i < lenAnims; i += 1) { - if (renderer2) { - animElements[i].setAttribute("data-bm-type", renderer2); - } - registerAnimation(animElements[i], animationData2); - } - if (standalone2 && lenAnims === 0) { - if (!renderer2) { - renderer2 = "svg"; - } - var body = document.getElementsByTagName("body")[0]; - body.innerText = ""; - var div2 = createTag("div"); - div2.style.width = "100%"; - div2.style.height = "100%"; - div2.setAttribute("data-bm-type", renderer2); - body.appendChild(div2); - registerAnimation(div2, animationData2); - } - } - function resize() { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.resize(); - } - } - function activate() { - if (!_isFrozen && playingAnimationsNum) { - if (_stopped) { - window.requestAnimationFrame(first2); - _stopped = false; - } - } - } - function freeze() { - _isFrozen = true; - } - function unfreeze() { - _isFrozen = false; - activate(); - } - function setVolume(val2, animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.setVolume(val2, animation); - } - } - function mute(animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.mute(animation); - } - } - function unmute(animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.unmute(animation); - } - } - moduleOb.registerAnimation = registerAnimation; - moduleOb.loadAnimation = loadAnimation2; - moduleOb.setSpeed = setSpeed; - moduleOb.setDirection = setDirection; - moduleOb.play = play; - moduleOb.pause = pause; - moduleOb.stop = stop; - moduleOb.togglePause = togglePause; - moduleOb.searchAnimations = searchAnimations2; - moduleOb.resize = resize; - moduleOb.goToAndStop = goToAndStop; - moduleOb.destroy = destroy; - moduleOb.freeze = freeze; - moduleOb.unfreeze = unfreeze; - moduleOb.setVolume = setVolume; - moduleOb.mute = mute; - moduleOb.unmute = unmute; - moduleOb.getRegisteredAnimations = getRegisteredAnimations; - return moduleOb; - }(); - const BezierFactory = function() { - var ob2 = {}; - ob2.getBezierEasing = getBezierEasing; - var beziers = {}; - function getBezierEasing(a2, b3, c2, d, nm) { - var str = nm || ("bez_" + a2 + "_" + b3 + "_" + c2 + "_" + d).replace(/\./g, "p"); - if (beziers[str]) { - return beziers[str]; - } - var bezEasing = new BezierEasing([a2, b3, c2, d]); - beziers[str] = bezEasing; - return bezEasing; - } - var NEWTON_ITERATIONS = 4; - var NEWTON_MIN_SLOPE = 1e-3; - var SUBDIVISION_PRECISION = 1e-7; - var SUBDIVISION_MAX_ITERATIONS = 10; - var kSplineTableSize = 11; - var kSampleStepSize = 1 / (kSplineTableSize - 1); - var float32ArraySupported = typeof Float32Array === "function"; - function A2(aA1, aA2) { - return 1 - 3 * aA2 + 3 * aA1; - } - function B2(aA1, aA2) { - return 3 * aA2 - 6 * aA1; - } - function C2(aA1) { - return 3 * aA1; - } - function calcBezier(aT, aA1, aA2) { - return ((A2(aA1, aA2) * aT + B2(aA1, aA2)) * aT + C2(aA1)) * aT; - } - function getSlope(aT, aA1, aA2) { - return 3 * A2(aA1, aA2) * aT * aT + 2 * B2(aA1, aA2) * aT + C2(aA1); - } - function binarySubdivide(aX, aA, aB, mX1, mX2) { - var currentX, currentT, i = 0; - do { - currentT = aA + (aB - aA) / 2; - currentX = calcBezier(currentT, mX1, mX2) - aX; - if (currentX > 0) { - aB = currentT; - } else { - aA = currentT; - } - } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); - return currentT; - } - function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) { - for (var i = 0; i < NEWTON_ITERATIONS; ++i) { - var currentSlope = getSlope(aGuessT, mX1, mX2); - if (currentSlope === 0) return aGuessT; - var currentX = calcBezier(aGuessT, mX1, mX2) - aX; - aGuessT -= currentX / currentSlope; - } - return aGuessT; - } - function BezierEasing(points) { - this._p = points; - this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); - this._precomputed = false; - this.get = this.get.bind(this); - } - BezierEasing.prototype = { - get: function(x2) { - var mX1 = this._p[0], mY1 = this._p[1], mX2 = this._p[2], mY2 = this._p[3]; - if (!this._precomputed) this._precompute(); - if (mX1 === mY1 && mX2 === mY2) return x2; - if (x2 === 0) return 0; - if (x2 === 1) return 1; - return calcBezier(this._getTForX(x2), mY1, mY2); - }, - // Private part - _precompute: function() { - var mX1 = this._p[0], mY1 = this._p[1], mX2 = this._p[2], mY2 = this._p[3]; - this._precomputed = true; - if (mX1 !== mY1 || mX2 !== mY2) { - this._calcSampleValues(); - } - }, - _calcSampleValues: function() { - var mX1 = this._p[0], mX2 = this._p[2]; - for (var i = 0; i < kSplineTableSize; ++i) { - this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); - } - }, - /** - * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection. - */ - _getTForX: function(aX) { - var mX1 = this._p[0], mX2 = this._p[2], mSampleValues = this._mSampleValues; - var intervalStart = 0; - var currentSample = 1; - var lastSample = kSplineTableSize - 1; - for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) { - intervalStart += kSampleStepSize; - } - --currentSample; - var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]); - var guessForT = intervalStart + dist * kSampleStepSize; - var initialSlope = getSlope(guessForT, mX1, mX2); - if (initialSlope >= NEWTON_MIN_SLOPE) { - return newtonRaphsonIterate(aX, guessForT, mX1, mX2); - } - if (initialSlope === 0) { - return guessForT; - } - return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); - } - }; - return ob2; - }(); - const pooling = /* @__PURE__ */ function() { - function double(arr) { - return arr.concat(createSizedArray(arr.length)); - } - return { - double - }; - }(); - const poolFactory = /* @__PURE__ */ function() { - return function(initialLength, _create, _release) { - var _length = 0; - var _maxLength = initialLength; - var pool = createSizedArray(_maxLength); - var ob2 = { - newElement, - release - }; - function newElement() { - var element; - if (_length) { - _length -= 1; - element = pool[_length]; - } else { - element = _create(); - } - return element; - } - function release(element) { - if (_length === _maxLength) { - pool = pooling.double(pool); - _maxLength *= 2; - } - if (_release) { - _release(element); - } - pool[_length] = element; - _length += 1; - } - return ob2; - }; - }(); - const bezierLengthPool = function() { - function create() { - return { - addedLength: 0, - percents: createTypedArray("float32", getDefaultCurveSegments()), - lengths: createTypedArray("float32", getDefaultCurveSegments()) - }; - } - return poolFactory(8, create); - }(); - const segmentsLengthPool = function() { - function create() { - return { - lengths: [], - totalLength: 0 - }; - } - function release(element) { - var i; - var len = element.lengths.length; - for (i = 0; i < len; i += 1) { - bezierLengthPool.release(element.lengths[i]); - } - element.lengths.length = 0; - } - return poolFactory(8, create, release); - }(); - const bez = bezFunction(); - const PropertyFactory = /* @__PURE__ */ function() { - var initFrame = initialDefaultFrame; - var mathAbs = Math.abs; - function interpolateValue(frameNum, caching) { - var offsetTime = this.offsetTime; - var newValue; - if (this.propType === "multidimensional") { - newValue = createTypedArray("float32", this.pv.length); - } - var iterationIndex = caching.lastIndex; - var i = iterationIndex; - var len = this.keyframes.length - 1; - var flag = true; - var keyData; - var nextKeyData; - var keyframeMetadata; - while (flag) { - keyData = this.keyframes[i]; - nextKeyData = this.keyframes[i + 1]; - if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) { - if (keyData.h) { - keyData = nextKeyData; - } - iterationIndex = 0; - break; - } - if (nextKeyData.t - offsetTime > frameNum) { - iterationIndex = i; - break; - } - if (i < len - 1) { - i += 1; - } else { - iterationIndex = 0; - flag = false; - } - } - keyframeMetadata = this.keyframesMetadata[i] || {}; - var k2; - var kLen; - var perc; - var jLen; - var j; - var fnc; - var nextKeyTime = nextKeyData.t - offsetTime; - var keyTime = keyData.t - offsetTime; - var endValue; - if (keyData.to) { - if (!keyframeMetadata.bezierData) { - keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti); - } - var bezierData = keyframeMetadata.bezierData; - if (frameNum >= nextKeyTime || frameNum < keyTime) { - var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0; - kLen = bezierData.points[ind].point.length; - for (k2 = 0; k2 < kLen; k2 += 1) { - newValue[k2] = bezierData.points[ind].point[k2]; - } - } else { - if (keyframeMetadata.__fnct) { - fnc = keyframeMetadata.__fnct; - } else { - fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get; - keyframeMetadata.__fnct = fnc; - } - perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime)); - var distanceInLine = bezierData.segmentLength * perc; - var segmentPerc; - var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0; - j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0; - flag = true; - jLen = bezierData.points.length; - while (flag) { - addedLength += bezierData.points[j].partialLength; - if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) { - kLen = bezierData.points[j].point.length; - for (k2 = 0; k2 < kLen; k2 += 1) { - newValue[k2] = bezierData.points[j].point[k2]; - } - break; - } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) { - segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength; - kLen = bezierData.points[j].point.length; - for (k2 = 0; k2 < kLen; k2 += 1) { - newValue[k2] = bezierData.points[j].point[k2] + (bezierData.points[j + 1].point[k2] - bezierData.points[j].point[k2]) * segmentPerc; - } - break; - } - if (j < jLen - 1) { - j += 1; - } else { - flag = false; - } - } - caching._lastPoint = j; - caching._lastAddedLength = addedLength - bezierData.points[j].partialLength; - caching._lastKeyframeIndex = i; - } - } else { - var outX; - var outY; - var inX; - var inY; - var keyValue; - len = keyData.s.length; - endValue = nextKeyData.s || keyData.e; - if (this.sh && keyData.h !== 1) { - if (frameNum >= nextKeyTime) { - newValue[0] = endValue[0]; - newValue[1] = endValue[1]; - newValue[2] = endValue[2]; - } else if (frameNum <= keyTime) { - newValue[0] = keyData.s[0]; - newValue[1] = keyData.s[1]; - newValue[2] = keyData.s[2]; - } else { - var quatStart = createQuaternion(keyData.s); - var quatEnd = createQuaternion(endValue); - var time2 = (frameNum - keyTime) / (nextKeyTime - keyTime); - quaternionToEuler(newValue, slerp(quatStart, quatEnd, time2)); - } - } else { - for (i = 0; i < len; i += 1) { - if (keyData.h !== 1) { - if (frameNum >= nextKeyTime) { - perc = 1; - } else if (frameNum < keyTime) { - perc = 0; - } else { - if (keyData.o.x.constructor === Array) { - if (!keyframeMetadata.__fnct) { - keyframeMetadata.__fnct = []; - } - if (!keyframeMetadata.__fnct[i]) { - outX = keyData.o.x[i] === void 0 ? keyData.o.x[0] : keyData.o.x[i]; - outY = keyData.o.y[i] === void 0 ? keyData.o.y[0] : keyData.o.y[i]; - inX = keyData.i.x[i] === void 0 ? keyData.i.x[0] : keyData.i.x[i]; - inY = keyData.i.y[i] === void 0 ? keyData.i.y[0] : keyData.i.y[i]; - fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get; - keyframeMetadata.__fnct[i] = fnc; - } else { - fnc = keyframeMetadata.__fnct[i]; - } - } else if (!keyframeMetadata.__fnct) { - outX = keyData.o.x; - outY = keyData.o.y; - inX = keyData.i.x; - inY = keyData.i.y; - fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get; - keyData.keyframeMetadata = fnc; - } else { - fnc = keyframeMetadata.__fnct; - } - perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime)); - } - } - endValue = nextKeyData.s || keyData.e; - keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc; - if (this.propType === "multidimensional") { - newValue[i] = keyValue; - } else { - newValue = keyValue; - } - } - } - } - caching.lastIndex = iterationIndex; - return newValue; - } - function slerp(a2, b3, t3) { - var out = []; - var ax = a2[0]; - var ay = a2[1]; - var az = a2[2]; - var aw = a2[3]; - var bx = b3[0]; - var by = b3[1]; - var bz = b3[2]; - var bw = b3[3]; - var omega; - var cosom; - var sinom; - var scale0; - var scale1; - cosom = ax * bx + ay * by + az * bz + aw * bw; - if (cosom < 0) { - cosom = -cosom; - bx = -bx; - by = -by; - bz = -bz; - bw = -bw; - } - if (1 - cosom > 1e-6) { - omega = Math.acos(cosom); - sinom = Math.sin(omega); - scale0 = Math.sin((1 - t3) * omega) / sinom; - scale1 = Math.sin(t3 * omega) / sinom; - } else { - scale0 = 1 - t3; - scale1 = t3; - } - out[0] = scale0 * ax + scale1 * bx; - out[1] = scale0 * ay + scale1 * by; - out[2] = scale0 * az + scale1 * bz; - out[3] = scale0 * aw + scale1 * bw; - return out; - } - function quaternionToEuler(out, quat) { - var qx = quat[0]; - var qy = quat[1]; - var qz = quat[2]; - var qw = quat[3]; - var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz); - var attitude = Math.asin(2 * qx * qy + 2 * qz * qw); - var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz); - out[0] = heading / degToRads; - out[1] = attitude / degToRads; - out[2] = bank / degToRads; - } - function createQuaternion(values2) { - var heading = values2[0] * degToRads; - var attitude = values2[1] * degToRads; - var bank = values2[2] * degToRads; - var c1 = Math.cos(heading / 2); - var c2 = Math.cos(attitude / 2); - var c3 = Math.cos(bank / 2); - var s1 = Math.sin(heading / 2); - var s2 = Math.sin(attitude / 2); - var s3 = Math.sin(bank / 2); - var w = c1 * c2 * c3 - s1 * s2 * s3; - var x2 = s1 * s2 * c3 + c1 * c2 * s3; - var y2 = s1 * c2 * c3 + c1 * s2 * s3; - var z = c1 * s2 * c3 - s1 * c2 * s3; - return [x2, y2, z, w]; - } - function getValueAtCurrentTime() { - var frameNum = this.comp.renderedFrame - this.offsetTime; - var initTime = this.keyframes[0].t - this.offsetTime; - var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime; - if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) { - if (this._caching.lastFrame >= frameNum) { - this._caching._lastKeyframeIndex = -1; - this._caching.lastIndex = 0; - } - var renderResult = this.interpolateValue(frameNum, this._caching); - this.pv = renderResult; - } - this._caching.lastFrame = frameNum; - return this.pv; - } - function setVValue(val2) { - var multipliedValue; - if (this.propType === "unidimensional") { - multipliedValue = val2 * this.mult; - if (mathAbs(this.v - multipliedValue) > 1e-5) { - this.v = multipliedValue; - this._mdf = true; - } - } else { - var i = 0; - var len = this.v.length; - while (i < len) { - multipliedValue = val2[i] * this.mult; - if (mathAbs(this.v[i] - multipliedValue) > 1e-5) { - this.v[i] = multipliedValue; - this._mdf = true; - } - i += 1; - } - } - } - function processEffectsSequence() { - if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) { - return; - } - if (this.lock) { - this.setVValue(this.pv); - return; - } - this.lock = true; - this._mdf = this._isFirstFrame; - var i; - var len = this.effectsSequence.length; - var finalValue = this.kf ? this.pv : this.data.k; - for (i = 0; i < len; i += 1) { - finalValue = this.effectsSequence[i](finalValue); - } - this.setVValue(finalValue); - this._isFirstFrame = false; - this.lock = false; - this.frameId = this.elem.globalData.frameId; - } - function addEffect(effectFunction) { - this.effectsSequence.push(effectFunction); - this.container.addDynamicProperty(this); - } - function ValueProperty(elem2, data2, mult, container) { - this.propType = "unidimensional"; - this.mult = mult || 1; - this.data = data2; - this.v = mult ? data2.k * mult : data2.k; - this.pv = data2.k; - this._mdf = false; - this.elem = elem2; - this.container = container; - this.comp = elem2.comp; - this.k = false; - this.kf = false; - this.vel = 0; - this.effectsSequence = []; - this._isFirstFrame = true; - this.getValue = processEffectsSequence; - this.setVValue = setVValue; - this.addEffect = addEffect; - } - function MultiDimensionalProperty(elem2, data2, mult, container) { - this.propType = "multidimensional"; - this.mult = mult || 1; - this.data = data2; - this._mdf = false; - this.elem = elem2; - this.container = container; - this.comp = elem2.comp; - this.k = false; - this.kf = false; - this.frameId = -1; - var i; - var len = data2.k.length; - this.v = createTypedArray("float32", len); - this.pv = createTypedArray("float32", len); - this.vel = createTypedArray("float32", len); - for (i = 0; i < len; i += 1) { - this.v[i] = data2.k[i] * this.mult; - this.pv[i] = data2.k[i]; - } - this._isFirstFrame = true; - this.effectsSequence = []; - this.getValue = processEffectsSequence; - this.setVValue = setVValue; - this.addEffect = addEffect; - } - function KeyframedValueProperty(elem2, data2, mult, container) { - this.propType = "unidimensional"; - this.keyframes = data2.k; - this.keyframesMetadata = []; - this.offsetTime = elem2.data.st; - this.frameId = -1; - this._caching = { - lastFrame: initFrame, - lastIndex: 0, - value: 0, - _lastKeyframeIndex: -1 - }; - this.k = true; - this.kf = true; - this.data = data2; - this.mult = mult || 1; - this.elem = elem2; - this.container = container; - this.comp = elem2.comp; - this.v = initFrame; - this.pv = initFrame; - this._isFirstFrame = true; - this.getValue = processEffectsSequence; - this.setVValue = setVValue; - this.interpolateValue = interpolateValue; - this.effectsSequence = [getValueAtCurrentTime.bind(this)]; - this.addEffect = addEffect; - } - function KeyframedMultidimensionalProperty(elem2, data2, mult, container) { - this.propType = "multidimensional"; - var i; - var len = data2.k.length; - var s; - var e; - var to; - var ti; - for (i = 0; i < len - 1; i += 1) { - if (data2.k[i].to && data2.k[i].s && data2.k[i + 1] && data2.k[i + 1].s) { - s = data2.k[i].s; - e = data2.k[i + 1].s; - to = data2.k[i].to; - ti = data2.k[i].ti; - if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) { - data2.k[i].to = null; - data2.k[i].ti = null; - } - if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) { - if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) { - data2.k[i].to = null; - data2.k[i].ti = null; - } - } - } - } - this.effectsSequence = [getValueAtCurrentTime.bind(this)]; - this.data = data2; - this.keyframes = data2.k; - this.keyframesMetadata = []; - this.offsetTime = elem2.data.st; - this.k = true; - this.kf = true; - this._isFirstFrame = true; - this.mult = mult || 1; - this.elem = elem2; - this.container = container; - this.comp = elem2.comp; - this.getValue = processEffectsSequence; - this.setVValue = setVValue; - this.interpolateValue = interpolateValue; - this.frameId = -1; - var arrLen = data2.k[0].s.length; - this.v = createTypedArray("float32", arrLen); - this.pv = createTypedArray("float32", arrLen); - for (i = 0; i < arrLen; i += 1) { - this.v[i] = initFrame; - this.pv[i] = initFrame; - } - this._caching = { lastFrame: initFrame, lastIndex: 0, value: createTypedArray("float32", arrLen) }; - this.addEffect = addEffect; - } - function getProp(elem2, data2, type, mult, container) { - var p2; - if (!data2.k.length) { - p2 = new ValueProperty(elem2, data2, mult, container); - } else if (typeof data2.k[0] === "number") { - p2 = new MultiDimensionalProperty(elem2, data2, mult, container); - } else { - switch (type) { - case 0: - p2 = new KeyframedValueProperty(elem2, data2, mult, container); - break; - case 1: - p2 = new KeyframedMultidimensionalProperty(elem2, data2, mult, container); - break; - default: - break; - } - } - if (p2.effectsSequence.length) { - container.addDynamicProperty(p2); - } - return p2; - } - var ob2 = { - getProp - }; - return ob2; - }(); - DynamicPropertyContainer.prototype = { - addDynamicProperty: function(prop) { - if (this.dynamicProperties.indexOf(prop) === -1) { - this.dynamicProperties.push(prop); - this.container.addDynamicProperty(this); - this._isAnimated = true; - } - }, - iterateDynamicProperties: function() { - this._mdf = false; - var i; - var len = this.dynamicProperties.length; - for (i = 0; i < len; i += 1) { - this.dynamicProperties[i].getValue(); - if (this.dynamicProperties[i]._mdf) { - this._mdf = true; - } - } - }, - initDynamicPropertyContainer: function(container) { - this.container = container; - this.dynamicProperties = []; - this._mdf = false; - this._isAnimated = false; - } - }; - const pointPool = function() { - function create() { - return createTypedArray("float32", 2); - } - return poolFactory(8, create); - }(); - ShapePath.prototype.setPathData = function(closed, len) { - this.c = closed; - this.setLength(len); - var i = 0; - while (i < len) { - this.v[i] = pointPool.newElement(); - this.o[i] = pointPool.newElement(); - this.i[i] = pointPool.newElement(); - i += 1; - } - }; - ShapePath.prototype.setLength = function(len) { - while (this._maxLength < len) { - this.doubleArrayLength(); - } - this._length = len; - }; - ShapePath.prototype.doubleArrayLength = function() { - this.v = this.v.concat(createSizedArray(this._maxLength)); - this.i = this.i.concat(createSizedArray(this._maxLength)); - this.o = this.o.concat(createSizedArray(this._maxLength)); - this._maxLength *= 2; - }; - ShapePath.prototype.setXYAt = function(x2, y2, type, pos, replace) { - var arr; - this._length = Math.max(this._length, pos + 1); - if (this._length >= this._maxLength) { - this.doubleArrayLength(); - } - switch (type) { - case "v": - arr = this.v; - break; - case "i": - arr = this.i; - break; - case "o": - arr = this.o; - break; - default: - arr = []; - break; - } - if (!arr[pos] || arr[pos] && !replace) { - arr[pos] = pointPool.newElement(); - } - arr[pos][0] = x2; - arr[pos][1] = y2; - }; - ShapePath.prototype.setTripleAt = function(vX, vY, oX, oY, iX, iY, pos, replace) { - this.setXYAt(vX, vY, "v", pos, replace); - this.setXYAt(oX, oY, "o", pos, replace); - this.setXYAt(iX, iY, "i", pos, replace); - }; - ShapePath.prototype.reverse = function() { - var newPath = new ShapePath(); - newPath.setPathData(this.c, this._length); - var vertices = this.v; - var outPoints = this.o; - var inPoints = this.i; - var init = 0; - if (this.c) { - newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false); - init = 1; - } - var cnt = this._length - 1; - var len = this._length; - var i; - for (i = init; i < len; i += 1) { - newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false); - cnt -= 1; - } - return newPath; - }; - const shapePool = function() { - function create() { - return new ShapePath(); - } - function release(shapePath) { - var len = shapePath._length; - var i; - for (i = 0; i < len; i += 1) { - pointPool.release(shapePath.v[i]); - pointPool.release(shapePath.i[i]); - pointPool.release(shapePath.o[i]); - shapePath.v[i] = null; - shapePath.i[i] = null; - shapePath.o[i] = null; - } - shapePath._length = 0; - shapePath.c = false; - } - function clone2(shape) { - var cloned = factory.newElement(); - var i; - var len = shape._length === void 0 ? shape.v.length : shape._length; - cloned.setLength(len); - cloned.c = shape.c; - for (i = 0; i < len; i += 1) { - cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i); - } - return cloned; - } - var factory = poolFactory(4, create, release); - factory.clone = clone2; - return factory; - }(); - ShapeCollection.prototype.addShape = function(shapeData) { - if (this._length === this._maxLength) { - this.shapes = this.shapes.concat(createSizedArray(this._maxLength)); - this._maxLength *= 2; - } - this.shapes[this._length] = shapeData; - this._length += 1; - }; - ShapeCollection.prototype.releaseShapes = function() { - var i; - for (i = 0; i < this._length; i += 1) { - shapePool.release(this.shapes[i]); - } - this._length = 0; - }; - const shapeCollectionPool = function() { - var ob2 = { - newShapeCollection, - release - }; - var _length = 0; - var _maxLength = 4; - var pool = createSizedArray(_maxLength); - function newShapeCollection() { - var shapeCollection; - if (_length) { - _length -= 1; - shapeCollection = pool[_length]; - } else { - shapeCollection = new ShapeCollection(); - } - return shapeCollection; - } - function release(shapeCollection) { - var i; - var len = shapeCollection._length; - for (i = 0; i < len; i += 1) { - shapePool.release(shapeCollection.shapes[i]); - } - shapeCollection._length = 0; - if (_length === _maxLength) { - pool = pooling.double(pool); - _maxLength *= 2; - } - pool[_length] = shapeCollection; - _length += 1; - } - return ob2; - }(); - const ShapePropertyFactory = function() { - var initFrame = -999999; - function interpolateShape(frameNum, previousValue, caching) { - var iterationIndex = caching.lastIndex; - var keyPropS; - var keyPropE; - var isHold; - var j; - var k2; - var jLen; - var kLen; - var perc; - var vertexValue; - var kf = this.keyframes; - if (frameNum < kf[0].t - this.offsetTime) { - keyPropS = kf[0].s[0]; - isHold = true; - iterationIndex = 0; - } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) { - keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0]; - isHold = true; - } else { - var i = iterationIndex; - var len = kf.length - 1; - var flag = true; - var keyData; - var nextKeyData; - var keyframeMetadata; - while (flag) { - keyData = kf[i]; - nextKeyData = kf[i + 1]; - if (nextKeyData.t - this.offsetTime > frameNum) { - break; - } - if (i < len - 1) { - i += 1; - } else { - flag = false; - } - } - keyframeMetadata = this.keyframesMetadata[i] || {}; - isHold = keyData.h === 1; - iterationIndex = i; - if (!isHold) { - if (frameNum >= nextKeyData.t - this.offsetTime) { - perc = 1; - } else if (frameNum < keyData.t - this.offsetTime) { - perc = 0; - } else { - var fnc; - if (keyframeMetadata.__fnct) { - fnc = keyframeMetadata.__fnct; - } else { - fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get; - keyframeMetadata.__fnct = fnc; - } - perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime))); - } - keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0]; - } - keyPropS = keyData.s[0]; - } - jLen = previousValue._length; - kLen = keyPropS.i[0].length; - caching.lastIndex = iterationIndex; - for (j = 0; j < jLen; j += 1) { - for (k2 = 0; k2 < kLen; k2 += 1) { - vertexValue = isHold ? keyPropS.i[j][k2] : keyPropS.i[j][k2] + (keyPropE.i[j][k2] - keyPropS.i[j][k2]) * perc; - previousValue.i[j][k2] = vertexValue; - vertexValue = isHold ? keyPropS.o[j][k2] : keyPropS.o[j][k2] + (keyPropE.o[j][k2] - keyPropS.o[j][k2]) * perc; - previousValue.o[j][k2] = vertexValue; - vertexValue = isHold ? keyPropS.v[j][k2] : keyPropS.v[j][k2] + (keyPropE.v[j][k2] - keyPropS.v[j][k2]) * perc; - previousValue.v[j][k2] = vertexValue; - } - } - } - function interpolateShapeCurrentTime() { - var frameNum = this.comp.renderedFrame - this.offsetTime; - var initTime = this.keyframes[0].t - this.offsetTime; - var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime; - var lastFrame = this._caching.lastFrame; - if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) { - this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0; - this.interpolateShape(frameNum, this.pv, this._caching); - } - this._caching.lastFrame = frameNum; - return this.pv; - } - function resetShape() { - this.paths = this.localShapeCollection; - } - function shapesEqual(shape1, shape2) { - if (shape1._length !== shape2._length || shape1.c !== shape2.c) { - return false; - } - var i; - var len = shape1._length; - for (i = 0; i < len; i += 1) { - if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) { - return false; - } - } - return true; - } - function setVValue(newPath) { - if (!shapesEqual(this.v, newPath)) { - this.v = shapePool.clone(newPath); - this.localShapeCollection.releaseShapes(); - this.localShapeCollection.addShape(this.v); - this._mdf = true; - this.paths = this.localShapeCollection; - } - } - function processEffectsSequence() { - if (this.elem.globalData.frameId === this.frameId) { - return; - } - if (!this.effectsSequence.length) { - this._mdf = false; - return; - } - if (this.lock) { - this.setVValue(this.pv); - return; - } - this.lock = true; - this._mdf = false; - var finalValue; - if (this.kf) { - finalValue = this.pv; - } else if (this.data.ks) { - finalValue = this.data.ks.k; - } else { - finalValue = this.data.pt.k; - } - var i; - var len = this.effectsSequence.length; - for (i = 0; i < len; i += 1) { - finalValue = this.effectsSequence[i](finalValue); - } - this.setVValue(finalValue); - this.lock = false; - this.frameId = this.elem.globalData.frameId; - } - function ShapeProperty(elem2, data2, type) { - this.propType = "shape"; - this.comp = elem2.comp; - this.container = elem2; - this.elem = elem2; - this.data = data2; - this.k = false; - this.kf = false; - this._mdf = false; - var pathData = type === 3 ? data2.pt.k : data2.ks.k; - this.v = shapePool.clone(pathData); - this.pv = shapePool.clone(this.v); - this.localShapeCollection = shapeCollectionPool.newShapeCollection(); - this.paths = this.localShapeCollection; - this.paths.addShape(this.v); - this.reset = resetShape; - this.effectsSequence = []; - } - function addEffect(effectFunction) { - this.effectsSequence.push(effectFunction); - this.container.addDynamicProperty(this); - } - ShapeProperty.prototype.interpolateShape = interpolateShape; - ShapeProperty.prototype.getValue = processEffectsSequence; - ShapeProperty.prototype.setVValue = setVValue; - ShapeProperty.prototype.addEffect = addEffect; - function KeyframedShapeProperty(elem2, data2, type) { - this.propType = "shape"; - this.comp = elem2.comp; - this.elem = elem2; - this.container = elem2; - this.offsetTime = elem2.data.st; - this.keyframes = type === 3 ? data2.pt.k : data2.ks.k; - this.keyframesMetadata = []; - this.k = true; - this.kf = true; - var len = this.keyframes[0].s[0].i.length; - this.v = shapePool.newElement(); - this.v.setPathData(this.keyframes[0].s[0].c, len); - this.pv = shapePool.clone(this.v); - this.localShapeCollection = shapeCollectionPool.newShapeCollection(); - this.paths = this.localShapeCollection; - this.paths.addShape(this.v); - this.lastFrame = initFrame; - this.reset = resetShape; - this._caching = { lastFrame: initFrame, lastIndex: 0 }; - this.effectsSequence = [interpolateShapeCurrentTime.bind(this)]; - } - KeyframedShapeProperty.prototype.getValue = processEffectsSequence; - KeyframedShapeProperty.prototype.interpolateShape = interpolateShape; - KeyframedShapeProperty.prototype.setVValue = setVValue; - KeyframedShapeProperty.prototype.addEffect = addEffect; - var EllShapeProperty = function() { - var cPoint = roundCorner; - function EllShapePropertyFactory(elem2, data2) { - this.v = shapePool.newElement(); - this.v.setPathData(true, 4); - this.localShapeCollection = shapeCollectionPool.newShapeCollection(); - this.paths = this.localShapeCollection; - this.localShapeCollection.addShape(this.v); - this.d = data2.d; - this.elem = elem2; - this.comp = elem2.comp; - this.frameId = -1; - this.initDynamicPropertyContainer(elem2); - this.p = PropertyFactory.getProp(elem2, data2.p, 1, 0, this); - this.s = PropertyFactory.getProp(elem2, data2.s, 1, 0, this); - if (this.dynamicProperties.length) { - this.k = true; - } else { - this.k = false; - this.convertEllToPath(); - } - } - EllShapePropertyFactory.prototype = { - reset: resetShape, - getValue: function() { - if (this.elem.globalData.frameId === this.frameId) { - return; - } - this.frameId = this.elem.globalData.frameId; - this.iterateDynamicProperties(); - if (this._mdf) { - this.convertEllToPath(); - } - }, - convertEllToPath: function() { - var p0 = this.p.v[0]; - var p1 = this.p.v[1]; - var s0 = this.s.v[0] / 2; - var s1 = this.s.v[1] / 2; - var _cw = this.d !== 3; - var _v = this.v; - _v.v[0][0] = p0; - _v.v[0][1] = p1 - s1; - _v.v[1][0] = _cw ? p0 + s0 : p0 - s0; - _v.v[1][1] = p1; - _v.v[2][0] = p0; - _v.v[2][1] = p1 + s1; - _v.v[3][0] = _cw ? p0 - s0 : p0 + s0; - _v.v[3][1] = p1; - _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint; - _v.i[0][1] = p1 - s1; - _v.i[1][0] = _cw ? p0 + s0 : p0 - s0; - _v.i[1][1] = p1 - s1 * cPoint; - _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint; - _v.i[2][1] = p1 + s1; - _v.i[3][0] = _cw ? p0 - s0 : p0 + s0; - _v.i[3][1] = p1 + s1 * cPoint; - _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint; - _v.o[0][1] = p1 - s1; - _v.o[1][0] = _cw ? p0 + s0 : p0 - s0; - _v.o[1][1] = p1 + s1 * cPoint; - _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint; - _v.o[2][1] = p1 + s1; - _v.o[3][0] = _cw ? p0 - s0 : p0 + s0; - _v.o[3][1] = p1 - s1 * cPoint; - } - }; - extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory); - return EllShapePropertyFactory; - }(); - var StarShapeProperty = function() { - function StarShapePropertyFactory(elem2, data2) { - this.v = shapePool.newElement(); - this.v.setPathData(true, 0); - this.elem = elem2; - this.comp = elem2.comp; - this.data = data2; - this.frameId = -1; - this.d = data2.d; - this.initDynamicPropertyContainer(elem2); - if (data2.sy === 1) { - this.ir = PropertyFactory.getProp(elem2, data2.ir, 0, 0, this); - this.is = PropertyFactory.getProp(elem2, data2.is, 0, 0.01, this); - this.convertToPath = this.convertStarToPath; - } else { - this.convertToPath = this.convertPolygonToPath; - } - this.pt = PropertyFactory.getProp(elem2, data2.pt, 0, 0, this); - this.p = PropertyFactory.getProp(elem2, data2.p, 1, 0, this); - this.r = PropertyFactory.getProp(elem2, data2.r, 0, degToRads, this); - this.or = PropertyFactory.getProp(elem2, data2.or, 0, 0, this); - this.os = PropertyFactory.getProp(elem2, data2.os, 0, 0.01, this); - this.localShapeCollection = shapeCollectionPool.newShapeCollection(); - this.localShapeCollection.addShape(this.v); - this.paths = this.localShapeCollection; - if (this.dynamicProperties.length) { - this.k = true; - } else { - this.k = false; - this.convertToPath(); - } - } - StarShapePropertyFactory.prototype = { - reset: resetShape, - getValue: function() { - if (this.elem.globalData.frameId === this.frameId) { - return; - } - this.frameId = this.elem.globalData.frameId; - this.iterateDynamicProperties(); - if (this._mdf) { - this.convertToPath(); - } - }, - convertStarToPath: function() { - var numPts = Math.floor(this.pt.v) * 2; - var angle = Math.PI * 2 / numPts; - var longFlag = true; - var longRad = this.or.v; - var shortRad = this.ir.v; - var longRound = this.os.v; - var shortRound = this.is.v; - var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2); - var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2); - var i; - var rad; - var roundness; - var perimSegment; - var currentAng = -Math.PI / 2; - currentAng += this.r.v; - var dir = this.data.d === 3 ? -1 : 1; - this.v._length = 0; - for (i = 0; i < numPts; i += 1) { - rad = longFlag ? longRad : shortRad; - roundness = longFlag ? longRound : shortRound; - perimSegment = longFlag ? longPerimSegment : shortPerimSegment; - var x2 = rad * Math.cos(currentAng); - var y2 = rad * Math.sin(currentAng); - var ox = x2 === 0 && y2 === 0 ? 0 : y2 / Math.sqrt(x2 * x2 + y2 * y2); - var oy = x2 === 0 && y2 === 0 ? 0 : -x2 / Math.sqrt(x2 * x2 + y2 * y2); - x2 += +this.p.v[0]; - y2 += +this.p.v[1]; - this.v.setTripleAt(x2, y2, x2 - ox * perimSegment * roundness * dir, y2 - oy * perimSegment * roundness * dir, x2 + ox * perimSegment * roundness * dir, y2 + oy * perimSegment * roundness * dir, i, true); - longFlag = !longFlag; - currentAng += angle * dir; - } - }, - convertPolygonToPath: function() { - var numPts = Math.floor(this.pt.v); - var angle = Math.PI * 2 / numPts; - var rad = this.or.v; - var roundness = this.os.v; - var perimSegment = 2 * Math.PI * rad / (numPts * 4); - var i; - var currentAng = -Math.PI * 0.5; - var dir = this.data.d === 3 ? -1 : 1; - currentAng += this.r.v; - this.v._length = 0; - for (i = 0; i < numPts; i += 1) { - var x2 = rad * Math.cos(currentAng); - var y2 = rad * Math.sin(currentAng); - var ox = x2 === 0 && y2 === 0 ? 0 : y2 / Math.sqrt(x2 * x2 + y2 * y2); - var oy = x2 === 0 && y2 === 0 ? 0 : -x2 / Math.sqrt(x2 * x2 + y2 * y2); - x2 += +this.p.v[0]; - y2 += +this.p.v[1]; - this.v.setTripleAt(x2, y2, x2 - ox * perimSegment * roundness * dir, y2 - oy * perimSegment * roundness * dir, x2 + ox * perimSegment * roundness * dir, y2 + oy * perimSegment * roundness * dir, i, true); - currentAng += angle * dir; - } - this.paths.length = 0; - this.paths[0] = this.v; - } - }; - extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory); - return StarShapePropertyFactory; - }(); - var RectShapeProperty = function() { - function RectShapePropertyFactory(elem2, data2) { - this.v = shapePool.newElement(); - this.v.c = true; - this.localShapeCollection = shapeCollectionPool.newShapeCollection(); - this.localShapeCollection.addShape(this.v); - this.paths = this.localShapeCollection; - this.elem = elem2; - this.comp = elem2.comp; - this.frameId = -1; - this.d = data2.d; - this.initDynamicPropertyContainer(elem2); - this.p = PropertyFactory.getProp(elem2, data2.p, 1, 0, this); - this.s = PropertyFactory.getProp(elem2, data2.s, 1, 0, this); - this.r = PropertyFactory.getProp(elem2, data2.r, 0, 0, this); - if (this.dynamicProperties.length) { - this.k = true; - } else { - this.k = false; - this.convertRectToPath(); - } - } - RectShapePropertyFactory.prototype = { - convertRectToPath: function() { - var p0 = this.p.v[0]; - var p1 = this.p.v[1]; - var v0 = this.s.v[0] / 2; - var v12 = this.s.v[1] / 2; - var round = bmMin(v0, v12, this.r.v); - var cPoint = round * (1 - roundCorner); - this.v._length = 0; - if (this.d === 2 || this.d === 1) { - this.v.setTripleAt(p0 + v0, p1 - v12 + round, p0 + v0, p1 - v12 + round, p0 + v0, p1 - v12 + cPoint, 0, true); - this.v.setTripleAt(p0 + v0, p1 + v12 - round, p0 + v0, p1 + v12 - cPoint, p0 + v0, p1 + v12 - round, 1, true); - if (round !== 0) { - this.v.setTripleAt(p0 + v0 - round, p1 + v12, p0 + v0 - round, p1 + v12, p0 + v0 - cPoint, p1 + v12, 2, true); - this.v.setTripleAt(p0 - v0 + round, p1 + v12, p0 - v0 + cPoint, p1 + v12, p0 - v0 + round, p1 + v12, 3, true); - this.v.setTripleAt(p0 - v0, p1 + v12 - round, p0 - v0, p1 + v12 - round, p0 - v0, p1 + v12 - cPoint, 4, true); - this.v.setTripleAt(p0 - v0, p1 - v12 + round, p0 - v0, p1 - v12 + cPoint, p0 - v0, p1 - v12 + round, 5, true); - this.v.setTripleAt(p0 - v0 + round, p1 - v12, p0 - v0 + round, p1 - v12, p0 - v0 + cPoint, p1 - v12, 6, true); - this.v.setTripleAt(p0 + v0 - round, p1 - v12, p0 + v0 - cPoint, p1 - v12, p0 + v0 - round, p1 - v12, 7, true); - } else { - this.v.setTripleAt(p0 - v0, p1 + v12, p0 - v0 + cPoint, p1 + v12, p0 - v0, p1 + v12, 2); - this.v.setTripleAt(p0 - v0, p1 - v12, p0 - v0, p1 - v12 + cPoint, p0 - v0, p1 - v12, 3); - } - } else { - this.v.setTripleAt(p0 + v0, p1 - v12 + round, p0 + v0, p1 - v12 + cPoint, p0 + v0, p1 - v12 + round, 0, true); - if (round !== 0) { - this.v.setTripleAt(p0 + v0 - round, p1 - v12, p0 + v0 - round, p1 - v12, p0 + v0 - cPoint, p1 - v12, 1, true); - this.v.setTripleAt(p0 - v0 + round, p1 - v12, p0 - v0 + cPoint, p1 - v12, p0 - v0 + round, p1 - v12, 2, true); - this.v.setTripleAt(p0 - v0, p1 - v12 + round, p0 - v0, p1 - v12 + round, p0 - v0, p1 - v12 + cPoint, 3, true); - this.v.setTripleAt(p0 - v0, p1 + v12 - round, p0 - v0, p1 + v12 - cPoint, p0 - v0, p1 + v12 - round, 4, true); - this.v.setTripleAt(p0 - v0 + round, p1 + v12, p0 - v0 + round, p1 + v12, p0 - v0 + cPoint, p1 + v12, 5, true); - this.v.setTripleAt(p0 + v0 - round, p1 + v12, p0 + v0 - cPoint, p1 + v12, p0 + v0 - round, p1 + v12, 6, true); - this.v.setTripleAt(p0 + v0, p1 + v12 - round, p0 + v0, p1 + v12 - round, p0 + v0, p1 + v12 - cPoint, 7, true); - } else { - this.v.setTripleAt(p0 - v0, p1 - v12, p0 - v0 + cPoint, p1 - v12, p0 - v0, p1 - v12, 1, true); - this.v.setTripleAt(p0 - v0, p1 + v12, p0 - v0, p1 + v12 - cPoint, p0 - v0, p1 + v12, 2, true); - this.v.setTripleAt(p0 + v0, p1 + v12, p0 + v0 - cPoint, p1 + v12, p0 + v0, p1 + v12, 3, true); - } - } - }, - getValue: function() { - if (this.elem.globalData.frameId === this.frameId) { - return; - } - this.frameId = this.elem.globalData.frameId; - this.iterateDynamicProperties(); - if (this._mdf) { - this.convertRectToPath(); - } - }, - reset: resetShape - }; - extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory); - return RectShapePropertyFactory; - }(); - function getShapeProp(elem2, data2, type) { - var prop; - if (type === 3 || type === 4) { - var dataProp = type === 3 ? data2.pt : data2.ks; - var keys2 = dataProp.k; - if (keys2.length) { - prop = new KeyframedShapeProperty(elem2, data2, type); - } else { - prop = new ShapeProperty(elem2, data2, type); - } - } else if (type === 5) { - prop = new RectShapeProperty(elem2, data2); - } else if (type === 6) { - prop = new EllShapeProperty(elem2, data2); - } else if (type === 7) { - prop = new StarShapeProperty(elem2, data2); - } - if (prop.k) { - elem2.addDynamicProperty(prop); - } - return prop; - } - function getConstructorFunction() { - return ShapeProperty; - } - function getKeyframedConstructorFunction() { - return KeyframedShapeProperty; - } - var ob2 = {}; - ob2.getShapeProp = getShapeProp; - ob2.getConstructorFunction = getConstructorFunction; - ob2.getKeyframedConstructorFunction = getKeyframedConstructorFunction; - return ob2; - }(); - const Matrix = /* @__PURE__ */ function() { - var _cos = Math.cos; - var _sin = Math.sin; - var _tan = Math.tan; - var _rnd = Math.round; - function reset() { - this.props[0] = 1; - this.props[1] = 0; - this.props[2] = 0; - this.props[3] = 0; - this.props[4] = 0; - this.props[5] = 1; - this.props[6] = 0; - this.props[7] = 0; - this.props[8] = 0; - this.props[9] = 0; - this.props[10] = 1; - this.props[11] = 0; - this.props[12] = 0; - this.props[13] = 0; - this.props[14] = 0; - this.props[15] = 1; - return this; - } - function rotate(angle) { - if (angle === 0) { - return this; - } - var mCos = _cos(angle); - var mSin = _sin(angle); - return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); - } - function rotateX(angle) { - if (angle === 0) { - return this; - } - var mCos = _cos(angle); - var mSin = _sin(angle); - return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1); - } - function rotateY(angle) { - if (angle === 0) { - return this; - } - var mCos = _cos(angle); - var mSin = _sin(angle); - return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1); - } - function rotateZ(angle) { - if (angle === 0) { - return this; - } - var mCos = _cos(angle); - var mSin = _sin(angle); - return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); - } - function shear(sx, sy) { - return this._t(1, sy, sx, 1, 0, 0); - } - function skew(ax, ay) { - return this.shear(_tan(ax), _tan(ay)); - } - function skewFromAxis(ax, angle) { - var mCos = _cos(angle); - var mSin = _sin(angle); - return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); - } - function scale2(sx, sy, sz) { - if (!sz && sz !== 0) { - sz = 1; - } - if (sx === 1 && sy === 1 && sz === 1) { - return this; - } - return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1); - } - function setTransform(a2, b3, c2, d, e, f, g2, h, i, j, k2, l2, m, n2, o, p2) { - this.props[0] = a2; - this.props[1] = b3; - this.props[2] = c2; - this.props[3] = d; - this.props[4] = e; - this.props[5] = f; - this.props[6] = g2; - this.props[7] = h; - this.props[8] = i; - this.props[9] = j; - this.props[10] = k2; - this.props[11] = l2; - this.props[12] = m; - this.props[13] = n2; - this.props[14] = o; - this.props[15] = p2; - return this; - } - function translate(tx, ty, tz) { - tz = tz || 0; - if (tx !== 0 || ty !== 0 || tz !== 0) { - return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1); - } - return this; - } - function transform2(a2, b22, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) { - var _p2 = this.props; - if (a2 === 1 && b22 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) { - _p2[12] = _p2[12] * a2 + _p2[15] * m2; - _p2[13] = _p2[13] * f2 + _p2[15] * n2; - _p2[14] = _p2[14] * k2 + _p2[15] * o2; - _p2[15] *= p2; - this._identityCalculated = false; - return this; - } - var a1 = _p2[0]; - var b1 = _p2[1]; - var c1 = _p2[2]; - var d1 = _p2[3]; - var e1 = _p2[4]; - var f1 = _p2[5]; - var g1 = _p2[6]; - var h1 = _p2[7]; - var i1 = _p2[8]; - var j1 = _p2[9]; - var k1 = _p2[10]; - var l1 = _p2[11]; - var m1 = _p2[12]; - var n1 = _p2[13]; - var o1 = _p2[14]; - var p1 = _p2[15]; - _p2[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2; - _p2[1] = a1 * b22 + b1 * f2 + c1 * j2 + d1 * n2; - _p2[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2; - _p2[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2; - _p2[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2; - _p2[5] = e1 * b22 + f1 * f2 + g1 * j2 + h1 * n2; - _p2[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2; - _p2[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2; - _p2[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2; - _p2[9] = i1 * b22 + j1 * f2 + k1 * j2 + l1 * n2; - _p2[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2; - _p2[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2; - _p2[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2; - _p2[13] = m1 * b22 + n1 * f2 + o1 * j2 + p1 * n2; - _p2[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2; - _p2[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2; - this._identityCalculated = false; - return this; - } - function isIdentity() { - if (!this._identityCalculated) { - this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1); - this._identityCalculated = true; - } - return this._identity; - } - function equals2(matr) { - var i = 0; - while (i < 16) { - if (matr.props[i] !== this.props[i]) { - return false; - } - i += 1; - } - return true; - } - function clone2(matr) { - var i; - for (i = 0; i < 16; i += 1) { - matr.props[i] = this.props[i]; - } - return matr; - } - function cloneFromProps(props) { - var i; - for (i = 0; i < 16; i += 1) { - this.props[i] = props[i]; - } - } - function applyToPoint(x2, y2, z) { - return { - x: x2 * this.props[0] + y2 * this.props[4] + z * this.props[8] + this.props[12], - y: x2 * this.props[1] + y2 * this.props[5] + z * this.props[9] + this.props[13], - z: x2 * this.props[2] + y2 * this.props[6] + z * this.props[10] + this.props[14] - }; - } - function applyToX(x2, y2, z) { - return x2 * this.props[0] + y2 * this.props[4] + z * this.props[8] + this.props[12]; - } - function applyToY(x2, y2, z) { - return x2 * this.props[1] + y2 * this.props[5] + z * this.props[9] + this.props[13]; - } - function applyToZ(x2, y2, z) { - return x2 * this.props[2] + y2 * this.props[6] + z * this.props[10] + this.props[14]; - } - function getInverseMatrix() { - var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4]; - var a2 = this.props[5] / determinant; - var b3 = -this.props[1] / determinant; - var c2 = -this.props[4] / determinant; - var d = this.props[0] / determinant; - var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant; - var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant; - var inverseMatrix = new Matrix(); - inverseMatrix.props[0] = a2; - inverseMatrix.props[1] = b3; - inverseMatrix.props[4] = c2; - inverseMatrix.props[5] = d; - inverseMatrix.props[12] = e; - inverseMatrix.props[13] = f; - return inverseMatrix; - } - function inversePoint(pt) { - var inverseMatrix = this.getInverseMatrix(); - return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0); - } - function inversePoints(pts) { - var i; - var len = pts.length; - var retPts = []; - for (i = 0; i < len; i += 1) { - retPts[i] = inversePoint(pts[i]); - } - return retPts; - } - function applyToTriplePoints(pt1, pt2, pt3) { - var arr = createTypedArray("float32", 6); - if (this.isIdentity()) { - arr[0] = pt1[0]; - arr[1] = pt1[1]; - arr[2] = pt2[0]; - arr[3] = pt2[1]; - arr[4] = pt3[0]; - arr[5] = pt3[1]; - } else { - var p0 = this.props[0]; - var p1 = this.props[1]; - var p4 = this.props[4]; - var p5 = this.props[5]; - var p12 = this.props[12]; - var p13 = this.props[13]; - arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12; - arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13; - arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12; - arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13; - arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12; - arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13; - } - return arr; - } - function applyToPointArray(x2, y2, z) { - var arr; - if (this.isIdentity()) { - arr = [x2, y2, z]; - } else { - arr = [ - x2 * this.props[0] + y2 * this.props[4] + z * this.props[8] + this.props[12], - x2 * this.props[1] + y2 * this.props[5] + z * this.props[9] + this.props[13], - x2 * this.props[2] + y2 * this.props[6] + z * this.props[10] + this.props[14] - ]; - } - return arr; - } - function applyToPointStringified(x2, y2) { - if (this.isIdentity()) { - return x2 + "," + y2; - } - var _p2 = this.props; - return Math.round((x2 * _p2[0] + y2 * _p2[4] + _p2[12]) * 100) / 100 + "," + Math.round((x2 * _p2[1] + y2 * _p2[5] + _p2[13]) * 100) / 100; - } - function toCSS() { - var i = 0; - var props = this.props; - var cssValue = "matrix3d("; - var v = 1e4; - while (i < 16) { - cssValue += _rnd(props[i] * v) / v; - cssValue += i === 15 ? ")" : ","; - i += 1; - } - return cssValue; - } - function roundMatrixProperty(val2) { - var v = 1e4; - if (val2 < 1e-6 && val2 > 0 || val2 > -1e-6 && val2 < 0) { - return _rnd(val2 * v) / v; - } - return val2; - } - function to2dCSS() { - var props = this.props; - var _a3 = roundMatrixProperty(props[0]); - var _b3 = roundMatrixProperty(props[1]); - var _c = roundMatrixProperty(props[4]); - var _d = roundMatrixProperty(props[5]); - var _e = roundMatrixProperty(props[12]); - var _f = roundMatrixProperty(props[13]); - return "matrix(" + _a3 + "," + _b3 + "," + _c + "," + _d + "," + _e + "," + _f + ")"; - } - return function() { - this.reset = reset; - this.rotate = rotate; - this.rotateX = rotateX; - this.rotateY = rotateY; - this.rotateZ = rotateZ; - this.skew = skew; - this.skewFromAxis = skewFromAxis; - this.shear = shear; - this.scale = scale2; - this.setTransform = setTransform; - this.translate = translate; - this.transform = transform2; - this.applyToPoint = applyToPoint; - this.applyToX = applyToX; - this.applyToY = applyToY; - this.applyToZ = applyToZ; - this.applyToPointArray = applyToPointArray; - this.applyToTriplePoints = applyToTriplePoints; - this.applyToPointStringified = applyToPointStringified; - this.toCSS = toCSS; - this.to2dCSS = to2dCSS; - this.clone = clone2; - this.cloneFromProps = cloneFromProps; - this.equals = equals2; - this.inversePoints = inversePoints; - this.inversePoint = inversePoint; - this.getInverseMatrix = getInverseMatrix; - this._t = this.transform; - this.isIdentity = isIdentity; - this._identity = true; - this._identityCalculated = false; - this.props = createTypedArray("float32", 16); - this.reset(); - }; - }(); - standalone = "__[STANDALONE]__"; - animationData = "__[ANIMATIONDATA]__"; - renderer = ""; - lottie.play = animationManager.play; - lottie.pause = animationManager.pause; - lottie.setLocationHref = setLocation; - lottie.togglePause = animationManager.togglePause; - lottie.setSpeed = animationManager.setSpeed; - lottie.setDirection = animationManager.setDirection; - lottie.stop = animationManager.stop; - lottie.searchAnimations = searchAnimations; - lottie.registerAnimation = animationManager.registerAnimation; - lottie.loadAnimation = loadAnimation; - lottie.setSubframeRendering = setSubframeRendering; - lottie.resize = animationManager.resize; - lottie.goToAndStop = animationManager.goToAndStop; - lottie.destroy = animationManager.destroy; - lottie.setQuality = setQuality; - lottie.inBrowser = inBrowser; - lottie.installPlugin = installPlugin; - lottie.freeze = animationManager.freeze; - lottie.unfreeze = animationManager.unfreeze; - lottie.setVolume = animationManager.setVolume; - lottie.mute = animationManager.mute; - lottie.unmute = animationManager.unmute; - lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations; - lottie.useWebWorker = setWebWorker; - lottie.setIDPrefix = setPrefix; - lottie.__getFactory = getFactory; - lottie.version = "[[BM_VERSION]]"; - queryString = ""; - if (standalone) { - scripts = document.getElementsByTagName("script"); - index2 = scripts.length - 1; - myScript = scripts[index2] || { - src: "" - }; - queryString = myScript.src ? myScript.src.replace(/^[^\?]+\??/, "") : ""; - renderer = getQueryVariable("renderer"); - } - readyStateCheckInterval = setInterval(checkReady, 100); - try { - if (!(typeof exports === "object" && typeof module !== "undefined") && !(typeof define === "function" && define.amd)) { - window.bodymovin = lottie; - } - } catch (err2) { - } - const ShapeModifiers = function() { - var ob2 = {}; - var modifiers = {}; - ob2.registerModifier = registerModifier; - ob2.getModifier = getModifier; - function registerModifier(nm, factory) { - if (!modifiers[nm]) { - modifiers[nm] = factory; - } - } - function getModifier(nm, elem2, data2) { - return new modifiers[nm](elem2, data2); - } - return ob2; - }(); - ShapeModifier.prototype.initModifierProperties = function() { - }; - ShapeModifier.prototype.addShapeToModifier = function() { - }; - ShapeModifier.prototype.addShape = function(data2) { - if (!this.closed) { - data2.sh.container.addDynamicProperty(data2.sh); - var shapeData = { shape: data2.sh, data: data2, localShapeCollection: shapeCollectionPool.newShapeCollection() }; - this.shapes.push(shapeData); - this.addShapeToModifier(shapeData); - if (this._isAnimated) { - data2.setAsAnimated(); - } - } - }; - ShapeModifier.prototype.init = function(elem2, data2) { - this.shapes = []; - this.elem = elem2; - this.initDynamicPropertyContainer(elem2); - this.initModifierProperties(elem2, data2); - this.frameId = initialDefaultFrame; - this.closed = false; - this.k = false; - if (this.dynamicProperties.length) { - this.k = true; - } else { - this.getValue(true); - } - }; - ShapeModifier.prototype.processKeys = function() { - if (this.elem.globalData.frameId === this.frameId) { - return; - } - this.frameId = this.elem.globalData.frameId; - this.iterateDynamicProperties(); - }; - extendPrototype([DynamicPropertyContainer], ShapeModifier); - extendPrototype([ShapeModifier], TrimModifier); - TrimModifier.prototype.initModifierProperties = function(elem2, data2) { - this.s = PropertyFactory.getProp(elem2, data2.s, 0, 0.01, this); - this.e = PropertyFactory.getProp(elem2, data2.e, 0, 0.01, this); - this.o = PropertyFactory.getProp(elem2, data2.o, 0, 0, this); - this.sValue = 0; - this.eValue = 0; - this.getValue = this.processKeys; - this.m = data2.m; - this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length; - }; - TrimModifier.prototype.addShapeToModifier = function(shapeData) { - shapeData.pathsData = []; - }; - TrimModifier.prototype.calculateShapeEdges = function(s, e, shapeLength, addedLength, totalModifierLength) { - var segments = []; - if (e <= 1) { - segments.push({ - s, - e - }); - } else if (s >= 1) { - segments.push({ - s: s - 1, - e: e - 1 - }); - } else { - segments.push({ - s, - e: 1 - }); - segments.push({ - s: 0, - e: e - 1 - }); - } - var shapeSegments = []; - var i; - var len = segments.length; - var segmentOb; - for (i = 0; i < len; i += 1) { - segmentOb = segments[i]; - if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) { - var shapeS; - var shapeE; - if (segmentOb.s * totalModifierLength <= addedLength) { - shapeS = 0; - } else { - shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength; - } - if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) { - shapeE = 1; - } else { - shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength; - } - shapeSegments.push([shapeS, shapeE]); - } - } - if (!shapeSegments.length) { - shapeSegments.push([0, 0]); - } - return shapeSegments; - }; - TrimModifier.prototype.releasePathsData = function(pathsData) { - var i; - var len = pathsData.length; - for (i = 0; i < len; i += 1) { - segmentsLengthPool.release(pathsData[i]); - } - pathsData.length = 0; - return pathsData; - }; - TrimModifier.prototype.processShapes = function(_isFirstFrame) { - var s; - var e; - if (this._mdf || _isFirstFrame) { - var o = this.o.v % 360 / 360; - if (o < 0) { - o += 1; - } - if (this.s.v > 1) { - s = 1 + o; - } else if (this.s.v < 0) { - s = 0 + o; - } else { - s = this.s.v + o; - } - if (this.e.v > 1) { - e = 1 + o; - } else if (this.e.v < 0) { - e = 0 + o; - } else { - e = this.e.v + o; - } - if (s > e) { - var _s = s; - s = e; - e = _s; - } - s = Math.round(s * 1e4) * 1e-4; - e = Math.round(e * 1e4) * 1e-4; - this.sValue = s; - this.eValue = e; - } else { - s = this.sValue; - e = this.eValue; - } - var shapePaths; - var i; - var len = this.shapes.length; - var j; - var jLen; - var pathsData; - var pathData; - var totalShapeLength; - var totalModifierLength = 0; - if (e === s) { - for (i = 0; i < len; i += 1) { - this.shapes[i].localShapeCollection.releaseShapes(); - this.shapes[i].shape._mdf = true; - this.shapes[i].shape.paths = this.shapes[i].localShapeCollection; - if (this._mdf) { - this.shapes[i].pathsData.length = 0; - } - } - } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) { - var segments = []; - var shapeData; - var localShapeCollection; - for (i = 0; i < len; i += 1) { - shapeData = this.shapes[i]; - if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) { - shapeData.shape.paths = shapeData.localShapeCollection; - } else { - shapePaths = shapeData.shape.paths; - jLen = shapePaths._length; - totalShapeLength = 0; - if (!shapeData.shape._mdf && shapeData.pathsData.length) { - totalShapeLength = shapeData.totalShapeLength; - } else { - pathsData = this.releasePathsData(shapeData.pathsData); - for (j = 0; j < jLen; j += 1) { - pathData = bez.getSegmentsLength(shapePaths.shapes[j]); - pathsData.push(pathData); - totalShapeLength += pathData.totalLength; - } - shapeData.totalShapeLength = totalShapeLength; - shapeData.pathsData = pathsData; - } - totalModifierLength += totalShapeLength; - shapeData.shape._mdf = true; - } - } - var shapeS = s; - var shapeE = e; - var addedLength = 0; - var edges; - for (i = len - 1; i >= 0; i -= 1) { - shapeData = this.shapes[i]; - if (shapeData.shape._mdf) { - localShapeCollection = shapeData.localShapeCollection; - localShapeCollection.releaseShapes(); - if (this.m === 2 && len > 1) { - edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength); - addedLength += shapeData.totalShapeLength; - } else { - edges = [[shapeS, shapeE]]; - } - jLen = edges.length; - for (j = 0; j < jLen; j += 1) { - shapeS = edges[j][0]; - shapeE = edges[j][1]; - segments.length = 0; - if (shapeE <= 1) { - segments.push({ - s: shapeData.totalShapeLength * shapeS, - e: shapeData.totalShapeLength * shapeE - }); - } else if (shapeS >= 1) { - segments.push({ - s: shapeData.totalShapeLength * (shapeS - 1), - e: shapeData.totalShapeLength * (shapeE - 1) - }); - } else { - segments.push({ - s: shapeData.totalShapeLength * shapeS, - e: shapeData.totalShapeLength - }); - segments.push({ - s: 0, - e: shapeData.totalShapeLength * (shapeE - 1) - }); - } - var newShapesData = this.addShapes(shapeData, segments[0]); - if (segments[0].s !== segments[0].e) { - if (segments.length > 1) { - var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1]; - if (lastShapeInCollection.c) { - var lastShape = newShapesData.pop(); - this.addPaths(newShapesData, localShapeCollection); - newShapesData = this.addShapes(shapeData, segments[1], lastShape); - } else { - this.addPaths(newShapesData, localShapeCollection); - newShapesData = this.addShapes(shapeData, segments[1]); - } - } - this.addPaths(newShapesData, localShapeCollection); - } - } - shapeData.shape.paths = localShapeCollection; - } - } - } else if (this._mdf) { - for (i = 0; i < len; i += 1) { - this.shapes[i].pathsData.length = 0; - this.shapes[i].shape._mdf = true; - } - } - }; - TrimModifier.prototype.addPaths = function(newPaths, localShapeCollection) { - var i; - var len = newPaths.length; - for (i = 0; i < len; i += 1) { - localShapeCollection.addShape(newPaths[i]); - } - }; - TrimModifier.prototype.addSegment = function(pt1, pt2, pt3, pt4, shapePath, pos, newShape) { - shapePath.setXYAt(pt2[0], pt2[1], "o", pos); - shapePath.setXYAt(pt3[0], pt3[1], "i", pos + 1); - if (newShape) { - shapePath.setXYAt(pt1[0], pt1[1], "v", pos); - } - shapePath.setXYAt(pt4[0], pt4[1], "v", pos + 1); - }; - TrimModifier.prototype.addSegmentFromArray = function(points, shapePath, pos, newShape) { - shapePath.setXYAt(points[1], points[5], "o", pos); - shapePath.setXYAt(points[2], points[6], "i", pos + 1); - if (newShape) { - shapePath.setXYAt(points[0], points[4], "v", pos); - } - shapePath.setXYAt(points[3], points[7], "v", pos + 1); - }; - TrimModifier.prototype.addShapes = function(shapeData, shapeSegment, shapePath) { - var pathsData = shapeData.pathsData; - var shapePaths = shapeData.shape.paths.shapes; - var i; - var len = shapeData.shape.paths._length; - var j; - var jLen; - var addedLength = 0; - var currentLengthData; - var segmentCount; - var lengths2; - var segment; - var shapes = []; - var initPos; - var newShape = true; - if (!shapePath) { - shapePath = shapePool.newElement(); - segmentCount = 0; - initPos = 0; - } else { - segmentCount = shapePath._length; - initPos = shapePath._length; - } - shapes.push(shapePath); - for (i = 0; i < len; i += 1) { - lengths2 = pathsData[i].lengths; - shapePath.c = shapePaths[i].c; - jLen = shapePaths[i].c ? lengths2.length : lengths2.length + 1; - for (j = 1; j < jLen; j += 1) { - currentLengthData = lengths2[j - 1]; - if (addedLength + currentLengthData.addedLength < shapeSegment.s) { - addedLength += currentLengthData.addedLength; - shapePath.c = false; - } else if (addedLength > shapeSegment.e) { - shapePath.c = false; - break; - } else { - if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) { - this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape); - newShape = false; - } else { - segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths2[j - 1]); - this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); - newShape = false; - shapePath.c = false; - } - addedLength += currentLengthData.addedLength; - segmentCount += 1; - } - } - if (shapePaths[i].c && lengths2.length) { - currentLengthData = lengths2[j - 1]; - if (addedLength <= shapeSegment.e) { - var segmentLength = lengths2[j - 1].addedLength; - if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) { - this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape); - newShape = false; - } else { - segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths2[j - 1]); - this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); - newShape = false; - shapePath.c = false; - } - } else { - shapePath.c = false; - } - addedLength += currentLengthData.addedLength; - segmentCount += 1; - } - if (shapePath._length) { - shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], "i", initPos); - shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], "o", shapePath._length - 1); - } - if (addedLength > shapeSegment.e) { - break; - } - if (i < len - 1) { - shapePath = shapePool.newElement(); - newShape = true; - shapes.push(shapePath); - segmentCount = 0; - } - } - return shapes; - }; - extendPrototype([ShapeModifier], PuckerAndBloatModifier); - PuckerAndBloatModifier.prototype.initModifierProperties = function(elem2, data2) { - this.getValue = this.processKeys; - this.amount = PropertyFactory.getProp(elem2, data2.a, 0, null, this); - this._isAnimated = !!this.amount.effectsSequence.length; - }; - PuckerAndBloatModifier.prototype.processPath = function(path, amount) { - var percent = amount / 100; - var centerPoint = [0, 0]; - var pathLength = path._length; - var i = 0; - for (i = 0; i < pathLength; i += 1) { - centerPoint[0] += path.v[i][0]; - centerPoint[1] += path.v[i][1]; - } - centerPoint[0] /= pathLength; - centerPoint[1] /= pathLength; - var clonedPath = shapePool.newElement(); - clonedPath.c = path.c; - var vX; - var vY; - var oX; - var oY; - var iX; - var iY; - for (i = 0; i < pathLength; i += 1) { - vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent; - vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent; - oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent; - oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent; - iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent; - iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent; - clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i); - } - return clonedPath; - }; - PuckerAndBloatModifier.prototype.processShapes = function(_isFirstFrame) { - var shapePaths; - var i; - var len = this.shapes.length; - var j; - var jLen; - var amount = this.amount.v; - if (amount !== 0) { - var shapeData; - var localShapeCollection; - for (i = 0; i < len; i += 1) { - shapeData = this.shapes[i]; - localShapeCollection = shapeData.localShapeCollection; - if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) { - localShapeCollection.releaseShapes(); - shapeData.shape._mdf = true; - shapePaths = shapeData.shape.paths.shapes; - jLen = shapeData.shape.paths._length; - for (j = 0; j < jLen; j += 1) { - localShapeCollection.addShape(this.processPath(shapePaths[j], amount)); - } - } - shapeData.shape.paths = shapeData.localShapeCollection; - } - } - if (!this.dynamicProperties.length) { - this._mdf = false; - } - }; - const TransformPropertyFactory = function() { - var defaultVector = [0, 0]; - function applyToMatrix(mat) { - var _mdf = this._mdf; - this.iterateDynamicProperties(); - this._mdf = this._mdf || _mdf; - if (this.a) { - mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]); - } - if (this.s) { - mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]); - } - if (this.sk) { - mat.skewFromAxis(-this.sk.v, this.sa.v); - } - if (this.r) { - mat.rotate(-this.r.v); - } else { - mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]); - } - if (this.data.p.s) { - if (this.data.p.z) { - mat.translate(this.px.v, this.py.v, -this.pz.v); - } else { - mat.translate(this.px.v, this.py.v, 0); - } - } else { - mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]); - } - } - function processKeys(forceRender) { - if (this.elem.globalData.frameId === this.frameId) { - return; - } - if (this._isDirty) { - this.precalculateMatrix(); - this._isDirty = false; - } - this.iterateDynamicProperties(); - if (this._mdf || forceRender) { - var frameRate2; - this.v.cloneFromProps(this.pre.props); - if (this.appliedTransformations < 1) { - this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]); - } - if (this.appliedTransformations < 2) { - this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]); - } - if (this.sk && this.appliedTransformations < 3) { - this.v.skewFromAxis(-this.sk.v, this.sa.v); - } - if (this.r && this.appliedTransformations < 4) { - this.v.rotate(-this.r.v); - } else if (!this.r && this.appliedTransformations < 4) { - this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]); - } - if (this.autoOriented) { - var v12; - var v2; - frameRate2 = this.elem.globalData.frameRate; - if (this.p && this.p.keyframes && this.p.getValueAtTime) { - if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) { - v12 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate2, 0); - v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate2, 0); - } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) { - v12 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate2, 0); - v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate2, 0); - } else { - v12 = this.p.pv; - v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate2, this.p.offsetTime); - } - } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) { - v12 = []; - v2 = []; - var px = this.px; - var py = this.py; - if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) { - v12[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate2, 0); - v12[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate2, 0); - v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate2, 0); - v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate2, 0); - } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) { - v12[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate2, 0); - v12[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate2, 0); - v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate2, 0); - v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate2, 0); - } else { - v12 = [px.pv, py.pv]; - v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate2, px.offsetTime); - v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate2, py.offsetTime); - } - } else { - v2 = defaultVector; - v12 = v2; - } - this.v.rotate(-Math.atan2(v12[1] - v2[1], v12[0] - v2[0])); - } - if (this.data.p && this.data.p.s) { - if (this.data.p.z) { - this.v.translate(this.px.v, this.py.v, -this.pz.v); - } else { - this.v.translate(this.px.v, this.py.v, 0); - } - } else { - this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]); - } - } - this.frameId = this.elem.globalData.frameId; - } - function precalculateMatrix() { - if (!this.a.k) { - this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]); - this.appliedTransformations = 1; - } else { - return; - } - if (!this.s.effectsSequence.length) { - this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]); - this.appliedTransformations = 2; - } else { - return; - } - if (this.sk) { - if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) { - this.pre.skewFromAxis(-this.sk.v, this.sa.v); - this.appliedTransformations = 3; - } else { - return; - } - } - if (this.r) { - if (!this.r.effectsSequence.length) { - this.pre.rotate(-this.r.v); - this.appliedTransformations = 4; - } - } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) { - this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]); - this.appliedTransformations = 4; - } - } - function autoOrient() { - } - function addDynamicProperty(prop) { - this._addDynamicProperty(prop); - this.elem.addDynamicProperty(prop); - this._isDirty = true; - } - function TransformProperty(elem2, data2, container) { - this.elem = elem2; - this.frameId = -1; - this.propType = "transform"; - this.data = data2; - this.v = new Matrix(); - this.pre = new Matrix(); - this.appliedTransformations = 0; - this.initDynamicPropertyContainer(container || elem2); - if (data2.p && data2.p.s) { - this.px = PropertyFactory.getProp(elem2, data2.p.x, 0, 0, this); - this.py = PropertyFactory.getProp(elem2, data2.p.y, 0, 0, this); - if (data2.p.z) { - this.pz = PropertyFactory.getProp(elem2, data2.p.z, 0, 0, this); - } - } else { - this.p = PropertyFactory.getProp(elem2, data2.p || { k: [0, 0, 0] }, 1, 0, this); - } - if (data2.rx) { - this.rx = PropertyFactory.getProp(elem2, data2.rx, 0, degToRads, this); - this.ry = PropertyFactory.getProp(elem2, data2.ry, 0, degToRads, this); - this.rz = PropertyFactory.getProp(elem2, data2.rz, 0, degToRads, this); - if (data2.or.k[0].ti) { - var i; - var len = data2.or.k.length; - for (i = 0; i < len; i += 1) { - data2.or.k[i].to = null; - data2.or.k[i].ti = null; - } - } - this.or = PropertyFactory.getProp(elem2, data2.or, 1, degToRads, this); - this.or.sh = true; - } else { - this.r = PropertyFactory.getProp(elem2, data2.r || { k: 0 }, 0, degToRads, this); - } - if (data2.sk) { - this.sk = PropertyFactory.getProp(elem2, data2.sk, 0, degToRads, this); - this.sa = PropertyFactory.getProp(elem2, data2.sa, 0, degToRads, this); - } - this.a = PropertyFactory.getProp(elem2, data2.a || { k: [0, 0, 0] }, 1, 0, this); - this.s = PropertyFactory.getProp(elem2, data2.s || { k: [100, 100, 100] }, 1, 0.01, this); - if (data2.o) { - this.o = PropertyFactory.getProp(elem2, data2.o, 0, 0.01, elem2); - } else { - this.o = { _mdf: false, v: 1 }; - } - this._isDirty = true; - if (!this.dynamicProperties.length) { - this.getValue(true); - } - } - TransformProperty.prototype = { - applyToMatrix, - getValue: processKeys, - precalculateMatrix, - autoOrient - }; - extendPrototype([DynamicPropertyContainer], TransformProperty); - TransformProperty.prototype.addDynamicProperty = addDynamicProperty; - TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty; - function getTransformProperty(elem2, data2, container) { - return new TransformProperty(elem2, data2, container); - } - return { - getTransformProperty - }; - }(); - extendPrototype([ShapeModifier], RepeaterModifier); - RepeaterModifier.prototype.initModifierProperties = function(elem2, data2) { - this.getValue = this.processKeys; - this.c = PropertyFactory.getProp(elem2, data2.c, 0, null, this); - this.o = PropertyFactory.getProp(elem2, data2.o, 0, null, this); - this.tr = TransformPropertyFactory.getTransformProperty(elem2, data2.tr, this); - this.so = PropertyFactory.getProp(elem2, data2.tr.so, 0, 0.01, this); - this.eo = PropertyFactory.getProp(elem2, data2.tr.eo, 0, 0.01, this); - this.data = data2; - if (!this.dynamicProperties.length) { - this.getValue(true); - } - this._isAnimated = !!this.dynamicProperties.length; - this.pMatrix = new Matrix(); - this.rMatrix = new Matrix(); - this.sMatrix = new Matrix(); - this.tMatrix = new Matrix(); - this.matrix = new Matrix(); - }; - RepeaterModifier.prototype.applyTransforms = function(pMatrix, rMatrix, sMatrix, transform2, perc, inv) { - var dir = inv ? -1 : 1; - var scaleX = transform2.s.v[0] + (1 - transform2.s.v[0]) * (1 - perc); - var scaleY = transform2.s.v[1] + (1 - transform2.s.v[1]) * (1 - perc); - pMatrix.translate(transform2.p.v[0] * dir * perc, transform2.p.v[1] * dir * perc, transform2.p.v[2]); - rMatrix.translate(-transform2.a.v[0], -transform2.a.v[1], transform2.a.v[2]); - rMatrix.rotate(-transform2.r.v * dir * perc); - rMatrix.translate(transform2.a.v[0], transform2.a.v[1], transform2.a.v[2]); - sMatrix.translate(-transform2.a.v[0], -transform2.a.v[1], transform2.a.v[2]); - sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY); - sMatrix.translate(transform2.a.v[0], transform2.a.v[1], transform2.a.v[2]); - }; - RepeaterModifier.prototype.init = function(elem2, arr, pos, elemsData) { - this.elem = elem2; - this.arr = arr; - this.pos = pos; - this.elemsData = elemsData; - this._currentCopies = 0; - this._elements = []; - this._groups = []; - this.frameId = -1; - this.initDynamicPropertyContainer(elem2); - this.initModifierProperties(elem2, arr[pos]); - while (pos > 0) { - pos -= 1; - this._elements.unshift(arr[pos]); - } - if (this.dynamicProperties.length) { - this.k = true; - } else { - this.getValue(true); - } - }; - RepeaterModifier.prototype.resetElements = function(elements) { - var i; - var len = elements.length; - for (i = 0; i < len; i += 1) { - elements[i]._processed = false; - if (elements[i].ty === "gr") { - this.resetElements(elements[i].it); - } - } - }; - RepeaterModifier.prototype.cloneElements = function(elements) { - var newElements = JSON.parse(JSON.stringify(elements)); - this.resetElements(newElements); - return newElements; - }; - RepeaterModifier.prototype.changeGroupRender = function(elements, renderFlag) { - var i; - var len = elements.length; - for (i = 0; i < len; i += 1) { - elements[i]._render = renderFlag; - if (elements[i].ty === "gr") { - this.changeGroupRender(elements[i].it, renderFlag); - } - } - }; - RepeaterModifier.prototype.processShapes = function(_isFirstFrame) { - var items; - var itemsTransform; - var i; - var dir; - var cont; - var hasReloaded = false; - if (this._mdf || _isFirstFrame) { - var copies = Math.ceil(this.c.v); - if (this._groups.length < copies) { - while (this._groups.length < copies) { - var group = { - it: this.cloneElements(this._elements), - ty: "gr" - }; - group.it.push({ - a: { a: 0, ix: 1, k: [0, 0] }, - nm: "Transform", - o: { a: 0, ix: 7, k: 100 }, - p: { a: 0, ix: 2, k: [0, 0] }, - r: { a: 1, ix: 6, k: [{ s: 0, e: 0, t: 0 }, { s: 0, e: 0, t: 1 }] }, - s: { a: 0, ix: 3, k: [100, 100] }, - sa: { a: 0, ix: 5, k: 0 }, - sk: { a: 0, ix: 4, k: 0 }, - ty: "tr" - }); - this.arr.splice(0, 0, group); - this._groups.splice(0, 0, group); - this._currentCopies += 1; - } - this.elem.reloadShapes(); - hasReloaded = true; - } - cont = 0; - var renderFlag; - for (i = 0; i <= this._groups.length - 1; i += 1) { - renderFlag = cont < copies; - this._groups[i]._render = renderFlag; - this.changeGroupRender(this._groups[i].it, renderFlag); - if (!renderFlag) { - var elems = this.elemsData[i].it; - var transformData = elems[elems.length - 1]; - if (transformData.transform.op.v !== 0) { - transformData.transform.op._mdf = true; - transformData.transform.op.v = 0; - } else { - transformData.transform.op._mdf = false; - } - } - cont += 1; - } - this._currentCopies = copies; - var offset = this.o.v; - var offsetModulo = offset % 1; - var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset); - var pProps = this.pMatrix.props; - var rProps = this.rMatrix.props; - var sProps = this.sMatrix.props; - this.pMatrix.reset(); - this.rMatrix.reset(); - this.sMatrix.reset(); - this.tMatrix.reset(); - this.matrix.reset(); - var iteration = 0; - if (offset > 0) { - while (iteration < roundOffset) { - this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false); - iteration += 1; - } - if (offsetModulo) { - this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false); - iteration += offsetModulo; - } - } else if (offset < 0) { - while (iteration > roundOffset) { - this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true); - iteration -= 1; - } - if (offsetModulo) { - this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true); - iteration -= offsetModulo; - } - } - i = this.data.m === 1 ? 0 : this._currentCopies - 1; - dir = this.data.m === 1 ? 1 : -1; - cont = this._currentCopies; - var j; - var jLen; - while (cont) { - items = this.elemsData[i].it; - itemsTransform = items[items.length - 1].transform.mProps.v.props; - jLen = itemsTransform.length; - items[items.length - 1].transform.mProps._mdf = true; - items[items.length - 1].transform.op._mdf = true; - items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1)); - if (iteration !== 0) { - if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) { - this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false); - } - this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]); - this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]); - this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]); - for (j = 0; j < jLen; j += 1) { - itemsTransform[j] = this.matrix.props[j]; - } - this.matrix.reset(); - } else { - this.matrix.reset(); - for (j = 0; j < jLen; j += 1) { - itemsTransform[j] = this.matrix.props[j]; - } - } - iteration += 1; - cont -= 1; - i += dir; - } - } else { - cont = this._currentCopies; - i = 0; - dir = 1; - while (cont) { - items = this.elemsData[i].it; - itemsTransform = items[items.length - 1].transform.mProps.v.props; - items[items.length - 1].transform.mProps._mdf = false; - items[items.length - 1].transform.op._mdf = false; - cont -= 1; - i += dir; - } - } - return hasReloaded; - }; - RepeaterModifier.prototype.addShape = function() { - }; - extendPrototype([ShapeModifier], RoundCornersModifier); - RoundCornersModifier.prototype.initModifierProperties = function(elem2, data2) { - this.getValue = this.processKeys; - this.rd = PropertyFactory.getProp(elem2, data2.r, 0, null, this); - this._isAnimated = !!this.rd.effectsSequence.length; - }; - RoundCornersModifier.prototype.processPath = function(path, round) { - var clonedPath = shapePool.newElement(); - clonedPath.c = path.c; - var i; - var len = path._length; - var currentV; - var currentI; - var currentO; - var closerV; - var distance; - var newPosPerc; - var index2 = 0; - var vX; - var vY; - var oX; - var oY; - var iX; - var iY; - for (i = 0; i < len; i += 1) { - currentV = path.v[i]; - currentO = path.o[i]; - currentI = path.i[i]; - if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) { - if ((i === 0 || i === len - 1) && !path.c) { - clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index2); - index2 += 1; - } else { - if (i === 0) { - closerV = path.v[len - 1]; - } else { - closerV = path.v[i - 1]; - } - distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2)); - newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0; - iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc; - vX = iX; - iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc; - vY = iY; - oX = vX - (vX - currentV[0]) * roundCorner; - oY = vY - (vY - currentV[1]) * roundCorner; - clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index2); - index2 += 1; - if (i === len - 1) { - closerV = path.v[0]; - } else { - closerV = path.v[i + 1]; - } - distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2)); - newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0; - oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc; - vX = oX; - oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc; - vY = oY; - iX = vX - (vX - currentV[0]) * roundCorner; - iY = vY - (vY - currentV[1]) * roundCorner; - clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index2); - index2 += 1; - } - } else { - clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index2); - index2 += 1; - } - } - return clonedPath; - }; - RoundCornersModifier.prototype.processShapes = function(_isFirstFrame) { - var shapePaths; - var i; - var len = this.shapes.length; - var j; - var jLen; - var rd = this.rd.v; - if (rd !== 0) { - var shapeData; - var localShapeCollection; - for (i = 0; i < len; i += 1) { - shapeData = this.shapes[i]; - localShapeCollection = shapeData.localShapeCollection; - if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) { - localShapeCollection.releaseShapes(); - shapeData.shape._mdf = true; - shapePaths = shapeData.shape.paths.shapes; - jLen = shapeData.shape.paths._length; - for (j = 0; j < jLen; j += 1) { - localShapeCollection.addShape(this.processPath(shapePaths[j], rd)); - } - } - shapeData.shape.paths = shapeData.localShapeCollection; - } - } - if (!this.dynamicProperties.length) { - this._mdf = false; - } - }; - const FontManager = function() { - var maxWaitingTime = 5e3; - var emptyChar = { - w: 0, - size: 0, - shapes: [], - data: { - shapes: [] - } - }; - var combinedCharacters = []; - combinedCharacters = combinedCharacters.concat([ - 2304, - 2305, - 2306, - 2307, - 2362, - 2363, - 2364, - 2364, - 2366, - 2367, - 2368, - 2369, - 2370, - 2371, - 2372, - 2373, - 2374, - 2375, - 2376, - 2377, - 2378, - 2379, - 2380, - 2381, - 2382, - 2383, - 2387, - 2388, - 2389, - 2390, - 2391, - 2402, - 2403 - ]); - var surrogateModifiers = [ - "d83cdffb", - "d83cdffc", - "d83cdffd", - "d83cdffe", - "d83cdfff" - ]; - var zeroWidthJoiner = [65039, 8205]; - function trimFontOptions(font) { - var familyArray = font.split(","); - var i; - var len = familyArray.length; - var enabledFamilies = []; - for (i = 0; i < len; i += 1) { - if (familyArray[i] !== "sans-serif" && familyArray[i] !== "monospace") { - enabledFamilies.push(familyArray[i]); - } - } - return enabledFamilies.join(","); - } - function setUpNode(font, family) { - var parentNode = createTag("span"); - parentNode.setAttribute("aria-hidden", true); - parentNode.style.fontFamily = family; - var node = createTag("span"); - node.innerText = "giItT1WQy@!-/#"; - parentNode.style.position = "absolute"; - parentNode.style.left = "-10000px"; - parentNode.style.top = "-10000px"; - parentNode.style.fontSize = "300px"; - parentNode.style.fontVariant = "normal"; - parentNode.style.fontStyle = "normal"; - parentNode.style.fontWeight = "normal"; - parentNode.style.letterSpacing = "0"; - parentNode.appendChild(node); - document.body.appendChild(parentNode); - var width2 = node.offsetWidth; - node.style.fontFamily = trimFontOptions(font) + ", " + family; - return { node, w: width2, parent: parentNode }; - } - function checkLoadedFonts() { - var i; - var len = this.fonts.length; - var node; - var w; - var loadedCount = len; - for (i = 0; i < len; i += 1) { - if (this.fonts[i].loaded) { - loadedCount -= 1; - } else if (this.fonts[i].fOrigin === "n" || this.fonts[i].origin === 0) { - this.fonts[i].loaded = true; - } else { - node = this.fonts[i].monoCase.node; - w = this.fonts[i].monoCase.w; - if (node.offsetWidth !== w) { - loadedCount -= 1; - this.fonts[i].loaded = true; - } else { - node = this.fonts[i].sansCase.node; - w = this.fonts[i].sansCase.w; - if (node.offsetWidth !== w) { - loadedCount -= 1; - this.fonts[i].loaded = true; - } - } - if (this.fonts[i].loaded) { - this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent); - this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent); - } - } - } - if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) { - setTimeout(this.checkLoadedFontsBinded, 20); - } else { - setTimeout(this.setIsLoadedBinded, 10); - } - } - function createHelper(fontData, def) { - var engine = document.body && def ? "svg" : "canvas"; - var helper; - var fontProps = getFontProperties(fontData); - if (engine === "svg") { - var tHelper = createNS("text"); - tHelper.style.fontSize = "100px"; - tHelper.setAttribute("font-family", fontData.fFamily); - tHelper.setAttribute("font-style", fontProps.style); - tHelper.setAttribute("font-weight", fontProps.weight); - tHelper.textContent = "1"; - if (fontData.fClass) { - tHelper.style.fontFamily = "inherit"; - tHelper.setAttribute("class", fontData.fClass); - } else { - tHelper.style.fontFamily = fontData.fFamily; - } - def.appendChild(tHelper); - helper = tHelper; - } else { - var tCanvasHelper = new OffscreenCanvas(500, 500).getContext("2d"); - tCanvasHelper.font = fontProps.style + " " + fontProps.weight + " 100px " + fontData.fFamily; - helper = tCanvasHelper; - } - function measure(text2) { - if (engine === "svg") { - helper.textContent = text2; - return helper.getComputedTextLength(); - } - return helper.measureText(text2).width; - } - return { - measureText: measure - }; - } - function addFonts(fontData, defs) { - if (!fontData) { - this.isLoaded = true; - return; - } - if (this.chars) { - this.isLoaded = true; - this.fonts = fontData.list; - return; - } - if (!document.body) { - this.isLoaded = true; - fontData.list.forEach((data2) => { - data2.helper = createHelper(data2); - data2.cache = {}; - }); - this.fonts = fontData.list; - return; - } - var fontArr = fontData.list; - var i; - var len = fontArr.length; - var _pendingFonts = len; - for (i = 0; i < len; i += 1) { - var shouldLoadFont = true; - var loadedSelector; - var j; - fontArr[i].loaded = false; - fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, "monospace"); - fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, "sans-serif"); - if (!fontArr[i].fPath) { - fontArr[i].loaded = true; - _pendingFonts -= 1; - } else if (fontArr[i].fOrigin === "p" || fontArr[i].origin === 3) { - loadedSelector = document.querySelectorAll('style[f-forigin="p"][f-family="' + fontArr[i].fFamily + '"], style[f-origin="3"][f-family="' + fontArr[i].fFamily + '"]'); - if (loadedSelector.length > 0) { - shouldLoadFont = false; - } - if (shouldLoadFont) { - var s = createTag("style"); - s.setAttribute("f-forigin", fontArr[i].fOrigin); - s.setAttribute("f-origin", fontArr[i].origin); - s.setAttribute("f-family", fontArr[i].fFamily); - s.type = "text/css"; - s.innerText = "@font-face {font-family: " + fontArr[i].fFamily + "; font-style: normal; src: url('" + fontArr[i].fPath + "');}"; - defs.appendChild(s); - } - } else if (fontArr[i].fOrigin === "g" || fontArr[i].origin === 1) { - loadedSelector = document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]'); - for (j = 0; j < loadedSelector.length; j += 1) { - if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) { - shouldLoadFont = false; - } - } - if (shouldLoadFont) { - var l2 = createTag("link"); - l2.setAttribute("f-forigin", fontArr[i].fOrigin); - l2.setAttribute("f-origin", fontArr[i].origin); - l2.type = "text/css"; - l2.rel = "stylesheet"; - l2.href = fontArr[i].fPath; - document.body.appendChild(l2); - } - } else if (fontArr[i].fOrigin === "t" || fontArr[i].origin === 2) { - loadedSelector = document.querySelectorAll('script[f-forigin="t"], script[f-origin="2"]'); - for (j = 0; j < loadedSelector.length; j += 1) { - if (fontArr[i].fPath === loadedSelector[j].src) { - shouldLoadFont = false; - } - } - if (shouldLoadFont) { - var sc = createTag("link"); - sc.setAttribute("f-forigin", fontArr[i].fOrigin); - sc.setAttribute("f-origin", fontArr[i].origin); - sc.setAttribute("rel", "stylesheet"); - sc.setAttribute("href", fontArr[i].fPath); - defs.appendChild(sc); - } - } - fontArr[i].helper = createHelper(fontArr[i], defs); - fontArr[i].cache = {}; - this.fonts.push(fontArr[i]); - } - if (_pendingFonts === 0) { - this.isLoaded = true; - } else { - setTimeout(this.checkLoadedFonts.bind(this), 100); - } - } - function addChars(chars) { - if (!chars) { - return; - } - if (!this.chars) { - this.chars = []; - } - var i; - var len = chars.length; - var j; - var jLen = this.chars.length; - var found; - for (i = 0; i < len; i += 1) { - j = 0; - found = false; - while (j < jLen) { - if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) { - found = true; - } - j += 1; - } - if (!found) { - this.chars.push(chars[i]); - jLen += 1; - } - } - } - function getCharData(char, style, font) { - var i = 0; - var len = this.chars.length; - while (i < len) { - if (this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font) { - return this.chars[i]; - } - i += 1; - } - if ((typeof char === "string" && char.charCodeAt(0) !== 13 || !char) && console && console.warn && !this._warned) { - this._warned = true; - console.warn("Missing character from exported characters list: ", char, style, font); - } - return emptyChar; - } - function measureText(char, fontName, size2) { - var fontData = this.getFontByName(fontName); - var index2 = char.charCodeAt(0); - if (!fontData.cache[index2 + 1]) { - var tHelper = fontData.helper; - if (char === " ") { - var doubleSize = tHelper.measureText("|" + char + "|"); - var singleSize = tHelper.measureText("||"); - fontData.cache[index2 + 1] = (doubleSize - singleSize) / 100; - } else { - fontData.cache[index2 + 1] = tHelper.measureText(char) / 100; - } - } - return fontData.cache[index2 + 1] * size2; - } - function getFontByName(name2) { - var i = 0; - var len = this.fonts.length; - while (i < len) { - if (this.fonts[i].fName === name2) { - return this.fonts[i]; - } - i += 1; - } - return this.fonts[0]; - } - function isModifier(firstCharCode, secondCharCode) { - var sum2 = firstCharCode.toString(16) + secondCharCode.toString(16); - return surrogateModifiers.indexOf(sum2) !== -1; - } - function isZeroWidthJoiner(firstCharCode, secondCharCode) { - if (!secondCharCode) { - return firstCharCode === zeroWidthJoiner[1]; - } - return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1]; - } - function isCombinedCharacter(char) { - return combinedCharacters.indexOf(char) !== -1; - } - function setIsLoaded() { - this.isLoaded = true; - } - var Font3 = function() { - this.fonts = []; - this.chars = null; - this.typekitLoaded = 0; - this.isLoaded = false; - this._warned = false; - this.initTime = Date.now(); - this.setIsLoadedBinded = this.setIsLoaded.bind(this); - this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this); - }; - Font3.isModifier = isModifier; - Font3.isZeroWidthJoiner = isZeroWidthJoiner; - Font3.isCombinedCharacter = isCombinedCharacter; - var fontPrototype = { - addChars, - addFonts, - getCharData, - getFontByName, - measureText, - checkLoadedFonts, - setIsLoaded - }; - Font3.prototype = fontPrototype; - return Font3; - }(); - RenderableElement.prototype = { - initRenderable: function() { - this.isInRange = false; - this.hidden = false; - this.isTransparent = false; - this.renderableComponents = []; - }, - addRenderableComponent: function(component) { - if (this.renderableComponents.indexOf(component) === -1) { - this.renderableComponents.push(component); - } - }, - removeRenderableComponent: function(component) { - if (this.renderableComponents.indexOf(component) !== -1) { - this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1); - } - }, - prepareRenderableFrame: function(num) { - this.checkLayerLimits(num); - }, - checkTransparency: function() { - if (this.finalTransform.mProp.o.v <= 0) { - if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) { - this.isTransparent = true; - this.hide(); - } - } else if (this.isTransparent) { - this.isTransparent = false; - this.show(); - } - }, - /** - * @function - * Initializes frame related properties. - * - * @param {number} num - * current frame number in Layer's time - * - */ - checkLayerLimits: function(num) { - if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) { - if (this.isInRange !== true) { - this.globalData._mdf = true; - this._mdf = true; - this.isInRange = true; - this.show(); - } - } else if (this.isInRange !== false) { - this.globalData._mdf = true; - this.isInRange = false; - this.hide(); - } - }, - renderRenderable: function() { - var i; - var len = this.renderableComponents.length; - for (i = 0; i < len; i += 1) { - this.renderableComponents[i].renderFrame(this._isFirstFrame); - } - }, - sourceRectAtTime: function() { - return { - top: 0, - left: 0, - width: 100, - height: 100 - }; - }, - getLayerSize: function() { - if (this.data.ty === 5) { - return { w: this.data.textData.width, h: this.data.textData.height }; - } - return { w: this.data.width, h: this.data.height }; - } - }; - const MaskManagerInterface = function() { - function MaskInterface(mask2, data2) { - this._mask = mask2; - this._data = data2; - } - Object.defineProperty(MaskInterface.prototype, "maskPath", { - get: function() { - if (this._mask.prop.k) { - this._mask.prop.getValue(); - } - return this._mask.prop; - } - }); - Object.defineProperty(MaskInterface.prototype, "maskOpacity", { - get: function() { - if (this._mask.op.k) { - this._mask.op.getValue(); - } - return this._mask.op.v * 100; - } - }); - var MaskManager = function(maskManager) { - var _masksInterfaces = createSizedArray(maskManager.viewData.length); - var i; - var len = maskManager.viewData.length; - for (i = 0; i < len; i += 1) { - _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]); - } - var maskFunction = function(name2) { - i = 0; - while (i < len) { - if (maskManager.masksProperties[i].nm === name2) { - return _masksInterfaces[i]; - } - i += 1; - } - return null; - }; - return maskFunction; - }; - return MaskManager; - }(); - const ExpressionPropertyInterface = /* @__PURE__ */ function() { - var defaultUnidimensionalValue = { pv: 0, v: 0, mult: 1 }; - var defaultMultidimensionalValue = { pv: [0, 0, 0], v: [0, 0, 0], mult: 1 }; - function completeProperty(expressionValue, property2, type) { - Object.defineProperty(expressionValue, "velocity", { - get: function() { - return property2.getVelocityAtTime(property2.comp.currentFrame); - } - }); - expressionValue.numKeys = property2.keyframes ? property2.keyframes.length : 0; - expressionValue.key = function(pos) { - if (!expressionValue.numKeys) { - return 0; - } - var value2 = ""; - if ("s" in property2.keyframes[pos - 1]) { - value2 = property2.keyframes[pos - 1].s; - } else if ("e" in property2.keyframes[pos - 2]) { - value2 = property2.keyframes[pos - 2].e; - } else { - value2 = property2.keyframes[pos - 2].s; - } - var valueProp = type === "unidimensional" ? new Number(value2) : Object.assign({}, value2); - valueProp.time = property2.keyframes[pos - 1].t / property2.elem.comp.globalData.frameRate; - valueProp.value = type === "unidimensional" ? value2[0] : value2; - return valueProp; - }; - expressionValue.valueAtTime = property2.getValueAtTime; - expressionValue.speedAtTime = property2.getSpeedAtTime; - expressionValue.velocityAtTime = property2.getVelocityAtTime; - expressionValue.propertyGroup = property2.propertyGroup; - } - function UnidimensionalPropertyInterface(property2) { - if (!property2 || !("pv" in property2)) { - property2 = defaultUnidimensionalValue; - } - var mult = 1 / property2.mult; - var val2 = property2.pv * mult; - var expressionValue = new Number(val2); - expressionValue.value = val2; - completeProperty(expressionValue, property2, "unidimensional"); - return function() { - if (property2.k) { - property2.getValue(); - } - val2 = property2.v * mult; - if (expressionValue.value !== val2) { - expressionValue = new Number(val2); - expressionValue.value = val2; - completeProperty(expressionValue, property2, "unidimensional"); - } - return expressionValue; - }; - } - function MultidimensionalPropertyInterface(property2) { - if (!property2 || !("pv" in property2)) { - property2 = defaultMultidimensionalValue; - } - var mult = 1 / property2.mult; - var len = property2.data && property2.data.l || property2.pv.length; - var expressionValue = createTypedArray("float32", len); - var arrValue = createTypedArray("float32", len); - expressionValue.value = arrValue; - completeProperty(expressionValue, property2, "multidimensional"); - return function() { - if (property2.k) { - property2.getValue(); - } - for (var i = 0; i < len; i += 1) { - arrValue[i] = property2.v[i] * mult; - expressionValue[i] = arrValue[i]; - } - return expressionValue; - }; - } - function defaultGetter() { - return defaultUnidimensionalValue; - } - return function(property2) { - if (!property2) { - return defaultGetter; - } - if (property2.propType === "unidimensional") { - return UnidimensionalPropertyInterface(property2); - } - return MultidimensionalPropertyInterface(property2); - }; - }(); - const TransformExpressionInterface = /* @__PURE__ */ function() { - return function(transform2) { - function _thisFunction(name2) { - switch (name2) { - case "scale": - case "Scale": - case "ADBE Scale": - case 6: - return _thisFunction.scale; - case "rotation": - case "Rotation": - case "ADBE Rotation": - case "ADBE Rotate Z": - case 10: - return _thisFunction.rotation; - case "ADBE Rotate X": - return _thisFunction.xRotation; - case "ADBE Rotate Y": - return _thisFunction.yRotation; - case "position": - case "Position": - case "ADBE Position": - case 2: - return _thisFunction.position; - case "ADBE Position_0": - return _thisFunction.xPosition; - case "ADBE Position_1": - return _thisFunction.yPosition; - case "ADBE Position_2": - return _thisFunction.zPosition; - case "anchorPoint": - case "AnchorPoint": - case "Anchor Point": - case "ADBE AnchorPoint": - case 1: - return _thisFunction.anchorPoint; - case "opacity": - case "Opacity": - case 11: - return _thisFunction.opacity; - default: - return null; - } - } - Object.defineProperty(_thisFunction, "rotation", { - get: ExpressionPropertyInterface(transform2.r || transform2.rz) - }); - Object.defineProperty(_thisFunction, "zRotation", { - get: ExpressionPropertyInterface(transform2.rz || transform2.r) - }); - Object.defineProperty(_thisFunction, "xRotation", { - get: ExpressionPropertyInterface(transform2.rx) - }); - Object.defineProperty(_thisFunction, "yRotation", { - get: ExpressionPropertyInterface(transform2.ry) - }); - Object.defineProperty(_thisFunction, "scale", { - get: ExpressionPropertyInterface(transform2.s) - }); - var _px; - var _py; - var _pz; - var _transformFactory; - if (transform2.p) { - _transformFactory = ExpressionPropertyInterface(transform2.p); - } else { - _px = ExpressionPropertyInterface(transform2.px); - _py = ExpressionPropertyInterface(transform2.py); - if (transform2.pz) { - _pz = ExpressionPropertyInterface(transform2.pz); - } - } - Object.defineProperty(_thisFunction, "position", { - get: function() { - if (transform2.p) { - return _transformFactory(); - } - return [ - _px(), - _py(), - _pz ? _pz() : 0 - ]; - } - }); - Object.defineProperty(_thisFunction, "xPosition", { - get: ExpressionPropertyInterface(transform2.px) - }); - Object.defineProperty(_thisFunction, "yPosition", { - get: ExpressionPropertyInterface(transform2.py) - }); - Object.defineProperty(_thisFunction, "zPosition", { - get: ExpressionPropertyInterface(transform2.pz) - }); - Object.defineProperty(_thisFunction, "anchorPoint", { - get: ExpressionPropertyInterface(transform2.a) - }); - Object.defineProperty(_thisFunction, "opacity", { - get: ExpressionPropertyInterface(transform2.o) - }); - Object.defineProperty(_thisFunction, "skew", { - get: ExpressionPropertyInterface(transform2.sk) - }); - Object.defineProperty(_thisFunction, "skewAxis", { - get: ExpressionPropertyInterface(transform2.sa) - }); - Object.defineProperty(_thisFunction, "orientation", { - get: ExpressionPropertyInterface(transform2.or) - }); - return _thisFunction; - }; - }(); - const LayerExpressionInterface = /* @__PURE__ */ function() { - function getMatrix(time2) { - var toWorldMat = new Matrix(); - if (time2 !== void 0) { - var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time2); - propMatrix.clone(toWorldMat); - } else { - var transformMat = this._elem.finalTransform.mProp; - transformMat.applyToMatrix(toWorldMat); - } - return toWorldMat; - } - function toWorldVec(arr, time2) { - var toWorldMat = this.getMatrix(time2); - toWorldMat.props[12] = 0; - toWorldMat.props[13] = 0; - toWorldMat.props[14] = 0; - return this.applyPoint(toWorldMat, arr); - } - function toWorld2(arr, time2) { - var toWorldMat = this.getMatrix(time2); - return this.applyPoint(toWorldMat, arr); - } - function fromWorldVec(arr, time2) { - var toWorldMat = this.getMatrix(time2); - toWorldMat.props[12] = 0; - toWorldMat.props[13] = 0; - toWorldMat.props[14] = 0; - return this.invertPoint(toWorldMat, arr); - } - function fromWorld2(arr, time2) { - var toWorldMat = this.getMatrix(time2); - return this.invertPoint(toWorldMat, arr); - } - function applyPoint(matrix3, arr) { - if (this._elem.hierarchy && this._elem.hierarchy.length) { - var i; - var len = this._elem.hierarchy.length; - for (i = 0; i < len; i += 1) { - this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix3); - } - } - return matrix3.applyToPointArray(arr[0], arr[1], arr[2] || 0); - } - function invertPoint(matrix3, arr) { - if (this._elem.hierarchy && this._elem.hierarchy.length) { - var i; - var len = this._elem.hierarchy.length; - for (i = 0; i < len; i += 1) { - this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix3); - } - } - return matrix3.inversePoint(arr); - } - function fromComp2(arr) { - var toWorldMat = new Matrix(); - toWorldMat.reset(); - this._elem.finalTransform.mProp.applyToMatrix(toWorldMat); - if (this._elem.hierarchy && this._elem.hierarchy.length) { - var i; - var len = this._elem.hierarchy.length; - for (i = 0; i < len; i += 1) { - this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat); - } - return toWorldMat.inversePoint(arr); - } - return toWorldMat.inversePoint(arr); - } - function sampleImage() { - return [1, 1, 1, 1]; - } - return function(elem2) { - var transformInterface; - function _registerMaskInterface(maskManager) { - _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem2); - } - function _registerEffectsInterface(effects) { - _thisLayerFunction.effect = effects; - } - function _thisLayerFunction(name2) { - switch (name2) { - case "ADBE Root Vectors Group": - case "Contents": - case 2: - return _thisLayerFunction.shapeInterface; - case 1: - case 6: - case "Transform": - case "transform": - case "ADBE Transform Group": - return transformInterface; - case 4: - case "ADBE Effect Parade": - case "effects": - case "Effects": - return _thisLayerFunction.effect; - case "ADBE Text Properties": - return _thisLayerFunction.textInterface; - default: - return null; - } - } - _thisLayerFunction.getMatrix = getMatrix; - _thisLayerFunction.invertPoint = invertPoint; - _thisLayerFunction.applyPoint = applyPoint; - _thisLayerFunction.toWorld = toWorld2; - _thisLayerFunction.toWorldVec = toWorldVec; - _thisLayerFunction.fromWorld = fromWorld2; - _thisLayerFunction.fromWorldVec = fromWorldVec; - _thisLayerFunction.toComp = toWorld2; - _thisLayerFunction.fromComp = fromComp2; - _thisLayerFunction.sampleImage = sampleImage; - _thisLayerFunction.sourceRectAtTime = elem2.sourceRectAtTime.bind(elem2); - _thisLayerFunction._elem = elem2; - transformInterface = TransformExpressionInterface(elem2.finalTransform.mProp); - var anchorPointDescriptor = getDescriptor(transformInterface, "anchorPoint"); - Object.defineProperties(_thisLayerFunction, { - hasParent: { - get: function() { - return elem2.hierarchy.length; - } - }, - parent: { - get: function() { - return elem2.hierarchy[0].layerInterface; - } - }, - rotation: getDescriptor(transformInterface, "rotation"), - scale: getDescriptor(transformInterface, "scale"), - position: getDescriptor(transformInterface, "position"), - opacity: getDescriptor(transformInterface, "opacity"), - anchorPoint: anchorPointDescriptor, - anchor_point: anchorPointDescriptor, - transform: { - get: function() { - return transformInterface; - } - }, - active: { - get: function() { - return elem2.isInRange; - } - } - }); - _thisLayerFunction.startTime = elem2.data.st; - _thisLayerFunction.index = elem2.data.ind; - _thisLayerFunction.source = elem2.data.refId; - _thisLayerFunction.height = elem2.data.ty === 0 ? elem2.data.h : 100; - _thisLayerFunction.width = elem2.data.ty === 0 ? elem2.data.w : 100; - _thisLayerFunction.inPoint = elem2.data.ip / elem2.comp.globalData.frameRate; - _thisLayerFunction.outPoint = elem2.data.op / elem2.comp.globalData.frameRate; - _thisLayerFunction._name = elem2.data.nm; - _thisLayerFunction.registerMaskInterface = _registerMaskInterface; - _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface; - return _thisLayerFunction; - }; - }(); - const propertyGroupFactory = /* @__PURE__ */ function() { - return function(interfaceFunction, parentPropertyGroup) { - return function(val2) { - val2 = val2 === void 0 ? 1 : val2; - if (val2 <= 0) { - return interfaceFunction; - } - return parentPropertyGroup(val2 - 1); - }; - }; - }(); - const PropertyInterface = /* @__PURE__ */ function() { - return function(propertyName, propertyGroup) { - var interfaceFunction = { - _name: propertyName - }; - function _propertyGroup(val2) { - val2 = val2 === void 0 ? 1 : val2; - if (val2 <= 0) { - return interfaceFunction; - } - return propertyGroup(val2 - 1); - } - return _propertyGroup; - }; - }(); - const EffectsExpressionInterface = /* @__PURE__ */ function() { - var ob2 = { - createEffectsInterface - }; - function createEffectsInterface(elem2, propertyGroup) { - if (elem2.effectsManager) { - var effectElements = []; - var effectsData = elem2.data.ef; - var i; - var len = elem2.effectsManager.effectElements.length; - for (i = 0; i < len; i += 1) { - effectElements.push(createGroupInterface(effectsData[i], elem2.effectsManager.effectElements[i], propertyGroup, elem2)); - } - var effects = elem2.data.ef || []; - var groupInterface = function(name2) { - i = 0; - len = effects.length; - while (i < len) { - if (name2 === effects[i].nm || name2 === effects[i].mn || name2 === effects[i].ix) { - return effectElements[i]; - } - i += 1; - } - return null; - }; - Object.defineProperty(groupInterface, "numProperties", { - get: function() { - return effects.length; - } - }); - return groupInterface; - } - return null; - } - function createGroupInterface(data2, elements, propertyGroup, elem2) { - function groupInterface(name2) { - var effects = data2.ef; - var i2 = 0; - var len2 = effects.length; - while (i2 < len2) { - if (name2 === effects[i2].nm || name2 === effects[i2].mn || name2 === effects[i2].ix) { - if (effects[i2].ty === 5) { - return effectElements[i2]; - } - return effectElements[i2](); - } - i2 += 1; - } - throw new Error(); - } - var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup); - var effectElements = []; - var i; - var len = data2.ef.length; - for (i = 0; i < len; i += 1) { - if (data2.ef[i].ty === 5) { - effectElements.push(createGroupInterface(data2.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem2)); - } else { - effectElements.push(createValueInterface(elements.effectElements[i], data2.ef[i].ty, elem2, _propertyGroup)); - } - } - if (data2.mn === "ADBE Color Control") { - Object.defineProperty(groupInterface, "color", { - get: function() { - return effectElements[0](); - } - }); - } - Object.defineProperties(groupInterface, { - numProperties: { - get: function() { - return data2.np; - } - }, - _name: { value: data2.nm }, - propertyGroup: { value: _propertyGroup } - }); - groupInterface.enabled = data2.en !== 0; - groupInterface.active = groupInterface.enabled; - return groupInterface; - } - function createValueInterface(element, type, elem2, propertyGroup) { - var expressionProperty = ExpressionPropertyInterface(element.p); - function interfaceFunction() { - if (type === 10) { - return elem2.comp.compInterface(element.p.v); - } - return expressionProperty(); - } - if (element.p.setGroupProperty) { - element.p.setGroupProperty(PropertyInterface("", propertyGroup)); - } - return interfaceFunction; - } - return ob2; - }(); - const CompExpressionInterface = /* @__PURE__ */ function() { - return function(comp2) { - function _thisLayerFunction(name2) { - var i = 0; - var len = comp2.layers.length; - while (i < len) { - if (comp2.layers[i].nm === name2 || comp2.layers[i].ind === name2) { - return comp2.elements[i].layerInterface; - } - i += 1; - } - return null; - } - Object.defineProperty(_thisLayerFunction, "_name", { value: comp2.data.nm }); - _thisLayerFunction.layer = _thisLayerFunction; - _thisLayerFunction.pixelAspect = 1; - _thisLayerFunction.height = comp2.data.h || comp2.globalData.compSize.h; - _thisLayerFunction.width = comp2.data.w || comp2.globalData.compSize.w; - _thisLayerFunction.pixelAspect = 1; - _thisLayerFunction.frameDuration = 1 / comp2.globalData.frameRate; - _thisLayerFunction.displayStartTime = 0; - _thisLayerFunction.numLayers = comp2.layers.length; - return _thisLayerFunction; - }; - }(); - const ShapePathInterface = /* @__PURE__ */ function() { - return function pathInterfaceFactory(shape, view, propertyGroup) { - var prop = view.sh; - function interfaceFunction(val2) { - if (val2 === "Shape" || val2 === "shape" || val2 === "Path" || val2 === "path" || val2 === "ADBE Vector Shape" || val2 === 2) { - return interfaceFunction.path; - } - return null; - } - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - prop.setGroupProperty(PropertyInterface("Path", _propertyGroup)); - Object.defineProperties(interfaceFunction, { - path: { - get: function() { - if (prop.k) { - prop.getValue(); - } - return prop; - } - }, - shape: { - get: function() { - if (prop.k) { - prop.getValue(); - } - return prop; - } - }, - _name: { value: shape.nm }, - ix: { value: shape.ix }, - propertyIndex: { value: shape.ix }, - mn: { value: shape.mn }, - propertyGroup: { value: propertyGroup } - }); - return interfaceFunction; - }; - }(); - const ShapeExpressionInterface = /* @__PURE__ */ function() { - function iterateElements(shapes, view, propertyGroup) { - var arr = []; - var i; - var len = shapes ? shapes.length : 0; - for (i = 0; i < len; i += 1) { - if (shapes[i].ty === "gr") { - arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === "fl") { - arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === "st") { - arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === "tm") { - arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === "tr") { - } else if (shapes[i].ty === "el") { - arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === "sr") { - arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === "sh") { - arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === "rc") { - arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === "rd") { - arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === "rp") { - arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === "gf") { - arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else { - arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup)); - } - } - return arr; - } - function contentsInterfaceFactory(shape, view, propertyGroup) { - var interfaces; - var interfaceFunction = function _interfaceFunction(value2) { - var i = 0; - var len = interfaces.length; - while (i < len) { - if (interfaces[i]._name === value2 || interfaces[i].mn === value2 || interfaces[i].propertyIndex === value2 || interfaces[i].ix === value2 || interfaces[i].ind === value2) { - return interfaces[i]; - } - i += 1; - } - if (typeof value2 === "number") { - return interfaces[value2 - 1]; - } - return null; - }; - interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup); - interfaceFunction.numProperties = interfaces.length; - var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup); - interfaceFunction.transform = transformInterface; - interfaceFunction.propertyIndex = shape.cix; - interfaceFunction._name = shape.nm; - return interfaceFunction; - } - function groupInterfaceFactory(shape, view, propertyGroup) { - var interfaceFunction = function _interfaceFunction(value2) { - switch (value2) { - case "ADBE Vectors Group": - case "Contents": - case 2: - return interfaceFunction.content; - default: - return interfaceFunction.transform; - } - }; - interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - var content2 = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup); - var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup); - interfaceFunction.content = content2; - interfaceFunction.transform = transformInterface; - Object.defineProperty(interfaceFunction, "_name", { - get: function() { - return shape.nm; - } - }); - interfaceFunction.numProperties = shape.np; - interfaceFunction.propertyIndex = shape.ix; - interfaceFunction.nm = shape.nm; - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - function fillInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(val2) { - if (val2 === "Color" || val2 === "color") { - return interfaceFunction.color; - } - if (val2 === "Opacity" || val2 === "opacity") { - return interfaceFunction.opacity; - } - return null; - } - Object.defineProperties(interfaceFunction, { - color: { - get: ExpressionPropertyInterface(view.c) - }, - opacity: { - get: ExpressionPropertyInterface(view.o) - }, - _name: { value: shape.nm }, - mn: { value: shape.mn } - }); - view.c.setGroupProperty(PropertyInterface("Color", propertyGroup)); - view.o.setGroupProperty(PropertyInterface("Opacity", propertyGroup)); - return interfaceFunction; - } - function gradientFillInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(val2) { - if (val2 === "Start Point" || val2 === "start point") { - return interfaceFunction.startPoint; - } - if (val2 === "End Point" || val2 === "end point") { - return interfaceFunction.endPoint; - } - if (val2 === "Opacity" || val2 === "opacity") { - return interfaceFunction.opacity; - } - return null; - } - Object.defineProperties(interfaceFunction, { - startPoint: { - get: ExpressionPropertyInterface(view.s) - }, - endPoint: { - get: ExpressionPropertyInterface(view.e) - }, - opacity: { - get: ExpressionPropertyInterface(view.o) - }, - type: { - get: function() { - return "a"; - } - }, - _name: { value: shape.nm }, - mn: { value: shape.mn } - }); - view.s.setGroupProperty(PropertyInterface("Start Point", propertyGroup)); - view.e.setGroupProperty(PropertyInterface("End Point", propertyGroup)); - view.o.setGroupProperty(PropertyInterface("Opacity", propertyGroup)); - return interfaceFunction; - } - function defaultInterfaceFactory() { - function interfaceFunction() { - return null; - } - return interfaceFunction; - } - function strokeInterfaceFactory(shape, view, propertyGroup) { - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup); - function addPropertyToDashOb(i2) { - Object.defineProperty(dashOb, shape.d[i2].nm, { - get: ExpressionPropertyInterface(view.d.dataProps[i2].p) - }); - } - var i; - var len = shape.d ? shape.d.length : 0; - var dashOb = {}; - for (i = 0; i < len; i += 1) { - addPropertyToDashOb(i); - view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup); - } - function interfaceFunction(val2) { - if (val2 === "Color" || val2 === "color") { - return interfaceFunction.color; - } - if (val2 === "Opacity" || val2 === "opacity") { - return interfaceFunction.opacity; - } - if (val2 === "Stroke Width" || val2 === "stroke width") { - return interfaceFunction.strokeWidth; - } - return null; - } - Object.defineProperties(interfaceFunction, { - color: { - get: ExpressionPropertyInterface(view.c) - }, - opacity: { - get: ExpressionPropertyInterface(view.o) - }, - strokeWidth: { - get: ExpressionPropertyInterface(view.w) - }, - dash: { - get: function() { - return dashOb; - } - }, - _name: { value: shape.nm }, - mn: { value: shape.mn } - }); - view.c.setGroupProperty(PropertyInterface("Color", _propertyGroup)); - view.o.setGroupProperty(PropertyInterface("Opacity", _propertyGroup)); - view.w.setGroupProperty(PropertyInterface("Stroke Width", _propertyGroup)); - return interfaceFunction; - } - function trimInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(val2) { - if (val2 === shape.e.ix || val2 === "End" || val2 === "end") { - return interfaceFunction.end; - } - if (val2 === shape.s.ix) { - return interfaceFunction.start; - } - if (val2 === shape.o.ix) { - return interfaceFunction.offset; - } - return null; - } - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - interfaceFunction.propertyIndex = shape.ix; - view.s.setGroupProperty(PropertyInterface("Start", _propertyGroup)); - view.e.setGroupProperty(PropertyInterface("End", _propertyGroup)); - view.o.setGroupProperty(PropertyInterface("Offset", _propertyGroup)); - interfaceFunction.propertyIndex = shape.ix; - interfaceFunction.propertyGroup = propertyGroup; - Object.defineProperties(interfaceFunction, { - start: { - get: ExpressionPropertyInterface(view.s) - }, - end: { - get: ExpressionPropertyInterface(view.e) - }, - offset: { - get: ExpressionPropertyInterface(view.o) - }, - _name: { value: shape.nm } - }); - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - function transformInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(value2) { - if (shape.a.ix === value2 || value2 === "Anchor Point") { - return interfaceFunction.anchorPoint; - } - if (shape.o.ix === value2 || value2 === "Opacity") { - return interfaceFunction.opacity; - } - if (shape.p.ix === value2 || value2 === "Position") { - return interfaceFunction.position; - } - if (shape.r.ix === value2 || value2 === "Rotation" || value2 === "ADBE Vector Rotation") { - return interfaceFunction.rotation; - } - if (shape.s.ix === value2 || value2 === "Scale") { - return interfaceFunction.scale; - } - if (shape.sk && shape.sk.ix === value2 || value2 === "Skew") { - return interfaceFunction.skew; - } - if (shape.sa && shape.sa.ix === value2 || value2 === "Skew Axis") { - return interfaceFunction.skewAxis; - } - return null; - } - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - view.transform.mProps.o.setGroupProperty(PropertyInterface("Opacity", _propertyGroup)); - view.transform.mProps.p.setGroupProperty(PropertyInterface("Position", _propertyGroup)); - view.transform.mProps.a.setGroupProperty(PropertyInterface("Anchor Point", _propertyGroup)); - view.transform.mProps.s.setGroupProperty(PropertyInterface("Scale", _propertyGroup)); - view.transform.mProps.r.setGroupProperty(PropertyInterface("Rotation", _propertyGroup)); - if (view.transform.mProps.sk) { - view.transform.mProps.sk.setGroupProperty(PropertyInterface("Skew", _propertyGroup)); - view.transform.mProps.sa.setGroupProperty(PropertyInterface("Skew Angle", _propertyGroup)); - } - view.transform.op.setGroupProperty(PropertyInterface("Opacity", _propertyGroup)); - Object.defineProperties(interfaceFunction, { - opacity: { - get: ExpressionPropertyInterface(view.transform.mProps.o) - }, - position: { - get: ExpressionPropertyInterface(view.transform.mProps.p) - }, - anchorPoint: { - get: ExpressionPropertyInterface(view.transform.mProps.a) - }, - scale: { - get: ExpressionPropertyInterface(view.transform.mProps.s) - }, - rotation: { - get: ExpressionPropertyInterface(view.transform.mProps.r) - }, - skew: { - get: ExpressionPropertyInterface(view.transform.mProps.sk) - }, - skewAxis: { - get: ExpressionPropertyInterface(view.transform.mProps.sa) - }, - _name: { value: shape.nm } - }); - interfaceFunction.ty = "tr"; - interfaceFunction.mn = shape.mn; - interfaceFunction.propertyGroup = propertyGroup; - return interfaceFunction; - } - function ellipseInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(value2) { - if (shape.p.ix === value2) { - return interfaceFunction.position; - } - if (shape.s.ix === value2) { - return interfaceFunction.size; - } - return null; - } - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - interfaceFunction.propertyIndex = shape.ix; - var prop = view.sh.ty === "tm" ? view.sh.prop : view.sh; - prop.s.setGroupProperty(PropertyInterface("Size", _propertyGroup)); - prop.p.setGroupProperty(PropertyInterface("Position", _propertyGroup)); - Object.defineProperties(interfaceFunction, { - size: { - get: ExpressionPropertyInterface(prop.s) - }, - position: { - get: ExpressionPropertyInterface(prop.p) - }, - _name: { value: shape.nm } - }); - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - function starInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(value2) { - if (shape.p.ix === value2) { - return interfaceFunction.position; - } - if (shape.r.ix === value2) { - return interfaceFunction.rotation; - } - if (shape.pt.ix === value2) { - return interfaceFunction.points; - } - if (shape.or.ix === value2 || value2 === "ADBE Vector Star Outer Radius") { - return interfaceFunction.outerRadius; - } - if (shape.os.ix === value2) { - return interfaceFunction.outerRoundness; - } - if (shape.ir && (shape.ir.ix === value2 || value2 === "ADBE Vector Star Inner Radius")) { - return interfaceFunction.innerRadius; - } - if (shape.is && shape.is.ix === value2) { - return interfaceFunction.innerRoundness; - } - return null; - } - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - var prop = view.sh.ty === "tm" ? view.sh.prop : view.sh; - interfaceFunction.propertyIndex = shape.ix; - prop.or.setGroupProperty(PropertyInterface("Outer Radius", _propertyGroup)); - prop.os.setGroupProperty(PropertyInterface("Outer Roundness", _propertyGroup)); - prop.pt.setGroupProperty(PropertyInterface("Points", _propertyGroup)); - prop.p.setGroupProperty(PropertyInterface("Position", _propertyGroup)); - prop.r.setGroupProperty(PropertyInterface("Rotation", _propertyGroup)); - if (shape.ir) { - prop.ir.setGroupProperty(PropertyInterface("Inner Radius", _propertyGroup)); - prop.is.setGroupProperty(PropertyInterface("Inner Roundness", _propertyGroup)); - } - Object.defineProperties(interfaceFunction, { - position: { - get: ExpressionPropertyInterface(prop.p) - }, - rotation: { - get: ExpressionPropertyInterface(prop.r) - }, - points: { - get: ExpressionPropertyInterface(prop.pt) - }, - outerRadius: { - get: ExpressionPropertyInterface(prop.or) - }, - outerRoundness: { - get: ExpressionPropertyInterface(prop.os) - }, - innerRadius: { - get: ExpressionPropertyInterface(prop.ir) - }, - innerRoundness: { - get: ExpressionPropertyInterface(prop.is) - }, - _name: { value: shape.nm } - }); - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - function rectInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(value2) { - if (shape.p.ix === value2) { - return interfaceFunction.position; - } - if (shape.r.ix === value2) { - return interfaceFunction.roundness; - } - if (shape.s.ix === value2 || value2 === "Size" || value2 === "ADBE Vector Rect Size") { - return interfaceFunction.size; - } - return null; - } - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - var prop = view.sh.ty === "tm" ? view.sh.prop : view.sh; - interfaceFunction.propertyIndex = shape.ix; - prop.p.setGroupProperty(PropertyInterface("Position", _propertyGroup)); - prop.s.setGroupProperty(PropertyInterface("Size", _propertyGroup)); - prop.r.setGroupProperty(PropertyInterface("Rotation", _propertyGroup)); - Object.defineProperties(interfaceFunction, { - position: { - get: ExpressionPropertyInterface(prop.p) - }, - roundness: { - get: ExpressionPropertyInterface(prop.r) - }, - size: { - get: ExpressionPropertyInterface(prop.s) - }, - _name: { value: shape.nm } - }); - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - function roundedInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(value2) { - if (shape.r.ix === value2 || value2 === "Round Corners 1") { - return interfaceFunction.radius; - } - return null; - } - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - var prop = view; - interfaceFunction.propertyIndex = shape.ix; - prop.rd.setGroupProperty(PropertyInterface("Radius", _propertyGroup)); - Object.defineProperties(interfaceFunction, { - radius: { - get: ExpressionPropertyInterface(prop.rd) - }, - _name: { value: shape.nm } - }); - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - function repeaterInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(value2) { - if (shape.c.ix === value2 || value2 === "Copies") { - return interfaceFunction.copies; - } - if (shape.o.ix === value2 || value2 === "Offset") { - return interfaceFunction.offset; - } - return null; - } - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - var prop = view; - interfaceFunction.propertyIndex = shape.ix; - prop.c.setGroupProperty(PropertyInterface("Copies", _propertyGroup)); - prop.o.setGroupProperty(PropertyInterface("Offset", _propertyGroup)); - Object.defineProperties(interfaceFunction, { - copies: { - get: ExpressionPropertyInterface(prop.c) - }, - offset: { - get: ExpressionPropertyInterface(prop.o) - }, - _name: { value: shape.nm } - }); - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - return function(shapes, view, propertyGroup) { - var interfaces; - function _interfaceFunction(value2) { - if (typeof value2 === "number") { - value2 = value2 === void 0 ? 1 : value2; - if (value2 === 0) { - return propertyGroup; - } - return interfaces[value2 - 1]; - } - var i = 0; - var len = interfaces.length; - while (i < len) { - if (interfaces[i]._name === value2) { - return interfaces[i]; - } - i += 1; - } - return null; - } - function parentGroupWrapper() { - return propertyGroup; - } - _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper); - interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup); - _interfaceFunction.numProperties = interfaces.length; - _interfaceFunction._name = "Contents"; - return _interfaceFunction; - }; - }(); - const TextExpressionInterface = /* @__PURE__ */ function() { - return function(elem2) { - var _prevValue; - var _sourceText; - function _thisLayerFunction(name2) { - switch (name2) { - case "ADBE Text Document": - return _thisLayerFunction.sourceText; - default: - return null; - } - } - Object.defineProperty(_thisLayerFunction, "sourceText", { - get: function() { - elem2.textProperty.getValue(); - var stringValue = elem2.textProperty.currentData.t; - if (stringValue !== _prevValue) { - elem2.textProperty.currentData.t = _prevValue; - _sourceText = new String(stringValue); - _sourceText.value = stringValue || new String(stringValue); - } - return _sourceText; - } - }); - return _thisLayerFunction; - }; - }(); - const getBlendMode = /* @__PURE__ */ function() { - var blendModeEnums = { - 0: "source-over", - 1: "multiply", - 2: "screen", - 3: "overlay", - 4: "darken", - 5: "lighten", - 6: "color-dodge", - 7: "color-burn", - 8: "hard-light", - 9: "soft-light", - 10: "difference", - 11: "exclusion", - 12: "hue", - 13: "saturation", - 14: "color", - 15: "luminosity" - }; - return function(mode) { - return blendModeEnums[mode] || ""; - }; - }(); - extendPrototype([DynamicPropertyContainer], GroupEffect); - GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties; - GroupEffect.prototype.init = function(data2, element) { - this.data = data2; - this.effectElements = []; - this.initDynamicPropertyContainer(element); - var i; - var len = this.data.ef.length; - var eff; - var effects = this.data.ef; - for (i = 0; i < len; i += 1) { - eff = null; - switch (effects[i].ty) { - case 0: - eff = new SliderEffect(effects[i], element, this); - break; - case 1: - eff = new AngleEffect(effects[i], element, this); - break; - case 2: - eff = new ColorEffect(effects[i], element, this); - break; - case 3: - eff = new PointEffect(effects[i], element, this); - break; - case 4: - case 7: - eff = new CheckboxEffect(effects[i], element, this); - break; - case 10: - eff = new LayerIndexEffect(effects[i], element, this); - break; - case 11: - eff = new MaskIndexEffect(effects[i], element, this); - break; - case 5: - eff = new EffectsManager(effects[i], element, this); - break; - default: - eff = new NoValueEffect(effects[i], element, this); - break; - } - if (eff) { - this.effectElements.push(eff); - } - } - }; - BaseElement.prototype = { - checkMasks: function() { - if (!this.data.hasMask) { - return false; - } - var i = 0; - var len = this.data.masksProperties.length; - while (i < len) { - if (this.data.masksProperties[i].mode !== "n" && this.data.masksProperties[i].cl !== false) { - return true; - } - i += 1; - } - return false; - }, - initExpressions: function() { - this.layerInterface = LayerExpressionInterface(this); - if (this.data.hasMask && this.maskManager) { - this.layerInterface.registerMaskInterface(this.maskManager); - } - var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface); - this.layerInterface.registerEffectsInterface(effectsInterface); - if (this.data.ty === 0 || this.data.xt) { - this.compInterface = CompExpressionInterface(this); - } else if (this.data.ty === 4) { - this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface); - this.layerInterface.content = this.layerInterface.shapeInterface; - } else if (this.data.ty === 5) { - this.layerInterface.textInterface = TextExpressionInterface(this); - this.layerInterface.text = this.layerInterface.textInterface; - } - }, - setBlendMode: function() { - var blendModeValue = getBlendMode(this.data.bm); - var elem2 = this.baseElement || this.layerElement; - elem2.style["mix-blend-mode"] = blendModeValue; - }, - initBaseData: function(data2, globalData2, comp2) { - this.globalData = globalData2; - this.comp = comp2; - this.data = data2; - this.layerId = createElementID(); - if (!this.data.sr) { - this.data.sr = 1; - } - this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties); - }, - getType: function() { - return this.type; - }, - sourceRectAtTime: function() { - } - }; - FrameElement.prototype = { - /** - * @function - * Initializes frame related properties. - * - */ - initFrame: function() { - this._isFirstFrame = false; - this.dynamicProperties = []; - this._mdf = false; - }, - /** - * @function - * Calculates all dynamic values - * - * @param {number} num - * current frame number in Layer's time - * @param {boolean} isVisible - * if layers is currently in range - * - */ - prepareProperties: function(num, isVisible) { - var i; - var len = this.dynamicProperties.length; - for (i = 0; i < len; i += 1) { - if (isVisible || this._isParent && this.dynamicProperties[i].propType === "transform") { - this.dynamicProperties[i].getValue(); - if (this.dynamicProperties[i]._mdf) { - this.globalData._mdf = true; - this._mdf = true; - } - } - } - }, - addDynamicProperty: function(prop) { - if (this.dynamicProperties.indexOf(prop) === -1) { - this.dynamicProperties.push(prop); - } - } - }; - const FootageInterface = /* @__PURE__ */ function() { - var outlineInterfaceFactory = function(elem2) { - var currentPropertyName = ""; - var currentProperty = elem2.getFootageData(); - function init() { - currentPropertyName = ""; - currentProperty = elem2.getFootageData(); - return searchProperty; - } - function searchProperty(value2) { - if (currentProperty[value2]) { - currentPropertyName = value2; - currentProperty = currentProperty[value2]; - if (typeof currentProperty === "object") { - return searchProperty; - } - return currentProperty; - } - var propertyNameIndex = value2.indexOf(currentPropertyName); - if (propertyNameIndex !== -1) { - var index2 = parseInt(value2.substr(propertyNameIndex + currentPropertyName.length), 10); - currentProperty = currentProperty[index2]; - if (typeof currentProperty === "object") { - return searchProperty; - } - return currentProperty; - } - return ""; - } - return init; - }; - var dataInterfaceFactory = function(elem2) { - function interfaceFunction(value2) { - if (value2 === "Outline") { - return interfaceFunction.outlineInterface(); - } - return null; - } - interfaceFunction._name = "Outline"; - interfaceFunction.outlineInterface = outlineInterfaceFactory(elem2); - return interfaceFunction; - }; - return function(elem2) { - function _interfaceFunction(value2) { - if (value2 === "Data") { - return _interfaceFunction.dataInterface; - } - return null; - } - _interfaceFunction._name = "Data"; - _interfaceFunction.dataInterface = dataInterfaceFactory(elem2); - return _interfaceFunction; - }; - }(); - FootageElement.prototype.prepareFrame = function() { - }; - extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement); - FootageElement.prototype.getBaseElement = function() { - return null; - }; - FootageElement.prototype.renderFrame = function() { - }; - FootageElement.prototype.destroy = function() { - }; - FootageElement.prototype.initExpressions = function() { - this.layerInterface = FootageInterface(this); - }; - FootageElement.prototype.getFootageData = function() { - return this.footageData; - }; - AudioElement.prototype.prepareFrame = function(num) { - this.prepareRenderableFrame(num, true); - this.prepareProperties(num, true); - if (!this.tm._placeholder) { - var timeRemapped = this.tm.v; - this._currentTime = timeRemapped; - } else { - this._currentTime = num / this.data.sr; - } - this._volume = this.lv.v[0]; - var totalVolume = this._volume * this._volumeMultiplier; - if (this._previousVolume !== totalVolume) { - this._previousVolume = totalVolume; - this.audio.volume(totalVolume); - } - }; - extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement); - AudioElement.prototype.renderFrame = function() { - if (this.isInRange && this._canPlay) { - if (!this._isPlaying) { - this.audio.play(); - this.audio.seek(this._currentTime / this.globalData.frameRate); - this._isPlaying = true; - } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) { - this.audio.seek(this._currentTime / this.globalData.frameRate); - } - } - }; - AudioElement.prototype.show = function() { - }; - AudioElement.prototype.hide = function() { - this.audio.pause(); - this._isPlaying = false; - }; - AudioElement.prototype.pause = function() { - this.audio.pause(); - this._isPlaying = false; - this._canPlay = false; - }; - AudioElement.prototype.resume = function() { - this._canPlay = true; - }; - AudioElement.prototype.setRate = function(rateValue) { - this.audio.rate(rateValue); - }; - AudioElement.prototype.volume = function(volumeValue) { - this._volumeMultiplier = volumeValue; - this._previousVolume = volumeValue * this._volume; - this.audio.volume(this._previousVolume); - }; - AudioElement.prototype.getBaseElement = function() { - return null; - }; - AudioElement.prototype.destroy = function() { - }; - AudioElement.prototype.sourceRectAtTime = function() { - }; - AudioElement.prototype.initExpressions = function() { - }; - BaseRenderer.prototype.checkLayers = function(num) { - var i; - var len = this.layers.length; - var data2; - this.completeLayers = true; - for (i = len - 1; i >= 0; i -= 1) { - if (!this.elements[i]) { - data2 = this.layers[i]; - if (data2.ip - data2.st <= num - this.layers[i].st && data2.op - data2.st > num - this.layers[i].st) { - this.buildItem(i); - } - } - this.completeLayers = this.elements[i] ? this.completeLayers : false; - } - this.checkPendingElements(); - }; - BaseRenderer.prototype.createItem = function(layer) { - switch (layer.ty) { - case 2: - return this.createImage(layer); - case 0: - return this.createComp(layer); - case 1: - return this.createSolid(layer); - case 3: - return this.createNull(layer); - case 4: - return this.createShape(layer); - case 5: - return this.createText(layer); - case 6: - return this.createAudio(layer); - case 13: - return this.createCamera(layer); - case 15: - return this.createFootage(layer); - default: - return this.createNull(layer); - } - }; - BaseRenderer.prototype.createCamera = function() { - throw new Error("You're using a 3d camera. Try the html renderer."); - }; - BaseRenderer.prototype.createAudio = function(data2) { - return new AudioElement(data2, this.globalData, this); - }; - BaseRenderer.prototype.createFootage = function(data2) { - return new FootageElement(data2, this.globalData, this); - }; - BaseRenderer.prototype.buildAllItems = function() { - var i; - var len = this.layers.length; - for (i = 0; i < len; i += 1) { - this.buildItem(i); - } - this.checkPendingElements(); - }; - BaseRenderer.prototype.includeLayers = function(newLayers) { - this.completeLayers = false; - var i; - var len = newLayers.length; - var j; - var jLen = this.layers.length; - for (i = 0; i < len; i += 1) { - j = 0; - while (j < jLen) { - if (this.layers[j].id === newLayers[i].id) { - this.layers[j] = newLayers[i]; - break; - } - j += 1; - } - } - }; - BaseRenderer.prototype.setProjectInterface = function(pInterface) { - this.globalData.projectInterface = pInterface; - }; - BaseRenderer.prototype.initItems = function() { - if (!this.globalData.progressiveLoad) { - this.buildAllItems(); - } - }; - BaseRenderer.prototype.buildElementParenting = function(element, parentName, hierarchy) { - var elements = this.elements; - var layers = this.layers; - var i = 0; - var len = layers.length; - while (i < len) { - if (layers[i].ind == parentName) { - if (!elements[i] || elements[i] === true) { - this.buildItem(i); - this.addPendingElement(element); - } else { - hierarchy.push(elements[i]); - elements[i].setAsParent(); - if (layers[i].parent !== void 0) { - this.buildElementParenting(element, layers[i].parent, hierarchy); - } else { - element.setHierarchy(hierarchy); - } - } - } - i += 1; - } - }; - BaseRenderer.prototype.addPendingElement = function(element) { - this.pendingElements.push(element); - }; - BaseRenderer.prototype.searchExtraCompositions = function(assets) { - var i; - var len = assets.length; - for (i = 0; i < len; i += 1) { - if (assets[i].xt) { - var comp2 = this.createComp(assets[i]); - comp2.initExpressions(); - this.globalData.projectInterface.registerComposition(comp2); - } - } - }; - BaseRenderer.prototype.getElementByPath = function(path) { - var pathValue = path.shift(); - var element; - if (typeof pathValue === "number") { - element = this.elements[pathValue]; - } else { - var i; - var len = this.elements.length; - for (i = 0; i < len; i += 1) { - if (this.elements[i].data.nm === pathValue) { - element = this.elements[i]; - break; - } - } - } - if (path.length === 0) { - return element; - } - return element.getElementByPath(path); - }; - BaseRenderer.prototype.setupGlobalData = function(animData, fontsContainer) { - this.globalData.fontManager = new FontManager(); - this.globalData.fontManager.addChars(animData.chars); - this.globalData.fontManager.addFonts(animData.fonts, fontsContainer); - this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem); - this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem); - this.globalData.imageLoader = this.animationItem.imagePreloader; - this.globalData.audioController = this.animationItem.audioController; - this.globalData.frameId = 0; - this.globalData.frameRate = animData.fr; - this.globalData.nm = animData.nm; - this.globalData.compSize = { - w: animData.w, - h: animData.h - }; - }; - TransformElement.prototype = { - initTransform: function() { - this.finalTransform = { - mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 }, - _matMdf: false, - _opMdf: false, - mat: new Matrix() - }; - if (this.data.ao) { - this.finalTransform.mProp.autoOriented = true; - } - if (this.data.ty !== 11) { - } - }, - renderTransform: function() { - this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame; - this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame; - if (this.hierarchy) { - var mat; - var finalMat = this.finalTransform.mat; - var i = 0; - var len = this.hierarchy.length; - if (!this.finalTransform._matMdf) { - while (i < len) { - if (this.hierarchy[i].finalTransform.mProp._mdf) { - this.finalTransform._matMdf = true; - break; - } - i += 1; - } - } - if (this.finalTransform._matMdf) { - mat = this.finalTransform.mProp.v.props; - finalMat.cloneFromProps(mat); - for (i = 0; i < len; i += 1) { - mat = this.hierarchy[i].finalTransform.mProp.v.props; - finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]); - } - } - } - }, - globalToLocal: function(pt) { - var transforms = []; - transforms.push(this.finalTransform); - var flag = true; - var comp2 = this.comp; - while (flag) { - if (comp2.finalTransform) { - if (comp2.data.hasMask) { - transforms.splice(0, 0, comp2.finalTransform); - } - comp2 = comp2.comp; - } else { - flag = false; - } - } - var i; - var len = transforms.length; - var ptNew; - for (i = 0; i < len; i += 1) { - ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); - pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0]; - } - return pt; - }, - mHelper: new Matrix() - }; - MaskElement.prototype.getMaskProperty = function(pos) { - return this.viewData[pos].prop; - }; - MaskElement.prototype.renderFrame = function(isFirstFrame) { - var finalMat = this.element.finalTransform.mat; - var i; - var len = this.masksProperties.length; - for (i = 0; i < len; i += 1) { - if (this.viewData[i].prop._mdf || isFirstFrame) { - this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]); - } - if (this.viewData[i].op._mdf || isFirstFrame) { - this.viewData[i].elem.setAttribute("fill-opacity", this.viewData[i].op.v); - } - if (this.masksProperties[i].mode !== "n") { - if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) { - this.viewData[i].invRect.setAttribute("transform", finalMat.getInverseMatrix().to2dCSS()); - } - if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) { - var feMorph = this.storedData[i].expan; - if (this.storedData[i].x.v < 0) { - if (this.storedData[i].lastOperator !== "erode") { - this.storedData[i].lastOperator = "erode"; - this.storedData[i].elem.setAttribute("filter", "url(" + getLocationHref() + "#" + this.storedData[i].filterId + ")"); - } - feMorph.setAttribute("radius", -this.storedData[i].x.v); - } else { - if (this.storedData[i].lastOperator !== "dilate") { - this.storedData[i].lastOperator = "dilate"; - this.storedData[i].elem.setAttribute("filter", null); - } - this.storedData[i].elem.setAttribute("stroke-width", this.storedData[i].x.v * 2); - } - } - } - } - }; - MaskElement.prototype.getMaskelement = function() { - return this.maskElement; - }; - MaskElement.prototype.createLayerSolidPath = function() { - var path = "M0,0 "; - path += " h" + this.globalData.compSize.w; - path += " v" + this.globalData.compSize.h; - path += " h-" + this.globalData.compSize.w; - path += " v-" + this.globalData.compSize.h + " "; - return path; - }; - MaskElement.prototype.drawPath = function(pathData, pathNodes, viewData) { - var pathString = " M" + pathNodes.v[0][0] + "," + pathNodes.v[0][1]; - var i; - var len; - len = pathNodes._length; - for (i = 1; i < len; i += 1) { - pathString += " C" + pathNodes.o[i - 1][0] + "," + pathNodes.o[i - 1][1] + " " + pathNodes.i[i][0] + "," + pathNodes.i[i][1] + " " + pathNodes.v[i][0] + "," + pathNodes.v[i][1]; - } - if (pathNodes.c && len > 1) { - pathString += " C" + pathNodes.o[i - 1][0] + "," + pathNodes.o[i - 1][1] + " " + pathNodes.i[0][0] + "," + pathNodes.i[0][1] + " " + pathNodes.v[0][0] + "," + pathNodes.v[0][1]; - } - if (viewData.lastPath !== pathString) { - var pathShapeValue = ""; - if (viewData.elem) { - if (pathNodes.c) { - pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString; - } - viewData.elem.setAttribute("d", pathShapeValue); - } - viewData.lastPath = pathString; - } - }; - MaskElement.prototype.destroy = function() { - this.element = null; - this.globalData = null; - this.maskElement = null; - this.data = null; - this.masksProperties = null; - }; - const filtersFactory = function() { - var ob2 = {}; - ob2.createFilter = createFilter; - ob2.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter; - function createFilter(filId, skipCoordinates) { - var fil = createNS("filter"); - fil.setAttribute("id", filId); - if (skipCoordinates !== true) { - fil.setAttribute("filterUnits", "objectBoundingBox"); - fil.setAttribute("x", "0%"); - fil.setAttribute("y", "0%"); - fil.setAttribute("width", "100%"); - fil.setAttribute("height", "100%"); - } - return fil; - } - function createAlphaToLuminanceFilter() { - var feColorMatrix = createNS("feColorMatrix"); - feColorMatrix.setAttribute("type", "matrix"); - feColorMatrix.setAttribute("color-interpolation-filters", "sRGB"); - feColorMatrix.setAttribute("values", "0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1"); - return feColorMatrix; - } - return ob2; - }(); - const featureSupport = function() { - var ob2 = { - maskType: true - }; - if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent)) { - ob2.maskType = false; - } - return ob2; - }(); - registeredEffects = {}; - idPrefix = "filter_result_"; - SVGEffects.prototype.renderFrame = function(_isFirstFrame) { - var i; - var len = this.filters.length; - for (i = 0; i < len; i += 1) { - this.filters[i].renderFrame(_isFirstFrame); - } - }; - SVGBaseElement.prototype = { - initRendererElement: function() { - this.layerElement = createNS("g"); - }, - createContainerElements: function() { - this.matteElement = createNS("g"); - this.transformedElement = this.layerElement; - this.maskedElement = this.layerElement; - this._sizeChanged = false; - var layerElementParent = null; - var filId; - var fil; - var gg; - if (this.data.td) { - if (this.data.td == 3 || this.data.td == 1) { - var masker = createNS("mask"); - masker.setAttribute("id", this.layerId); - masker.setAttribute("mask-type", this.data.td == 3 ? "luminance" : "alpha"); - masker.appendChild(this.layerElement); - layerElementParent = masker; - this.globalData.defs.appendChild(masker); - if (!featureSupport.maskType && this.data.td == 1) { - masker.setAttribute("mask-type", "luminance"); - filId = createElementID(); - fil = filtersFactory.createFilter(filId); - this.globalData.defs.appendChild(fil); - fil.appendChild(filtersFactory.createAlphaToLuminanceFilter()); - gg = createNS("g"); - gg.appendChild(this.layerElement); - layerElementParent = gg; - masker.appendChild(gg); - gg.setAttribute("filter", "url(" + getLocationHref() + "#" + filId + ")"); - } - } else if (this.data.td == 2) { - var maskGroup = createNS("mask"); - maskGroup.setAttribute("id", this.layerId); - maskGroup.setAttribute("mask-type", "alpha"); - var maskGrouper = createNS("g"); - maskGroup.appendChild(maskGrouper); - filId = createElementID(); - fil = filtersFactory.createFilter(filId); - var feCTr = createNS("feComponentTransfer"); - feCTr.setAttribute("in", "SourceGraphic"); - fil.appendChild(feCTr); - var feFunc = createNS("feFuncA"); - feFunc.setAttribute("type", "table"); - feFunc.setAttribute("tableValues", "1.0 0.0"); - feCTr.appendChild(feFunc); - this.globalData.defs.appendChild(fil); - var alphaRect = createNS("rect"); - alphaRect.setAttribute("width", this.comp.data.w); - alphaRect.setAttribute("height", this.comp.data.h); - alphaRect.setAttribute("x", "0"); - alphaRect.setAttribute("y", "0"); - alphaRect.setAttribute("fill", "#ffffff"); - alphaRect.setAttribute("opacity", "0"); - maskGrouper.setAttribute("filter", "url(" + getLocationHref() + "#" + filId + ")"); - maskGrouper.appendChild(alphaRect); - maskGrouper.appendChild(this.layerElement); - layerElementParent = maskGrouper; - if (!featureSupport.maskType) { - maskGroup.setAttribute("mask-type", "luminance"); - fil.appendChild(filtersFactory.createAlphaToLuminanceFilter()); - gg = createNS("g"); - maskGrouper.appendChild(alphaRect); - gg.appendChild(this.layerElement); - layerElementParent = gg; - maskGrouper.appendChild(gg); - } - this.globalData.defs.appendChild(maskGroup); - } - } else if (this.data.tt) { - this.matteElement.appendChild(this.layerElement); - layerElementParent = this.matteElement; - this.baseElement = this.matteElement; - } else { - this.baseElement = this.layerElement; - } - if (this.data.ln) { - this.layerElement.setAttribute("id", this.data.ln); - } - if (this.data.cl) { - this.layerElement.setAttribute("class", this.data.cl); - } - if (this.data.ty === 0 && !this.data.hd) { - var cp = createNS("clipPath"); - var pt = createNS("path"); - pt.setAttribute("d", "M0,0 L" + this.data.w + ",0 L" + this.data.w + "," + this.data.h + " L0," + this.data.h + "z"); - var clipId = createElementID(); - cp.setAttribute("id", clipId); - cp.appendChild(pt); - this.globalData.defs.appendChild(cp); - if (this.checkMasks()) { - var cpGroup = createNS("g"); - cpGroup.setAttribute("clip-path", "url(" + getLocationHref() + "#" + clipId + ")"); - cpGroup.appendChild(this.layerElement); - this.transformedElement = cpGroup; - if (layerElementParent) { - layerElementParent.appendChild(this.transformedElement); - } else { - this.baseElement = this.transformedElement; - } - } else { - this.layerElement.setAttribute("clip-path", "url(" + getLocationHref() + "#" + clipId + ")"); - } - } - if (this.data.bm !== 0) { - this.setBlendMode(); - } - }, - renderElement: function() { - if (this.finalTransform._matMdf) { - this.transformedElement.setAttribute("transform", this.finalTransform.mat.to2dCSS()); - } - if (this.finalTransform._opMdf) { - this.transformedElement.setAttribute("opacity", this.finalTransform.mProp.o.v); - } - }, - destroyBaseElement: function() { - this.layerElement = null; - this.matteElement = null; - this.maskManager.destroy(); - }, - getBaseElement: function() { - if (this.data.hd) { - return null; - } - return this.baseElement; - }, - createRenderableComponents: function() { - this.maskManager = new MaskElement(this.data, this, this.globalData); - this.renderableEffectsManager = new SVGEffects(this); - }, - setMatte: function(id) { - if (!this.matteElement) { - return; - } - this.matteElement.setAttribute("mask", "url(" + getLocationHref() + "#" + id + ")"); - } - }; - HierarchyElement.prototype = { - /** - * @function - * Initializes hierarchy properties - * - */ - initHierarchy: function() { - this.hierarchy = []; - this._isParent = false; - this.checkParenting(); - }, - /** - * @function - * Sets layer's hierarchy. - * @param {array} hierarch - * layer's parent list - * - */ - setHierarchy: function(hierarchy) { - this.hierarchy = hierarchy; - }, - /** - * @function - * Sets layer as parent. - * - */ - setAsParent: function() { - this._isParent = true; - }, - /** - * @function - * Searches layer's parenting chain - * - */ - checkParenting: function() { - if (this.data.parent !== void 0) { - this.comp.buildElementParenting(this, this.data.parent, []); - } - } - }; - (function() { - var _prototype = { - initElement: function(data2, globalData2, comp2) { - this.initFrame(); - this.initBaseData(data2, globalData2, comp2); - this.initTransform(data2, globalData2, comp2); - this.initHierarchy(); - this.initRenderable(); - this.initRendererElement(); - this.createContainerElements(); - this.createRenderableComponents(); - this.createContent(); - this.hide(); - }, - hide: function() { - if (!this.hidden && (!this.isInRange || this.isTransparent)) { - var elem2 = this.baseElement || this.layerElement; - elem2.style.display = "none"; - this.hidden = true; - } - }, - show: function() { - if (this.isInRange && !this.isTransparent) { - if (!this.data.hd) { - var elem2 = this.baseElement || this.layerElement; - elem2.style.display = "block"; - } - this.hidden = false; - this._isFirstFrame = true; - } - }, - renderFrame: function() { - if (this.data.hd || this.hidden) { - return; - } - this.renderTransform(); - this.renderRenderable(); - this.renderElement(); - this.renderInnerContent(); - if (this._isFirstFrame) { - this._isFirstFrame = false; - } - }, - renderInnerContent: function() { - }, - prepareFrame: function(num) { - this._mdf = false; - this.prepareRenderableFrame(num); - this.prepareProperties(num, this.isInRange); - this.checkTransparency(); - }, - destroy: function() { - this.innerElem = null; - this.destroyBaseElement(); - } - }; - extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement); - })(); - extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement); - IImageElement.prototype.createContent = function() { - var assetPath = this.globalData.getAssetsPath(this.assetData); - this.innerElem = createNS("image"); - this.innerElem.setAttribute("width", this.assetData.w + "px"); - this.innerElem.setAttribute("height", this.assetData.h + "px"); - this.innerElem.setAttribute("preserveAspectRatio", this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio); - this.innerElem.setAttributeNS("http://www.w3.org/1999/xlink", "href", assetPath); - this.layerElement.appendChild(this.innerElem); - }; - IImageElement.prototype.sourceRectAtTime = function() { - return this.sourceRect; - }; - IShapeElement.prototype = { - addShapeToModifiers: function(data2) { - var i; - var len = this.shapeModifiers.length; - for (i = 0; i < len; i += 1) { - this.shapeModifiers[i].addShape(data2); - } - }, - isShapeInAnimatedModifiers: function(data2) { - var i = 0; - var len = this.shapeModifiers.length; - while (i < len) { - if (this.shapeModifiers[i].isAnimatedWithShape(data2)) { - return true; - } - } - return false; - }, - renderModifiers: function() { - if (!this.shapeModifiers.length) { - return; - } - var i; - var len = this.shapes.length; - for (i = 0; i < len; i += 1) { - this.shapes[i].sh.reset(); - } - len = this.shapeModifiers.length; - var shouldBreakProcess; - for (i = len - 1; i >= 0; i -= 1) { - shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); - if (shouldBreakProcess) { - break; - } - } - }, - searchProcessedElement: function(elem2) { - var elements = this.processedElements; - var i = 0; - var len = elements.length; - while (i < len) { - if (elements[i].elem === elem2) { - return elements[i].pos; - } - i += 1; - } - return 0; - }, - addProcessedElement: function(elem2, pos) { - var elements = this.processedElements; - var i = elements.length; - while (i) { - i -= 1; - if (elements[i].elem === elem2) { - elements[i].pos = pos; - return; - } - } - elements.push(new ProcessedElement(elem2, pos)); - }, - prepareFrame: function(num) { - this.prepareRenderableFrame(num); - this.prepareProperties(num, this.isInRange); - } - }; - const lineCapEnum = { - 1: "butt", - 2: "round", - 3: "square" - }; - const lineJoinEnum = { - 1: "miter", - 2: "round", - 3: "bevel" - }; - SVGShapeData.prototype.setAsAnimated = function() { - this._isAnimated = true; - }; - SVGStyleData.prototype.reset = function() { - this.d = ""; - this._mdf = false; - }; - DashProperty.prototype.getValue = function(forceRender) { - if (this.elem.globalData.frameId === this.frameId && !forceRender) { - return; - } - this.frameId = this.elem.globalData.frameId; - this.iterateDynamicProperties(); - this._mdf = this._mdf || forceRender; - if (this._mdf) { - var i = 0; - var len = this.dataProps.length; - if (this.renderer === "svg") { - this.dashStr = ""; - } - for (i = 0; i < len; i += 1) { - if (this.dataProps[i].n !== "o") { - if (this.renderer === "svg") { - this.dashStr += " " + this.dataProps[i].p.v; - } else { - this.dashArray[i] = this.dataProps[i].p.v; - } - } else { - this.dashoffset[0] = this.dataProps[i].p.v; - } - } - } - }; - extendPrototype([DynamicPropertyContainer], DashProperty); - extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData); - extendPrototype([DynamicPropertyContainer], SVGFillStyleData); - extendPrototype([DynamicPropertyContainer], SVGNoStyleData); - GradientProperty.prototype.comparePoints = function(values2, points) { - var i = 0; - var len = this.o.length / 2; - var diff; - while (i < len) { - diff = Math.abs(values2[i * 4] - values2[points * 4 + i * 2]); - if (diff > 0.01) { - return false; - } - i += 1; - } - return true; - }; - GradientProperty.prototype.checkCollapsable = function() { - if (this.o.length / 2 !== this.c.length / 4) { - return false; - } - if (this.data.k.k[0].s) { - var i = 0; - var len = this.data.k.k.length; - while (i < len) { - if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) { - return false; - } - i += 1; - } - } else if (!this.comparePoints(this.data.k.k, this.data.p)) { - return false; - } - return true; - }; - GradientProperty.prototype.getValue = function(forceRender) { - this.prop.getValue(); - this._mdf = false; - this._cmdf = false; - this._omdf = false; - if (this.prop._mdf || forceRender) { - var i; - var len = this.data.p * 4; - var mult; - var val2; - for (i = 0; i < len; i += 1) { - mult = i % 4 === 0 ? 100 : 255; - val2 = Math.round(this.prop.v[i] * mult); - if (this.c[i] !== val2) { - this.c[i] = val2; - this._cmdf = !forceRender; - } - } - if (this.o.length) { - len = this.prop.v.length; - for (i = this.data.p * 4; i < len; i += 1) { - mult = i % 2 === 0 ? 100 : 1; - val2 = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i]; - if (this.o[i - this.data.p * 4] !== val2) { - this.o[i - this.data.p * 4] = val2; - this._omdf = !forceRender; - } - } - } - this._mdf = !forceRender; - } - }; - extendPrototype([DynamicPropertyContainer], GradientProperty); - SVGGradientFillStyleData.prototype.initGradientData = function(elem2, data2, styleOb) { - this.o = PropertyFactory.getProp(elem2, data2.o, 0, 0.01, this); - this.s = PropertyFactory.getProp(elem2, data2.s, 1, null, this); - this.e = PropertyFactory.getProp(elem2, data2.e, 1, null, this); - this.h = PropertyFactory.getProp(elem2, data2.h || { k: 0 }, 0, 0.01, this); - this.a = PropertyFactory.getProp(elem2, data2.a || { k: 0 }, 0, degToRads, this); - this.g = new GradientProperty(elem2, data2.g, this); - this.style = styleOb; - this.stops = []; - this.setGradientData(styleOb.pElem, data2); - this.setGradientOpacity(data2, styleOb); - this._isAnimated = !!this._isAnimated; - }; - SVGGradientFillStyleData.prototype.setGradientData = function(pathElement, data2) { - var gradientId = createElementID(); - var gfill = createNS(data2.t === 1 ? "linearGradient" : "radialGradient"); - gfill.setAttribute("id", gradientId); - gfill.setAttribute("spreadMethod", "pad"); - gfill.setAttribute("gradientUnits", "userSpaceOnUse"); - var stops = []; - var stop; - var j; - var jLen; - jLen = data2.g.p * 4; - for (j = 0; j < jLen; j += 4) { - stop = createNS("stop"); - gfill.appendChild(stop); - stops.push(stop); - } - pathElement.setAttribute(data2.ty === "gf" ? "fill" : "stroke", "url(" + getLocationHref() + "#" + gradientId + ")"); - this.gf = gfill; - this.cst = stops; - }; - SVGGradientFillStyleData.prototype.setGradientOpacity = function(data2, styleOb) { - if (this.g._hasOpacity && !this.g._collapsable) { - var stop; - var j; - var jLen; - var mask2 = createNS("mask"); - var maskElement = createNS("path"); - mask2.appendChild(maskElement); - var opacityId = createElementID(); - var maskId = createElementID(); - mask2.setAttribute("id", maskId); - var opFill = createNS(data2.t === 1 ? "linearGradient" : "radialGradient"); - opFill.setAttribute("id", opacityId); - opFill.setAttribute("spreadMethod", "pad"); - opFill.setAttribute("gradientUnits", "userSpaceOnUse"); - jLen = data2.g.k.k[0].s ? data2.g.k.k[0].s.length : data2.g.k.k.length; - var stops = this.stops; - for (j = data2.g.p * 4; j < jLen; j += 2) { - stop = createNS("stop"); - stop.setAttribute("stop-color", "rgb(255,255,255)"); - opFill.appendChild(stop); - stops.push(stop); - } - maskElement.setAttribute(data2.ty === "gf" ? "fill" : "stroke", "url(" + getLocationHref() + "#" + opacityId + ")"); - if (data2.ty === "gs") { - maskElement.setAttribute("stroke-linecap", lineCapEnum[data2.lc || 2]); - maskElement.setAttribute("stroke-linejoin", lineJoinEnum[data2.lj || 2]); - if (data2.lj === 1) { - maskElement.setAttribute("stroke-miterlimit", data2.ml); - } - } - this.of = opFill; - this.ms = mask2; - this.ost = stops; - this.maskId = maskId; - styleOb.msElem = maskElement; - } - }; - extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData); - extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData); - const buildShapeString = function(pathNodes, length2, closed, mat) { - if (length2 === 0) { - return ""; - } - var _o = pathNodes.o; - var _i = pathNodes.i; - var _v = pathNodes.v; - var i; - var shapeString = " M" + mat.applyToPointStringified(_v[0][0], _v[0][1]); - for (i = 1; i < length2; i += 1) { - shapeString += " C" + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + " " + mat.applyToPointStringified(_i[i][0], _i[i][1]) + " " + mat.applyToPointStringified(_v[i][0], _v[i][1]); - } - if (closed && length2) { - shapeString += " C" + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + " " + mat.applyToPointStringified(_i[0][0], _i[0][1]) + " " + mat.applyToPointStringified(_v[0][0], _v[0][1]); - shapeString += "z"; - } - return shapeString; - }; - const SVGElementsRenderer = function() { - var _identityMatrix = new Matrix(); - var _matrixHelper = new Matrix(); - var ob2 = { - createRenderFunction - }; - function createRenderFunction(data2) { - switch (data2.ty) { - case "fl": - return renderFill; - case "gf": - return renderGradient; - case "gs": - return renderGradientStroke; - case "st": - return renderStroke; - case "sh": - case "el": - case "rc": - case "sr": - return renderPath; - case "tr": - return renderContentTransform; - case "no": - return renderNoop; - default: - return null; - } - } - function renderContentTransform(styleData, itemData, isFirstFrame) { - if (isFirstFrame || itemData.transform.op._mdf) { - itemData.transform.container.setAttribute("opacity", itemData.transform.op.v); - } - if (isFirstFrame || itemData.transform.mProps._mdf) { - itemData.transform.container.setAttribute("transform", itemData.transform.mProps.v.to2dCSS()); - } - } - function renderNoop() { - } - function renderPath(styleData, itemData, isFirstFrame) { - var j; - var jLen; - var pathStringTransformed; - var redraw; - var pathNodes; - var l2; - var lLen = itemData.styles.length; - var lvl = itemData.lvl; - var paths; - var mat; - var props; - var iterations; - var k2; - for (l2 = 0; l2 < lLen; l2 += 1) { - redraw = itemData.sh._mdf || isFirstFrame; - if (itemData.styles[l2].lvl < lvl) { - mat = _matrixHelper.reset(); - iterations = lvl - itemData.styles[l2].lvl; - k2 = itemData.transformers.length - 1; - while (!redraw && iterations > 0) { - redraw = itemData.transformers[k2].mProps._mdf || redraw; - iterations -= 1; - k2 -= 1; - } - if (redraw) { - iterations = lvl - itemData.styles[l2].lvl; - k2 = itemData.transformers.length - 1; - while (iterations > 0) { - props = itemData.transformers[k2].mProps.v.props; - mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]); - iterations -= 1; - k2 -= 1; - } - } - } else { - mat = _identityMatrix; - } - paths = itemData.sh.paths; - jLen = paths._length; - if (redraw) { - pathStringTransformed = ""; - for (j = 0; j < jLen; j += 1) { - pathNodes = paths.shapes[j]; - if (pathNodes && pathNodes._length) { - pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat); - } - } - itemData.caches[l2] = pathStringTransformed; - } else { - pathStringTransformed = itemData.caches[l2]; - } - itemData.styles[l2].d += styleData.hd === true ? "" : pathStringTransformed; - itemData.styles[l2]._mdf = redraw || itemData.styles[l2]._mdf; - } - } - function renderFill(styleData, itemData, isFirstFrame) { - var styleElem = itemData.style; - if (itemData.c._mdf || isFirstFrame) { - styleElem.pElem.setAttribute("fill", "rgb(" + bmFloor(itemData.c.v[0]) + "," + bmFloor(itemData.c.v[1]) + "," + bmFloor(itemData.c.v[2]) + ")"); - } - if (itemData.o._mdf || isFirstFrame) { - styleElem.pElem.setAttribute("fill-opacity", itemData.o.v); - } - } - function renderGradientStroke(styleData, itemData, isFirstFrame) { - renderGradient(styleData, itemData, isFirstFrame); - renderStroke(styleData, itemData, isFirstFrame); - } - function renderGradient(styleData, itemData, isFirstFrame) { - var gfill = itemData.gf; - var hasOpacity = itemData.g._hasOpacity; - var pt1 = itemData.s.v; - var pt2 = itemData.e.v; - if (itemData.o._mdf || isFirstFrame) { - var attr = styleData.ty === "gf" ? "fill-opacity" : "stroke-opacity"; - itemData.style.pElem.setAttribute(attr, itemData.o.v); - } - if (itemData.s._mdf || isFirstFrame) { - var attr1 = styleData.t === 1 ? "x1" : "cx"; - var attr2 = attr1 === "x1" ? "y1" : "cy"; - gfill.setAttribute(attr1, pt1[0]); - gfill.setAttribute(attr2, pt1[1]); - if (hasOpacity && !itemData.g._collapsable) { - itemData.of.setAttribute(attr1, pt1[0]); - itemData.of.setAttribute(attr2, pt1[1]); - } - } - var stops; - var i; - var len; - var stop; - if (itemData.g._cmdf || isFirstFrame) { - stops = itemData.cst; - var cValues = itemData.g.c; - len = stops.length; - for (i = 0; i < len; i += 1) { - stop = stops[i]; - stop.setAttribute("offset", cValues[i * 4] + "%"); - stop.setAttribute("stop-color", "rgb(" + cValues[i * 4 + 1] + "," + cValues[i * 4 + 2] + "," + cValues[i * 4 + 3] + ")"); - } - } - if (hasOpacity && (itemData.g._omdf || isFirstFrame)) { - var oValues = itemData.g.o; - if (itemData.g._collapsable) { - stops = itemData.cst; - } else { - stops = itemData.ost; - } - len = stops.length; - for (i = 0; i < len; i += 1) { - stop = stops[i]; - if (!itemData.g._collapsable) { - stop.setAttribute("offset", oValues[i * 2] + "%"); - } - stop.setAttribute("stop-opacity", oValues[i * 2 + 1]); - } - } - if (styleData.t === 1) { - if (itemData.e._mdf || isFirstFrame) { - gfill.setAttribute("x2", pt2[0]); - gfill.setAttribute("y2", pt2[1]); - if (hasOpacity && !itemData.g._collapsable) { - itemData.of.setAttribute("x2", pt2[0]); - itemData.of.setAttribute("y2", pt2[1]); - } - } - } else { - var rad; - if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) { - rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2)); - gfill.setAttribute("r", rad); - if (hasOpacity && !itemData.g._collapsable) { - itemData.of.setAttribute("r", rad); - } - } - if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) { - if (!rad) { - rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2)); - } - var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]); - var percent = itemData.h.v; - if (percent >= 1) { - percent = 0.99; - } else if (percent <= -1) { - percent = -0.99; - } - var dist = rad * percent; - var x2 = Math.cos(ang + itemData.a.v) * dist + pt1[0]; - var y2 = Math.sin(ang + itemData.a.v) * dist + pt1[1]; - gfill.setAttribute("fx", x2); - gfill.setAttribute("fy", y2); - if (hasOpacity && !itemData.g._collapsable) { - itemData.of.setAttribute("fx", x2); - itemData.of.setAttribute("fy", y2); - } - } - } - } - function renderStroke(styleData, itemData, isFirstFrame) { - var styleElem = itemData.style; - var d = itemData.d; - if (d && (d._mdf || isFirstFrame) && d.dashStr) { - styleElem.pElem.setAttribute("stroke-dasharray", d.dashStr); - styleElem.pElem.setAttribute("stroke-dashoffset", d.dashoffset[0]); - } - if (itemData.c && (itemData.c._mdf || isFirstFrame)) { - styleElem.pElem.setAttribute("stroke", "rgb(" + bmFloor(itemData.c.v[0]) + "," + bmFloor(itemData.c.v[1]) + "," + bmFloor(itemData.c.v[2]) + ")"); - } - if (itemData.o._mdf || isFirstFrame) { - styleElem.pElem.setAttribute("stroke-opacity", itemData.o.v); - } - if (itemData.w._mdf || isFirstFrame) { - styleElem.pElem.setAttribute("stroke-width", itemData.w.v); - if (styleElem.msElem) { - styleElem.msElem.setAttribute("stroke-width", itemData.w.v); - } - } - } - return ob2; - }(); - extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement); - SVGShapeElement.prototype.initSecondaryElement = function() { - }; - SVGShapeElement.prototype.identityMatrix = new Matrix(); - SVGShapeElement.prototype.buildExpressionInterface = function() { - }; - SVGShapeElement.prototype.createContent = function() { - this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true); - this.filterUniqueShapes(); - }; - SVGShapeElement.prototype.filterUniqueShapes = function() { - var i; - var len = this.shapes.length; - var shape; - var j; - var jLen = this.stylesList.length; - var style; - var tempShapes = []; - var areAnimated = false; - for (j = 0; j < jLen; j += 1) { - style = this.stylesList[j]; - areAnimated = false; - tempShapes.length = 0; - for (i = 0; i < len; i += 1) { - shape = this.shapes[i]; - if (shape.styles.indexOf(style) !== -1) { - tempShapes.push(shape); - areAnimated = shape._isAnimated || areAnimated; - } - } - if (tempShapes.length > 1 && areAnimated) { - this.setShapesAsAnimated(tempShapes); - } - } - }; - SVGShapeElement.prototype.setShapesAsAnimated = function(shapes) { - var i; - var len = shapes.length; - for (i = 0; i < len; i += 1) { - shapes[i].setAsAnimated(); - } - }; - SVGShapeElement.prototype.createStyleElement = function(data2, level) { - var elementData; - var styleOb = new SVGStyleData(data2, level); - var pathElement = styleOb.pElem; - if (data2.ty === "st") { - elementData = new SVGStrokeStyleData(this, data2, styleOb); - } else if (data2.ty === "fl") { - elementData = new SVGFillStyleData(this, data2, styleOb); - } else if (data2.ty === "gf" || data2.ty === "gs") { - var GradientConstructor = data2.ty === "gf" ? SVGGradientFillStyleData : SVGGradientStrokeStyleData; - elementData = new GradientConstructor(this, data2, styleOb); - this.globalData.defs.appendChild(elementData.gf); - if (elementData.maskId) { - this.globalData.defs.appendChild(elementData.ms); - this.globalData.defs.appendChild(elementData.of); - pathElement.setAttribute("mask", "url(" + getLocationHref() + "#" + elementData.maskId + ")"); - } - } else if (data2.ty === "no") { - elementData = new SVGNoStyleData(this, data2, styleOb); - } - if (data2.ty === "st" || data2.ty === "gs") { - pathElement.setAttribute("stroke-linecap", lineCapEnum[data2.lc || 2]); - pathElement.setAttribute("stroke-linejoin", lineJoinEnum[data2.lj || 2]); - pathElement.setAttribute("fill-opacity", "0"); - if (data2.lj === 1) { - pathElement.setAttribute("stroke-miterlimit", data2.ml); - } - } - if (data2.r === 2) { - pathElement.setAttribute("fill-rule", "evenodd"); - } - if (data2.ln) { - pathElement.setAttribute("id", data2.ln); - } - if (data2.cl) { - pathElement.setAttribute("class", data2.cl); - } - if (data2.bm) { - pathElement.style["mix-blend-mode"] = getBlendMode(data2.bm); - } - this.stylesList.push(styleOb); - this.addToAnimatedContents(data2, elementData); - return elementData; - }; - SVGShapeElement.prototype.createGroupElement = function(data2) { - var elementData = new ShapeGroupData(); - if (data2.ln) { - elementData.gr.setAttribute("id", data2.ln); - } - if (data2.cl) { - elementData.gr.setAttribute("class", data2.cl); - } - if (data2.bm) { - elementData.gr.style["mix-blend-mode"] = getBlendMode(data2.bm); - } - return elementData; - }; - SVGShapeElement.prototype.createTransformElement = function(data2, container) { - var transformProperty = TransformPropertyFactory.getTransformProperty(this, data2, this); - var elementData = new SVGTransformData(transformProperty, transformProperty.o, container); - this.addToAnimatedContents(data2, elementData); - return elementData; - }; - SVGShapeElement.prototype.createShapeElement = function(data2, ownTransformers, level) { - var ty = 4; - if (data2.ty === "rc") { - ty = 5; - } else if (data2.ty === "el") { - ty = 6; - } else if (data2.ty === "sr") { - ty = 7; - } - var shapeProperty = ShapePropertyFactory.getShapeProp(this, data2, ty, this); - var elementData = new SVGShapeData(ownTransformers, level, shapeProperty); - this.shapes.push(elementData); - this.addShapeToModifiers(elementData); - this.addToAnimatedContents(data2, elementData); - return elementData; - }; - SVGShapeElement.prototype.addToAnimatedContents = function(data2, element) { - var i = 0; - var len = this.animatedContents.length; - while (i < len) { - if (this.animatedContents[i].element === element) { - return; - } - i += 1; - } - this.animatedContents.push({ - fn: SVGElementsRenderer.createRenderFunction(data2), - element, - data: data2 - }); - }; - SVGShapeElement.prototype.setElementStyles = function(elementData) { - var arr = elementData.styles; - var j; - var jLen = this.stylesList.length; - for (j = 0; j < jLen; j += 1) { - if (!this.stylesList[j].closed) { - arr.push(this.stylesList[j]); - } - } - }; - SVGShapeElement.prototype.reloadShapes = function() { - this._isFirstFrame = true; - var i; - var len = this.itemsData.length; - for (i = 0; i < len; i += 1) { - this.prevViewData[i] = this.itemsData[i]; - } - this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true); - this.filterUniqueShapes(); - len = this.dynamicProperties.length; - for (i = 0; i < len; i += 1) { - this.dynamicProperties[i].getValue(); - } - this.renderModifiers(); - }; - SVGShapeElement.prototype.searchShapes = function(arr, itemsData, prevViewData, container, level, transformers, render) { - var ownTransformers = [].concat(transformers); - var i; - var len = arr.length - 1; - var j; - var jLen; - var ownStyles = []; - var ownModifiers = []; - var currentTransform; - var modifier; - var processedPos; - for (i = len; i >= 0; i -= 1) { - processedPos = this.searchProcessedElement(arr[i]); - if (!processedPos) { - arr[i]._render = render; - } else { - itemsData[i] = prevViewData[processedPos - 1]; - } - if (arr[i].ty === "fl" || arr[i].ty === "st" || arr[i].ty === "gf" || arr[i].ty === "gs" || arr[i].ty === "no") { - if (!processedPos) { - itemsData[i] = this.createStyleElement(arr[i], level); - } else { - itemsData[i].style.closed = false; - } - if (arr[i]._render) { - if (itemsData[i].style.pElem.parentNode !== container) { - container.appendChild(itemsData[i].style.pElem); - } - } - ownStyles.push(itemsData[i].style); - } else if (arr[i].ty === "gr") { - if (!processedPos) { - itemsData[i] = this.createGroupElement(arr[i]); - } else { - jLen = itemsData[i].it.length; - for (j = 0; j < jLen; j += 1) { - itemsData[i].prevViewData[j] = itemsData[i].it[j]; - } - } - this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render); - if (arr[i]._render) { - if (itemsData[i].gr.parentNode !== container) { - container.appendChild(itemsData[i].gr); - } - } - } else if (arr[i].ty === "tr") { - if (!processedPos) { - itemsData[i] = this.createTransformElement(arr[i], container); - } - currentTransform = itemsData[i].transform; - ownTransformers.push(currentTransform); - } else if (arr[i].ty === "sh" || arr[i].ty === "rc" || arr[i].ty === "el" || arr[i].ty === "sr") { - if (!processedPos) { - itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level); - } - this.setElementStyles(itemsData[i]); - } else if (arr[i].ty === "tm" || arr[i].ty === "rd" || arr[i].ty === "ms" || arr[i].ty === "pb") { - if (!processedPos) { - modifier = ShapeModifiers.getModifier(arr[i].ty); - modifier.init(this, arr[i]); - itemsData[i] = modifier; - this.shapeModifiers.push(modifier); - } else { - modifier = itemsData[i]; - modifier.closed = false; - } - ownModifiers.push(modifier); - } else if (arr[i].ty === "rp") { - if (!processedPos) { - modifier = ShapeModifiers.getModifier(arr[i].ty); - itemsData[i] = modifier; - modifier.init(this, arr, i, itemsData); - this.shapeModifiers.push(modifier); - render = false; - } else { - modifier = itemsData[i]; - modifier.closed = true; - } - ownModifiers.push(modifier); - } - this.addProcessedElement(arr[i], i + 1); - } - len = ownStyles.length; - for (i = 0; i < len; i += 1) { - ownStyles[i].closed = true; - } - len = ownModifiers.length; - for (i = 0; i < len; i += 1) { - ownModifiers[i].closed = true; - } - }; - SVGShapeElement.prototype.renderInnerContent = function() { - this.renderModifiers(); - var i; - var len = this.stylesList.length; - for (i = 0; i < len; i += 1) { - this.stylesList[i].reset(); - } - this.renderShape(); - for (i = 0; i < len; i += 1) { - if (this.stylesList[i]._mdf || this._isFirstFrame) { - if (this.stylesList[i].msElem) { - this.stylesList[i].msElem.setAttribute("d", this.stylesList[i].d); - this.stylesList[i].d = "M0 0" + this.stylesList[i].d; - } - this.stylesList[i].pElem.setAttribute("d", this.stylesList[i].d || "M0 0"); - } - } - }; - SVGShapeElement.prototype.renderShape = function() { - var i; - var len = this.animatedContents.length; - var animatedContent; - for (i = 0; i < len; i += 1) { - animatedContent = this.animatedContents[i]; - if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) { - animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame); - } - } - }; - SVGShapeElement.prototype.destroy = function() { - this.destroyBaseElement(); - this.shapesData = null; - this.itemsData = null; - }; - LetterProps.prototype.update = function(o, sw, sc, fc, m, p2) { - this._mdf.o = false; - this._mdf.sw = false; - this._mdf.sc = false; - this._mdf.fc = false; - this._mdf.m = false; - this._mdf.p = false; - var updated = false; - if (this.o !== o) { - this.o = o; - this._mdf.o = true; - updated = true; - } - if (this.sw !== sw) { - this.sw = sw; - this._mdf.sw = true; - updated = true; - } - if (this.sc !== sc) { - this.sc = sc; - this._mdf.sc = true; - updated = true; - } - if (this.fc !== fc) { - this.fc = fc; - this._mdf.fc = true; - updated = true; - } - if (this.m !== m) { - this.m = m; - this._mdf.m = true; - updated = true; - } - if (p2.length && (this.p[0] !== p2[0] || this.p[1] !== p2[1] || this.p[4] !== p2[4] || this.p[5] !== p2[5] || this.p[12] !== p2[12] || this.p[13] !== p2[13])) { - this.p = p2; - this._mdf.p = true; - updated = true; - } - return updated; - }; - TextProperty.prototype.defaultBoxWidth = [0, 0]; - TextProperty.prototype.copyData = function(obj, data2) { - for (var s in data2) { - if (Object.prototype.hasOwnProperty.call(data2, s)) { - obj[s] = data2[s]; - } - } - return obj; - }; - TextProperty.prototype.setCurrentData = function(data2) { - if (!data2.__complete) { - this.completeTextData(data2); - } - this.currentData = data2; - this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth; - this._mdf = true; - }; - TextProperty.prototype.searchProperty = function() { - return this.searchKeyframes(); - }; - TextProperty.prototype.searchKeyframes = function() { - this.kf = this.data.d.k.length > 1; - if (this.kf) { - this.addEffect(this.getKeyframeValue.bind(this)); - } - return this.kf; - }; - TextProperty.prototype.addEffect = function(effectFunction) { - this.effectsSequence.push(effectFunction); - this.elem.addDynamicProperty(this); - }; - TextProperty.prototype.getValue = function(_finalValue) { - if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) { - return; - } - this.currentData.t = this.data.d.k[this.keysIndex].s.t; - var currentValue = this.currentData; - var currentIndex = this.keysIndex; - if (this.lock) { - this.setCurrentData(this.currentData); - return; - } - this.lock = true; - this._mdf = false; - var i; - var len = this.effectsSequence.length; - var finalValue = _finalValue || this.data.d.k[this.keysIndex].s; - for (i = 0; i < len; i += 1) { - if (currentIndex !== this.keysIndex) { - finalValue = this.effectsSequence[i](finalValue, finalValue.t); - } else { - finalValue = this.effectsSequence[i](this.currentData, finalValue.t); - } - } - if (currentValue !== finalValue) { - this.setCurrentData(finalValue); - } - this.v = this.currentData; - this.pv = this.v; - this.lock = false; - this.frameId = this.elem.globalData.frameId; - }; - TextProperty.prototype.getKeyframeValue = function() { - var textKeys = this.data.d.k; - var frameNum = this.elem.comp.renderedFrame; - var i = 0; - var len = textKeys.length; - while (i <= len - 1) { - if (i === len - 1 || textKeys[i + 1].t > frameNum) { - break; - } - i += 1; - } - if (this.keysIndex !== i) { - this.keysIndex = i; - } - return this.data.d.k[this.keysIndex].s; - }; - TextProperty.prototype.buildFinalText = function(text2) { - var charactersArray = []; - var i = 0; - var len = text2.length; - var charCode; - var secondCharCode; - var shouldCombine = false; - while (i < len) { - charCode = text2.charCodeAt(i); - if (FontManager.isCombinedCharacter(charCode)) { - charactersArray[charactersArray.length - 1] += text2.charAt(i); - } else if (charCode >= 55296 && charCode <= 56319) { - secondCharCode = text2.charCodeAt(i + 1); - if (secondCharCode >= 56320 && secondCharCode <= 57343) { - if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) { - charactersArray[charactersArray.length - 1] += text2.substr(i, 2); - shouldCombine = false; - } else { - charactersArray.push(text2.substr(i, 2)); - } - i += 1; - } else { - charactersArray.push(text2.charAt(i)); - } - } else if (charCode > 56319) { - secondCharCode = text2.charCodeAt(i + 1); - if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) { - shouldCombine = true; - charactersArray[charactersArray.length - 1] += text2.substr(i, 2); - i += 1; - } else { - charactersArray.push(text2.charAt(i)); - } - } else if (FontManager.isZeroWidthJoiner(charCode)) { - charactersArray[charactersArray.length - 1] += text2.charAt(i); - shouldCombine = true; - } else { - charactersArray.push(text2.charAt(i)); - } - i += 1; - } - return charactersArray; - }; - TextProperty.prototype.completeTextData = function(documentData) { - documentData.__complete = true; - var fontManager = this.elem.globalData.fontManager; - var data2 = this.data; - var letters = []; - var i; - var len; - var newLineFlag; - var index2 = 0; - var val2; - var anchorGrouping = data2.m.g; - var currentSize = 0; - var currentPos = 0; - var currentLine = 0; - var lineWidths = []; - var lineWidth = 0; - var maxLineWidth = 0; - var j; - var jLen; - var fontData = fontManager.getFontByName(documentData.f); - var charData; - var cLength = 0; - var fontProps = getFontProperties(fontData); - documentData.fWeight = fontProps.weight; - documentData.fStyle = fontProps.style; - documentData.finalSize = documentData.s; - documentData.finalText = this.buildFinalText(documentData.t); - len = documentData.finalText.length; - documentData.finalLineHeight = documentData.lh; - var trackingOffset = documentData.tr / 1e3 * documentData.finalSize; - var charCode; - if (documentData.sz) { - var flag = true; - var boxWidth = documentData.sz[0]; - var boxHeight = documentData.sz[1]; - var currentHeight; - var finalText; - while (flag) { - finalText = this.buildFinalText(documentData.t); - currentHeight = 0; - lineWidth = 0; - len = finalText.length; - trackingOffset = documentData.tr / 1e3 * documentData.finalSize; - var lastSpaceIndex = -1; - for (i = 0; i < len; i += 1) { - charCode = finalText[i].charCodeAt(0); - newLineFlag = false; - if (finalText[i] === " ") { - lastSpaceIndex = i; - } else if (charCode === 13 || charCode === 3) { - lineWidth = 0; - newLineFlag = true; - currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2; - } - if (fontManager.chars) { - charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily); - cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100; - } else { - cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize); - } - if (lineWidth + cLength > boxWidth && finalText[i] !== " ") { - if (lastSpaceIndex === -1) { - len += 1; - } else { - i = lastSpaceIndex; - } - currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2; - finalText.splice(i, lastSpaceIndex === i ? 1 : 0, "\r"); - lastSpaceIndex = -1; - lineWidth = 0; - } else { - lineWidth += cLength; - lineWidth += trackingOffset; - } - } - currentHeight += fontData.ascent * documentData.finalSize / 100; - if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) { - documentData.finalSize -= 1; - documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s; - } else { - documentData.finalText = finalText; - len = documentData.finalText.length; - flag = false; - } - } - } - lineWidth = -trackingOffset; - cLength = 0; - var uncollapsedSpaces = 0; - var currentChar; - for (i = 0; i < len; i += 1) { - newLineFlag = false; - currentChar = documentData.finalText[i]; - charCode = currentChar.charCodeAt(0); - if (charCode === 13 || charCode === 3) { - uncollapsedSpaces = 0; - lineWidths.push(lineWidth); - maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth; - lineWidth = -2 * trackingOffset; - val2 = ""; - newLineFlag = true; - currentLine += 1; - } else { - val2 = currentChar; - } - if (fontManager.chars) { - charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily); - cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100; - } else { - cLength = fontManager.measureText(val2, documentData.f, documentData.finalSize); - } - if (currentChar === " ") { - uncollapsedSpaces += cLength + trackingOffset; - } else { - lineWidth += cLength + trackingOffset + uncollapsedSpaces; - uncollapsedSpaces = 0; - } - letters.push({ - l: cLength, - an: cLength, - add: currentSize, - n: newLineFlag, - anIndexes: [], - val: val2, - line: currentLine, - animatorJustifyOffset: 0 - }); - if (anchorGrouping == 2) { - currentSize += cLength; - if (val2 === "" || val2 === " " || i === len - 1) { - if (val2 === "" || val2 === " ") { - currentSize -= cLength; - } - while (currentPos <= i) { - letters[currentPos].an = currentSize; - letters[currentPos].ind = index2; - letters[currentPos].extra = cLength; - currentPos += 1; - } - index2 += 1; - currentSize = 0; - } - } else if (anchorGrouping == 3) { - currentSize += cLength; - if (val2 === "" || i === len - 1) { - if (val2 === "") { - currentSize -= cLength; - } - while (currentPos <= i) { - letters[currentPos].an = currentSize; - letters[currentPos].ind = index2; - letters[currentPos].extra = cLength; - currentPos += 1; - } - currentSize = 0; - index2 += 1; - } - } else { - letters[index2].ind = index2; - letters[index2].extra = 0; - index2 += 1; - } - } - documentData.l = letters; - maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth; - lineWidths.push(lineWidth); - if (documentData.sz) { - documentData.boxWidth = documentData.sz[0]; - documentData.justifyOffset = 0; - } else { - documentData.boxWidth = maxLineWidth; - switch (documentData.j) { - case 1: - documentData.justifyOffset = -documentData.boxWidth; - break; - case 2: - documentData.justifyOffset = -documentData.boxWidth / 2; - break; - default: - documentData.justifyOffset = 0; - } - } - documentData.lineWidths = lineWidths; - var animators = data2.a; - var animatorData; - var letterData; - jLen = animators.length; - var based; - var ind; - var indexes = []; - for (j = 0; j < jLen; j += 1) { - animatorData = animators[j]; - if (animatorData.a.sc) { - documentData.strokeColorAnim = true; - } - if (animatorData.a.sw) { - documentData.strokeWidthAnim = true; - } - if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) { - documentData.fillColorAnim = true; - } - ind = 0; - based = animatorData.s.b; - for (i = 0; i < len; i += 1) { - letterData = letters[i]; - letterData.anIndexes[j] = ind; - if (based == 1 && letterData.val !== "" || based == 2 && letterData.val !== "" && letterData.val !== " " || based == 3 && (letterData.n || letterData.val == " " || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) { - if (animatorData.s.rn === 1) { - indexes.push(ind); - } - ind += 1; - } - } - data2.a[j].s.totalChars = ind; - var currentInd = -1; - var newInd; - if (animatorData.s.rn === 1) { - for (i = 0; i < len; i += 1) { - letterData = letters[i]; - if (currentInd != letterData.anIndexes[j]) { - currentInd = letterData.anIndexes[j]; - newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0]; - } - letterData.anIndexes[j] = newInd; - } - } - } - documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2; - documentData.ls = documentData.ls || 0; - documentData.ascent = fontData.ascent * documentData.finalSize / 100; - }; - TextProperty.prototype.updateDocumentData = function(newData, index2) { - index2 = index2 === void 0 ? this.keysIndex : index2; - var dData = this.copyData({}, this.data.d.k[index2].s); - dData = this.copyData(dData, newData); - this.data.d.k[index2].s = dData; - this.recalculate(index2); - this.elem.addDynamicProperty(this); - }; - TextProperty.prototype.recalculate = function(index2) { - var dData = this.data.d.k[index2].s; - dData.__complete = false; - this.keysIndex = 0; - this._isFirstFrame = true; - this.getValue(dData); - }; - TextProperty.prototype.canResizeFont = function(_canResize) { - this.canResize = _canResize; - this.recalculate(this.keysIndex); - this.elem.addDynamicProperty(this); - }; - TextProperty.prototype.setMinimumFontSize = function(_fontValue) { - this.minimumFontSize = Math.floor(_fontValue) || 1; - this.recalculate(this.keysIndex); - this.elem.addDynamicProperty(this); - }; - const TextSelectorProp = function() { - var max2 = Math.max; - var min = Math.min; - var floor = Math.floor; - function TextSelectorPropFactory(elem2, data2) { - this._currentTextLength = -1; - this.k = false; - this.data = data2; - this.elem = elem2; - this.comp = elem2.comp; - this.finalS = 0; - this.finalE = 0; - this.initDynamicPropertyContainer(elem2); - this.s = PropertyFactory.getProp(elem2, data2.s || { k: 0 }, 0, 0, this); - if ("e" in data2) { - this.e = PropertyFactory.getProp(elem2, data2.e, 0, 0, this); - } else { - this.e = { v: 100 }; - } - this.o = PropertyFactory.getProp(elem2, data2.o || { k: 0 }, 0, 0, this); - this.xe = PropertyFactory.getProp(elem2, data2.xe || { k: 0 }, 0, 0, this); - this.ne = PropertyFactory.getProp(elem2, data2.ne || { k: 0 }, 0, 0, this); - this.sm = PropertyFactory.getProp(elem2, data2.sm || { k: 100 }, 0, 0, this); - this.a = PropertyFactory.getProp(elem2, data2.a, 0, 0.01, this); - if (!this.dynamicProperties.length) { - this.getValue(); - } - } - TextSelectorPropFactory.prototype = { - getMult: function(ind) { - if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) { - this.getValue(); - } - var x1 = 0; - var y1 = 0; - var x2 = 1; - var y2 = 1; - if (this.ne.v > 0) { - x1 = this.ne.v / 100; - } else { - y1 = -this.ne.v / 100; - } - if (this.xe.v > 0) { - x2 = 1 - this.xe.v / 100; - } else { - y2 = 1 + this.xe.v / 100; - } - var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get; - var mult = 0; - var s = this.finalS; - var e = this.finalE; - var type = this.data.sh; - if (type === 2) { - if (e === s) { - mult = ind >= e ? 1 : 0; - } else { - mult = max2(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1)); - } - mult = easer(mult); - } else if (type === 3) { - if (e === s) { - mult = ind >= e ? 0 : 1; - } else { - mult = 1 - max2(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1)); - } - mult = easer(mult); - } else if (type === 4) { - if (e === s) { - mult = 0; - } else { - mult = max2(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1)); - if (mult < 0.5) { - mult *= 2; - } else { - mult = 1 - 2 * (mult - 0.5); - } - } - mult = easer(mult); - } else if (type === 5) { - if (e === s) { - mult = 0; - } else { - var tot = e - s; - ind = min(max2(0, ind + 0.5 - s), e - s); - var x3 = -tot / 2 + ind; - var a2 = tot / 2; - mult = Math.sqrt(1 - x3 * x3 / (a2 * a2)); - } - mult = easer(mult); - } else if (type === 6) { - if (e === s) { - mult = 0; - } else { - ind = min(max2(0, ind + 0.5 - s), e - s); - mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; - } - mult = easer(mult); - } else { - if (ind >= floor(s)) { - if (ind - s < 0) { - mult = max2(0, min(min(e, 1) - (s - ind), 1)); - } else { - mult = max2(0, min(e - ind, 1)); - } - } - mult = easer(mult); - } - if (this.sm.v !== 100) { - var smoothness = this.sm.v * 0.01; - if (smoothness === 0) { - smoothness = 1e-8; - } - var threshold = 0.5 - smoothness * 0.5; - if (mult < threshold) { - mult = 0; - } else { - mult = (mult - threshold) / smoothness; - if (mult > 1) { - mult = 1; - } - } - } - return mult * this.a.v; - }, - getValue: function(newCharsFlag) { - this.iterateDynamicProperties(); - this._mdf = newCharsFlag || this._mdf; - this._currentTextLength = this.elem.textProperty.currentData.l.length || 0; - if (newCharsFlag && this.data.r === 2) { - this.e.v = this._currentTextLength; - } - var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars; - var o = this.o.v / divisor; - var s = this.s.v / divisor + o; - var e = this.e.v / divisor + o; - if (s > e) { - var _s = s; - s = e; - e = _s; - } - this.finalS = s; - this.finalE = e; - } - }; - extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory); - function getTextSelectorProp(elem2, data2, arr) { - return new TextSelectorPropFactory(elem2, data2, arr); - } - return { - getTextSelectorProp - }; - }(); - TextAnimatorProperty.prototype.searchProperties = function() { - var i; - var len = this._textData.a.length; - var animatorProps; - var getProp = PropertyFactory.getProp; - for (i = 0; i < len; i += 1) { - animatorProps = this._textData.a[i]; - this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this); - } - if (this._textData.p && "m" in this._textData.p) { - this._pathData = { - a: getProp(this._elem, this._textData.p.a, 0, 0, this), - f: getProp(this._elem, this._textData.p.f, 0, 0, this), - l: getProp(this._elem, this._textData.p.l, 0, 0, this), - r: getProp(this._elem, this._textData.p.r, 0, 0, this), - p: getProp(this._elem, this._textData.p.p, 0, 0, this), - m: this._elem.maskManager.getMaskProperty(this._textData.p.m) - }; - this._hasMaskedPath = true; - } else { - this._hasMaskedPath = false; - } - this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this); - }; - TextAnimatorProperty.prototype.getMeasures = function(documentData, lettersChangedFlag) { - this.lettersChangedFlag = lettersChangedFlag; - if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) { - return; - } - this._isFirstFrame = false; - var alignment = this._moreOptions.alignment.v; - var animators = this._animatorsData; - var textData = this._textData; - var matrixHelper = this.mHelper; - var renderType = this._renderType; - var renderedLettersCount = this.renderedLetters.length; - var xPos; - var yPos; - var i; - var len; - var letters = documentData.l; - var pathInfo; - var currentLength; - var currentPoint; - var segmentLength; - var flag; - var pointInd; - var segmentInd; - var prevPoint; - var points; - var segments; - var partialLength; - var totalLength; - var perc; - var tanAngle; - var mask2; - if (this._hasMaskedPath) { - mask2 = this._pathData.m; - if (!this._pathData.n || this._pathData._mdf) { - var paths = mask2.v; - if (this._pathData.r.v) { - paths = paths.reverse(); - } - pathInfo = { - tLength: 0, - segments: [] - }; - len = paths._length - 1; - var bezierData; - totalLength = 0; - for (i = 0; i < len; i += 1) { - bezierData = bez.buildBezierData( - paths.v[i], - paths.v[i + 1], - [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], - [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]] - ); - pathInfo.tLength += bezierData.segmentLength; - pathInfo.segments.push(bezierData); - totalLength += bezierData.segmentLength; - } - i = len; - if (mask2.v.c) { - bezierData = bez.buildBezierData( - paths.v[i], - paths.v[0], - [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], - [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]] - ); - pathInfo.tLength += bezierData.segmentLength; - pathInfo.segments.push(bezierData); - totalLength += bezierData.segmentLength; - } - this._pathData.pi = pathInfo; - } - pathInfo = this._pathData.pi; - currentLength = this._pathData.f.v; - segmentInd = 0; - pointInd = 1; - segmentLength = 0; - flag = true; - segments = pathInfo.segments; - if (currentLength < 0 && mask2.v.c) { - if (pathInfo.tLength < Math.abs(currentLength)) { - currentLength = -Math.abs(currentLength) % pathInfo.tLength; - } - segmentInd = segments.length - 1; - points = segments[segmentInd].points; - pointInd = points.length - 1; - while (currentLength < 0) { - currentLength += points[pointInd].partialLength; - pointInd -= 1; - if (pointInd < 0) { - segmentInd -= 1; - points = segments[segmentInd].points; - pointInd = points.length - 1; - } - } - } - points = segments[segmentInd].points; - prevPoint = points[pointInd - 1]; - currentPoint = points[pointInd]; - partialLength = currentPoint.partialLength; - } - len = letters.length; - xPos = 0; - yPos = 0; - var yOff = documentData.finalSize * 1.2 * 0.714; - var firstLine = true; - var animatorProps; - var animatorSelector; - var j; - var jLen; - var letterValue; - jLen = animators.length; - var mult; - var ind = -1; - var offf; - var xPathPos; - var yPathPos; - var initPathPos = currentLength; - var initSegmentInd = segmentInd; - var initPointInd = pointInd; - var currentLine = -1; - var elemOpacity; - var sc; - var sw; - var fc; - var k2; - var letterSw; - var letterSc; - var letterFc; - var letterM = ""; - var letterP = this.defaultPropsArray; - var letterO; - if (documentData.j === 2 || documentData.j === 1) { - var animatorJustifyOffset = 0; - var animatorFirstCharOffset = 0; - var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1; - var lastIndex = 0; - var isNewLine = true; - for (i = 0; i < len; i += 1) { - if (letters[i].n) { - if (animatorJustifyOffset) { - animatorJustifyOffset += animatorFirstCharOffset; - } - while (lastIndex < i) { - letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset; - lastIndex += 1; - } - animatorJustifyOffset = 0; - isNewLine = true; - } else { - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - if (animatorProps.t.propType) { - if (isNewLine && documentData.j === 2) { - animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult; - } - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (mult.length) { - animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult; - } else { - animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult; - } - } - } - isNewLine = false; - } - } - if (animatorJustifyOffset) { - animatorJustifyOffset += animatorFirstCharOffset; - } - while (lastIndex < i) { - letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset; - lastIndex += 1; - } - } - for (i = 0; i < len; i += 1) { - matrixHelper.reset(); - elemOpacity = 1; - if (letters[i].n) { - xPos = 0; - yPos += documentData.yOffset; - yPos += firstLine ? 1 : 0; - currentLength = initPathPos; - firstLine = false; - if (this._hasMaskedPath) { - segmentInd = initSegmentInd; - pointInd = initPointInd; - points = segments[segmentInd].points; - prevPoint = points[pointInd - 1]; - currentPoint = points[pointInd]; - partialLength = currentPoint.partialLength; - segmentLength = 0; - } - letterM = ""; - letterFc = ""; - letterSw = ""; - letterO = ""; - letterP = this.defaultPropsArray; - } else { - if (this._hasMaskedPath) { - if (currentLine !== letters[i].line) { - switch (documentData.j) { - case 1: - currentLength += totalLength - documentData.lineWidths[letters[i].line]; - break; - case 2: - currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2; - break; - default: - break; - } - currentLine = letters[i].line; - } - if (ind !== letters[i].ind) { - if (letters[ind]) { - currentLength += letters[ind].extra; - } - currentLength += letters[i].an / 2; - ind = letters[i].ind; - } - currentLength += alignment[0] * letters[i].an * 5e-3; - var animatorOffset = 0; - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - if (animatorProps.p.propType) { - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (mult.length) { - animatorOffset += animatorProps.p.v[0] * mult[0]; - } else { - animatorOffset += animatorProps.p.v[0] * mult; - } - } - if (animatorProps.a.propType) { - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (mult.length) { - animatorOffset += animatorProps.a.v[0] * mult[0]; - } else { - animatorOffset += animatorProps.a.v[0] * mult; - } - } - } - flag = true; - if (this._pathData.a.v) { - currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1); - currentLength += this._pathData.f.v; - } - while (flag) { - if (segmentLength + partialLength >= currentLength + animatorOffset || !points) { - perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength; - xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc; - yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc; - matrixHelper.translate(-alignment[0] * letters[i].an * 5e-3, -(alignment[1] * yOff) * 0.01); - flag = false; - } else if (points) { - segmentLength += currentPoint.partialLength; - pointInd += 1; - if (pointInd >= points.length) { - pointInd = 0; - segmentInd += 1; - if (!segments[segmentInd]) { - if (mask2.v.c) { - pointInd = 0; - segmentInd = 0; - points = segments[segmentInd].points; - } else { - segmentLength -= currentPoint.partialLength; - points = null; - } - } else { - points = segments[segmentInd].points; - } - } - if (points) { - prevPoint = currentPoint; - currentPoint = points[pointInd]; - partialLength = currentPoint.partialLength; - } - } - } - offf = letters[i].an / 2 - letters[i].add; - matrixHelper.translate(-offf, 0, 0); - } else { - offf = letters[i].an / 2 - letters[i].add; - matrixHelper.translate(-offf, 0, 0); - matrixHelper.translate(-alignment[0] * letters[i].an * 5e-3, -alignment[1] * yOff * 0.01, 0); - } - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - if (animatorProps.t.propType) { - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (xPos !== 0 || documentData.j !== 0) { - if (this._hasMaskedPath) { - if (mult.length) { - currentLength += animatorProps.t.v * mult[0]; - } else { - currentLength += animatorProps.t.v * mult; - } - } else if (mult.length) { - xPos += animatorProps.t.v * mult[0]; - } else { - xPos += animatorProps.t.v * mult; - } - } - } - } - if (documentData.strokeWidthAnim) { - sw = documentData.sw || 0; - } - if (documentData.strokeColorAnim) { - if (documentData.sc) { - sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]]; - } else { - sc = [0, 0, 0]; - } - } - if (documentData.fillColorAnim && documentData.fc) { - fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]]; - } - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - if (animatorProps.a.propType) { - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (mult.length) { - matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]); - } else { - matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult); - } - } - } - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - if (animatorProps.s.propType) { - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (mult.length) { - matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1); - } else { - matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1); - } - } - } - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (animatorProps.sk.propType) { - if (mult.length) { - matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]); - } else { - matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult); - } - } - if (animatorProps.r.propType) { - if (mult.length) { - matrixHelper.rotateZ(-animatorProps.r.v * mult[2]); - } else { - matrixHelper.rotateZ(-animatorProps.r.v * mult); - } - } - if (animatorProps.ry.propType) { - if (mult.length) { - matrixHelper.rotateY(animatorProps.ry.v * mult[1]); - } else { - matrixHelper.rotateY(animatorProps.ry.v * mult); - } - } - if (animatorProps.rx.propType) { - if (mult.length) { - matrixHelper.rotateX(animatorProps.rx.v * mult[0]); - } else { - matrixHelper.rotateX(animatorProps.rx.v * mult); - } - } - if (animatorProps.o.propType) { - if (mult.length) { - elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0]; - } else { - elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult; - } - } - if (documentData.strokeWidthAnim && animatorProps.sw.propType) { - if (mult.length) { - sw += animatorProps.sw.v * mult[0]; - } else { - sw += animatorProps.sw.v * mult; - } - } - if (documentData.strokeColorAnim && animatorProps.sc.propType) { - for (k2 = 0; k2 < 3; k2 += 1) { - if (mult.length) { - sc[k2] += (animatorProps.sc.v[k2] - sc[k2]) * mult[0]; - } else { - sc[k2] += (animatorProps.sc.v[k2] - sc[k2]) * mult; - } - } - } - if (documentData.fillColorAnim && documentData.fc) { - if (animatorProps.fc.propType) { - for (k2 = 0; k2 < 3; k2 += 1) { - if (mult.length) { - fc[k2] += (animatorProps.fc.v[k2] - fc[k2]) * mult[0]; - } else { - fc[k2] += (animatorProps.fc.v[k2] - fc[k2]) * mult; - } - } - } - if (animatorProps.fh.propType) { - if (mult.length) { - fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]); - } else { - fc = addHueToRGB(fc, animatorProps.fh.v * mult); - } - } - if (animatorProps.fs.propType) { - if (mult.length) { - fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]); - } else { - fc = addSaturationToRGB(fc, animatorProps.fs.v * mult); - } - } - if (animatorProps.fb.propType) { - if (mult.length) { - fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]); - } else { - fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult); - } - } - } - } - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - if (animatorProps.p.propType) { - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (this._hasMaskedPath) { - if (mult.length) { - matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]); - } else { - matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult); - } - } else if (mult.length) { - matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]); - } else { - matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult); - } - } - } - if (documentData.strokeWidthAnim) { - letterSw = sw < 0 ? 0 : sw; - } - if (documentData.strokeColorAnim) { - letterSc = "rgb(" + Math.round(sc[0] * 255) + "," + Math.round(sc[1] * 255) + "," + Math.round(sc[2] * 255) + ")"; - } - if (documentData.fillColorAnim && documentData.fc) { - letterFc = "rgb(" + Math.round(fc[0] * 255) + "," + Math.round(fc[1] * 255) + "," + Math.round(fc[2] * 255) + ")"; - } - if (this._hasMaskedPath) { - matrixHelper.translate(0, -documentData.ls); - matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0); - if (this._pathData.p.v) { - tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]); - var rot = Math.atan(tanAngle) * 180 / Math.PI; - if (currentPoint.point[0] < prevPoint.point[0]) { - rot += 180; - } - matrixHelper.rotate(-rot * Math.PI / 180); - } - matrixHelper.translate(xPathPos, yPathPos, 0); - currentLength -= alignment[0] * letters[i].an * 5e-3; - if (letters[i + 1] && ind !== letters[i + 1].ind) { - currentLength += letters[i].an / 2; - currentLength += documentData.tr * 1e-3 * documentData.finalSize; - } - } else { - matrixHelper.translate(xPos, yPos, 0); - if (documentData.ps) { - matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0); - } - switch (documentData.j) { - case 1: - matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0); - break; - case 2: - matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0); - break; - default: - break; - } - matrixHelper.translate(0, -documentData.ls); - matrixHelper.translate(offf, 0, 0); - matrixHelper.translate(alignment[0] * letters[i].an * 5e-3, alignment[1] * yOff * 0.01, 0); - xPos += letters[i].l + documentData.tr * 1e-3 * documentData.finalSize; - } - if (renderType === "html") { - letterM = matrixHelper.toCSS(); - } else if (renderType === "svg") { - letterM = matrixHelper.to2dCSS(); - } else { - letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]]; - } - letterO = elemOpacity; - } - if (renderedLettersCount <= i) { - letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP); - this.renderedLetters.push(letterValue); - renderedLettersCount += 1; - this.lettersChangedFlag = true; - } else { - letterValue = this.renderedLetters[i]; - this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag; - } - } - }; - TextAnimatorProperty.prototype.getValue = function() { - if (this._elem.globalData.frameId === this._frameId) { - return; - } - this._frameId = this._elem.globalData.frameId; - this.iterateDynamicProperties(); - }; - TextAnimatorProperty.prototype.mHelper = new Matrix(); - TextAnimatorProperty.prototype.defaultPropsArray = []; - extendPrototype([DynamicPropertyContainer], TextAnimatorProperty); - ITextElement.prototype.initElement = function(data2, globalData2, comp2) { - this.lettersChangedFlag = true; - this.initFrame(); - this.initBaseData(data2, globalData2, comp2); - this.textProperty = new TextProperty(this, data2.t, this.dynamicProperties); - this.textAnimator = new TextAnimatorProperty(data2.t, this.renderType, this); - this.initTransform(data2, globalData2, comp2); - this.initHierarchy(); - this.initRenderable(); - this.initRendererElement(); - this.createContainerElements(); - this.createRenderableComponents(); - this.createContent(); - this.hide(); - this.textAnimator.searchProperties(this.dynamicProperties); - }; - ITextElement.prototype.prepareFrame = function(num) { - this._mdf = false; - this.prepareRenderableFrame(num); - this.prepareProperties(num, this.isInRange); - if (this.textProperty._mdf || this.textProperty._isFirstFrame) { - this.buildNewText(); - this.textProperty._isFirstFrame = false; - this.textProperty._mdf = false; - } - }; - ITextElement.prototype.createPathShape = function(matrixHelper, shapes) { - var j; - var jLen = shapes.length; - var pathNodes; - var shapeStr = ""; - for (j = 0; j < jLen; j += 1) { - if (shapes[j].ty === "sh") { - pathNodes = shapes[j].ks.k; - shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper); - } - } - return shapeStr; - }; - ITextElement.prototype.updateDocumentData = function(newData, index2) { - this.textProperty.updateDocumentData(newData, index2); - }; - ITextElement.prototype.canResizeFont = function(_canResize) { - this.textProperty.canResizeFont(_canResize); - }; - ITextElement.prototype.setMinimumFontSize = function(_fontSize) { - this.textProperty.setMinimumFontSize(_fontSize); - }; - ITextElement.prototype.applyTextPropertiesToMatrix = function(documentData, matrixHelper, lineNumber, xPos, yPos) { - if (documentData.ps) { - matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0); - } - matrixHelper.translate(0, -documentData.ls, 0); - switch (documentData.j) { - case 1: - matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0); - break; - case 2: - matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0); - break; - default: - break; - } - matrixHelper.translate(xPos, yPos, 0); - }; - ITextElement.prototype.buildColor = function(colorData) { - return "rgb(" + Math.round(colorData[0] * 255) + "," + Math.round(colorData[1] * 255) + "," + Math.round(colorData[2] * 255) + ")"; - }; - ITextElement.prototype.emptyProp = new LetterProps(); - ITextElement.prototype.destroy = function() { - }; - emptyShapeData = { - shapes: [] - }; - extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement); - SVGTextLottieElement.prototype.createContent = function() { - if (this.data.singleShape && !this.globalData.fontManager.chars) { - this.textContainer = createNS("text"); - } - }; - SVGTextLottieElement.prototype.buildTextContents = function(textArray) { - var i = 0; - var len = textArray.length; - var textContents = []; - var currentTextContent = ""; - while (i < len) { - if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) { - textContents.push(currentTextContent); - currentTextContent = ""; - } else { - currentTextContent += textArray[i]; - } - i += 1; - } - textContents.push(currentTextContent); - return textContents; - }; - SVGTextLottieElement.prototype.buildShapeData = function(data2, scale2) { - if (data2.shapes && data2.shapes.length) { - var shape = data2.shapes[0]; - if (shape.it) { - var shapeItem = shape.it[shape.it.length - 1]; - if (shapeItem.s) { - shapeItem.s.k[0] = scale2; - shapeItem.s.k[1] = scale2; - } - } - } - return data2; - }; - SVGTextLottieElement.prototype.buildNewText = function() { - this.addDynamicProperty(this); - var i; - var len; - var documentData = this.textProperty.currentData; - this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0); - if (documentData.fc) { - this.layerElement.setAttribute("fill", this.buildColor(documentData.fc)); - } else { - this.layerElement.setAttribute("fill", "rgba(0,0,0,0)"); - } - if (documentData.sc) { - this.layerElement.setAttribute("stroke", this.buildColor(documentData.sc)); - this.layerElement.setAttribute("stroke-width", documentData.sw); - } - this.layerElement.setAttribute("font-size", documentData.finalSize); - var fontData = this.globalData.fontManager.getFontByName(documentData.f); - if (fontData.fClass) { - this.layerElement.setAttribute("class", fontData.fClass); - } else { - this.layerElement.setAttribute("font-family", fontData.fFamily); - var fWeight = documentData.fWeight; - var fStyle = documentData.fStyle; - this.layerElement.setAttribute("font-style", fStyle); - this.layerElement.setAttribute("font-weight", fWeight); - } - this.layerElement.setAttribute("aria-label", documentData.t); - var letters = documentData.l || []; - var usesGlyphs = !!this.globalData.fontManager.chars; - len = letters.length; - var tSpan; - var matrixHelper = this.mHelper; - var shapeStr = ""; - var singleShape = this.data.singleShape; - var xPos = 0; - var yPos = 0; - var firstLine = true; - var trackingOffset = documentData.tr * 1e-3 * documentData.finalSize; - if (singleShape && !usesGlyphs && !documentData.sz) { - var tElement = this.textContainer; - var justify = "start"; - switch (documentData.j) { - case 1: - justify = "end"; - break; - case 2: - justify = "middle"; - break; - default: - justify = "start"; - break; - } - tElement.setAttribute("text-anchor", justify); - tElement.setAttribute("letter-spacing", trackingOffset); - var textContent = this.buildTextContents(documentData.finalText); - len = textContent.length; - yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0; - for (i = 0; i < len; i += 1) { - tSpan = this.textSpans[i].span || createNS("tspan"); - tSpan.textContent = textContent[i]; - tSpan.setAttribute("x", 0); - tSpan.setAttribute("y", yPos); - tSpan.style.display = "inherit"; - tElement.appendChild(tSpan); - if (!this.textSpans[i]) { - this.textSpans[i] = { - span: null, - glyph: null - }; - } - this.textSpans[i].span = tSpan; - yPos += documentData.finalLineHeight; - } - this.layerElement.appendChild(tElement); - } else { - var cachedSpansLength = this.textSpans.length; - var charData; - for (i = 0; i < len; i += 1) { - if (!this.textSpans[i]) { - this.textSpans[i] = { - span: null, - childSpan: null, - glyph: null - }; - } - if (!usesGlyphs || !singleShape || i === 0) { - tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? "g" : "text"); - if (cachedSpansLength <= i) { - tSpan.setAttribute("stroke-linecap", "butt"); - tSpan.setAttribute("stroke-linejoin", "round"); - tSpan.setAttribute("stroke-miterlimit", "4"); - this.textSpans[i].span = tSpan; - if (usesGlyphs) { - var childSpan = createNS("g"); - tSpan.appendChild(childSpan); - this.textSpans[i].childSpan = childSpan; - } - this.textSpans[i].span = tSpan; - this.layerElement.appendChild(tSpan); - } - tSpan.style.display = "inherit"; - } - matrixHelper.reset(); - if (singleShape) { - if (letters[i].n) { - xPos = -trackingOffset; - yPos += documentData.yOffset; - yPos += firstLine ? 1 : 0; - firstLine = false; - } - this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos); - xPos += letters[i].l || 0; - xPos += trackingOffset; - } - if (usesGlyphs) { - charData = this.globalData.fontManager.getCharData( - documentData.finalText[i], - fontData.fStyle, - this.globalData.fontManager.getFontByName(documentData.f).fFamily - ); - var glyphElement; - if (charData.t === 1) { - glyphElement = new SVGCompElement(charData.data, this.globalData, this); - } else { - var data2 = emptyShapeData; - if (charData.data && charData.data.shapes) { - data2 = this.buildShapeData(charData.data, documentData.finalSize); - } - glyphElement = new SVGShapeElement(data2, this.globalData, this); - } - if (this.textSpans[i].glyph) { - var glyph = this.textSpans[i].glyph; - this.textSpans[i].childSpan.removeChild(glyph.layerElement); - glyph.destroy(); - } - this.textSpans[i].glyph = glyphElement; - glyphElement._debug = true; - glyphElement.prepareFrame(0); - glyphElement.renderFrame(); - this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); - if (charData.t === 1) { - this.textSpans[i].childSpan.setAttribute("transform", "scale(" + documentData.finalSize / 100 + "," + documentData.finalSize / 100 + ")"); - } - } else { - if (singleShape) { - tSpan.setAttribute("transform", "translate(" + matrixHelper.props[12] + "," + matrixHelper.props[13] + ")"); - } - tSpan.textContent = letters[i].val; - tSpan.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve"); - } - } - if (singleShape && tSpan) { - tSpan.setAttribute("d", shapeStr); - } - } - while (i < this.textSpans.length) { - this.textSpans[i].span.style.display = "none"; - i += 1; - } - this._sizeChanged = true; - }; - SVGTextLottieElement.prototype.sourceRectAtTime = function() { - this.prepareFrame(this.comp.renderedFrame - this.data.st); - this.renderInnerContent(); - if (this._sizeChanged) { - this._sizeChanged = false; - var textBox = this.layerElement.getBBox(); - this.bbox = { - top: textBox.y, - left: textBox.x, - width: textBox.width, - height: textBox.height - }; - } - return this.bbox; - }; - SVGTextLottieElement.prototype.getValue = function() { - var i; - var len = this.textSpans.length; - var glyphElement; - this.renderedFrame = this.comp.renderedFrame; - for (i = 0; i < len; i += 1) { - glyphElement = this.textSpans[i].glyph; - if (glyphElement) { - glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st); - if (glyphElement._mdf) { - this._mdf = true; - } - } - } - }; - SVGTextLottieElement.prototype.renderInnerContent = function() { - if (!this.data.singleShape || this._mdf) { - this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag); - if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) { - this._sizeChanged = true; - var i; - var len; - var renderedLetters = this.textAnimator.renderedLetters; - var letters = this.textProperty.currentData.l; - len = letters.length; - var renderedLetter; - var textSpan; - var glyphElement; - for (i = 0; i < len; i += 1) { - if (!letters[i].n) { - renderedLetter = renderedLetters[i]; - textSpan = this.textSpans[i].span; - glyphElement = this.textSpans[i].glyph; - if (glyphElement) { - glyphElement.renderFrame(); - } - if (renderedLetter._mdf.m) { - textSpan.setAttribute("transform", renderedLetter.m); - } - if (renderedLetter._mdf.o) { - textSpan.setAttribute("opacity", renderedLetter.o); - } - if (renderedLetter._mdf.sw) { - textSpan.setAttribute("stroke-width", renderedLetter.sw); - } - if (renderedLetter._mdf.sc) { - textSpan.setAttribute("stroke", renderedLetter.sc); - } - if (renderedLetter._mdf.fc) { - textSpan.setAttribute("fill", renderedLetter.fc); - } - } - } - } - } - }; - extendPrototype([IImageElement], ISolidElement); - ISolidElement.prototype.createContent = function() { - var rect = createNS("rect"); - rect.setAttribute("width", this.data.sw); - rect.setAttribute("height", this.data.sh); - rect.setAttribute("fill", this.data.sc); - this.layerElement.appendChild(rect); - }; - NullElement.prototype.prepareFrame = function(num) { - this.prepareProperties(num, true); - }; - NullElement.prototype.renderFrame = function() { - }; - NullElement.prototype.getBaseElement = function() { - return null; - }; - NullElement.prototype.destroy = function() { - }; - NullElement.prototype.sourceRectAtTime = function() { - }; - NullElement.prototype.hide = function() { - }; - extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement); - extendPrototype([BaseRenderer], SVGRendererBase); - SVGRendererBase.prototype.createNull = function(data2) { - return new NullElement(data2, this.globalData, this); - }; - SVGRendererBase.prototype.createShape = function(data2) { - return new SVGShapeElement(data2, this.globalData, this); - }; - SVGRendererBase.prototype.createText = function(data2) { - return new SVGTextLottieElement(data2, this.globalData, this); - }; - SVGRendererBase.prototype.createImage = function(data2) { - return new IImageElement(data2, this.globalData, this); - }; - SVGRendererBase.prototype.createSolid = function(data2) { - return new ISolidElement(data2, this.globalData, this); - }; - SVGRendererBase.prototype.configAnimation = function(animData) { - this.svgElement.setAttribute("xmlns", "http://www.w3.org/2000/svg"); - if (this.renderConfig.viewBoxSize) { - this.svgElement.setAttribute("viewBox", this.renderConfig.viewBoxSize); - } else { - this.svgElement.setAttribute("viewBox", "0 0 " + animData.w + " " + animData.h); - } - if (!this.renderConfig.viewBoxOnly) { - this.svgElement.setAttribute("width", animData.w); - this.svgElement.setAttribute("height", animData.h); - this.svgElement.style.width = "100%"; - this.svgElement.style.height = "100%"; - this.svgElement.style.transform = "translate3d(0,0,0)"; - this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility; - } - if (this.renderConfig.width) { - this.svgElement.setAttribute("width", this.renderConfig.width); - } - if (this.renderConfig.height) { - this.svgElement.setAttribute("height", this.renderConfig.height); - } - if (this.renderConfig.className) { - this.svgElement.setAttribute("class", this.renderConfig.className); - } - if (this.renderConfig.id) { - this.svgElement.setAttribute("id", this.renderConfig.id); - } - if (this.renderConfig.focusable !== void 0) { - this.svgElement.setAttribute("focusable", this.renderConfig.focusable); - } - this.svgElement.setAttribute("preserveAspectRatio", this.renderConfig.preserveAspectRatio); - this.animationItem.wrapper.appendChild(this.svgElement); - var defs = this.globalData.defs; - this.setupGlobalData(animData, defs); - this.globalData.progressiveLoad = this.renderConfig.progressiveLoad; - this.data = animData; - var maskElement = createNS("clipPath"); - var rect = createNS("rect"); - rect.setAttribute("width", animData.w); - rect.setAttribute("height", animData.h); - rect.setAttribute("x", 0); - rect.setAttribute("y", 0); - var maskId = createElementID(); - maskElement.setAttribute("id", maskId); - maskElement.appendChild(rect); - this.layerElement.setAttribute("clip-path", "url(" + getLocationHref() + "#" + maskId + ")"); - defs.appendChild(maskElement); - this.layers = animData.layers; - this.elements = createSizedArray(animData.layers.length); - }; - SVGRendererBase.prototype.destroy = function() { - if (this.animationItem.wrapper) { - this.animationItem.wrapper.innerText = ""; - } - this.layerElement = null; - this.globalData.defs = null; - var i; - var len = this.layers ? this.layers.length : 0; - for (i = 0; i < len; i += 1) { - if (this.elements[i]) { - this.elements[i].destroy(); - } - } - this.elements.length = 0; - this.destroyed = true; - this.animationItem = null; - }; - SVGRendererBase.prototype.updateContainerSize = function() { - }; - SVGRendererBase.prototype.buildItem = function(pos) { - var elements = this.elements; - if (elements[pos] || this.layers[pos].ty === 99) { - return; - } - elements[pos] = true; - var element = this.createItem(this.layers[pos]); - elements[pos] = element; - if (getExpressionsPlugin()) { - if (this.layers[pos].ty === 0) { - this.globalData.projectInterface.registerComposition(element); - } - element.initExpressions(); - } - this.appendElementInPos(element, pos); - if (this.layers[pos].tt) { - if (!this.elements[pos - 1] || this.elements[pos - 1] === true) { - this.buildItem(pos - 1); - this.addPendingElement(element); - } else { - element.setMatte(elements[pos - 1].layerId); - } - } - }; - SVGRendererBase.prototype.checkPendingElements = function() { - while (this.pendingElements.length) { - var element = this.pendingElements.pop(); - element.checkParenting(); - if (element.data.tt) { - var i = 0; - var len = this.elements.length; - while (i < len) { - if (this.elements[i] === element) { - element.setMatte(this.elements[i - 1].layerId); - break; - } - i += 1; - } - } - } - }; - SVGRendererBase.prototype.renderFrame = function(num) { - if (this.renderedFrame === num || this.destroyed) { - return; - } - if (num === null) { - num = this.renderedFrame; - } else { - this.renderedFrame = num; - } - this.globalData.frameNum = num; - this.globalData.frameId += 1; - this.globalData.projectInterface.currentFrame = num; - this.globalData._mdf = false; - var i; - var len = this.layers.length; - if (!this.completeLayers) { - this.checkLayers(num); - } - for (i = len - 1; i >= 0; i -= 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].prepareFrame(num - this.layers[i].st); - } - } - if (this.globalData._mdf) { - for (i = 0; i < len; i += 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].renderFrame(); - } - } - } - }; - SVGRendererBase.prototype.appendElementInPos = function(element, pos) { - var newElement = element.getBaseElement(); - if (!newElement) { - return; - } - var i = 0; - var nextElement; - while (i < pos) { - if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) { - nextElement = this.elements[i].getBaseElement(); - } - i += 1; - } - if (nextElement) { - this.layerElement.insertBefore(newElement, nextElement); - } else { - this.layerElement.appendChild(newElement); - } - }; - SVGRendererBase.prototype.hide = function() { - this.layerElement.style.display = "none"; - }; - SVGRendererBase.prototype.show = function() { - this.layerElement.style.display = "block"; - }; - extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement); - ICompElement.prototype.initElement = function(data2, globalData2, comp2) { - this.initFrame(); - this.initBaseData(data2, globalData2, comp2); - this.initTransform(data2, globalData2, comp2); - this.initRenderable(); - this.initHierarchy(); - this.initRendererElement(); - this.createContainerElements(); - this.createRenderableComponents(); - if (this.data.xt || !globalData2.progressiveLoad) { - this.buildAllItems(); - } - this.hide(); - }; - ICompElement.prototype.prepareFrame = function(num) { - this._mdf = false; - this.prepareRenderableFrame(num); - this.prepareProperties(num, this.isInRange); - if (!this.isInRange && !this.data.xt) { - return; - } - if (!this.tm._placeholder) { - var timeRemapped = this.tm.v; - if (timeRemapped === this.data.op) { - timeRemapped = this.data.op - 1; - } - this.renderedFrame = timeRemapped; - } else { - this.renderedFrame = num / this.data.sr; - } - var i; - var len = this.elements.length; - if (!this.completeLayers) { - this.checkLayers(this.renderedFrame); - } - for (i = len - 1; i >= 0; i -= 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st); - if (this.elements[i]._mdf) { - this._mdf = true; - } - } - } - }; - ICompElement.prototype.renderInnerContent = function() { - var i; - var len = this.layers.length; - for (i = 0; i < len; i += 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].renderFrame(); - } - } - }; - ICompElement.prototype.setElements = function(elems) { - this.elements = elems; - }; - ICompElement.prototype.getElements = function() { - return this.elements; - }; - ICompElement.prototype.destroyElements = function() { - var i; - var len = this.layers.length; - for (i = 0; i < len; i += 1) { - if (this.elements[i]) { - this.elements[i].destroy(); - } - } - }; - ICompElement.prototype.destroy = function() { - this.destroyElements(); - this.destroyBaseElement(); - }; - extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement); - SVGCompElement.prototype.createComp = function(data2) { - return new SVGCompElement(data2, this.globalData, this); - }; - extendPrototype([SVGRendererBase], SVGRenderer); - SVGRenderer.prototype.createComp = function(data2) { - return new SVGCompElement(data2, this.globalData, this); - }; - CVContextData.prototype.duplicate = function() { - var newLength = this._length * 2; - var currentSavedOp = this.savedOp; - this.savedOp = createTypedArray("float32", newLength); - this.savedOp.set(currentSavedOp); - var i = 0; - for (i = this._length; i < newLength; i += 1) { - this.saved[i] = createTypedArray("float32", 16); - } - this._length = newLength; - }; - CVContextData.prototype.reset = function() { - this.cArrPos = 0; - this.cTr.reset(); - this.cO = 1; - }; - ShapeTransformManager.prototype = { - addTransformSequence: function(transforms) { - var i; - var len = transforms.length; - var key2 = "_"; - for (i = 0; i < len; i += 1) { - key2 += transforms[i].transform.key + "_"; - } - var sequence = this.sequences[key2]; - if (!sequence) { - sequence = { - transforms: [].concat(transforms), - finalTransform: new Matrix(), - _mdf: false - }; - this.sequences[key2] = sequence; - this.sequenceList.push(sequence); - } - return sequence; - }, - processSequence: function(sequence, isFirstFrame) { - var i = 0; - var len = sequence.transforms.length; - var _mdf = isFirstFrame; - while (i < len && !isFirstFrame) { - if (sequence.transforms[i].transform.mProps._mdf) { - _mdf = true; - break; - } - i += 1; - } - if (_mdf) { - var props; - sequence.finalTransform.reset(); - for (i = len - 1; i >= 0; i -= 1) { - props = sequence.transforms[i].transform.mProps.v.props; - sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]); - } - } - sequence._mdf = _mdf; - }, - processSequences: function(isFirstFrame) { - var i; - var len = this.sequenceList.length; - for (i = 0; i < len; i += 1) { - this.processSequence(this.sequenceList[i], isFirstFrame); - } - }, - getNewKey: function() { - this.transform_key_count += 1; - return "_" + this.transform_key_count; - } - }; - CVEffects.prototype.renderFrame = function() { - }; - CVMaskElement.prototype.renderFrame = function() { - if (!this.hasMasks) { - return; - } - var transform2 = this.element.finalTransform.mat; - var ctx = this.element.canvasContext; - var i; - var len = this.masksProperties.length; - var pt; - var pts; - var data2; - ctx.beginPath(); - for (i = 0; i < len; i += 1) { - if (this.masksProperties[i].mode !== "n") { - if (this.masksProperties[i].inv) { - ctx.moveTo(0, 0); - ctx.lineTo(this.element.globalData.compSize.w, 0); - ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h); - ctx.lineTo(0, this.element.globalData.compSize.h); - ctx.lineTo(0, 0); - } - data2 = this.viewData[i].v; - pt = transform2.applyToPointArray(data2.v[0][0], data2.v[0][1], 0); - ctx.moveTo(pt[0], pt[1]); - var j; - var jLen = data2._length; - for (j = 1; j < jLen; j += 1) { - pts = transform2.applyToTriplePoints(data2.o[j - 1], data2.i[j], data2.v[j]); - ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]); - } - pts = transform2.applyToTriplePoints(data2.o[j - 1], data2.i[0], data2.v[0]); - ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]); - } - } - this.element.globalData.renderer.save(true); - ctx.clip(); - }; - CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty; - CVMaskElement.prototype.destroy = function() { - this.element = null; - }; - CVBaseElement.prototype = { - createElements: function() { - }, - initRendererElement: function() { - }, - createContainerElements: function() { - this.canvasContext = this.globalData.canvasContext; - this.renderableEffectsManager = new CVEffects(this); - }, - createContent: function() { - }, - setBlendMode: function() { - var globalData2 = this.globalData; - if (globalData2.blendMode !== this.data.bm) { - globalData2.blendMode = this.data.bm; - var blendModeValue = getBlendMode(this.data.bm); - globalData2.canvasContext.globalCompositeOperation = blendModeValue; - } - }, - createRenderableComponents: function() { - this.maskManager = new CVMaskElement(this.data, this); - }, - hideElement: function() { - if (!this.hidden && (!this.isInRange || this.isTransparent)) { - this.hidden = true; - } - }, - showElement: function() { - if (this.isInRange && !this.isTransparent) { - this.hidden = false; - this._isFirstFrame = true; - this.maskManager._isFirstFrame = true; - } - }, - renderFrame: function() { - if (this.hidden || this.data.hd) { - return; - } - this.renderTransform(); - this.renderRenderable(); - this.setBlendMode(); - var forceRealStack = this.data.ty === 0; - this.globalData.renderer.save(forceRealStack); - this.globalData.renderer.ctxTransform(this.finalTransform.mat.props); - this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v); - this.renderInnerContent(); - this.globalData.renderer.restore(forceRealStack); - if (this.maskManager.hasMasks) { - this.globalData.renderer.restore(true); - } - if (this._isFirstFrame) { - this._isFirstFrame = false; - } - }, - destroy: function() { - this.canvasContext = null; - this.data = null; - this.globalData = null; - this.maskManager.destroy(); - }, - mHelper: new Matrix() - }; - CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement; - CVBaseElement.prototype.show = CVBaseElement.prototype.showElement; - CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated; - extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement); - CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement; - CVShapeElement.prototype.transformHelper = { opacity: 1, _opMdf: false }; - CVShapeElement.prototype.dashResetter = []; - CVShapeElement.prototype.createContent = function() { - this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []); - }; - CVShapeElement.prototype.createStyleElement = function(data2, transforms) { - var styleElem = { - data: data2, - type: data2.ty, - preTransforms: this.transformsManager.addTransformSequence(transforms), - transforms: [], - elements: [], - closed: data2.hd === true - }; - var elementData = {}; - if (data2.ty === "fl" || data2.ty === "st") { - elementData.c = PropertyFactory.getProp(this, data2.c, 1, 255, this); - if (!elementData.c.k) { - styleElem.co = "rgb(" + bmFloor(elementData.c.v[0]) + "," + bmFloor(elementData.c.v[1]) + "," + bmFloor(elementData.c.v[2]) + ")"; - } - } else if (data2.ty === "gf" || data2.ty === "gs") { - elementData.s = PropertyFactory.getProp(this, data2.s, 1, null, this); - elementData.e = PropertyFactory.getProp(this, data2.e, 1, null, this); - elementData.h = PropertyFactory.getProp(this, data2.h || { k: 0 }, 0, 0.01, this); - elementData.a = PropertyFactory.getProp(this, data2.a || { k: 0 }, 0, degToRads, this); - elementData.g = new GradientProperty(this, data2.g, this); - } - elementData.o = PropertyFactory.getProp(this, data2.o, 0, 0.01, this); - if (data2.ty === "st" || data2.ty === "gs") { - styleElem.lc = lineCapEnum[data2.lc || 2]; - styleElem.lj = lineJoinEnum[data2.lj || 2]; - if (data2.lj == 1) { - styleElem.ml = data2.ml; - } - elementData.w = PropertyFactory.getProp(this, data2.w, 0, null, this); - if (!elementData.w.k) { - styleElem.wi = elementData.w.v; - } - if (data2.d) { - var d = new DashProperty(this, data2.d, "canvas", this); - elementData.d = d; - if (!elementData.d.k) { - styleElem.da = elementData.d.dashArray; - styleElem.do = elementData.d.dashoffset[0]; - } - } - } else { - styleElem.r = data2.r === 2 ? "evenodd" : "nonzero"; - } - this.stylesList.push(styleElem); - elementData.style = styleElem; - return elementData; - }; - CVShapeElement.prototype.createGroupElement = function() { - var elementData = { - it: [], - prevViewData: [] - }; - return elementData; - }; - CVShapeElement.prototype.createTransformElement = function(data2) { - var elementData = { - transform: { - opacity: 1, - _opMdf: false, - key: this.transformsManager.getNewKey(), - op: PropertyFactory.getProp(this, data2.o, 0, 0.01, this), - mProps: TransformPropertyFactory.getTransformProperty(this, data2, this) - } - }; - return elementData; - }; - CVShapeElement.prototype.createShapeElement = function(data2) { - var elementData = new CVShapeData(this, data2, this.stylesList, this.transformsManager); - this.shapes.push(elementData); - this.addShapeToModifiers(elementData); - return elementData; - }; - CVShapeElement.prototype.reloadShapes = function() { - this._isFirstFrame = true; - var i; - var len = this.itemsData.length; - for (i = 0; i < len; i += 1) { - this.prevViewData[i] = this.itemsData[i]; - } - this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []); - len = this.dynamicProperties.length; - for (i = 0; i < len; i += 1) { - this.dynamicProperties[i].getValue(); - } - this.renderModifiers(); - this.transformsManager.processSequences(this._isFirstFrame); - }; - CVShapeElement.prototype.addTransformToStyleList = function(transform2) { - var i; - var len = this.stylesList.length; - for (i = 0; i < len; i += 1) { - if (!this.stylesList[i].closed) { - this.stylesList[i].transforms.push(transform2); - } - } - }; - CVShapeElement.prototype.removeTransformFromStyleList = function() { - var i; - var len = this.stylesList.length; - for (i = 0; i < len; i += 1) { - if (!this.stylesList[i].closed) { - this.stylesList[i].transforms.pop(); - } - } - }; - CVShapeElement.prototype.closeStyles = function(styles) { - var i; - var len = styles.length; - for (i = 0; i < len; i += 1) { - styles[i].closed = true; - } - }; - CVShapeElement.prototype.searchShapes = function(arr, itemsData, prevViewData, shouldRender, transforms) { - var i; - var len = arr.length - 1; - var j; - var jLen; - var ownStyles = []; - var ownModifiers = []; - var processedPos; - var modifier; - var currentTransform; - var ownTransforms = [].concat(transforms); - for (i = len; i >= 0; i -= 1) { - processedPos = this.searchProcessedElement(arr[i]); - if (!processedPos) { - arr[i]._shouldRender = shouldRender; - } else { - itemsData[i] = prevViewData[processedPos - 1]; - } - if (arr[i].ty === "fl" || arr[i].ty === "st" || arr[i].ty === "gf" || arr[i].ty === "gs") { - if (!processedPos) { - itemsData[i] = this.createStyleElement(arr[i], ownTransforms); - } else { - itemsData[i].style.closed = false; - } - ownStyles.push(itemsData[i].style); - } else if (arr[i].ty === "gr") { - if (!processedPos) { - itemsData[i] = this.createGroupElement(arr[i]); - } else { - jLen = itemsData[i].it.length; - for (j = 0; j < jLen; j += 1) { - itemsData[i].prevViewData[j] = itemsData[i].it[j]; - } - } - this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms); - } else if (arr[i].ty === "tr") { - if (!processedPos) { - currentTransform = this.createTransformElement(arr[i]); - itemsData[i] = currentTransform; - } - ownTransforms.push(itemsData[i]); - this.addTransformToStyleList(itemsData[i]); - } else if (arr[i].ty === "sh" || arr[i].ty === "rc" || arr[i].ty === "el" || arr[i].ty === "sr") { - if (!processedPos) { - itemsData[i] = this.createShapeElement(arr[i]); - } - } else if (arr[i].ty === "tm" || arr[i].ty === "rd" || arr[i].ty === "pb") { - if (!processedPos) { - modifier = ShapeModifiers.getModifier(arr[i].ty); - modifier.init(this, arr[i]); - itemsData[i] = modifier; - this.shapeModifiers.push(modifier); - } else { - modifier = itemsData[i]; - modifier.closed = false; - } - ownModifiers.push(modifier); - } else if (arr[i].ty === "rp") { - if (!processedPos) { - modifier = ShapeModifiers.getModifier(arr[i].ty); - itemsData[i] = modifier; - modifier.init(this, arr, i, itemsData); - this.shapeModifiers.push(modifier); - shouldRender = false; - } else { - modifier = itemsData[i]; - modifier.closed = true; - } - ownModifiers.push(modifier); - } - this.addProcessedElement(arr[i], i + 1); - } - this.removeTransformFromStyleList(); - this.closeStyles(ownStyles); - len = ownModifiers.length; - for (i = 0; i < len; i += 1) { - ownModifiers[i].closed = true; - } - }; - CVShapeElement.prototype.renderInnerContent = function() { - this.transformHelper.opacity = 1; - this.transformHelper._opMdf = false; - this.renderModifiers(); - this.transformsManager.processSequences(this._isFirstFrame); - this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true); - }; - CVShapeElement.prototype.renderShapeTransform = function(parentTransform, groupTransform) { - if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) { - groupTransform.opacity = parentTransform.opacity; - groupTransform.opacity *= groupTransform.op.v; - groupTransform._opMdf = true; - } - }; - CVShapeElement.prototype.drawLayer = function() { - var i; - var len = this.stylesList.length; - var j; - var jLen; - var k2; - var kLen; - var elems; - var nodes; - var renderer2 = this.globalData.renderer; - var ctx = this.globalData.canvasContext; - var type; - var currentStyle; - for (i = 0; i < len; i += 1) { - currentStyle = this.stylesList[i]; - type = currentStyle.type; - if (!((type === "st" || type === "gs") && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) { - renderer2.save(); - elems = currentStyle.elements; - if (type === "st" || type === "gs") { - ctx.strokeStyle = type === "st" ? currentStyle.co : currentStyle.grd; - ctx.lineWidth = currentStyle.wi; - ctx.lineCap = currentStyle.lc; - ctx.lineJoin = currentStyle.lj; - ctx.miterLimit = currentStyle.ml || 0; - } else { - ctx.fillStyle = type === "fl" ? currentStyle.co : currentStyle.grd; - } - renderer2.ctxOpacity(currentStyle.coOp); - if (type !== "st" && type !== "gs") { - ctx.beginPath(); - } - renderer2.ctxTransform(currentStyle.preTransforms.finalTransform.props); - jLen = elems.length; - for (j = 0; j < jLen; j += 1) { - if (type === "st" || type === "gs") { - ctx.beginPath(); - if (currentStyle.da) { - ctx.setLineDash(currentStyle.da); - ctx.lineDashOffset = currentStyle.do; - } - } - nodes = elems[j].trNodes; - kLen = nodes.length; - for (k2 = 0; k2 < kLen; k2 += 1) { - if (nodes[k2].t === "m") { - ctx.moveTo(nodes[k2].p[0], nodes[k2].p[1]); - } else if (nodes[k2].t === "c") { - ctx.bezierCurveTo(nodes[k2].pts[0], nodes[k2].pts[1], nodes[k2].pts[2], nodes[k2].pts[3], nodes[k2].pts[4], nodes[k2].pts[5]); - } else { - ctx.closePath(); - } - } - if (type === "st" || type === "gs") { - ctx.stroke(); - if (currentStyle.da) { - ctx.setLineDash(this.dashResetter); - } - } - } - if (type !== "st" && type !== "gs") { - ctx.fill(currentStyle.r); - } - renderer2.restore(); - } - } - }; - CVShapeElement.prototype.renderShape = function(parentTransform, items, data2, isMain) { - var i; - var len = items.length - 1; - var groupTransform; - groupTransform = parentTransform; - for (i = len; i >= 0; i -= 1) { - if (items[i].ty === "tr") { - groupTransform = data2[i].transform; - this.renderShapeTransform(parentTransform, groupTransform); - } else if (items[i].ty === "sh" || items[i].ty === "el" || items[i].ty === "rc" || items[i].ty === "sr") { - this.renderPath(items[i], data2[i]); - } else if (items[i].ty === "fl") { - this.renderFill(items[i], data2[i], groupTransform); - } else if (items[i].ty === "st") { - this.renderStroke(items[i], data2[i], groupTransform); - } else if (items[i].ty === "gf" || items[i].ty === "gs") { - this.renderGradientFill(items[i], data2[i], groupTransform); - } else if (items[i].ty === "gr") { - this.renderShape(groupTransform, items[i].it, data2[i].it); - } else if (items[i].ty === "tm") { - } - } - if (isMain) { - this.drawLayer(); - } - }; - CVShapeElement.prototype.renderStyledShape = function(styledShape, shape) { - if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) { - var shapeNodes = styledShape.trNodes; - var paths = shape.paths; - var i; - var len; - var j; - var jLen = paths._length; - shapeNodes.length = 0; - var groupTransformMat = styledShape.transforms.finalTransform; - for (j = 0; j < jLen; j += 1) { - var pathNodes = paths.shapes[j]; - if (pathNodes && pathNodes.v) { - len = pathNodes._length; - for (i = 1; i < len; i += 1) { - if (i === 1) { - shapeNodes.push({ - t: "m", - p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0) - }); - } - shapeNodes.push({ - t: "c", - pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i]) - }); - } - if (len === 1) { - shapeNodes.push({ - t: "m", - p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0) - }); - } - if (pathNodes.c && len) { - shapeNodes.push({ - t: "c", - pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0]) - }); - shapeNodes.push({ - t: "z" - }); - } - } - } - styledShape.trNodes = shapeNodes; - } - }; - CVShapeElement.prototype.renderPath = function(pathData, itemData) { - if (pathData.hd !== true && pathData._shouldRender) { - var i; - var len = itemData.styledShapes.length; - for (i = 0; i < len; i += 1) { - this.renderStyledShape(itemData.styledShapes[i], itemData.sh); - } - } - }; - CVShapeElement.prototype.renderFill = function(styleData, itemData, groupTransform) { - var styleElem = itemData.style; - if (itemData.c._mdf || this._isFirstFrame) { - styleElem.co = "rgb(" + bmFloor(itemData.c.v[0]) + "," + bmFloor(itemData.c.v[1]) + "," + bmFloor(itemData.c.v[2]) + ")"; - } - if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) { - styleElem.coOp = itemData.o.v * groupTransform.opacity; - } - }; - CVShapeElement.prototype.renderGradientFill = function(styleData, itemData, groupTransform) { - var styleElem = itemData.style; - var grd; - if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) { - var ctx = this.globalData.canvasContext; - var pt1 = itemData.s.v; - var pt2 = itemData.e.v; - if (styleData.t === 1) { - grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]); - } else { - var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2)); - var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]); - var percent = itemData.h.v; - if (percent >= 1) { - percent = 0.99; - } else if (percent <= -1) { - percent = -0.99; - } - var dist = rad * percent; - var x2 = Math.cos(ang + itemData.a.v) * dist + pt1[0]; - var y2 = Math.sin(ang + itemData.a.v) * dist + pt1[1]; - grd = ctx.createRadialGradient(x2, y2, 0, pt1[0], pt1[1], rad); - } - var i; - var len = styleData.g.p; - var cValues = itemData.g.c; - var opacity = 1; - for (i = 0; i < len; i += 1) { - if (itemData.g._hasOpacity && itemData.g._collapsable) { - opacity = itemData.g.o[i * 2 + 1]; - } - grd.addColorStop(cValues[i * 4] / 100, "rgba(" + cValues[i * 4 + 1] + "," + cValues[i * 4 + 2] + "," + cValues[i * 4 + 3] + "," + opacity + ")"); - } - styleElem.grd = grd; - } - styleElem.coOp = itemData.o.v * groupTransform.opacity; - }; - CVShapeElement.prototype.renderStroke = function(styleData, itemData, groupTransform) { - var styleElem = itemData.style; - var d = itemData.d; - if (d && (d._mdf || this._isFirstFrame)) { - styleElem.da = d.dashArray; - styleElem.do = d.dashoffset[0]; - } - if (itemData.c._mdf || this._isFirstFrame) { - styleElem.co = "rgb(" + bmFloor(itemData.c.v[0]) + "," + bmFloor(itemData.c.v[1]) + "," + bmFloor(itemData.c.v[2]) + ")"; - } - if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) { - styleElem.coOp = itemData.o.v * groupTransform.opacity; - } - if (itemData.w._mdf || this._isFirstFrame) { - styleElem.wi = itemData.w.v; - } - }; - CVShapeElement.prototype.destroy = function() { - this.shapesData = null; - this.globalData = null; - this.canvasContext = null; - this.stylesList.length = 0; - this.itemsData.length = 0; - }; - extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement); - CVTextElement.prototype.tHelper = createTag("canvas").getContext("2d"); - CVTextElement.prototype.buildNewText = function() { - var documentData = this.textProperty.currentData; - this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0); - var hasFill = false; - if (documentData.fc) { - hasFill = true; - this.values.fill = this.buildColor(documentData.fc); - } else { - this.values.fill = "rgba(0,0,0,0)"; - } - this.fill = hasFill; - var hasStroke = false; - if (documentData.sc) { - hasStroke = true; - this.values.stroke = this.buildColor(documentData.sc); - this.values.sWidth = documentData.sw; - } - var fontData = this.globalData.fontManager.getFontByName(documentData.f); - var i; - var len; - var letters = documentData.l; - var matrixHelper = this.mHelper; - this.stroke = hasStroke; - this.values.fValue = documentData.finalSize + "px " + this.globalData.fontManager.getFontByName(documentData.f).fFamily; - len = documentData.finalText.length; - var charData; - var shapeData; - var k2; - var kLen; - var shapes; - var j; - var jLen; - var pathNodes; - var commands; - var pathArr; - var singleShape = this.data.singleShape; - var trackingOffset = documentData.tr * 1e-3 * documentData.finalSize; - var xPos = 0; - var yPos = 0; - var firstLine = true; - var cnt = 0; - for (i = 0; i < len; i += 1) { - charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily); - shapeData = charData && charData.data || {}; - matrixHelper.reset(); - if (singleShape && letters[i].n) { - xPos = -trackingOffset; - yPos += documentData.yOffset; - yPos += firstLine ? 1 : 0; - firstLine = false; - } - shapes = shapeData.shapes ? shapeData.shapes[0].it : []; - jLen = shapes.length; - matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100); - if (singleShape) { - this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos); - } - commands = createSizedArray(jLen - 1); - var commandsCounter = 0; - for (j = 0; j < jLen; j += 1) { - if (shapes[j].ty === "sh") { - kLen = shapes[j].ks.k.i.length; - pathNodes = shapes[j].ks.k; - pathArr = []; - for (k2 = 1; k2 < kLen; k2 += 1) { - if (k2 === 1) { - pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0)); - } - pathArr.push(matrixHelper.applyToX(pathNodes.o[k2 - 1][0], pathNodes.o[k2 - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k2 - 1][0], pathNodes.o[k2 - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k2][0], pathNodes.i[k2][1], 0), matrixHelper.applyToY(pathNodes.i[k2][0], pathNodes.i[k2][1], 0), matrixHelper.applyToX(pathNodes.v[k2][0], pathNodes.v[k2][1], 0), matrixHelper.applyToY(pathNodes.v[k2][0], pathNodes.v[k2][1], 0)); - } - pathArr.push(matrixHelper.applyToX(pathNodes.o[k2 - 1][0], pathNodes.o[k2 - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k2 - 1][0], pathNodes.o[k2 - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0)); - commands[commandsCounter] = pathArr; - commandsCounter += 1; - } - } - if (singleShape) { - xPos += letters[i].l; - xPos += trackingOffset; - } - if (this.textSpans[cnt]) { - this.textSpans[cnt].elem = commands; - } else { - this.textSpans[cnt] = { elem: commands }; - } - cnt += 1; - } - }; - CVTextElement.prototype.renderInnerContent = function() { - var ctx = this.canvasContext; - ctx.font = this.values.fValue; - ctx.lineCap = "butt"; - ctx.lineJoin = "miter"; - ctx.miterLimit = 4; - if (!this.data.singleShape) { - this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag); - } - var i; - var len; - var j; - var jLen; - var k2; - var kLen; - var renderedLetters = this.textAnimator.renderedLetters; - var letters = this.textProperty.currentData.l; - len = letters.length; - var renderedLetter; - var lastFill = null; - var lastStroke = null; - var lastStrokeW = null; - var commands; - var pathArr; - for (i = 0; i < len; i += 1) { - if (!letters[i].n) { - renderedLetter = renderedLetters[i]; - if (renderedLetter) { - this.globalData.renderer.save(); - this.globalData.renderer.ctxTransform(renderedLetter.p); - this.globalData.renderer.ctxOpacity(renderedLetter.o); - } - if (this.fill) { - if (renderedLetter && renderedLetter.fc) { - if (lastFill !== renderedLetter.fc) { - lastFill = renderedLetter.fc; - ctx.fillStyle = renderedLetter.fc; - } - } else if (lastFill !== this.values.fill) { - lastFill = this.values.fill; - ctx.fillStyle = this.values.fill; - } - commands = this.textSpans[i].elem; - jLen = commands.length; - this.globalData.canvasContext.beginPath(); - for (j = 0; j < jLen; j += 1) { - pathArr = commands[j]; - kLen = pathArr.length; - this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]); - for (k2 = 2; k2 < kLen; k2 += 6) { - this.globalData.canvasContext.bezierCurveTo(pathArr[k2], pathArr[k2 + 1], pathArr[k2 + 2], pathArr[k2 + 3], pathArr[k2 + 4], pathArr[k2 + 5]); - } - } - this.globalData.canvasContext.closePath(); - this.globalData.canvasContext.fill(); - } - if (this.stroke) { - if (renderedLetter && renderedLetter.sw) { - if (lastStrokeW !== renderedLetter.sw) { - lastStrokeW = renderedLetter.sw; - ctx.lineWidth = renderedLetter.sw; - } - } else if (lastStrokeW !== this.values.sWidth) { - lastStrokeW = this.values.sWidth; - ctx.lineWidth = this.values.sWidth; - } - if (renderedLetter && renderedLetter.sc) { - if (lastStroke !== renderedLetter.sc) { - lastStroke = renderedLetter.sc; - ctx.strokeStyle = renderedLetter.sc; - } - } else if (lastStroke !== this.values.stroke) { - lastStroke = this.values.stroke; - ctx.strokeStyle = this.values.stroke; - } - commands = this.textSpans[i].elem; - jLen = commands.length; - this.globalData.canvasContext.beginPath(); - for (j = 0; j < jLen; j += 1) { - pathArr = commands[j]; - kLen = pathArr.length; - this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]); - for (k2 = 2; k2 < kLen; k2 += 6) { - this.globalData.canvasContext.bezierCurveTo(pathArr[k2], pathArr[k2 + 1], pathArr[k2 + 2], pathArr[k2 + 3], pathArr[k2 + 4], pathArr[k2 + 5]); - } - } - this.globalData.canvasContext.closePath(); - this.globalData.canvasContext.stroke(); - } - if (renderedLetter) { - this.globalData.renderer.restore(); - } - } - } - }; - extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement); - CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement; - CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame; - CVImageElement.prototype.createContent = function() { - if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) { - var canvas = createTag("canvas"); - canvas.width = this.assetData.w; - canvas.height = this.assetData.h; - var ctx = canvas.getContext("2d"); - var imgW = this.img.width; - var imgH = this.img.height; - var imgRel = imgW / imgH; - var canvasRel = this.assetData.w / this.assetData.h; - var widthCrop; - var heightCrop; - var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio; - if (imgRel > canvasRel && par === "xMidYMid slice" || imgRel < canvasRel && par !== "xMidYMid slice") { - heightCrop = imgH; - widthCrop = heightCrop * canvasRel; - } else { - widthCrop = imgW; - heightCrop = widthCrop / canvasRel; - } - ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h); - this.img = canvas; - } - }; - CVImageElement.prototype.renderInnerContent = function() { - this.canvasContext.drawImage(this.img, 0, 0); - }; - CVImageElement.prototype.destroy = function() { - this.img = null; - }; - extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement); - CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement; - CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame; - CVSolidElement.prototype.renderInnerContent = function() { - var ctx = this.canvasContext; - ctx.fillStyle = this.data.sc; - ctx.fillRect(0, 0, this.data.sw, this.data.sh); - }; - extendPrototype([BaseRenderer], CanvasRendererBase); - CanvasRendererBase.prototype.createShape = function(data2) { - return new CVShapeElement(data2, this.globalData, this); - }; - CanvasRendererBase.prototype.createText = function(data2) { - return new CVTextElement(data2, this.globalData, this); - }; - CanvasRendererBase.prototype.createImage = function(data2) { - return new CVImageElement(data2, this.globalData, this); - }; - CanvasRendererBase.prototype.createSolid = function(data2) { - return new CVSolidElement(data2, this.globalData, this); - }; - CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull; - CanvasRendererBase.prototype.ctxTransform = function(props) { - if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) { - return; - } - if (!this.renderConfig.clearCanvas) { - this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]); - return; - } - this.transformMat.cloneFromProps(props); - var cProps = this.contextData.cTr.props; - this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]); - this.contextData.cTr.cloneFromProps(this.transformMat.props); - var trProps = this.contextData.cTr.props; - this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]); - }; - CanvasRendererBase.prototype.ctxOpacity = function(op) { - if (!this.renderConfig.clearCanvas) { - this.canvasContext.globalAlpha *= op < 0 ? 0 : op; - this.globalData.currentGlobalAlpha = this.contextData.cO; - return; - } - this.contextData.cO *= op < 0 ? 0 : op; - if (this.globalData.currentGlobalAlpha !== this.contextData.cO) { - this.canvasContext.globalAlpha = this.contextData.cO; - this.globalData.currentGlobalAlpha = this.contextData.cO; - } - }; - CanvasRendererBase.prototype.reset = function() { - if (!this.renderConfig.clearCanvas) { - this.canvasContext.restore(); - return; - } - this.contextData.reset(); - }; - CanvasRendererBase.prototype.save = function(actionFlag) { - if (!this.renderConfig.clearCanvas) { - this.canvasContext.save(); - return; - } - if (actionFlag) { - this.canvasContext.save(); - } - var props = this.contextData.cTr.props; - if (this.contextData._length <= this.contextData.cArrPos) { - this.contextData.duplicate(); - } - var i; - var arr = this.contextData.saved[this.contextData.cArrPos]; - for (i = 0; i < 16; i += 1) { - arr[i] = props[i]; - } - this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO; - this.contextData.cArrPos += 1; - }; - CanvasRendererBase.prototype.restore = function(actionFlag) { - if (!this.renderConfig.clearCanvas) { - this.canvasContext.restore(); - return; - } - if (actionFlag) { - this.canvasContext.restore(); - this.globalData.blendMode = "source-over"; - } - this.contextData.cArrPos -= 1; - var popped = this.contextData.saved[this.contextData.cArrPos]; - var i; - var arr = this.contextData.cTr.props; - for (i = 0; i < 16; i += 1) { - arr[i] = popped[i]; - } - this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]); - popped = this.contextData.savedOp[this.contextData.cArrPos]; - this.contextData.cO = popped; - if (this.globalData.currentGlobalAlpha !== popped) { - this.canvasContext.globalAlpha = popped; - this.globalData.currentGlobalAlpha = popped; - } - }; - CanvasRendererBase.prototype.configAnimation = function(animData) { - if (this.animationItem.wrapper) { - this.animationItem.container = createTag("canvas"); - var containerStyle = this.animationItem.container.style; - containerStyle.width = "100%"; - containerStyle.height = "100%"; - var origin = "0px 0px 0px"; - containerStyle.transformOrigin = origin; - containerStyle.mozTransformOrigin = origin; - containerStyle.webkitTransformOrigin = origin; - containerStyle["-webkit-transform"] = origin; - containerStyle.contentVisibility = this.renderConfig.contentVisibility; - this.animationItem.wrapper.appendChild(this.animationItem.container); - this.canvasContext = this.animationItem.container.getContext("2d"); - if (this.renderConfig.className) { - this.animationItem.container.setAttribute("class", this.renderConfig.className); - } - if (this.renderConfig.id) { - this.animationItem.container.setAttribute("id", this.renderConfig.id); - } - } else { - this.canvasContext = this.renderConfig.context; - } - this.data = animData; - this.layers = animData.layers; - this.transformCanvas = { - w: animData.w, - h: animData.h, - sx: 0, - sy: 0, - tx: 0, - ty: 0 - }; - this.setupGlobalData(animData, document.body); - this.globalData.canvasContext = this.canvasContext; - this.globalData.renderer = this; - this.globalData.isDashed = false; - this.globalData.progressiveLoad = this.renderConfig.progressiveLoad; - this.globalData.transformCanvas = this.transformCanvas; - this.elements = createSizedArray(animData.layers.length); - this.updateContainerSize(); - }; - CanvasRendererBase.prototype.updateContainerSize = function() { - this.reset(); - var elementWidth; - var elementHeight; - if (this.animationItem.wrapper && this.animationItem.container) { - elementWidth = this.animationItem.wrapper.offsetWidth; - elementHeight = this.animationItem.wrapper.offsetHeight; - this.animationItem.container.setAttribute("width", elementWidth * this.renderConfig.dpr); - this.animationItem.container.setAttribute("height", elementHeight * this.renderConfig.dpr); - } else { - elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr; - elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr; - } - var elementRel; - var animationRel; - if (this.renderConfig.preserveAspectRatio.indexOf("meet") !== -1 || this.renderConfig.preserveAspectRatio.indexOf("slice") !== -1) { - var par = this.renderConfig.preserveAspectRatio.split(" "); - var fillType = par[1] || "meet"; - var pos = par[0] || "xMidYMid"; - var xPos = pos.substr(0, 4); - var yPos = pos.substr(4); - elementRel = elementWidth / elementHeight; - animationRel = this.transformCanvas.w / this.transformCanvas.h; - if (animationRel > elementRel && fillType === "meet" || animationRel < elementRel && fillType === "slice") { - this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr); - this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr); - } else { - this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr); - this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr); - } - if (xPos === "xMid" && (animationRel < elementRel && fillType === "meet" || animationRel > elementRel && fillType === "slice")) { - this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr; - } else if (xPos === "xMax" && (animationRel < elementRel && fillType === "meet" || animationRel > elementRel && fillType === "slice")) { - this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr; - } else { - this.transformCanvas.tx = 0; - } - if (yPos === "YMid" && (animationRel > elementRel && fillType === "meet" || animationRel < elementRel && fillType === "slice")) { - this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr; - } else if (yPos === "YMax" && (animationRel > elementRel && fillType === "meet" || animationRel < elementRel && fillType === "slice")) { - this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr; - } else { - this.transformCanvas.ty = 0; - } - } else if (this.renderConfig.preserveAspectRatio === "none") { - this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr); - this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr); - this.transformCanvas.tx = 0; - this.transformCanvas.ty = 0; - } else { - this.transformCanvas.sx = this.renderConfig.dpr; - this.transformCanvas.sy = this.renderConfig.dpr; - this.transformCanvas.tx = 0; - this.transformCanvas.ty = 0; - } - this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1]; - this.ctxTransform(this.transformCanvas.props); - this.canvasContext.beginPath(); - this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h); - this.canvasContext.closePath(); - this.canvasContext.clip(); - this.renderFrame(this.renderedFrame, true); - }; - CanvasRendererBase.prototype.destroy = function() { - if (this.renderConfig.clearCanvas && this.animationItem.wrapper) { - this.animationItem.wrapper.innerText = ""; - } - var i; - var len = this.layers ? this.layers.length : 0; - for (i = len - 1; i >= 0; i -= 1) { - if (this.elements[i]) { - this.elements[i].destroy(); - } - } - this.elements.length = 0; - this.globalData.canvasContext = null; - this.animationItem.container = null; - this.destroyed = true; - }; - CanvasRendererBase.prototype.renderFrame = function(num, forceRender) { - if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) { - return; - } - this.renderedFrame = num; - this.globalData.frameNum = num - this.animationItem._isFirstFrame; - this.globalData.frameId += 1; - this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender; - this.globalData.projectInterface.currentFrame = num; - var i; - var len = this.layers.length; - if (!this.completeLayers) { - this.checkLayers(num); - } - for (i = 0; i < len; i += 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].prepareFrame(num - this.layers[i].st); - } - } - if (this.globalData._mdf) { - if (this.renderConfig.clearCanvas === true) { - this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h); - } else { - this.save(); - } - for (i = len - 1; i >= 0; i -= 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].renderFrame(); - } - } - if (this.renderConfig.clearCanvas !== true) { - this.restore(); - } - } - }; - CanvasRendererBase.prototype.buildItem = function(pos) { - var elements = this.elements; - if (elements[pos] || this.layers[pos].ty === 99) { - return; - } - var element = this.createItem(this.layers[pos], this, this.globalData); - elements[pos] = element; - element.initExpressions(); - }; - CanvasRendererBase.prototype.checkPendingElements = function() { - while (this.pendingElements.length) { - var element = this.pendingElements.pop(); - element.checkParenting(); - } - }; - CanvasRendererBase.prototype.hide = function() { - this.animationItem.container.style.display = "none"; - }; - CanvasRendererBase.prototype.show = function() { - this.animationItem.container.style.display = "block"; - }; - extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement); - CVCompElement.prototype.renderInnerContent = function() { - var ctx = this.canvasContext; - ctx.beginPath(); - ctx.moveTo(0, 0); - ctx.lineTo(this.data.w, 0); - ctx.lineTo(this.data.w, this.data.h); - ctx.lineTo(0, this.data.h); - ctx.lineTo(0, 0); - ctx.clip(); - var i; - var len = this.layers.length; - for (i = len - 1; i >= 0; i -= 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].renderFrame(); - } - } - }; - CVCompElement.prototype.destroy = function() { - var i; - var len = this.layers.length; - for (i = len - 1; i >= 0; i -= 1) { - if (this.elements[i]) { - this.elements[i].destroy(); - } - } - this.layers = null; - this.elements = null; - }; - CVCompElement.prototype.createComp = function(data2) { - return new CVCompElement(data2, this.globalData, this); - }; - extendPrototype([CanvasRendererBase], CanvasRenderer); - CanvasRenderer.prototype.createComp = function(data2) { - return new CVCompElement(data2, this.globalData, this); - }; - registerRenderer("canvas", CanvasRenderer); - ShapeModifiers.registerModifier("tm", TrimModifier); - ShapeModifiers.registerModifier("pb", PuckerAndBloatModifier); - ShapeModifiers.registerModifier("rp", RepeaterModifier); - ShapeModifiers.registerModifier("rd", RoundCornersModifier); - const Expressions = function() { - var ob2 = {}; - ob2.initExpressions = initExpressions; - function initExpressions(animation) { - var stackCount = 0; - var registers = []; - function pushExpression() { - stackCount += 1; - } - function popExpression() { - stackCount -= 1; - if (stackCount === 0) { - releaseInstances(); - } - } - function registerExpressionProperty(expression) { - if (registers.indexOf(expression) === -1) { - registers.push(expression); - } - } - function releaseInstances() { - var i; - var len = registers.length; - for (i = 0; i < len; i += 1) { - registers[i].release(); - } - registers.length = 0; - } - animation.renderer.compInterface = CompExpressionInterface(animation.renderer); - animation.renderer.globalData.projectInterface.registerComposition(animation.renderer); - animation.renderer.globalData.pushExpression = pushExpression; - animation.renderer.globalData.popExpression = popExpression; - animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty; - } - return ob2; - }(); - ; - propTypes = { - SHAPE: "shape" - }; - const ExpressionManager = function() { - "use strict"; - var ob = {}; - var Math = BMMath; - var window = null; - var document = null; - var XMLHttpRequest = null; - var fetch = null; - var frames = null; - initialize$2(BMMath); - function $bm_isInstanceOfArray(arr) { - return arr.constructor === Array || arr.constructor === Float32Array; - } - function isNumerable(tOfV, v) { - return tOfV === "number" || tOfV === "boolean" || tOfV === "string" || v instanceof Number; - } - function $bm_neg(a2) { - var tOfA = typeof a2; - if (tOfA === "number" || tOfA === "boolean" || a2 instanceof Number) { - return -a2; - } - if ($bm_isInstanceOfArray(a2)) { - var i; - var lenA = a2.length; - var retArr = []; - for (i = 0; i < lenA; i += 1) { - retArr[i] = -a2[i]; - } - return retArr; - } - if (a2.propType) { - return a2.v; - } - return -a2; - } - var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, "easeIn").get; - var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, "easeOut").get; - var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, "easeInOut").get; - function sum(a2, b3) { - var tOfA = typeof a2; - var tOfB = typeof b3; - if (tOfA === "string" || tOfB === "string") { - return a2 + b3; - } - if (isNumerable(tOfA, a2) && isNumerable(tOfB, b3)) { - return a2 + b3; - } - if ($bm_isInstanceOfArray(a2) && isNumerable(tOfB, b3)) { - a2 = a2.slice(0); - a2[0] += b3; - return a2; - } - if (isNumerable(tOfA, a2) && $bm_isInstanceOfArray(b3)) { - b3 = b3.slice(0); - b3[0] = a2 + b3[0]; - return b3; - } - if ($bm_isInstanceOfArray(a2) && $bm_isInstanceOfArray(b3)) { - var i = 0; - var lenA = a2.length; - var lenB = b3.length; - var retArr = []; - while (i < lenA || i < lenB) { - if ((typeof a2[i] === "number" || a2[i] instanceof Number) && (typeof b3[i] === "number" || b3[i] instanceof Number)) { - retArr[i] = a2[i] + b3[i]; - } else { - retArr[i] = b3[i] === void 0 ? a2[i] : a2[i] || b3[i]; - } - i += 1; - } - return retArr; - } - return 0; - } - var add = sum; - function sub(a2, b3) { - var tOfA = typeof a2; - var tOfB = typeof b3; - if (isNumerable(tOfA, a2) && isNumerable(tOfB, b3)) { - if (tOfA === "string") { - a2 = parseInt(a2, 10); - } - if (tOfB === "string") { - b3 = parseInt(b3, 10); - } - return a2 - b3; - } - if ($bm_isInstanceOfArray(a2) && isNumerable(tOfB, b3)) { - a2 = a2.slice(0); - a2[0] -= b3; - return a2; - } - if (isNumerable(tOfA, a2) && $bm_isInstanceOfArray(b3)) { - b3 = b3.slice(0); - b3[0] = a2 - b3[0]; - return b3; - } - if ($bm_isInstanceOfArray(a2) && $bm_isInstanceOfArray(b3)) { - var i = 0; - var lenA = a2.length; - var lenB = b3.length; - var retArr = []; - while (i < lenA || i < lenB) { - if ((typeof a2[i] === "number" || a2[i] instanceof Number) && (typeof b3[i] === "number" || b3[i] instanceof Number)) { - retArr[i] = a2[i] - b3[i]; - } else { - retArr[i] = b3[i] === void 0 ? a2[i] : a2[i] || b3[i]; - } - i += 1; - } - return retArr; - } - return 0; - } - function mul(a2, b3) { - var tOfA = typeof a2; - var tOfB = typeof b3; - var arr; - if (isNumerable(tOfA, a2) && isNumerable(tOfB, b3)) { - return a2 * b3; - } - var i; - var len; - if ($bm_isInstanceOfArray(a2) && isNumerable(tOfB, b3)) { - len = a2.length; - arr = createTypedArray("float32", len); - for (i = 0; i < len; i += 1) { - arr[i] = a2[i] * b3; - } - return arr; - } - if (isNumerable(tOfA, a2) && $bm_isInstanceOfArray(b3)) { - len = b3.length; - arr = createTypedArray("float32", len); - for (i = 0; i < len; i += 1) { - arr[i] = a2 * b3[i]; - } - return arr; - } - return 0; - } - function div(a2, b3) { - var tOfA = typeof a2; - var tOfB = typeof b3; - var arr; - if (isNumerable(tOfA, a2) && isNumerable(tOfB, b3)) { - return a2 / b3; - } - var i; - var len; - if ($bm_isInstanceOfArray(a2) && isNumerable(tOfB, b3)) { - len = a2.length; - arr = createTypedArray("float32", len); - for (i = 0; i < len; i += 1) { - arr[i] = a2[i] / b3; - } - return arr; - } - if (isNumerable(tOfA, a2) && $bm_isInstanceOfArray(b3)) { - len = b3.length; - arr = createTypedArray("float32", len); - for (i = 0; i < len; i += 1) { - arr[i] = a2 / b3[i]; - } - return arr; - } - return 0; - } - function mod(a2, b3) { - if (typeof a2 === "string") { - a2 = parseInt(a2, 10); - } - if (typeof b3 === "string") { - b3 = parseInt(b3, 10); - } - return a2 % b3; - } - var $bm_sum = sum; - var $bm_sub = sub; - var $bm_mul = mul; - var $bm_div = div; - var $bm_mod = mod; - function clamp(num, min, max2) { - if (min > max2) { - var mm = max2; - max2 = min; - min = mm; - } - return Math.min(Math.max(num, min), max2); - } - function radiansToDegrees(val2) { - return val2 / degToRads; - } - var radians_to_degrees = radiansToDegrees; - function degreesToRadians(val2) { - return val2 * degToRads; - } - var degrees_to_radians = radiansToDegrees; - var helperLengthArray = [0, 0, 0, 0, 0, 0]; - function length(arr1, arr2) { - if (typeof arr1 === "number" || arr1 instanceof Number) { - arr2 = arr2 || 0; - return Math.abs(arr1 - arr2); - } - if (!arr2) { - arr2 = helperLengthArray; - } - var i; - var len = Math.min(arr1.length, arr2.length); - var addedLength = 0; - for (i = 0; i < len; i += 1) { - addedLength += Math.pow(arr2[i] - arr1[i], 2); - } - return Math.sqrt(addedLength); - } - function normalize(vec) { - return div(vec, length(vec)); - } - function rgbToHsl(val2) { - var r = val2[0]; - var g2 = val2[1]; - var b3 = val2[2]; - var max2 = Math.max(r, g2, b3); - var min = Math.min(r, g2, b3); - var h; - var s; - var l2 = (max2 + min) / 2; - if (max2 === min) { - h = 0; - s = 0; - } else { - var d = max2 - min; - s = l2 > 0.5 ? d / (2 - max2 - min) : d / (max2 + min); - switch (max2) { - case r: - h = (g2 - b3) / d + (g2 < b3 ? 6 : 0); - break; - case g2: - h = (b3 - r) / d + 2; - break; - case b3: - h = (r - g2) / d + 4; - break; - default: - break; - } - h /= 6; - } - return [h, s, l2, val2[3]]; - } - function hue2rgb(p2, q2, t3) { - if (t3 < 0) t3 += 1; - if (t3 > 1) t3 -= 1; - if (t3 < 1 / 6) return p2 + (q2 - p2) * 6 * t3; - if (t3 < 1 / 2) return q2; - if (t3 < 2 / 3) return p2 + (q2 - p2) * (2 / 3 - t3) * 6; - return p2; - } - function hslToRgb(val2) { - var h = val2[0]; - var s = val2[1]; - var l2 = val2[2]; - var r; - var g2; - var b3; - if (s === 0) { - r = l2; - b3 = l2; - g2 = l2; - } else { - var q2 = l2 < 0.5 ? l2 * (1 + s) : l2 + s - l2 * s; - var p2 = 2 * l2 - q2; - r = hue2rgb(p2, q2, h + 1 / 3); - g2 = hue2rgb(p2, q2, h); - b3 = hue2rgb(p2, q2, h - 1 / 3); - } - return [r, g2, b3, val2[3]]; - } - function linear(t3, tMin, tMax, value1, value2) { - if (value1 === void 0 || value2 === void 0) { - value1 = tMin; - value2 = tMax; - tMin = 0; - tMax = 1; - } - if (tMax < tMin) { - var _tMin = tMax; - tMax = tMin; - tMin = _tMin; - } - if (t3 <= tMin) { - return value1; - } - if (t3 >= tMax) { - return value2; - } - var perc = tMax === tMin ? 0 : (t3 - tMin) / (tMax - tMin); - if (!value1.length) { - return value1 + (value2 - value1) * perc; - } - var i; - var len = value1.length; - var arr = createTypedArray("float32", len); - for (i = 0; i < len; i += 1) { - arr[i] = value1[i] + (value2[i] - value1[i]) * perc; - } - return arr; - } - function random(min, max2) { - if (max2 === void 0) { - if (min === void 0) { - min = 0; - max2 = 1; - } else { - max2 = min; - min = void 0; - } - } - if (max2.length) { - var i; - var len = max2.length; - if (!min) { - min = createTypedArray("float32", len); - } - var arr = createTypedArray("float32", len); - var rnd = BMMath.random(); - for (i = 0; i < len; i += 1) { - arr[i] = min[i] + rnd * (max2[i] - min[i]); - } - return arr; - } - if (min === void 0) { - min = 0; - } - var rndm = BMMath.random(); - return min + rndm * (max2 - min); - } - function createPath(points, inTangents, outTangents, closed) { - var i; - var len = points.length; - var path = shapePool.newElement(); - path.setPathData(!!closed, len); - var arrPlaceholder = [0, 0]; - var inVertexPoint; - var outVertexPoint; - for (i = 0; i < len; i += 1) { - inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder; - outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder; - path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true); - } - return path; - } - function initiateExpression(elem, data, property) { - var val = data.x; - var needsVelocity = /velocity(?![\w\d])/.test(val); - var _needsRandom = val.indexOf("random") !== -1; - var elemType = elem.data.ty; - var transform; - var $bm_transform; - var content; - var effect; - var thisProperty = property; - thisProperty.valueAtTime = thisProperty.getValueAtTime; - Object.defineProperty(thisProperty, "value", { - get: function() { - return thisProperty.v; - } - }); - elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate; - elem.comp.displayStartTime = 0; - var inPoint = elem.data.ip / elem.comp.globalData.frameRate; - var outPoint = elem.data.op / elem.comp.globalData.frameRate; - var width = elem.data.sw ? elem.data.sw : 0; - var height = elem.data.sh ? elem.data.sh : 0; - var name = elem.data.nm; - var loopIn; - var loop_in; - var loopOut; - var loop_out; - var smooth; - var toWorld; - var fromWorld; - var fromComp; - var toComp; - var fromCompToSurface; - var position; - var rotation; - var anchorPoint; - var scale; - var thisLayer; - var thisComp; - var mask; - var valueAtTime; - var velocityAtTime; - var scoped_bm_rt; - var expression_function = eval("[function _expression_function(){" + val + ";scoped_bm_rt=$bm_rt}]")[0]; - var numKeys = property.kf ? data.k.length : 0; - var active = !this.data || this.data.hd !== true; - var wiggle = (function wiggle2(freq, amp) { - var iWiggle; - var j; - var lenWiggle = this.pv.length ? this.pv.length : 1; - var addedAmps = createTypedArray("float32", lenWiggle); - freq = 5; - var iterations = Math.floor(time * freq); - iWiggle = 0; - j = 0; - while (iWiggle < iterations) { - for (j = 0; j < lenWiggle; j += 1) { - addedAmps[j] += -amp + amp * 2 * BMMath.random(); - } - iWiggle += 1; - } - var periods = time * freq; - var perc = periods - Math.floor(periods); - var arr = createTypedArray("float32", lenWiggle); - if (lenWiggle > 1) { - for (j = 0; j < lenWiggle; j += 1) { - arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; - } - return arr; - } - return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc; - }).bind(this); - if (thisProperty.loopIn) { - loopIn = thisProperty.loopIn.bind(thisProperty); - loop_in = loopIn; - } - if (thisProperty.loopOut) { - loopOut = thisProperty.loopOut.bind(thisProperty); - loop_out = loopOut; - } - if (thisProperty.smooth) { - smooth = thisProperty.smooth.bind(thisProperty); - } - function loopInDuration(type, duration) { - return loopIn(type, duration, true); - } - function loopOutDuration(type, duration) { - return loopOut(type, duration, true); - } - if (this.getValueAtTime) { - valueAtTime = this.getValueAtTime.bind(this); - } - if (this.getVelocityAtTime) { - velocityAtTime = this.getVelocityAtTime.bind(this); - } - var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface); - function lookAt(elem1, elem2) { - var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]]; - var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads; - var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads; - return [yaw, pitch, 0]; - } - function easeOut(t3, tMin, tMax, val1, val2) { - return applyEase(easeOutBez, t3, tMin, tMax, val1, val2); - } - function easeIn(t3, tMin, tMax, val1, val2) { - return applyEase(easeInBez, t3, tMin, tMax, val1, val2); - } - function ease(t3, tMin, tMax, val1, val2) { - return applyEase(easeInOutBez, t3, tMin, tMax, val1, val2); - } - function applyEase(fn, t3, tMin, tMax, val1, val2) { - if (val1 === void 0) { - val1 = tMin; - val2 = tMax; - } else { - t3 = (t3 - tMin) / (tMax - tMin); - } - if (t3 > 1) { - t3 = 1; - } else if (t3 < 0) { - t3 = 0; - } - var mult = fn(t3); - if ($bm_isInstanceOfArray(val1)) { - var iKey; - var lenKey = val1.length; - var arr = createTypedArray("float32", lenKey); - for (iKey = 0; iKey < lenKey; iKey += 1) { - arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey]; - } - return arr; - } - return (val2 - val1) * mult + val1; - } - function nearestKey(time2) { - var iKey; - var lenKey = data.k.length; - var index2; - var keyTime; - if (!data.k.length || typeof data.k[0] === "number") { - index2 = 0; - keyTime = 0; - } else { - index2 = -1; - time2 *= elem.comp.globalData.frameRate; - if (time2 < data.k[0].t) { - index2 = 1; - keyTime = data.k[0].t; - } else { - for (iKey = 0; iKey < lenKey - 1; iKey += 1) { - if (time2 === data.k[iKey].t) { - index2 = iKey + 1; - keyTime = data.k[iKey].t; - break; - } else if (time2 > data.k[iKey].t && time2 < data.k[iKey + 1].t) { - if (time2 - data.k[iKey].t > data.k[iKey + 1].t - time2) { - index2 = iKey + 2; - keyTime = data.k[iKey + 1].t; - } else { - index2 = iKey + 1; - keyTime = data.k[iKey].t; - } - break; - } - } - if (index2 === -1) { - index2 = iKey + 1; - keyTime = data.k[iKey].t; - } - } - } - var obKey = {}; - obKey.index = index2; - obKey.time = keyTime / elem.comp.globalData.frameRate; - return obKey; - } - function key(ind) { - var obKey; - var iKey; - var lenKey; - if (!data.k.length || typeof data.k[0] === "number") { - throw new Error("The property has no keyframe at index " + ind); - } - ind -= 1; - obKey = { - time: data.k[ind].t / elem.comp.globalData.frameRate, - value: [] - }; - var arr = Object.prototype.hasOwnProperty.call(data.k[ind], "s") ? data.k[ind].s : data.k[ind - 1].e; - lenKey = arr.length; - for (iKey = 0; iKey < lenKey; iKey += 1) { - obKey[iKey] = arr[iKey]; - obKey.value[iKey] = arr[iKey]; - } - return obKey; - } - function framesToTime(fr, fps) { - if (!fps) { - fps = elem.comp.globalData.frameRate; - } - return fr / fps; - } - function timeToFrames(t3, fps) { - if (!t3 && t3 !== 0) { - t3 = time; - } - if (!fps) { - fps = elem.comp.globalData.frameRate; - } - return t3 * fps; - } - function seedRandom(seed) { - BMMath.seedrandom(randSeed + seed); - } - function sourceRectAtTime() { - return elem.sourceRectAtTime(); - } - function substring(init, end) { - if (typeof value === "string") { - if (end === void 0) { - return value.substring(init); - } - return value.substring(init, end); - } - return ""; - } - function substr(init, end) { - if (typeof value === "string") { - if (end === void 0) { - return value.substr(init); - } - return value.substr(init, end); - } - return ""; - } - function posterizeTime(framesPerSecond) { - time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond; - value = valueAtTime(time); - } - var time; - var velocity; - var value; - var text; - var textIndex; - var textTotal; - var selectorValue; - var index = elem.data.ind; - var hasParent = !!(elem.hierarchy && elem.hierarchy.length); - var parent; - var randSeed = Math.floor(Math.random() * 1e6); - var globalData = elem.globalData; - function executeExpression(_value) { - value = _value; - if (this.frameExpressionId === elem.globalData.frameId && this.propType !== "textSelector") { - return value; - } - if (this.propType === "textSelector") { - textIndex = this.textIndex; - textTotal = this.textTotal; - selectorValue = this.selectorValue; - } - if (!thisLayer) { - text = elem.layerInterface.text; - thisLayer = elem.layerInterface; - thisComp = elem.comp.compInterface; - toWorld = thisLayer.toWorld.bind(thisLayer); - fromWorld = thisLayer.fromWorld.bind(thisLayer); - fromComp = thisLayer.fromComp.bind(thisLayer); - toComp = thisLayer.toComp.bind(thisLayer); - mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null; - fromCompToSurface = fromComp; - } - if (!transform) { - transform = elem.layerInterface("ADBE Transform Group"); - $bm_transform = transform; - if (transform) { - anchorPoint = transform.anchorPoint; - } - } - if (elemType === 4 && !content) { - content = thisLayer("ADBE Root Vectors Group"); - } - if (!effect) { - effect = thisLayer(4); - } - hasParent = !!(elem.hierarchy && elem.hierarchy.length); - if (hasParent && !parent) { - parent = elem.hierarchy[0].layerInterface; - } - time = this.comp.renderedFrame / this.comp.globalData.frameRate; - if (_needsRandom) { - seedRandom(randSeed + time); - } - if (needsVelocity) { - velocity = velocityAtTime(time); - } - expression_function(); - this.frameExpressionId = elem.globalData.frameId; - scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt; - return scoped_bm_rt; - } - executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData]; - return executeExpression; - } - ob.initiateExpression = initiateExpression; - ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath]; - return ob; - }(); - const expressionHelpers = /* @__PURE__ */ function() { - function searchExpressions(elem2, data2, prop) { - if (data2.x) { - prop.k = true; - prop.x = true; - prop.initiateExpression = ExpressionManager.initiateExpression; - prop.effectsSequence.push(prop.initiateExpression(elem2, data2, prop).bind(prop)); - } - } - function getValueAtTime(frameNum) { - frameNum *= this.elem.globalData.frameRate; - frameNum -= this.offsetTime; - if (frameNum !== this._cachingAtTime.lastFrame) { - this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0; - this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime); - this._cachingAtTime.lastFrame = frameNum; - } - return this._cachingAtTime.value; - } - function getSpeedAtTime(frameNum) { - var delta = -0.01; - var v12 = this.getValueAtTime(frameNum); - var v2 = this.getValueAtTime(frameNum + delta); - var speed = 0; - if (v12.length) { - var i; - for (i = 0; i < v12.length; i += 1) { - speed += Math.pow(v2[i] - v12[i], 2); - } - speed = Math.sqrt(speed) * 100; - } else { - speed = 0; - } - return speed; - } - function getVelocityAtTime(frameNum) { - if (this.vel !== void 0) { - return this.vel; - } - var delta = -1e-3; - var v12 = this.getValueAtTime(frameNum); - var v2 = this.getValueAtTime(frameNum + delta); - var velocity2; - if (v12.length) { - velocity2 = createTypedArray("float32", v12.length); - var i; - for (i = 0; i < v12.length; i += 1) { - velocity2[i] = (v2[i] - v12[i]) / delta; - } - } else { - velocity2 = (v2 - v12) / delta; - } - return velocity2; - } - function getStaticValueAtTime() { - return this.pv; - } - function setGroupProperty(propertyGroup) { - this.propertyGroup = propertyGroup; - } - return { - searchExpressions, - getSpeedAtTime, - getVelocityAtTime, - getValueAtTime, - getStaticValueAtTime, - setGroupProperty - }; - }(); - setExpressionsPlugin(Expressions); - initialize$1(); - initialize(); -} -var standalone; -var animationData; -var renderer; -var queryString; -var scripts; -var index2; -var myScript; -var readyStateCheckInterval; -var registeredEffects; -var idPrefix; -var emptyShapeData; -var propTypes; - -// node_modules/three/examples/jsm/loaders/LottieLoader.js -var LottieLoader = class extends Loader { - setQuality(value2) { - this._quality = value2; - } - load(url, onLoad, onProgress, onError) { - const quality = this._quality || 1; - const texture = new CanvasTexture(); - texture.minFilter = NearestFilter; - texture.colorSpace = SRGBColorSpace; - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setWithCredentials(this.withCredentials); - loader.load(url, function(text2) { - const data2 = JSON.parse(text2); - const container = document.createElement("div"); - container.style.width = data2.w + "px"; - container.style.height = data2.h + "px"; - document.body.appendChild(container); - const animation = lottie.loadAnimation({ - container, - animType: "canvas", - loop: true, - autoplay: true, - animationData: data2, - rendererSettings: { dpr: quality } - }); - texture.animation = animation; - texture.image = animation.container; - animation.addEventListener("enterFrame", function() { - texture.needsUpdate = true; - }); - container.style.display = "none"; - if (onLoad !== void 0) { - onLoad(texture); - } - }, onProgress, onError); - return texture; - } -}; - -// node_modules/three/examples/jsm/loaders/MD2Loader.js -var _normalData = [ - [-0.525731, 0, 0.850651], - [-0.442863, 0.238856, 0.864188], - [-0.295242, 0, 0.955423], - [-0.309017, 0.5, 0.809017], - [-0.16246, 0.262866, 0.951056], - [0, 0, 1], - [0, 0.850651, 0.525731], - [-0.147621, 0.716567, 0.681718], - [0.147621, 0.716567, 0.681718], - [0, 0.525731, 0.850651], - [0.309017, 0.5, 0.809017], - [0.525731, 0, 0.850651], - [0.295242, 0, 0.955423], - [0.442863, 0.238856, 0.864188], - [0.16246, 0.262866, 0.951056], - [-0.681718, 0.147621, 0.716567], - [-0.809017, 0.309017, 0.5], - [-0.587785, 0.425325, 0.688191], - [-0.850651, 0.525731, 0], - [-0.864188, 0.442863, 0.238856], - [-0.716567, 0.681718, 0.147621], - [-0.688191, 0.587785, 0.425325], - [-0.5, 0.809017, 0.309017], - [-0.238856, 0.864188, 0.442863], - [-0.425325, 0.688191, 0.587785], - [-0.716567, 0.681718, -0.147621], - [-0.5, 0.809017, -0.309017], - [-0.525731, 0.850651, 0], - [0, 0.850651, -0.525731], - [-0.238856, 0.864188, -0.442863], - [0, 0.955423, -0.295242], - [-0.262866, 0.951056, -0.16246], - [0, 1, 0], - [0, 0.955423, 0.295242], - [-0.262866, 0.951056, 0.16246], - [0.238856, 0.864188, 0.442863], - [0.262866, 0.951056, 0.16246], - [0.5, 0.809017, 0.309017], - [0.238856, 0.864188, -0.442863], - [0.262866, 0.951056, -0.16246], - [0.5, 0.809017, -0.309017], - [0.850651, 0.525731, 0], - [0.716567, 0.681718, 0.147621], - [0.716567, 0.681718, -0.147621], - [0.525731, 0.850651, 0], - [0.425325, 0.688191, 0.587785], - [0.864188, 0.442863, 0.238856], - [0.688191, 0.587785, 0.425325], - [0.809017, 0.309017, 0.5], - [0.681718, 0.147621, 0.716567], - [0.587785, 0.425325, 0.688191], - [0.955423, 0.295242, 0], - [1, 0, 0], - [0.951056, 0.16246, 0.262866], - [0.850651, -0.525731, 0], - [0.955423, -0.295242, 0], - [0.864188, -0.442863, 0.238856], - [0.951056, -0.16246, 0.262866], - [0.809017, -0.309017, 0.5], - [0.681718, -0.147621, 0.716567], - [0.850651, 0, 0.525731], - [0.864188, 0.442863, -0.238856], - [0.809017, 0.309017, -0.5], - [0.951056, 0.16246, -0.262866], - [0.525731, 0, -0.850651], - [0.681718, 0.147621, -0.716567], - [0.681718, -0.147621, -0.716567], - [0.850651, 0, -0.525731], - [0.809017, -0.309017, -0.5], - [0.864188, -0.442863, -0.238856], - [0.951056, -0.16246, -0.262866], - [0.147621, 0.716567, -0.681718], - [0.309017, 0.5, -0.809017], - [0.425325, 0.688191, -0.587785], - [0.442863, 0.238856, -0.864188], - [0.587785, 0.425325, -0.688191], - [0.688191, 0.587785, -0.425325], - [-0.147621, 0.716567, -0.681718], - [-0.309017, 0.5, -0.809017], - [0, 0.525731, -0.850651], - [-0.525731, 0, -0.850651], - [-0.442863, 0.238856, -0.864188], - [-0.295242, 0, -0.955423], - [-0.16246, 0.262866, -0.951056], - [0, 0, -1], - [0.295242, 0, -0.955423], - [0.16246, 0.262866, -0.951056], - [-0.442863, -0.238856, -0.864188], - [-0.309017, -0.5, -0.809017], - [-0.16246, -0.262866, -0.951056], - [0, -0.850651, -0.525731], - [-0.147621, -0.716567, -0.681718], - [0.147621, -0.716567, -0.681718], - [0, -0.525731, -0.850651], - [0.309017, -0.5, -0.809017], - [0.442863, -0.238856, -0.864188], - [0.16246, -0.262866, -0.951056], - [0.238856, -0.864188, -0.442863], - [0.5, -0.809017, -0.309017], - [0.425325, -0.688191, -0.587785], - [0.716567, -0.681718, -0.147621], - [0.688191, -0.587785, -0.425325], - [0.587785, -0.425325, -0.688191], - [0, -0.955423, -0.295242], - [0, -1, 0], - [0.262866, -0.951056, -0.16246], - [0, -0.850651, 0.525731], - [0, -0.955423, 0.295242], - [0.238856, -0.864188, 0.442863], - [0.262866, -0.951056, 0.16246], - [0.5, -0.809017, 0.309017], - [0.716567, -0.681718, 0.147621], - [0.525731, -0.850651, 0], - [-0.238856, -0.864188, -0.442863], - [-0.5, -0.809017, -0.309017], - [-0.262866, -0.951056, -0.16246], - [-0.850651, -0.525731, 0], - [-0.716567, -0.681718, -0.147621], - [-0.716567, -0.681718, 0.147621], - [-0.525731, -0.850651, 0], - [-0.5, -0.809017, 0.309017], - [-0.238856, -0.864188, 0.442863], - [-0.262866, -0.951056, 0.16246], - [-0.864188, -0.442863, 0.238856], - [-0.809017, -0.309017, 0.5], - [-0.688191, -0.587785, 0.425325], - [-0.681718, -0.147621, 0.716567], - [-0.442863, -0.238856, 0.864188], - [-0.587785, -0.425325, 0.688191], - [-0.309017, -0.5, 0.809017], - [-0.147621, -0.716567, 0.681718], - [-0.425325, -0.688191, 0.587785], - [-0.16246, -0.262866, 0.951056], - [0.442863, -0.238856, 0.864188], - [0.16246, -0.262866, 0.951056], - [0.309017, -0.5, 0.809017], - [0.147621, -0.716567, 0.681718], - [0, -0.525731, 0.850651], - [0.425325, -0.688191, 0.587785], - [0.587785, -0.425325, 0.688191], - [0.688191, -0.587785, 0.425325], - [-0.955423, 0.295242, 0], - [-0.951056, 0.16246, 0.262866], - [-1, 0, 0], - [-0.850651, 0, 0.525731], - [-0.955423, -0.295242, 0], - [-0.951056, -0.16246, 0.262866], - [-0.864188, 0.442863, -0.238856], - [-0.951056, 0.16246, -0.262866], - [-0.809017, 0.309017, -0.5], - [-0.864188, -0.442863, -0.238856], - [-0.951056, -0.16246, -0.262866], - [-0.809017, -0.309017, -0.5], - [-0.681718, 0.147621, -0.716567], - [-0.681718, -0.147621, -0.716567], - [-0.850651, 0, -0.525731], - [-0.688191, 0.587785, -0.425325], - [-0.587785, 0.425325, -0.688191], - [-0.425325, 0.688191, -0.587785], - [-0.425325, -0.688191, -0.587785], - [-0.587785, -0.425325, -0.688191], - [-0.688191, -0.587785, -0.425325] -]; -var MD2Loader = class extends Loader { - constructor(manager) { - super(manager); - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(scope.manager); - loader.setPath(scope.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(scope.requestHeader); - loader.setWithCredentials(scope.withCredentials); - loader.load(url, function(buffer) { - try { - onLoad(scope.parse(buffer)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(buffer) { - const data2 = new DataView(buffer); - const header = {}; - const headerNames = [ - "ident", - "version", - "skinwidth", - "skinheight", - "framesize", - "num_skins", - "num_vertices", - "num_st", - "num_tris", - "num_glcmds", - "num_frames", - "offset_skins", - "offset_st", - "offset_tris", - "offset_frames", - "offset_glcmds", - "offset_end" - ]; - for (let i = 0; i < headerNames.length; i++) { - header[headerNames[i]] = data2.getInt32(i * 4, true); - } - if (header.ident !== 844121161 || header.version !== 8) { - console.error("Not a valid MD2 file"); - return; - } - if (header.offset_end !== data2.byteLength) { - console.error("Corrupted MD2 file"); - return; - } - const geometry = new BufferGeometry(); - const uvsTemp = []; - let offset = header.offset_st; - for (let i = 0, l2 = header.num_st; i < l2; i++) { - const u = data2.getInt16(offset + 0, true); - const v = data2.getInt16(offset + 2, true); - uvsTemp.push(u / header.skinwidth, 1 - v / header.skinheight); - offset += 4; - } - offset = header.offset_tris; - const vertexIndices = []; - const uvIndices = []; - for (let i = 0, l2 = header.num_tris; i < l2; i++) { - vertexIndices.push( - data2.getUint16(offset + 0, true), - data2.getUint16(offset + 2, true), - data2.getUint16(offset + 4, true) - ); - uvIndices.push( - data2.getUint16(offset + 6, true), - data2.getUint16(offset + 8, true), - data2.getUint16(offset + 10, true) - ); - offset += 12; - } - const translation = new Vector3(); - const scale2 = new Vector3(); - const frames2 = []; - offset = header.offset_frames; - for (let i = 0, l2 = header.num_frames; i < l2; i++) { - scale2.set( - data2.getFloat32(offset + 0, true), - data2.getFloat32(offset + 4, true), - data2.getFloat32(offset + 8, true) - ); - translation.set( - data2.getFloat32(offset + 12, true), - data2.getFloat32(offset + 16, true), - data2.getFloat32(offset + 20, true) - ); - offset += 24; - const string = []; - for (let j = 0; j < 16; j++) { - const character = data2.getUint8(offset + j); - if (character === 0) break; - string[j] = character; - } - const frame = { - name: String.fromCharCode.apply(null, string), - vertices: [], - normals: [] - }; - offset += 16; - for (let j = 0; j < header.num_vertices; j++) { - let x2 = data2.getUint8(offset++); - let y2 = data2.getUint8(offset++); - let z = data2.getUint8(offset++); - const n2 = _normalData[data2.getUint8(offset++)]; - x2 = x2 * scale2.x + translation.x; - y2 = y2 * scale2.y + translation.y; - z = z * scale2.z + translation.z; - frame.vertices.push(x2, z, y2); - frame.normals.push(n2[0], n2[2], n2[1]); - } - frames2.push(frame); - } - const positions = []; - const normals = []; - const uvs = []; - const verticesTemp = frames2[0].vertices; - const normalsTemp = frames2[0].normals; - for (let i = 0, l2 = vertexIndices.length; i < l2; i++) { - const vertexIndex = vertexIndices[i]; - let stride = vertexIndex * 3; - const x2 = verticesTemp[stride]; - const y2 = verticesTemp[stride + 1]; - const z = verticesTemp[stride + 2]; - positions.push(x2, y2, z); - const nx = normalsTemp[stride]; - const ny = normalsTemp[stride + 1]; - const nz = normalsTemp[stride + 2]; - normals.push(nx, ny, nz); - const uvIndex = uvIndices[i]; - stride = uvIndex * 2; - const u = uvsTemp[stride]; - const v = uvsTemp[stride + 1]; - uvs.push(u, v); - } - geometry.setAttribute("position", new Float32BufferAttribute(positions, 3)); - geometry.setAttribute("normal", new Float32BufferAttribute(normals, 3)); - geometry.setAttribute("uv", new Float32BufferAttribute(uvs, 2)); - const morphPositions = []; - const morphNormals = []; - for (let i = 0, l2 = frames2.length; i < l2; i++) { - const frame = frames2[i]; - const attributeName = frame.name; - if (frame.vertices.length > 0) { - const positions2 = []; - for (let j = 0, jl = vertexIndices.length; j < jl; j++) { - const vertexIndex = vertexIndices[j]; - const stride = vertexIndex * 3; - const x2 = frame.vertices[stride]; - const y2 = frame.vertices[stride + 1]; - const z = frame.vertices[stride + 2]; - positions2.push(x2, y2, z); - } - const positionAttribute = new Float32BufferAttribute(positions2, 3); - positionAttribute.name = attributeName; - morphPositions.push(positionAttribute); - } - if (frame.normals.length > 0) { - const normals2 = []; - for (let j = 0, jl = vertexIndices.length; j < jl; j++) { - const vertexIndex = vertexIndices[j]; - const stride = vertexIndex * 3; - const nx = frame.normals[stride]; - const ny = frame.normals[stride + 1]; - const nz = frame.normals[stride + 2]; - normals2.push(nx, ny, nz); - } - const normalAttribute = new Float32BufferAttribute(normals2, 3); - normalAttribute.name = attributeName; - morphNormals.push(normalAttribute); - } - } - geometry.morphAttributes.position = morphPositions; - geometry.morphAttributes.normal = morphNormals; - geometry.morphTargetsRelative = false; - geometry.animations = AnimationClip.CreateClipsFromMorphTargetSequences(frames2, 10); - return geometry; - } -}; - -// node_modules/three/examples/jsm/loaders/MDDLoader.js -var MDDLoader = class extends Loader { - constructor(manager) { - super(manager); - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setResponseType("arraybuffer"); - loader.load(url, function(data2) { - onLoad(scope.parse(data2)); - }, onProgress, onError); - } - parse(data2) { - const view = new DataView(data2); - const totalFrames = view.getUint32(0); - const totalPoints = view.getUint32(4); - let offset = 8; - const times = new Float32Array(totalFrames); - const values2 = new Float32Array(totalFrames * totalFrames).fill(0); - for (let i = 0; i < totalFrames; i++) { - times[i] = view.getFloat32(offset); - offset += 4; - values2[totalFrames * i + i] = 1; - } - const track = new NumberKeyframeTrack(".morphTargetInfluences", times, values2); - const clip = new AnimationClip("default", times[times.length - 1], [track]); - const morphTargets = []; - for (let i = 0; i < totalFrames; i++) { - const morphTarget = new Float32Array(totalPoints * 3); - for (let j = 0; j < totalPoints; j++) { - const stride = j * 3; - morphTarget[stride + 0] = view.getFloat32(offset); - offset += 4; - morphTarget[stride + 1] = view.getFloat32(offset); - offset += 4; - morphTarget[stride + 2] = view.getFloat32(offset); - offset += 4; - } - const attribute = new BufferAttribute(morphTarget, 3); - attribute.name = "morph_" + i; - morphTargets.push(attribute); - } - return { - morphTargets, - clip - }; - } -}; - -// node_modules/three/examples/jsm/shaders/MMDToonShader.js -var lights_mmd_toon_pars_fragment = ( - /* glsl */ - ` -varying vec3 vViewPosition; - -struct BlinnPhongMaterial { - - vec3 diffuseColor; - vec3 specularColor; - float specularShininess; - float specularStrength; - -}; - -void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { - - vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; - - reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); - - reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; - -} - -void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { - - reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); - -} - -#define RE_Direct RE_Direct_BlinnPhong -#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong -` -); -var mmd_toon_matcap_fragment = ( - /* glsl */ - ` -#ifdef USE_MATCAP - - vec3 viewDir = normalize( vViewPosition ); - vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); - vec3 y = cross( viewDir, x ); - vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; // 0.495 to remove artifacts caused by undersized matcap disks - vec4 matcapColor = texture2D( matcap, uv ); - - #ifdef MATCAP_BLENDING_MULTIPLY - - outgoingLight *= matcapColor.rgb; - - #elif defined( MATCAP_BLENDING_ADD ) - - outgoingLight += matcapColor.rgb; - - #endif - -#endif -` -); -var MMDToonShader = { - name: "MMDToonShader", - defines: { - TOON: true, - MATCAP: true, - MATCAP_BLENDING_ADD: true - }, - uniforms: UniformsUtils.merge([ - ShaderLib.toon.uniforms, - ShaderLib.phong.uniforms, - ShaderLib.matcap.uniforms - ]), - vertexShader: ShaderLib.phong.vertexShader.replace( - "#include ", - "" - ).replace( - "#include ", - "" - ), - fragmentShader: ShaderLib.phong.fragmentShader.replace( - "#include ", - ` - #ifdef USE_MATCAP - uniform sampler2D matcap; - #endif - - #include - ` - ).replace( - "#include ", - ` - #include - ` - ).replace( - "#include ", - "" - ).replace( - "#include ", - lights_mmd_toon_pars_fragment - ).replace( - "#include ", - ` - ${mmd_toon_matcap_fragment} - ` - ) -}; - -// node_modules/three/examples/jsm/loaders/MMDLoader.js -var MMDLoader = class extends Loader { - constructor(manager) { - super(manager); - this.loader = new FileLoader(this.manager); - this.parser = null; - this.meshBuilder = new MeshBuilder(this.manager); - this.animationBuilder = new AnimationBuilder(); - } - /** - * @param {string} animationPath - * @return {MMDLoader} - */ - setAnimationPath(animationPath) { - this.animationPath = animationPath; - return this; - } - // Load MMD assets as Three.js Object - /** - * Loads Model file (.pmd or .pmx) as a SkinnedMesh. - * - * @param {string} url - url to Model(.pmd or .pmx) file - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - load(url, onLoad, onProgress, onError) { - const builder = this.meshBuilder.setCrossOrigin(this.crossOrigin); - let resourcePath; - if (this.resourcePath !== "") { - resourcePath = this.resourcePath; - } else if (this.path !== "") { - resourcePath = this.path; - } else { - resourcePath = LoaderUtils.extractUrlBase(url); - } - const parser = this._getParser(); - const extractModelExtension = this._extractModelExtension; - this.loader.setMimeType(void 0).setPath(this.path).setResponseType("arraybuffer").setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials).load(url, function(buffer) { - try { - const modelExtension = extractModelExtension(buffer); - if (modelExtension !== "pmd" && modelExtension !== "pmx") { - if (onError) onError(new Error("THREE.MMDLoader: Unknown model file extension ." + modelExtension + ".")); - return; - } - const data2 = modelExtension === "pmd" ? parser.parsePmd(buffer, true) : parser.parsePmx(buffer, true); - onLoad(builder.build(data2, resourcePath, onProgress, onError)); - } catch (e) { - if (onError) onError(e); - } - }, onProgress, onError); - } - /** - * Loads Motion file(s) (.vmd) as a AnimationClip. - * If two or more files are specified, they'll be merged. - * - * @param {string|Array} url - url(s) to animation(.vmd) file(s) - * @param {SkinnedMesh|THREE.Camera} object - tracks will be fitting to this object - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - loadAnimation(url, object, onLoad, onProgress, onError) { - const builder = this.animationBuilder; - this.loadVMD(url, function(vmd) { - onLoad(object.isCamera ? builder.buildCameraAnimation(vmd) : builder.build(vmd, object)); - }, onProgress, onError); - } - /** - * Loads mode file and motion file(s) as an object containing - * a SkinnedMesh and a AnimationClip. - * Tracks of AnimationClip are fitting to the model. - * - * @param {string} modelUrl - url to Model(.pmd or .pmx) file - * @param {string|Array{string}} vmdUrl - url(s) to animation(.vmd) file - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - loadWithAnimation(modelUrl, vmdUrl, onLoad, onProgress, onError) { - const scope = this; - this.load(modelUrl, function(mesh) { - scope.loadAnimation(vmdUrl, mesh, function(animation) { - onLoad({ - mesh, - animation - }); - }, onProgress, onError); - }, onProgress, onError); - } - // Load MMD assets as Object data parsed by MMDParser - /** - * Loads .pmd file as an Object. - * - * @param {string} url - url to .pmd file - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - loadPMD(url, onLoad, onProgress, onError) { - const parser = this._getParser(); - this.loader.setMimeType(void 0).setPath(this.path).setResponseType("arraybuffer").setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials).load(url, function(buffer) { - try { - onLoad(parser.parsePmd(buffer, true)); - } catch (e) { - if (onError) onError(e); - } - }, onProgress, onError); - } - /** - * Loads .pmx file as an Object. - * - * @param {string} url - url to .pmx file - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - loadPMX(url, onLoad, onProgress, onError) { - const parser = this._getParser(); - this.loader.setMimeType(void 0).setPath(this.path).setResponseType("arraybuffer").setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials).load(url, function(buffer) { - try { - onLoad(parser.parsePmx(buffer, true)); - } catch (e) { - if (onError) onError(e); - } - }, onProgress, onError); - } - /** - * Loads .vmd file as an Object. If two or more files are specified - * they'll be merged. - * - * @param {string|Array} url - url(s) to .vmd file(s) - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - loadVMD(url, onLoad, onProgress, onError) { - const urls = Array.isArray(url) ? url : [url]; - const vmds = []; - const vmdNum = urls.length; - const parser = this._getParser(); - this.loader.setMimeType(void 0).setPath(this.animationPath).setResponseType("arraybuffer").setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials); - for (let i = 0, il = urls.length; i < il; i++) { - this.loader.load(urls[i], function(buffer) { - try { - vmds.push(parser.parseVmd(buffer, true)); - if (vmds.length === vmdNum) onLoad(parser.mergeVmds(vmds)); - } catch (e) { - if (onError) onError(e); - } - }, onProgress, onError); - } - } - /** - * Loads .vpd file as an Object. - * - * @param {string} url - url to .vpd file - * @param {boolean} isUnicode - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - loadVPD(url, isUnicode, onLoad, onProgress, onError) { - const parser = this._getParser(); - this.loader.setMimeType(isUnicode ? void 0 : "text/plain; charset=shift_jis").setPath(this.animationPath).setResponseType("text").setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials).load(url, function(text2) { - try { - onLoad(parser.parseVpd(text2, true)); - } catch (e) { - if (onError) onError(e); - } - }, onProgress, onError); - } - // private methods - _extractModelExtension(buffer) { - const decoder = new TextDecoder("utf-8"); - const bytes = new Uint8Array(buffer, 0, 3); - return decoder.decode(bytes).toLowerCase(); - } - _getParser() { - if (this.parser === null) { - this.parser = new MMDParser.Parser(); - } - return this.parser; - } -}; -var DEFAULT_TOON_TEXTURES = [ - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=", - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAN0lEQVRYR+3WQREAMBACsZ5/bWiiMvgEBTt5cW37hjsBBAgQIECAwFwgyfYPCCBAgAABAgTWAh8aBHZBl14e8wAAAABJRU5ErkJggg==", - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAOUlEQVRYR+3WMREAMAwDsYY/yoDI7MLwIiP40+RJklfcCCBAgAABAgTqArfb/QMCCBAgQIAAgbbAB3z/e0F3js2cAAAAAElFTkSuQmCC", - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAN0lEQVRYR+3WQREAMBACsZ5/B5ilMvgEBTt5cW37hjsBBAgQIECAwFwgyfYPCCBAgAABAgTWAh81dWyx0gFwKAAAAABJRU5ErkJggg==", - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAOklEQVRYR+3WoREAMAwDsWb/UQtCy9wxTOQJ/oQ8SXKKGwEECBAgQIBAXeDt7f4BAQQIECBAgEBb4AOz8Hzx7WLY4wAAAABJRU5ErkJggg==", - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABPUlEQVRYR+1XwW7CMAy1+f9fZOMysSEOEweEOPRNdm3HbdOyIhAcklPrOs/PLy9RygBALxzcCDQFmgJNgaZAU6Ap0BR4PwX8gsRMVLssMRH5HcpzJEaWL7EVg9F1IHRlyqQohgVr4FGUlUcMJSjcUlDw0zvjeun70cLWmneoyf7NgBTQSniBTQQSuJAZsOnnaczjIMb5hCiuHKxokCrJfVnrctyZL0PkJAJe1HMil4nxeyi3Ypfn1kX51jpPvo/JeCNC4PhVdHdJw2XjBR8brF8PEIhNVn12AgP7uHsTBguBn53MUZCqv7Lp07Pn5k1Ro+uWmUNn7D+M57rtk7aG0Vo73xyF/fbFf0bPJjDXngnGocDTdFhygZjwUQrMNrDcmZlQT50VJ/g/UwNyHpu778+yW+/ksOz/BFo54P4AsUXMfRq7XWsAAAAASUVORK5CYII=", - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACMElEQVRYR+2Xv4pTQRTGf2dubhLdICiii2KnYKHVolhauKWPoGAnNr6BD6CvIVaihYuI2i1ia0BY0MZGRHQXjZj/mSPnnskfNWiWZUlzJ5k7M2cm833nO5Mziej2DWWJRUoCpQKlAntSQCqgw39/iUWAGmh37jrRnVsKlgpiqmkoGVABA7E57fvY+pJDdgKqF6HzFCSADkDq+F6AHABtQ+UMVE5D7zXod7fFNhTEckTbj5XQgHzNN+5tQvc5NG7C6BNkp6D3EmpXHDR+dQAjFLchW3VS9rlw3JBh+B7ys5Cf9z0GW1C/7P32AyBAOAz1q4jGliIH3YPuBnSfQX4OGreTIgEYQb/pBDtPnEQ4CivXYPAWBk13oHrB54yA9QuSn2H4AcKRpEILDt0BUzj+RLR1V5EqjD66NPRBVpLcQwjHoHYJOhsQv6U4mnzmrIXJCFr4LDwm/xBUoboG9XX4cc9VKdYoSA2yk5NQLJaKDUjTBoveG3Z2TElTxwjNK4M3LEZgUdDdruvcXzKBpStgp2NPiWi3ks9ZXxIoFVi+AvHLdc9TqtjL3/aYjpPlrzOcEnK62Szhimdd7xX232zFDTgtxezOu3WNMRLjiKgjtOhHVMd1loynVHvOgjuIIJMaELEqhJAV/RCSLbWTcfPFakFgFlALTRRvx+ok6Hlp/Q+v3fmx90bMyUzaEAhmM3KvHlXTL5DxnbGf/1M8RNNACLL5MNtPxP/mypJAqcDSFfgFhpYqWUzhTEAAAAAASUVORK5CYII=", - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=", - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=", - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=", - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=" -]; -var NON_ALPHA_CHANNEL_FORMATS = [ - RGB_S3TC_DXT1_Format, - RGB_PVRTC_4BPPV1_Format, - RGB_PVRTC_2BPPV1_Format, - RGB_ETC1_Format, - RGB_ETC2_Format -]; -var MeshBuilder = class { - constructor(manager) { - this.crossOrigin = "anonymous"; - this.geometryBuilder = new GeometryBuilder(); - this.materialBuilder = new MaterialBuilder(manager); - } - /** - * @param {string} crossOrigin - * @return {MeshBuilder} - */ - setCrossOrigin(crossOrigin) { - this.crossOrigin = crossOrigin; - return this; - } - /** - * @param {Object} data - parsed PMD/PMX data - * @param {string} resourcePath - * @param {function} onProgress - * @param {function} onError - * @return {SkinnedMesh} - */ - build(data2, resourcePath, onProgress, onError) { - const geometry = this.geometryBuilder.build(data2); - const material = this.materialBuilder.setCrossOrigin(this.crossOrigin).setResourcePath(resourcePath).build(data2, geometry, onProgress, onError); - const mesh = new SkinnedMesh(geometry, material); - const skeleton = new Skeleton(initBones(mesh)); - mesh.bind(skeleton); - return mesh; - } -}; -function initBones(mesh) { - const geometry = mesh.geometry; - const bones = []; - if (geometry && geometry.bones !== void 0) { - for (let i = 0, il = geometry.bones.length; i < il; i++) { - const gbone = geometry.bones[i]; - const bone = new Bone(); - bones.push(bone); - bone.name = gbone.name; - bone.position.fromArray(gbone.pos); - bone.quaternion.fromArray(gbone.rotq); - if (gbone.scl !== void 0) bone.scale.fromArray(gbone.scl); - } - for (let i = 0, il = geometry.bones.length; i < il; i++) { - const gbone = geometry.bones[i]; - if (gbone.parent !== -1 && gbone.parent !== null && bones[gbone.parent] !== void 0) { - bones[gbone.parent].add(bones[i]); - } else { - mesh.add(bones[i]); - } - } - } - mesh.updateMatrixWorld(true); - return bones; -} -var GeometryBuilder = class { - /** - * @param {Object} data - parsed PMD/PMX data - * @return {BufferGeometry} - */ - build(data2) { - const positions = []; - const uvs = []; - const normals = []; - const indices = []; - const groups = []; - const bones = []; - const skinIndices = []; - const skinWeights = []; - const morphTargets = []; - const morphPositions = []; - const iks = []; - const grants = []; - const rigidBodies = []; - const constraints = []; - let offset = 0; - const boneTypeTable = {}; - for (let i = 0; i < data2.metadata.vertexCount; i++) { - const v = data2.vertices[i]; - for (let j = 0, jl = v.position.length; j < jl; j++) { - positions.push(v.position[j]); - } - for (let j = 0, jl = v.normal.length; j < jl; j++) { - normals.push(v.normal[j]); - } - for (let j = 0, jl = v.uv.length; j < jl; j++) { - uvs.push(v.uv[j]); - } - for (let j = 0; j < 4; j++) { - skinIndices.push(v.skinIndices.length - 1 >= j ? v.skinIndices[j] : 0); - } - for (let j = 0; j < 4; j++) { - skinWeights.push(v.skinWeights.length - 1 >= j ? v.skinWeights[j] : 0); - } - } - for (let i = 0; i < data2.metadata.faceCount; i++) { - const face = data2.faces[i]; - for (let j = 0, jl = face.indices.length; j < jl; j++) { - indices.push(face.indices[j]); - } - } - for (let i = 0; i < data2.metadata.materialCount; i++) { - const material = data2.materials[i]; - groups.push({ - offset: offset * 3, - count: material.faceCount * 3 - }); - offset += material.faceCount; - } - for (let i = 0; i < data2.metadata.rigidBodyCount; i++) { - const body = data2.rigidBodies[i]; - let value2 = boneTypeTable[body.boneIndex]; - value2 = value2 === void 0 ? body.type : Math.max(body.type, value2); - boneTypeTable[body.boneIndex] = value2; - } - for (let i = 0; i < data2.metadata.boneCount; i++) { - const boneData = data2.bones[i]; - const bone = { - index: i, - transformationClass: boneData.transformationClass, - parent: boneData.parentIndex, - name: boneData.name, - pos: boneData.position.slice(0, 3), - rotq: [0, 0, 0, 1], - scl: [1, 1, 1], - rigidBodyType: boneTypeTable[i] !== void 0 ? boneTypeTable[i] : -1 - }; - if (bone.parent !== -1) { - bone.pos[0] -= data2.bones[bone.parent].position[0]; - bone.pos[1] -= data2.bones[bone.parent].position[1]; - bone.pos[2] -= data2.bones[bone.parent].position[2]; - } - bones.push(bone); - } - if (data2.metadata.format === "pmd") { - for (let i = 0; i < data2.metadata.ikCount; i++) { - const ik = data2.iks[i]; - const param = { - target: ik.target, - effector: ik.effector, - iteration: ik.iteration, - maxAngle: ik.maxAngle * 4, - links: [] - }; - for (let j = 0, jl = ik.links.length; j < jl; j++) { - const link = {}; - link.index = ik.links[j].index; - link.enabled = true; - if (data2.bones[link.index].name.indexOf("ひざ") >= 0) { - link.limitation = new Vector3(1, 0, 0); - } - param.links.push(link); - } - iks.push(param); - } - } else { - for (let i = 0; i < data2.metadata.boneCount; i++) { - const ik = data2.bones[i].ik; - if (ik === void 0) continue; - const param = { - target: i, - effector: ik.effector, - iteration: ik.iteration, - maxAngle: ik.maxAngle, - links: [] - }; - for (let j = 0, jl = ik.links.length; j < jl; j++) { - const link = {}; - link.index = ik.links[j].index; - link.enabled = true; - if (ik.links[j].angleLimitation === 1) { - const rotationMin = ik.links[j].lowerLimitationAngle; - const rotationMax = ik.links[j].upperLimitationAngle; - const tmp1 = -rotationMax[0]; - const tmp2 = -rotationMax[1]; - rotationMax[0] = -rotationMin[0]; - rotationMax[1] = -rotationMin[1]; - rotationMin[0] = tmp1; - rotationMin[1] = tmp2; - link.rotationMin = new Vector3().fromArray(rotationMin); - link.rotationMax = new Vector3().fromArray(rotationMax); - } - param.links.push(link); - } - iks.push(param); - bones[i].ik = param; - } - } - if (data2.metadata.format === "pmx") { - let traverse = function(entry) { - if (entry.param) { - grants.push(entry.param); - bones[entry.param.index].grant = entry.param; - } - entry.visited = true; - for (let i = 0, il = entry.children.length; i < il; i++) { - const child = entry.children[i]; - if (!child.visited) traverse(child); - } - }; - const grantEntryMap = {}; - for (let i = 0; i < data2.metadata.boneCount; i++) { - const boneData = data2.bones[i]; - const grant = boneData.grant; - if (grant === void 0) continue; - const param = { - index: i, - parentIndex: grant.parentIndex, - ratio: grant.ratio, - isLocal: grant.isLocal, - affectRotation: grant.affectRotation, - affectPosition: grant.affectPosition, - transformationClass: boneData.transformationClass - }; - grantEntryMap[i] = { parent: null, children: [], param, visited: false }; - } - const rootEntry = { parent: null, children: [], param: null, visited: false }; - for (const boneIndex in grantEntryMap) { - const grantEntry = grantEntryMap[boneIndex]; - const parentGrantEntry = grantEntryMap[grantEntry.parentIndex] || rootEntry; - grantEntry.parent = parentGrantEntry; - parentGrantEntry.children.push(grantEntry); - } - traverse(rootEntry); - } - function updateAttributes(attribute, morph, ratio) { - for (let i = 0; i < morph.elementCount; i++) { - const element = morph.elements[i]; - let index2; - if (data2.metadata.format === "pmd") { - index2 = data2.morphs[0].elements[element.index].index; - } else { - index2 = element.index; - } - attribute.array[index2 * 3 + 0] += element.position[0] * ratio; - attribute.array[index2 * 3 + 1] += element.position[1] * ratio; - attribute.array[index2 * 3 + 2] += element.position[2] * ratio; - } - } - for (let i = 0; i < data2.metadata.morphCount; i++) { - const morph = data2.morphs[i]; - const params = { name: morph.name }; - const attribute = new Float32BufferAttribute(data2.metadata.vertexCount * 3, 3); - attribute.name = morph.name; - for (let j = 0; j < data2.metadata.vertexCount * 3; j++) { - attribute.array[j] = positions[j]; - } - if (data2.metadata.format === "pmd") { - if (i !== 0) { - updateAttributes(attribute, morph, 1); - } - } else { - if (morph.type === 0) { - for (let j = 0; j < morph.elementCount; j++) { - const morph2 = data2.morphs[morph.elements[j].index]; - const ratio = morph.elements[j].ratio; - if (morph2.type === 1) { - updateAttributes(attribute, morph2, ratio); - } else { - } - } - } else if (morph.type === 1) { - updateAttributes(attribute, morph, 1); - } else if (morph.type === 2) { - } else if (morph.type === 3) { - } else if (morph.type === 4) { - } else if (morph.type === 5) { - } else if (morph.type === 6) { - } else if (morph.type === 7) { - } else if (morph.type === 8) { - } - } - morphTargets.push(params); - morphPositions.push(attribute); - } - for (let i = 0; i < data2.metadata.rigidBodyCount; i++) { - const rigidBody = data2.rigidBodies[i]; - const params = {}; - for (const key2 in rigidBody) { - params[key2] = rigidBody[key2]; - } - if (data2.metadata.format === "pmx") { - if (params.boneIndex !== -1) { - const bone = data2.bones[params.boneIndex]; - params.position[0] -= bone.position[0]; - params.position[1] -= bone.position[1]; - params.position[2] -= bone.position[2]; - } - } - rigidBodies.push(params); - } - for (let i = 0; i < data2.metadata.constraintCount; i++) { - const constraint = data2.constraints[i]; - const params = {}; - for (const key2 in constraint) { - params[key2] = constraint[key2]; - } - const bodyA = rigidBodies[params.rigidBodyIndex1]; - const bodyB = rigidBodies[params.rigidBodyIndex2]; - if (bodyA.type !== 0 && bodyB.type === 2) { - if (bodyA.boneIndex !== -1 && bodyB.boneIndex !== -1 && data2.bones[bodyB.boneIndex].parentIndex === bodyA.boneIndex) { - bodyB.type = 1; - } - } - constraints.push(params); - } - const geometry = new BufferGeometry(); - geometry.setAttribute("position", new Float32BufferAttribute(positions, 3)); - geometry.setAttribute("normal", new Float32BufferAttribute(normals, 3)); - geometry.setAttribute("uv", new Float32BufferAttribute(uvs, 2)); - geometry.setAttribute("skinIndex", new Uint16BufferAttribute(skinIndices, 4)); - geometry.setAttribute("skinWeight", new Float32BufferAttribute(skinWeights, 4)); - geometry.setIndex(indices); - for (let i = 0, il = groups.length; i < il; i++) { - geometry.addGroup(groups[i].offset, groups[i].count, i); - } - geometry.bones = bones; - geometry.morphTargets = morphTargets; - geometry.morphAttributes.position = morphPositions; - geometry.morphTargetsRelative = false; - geometry.userData.MMD = { - bones, - iks, - grants, - rigidBodies, - constraints, - format: data2.metadata.format - }; - geometry.computeBoundingSphere(); - return geometry; - } -}; -var MaterialBuilder = class { - constructor(manager) { - this.manager = manager; - this.textureLoader = new TextureLoader(this.manager); - this.tgaLoader = null; - this.crossOrigin = "anonymous"; - this.resourcePath = void 0; - } - /** - * @param {string} crossOrigin - * @return {MaterialBuilder} - */ - setCrossOrigin(crossOrigin) { - this.crossOrigin = crossOrigin; - return this; - } - /** - * @param {string} resourcePath - * @return {MaterialBuilder} - */ - setResourcePath(resourcePath) { - this.resourcePath = resourcePath; - return this; - } - /** - * @param {Object} data - parsed PMD/PMX data - * @param {BufferGeometry} geometry - some properties are dependend on geometry - * @param {function} onProgress - * @param {function} onError - * @return {Array} - */ - build(data2, geometry) { - const materials = []; - const textures = {}; - this.textureLoader.setCrossOrigin(this.crossOrigin); - for (let i = 0; i < data2.metadata.materialCount; i++) { - const material = data2.materials[i]; - const params = { userData: { MMD: {} } }; - if (material.name !== void 0) params.name = material.name; - params.diffuse = new Color().setRGB( - material.diffuse[0], - material.diffuse[1], - material.diffuse[2], - SRGBColorSpace - ); - params.opacity = material.diffuse[3]; - params.specular = new Color().setRGB(...material.specular, SRGBColorSpace); - params.shininess = material.shininess; - params.emissive = new Color().setRGB(...material.ambient, SRGBColorSpace); - params.transparent = params.opacity !== 1; - params.fog = true; - params.blending = CustomBlending; - params.blendSrc = SrcAlphaFactor; - params.blendDst = OneMinusSrcAlphaFactor; - params.blendSrcAlpha = SrcAlphaFactor; - params.blendDstAlpha = DstAlphaFactor; - if (data2.metadata.format === "pmx" && (material.flag & 1) === 1) { - params.side = DoubleSide; - } else { - params.side = params.opacity === 1 ? FrontSide : DoubleSide; - } - if (data2.metadata.format === "pmd") { - if (material.fileName) { - const fileName = material.fileName; - const fileNames = fileName.split("*"); - params.map = this._loadTexture(fileNames[0], textures); - if (fileNames.length > 1) { - const extension = fileNames[1].slice(-4).toLowerCase(); - params.matcap = this._loadTexture( - fileNames[1], - textures - ); - params.matcapCombine = extension === ".sph" ? MultiplyOperation : AddOperation; - } - } - const toonFileName = material.toonIndex === -1 ? "toon00.bmp" : data2.toonTextures[material.toonIndex].fileName; - params.gradientMap = this._loadTexture( - toonFileName, - textures, - { - isToonTexture: true, - isDefaultToonTexture: this._isDefaultToonTexture(toonFileName) - } - ); - params.userData.outlineParameters = { - thickness: material.edgeFlag === 1 ? 3e-3 : 0, - color: [0, 0, 0], - alpha: 1, - visible: material.edgeFlag === 1 - }; - } else { - if (material.textureIndex !== -1) { - params.map = this._loadTexture(data2.textures[material.textureIndex], textures); - params.userData.MMD.mapFileName = data2.textures[material.textureIndex]; - } - if (material.envTextureIndex !== -1 && (material.envFlag === 1 || material.envFlag == 2)) { - params.matcap = this._loadTexture( - data2.textures[material.envTextureIndex], - textures - ); - params.userData.MMD.matcapFileName = data2.textures[material.envTextureIndex]; - params.matcapCombine = material.envFlag === 1 ? MultiplyOperation : AddOperation; - } - let toonFileName, isDefaultToon; - if (material.toonIndex === -1 || material.toonFlag !== 0) { - toonFileName = "toon" + ("0" + (material.toonIndex + 1)).slice(-2) + ".bmp"; - isDefaultToon = true; - } else { - toonFileName = data2.textures[material.toonIndex]; - isDefaultToon = false; - } - params.gradientMap = this._loadTexture( - toonFileName, - textures, - { - isToonTexture: true, - isDefaultToonTexture: isDefaultToon - } - ); - params.userData.outlineParameters = { - thickness: material.edgeSize / 300, - // TODO: better calculation? - color: material.edgeColor.slice(0, 3), - alpha: material.edgeColor[3], - visible: (material.flag & 16) !== 0 && material.edgeSize > 0 - }; - } - if (params.map !== void 0) { - if (!params.transparent) { - this._checkImageTransparency(params.map, geometry, i); - } - params.emissive.multiplyScalar(0.2); - } - materials.push(new MMDToonMaterial(params)); - } - if (data2.metadata.format === "pmx") { - let checkAlphaMorph = function(elements, materials2) { - for (let i = 0, il = elements.length; i < il; i++) { - const element = elements[i]; - if (element.index === -1) continue; - const material = materials2[element.index]; - if (material.opacity !== element.diffuse[3]) { - material.transparent = true; - } - } - }; - for (let i = 0, il = data2.morphs.length; i < il; i++) { - const morph = data2.morphs[i]; - const elements = morph.elements; - if (morph.type === 0) { - for (let j = 0, jl = elements.length; j < jl; j++) { - const morph2 = data2.morphs[elements[j].index]; - if (morph2.type !== 8) continue; - checkAlphaMorph(morph2.elements, materials); - } - } else if (morph.type === 8) { - checkAlphaMorph(elements, materials); - } - } - } - return materials; - } - // private methods - _getTGALoader() { - if (this.tgaLoader === null) { - if (TGALoader === void 0) { - throw new Error("THREE.MMDLoader: Import TGALoader"); - } - this.tgaLoader = new TGALoader(this.manager); - } - return this.tgaLoader; - } - _isDefaultToonTexture(name2) { - if (name2.length !== 10) return false; - return /toon(10|0[0-9])\.bmp/.test(name2); - } - _loadTexture(filePath, textures, params, onProgress, onError) { - params = params || {}; - const scope = this; - let fullPath; - if (params.isDefaultToonTexture === true) { - let index2; - try { - index2 = parseInt(filePath.match(/toon([0-9]{2})\.bmp$/)[1]); - } catch (e) { - console.warn("THREE.MMDLoader: " + filePath + " seems like a not right default texture path. Using toon00.bmp instead."); - index2 = 0; - } - fullPath = DEFAULT_TOON_TEXTURES[index2]; - } else { - fullPath = this.resourcePath + filePath; - } - if (textures[fullPath] !== void 0) return textures[fullPath]; - let loader = this.manager.getHandler(fullPath); - if (loader === null) { - loader = filePath.slice(-4).toLowerCase() === ".tga" ? this._getTGALoader() : this.textureLoader; - } - const texture = loader.load(fullPath, function(t3) { - if (params.isToonTexture === true) { - t3.image = scope._getRotatedImage(t3.image); - t3.magFilter = NearestFilter; - t3.minFilter = NearestFilter; - } - t3.flipY = false; - t3.wrapS = RepeatWrapping; - t3.wrapT = RepeatWrapping; - t3.colorSpace = SRGBColorSpace; - for (let i = 0; i < texture.readyCallbacks.length; i++) { - texture.readyCallbacks[i](texture); - } - delete texture.readyCallbacks; - }, onProgress, onError); - texture.readyCallbacks = []; - textures[fullPath] = texture; - return texture; - } - _getRotatedImage(image) { - const canvas = document.createElement("canvas"); - const context = canvas.getContext("2d"); - const width2 = image.width; - const height2 = image.height; - canvas.width = width2; - canvas.height = height2; - context.clearRect(0, 0, width2, height2); - context.translate(width2 / 2, height2 / 2); - context.rotate(0.5 * Math.PI); - context.translate(-width2 / 2, -height2 / 2); - context.drawImage(image, 0, 0); - return context.getImageData(0, 0, width2, height2); - } - // Check if the partial image area used by the texture is transparent. - _checkImageTransparency(map2, geometry, groupIndex) { - map2.readyCallbacks.push(function(texture) { - function createImageData(image) { - const canvas = document.createElement("canvas"); - canvas.width = image.width; - canvas.height = image.height; - const context = canvas.getContext("2d"); - context.drawImage(image, 0, 0); - return context.getImageData(0, 0, canvas.width, canvas.height); - } - function detectImageTransparency(image, uvs, indices) { - const width2 = image.width; - const height2 = image.height; - const data2 = image.data; - const threshold = 253; - if (data2.length / (width2 * height2) !== 4) return false; - for (let i = 0; i < indices.length; i += 3) { - const centerUV = { x: 0, y: 0 }; - for (let j = 0; j < 3; j++) { - const index2 = indices[i * 3 + j]; - const uv = { x: uvs[index2 * 2 + 0], y: uvs[index2 * 2 + 1] }; - if (getAlphaByUv(image, uv) < threshold) return true; - centerUV.x += uv.x; - centerUV.y += uv.y; - } - centerUV.x /= 3; - centerUV.y /= 3; - if (getAlphaByUv(image, centerUV) < threshold) return true; - } - return false; - } - function getAlphaByUv(image, uv) { - const width2 = image.width; - const height2 = image.height; - let x2 = Math.round(uv.x * width2) % width2; - let y2 = Math.round(uv.y * height2) % height2; - if (x2 < 0) x2 += width2; - if (y2 < 0) y2 += height2; - const index2 = y2 * width2 + x2; - return image.data[index2 * 4 + 3]; - } - if (texture.isCompressedTexture === true) { - if (NON_ALPHA_CHANNEL_FORMATS.includes(texture.format)) { - map2.transparent = false; - } else { - map2.transparent = true; - } - return; - } - const imageData = texture.image.data !== void 0 ? texture.image : createImageData(texture.image); - const group = geometry.groups[groupIndex]; - if (detectImageTransparency( - imageData, - geometry.attributes.uv.array, - geometry.index.array.slice(group.start, group.start + group.count) - )) { - map2.transparent = true; - } - }); - } -}; -var AnimationBuilder = class { - /** - * @param {Object} vmd - parsed VMD data - * @param {SkinnedMesh} mesh - tracks will be fitting to mesh - * @return {AnimationClip} - */ - build(vmd, mesh) { - const tracks = this.buildSkeletalAnimation(vmd, mesh).tracks; - const tracks2 = this.buildMorphAnimation(vmd, mesh).tracks; - for (let i = 0, il = tracks2.length; i < il; i++) { - tracks.push(tracks2[i]); - } - return new AnimationClip("", -1, tracks); - } - /** - * @param {Object} vmd - parsed VMD data - * @param {SkinnedMesh} mesh - tracks will be fitting to mesh - * @return {AnimationClip} - */ - buildSkeletalAnimation(vmd, mesh) { - function pushInterpolation(array, interpolation, index2) { - array.push(interpolation[index2 + 0] / 127); - array.push(interpolation[index2 + 8] / 127); - array.push(interpolation[index2 + 4] / 127); - array.push(interpolation[index2 + 12] / 127); - } - const tracks = []; - const motions = {}; - const bones = mesh.skeleton.bones; - const boneNameDictionary = {}; - for (let i = 0, il = bones.length; i < il; i++) { - boneNameDictionary[bones[i].name] = true; - } - for (let i = 0; i < vmd.metadata.motionCount; i++) { - const motion = vmd.motions[i]; - const boneName = motion.boneName; - if (boneNameDictionary[boneName] === void 0) continue; - motions[boneName] = motions[boneName] || []; - motions[boneName].push(motion); - } - for (const key2 in motions) { - const array = motions[key2]; - array.sort(function(a2, b3) { - return a2.frameNum - b3.frameNum; - }); - const times = []; - const positions = []; - const rotations = []; - const pInterpolations = []; - const rInterpolations = []; - const basePosition = mesh.skeleton.getBoneByName(key2).position.toArray(); - for (let i = 0, il = array.length; i < il; i++) { - const time2 = array[i].frameNum / 30; - const position2 = array[i].position; - const rotation2 = array[i].rotation; - const interpolation = array[i].interpolation; - times.push(time2); - for (let j = 0; j < 3; j++) positions.push(basePosition[j] + position2[j]); - for (let j = 0; j < 4; j++) rotations.push(rotation2[j]); - for (let j = 0; j < 3; j++) pushInterpolation(pInterpolations, interpolation, j); - pushInterpolation(rInterpolations, interpolation, 3); - } - const targetName = ".bones[" + key2 + "]"; - tracks.push(this._createTrack(targetName + ".position", VectorKeyframeTrack, times, positions, pInterpolations)); - tracks.push(this._createTrack(targetName + ".quaternion", QuaternionKeyframeTrack, times, rotations, rInterpolations)); - } - return new AnimationClip("", -1, tracks); - } - /** - * @param {Object} vmd - parsed VMD data - * @param {SkinnedMesh} mesh - tracks will be fitting to mesh - * @return {AnimationClip} - */ - buildMorphAnimation(vmd, mesh) { - const tracks = []; - const morphs = {}; - const morphTargetDictionary = mesh.morphTargetDictionary; - for (let i = 0; i < vmd.metadata.morphCount; i++) { - const morph = vmd.morphs[i]; - const morphName = morph.morphName; - if (morphTargetDictionary[morphName] === void 0) continue; - morphs[morphName] = morphs[morphName] || []; - morphs[morphName].push(morph); - } - for (const key2 in morphs) { - const array = morphs[key2]; - array.sort(function(a2, b3) { - return a2.frameNum - b3.frameNum; - }); - const times = []; - const values2 = []; - for (let i = 0, il = array.length; i < il; i++) { - times.push(array[i].frameNum / 30); - values2.push(array[i].weight); - } - tracks.push(new NumberKeyframeTrack(".morphTargetInfluences[" + morphTargetDictionary[key2] + "]", times, values2)); - } - return new AnimationClip("", -1, tracks); - } - /** - * @param {Object} vmd - parsed VMD data - * @return {AnimationClip} - */ - buildCameraAnimation(vmd) { - function pushVector3(array, vec) { - array.push(vec.x); - array.push(vec.y); - array.push(vec.z); - } - function pushQuaternion(array, q2) { - array.push(q2.x); - array.push(q2.y); - array.push(q2.z); - array.push(q2.w); - } - function pushInterpolation(array, interpolation, index2) { - array.push(interpolation[index2 * 4 + 0] / 127); - array.push(interpolation[index2 * 4 + 1] / 127); - array.push(interpolation[index2 * 4 + 2] / 127); - array.push(interpolation[index2 * 4 + 3] / 127); - } - const cameras = vmd.cameras === void 0 ? [] : vmd.cameras.slice(); - cameras.sort(function(a2, b3) { - return a2.frameNum - b3.frameNum; - }); - const times = []; - const centers = []; - const quaternions = []; - const positions = []; - const fovs = []; - const cInterpolations = []; - const qInterpolations = []; - const pInterpolations = []; - const fInterpolations = []; - const quaternion = new Quaternion(); - const euler = new Euler(); - const position2 = new Vector3(); - const center = new Vector3(); - for (let i = 0, il = cameras.length; i < il; i++) { - const motion = cameras[i]; - const time2 = motion.frameNum / 30; - const pos = motion.position; - const rot = motion.rotation; - const distance = motion.distance; - const fov = motion.fov; - const interpolation = motion.interpolation; - times.push(time2); - position2.set(0, 0, -distance); - center.set(pos[0], pos[1], pos[2]); - euler.set(-rot[0], -rot[1], -rot[2]); - quaternion.setFromEuler(euler); - position2.add(center); - position2.applyQuaternion(quaternion); - pushVector3(centers, center); - pushQuaternion(quaternions, quaternion); - pushVector3(positions, position2); - fovs.push(fov); - for (let j = 0; j < 3; j++) { - pushInterpolation(cInterpolations, interpolation, j); - } - pushInterpolation(qInterpolations, interpolation, 3); - for (let j = 0; j < 3; j++) { - pushInterpolation(pInterpolations, interpolation, 4); - } - pushInterpolation(fInterpolations, interpolation, 5); - } - const tracks = []; - tracks.push(this._createTrack("target.position", VectorKeyframeTrack, times, centers, cInterpolations)); - tracks.push(this._createTrack(".quaternion", QuaternionKeyframeTrack, times, quaternions, qInterpolations)); - tracks.push(this._createTrack(".position", VectorKeyframeTrack, times, positions, pInterpolations)); - tracks.push(this._createTrack(".fov", NumberKeyframeTrack, times, fovs, fInterpolations)); - return new AnimationClip("", -1, tracks); - } - // private method - _createTrack(node, typedKeyframeTrack, times, values2, interpolations) { - if (times.length > 2) { - times = times.slice(); - values2 = values2.slice(); - interpolations = interpolations.slice(); - const stride = values2.length / times.length; - const interpolateStride = interpolations.length / times.length; - let index2 = 1; - for (let aheadIndex = 2, endIndex = times.length; aheadIndex < endIndex; aheadIndex++) { - for (let i = 0; i < stride; i++) { - if (values2[index2 * stride + i] !== values2[(index2 - 1) * stride + i] || values2[index2 * stride + i] !== values2[aheadIndex * stride + i]) { - index2++; - break; - } - } - if (aheadIndex > index2) { - times[index2] = times[aheadIndex]; - for (let i = 0; i < stride; i++) { - values2[index2 * stride + i] = values2[aheadIndex * stride + i]; - } - for (let i = 0; i < interpolateStride; i++) { - interpolations[index2 * interpolateStride + i] = interpolations[aheadIndex * interpolateStride + i]; - } - } - } - times.length = index2 + 1; - values2.length = (index2 + 1) * stride; - interpolations.length = (index2 + 1) * interpolateStride; - } - const track = new typedKeyframeTrack(node, times, values2); - track.createInterpolant = function InterpolantFactoryMethodCubicBezier(result) { - return new CubicBezierInterpolation(this.times, this.values, this.getValueSize(), result, new Float32Array(interpolations)); - }; - return track; - } -}; -var CubicBezierInterpolation = class extends Interpolant { - constructor(parameterPositions, sampleValues, sampleSize, resultBuffer, params) { - super(parameterPositions, sampleValues, sampleSize, resultBuffer); - this.interpolationParams = params; - } - interpolate_(i1, t0, t3, t1) { - const result = this.resultBuffer; - const values2 = this.sampleValues; - const stride = this.valueSize; - const params = this.interpolationParams; - const offset1 = i1 * stride; - const offset0 = offset1 - stride; - const weight1 = t1 - t0 < 1 / 30 * 1.5 ? 0 : (t3 - t0) / (t1 - t0); - if (stride === 4) { - const x1 = params[i1 * 4 + 0]; - const x2 = params[i1 * 4 + 1]; - const y1 = params[i1 * 4 + 2]; - const y2 = params[i1 * 4 + 3]; - const ratio = this._calculate(x1, x2, y1, y2, weight1); - Quaternion.slerpFlat(result, 0, values2, offset0, values2, offset1, ratio); - } else if (stride === 3) { - for (let i = 0; i !== stride; ++i) { - const x1 = params[i1 * 12 + i * 4 + 0]; - const x2 = params[i1 * 12 + i * 4 + 1]; - const y1 = params[i1 * 12 + i * 4 + 2]; - const y2 = params[i1 * 12 + i * 4 + 3]; - const ratio = this._calculate(x1, x2, y1, y2, weight1); - result[i] = values2[offset0 + i] * (1 - ratio) + values2[offset1 + i] * ratio; - } - } else { - const x1 = params[i1 * 4 + 0]; - const x2 = params[i1 * 4 + 1]; - const y1 = params[i1 * 4 + 2]; - const y2 = params[i1 * 4 + 3]; - const ratio = this._calculate(x1, x2, y1, y2, weight1); - result[0] = values2[offset0] * (1 - ratio) + values2[offset1] * ratio; - } - return result; - } - _calculate(x1, x2, y1, y2, x3) { - let c2 = 0.5; - let t3 = c2; - let s = 1 - t3; - const loop = 15; - const eps = 1e-5; - const math = Math; - let sst3, stt3, ttt; - for (let i = 0; i < loop; i++) { - sst3 = 3 * s * s * t3; - stt3 = 3 * s * t3 * t3; - ttt = t3 * t3 * t3; - const ft2 = sst3 * x1 + stt3 * x2 + ttt - x3; - if (math.abs(ft2) < eps) break; - c2 /= 2; - t3 += ft2 < 0 ? c2 : -c2; - s = 1 - t3; - } - return sst3 * y1 + stt3 * y2 + ttt; - } -}; -var MMDToonMaterial = class extends ShaderMaterial { - constructor(parameters) { - super(); - this.isMMDToonMaterial = true; - this.type = "MMDToonMaterial"; - this._matcapCombine = AddOperation; - this.emissiveIntensity = 1; - this.normalMapType = TangentSpaceNormalMap; - this.combine = MultiplyOperation; - this.wireframeLinecap = "round"; - this.wireframeLinejoin = "round"; - this.flatShading = false; - this.lights = true; - this.vertexShader = MMDToonShader.vertexShader; - this.fragmentShader = MMDToonShader.fragmentShader; - this.defines = Object.assign({}, MMDToonShader.defines); - Object.defineProperty(this, "matcapCombine", { - get: function() { - return this._matcapCombine; - }, - set: function(value2) { - this._matcapCombine = value2; - switch (value2) { - case MultiplyOperation: - this.defines.MATCAP_BLENDING_MULTIPLY = true; - delete this.defines.MATCAP_BLENDING_ADD; - break; - default: - case AddOperation: - this.defines.MATCAP_BLENDING_ADD = true; - delete this.defines.MATCAP_BLENDING_MULTIPLY; - break; - } - } - }); - this.uniforms = UniformsUtils.clone(MMDToonShader.uniforms); - const exposePropertyNames = [ - "specular", - "opacity", - "diffuse", - "map", - "matcap", - "gradientMap", - "lightMap", - "lightMapIntensity", - "aoMap", - "aoMapIntensity", - "emissive", - "emissiveMap", - "bumpMap", - "bumpScale", - "normalMap", - "normalScale", - "displacemantBias", - "displacemantMap", - "displacemantScale", - "specularMap", - "alphaMap", - "reflectivity", - "refractionRatio" - ]; - for (const propertyName of exposePropertyNames) { - Object.defineProperty(this, propertyName, { - get: function() { - return this.uniforms[propertyName].value; - }, - set: function(value2) { - this.uniforms[propertyName].value = value2; - } - }); - } - this._shininess = 30; - Object.defineProperty(this, "shininess", { - get: function() { - return this._shininess; - }, - set: function(value2) { - this._shininess = value2; - this.uniforms.shininess.value = Math.max(this._shininess, 1e-4); - } - }); - Object.defineProperty( - this, - "color", - Object.getOwnPropertyDescriptor(this, "diffuse") - ); - this.setValues(parameters); - } - copy(source) { - super.copy(source); - this.matcapCombine = source.matcapCombine; - this.emissiveIntensity = source.emissiveIntensity; - this.normalMapType = source.normalMapType; - this.combine = source.combine; - this.wireframeLinecap = source.wireframeLinecap; - this.wireframeLinejoin = source.wireframeLinejoin; - this.flatShading = source.flatShading; - return this; - } -}; - -// node_modules/three/examples/jsm/loaders/MTLLoader.js -var MTLLoader = class extends Loader { - constructor(manager) { - super(manager); - } - /** - * Loads and parses a MTL asset from a URL. - * - * @param {String} url - URL to the MTL file. - * @param {Function} [onLoad] - Callback invoked with the loaded object. - * @param {Function} [onProgress] - Callback for download progress. - * @param {Function} [onError] - Callback for download errors. - * - * @see setPath setResourcePath - * - * @note In order for relative texture references to resolve correctly - * you must call setResourcePath() explicitly prior to load. - */ - load(url, onLoad, onProgress, onError) { - const scope = this; - const path = this.path === "" ? LoaderUtils.extractUrlBase(url) : this.path; - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setRequestHeader(this.requestHeader); - loader.setWithCredentials(this.withCredentials); - loader.load(url, function(text2) { - try { - onLoad(scope.parse(text2, path)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - setMaterialOptions(value2) { - this.materialOptions = value2; - return this; - } - /** - * Parses a MTL file. - * - * @param {String} text - Content of MTL file - * @return {MaterialCreator} - * - * @see setPath setResourcePath - * - * @note In order for relative texture references to resolve correctly - * you must call setResourcePath() explicitly prior to parse. - */ - parse(text2, path) { - const lines = text2.split("\n"); - let info = {}; - const delimiter_pattern = /\s+/; - const materialsInfo = {}; - for (let i = 0; i < lines.length; i++) { - let line2 = lines[i]; - line2 = line2.trim(); - if (line2.length === 0 || line2.charAt(0) === "#") { - continue; - } - const pos = line2.indexOf(" "); - let key2 = pos >= 0 ? line2.substring(0, pos) : line2; - key2 = key2.toLowerCase(); - let value2 = pos >= 0 ? line2.substring(pos + 1) : ""; - value2 = value2.trim(); - if (key2 === "newmtl") { - info = { name: value2 }; - materialsInfo[value2] = info; - } else { - if (key2 === "ka" || key2 === "kd" || key2 === "ks" || key2 === "ke") { - const ss = value2.split(delimiter_pattern, 3); - info[key2] = [parseFloat(ss[0]), parseFloat(ss[1]), parseFloat(ss[2])]; - } else { - info[key2] = value2; - } - } - } - const materialCreator = new MaterialCreator(this.resourcePath || path, this.materialOptions); - materialCreator.setCrossOrigin(this.crossOrigin); - materialCreator.setManager(this.manager); - materialCreator.setMaterials(materialsInfo); - return materialCreator; - } -}; -var MaterialCreator = class { - constructor(baseUrl = "", options = {}) { - this.baseUrl = baseUrl; - this.options = options; - this.materialsInfo = {}; - this.materials = {}; - this.materialsArray = []; - this.nameLookup = {}; - this.crossOrigin = "anonymous"; - this.side = this.options.side !== void 0 ? this.options.side : FrontSide; - this.wrap = this.options.wrap !== void 0 ? this.options.wrap : RepeatWrapping; - } - setCrossOrigin(value2) { - this.crossOrigin = value2; - return this; - } - setManager(value2) { - this.manager = value2; - } - setMaterials(materialsInfo) { - this.materialsInfo = this.convert(materialsInfo); - this.materials = {}; - this.materialsArray = []; - this.nameLookup = {}; - } - convert(materialsInfo) { - if (!this.options) return materialsInfo; - const converted = {}; - for (const mn in materialsInfo) { - const mat = materialsInfo[mn]; - const covmat = {}; - converted[mn] = covmat; - for (const prop in mat) { - let save = true; - let value2 = mat[prop]; - const lprop = prop.toLowerCase(); - switch (lprop) { - case "kd": - case "ka": - case "ks": - if (this.options && this.options.normalizeRGB) { - value2 = [value2[0] / 255, value2[1] / 255, value2[2] / 255]; - } - if (this.options && this.options.ignoreZeroRGBs) { - if (value2[0] === 0 && value2[1] === 0 && value2[2] === 0) { - save = false; - } - } - break; - default: - break; - } - if (save) { - covmat[lprop] = value2; - } - } - } - return converted; - } - preload() { - for (const mn in this.materialsInfo) { - this.create(mn); - } - } - getIndex(materialName) { - return this.nameLookup[materialName]; - } - getAsArray() { - let index2 = 0; - for (const mn in this.materialsInfo) { - this.materialsArray[index2] = this.create(mn); - this.nameLookup[mn] = index2; - index2++; - } - return this.materialsArray; - } - create(materialName) { - if (this.materials[materialName] === void 0) { - this.createMaterial_(materialName); - } - return this.materials[materialName]; - } - createMaterial_(materialName) { - const scope = this; - const mat = this.materialsInfo[materialName]; - const params = { - name: materialName, - side: this.side - }; - function resolveURL(baseUrl, url) { - if (typeof url !== "string" || url === "") - return ""; - if (/^https?:\/\//i.test(url)) return url; - return baseUrl + url; - } - function setMapForType(mapType, value2) { - if (params[mapType]) return; - const texParams = scope.getTextureParams(value2, params); - const map2 = scope.loadTexture(resolveURL(scope.baseUrl, texParams.url)); - map2.repeat.copy(texParams.scale); - map2.offset.copy(texParams.offset); - map2.wrapS = scope.wrap; - map2.wrapT = scope.wrap; - if (mapType === "map" || mapType === "emissiveMap") { - map2.colorSpace = SRGBColorSpace; - } - params[mapType] = map2; - } - for (const prop in mat) { - const value2 = mat[prop]; - let n2; - if (value2 === "") continue; - switch (prop.toLowerCase()) { - case "kd": - params.color = new Color().fromArray(value2).convertSRGBToLinear(); - break; - case "ks": - params.specular = new Color().fromArray(value2).convertSRGBToLinear(); - break; - case "ke": - params.emissive = new Color().fromArray(value2).convertSRGBToLinear(); - break; - case "map_kd": - setMapForType("map", value2); - break; - case "map_ks": - setMapForType("specularMap", value2); - break; - case "map_ke": - setMapForType("emissiveMap", value2); - break; - case "norm": - setMapForType("normalMap", value2); - break; - case "map_bump": - case "bump": - setMapForType("bumpMap", value2); - break; - case "map_d": - setMapForType("alphaMap", value2); - params.transparent = true; - break; - case "ns": - params.shininess = parseFloat(value2); - break; - case "d": - n2 = parseFloat(value2); - if (n2 < 1) { - params.opacity = n2; - params.transparent = true; - } - break; - case "tr": - n2 = parseFloat(value2); - if (this.options && this.options.invertTrProperty) n2 = 1 - n2; - if (n2 > 0) { - params.opacity = 1 - n2; - params.transparent = true; - } - break; - default: - break; - } - } - this.materials[materialName] = new MeshPhongMaterial(params); - return this.materials[materialName]; - } - getTextureParams(value2, matParams) { - const texParams = { - scale: new Vector2(1, 1), - offset: new Vector2(0, 0) - }; - const items = value2.split(/\s+/); - let pos; - pos = items.indexOf("-bm"); - if (pos >= 0) { - matParams.bumpScale = parseFloat(items[pos + 1]); - items.splice(pos, 2); - } - pos = items.indexOf("-s"); - if (pos >= 0) { - texParams.scale.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2])); - items.splice(pos, 4); - } - pos = items.indexOf("-o"); - if (pos >= 0) { - texParams.offset.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2])); - items.splice(pos, 4); - } - texParams.url = items.join(" ").trim(); - return texParams; - } - loadTexture(url, mapping, onLoad, onProgress, onError) { - const manager = this.manager !== void 0 ? this.manager : DefaultLoadingManager; - let loader = manager.getHandler(url); - if (loader === null) { - loader = new TextureLoader(manager); - } - if (loader.setCrossOrigin) loader.setCrossOrigin(this.crossOrigin); - const texture = loader.load(url, onLoad, onProgress, onError); - if (mapping !== void 0) texture.mapping = mapping; - return texture; - } -}; - -// node_modules/three/examples/jsm/misc/VolumeSlice.js -var VolumeSlice = class { - constructor(volume, index2, axis) { - const slice2 = this; - this.volume = volume; - index2 = index2 || 0; - Object.defineProperty(this, "index", { - get: function() { - return index2; - }, - set: function(value2) { - index2 = value2; - slice2.geometryNeedsUpdate = true; - return index2; - } - }); - this.axis = axis || "z"; - this.canvas = document.createElement("canvas"); - this.canvasBuffer = document.createElement("canvas"); - this.updateGeometry(); - const canvasMap = new Texture(this.canvas); - canvasMap.minFilter = LinearFilter; - canvasMap.wrapS = canvasMap.wrapT = ClampToEdgeWrapping; - canvasMap.colorSpace = SRGBColorSpace; - const material = new MeshBasicMaterial({ map: canvasMap, side: DoubleSide, transparent: true }); - this.mesh = new Mesh(this.geometry, material); - this.mesh.matrixAutoUpdate = false; - this.geometryNeedsUpdate = true; - this.repaint(); - } - /** - * @member {Function} repaint Refresh the texture and the geometry if geometryNeedsUpdate is set to true - * @memberof VolumeSlice - */ - repaint() { - if (this.geometryNeedsUpdate) { - this.updateGeometry(); - } - const iLength = this.iLength, jLength = this.jLength, sliceAccess = this.sliceAccess, volume = this.volume, canvas = this.canvasBuffer, ctx = this.ctxBuffer; - const imgData = ctx.getImageData(0, 0, iLength, jLength); - const data2 = imgData.data; - const volumeData = volume.data; - const upperThreshold = volume.upperThreshold; - const lowerThreshold = volume.lowerThreshold; - const windowLow = volume.windowLow; - const windowHigh = volume.windowHigh; - let pixelCount = 0; - if (volume.dataType === "label") { - for (let j = 0; j < jLength; j++) { - for (let i = 0; i < iLength; i++) { - let label = volumeData[sliceAccess(i, j)]; - label = label >= this.colorMap.length ? label % this.colorMap.length + 1 : label; - const color = this.colorMap[label]; - data2[4 * pixelCount] = color >> 24 & 255; - data2[4 * pixelCount + 1] = color >> 16 & 255; - data2[4 * pixelCount + 2] = color >> 8 & 255; - data2[4 * pixelCount + 3] = color & 255; - pixelCount++; - } - } - } else { - for (let j = 0; j < jLength; j++) { - for (let i = 0; i < iLength; i++) { - let value2 = volumeData[sliceAccess(i, j)]; - let alpha = 255; - alpha = upperThreshold >= value2 ? lowerThreshold <= value2 ? alpha : 0 : 0; - value2 = Math.floor(255 * (value2 - windowLow) / (windowHigh - windowLow)); - value2 = value2 > 255 ? 255 : value2 < 0 ? 0 : value2 | 0; - data2[4 * pixelCount] = value2; - data2[4 * pixelCount + 1] = value2; - data2[4 * pixelCount + 2] = value2; - data2[4 * pixelCount + 3] = alpha; - pixelCount++; - } - } - } - ctx.putImageData(imgData, 0, 0); - this.ctx.drawImage(canvas, 0, 0, iLength, jLength, 0, 0, this.canvas.width, this.canvas.height); - this.mesh.material.map.needsUpdate = true; - } - /** - * @member {Function} Refresh the geometry according to axis and index - * @see Volume.extractPerpendicularPlane - * @memberof VolumeSlice - */ - updateGeometry() { - const extracted = this.volume.extractPerpendicularPlane(this.axis, this.index); - this.sliceAccess = extracted.sliceAccess; - this.jLength = extracted.jLength; - this.iLength = extracted.iLength; - this.matrix = extracted.matrix; - this.canvas.width = extracted.planeWidth; - this.canvas.height = extracted.planeHeight; - this.canvasBuffer.width = this.iLength; - this.canvasBuffer.height = this.jLength; - this.ctx = this.canvas.getContext("2d"); - this.ctxBuffer = this.canvasBuffer.getContext("2d"); - if (this.geometry) this.geometry.dispose(); - this.geometry = new PlaneGeometry(extracted.planeWidth, extracted.planeHeight); - if (this.mesh) { - this.mesh.geometry = this.geometry; - this.mesh.matrix.identity(); - this.mesh.applyMatrix4(this.matrix); - } - this.geometryNeedsUpdate = false; - } -}; - -// node_modules/three/examples/jsm/misc/Volume.js -var Volume = class { - constructor(xLength, yLength, zLength, type, arrayBuffer) { - if (xLength !== void 0) { - this.xLength = Number(xLength) || 1; - this.yLength = Number(yLength) || 1; - this.zLength = Number(zLength) || 1; - this.axisOrder = ["x", "y", "z"]; - switch (type) { - case "Uint8": - case "uint8": - case "uchar": - case "unsigned char": - case "uint8_t": - this.data = new Uint8Array(arrayBuffer); - break; - case "Int8": - case "int8": - case "signed char": - case "int8_t": - this.data = new Int8Array(arrayBuffer); - break; - case "Int16": - case "int16": - case "short": - case "short int": - case "signed short": - case "signed short int": - case "int16_t": - this.data = new Int16Array(arrayBuffer); - break; - case "Uint16": - case "uint16": - case "ushort": - case "unsigned short": - case "unsigned short int": - case "uint16_t": - this.data = new Uint16Array(arrayBuffer); - break; - case "Int32": - case "int32": - case "int": - case "signed int": - case "int32_t": - this.data = new Int32Array(arrayBuffer); - break; - case "Uint32": - case "uint32": - case "uint": - case "unsigned int": - case "uint32_t": - this.data = new Uint32Array(arrayBuffer); - break; - case "longlong": - case "long long": - case "long long int": - case "signed long long": - case "signed long long int": - case "int64": - case "int64_t": - case "ulonglong": - case "unsigned long long": - case "unsigned long long int": - case "uint64": - case "uint64_t": - throw new Error("Error in Volume constructor : this type is not supported in JavaScript"); - break; - case "Float32": - case "float32": - case "float": - this.data = new Float32Array(arrayBuffer); - break; - case "Float64": - case "float64": - case "double": - this.data = new Float64Array(arrayBuffer); - break; - default: - this.data = new Uint8Array(arrayBuffer); - } - if (this.data.length !== this.xLength * this.yLength * this.zLength) { - throw new Error("Error in Volume constructor, lengths are not matching arrayBuffer size"); - } - } - this.spacing = [1, 1, 1]; - this.offset = [0, 0, 0]; - this.matrix = new Matrix3(); - this.matrix.identity(); - let lowerThreshold = -Infinity; - Object.defineProperty(this, "lowerThreshold", { - get: function() { - return lowerThreshold; - }, - set: function(value2) { - lowerThreshold = value2; - this.sliceList.forEach(function(slice2) { - slice2.geometryNeedsUpdate = true; - }); - } - }); - let upperThreshold = Infinity; - Object.defineProperty(this, "upperThreshold", { - get: function() { - return upperThreshold; - }, - set: function(value2) { - upperThreshold = value2; - this.sliceList.forEach(function(slice2) { - slice2.geometryNeedsUpdate = true; - }); - } - }); - this.sliceList = []; - this.segmentation = false; - } - /** - * @member {Function} getData Shortcut for data[access(i,j,k)] - * @memberof Volume - * @param {number} i First coordinate - * @param {number} j Second coordinate - * @param {number} k Third coordinate - * @returns {number} value in the data array - */ - getData(i, j, k2) { - return this.data[k2 * this.xLength * this.yLength + j * this.xLength + i]; - } - /** - * @member {Function} access compute the index in the data array corresponding to the given coordinates in IJK system - * @memberof Volume - * @param {number} i First coordinate - * @param {number} j Second coordinate - * @param {number} k Third coordinate - * @returns {number} index - */ - access(i, j, k2) { - return k2 * this.xLength * this.yLength + j * this.xLength + i; - } - /** - * @member {Function} reverseAccess Retrieve the IJK coordinates of the voxel corresponding of the given index in the data - * @memberof Volume - * @param {number} index index of the voxel - * @returns {Array} [x,y,z] - */ - reverseAccess(index2) { - const z = Math.floor(index2 / (this.yLength * this.xLength)); - const y2 = Math.floor((index2 - z * this.yLength * this.xLength) / this.xLength); - const x2 = index2 - z * this.yLength * this.xLength - y2 * this.xLength; - return [x2, y2, z]; - } - /** - * @member {Function} map Apply a function to all the voxels, be careful, the value will be replaced - * @memberof Volume - * @param {Function} functionToMap A function to apply to every voxel, will be called with the following parameters : - * value of the voxel - * index of the voxel - * the data (TypedArray) - * @param {Object} context You can specify a context in which call the function, default if this Volume - * @returns {Volume} this - */ - map(functionToMap, context) { - const length2 = this.data.length; - context = context || this; - for (let i = 0; i < length2; i++) { - this.data[i] = functionToMap.call(context, this.data[i], i, this.data); - } - return this; - } - /** - * @member {Function} extractPerpendicularPlane Compute the orientation of the slice and returns all the information relative to the geometry such as sliceAccess, the plane matrix (orientation and position in RAS coordinate) and the dimensions of the plane in both coordinate system. - * @memberof Volume - * @param {string} axis the normal axis to the slice 'x' 'y' or 'z' - * @param {number} index the index of the slice - * @returns {Object} an object containing all the usefull information on the geometry of the slice - */ - extractPerpendicularPlane(axis, RASIndex) { - let firstSpacing, secondSpacing, positionOffset, IJKIndex; - const axisInIJK = new Vector3(), firstDirection = new Vector3(), secondDirection = new Vector3(), planeMatrix = new Matrix4().identity(), volume = this; - const dimensions = new Vector3(this.xLength, this.yLength, this.zLength); - switch (axis) { - case "x": - axisInIJK.set(1, 0, 0); - firstDirection.set(0, 0, -1); - secondDirection.set(0, -1, 0); - firstSpacing = this.spacing[this.axisOrder.indexOf("z")]; - secondSpacing = this.spacing[this.axisOrder.indexOf("y")]; - IJKIndex = new Vector3(RASIndex, 0, 0); - planeMatrix.multiply(new Matrix4().makeRotationY(Math.PI / 2)); - positionOffset = (volume.RASDimensions[0] - 1) / 2; - planeMatrix.setPosition(new Vector3(RASIndex - positionOffset, 0, 0)); - break; - case "y": - axisInIJK.set(0, 1, 0); - firstDirection.set(1, 0, 0); - secondDirection.set(0, 0, 1); - firstSpacing = this.spacing[this.axisOrder.indexOf("x")]; - secondSpacing = this.spacing[this.axisOrder.indexOf("z")]; - IJKIndex = new Vector3(0, RASIndex, 0); - planeMatrix.multiply(new Matrix4().makeRotationX(-Math.PI / 2)); - positionOffset = (volume.RASDimensions[1] - 1) / 2; - planeMatrix.setPosition(new Vector3(0, RASIndex - positionOffset, 0)); - break; - case "z": - default: - axisInIJK.set(0, 0, 1); - firstDirection.set(1, 0, 0); - secondDirection.set(0, -1, 0); - firstSpacing = this.spacing[this.axisOrder.indexOf("x")]; - secondSpacing = this.spacing[this.axisOrder.indexOf("y")]; - IJKIndex = new Vector3(0, 0, RASIndex); - positionOffset = (volume.RASDimensions[2] - 1) / 2; - planeMatrix.setPosition(new Vector3(0, 0, RASIndex - positionOffset)); - break; - } - if (!this.segmentation) { - firstDirection.applyMatrix4(volume.inverseMatrix).normalize(); - secondDirection.applyMatrix4(volume.inverseMatrix).normalize(); - axisInIJK.applyMatrix4(volume.inverseMatrix).normalize(); - } - firstDirection.arglet = "i"; - secondDirection.arglet = "j"; - const iLength = Math.floor(Math.abs(firstDirection.dot(dimensions))); - const jLength = Math.floor(Math.abs(secondDirection.dot(dimensions))); - const planeWidth = Math.abs(iLength * firstSpacing); - const planeHeight = Math.abs(jLength * secondSpacing); - IJKIndex = Math.abs(Math.round(IJKIndex.applyMatrix4(volume.inverseMatrix).dot(axisInIJK))); - const base = [new Vector3(1, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 0, 1)]; - const iDirection = [firstDirection, secondDirection, axisInIJK].find(function(x2) { - return Math.abs(x2.dot(base[0])) > 0.9; - }); - const jDirection = [firstDirection, secondDirection, axisInIJK].find(function(x2) { - return Math.abs(x2.dot(base[1])) > 0.9; - }); - const kDirection = [firstDirection, secondDirection, axisInIJK].find(function(x2) { - return Math.abs(x2.dot(base[2])) > 0.9; - }); - function sliceAccess(i, j) { - const si = iDirection === axisInIJK ? IJKIndex : iDirection.arglet === "i" ? i : j; - const sj = jDirection === axisInIJK ? IJKIndex : jDirection.arglet === "i" ? i : j; - const sk = kDirection === axisInIJK ? IJKIndex : kDirection.arglet === "i" ? i : j; - const accessI = iDirection.dot(base[0]) > 0 ? si : volume.xLength - 1 - si; - const accessJ = jDirection.dot(base[1]) > 0 ? sj : volume.yLength - 1 - sj; - const accessK = kDirection.dot(base[2]) > 0 ? sk : volume.zLength - 1 - sk; - return volume.access(accessI, accessJ, accessK); - } - return { - iLength, - jLength, - sliceAccess, - matrix: planeMatrix, - planeWidth, - planeHeight - }; - } - /** - * @member {Function} extractSlice Returns a slice corresponding to the given axis and index - * The coordinate are given in the Right Anterior Superior coordinate format - * @memberof Volume - * @param {string} axis the normal axis to the slice 'x' 'y' or 'z' - * @param {number} index the index of the slice - * @returns {VolumeSlice} the extracted slice - */ - extractSlice(axis, index2) { - const slice2 = new VolumeSlice(this, index2, axis); - this.sliceList.push(slice2); - return slice2; - } - /** - * @member {Function} repaintAllSlices Call repaint on all the slices extracted from this volume - * @see VolumeSlice.repaint - * @memberof Volume - * @returns {Volume} this - */ - repaintAllSlices() { - this.sliceList.forEach(function(slice2) { - slice2.repaint(); - }); - return this; - } - /** - * @member {Function} computeMinMax Compute the minimum and the maximum of the data in the volume - * @memberof Volume - * @returns {Array} [min,max] - */ - computeMinMax() { - let min = Infinity; - let max2 = -Infinity; - const datasize = this.data.length; - let i = 0; - for (i = 0; i < datasize; i++) { - if (!isNaN(this.data[i])) { - const value2 = this.data[i]; - min = Math.min(min, value2); - max2 = Math.max(max2, value2); - } - } - this.min = min; - this.max = max2; - return [min, max2]; - } -}; - -// node_modules/three/examples/jsm/loaders/NRRDLoader.js -var NRRDLoader = class extends Loader { - constructor(manager) { - super(manager); - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(scope.manager); - loader.setPath(scope.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(scope.requestHeader); - loader.setWithCredentials(scope.withCredentials); - loader.load(url, function(data2) { - try { - onLoad(scope.parse(data2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - /** - * - * @param {boolean} segmentation is a option for user to choose - */ - setSegmentation(segmentation) { - this.segmentation = segmentation; - } - parse(data2) { - let _data = data2; - let _dataPointer = 0; - const _nativeLittleEndian = new Int8Array(new Int16Array([1]).buffer)[0] > 0; - const _littleEndian = true; - const headerObject = {}; - function scan(type, chunks) { - let _chunkSize = 1; - let _array_type = Uint8Array; - switch (type) { - case "uchar": - break; - case "schar": - _array_type = Int8Array; - break; - case "ushort": - _array_type = Uint16Array; - _chunkSize = 2; - break; - case "sshort": - _array_type = Int16Array; - _chunkSize = 2; - break; - case "uint": - _array_type = Uint32Array; - _chunkSize = 4; - break; - case "sint": - _array_type = Int32Array; - _chunkSize = 4; - break; - case "float": - _array_type = Float32Array; - _chunkSize = 4; - break; - case "complex": - _array_type = Float64Array; - _chunkSize = 8; - break; - case "double": - _array_type = Float64Array; - _chunkSize = 8; - break; - } - let _bytes2 = new _array_type(_data.slice( - _dataPointer, - _dataPointer += chunks * _chunkSize - )); - if (_nativeLittleEndian != _littleEndian) { - _bytes2 = flipEndianness(_bytes2, _chunkSize); - } - return _bytes2; - } - function flipEndianness(array, chunkSize) { - const u82 = new Uint8Array(array.buffer, array.byteOffset, array.byteLength); - for (let i2 = 0; i2 < array.byteLength; i2 += chunkSize) { - for (let j = i2 + chunkSize - 1, k2 = i2; j > k2; j--, k2++) { - const tmp = u82[k2]; - u82[k2] = u82[j]; - u82[j] = tmp; - } - } - return array; - } - function parseHeader(header) { - let data3, field, fn, i2, l2, m, _i, _len; - const lines = header.split(/\r?\n/); - for (_i = 0, _len = lines.length; _i < _len; _i++) { - l2 = lines[_i]; - if (l2.match(/NRRD\d+/)) { - headerObject.isNrrd = true; - } else if (!l2.match(/^#/) && (m = l2.match(/(.*):(.*)/))) { - field = m[1].trim(); - data3 = m[2].trim(); - fn = _fieldFunctions[field]; - if (fn) { - fn.call(headerObject, data3); - } else { - headerObject[field] = data3; - } - } - } - if (!headerObject.isNrrd) { - throw new Error("Not an NRRD file"); - } - if (headerObject.encoding === "bz2" || headerObject.encoding === "bzip2") { - throw new Error("Bzip is not supported"); - } - if (!headerObject.vectors) { - headerObject.vectors = []; - headerObject.vectors.push([1, 0, 0]); - headerObject.vectors.push([0, 1, 0]); - headerObject.vectors.push([0, 0, 1]); - if (headerObject.spacings) { - for (i2 = 0; i2 <= 2; i2++) { - if (!isNaN(headerObject.spacings[i2])) { - for (let j = 0; j <= 2; j++) { - headerObject.vectors[i2][j] *= headerObject.spacings[i2]; - } - } - } - } - } - } - function parseDataAsText(data3, start, end) { - let number = ""; - start = start || 0; - end = end || data3.length; - let value2; - const lengthOfTheResult = headerObject.sizes.reduce(function(previous, current) { - return previous * current; - }, 1); - let base = 10; - if (headerObject.encoding === "hex") { - base = 16; - } - const result = new headerObject.__array(lengthOfTheResult); - let resultIndex = 0; - let parsingFunction = parseInt; - if (headerObject.__array === Float32Array || headerObject.__array === Float64Array) { - parsingFunction = parseFloat; - } - for (let i2 = start; i2 < end; i2++) { - value2 = data3[i2]; - if ((value2 < 9 || value2 > 13) && value2 !== 32) { - number += String.fromCharCode(value2); - } else { - if (number !== "") { - result[resultIndex] = parsingFunction(number, base); - resultIndex++; - } - number = ""; - } - } - if (number !== "") { - result[resultIndex] = parsingFunction(number, base); - resultIndex++; - } - return result; - } - const _bytes = scan("uchar", data2.byteLength); - const _length = _bytes.length; - let _header = null; - let _data_start = 0; - let i; - for (i = 1; i < _length; i++) { - if (_bytes[i - 1] == 10 && _bytes[i] == 10) { - _header = this.parseChars(_bytes, 0, i - 2); - _data_start = i + 1; - break; - } - } - parseHeader(_header); - _data = _bytes.subarray(_data_start); - if (headerObject.encoding.substring(0, 2) === "gz") { - _data = gunzipSync(new Uint8Array(_data)); - } else if (headerObject.encoding === "ascii" || headerObject.encoding === "text" || headerObject.encoding === "txt" || headerObject.encoding === "hex") { - _data = parseDataAsText(_data); - } else if (headerObject.encoding === "raw") { - const _copy = new Uint8Array(_data.length); - for (let i2 = 0; i2 < _data.length; i2++) { - _copy[i2] = _data[i2]; - } - _data = _copy; - } - _data = _data.buffer; - const volume = new Volume(); - volume.header = headerObject; - volume.segmentation = this.segmentation; - volume.data = new headerObject.__array(_data); - const min_max = volume.computeMinMax(); - const min = min_max[0]; - const max2 = min_max[1]; - volume.windowLow = min; - volume.windowHigh = max2; - volume.dimensions = [headerObject.sizes[0], headerObject.sizes[1], headerObject.sizes[2]]; - volume.xLength = volume.dimensions[0]; - volume.yLength = volume.dimensions[1]; - volume.zLength = volume.dimensions[2]; - if (headerObject.vectors) { - const xIndex = headerObject.vectors.findIndex((vector) => vector[0] !== 0); - const yIndex = headerObject.vectors.findIndex((vector) => vector[1] !== 0); - const zIndex = headerObject.vectors.findIndex((vector) => vector[2] !== 0); - const axisOrder = []; - if (xIndex !== yIndex && xIndex !== zIndex && yIndex !== zIndex) { - axisOrder[xIndex] = "x"; - axisOrder[yIndex] = "y"; - axisOrder[zIndex] = "z"; - } else { - axisOrder[0] = "x"; - axisOrder[1] = "y"; - axisOrder[2] = "z"; - } - volume.axisOrder = axisOrder; - } else { - volume.axisOrder = ["x", "y", "z"]; - } - const spacingX = new Vector3().fromArray(headerObject.vectors[0]).length(); - const spacingY = new Vector3().fromArray(headerObject.vectors[1]).length(); - const spacingZ = new Vector3().fromArray(headerObject.vectors[2]).length(); - volume.spacing = [spacingX, spacingY, spacingZ]; - volume.matrix = new Matrix4(); - const transitionMatrix = new Matrix4(); - if (headerObject.space === "left-posterior-superior") { - transitionMatrix.set( - -1, - 0, - 0, - 0, - 0, - -1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ); - } else if (headerObject.space === "left-anterior-superior") { - transitionMatrix.set( - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - -1, - 0, - 0, - 0, - 0, - 1 - ); - } - if (!headerObject.vectors) { - volume.matrix.set( - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ); - } else { - const v = headerObject.vectors; - const ijk_to_transition = new Matrix4().set( - v[0][0], - v[1][0], - v[2][0], - 0, - v[0][1], - v[1][1], - v[2][1], - 0, - v[0][2], - v[1][2], - v[2][2], - 0, - 0, - 0, - 0, - 1 - ); - const transition_to_ras = new Matrix4().multiplyMatrices(ijk_to_transition, transitionMatrix); - volume.matrix = transition_to_ras; - } - volume.inverseMatrix = new Matrix4(); - volume.inverseMatrix.copy(volume.matrix).invert(); - volume.RASDimensions = [ - Math.floor(volume.xLength * spacingX), - Math.floor(volume.yLength * spacingY), - Math.floor(volume.zLength * spacingZ) - ]; - if (volume.lowerThreshold === -Infinity) { - volume.lowerThreshold = min; - } - if (volume.upperThreshold === Infinity) { - volume.upperThreshold = max2; - } - return volume; - } - parseChars(array, start, end) { - if (start === void 0) { - start = 0; - } - if (end === void 0) { - end = array.length; - } - let output = ""; - let i = 0; - for (i = start; i < end; ++i) { - output += String.fromCharCode(array[i]); - } - return output; - } -}; -var _fieldFunctions = { - type: function(data2) { - switch (data2) { - case "uchar": - case "unsigned char": - case "uint8": - case "uint8_t": - this.__array = Uint8Array; - break; - case "signed char": - case "int8": - case "int8_t": - this.__array = Int8Array; - break; - case "short": - case "short int": - case "signed short": - case "signed short int": - case "int16": - case "int16_t": - this.__array = Int16Array; - break; - case "ushort": - case "unsigned short": - case "unsigned short int": - case "uint16": - case "uint16_t": - this.__array = Uint16Array; - break; - case "int": - case "signed int": - case "int32": - case "int32_t": - this.__array = Int32Array; - break; - case "uint": - case "unsigned int": - case "uint32": - case "uint32_t": - this.__array = Uint32Array; - break; - case "float": - this.__array = Float32Array; - break; - case "double": - this.__array = Float64Array; - break; - default: - throw new Error("Unsupported NRRD data type: " + data2); - } - return this.type = data2; - }, - endian: function(data2) { - return this.endian = data2; - }, - encoding: function(data2) { - return this.encoding = data2; - }, - dimension: function(data2) { - return this.dim = parseInt(data2, 10); - }, - sizes: function(data2) { - let i; - return this.sizes = function() { - const _ref = data2.split(/\s+/); - const _results = []; - for (let _i = 0, _len = _ref.length; _i < _len; _i++) { - i = _ref[_i]; - _results.push(parseInt(i, 10)); - } - return _results; - }(); - }, - space: function(data2) { - return this.space = data2; - }, - "space origin": function(data2) { - return this.space_origin = data2.split("(")[1].split(")")[0].split(","); - }, - "space directions": function(data2) { - let f, v; - const parts = data2.match(/\(.*?\)/g); - return this.vectors = function() { - const _results = []; - for (let _i = 0, _len = parts.length; _i < _len; _i++) { - v = parts[_i]; - _results.push(function() { - const _ref = v.slice(1, -1).split(/,/); - const _results2 = []; - for (let _j = 0, _len2 = _ref.length; _j < _len2; _j++) { - f = _ref[_j]; - _results2.push(parseFloat(f)); - } - return _results2; - }()); - } - return _results; - }(); - }, - spacings: function(data2) { - let f; - const parts = data2.split(/\s+/); - return this.spacings = function() { - const _results = []; - for (let _i = 0, _len = parts.length; _i < _len; _i++) { - f = parts[_i]; - _results.push(parseFloat(f)); - } - return _results; - }(); - } -}; - -// node_modules/three/examples/jsm/loaders/OBJLoader.js -var _object_pattern = /^[og]\s*(.+)?/; -var _material_library_pattern = /^mtllib /; -var _material_use_pattern = /^usemtl /; -var _map_use_pattern = /^usemap /; -var _face_vertex_data_separator_pattern = /\s+/; -var _vA = new Vector3(); -var _vB = new Vector3(); -var _vC = new Vector3(); -var _ab = new Vector3(); -var _cb = new Vector3(); -var _color = new Color(); -function ParserState() { - const state = { - objects: [], - object: {}, - vertices: [], - normals: [], - colors: [], - uvs: [], - materials: {}, - materialLibraries: [], - startObject: function(name2, fromDeclaration) { - if (this.object && this.object.fromDeclaration === false) { - this.object.name = name2; - this.object.fromDeclaration = fromDeclaration !== false; - return; - } - const previousMaterial = this.object && typeof this.object.currentMaterial === "function" ? this.object.currentMaterial() : void 0; - if (this.object && typeof this.object._finalize === "function") { - this.object._finalize(true); - } - this.object = { - name: name2 || "", - fromDeclaration: fromDeclaration !== false, - geometry: { - vertices: [], - normals: [], - colors: [], - uvs: [], - hasUVIndices: false - }, - materials: [], - smooth: true, - startMaterial: function(name3, libraries) { - const previous = this._finalize(false); - if (previous && (previous.inherited || previous.groupCount <= 0)) { - this.materials.splice(previous.index, 1); - } - const material = { - index: this.materials.length, - name: name3 || "", - mtllib: Array.isArray(libraries) && libraries.length > 0 ? libraries[libraries.length - 1] : "", - smooth: previous !== void 0 ? previous.smooth : this.smooth, - groupStart: previous !== void 0 ? previous.groupEnd : 0, - groupEnd: -1, - groupCount: -1, - inherited: false, - clone: function(index2) { - const cloned = { - index: typeof index2 === "number" ? index2 : this.index, - name: this.name, - mtllib: this.mtllib, - smooth: this.smooth, - groupStart: 0, - groupEnd: -1, - groupCount: -1, - inherited: false - }; - cloned.clone = this.clone.bind(cloned); - return cloned; - } - }; - this.materials.push(material); - return material; - }, - currentMaterial: function() { - if (this.materials.length > 0) { - return this.materials[this.materials.length - 1]; - } - return void 0; - }, - _finalize: function(end) { - const lastMultiMaterial = this.currentMaterial(); - if (lastMultiMaterial && lastMultiMaterial.groupEnd === -1) { - lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3; - lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart; - lastMultiMaterial.inherited = false; - } - if (end && this.materials.length > 1) { - for (let mi2 = this.materials.length - 1; mi2 >= 0; mi2--) { - if (this.materials[mi2].groupCount <= 0) { - this.materials.splice(mi2, 1); - } - } - } - if (end && this.materials.length === 0) { - this.materials.push({ - name: "", - smooth: this.smooth - }); - } - return lastMultiMaterial; - } - }; - if (previousMaterial && previousMaterial.name && typeof previousMaterial.clone === "function") { - const declared = previousMaterial.clone(0); - declared.inherited = true; - this.object.materials.push(declared); - } - this.objects.push(this.object); - }, - finalize: function() { - if (this.object && typeof this.object._finalize === "function") { - this.object._finalize(true); - } - }, - parseVertexIndex: function(value2, len) { - const index2 = parseInt(value2, 10); - return (index2 >= 0 ? index2 - 1 : index2 + len / 3) * 3; - }, - parseNormalIndex: function(value2, len) { - const index2 = parseInt(value2, 10); - return (index2 >= 0 ? index2 - 1 : index2 + len / 3) * 3; - }, - parseUVIndex: function(value2, len) { - const index2 = parseInt(value2, 10); - return (index2 >= 0 ? index2 - 1 : index2 + len / 2) * 2; - }, - addVertex: function(a2, b3, c2) { - const src = this.vertices; - const dst = this.object.geometry.vertices; - dst.push(src[a2 + 0], src[a2 + 1], src[a2 + 2]); - dst.push(src[b3 + 0], src[b3 + 1], src[b3 + 2]); - dst.push(src[c2 + 0], src[c2 + 1], src[c2 + 2]); - }, - addVertexPoint: function(a2) { - const src = this.vertices; - const dst = this.object.geometry.vertices; - dst.push(src[a2 + 0], src[a2 + 1], src[a2 + 2]); - }, - addVertexLine: function(a2) { - const src = this.vertices; - const dst = this.object.geometry.vertices; - dst.push(src[a2 + 0], src[a2 + 1], src[a2 + 2]); - }, - addNormal: function(a2, b3, c2) { - const src = this.normals; - const dst = this.object.geometry.normals; - dst.push(src[a2 + 0], src[a2 + 1], src[a2 + 2]); - dst.push(src[b3 + 0], src[b3 + 1], src[b3 + 2]); - dst.push(src[c2 + 0], src[c2 + 1], src[c2 + 2]); - }, - addFaceNormal: function(a2, b3, c2) { - const src = this.vertices; - const dst = this.object.geometry.normals; - _vA.fromArray(src, a2); - _vB.fromArray(src, b3); - _vC.fromArray(src, c2); - _cb.subVectors(_vC, _vB); - _ab.subVectors(_vA, _vB); - _cb.cross(_ab); - _cb.normalize(); - dst.push(_cb.x, _cb.y, _cb.z); - dst.push(_cb.x, _cb.y, _cb.z); - dst.push(_cb.x, _cb.y, _cb.z); - }, - addColor: function(a2, b3, c2) { - const src = this.colors; - const dst = this.object.geometry.colors; - if (src[a2] !== void 0) dst.push(src[a2 + 0], src[a2 + 1], src[a2 + 2]); - if (src[b3] !== void 0) dst.push(src[b3 + 0], src[b3 + 1], src[b3 + 2]); - if (src[c2] !== void 0) dst.push(src[c2 + 0], src[c2 + 1], src[c2 + 2]); - }, - addUV: function(a2, b3, c2) { - const src = this.uvs; - const dst = this.object.geometry.uvs; - dst.push(src[a2 + 0], src[a2 + 1]); - dst.push(src[b3 + 0], src[b3 + 1]); - dst.push(src[c2 + 0], src[c2 + 1]); - }, - addDefaultUV: function() { - const dst = this.object.geometry.uvs; - dst.push(0, 0); - dst.push(0, 0); - dst.push(0, 0); - }, - addUVLine: function(a2) { - const src = this.uvs; - const dst = this.object.geometry.uvs; - dst.push(src[a2 + 0], src[a2 + 1]); - }, - addFace: function(a2, b3, c2, ua, ub, uc, na, nb, nc) { - const vLen = this.vertices.length; - let ia2 = this.parseVertexIndex(a2, vLen); - let ib = this.parseVertexIndex(b3, vLen); - let ic = this.parseVertexIndex(c2, vLen); - this.addVertex(ia2, ib, ic); - this.addColor(ia2, ib, ic); - if (na !== void 0 && na !== "") { - const nLen = this.normals.length; - ia2 = this.parseNormalIndex(na, nLen); - ib = this.parseNormalIndex(nb, nLen); - ic = this.parseNormalIndex(nc, nLen); - this.addNormal(ia2, ib, ic); - } else { - this.addFaceNormal(ia2, ib, ic); - } - if (ua !== void 0 && ua !== "") { - const uvLen = this.uvs.length; - ia2 = this.parseUVIndex(ua, uvLen); - ib = this.parseUVIndex(ub, uvLen); - ic = this.parseUVIndex(uc, uvLen); - this.addUV(ia2, ib, ic); - this.object.geometry.hasUVIndices = true; - } else { - this.addDefaultUV(); - } - }, - addPointGeometry: function(vertices) { - this.object.geometry.type = "Points"; - const vLen = this.vertices.length; - for (let vi = 0, l2 = vertices.length; vi < l2; vi++) { - const index2 = this.parseVertexIndex(vertices[vi], vLen); - this.addVertexPoint(index2); - this.addColor(index2); - } - }, - addLineGeometry: function(vertices, uvs) { - this.object.geometry.type = "Line"; - const vLen = this.vertices.length; - const uvLen = this.uvs.length; - for (let vi = 0, l2 = vertices.length; vi < l2; vi++) { - this.addVertexLine(this.parseVertexIndex(vertices[vi], vLen)); - } - for (let uvi = 0, l2 = uvs.length; uvi < l2; uvi++) { - this.addUVLine(this.parseUVIndex(uvs[uvi], uvLen)); - } - } - }; - state.startObject("", false); - return state; -} -var OBJLoader = class extends Loader { - constructor(manager) { - super(manager); - this.materials = null; - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setRequestHeader(this.requestHeader); - loader.setWithCredentials(this.withCredentials); - loader.load(url, function(text2) { - try { - onLoad(scope.parse(text2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - setMaterials(materials) { - this.materials = materials; - return this; - } - parse(text2) { - const state = new ParserState(); - if (text2.indexOf("\r\n") !== -1) { - text2 = text2.replace(/\r\n/g, "\n"); - } - if (text2.indexOf("\\\n") !== -1) { - text2 = text2.replace(/\\\n/g, ""); - } - const lines = text2.split("\n"); - let result = []; - for (let i = 0, l2 = lines.length; i < l2; i++) { - const line2 = lines[i].trimStart(); - if (line2.length === 0) continue; - const lineFirstChar = line2.charAt(0); - if (lineFirstChar === "#") continue; - if (lineFirstChar === "v") { - const data2 = line2.split(_face_vertex_data_separator_pattern); - switch (data2[0]) { - case "v": - state.vertices.push( - parseFloat(data2[1]), - parseFloat(data2[2]), - parseFloat(data2[3]) - ); - if (data2.length >= 7) { - _color.setRGB( - parseFloat(data2[4]), - parseFloat(data2[5]), - parseFloat(data2[6]) - ).convertSRGBToLinear(); - state.colors.push(_color.r, _color.g, _color.b); - } else { - state.colors.push(void 0, void 0, void 0); - } - break; - case "vn": - state.normals.push( - parseFloat(data2[1]), - parseFloat(data2[2]), - parseFloat(data2[3]) - ); - break; - case "vt": - state.uvs.push( - parseFloat(data2[1]), - parseFloat(data2[2]) - ); - break; - } - } else if (lineFirstChar === "f") { - const lineData = line2.slice(1).trim(); - const vertexData = lineData.split(_face_vertex_data_separator_pattern); - const faceVertices = []; - for (let j = 0, jl = vertexData.length; j < jl; j++) { - const vertex = vertexData[j]; - if (vertex.length > 0) { - const vertexParts = vertex.split("/"); - faceVertices.push(vertexParts); - } - } - const v12 = faceVertices[0]; - for (let j = 1, jl = faceVertices.length - 1; j < jl; j++) { - const v2 = faceVertices[j]; - const v3 = faceVertices[j + 1]; - state.addFace( - v12[0], - v2[0], - v3[0], - v12[1], - v2[1], - v3[1], - v12[2], - v2[2], - v3[2] - ); - } - } else if (lineFirstChar === "l") { - const lineParts = line2.substring(1).trim().split(" "); - let lineVertices = []; - const lineUVs = []; - if (line2.indexOf("/") === -1) { - lineVertices = lineParts; - } else { - for (let li = 0, llen = lineParts.length; li < llen; li++) { - const parts = lineParts[li].split("/"); - if (parts[0] !== "") lineVertices.push(parts[0]); - if (parts[1] !== "") lineUVs.push(parts[1]); - } - } - state.addLineGeometry(lineVertices, lineUVs); - } else if (lineFirstChar === "p") { - const lineData = line2.slice(1).trim(); - const pointData = lineData.split(" "); - state.addPointGeometry(pointData); - } else if ((result = _object_pattern.exec(line2)) !== null) { - const name2 = (" " + result[0].slice(1).trim()).slice(1); - state.startObject(name2); - } else if (_material_use_pattern.test(line2)) { - state.object.startMaterial(line2.substring(7).trim(), state.materialLibraries); - } else if (_material_library_pattern.test(line2)) { - state.materialLibraries.push(line2.substring(7).trim()); - } else if (_map_use_pattern.test(line2)) { - console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.'); - } else if (lineFirstChar === "s") { - result = line2.split(" "); - if (result.length > 1) { - const value2 = result[1].trim().toLowerCase(); - state.object.smooth = value2 !== "0" && value2 !== "off"; - } else { - state.object.smooth = true; - } - const material = state.object.currentMaterial(); - if (material) material.smooth = state.object.smooth; - } else { - if (line2 === "\0") continue; - console.warn('THREE.OBJLoader: Unexpected line: "' + line2 + '"'); - } - } - state.finalize(); - const container = new Group(); - container.materialLibraries = [].concat(state.materialLibraries); - const hasPrimitives = !(state.objects.length === 1 && state.objects[0].geometry.vertices.length === 0); - if (hasPrimitives === true) { - for (let i = 0, l2 = state.objects.length; i < l2; i++) { - const object = state.objects[i]; - const geometry = object.geometry; - const materials = object.materials; - const isLine = geometry.type === "Line"; - const isPoints = geometry.type === "Points"; - let hasVertexColors = false; - if (geometry.vertices.length === 0) continue; - const buffergeometry = new BufferGeometry(); - buffergeometry.setAttribute("position", new Float32BufferAttribute(geometry.vertices, 3)); - if (geometry.normals.length > 0) { - buffergeometry.setAttribute("normal", new Float32BufferAttribute(geometry.normals, 3)); - } - if (geometry.colors.length > 0) { - hasVertexColors = true; - buffergeometry.setAttribute("color", new Float32BufferAttribute(geometry.colors, 3)); - } - if (geometry.hasUVIndices === true) { - buffergeometry.setAttribute("uv", new Float32BufferAttribute(geometry.uvs, 2)); - } - const createdMaterials = []; - for (let mi2 = 0, miLen = materials.length; mi2 < miLen; mi2++) { - const sourceMaterial = materials[mi2]; - const materialHash = sourceMaterial.name + "_" + sourceMaterial.smooth + "_" + hasVertexColors; - let material = state.materials[materialHash]; - if (this.materials !== null) { - material = this.materials.create(sourceMaterial.name); - if (isLine && material && !(material instanceof LineBasicMaterial)) { - const materialLine = new LineBasicMaterial(); - Material.prototype.copy.call(materialLine, material); - materialLine.color.copy(material.color); - material = materialLine; - } else if (isPoints && material && !(material instanceof PointsMaterial)) { - const materialPoints = new PointsMaterial({ size: 10, sizeAttenuation: false }); - Material.prototype.copy.call(materialPoints, material); - materialPoints.color.copy(material.color); - materialPoints.map = material.map; - material = materialPoints; - } - } - if (material === void 0) { - if (isLine) { - material = new LineBasicMaterial(); - } else if (isPoints) { - material = new PointsMaterial({ size: 1, sizeAttenuation: false }); - } else { - material = new MeshPhongMaterial(); - } - material.name = sourceMaterial.name; - material.flatShading = sourceMaterial.smooth ? false : true; - material.vertexColors = hasVertexColors; - state.materials[materialHash] = material; - } - createdMaterials.push(material); - } - let mesh; - if (createdMaterials.length > 1) { - for (let mi2 = 0, miLen = materials.length; mi2 < miLen; mi2++) { - const sourceMaterial = materials[mi2]; - buffergeometry.addGroup(sourceMaterial.groupStart, sourceMaterial.groupCount, mi2); - } - if (isLine) { - mesh = new LineSegments(buffergeometry, createdMaterials); - } else if (isPoints) { - mesh = new Points(buffergeometry, createdMaterials); - } else { - mesh = new Mesh(buffergeometry, createdMaterials); - } - } else { - if (isLine) { - mesh = new LineSegments(buffergeometry, createdMaterials[0]); - } else if (isPoints) { - mesh = new Points(buffergeometry, createdMaterials[0]); - } else { - mesh = new Mesh(buffergeometry, createdMaterials[0]); - } - } - mesh.name = object.name; - container.add(mesh); - } - } else { - if (state.vertices.length > 0) { - const material = new PointsMaterial({ size: 1, sizeAttenuation: false }); - const buffergeometry = new BufferGeometry(); - buffergeometry.setAttribute("position", new Float32BufferAttribute(state.vertices, 3)); - if (state.colors.length > 0 && state.colors[0] !== void 0) { - buffergeometry.setAttribute("color", new Float32BufferAttribute(state.colors, 3)); - material.vertexColors = true; - } - const points = new Points(buffergeometry, material); - container.add(points); - } - } - return container; - } -}; - -// node_modules/three/examples/jsm/loaders/PCDLoader.js -var PCDLoader = class extends Loader { - constructor(manager) { - super(manager); - this.littleEndian = true; - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(scope.manager); - loader.setPath(scope.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(scope.requestHeader); - loader.setWithCredentials(scope.withCredentials); - loader.load(url, function(data2) { - try { - onLoad(scope.parse(data2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(data2) { - function decompressLZF(inData, outLength) { - const inLength = inData.length; - const outData = new Uint8Array(outLength); - let inPtr = 0; - let outPtr = 0; - let ctrl; - let len; - let ref; - do { - ctrl = inData[inPtr++]; - if (ctrl < 1 << 5) { - ctrl++; - if (outPtr + ctrl > outLength) throw new Error("Output buffer is not large enough"); - if (inPtr + ctrl > inLength) throw new Error("Invalid compressed data"); - do { - outData[outPtr++] = inData[inPtr++]; - } while (--ctrl); - } else { - len = ctrl >> 5; - ref = outPtr - ((ctrl & 31) << 8) - 1; - if (inPtr >= inLength) throw new Error("Invalid compressed data"); - if (len === 7) { - len += inData[inPtr++]; - if (inPtr >= inLength) throw new Error("Invalid compressed data"); - } - ref -= inData[inPtr++]; - if (outPtr + len + 2 > outLength) throw new Error("Output buffer is not large enough"); - if (ref < 0) throw new Error("Invalid compressed data"); - if (ref >= outPtr) throw new Error("Invalid compressed data"); - do { - outData[outPtr++] = outData[ref++]; - } while (--len + 2); - } - } while (inPtr < inLength); - return outData; - } - function parseHeader(data3) { - const PCDheader2 = {}; - const result1 = data3.search(/[\r\n]DATA\s(\S*)\s/i); - const result2 = /[\r\n]DATA\s(\S*)\s/i.exec(data3.slice(result1 - 1)); - PCDheader2.data = result2[1]; - PCDheader2.headerLen = result2[0].length + result1; - PCDheader2.str = data3.slice(0, PCDheader2.headerLen); - PCDheader2.str = PCDheader2.str.replace(/#.*/gi, ""); - PCDheader2.version = /VERSION (.*)/i.exec(PCDheader2.str); - PCDheader2.fields = /FIELDS (.*)/i.exec(PCDheader2.str); - PCDheader2.size = /SIZE (.*)/i.exec(PCDheader2.str); - PCDheader2.type = /TYPE (.*)/i.exec(PCDheader2.str); - PCDheader2.count = /COUNT (.*)/i.exec(PCDheader2.str); - PCDheader2.width = /WIDTH (.*)/i.exec(PCDheader2.str); - PCDheader2.height = /HEIGHT (.*)/i.exec(PCDheader2.str); - PCDheader2.viewpoint = /VIEWPOINT (.*)/i.exec(PCDheader2.str); - PCDheader2.points = /POINTS (.*)/i.exec(PCDheader2.str); - if (PCDheader2.version !== null) - PCDheader2.version = parseFloat(PCDheader2.version[1]); - PCDheader2.fields = PCDheader2.fields !== null ? PCDheader2.fields[1].split(" ") : []; - if (PCDheader2.type !== null) - PCDheader2.type = PCDheader2.type[1].split(" "); - if (PCDheader2.width !== null) - PCDheader2.width = parseInt(PCDheader2.width[1]); - if (PCDheader2.height !== null) - PCDheader2.height = parseInt(PCDheader2.height[1]); - if (PCDheader2.viewpoint !== null) - PCDheader2.viewpoint = PCDheader2.viewpoint[1]; - if (PCDheader2.points !== null) - PCDheader2.points = parseInt(PCDheader2.points[1], 10); - if (PCDheader2.points === null) - PCDheader2.points = PCDheader2.width * PCDheader2.height; - if (PCDheader2.size !== null) { - PCDheader2.size = PCDheader2.size[1].split(" ").map(function(x2) { - return parseInt(x2, 10); - }); - } - if (PCDheader2.count !== null) { - PCDheader2.count = PCDheader2.count[1].split(" ").map(function(x2) { - return parseInt(x2, 10); - }); - } else { - PCDheader2.count = []; - for (let i = 0, l2 = PCDheader2.fields.length; i < l2; i++) { - PCDheader2.count.push(1); - } - } - PCDheader2.offset = {}; - let sizeSum = 0; - for (let i = 0, l2 = PCDheader2.fields.length; i < l2; i++) { - if (PCDheader2.data === "ascii") { - PCDheader2.offset[PCDheader2.fields[i]] = i; - } else { - PCDheader2.offset[PCDheader2.fields[i]] = sizeSum; - sizeSum += PCDheader2.size[i] * PCDheader2.count[i]; - } - } - PCDheader2.rowSize = sizeSum; - return PCDheader2; - } - const textData = new TextDecoder().decode(data2); - const PCDheader = parseHeader(textData); - const position2 = []; - const normal = []; - const color = []; - const intensity = []; - const label = []; - const c2 = new Color(); - if (PCDheader.data === "ascii") { - const offset = PCDheader.offset; - const pcdData = textData.slice(PCDheader.headerLen); - const lines = pcdData.split("\n"); - for (let i = 0, l2 = lines.length; i < l2; i++) { - if (lines[i] === "") continue; - const line2 = lines[i].split(" "); - if (offset.x !== void 0) { - position2.push(parseFloat(line2[offset.x])); - position2.push(parseFloat(line2[offset.y])); - position2.push(parseFloat(line2[offset.z])); - } - if (offset.rgb !== void 0) { - const rgb_field_index = PCDheader.fields.findIndex((field) => field === "rgb"); - const rgb_type = PCDheader.type[rgb_field_index]; - const float = parseFloat(line2[offset.rgb]); - let rgb = float; - if (rgb_type === "F") { - const farr = new Float32Array(1); - farr[0] = float; - rgb = new Int32Array(farr.buffer)[0]; - } - const r = (rgb >> 16 & 255) / 255; - const g2 = (rgb >> 8 & 255) / 255; - const b3 = (rgb >> 0 & 255) / 255; - c2.set(r, g2, b3).convertSRGBToLinear(); - color.push(c2.r, c2.g, c2.b); - } - if (offset.normal_x !== void 0) { - normal.push(parseFloat(line2[offset.normal_x])); - normal.push(parseFloat(line2[offset.normal_y])); - normal.push(parseFloat(line2[offset.normal_z])); - } - if (offset.intensity !== void 0) { - intensity.push(parseFloat(line2[offset.intensity])); - } - if (offset.label !== void 0) { - label.push(parseInt(line2[offset.label])); - } - } - } - if (PCDheader.data === "binary_compressed") { - const sizes = new Uint32Array(data2.slice(PCDheader.headerLen, PCDheader.headerLen + 8)); - const compressedSize = sizes[0]; - const decompressedSize = sizes[1]; - const decompressed = decompressLZF(new Uint8Array(data2, PCDheader.headerLen + 8, compressedSize), decompressedSize); - const dataview = new DataView(decompressed.buffer); - const offset = PCDheader.offset; - for (let i = 0; i < PCDheader.points; i++) { - if (offset.x !== void 0) { - const xIndex = PCDheader.fields.indexOf("x"); - const yIndex = PCDheader.fields.indexOf("y"); - const zIndex = PCDheader.fields.indexOf("z"); - position2.push(dataview.getFloat32(PCDheader.points * offset.x + PCDheader.size[xIndex] * i, this.littleEndian)); - position2.push(dataview.getFloat32(PCDheader.points * offset.y + PCDheader.size[yIndex] * i, this.littleEndian)); - position2.push(dataview.getFloat32(PCDheader.points * offset.z + PCDheader.size[zIndex] * i, this.littleEndian)); - } - if (offset.rgb !== void 0) { - const rgbIndex = PCDheader.fields.indexOf("rgb"); - const r = dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[rgbIndex] * i + 2) / 255; - const g2 = dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[rgbIndex] * i + 1) / 255; - const b3 = dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[rgbIndex] * i + 0) / 255; - c2.set(r, g2, b3).convertSRGBToLinear(); - color.push(c2.r, c2.g, c2.b); - } - if (offset.normal_x !== void 0) { - const xIndex = PCDheader.fields.indexOf("normal_x"); - const yIndex = PCDheader.fields.indexOf("normal_y"); - const zIndex = PCDheader.fields.indexOf("normal_z"); - normal.push(dataview.getFloat32(PCDheader.points * offset.normal_x + PCDheader.size[xIndex] * i, this.littleEndian)); - normal.push(dataview.getFloat32(PCDheader.points * offset.normal_y + PCDheader.size[yIndex] * i, this.littleEndian)); - normal.push(dataview.getFloat32(PCDheader.points * offset.normal_z + PCDheader.size[zIndex] * i, this.littleEndian)); - } - if (offset.intensity !== void 0) { - const intensityIndex = PCDheader.fields.indexOf("intensity"); - intensity.push(dataview.getFloat32(PCDheader.points * offset.intensity + PCDheader.size[intensityIndex] * i, this.littleEndian)); - } - if (offset.label !== void 0) { - const labelIndex = PCDheader.fields.indexOf("label"); - label.push(dataview.getInt32(PCDheader.points * offset.label + PCDheader.size[labelIndex] * i, this.littleEndian)); - } - } - } - if (PCDheader.data === "binary") { - const dataview = new DataView(data2, PCDheader.headerLen); - const offset = PCDheader.offset; - for (let i = 0, row = 0; i < PCDheader.points; i++, row += PCDheader.rowSize) { - if (offset.x !== void 0) { - position2.push(dataview.getFloat32(row + offset.x, this.littleEndian)); - position2.push(dataview.getFloat32(row + offset.y, this.littleEndian)); - position2.push(dataview.getFloat32(row + offset.z, this.littleEndian)); - } - if (offset.rgb !== void 0) { - const r = dataview.getUint8(row + offset.rgb + 2) / 255; - const g2 = dataview.getUint8(row + offset.rgb + 1) / 255; - const b3 = dataview.getUint8(row + offset.rgb + 0) / 255; - c2.set(r, g2, b3).convertSRGBToLinear(); - color.push(c2.r, c2.g, c2.b); - } - if (offset.normal_x !== void 0) { - normal.push(dataview.getFloat32(row + offset.normal_x, this.littleEndian)); - normal.push(dataview.getFloat32(row + offset.normal_y, this.littleEndian)); - normal.push(dataview.getFloat32(row + offset.normal_z, this.littleEndian)); - } - if (offset.intensity !== void 0) { - intensity.push(dataview.getFloat32(row + offset.intensity, this.littleEndian)); - } - if (offset.label !== void 0) { - label.push(dataview.getInt32(row + offset.label, this.littleEndian)); - } - } - } - const geometry = new BufferGeometry(); - if (position2.length > 0) geometry.setAttribute("position", new Float32BufferAttribute(position2, 3)); - if (normal.length > 0) geometry.setAttribute("normal", new Float32BufferAttribute(normal, 3)); - if (color.length > 0) geometry.setAttribute("color", new Float32BufferAttribute(color, 3)); - if (intensity.length > 0) geometry.setAttribute("intensity", new Float32BufferAttribute(intensity, 1)); - if (label.length > 0) geometry.setAttribute("label", new Int32BufferAttribute(label, 1)); - geometry.computeBoundingSphere(); - const material = new PointsMaterial({ size: 5e-3 }); - if (color.length > 0) { - material.vertexColors = true; - } - return new Points(geometry, material); - } -}; - -// node_modules/three/examples/jsm/loaders/PDBLoader.js -var PDBLoader = class extends Loader { - constructor(manager) { - super(manager); - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(scope.manager); - loader.setPath(scope.path); - loader.setRequestHeader(scope.requestHeader); - loader.setWithCredentials(scope.withCredentials); - loader.load(url, function(text2) { - try { - onLoad(scope.parse(text2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - // Based on CanvasMol PDB parser - parse(text2) { - function trim(text3) { - return text3.replace(/^\s\s*/, "").replace(/\s\s*$/, ""); - } - function capitalize(text3) { - return text3.charAt(0).toUpperCase() + text3.slice(1).toLowerCase(); - } - function hash(s, e) { - return "s" + Math.min(s, e) + "e" + Math.max(s, e); - } - function parseBond(start, length2, satom, i) { - const eatom = parseInt(lines[i].slice(start, start + length2)); - if (eatom) { - const h = hash(satom, eatom); - if (_bhash[h] === void 0) { - _bonds.push([satom - 1, eatom - 1, 1]); - _bhash[h] = _bonds.length - 1; - } else { - } - } - } - function buildGeometry() { - const build = { - geometryAtoms: new BufferGeometry(), - geometryBonds: new BufferGeometry(), - json: { - atoms - } - }; - const geometryAtoms = build.geometryAtoms; - const geometryBonds = build.geometryBonds; - const verticesAtoms = []; - const colorsAtoms = []; - const verticesBonds = []; - const c2 = new Color(); - for (let i = 0, l2 = atoms.length; i < l2; i++) { - const atom = atoms[i]; - const x2 = atom[0]; - const y2 = atom[1]; - const z = atom[2]; - verticesAtoms.push(x2, y2, z); - const r = atom[3][0] / 255; - const g2 = atom[3][1] / 255; - const b3 = atom[3][2] / 255; - c2.set(r, g2, b3).convertSRGBToLinear(); - colorsAtoms.push(c2.r, c2.g, c2.b); - } - for (let i = 0, l2 = _bonds.length; i < l2; i++) { - const bond = _bonds[i]; - const start = bond[0]; - const end = bond[1]; - const startAtom = _atomMap[start]; - const endAtom = _atomMap[end]; - let x2 = startAtom[0]; - let y2 = startAtom[1]; - let z = startAtom[2]; - verticesBonds.push(x2, y2, z); - x2 = endAtom[0]; - y2 = endAtom[1]; - z = endAtom[2]; - verticesBonds.push(x2, y2, z); - } - geometryAtoms.setAttribute("position", new Float32BufferAttribute(verticesAtoms, 3)); - geometryAtoms.setAttribute("color", new Float32BufferAttribute(colorsAtoms, 3)); - geometryBonds.setAttribute("position", new Float32BufferAttribute(verticesBonds, 3)); - return build; - } - const CPK = { h: [255, 255, 255], he: [217, 255, 255], li: [204, 128, 255], be: [194, 255, 0], b: [255, 181, 181], c: [144, 144, 144], n: [48, 80, 248], o: [255, 13, 13], f: [144, 224, 80], ne: [179, 227, 245], na: [171, 92, 242], mg: [138, 255, 0], al: [191, 166, 166], si: [240, 200, 160], p: [255, 128, 0], s: [255, 255, 48], cl: [31, 240, 31], ar: [128, 209, 227], k: [143, 64, 212], ca: [61, 255, 0], sc: [230, 230, 230], ti: [191, 194, 199], v: [166, 166, 171], cr: [138, 153, 199], mn: [156, 122, 199], fe: [224, 102, 51], co: [240, 144, 160], ni: [80, 208, 80], cu: [200, 128, 51], zn: [125, 128, 176], ga: [194, 143, 143], ge: [102, 143, 143], as: [189, 128, 227], se: [255, 161, 0], br: [166, 41, 41], kr: [92, 184, 209], rb: [112, 46, 176], sr: [0, 255, 0], y: [148, 255, 255], zr: [148, 224, 224], nb: [115, 194, 201], mo: [84, 181, 181], tc: [59, 158, 158], ru: [36, 143, 143], rh: [10, 125, 140], pd: [0, 105, 133], ag: [192, 192, 192], cd: [255, 217, 143], in: [166, 117, 115], sn: [102, 128, 128], sb: [158, 99, 181], te: [212, 122, 0], i: [148, 0, 148], xe: [66, 158, 176], cs: [87, 23, 143], ba: [0, 201, 0], la: [112, 212, 255], ce: [255, 255, 199], pr: [217, 255, 199], nd: [199, 255, 199], pm: [163, 255, 199], sm: [143, 255, 199], eu: [97, 255, 199], gd: [69, 255, 199], tb: [48, 255, 199], dy: [31, 255, 199], ho: [0, 255, 156], er: [0, 230, 117], tm: [0, 212, 82], yb: [0, 191, 56], lu: [0, 171, 36], hf: [77, 194, 255], ta: [77, 166, 255], w: [33, 148, 214], re: [38, 125, 171], os: [38, 102, 150], ir: [23, 84, 135], pt: [208, 208, 224], au: [255, 209, 35], hg: [184, 184, 208], tl: [166, 84, 77], pb: [87, 89, 97], bi: [158, 79, 181], po: [171, 92, 0], at: [117, 79, 69], rn: [66, 130, 150], fr: [66, 0, 102], ra: [0, 125, 0], ac: [112, 171, 250], th: [0, 186, 255], pa: [0, 161, 255], u: [0, 143, 255], np: [0, 128, 255], pu: [0, 107, 255], am: [84, 92, 242], cm: [120, 92, 227], bk: [138, 79, 227], cf: [161, 54, 212], es: [179, 31, 212], fm: [179, 31, 186], md: [179, 13, 166], no: [189, 13, 135], lr: [199, 0, 102], rf: [204, 0, 89], db: [209, 0, 79], sg: [217, 0, 69], bh: [224, 0, 56], hs: [230, 0, 46], mt: [235, 0, 38], ds: [235, 0, 38], rg: [235, 0, 38], cn: [235, 0, 38], uut: [235, 0, 38], uuq: [235, 0, 38], uup: [235, 0, 38], uuh: [235, 0, 38], uus: [235, 0, 38], uuo: [235, 0, 38] }; - const atoms = []; - const _bonds = []; - const _bhash = {}; - const _atomMap = {}; - const lines = text2.split("\n"); - for (let i = 0, l2 = lines.length; i < l2; i++) { - if (lines[i].slice(0, 4) === "ATOM" || lines[i].slice(0, 6) === "HETATM") { - const x2 = parseFloat(lines[i].slice(30, 37)); - const y2 = parseFloat(lines[i].slice(38, 45)); - const z = parseFloat(lines[i].slice(46, 53)); - const index2 = parseInt(lines[i].slice(6, 11)) - 1; - let e = trim(lines[i].slice(76, 78)).toLowerCase(); - if (e === "") { - e = trim(lines[i].slice(12, 14)).toLowerCase(); - } - const atomData = [x2, y2, z, CPK[e], capitalize(e)]; - atoms.push(atomData); - _atomMap[index2] = atomData; - } else if (lines[i].slice(0, 6) === "CONECT") { - const satom = parseInt(lines[i].slice(6, 11)); - parseBond(11, 5, satom, i); - parseBond(16, 5, satom, i); - parseBond(21, 5, satom, i); - parseBond(26, 5, satom, i); - } - } - return buildGeometry(); - } -}; - -// node_modules/three/examples/jsm/loaders/PLYLoader.js -var _color2 = new Color(); -var PLYLoader = class extends Loader { - constructor(manager) { - super(manager); - this.propertyNameMapping = {}; - this.customPropertyMapping = {}; - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(this.requestHeader); - loader.setWithCredentials(this.withCredentials); - loader.load(url, function(text2) { - try { - onLoad(scope.parse(text2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - setPropertyNameMapping(mapping) { - this.propertyNameMapping = mapping; - } - setCustomPropertyNameMapping(mapping) { - this.customPropertyMapping = mapping; - } - parse(data2) { - function parseHeader(data3, headerLength = 0) { - const patternHeader = /^ply([\s\S]*)end_header(\r\n|\r|\n)/; - let headerText = ""; - const result = patternHeader.exec(data3); - if (result !== null) { - headerText = result[1]; - } - const header = { - comments: [], - elements: [], - headerLength, - objInfo: "" - }; - const lines = headerText.split(/\r\n|\r|\n/); - let currentElement; - function make_ply_element_property(propertValues, propertyNameMapping) { - const property2 = { type: propertValues[0] }; - if (property2.type === "list") { - property2.name = propertValues[3]; - property2.countType = propertValues[1]; - property2.itemType = propertValues[2]; - } else { - property2.name = propertValues[1]; - } - if (property2.name in propertyNameMapping) { - property2.name = propertyNameMapping[property2.name]; - } - return property2; - } - for (let i = 0; i < lines.length; i++) { - let line2 = lines[i]; - line2 = line2.trim(); - if (line2 === "") continue; - const lineValues = line2.split(/\s+/); - const lineType = lineValues.shift(); - line2 = lineValues.join(" "); - switch (lineType) { - case "format": - header.format = lineValues[0]; - header.version = lineValues[1]; - break; - case "comment": - header.comments.push(line2); - break; - case "element": - if (currentElement !== void 0) { - header.elements.push(currentElement); - } - currentElement = {}; - currentElement.name = lineValues[0]; - currentElement.count = parseInt(lineValues[1]); - currentElement.properties = []; - break; - case "property": - currentElement.properties.push(make_ply_element_property(lineValues, scope.propertyNameMapping)); - break; - case "obj_info": - header.objInfo = line2; - break; - default: - console.log("unhandled", lineType, lineValues); - } - } - if (currentElement !== void 0) { - header.elements.push(currentElement); - } - return header; - } - function parseASCIINumber(n2, type) { - switch (type) { - case "char": - case "uchar": - case "short": - case "ushort": - case "int": - case "uint": - case "int8": - case "uint8": - case "int16": - case "uint16": - case "int32": - case "uint32": - return parseInt(n2); - case "float": - case "double": - case "float32": - case "float64": - return parseFloat(n2); - } - } - function parseASCIIElement(properties, tokens) { - const element = {}; - for (let i = 0; i < properties.length; i++) { - if (tokens.empty()) return null; - if (properties[i].type === "list") { - const list = []; - const n2 = parseASCIINumber(tokens.next(), properties[i].countType); - for (let j = 0; j < n2; j++) { - if (tokens.empty()) return null; - list.push(parseASCIINumber(tokens.next(), properties[i].itemType)); - } - element[properties[i].name] = list; - } else { - element[properties[i].name] = parseASCIINumber(tokens.next(), properties[i].type); - } - } - return element; - } - function createBuffer() { - const buffer = { - indices: [], - vertices: [], - normals: [], - uvs: [], - faceVertexUvs: [], - colors: [], - faceVertexColors: [] - }; - for (const customProperty of Object.keys(scope.customPropertyMapping)) { - buffer[customProperty] = []; - } - return buffer; - } - function mapElementAttributes(properties) { - const elementNames = properties.map((property2) => { - return property2.name; - }); - function findAttrName(names) { - for (let i = 0, l2 = names.length; i < l2; i++) { - const name2 = names[i]; - if (elementNames.includes(name2)) return name2; - } - return null; - } - return { - attrX: findAttrName(["x", "px", "posx"]) || "x", - attrY: findAttrName(["y", "py", "posy"]) || "y", - attrZ: findAttrName(["z", "pz", "posz"]) || "z", - attrNX: findAttrName(["nx", "normalx"]), - attrNY: findAttrName(["ny", "normaly"]), - attrNZ: findAttrName(["nz", "normalz"]), - attrS: findAttrName(["s", "u", "texture_u", "tx"]), - attrT: findAttrName(["t", "v", "texture_v", "ty"]), - attrR: findAttrName(["red", "diffuse_red", "r", "diffuse_r"]), - attrG: findAttrName(["green", "diffuse_green", "g", "diffuse_g"]), - attrB: findAttrName(["blue", "diffuse_blue", "b", "diffuse_b"]) - }; - } - function parseASCII(data3, header) { - const buffer = createBuffer(); - const patternBody = /end_header\s+(\S[\s\S]*\S|\S)\s*$/; - let body, matches; - if ((matches = patternBody.exec(data3)) !== null) { - body = matches[1].split(/\s+/); - } else { - body = []; - } - const tokens = new ArrayStream(body); - loop: for (let i = 0; i < header.elements.length; i++) { - const elementDesc = header.elements[i]; - const attributeMap = mapElementAttributes(elementDesc.properties); - for (let j = 0; j < elementDesc.count; j++) { - const element = parseASCIIElement(elementDesc.properties, tokens); - if (!element) break loop; - handleElement(buffer, elementDesc.name, element, attributeMap); - } - } - return postProcess(buffer); - } - function postProcess(buffer) { - let geometry2 = new BufferGeometry(); - if (buffer.indices.length > 0) { - geometry2.setIndex(buffer.indices); - } - geometry2.setAttribute("position", new Float32BufferAttribute(buffer.vertices, 3)); - if (buffer.normals.length > 0) { - geometry2.setAttribute("normal", new Float32BufferAttribute(buffer.normals, 3)); - } - if (buffer.uvs.length > 0) { - geometry2.setAttribute("uv", new Float32BufferAttribute(buffer.uvs, 2)); - } - if (buffer.colors.length > 0) { - geometry2.setAttribute("color", new Float32BufferAttribute(buffer.colors, 3)); - } - if (buffer.faceVertexUvs.length > 0 || buffer.faceVertexColors.length > 0) { - geometry2 = geometry2.toNonIndexed(); - if (buffer.faceVertexUvs.length > 0) geometry2.setAttribute("uv", new Float32BufferAttribute(buffer.faceVertexUvs, 2)); - if (buffer.faceVertexColors.length > 0) geometry2.setAttribute("color", new Float32BufferAttribute(buffer.faceVertexColors, 3)); - } - for (const customProperty of Object.keys(scope.customPropertyMapping)) { - if (buffer[customProperty].length > 0) { - geometry2.setAttribute( - customProperty, - new Float32BufferAttribute( - buffer[customProperty], - scope.customPropertyMapping[customProperty].length - ) - ); - } - } - geometry2.computeBoundingSphere(); - return geometry2; - } - function handleElement(buffer, elementName, element, cacheEntry) { - if (elementName === "vertex") { - buffer.vertices.push(element[cacheEntry.attrX], element[cacheEntry.attrY], element[cacheEntry.attrZ]); - if (cacheEntry.attrNX !== null && cacheEntry.attrNY !== null && cacheEntry.attrNZ !== null) { - buffer.normals.push(element[cacheEntry.attrNX], element[cacheEntry.attrNY], element[cacheEntry.attrNZ]); - } - if (cacheEntry.attrS !== null && cacheEntry.attrT !== null) { - buffer.uvs.push(element[cacheEntry.attrS], element[cacheEntry.attrT]); - } - if (cacheEntry.attrR !== null && cacheEntry.attrG !== null && cacheEntry.attrB !== null) { - _color2.setRGB( - element[cacheEntry.attrR] / 255, - element[cacheEntry.attrG] / 255, - element[cacheEntry.attrB] / 255 - ).convertSRGBToLinear(); - buffer.colors.push(_color2.r, _color2.g, _color2.b); - } - for (const customProperty of Object.keys(scope.customPropertyMapping)) { - for (const elementProperty of scope.customPropertyMapping[customProperty]) { - buffer[customProperty].push(element[elementProperty]); - } - } - } else if (elementName === "face") { - const vertex_indices = element.vertex_indices || element.vertex_index; - const texcoord = element.texcoord; - if (vertex_indices.length === 3) { - buffer.indices.push(vertex_indices[0], vertex_indices[1], vertex_indices[2]); - if (texcoord && texcoord.length === 6) { - buffer.faceVertexUvs.push(texcoord[0], texcoord[1]); - buffer.faceVertexUvs.push(texcoord[2], texcoord[3]); - buffer.faceVertexUvs.push(texcoord[4], texcoord[5]); - } - } else if (vertex_indices.length === 4) { - buffer.indices.push(vertex_indices[0], vertex_indices[1], vertex_indices[3]); - buffer.indices.push(vertex_indices[1], vertex_indices[2], vertex_indices[3]); - } - if (cacheEntry.attrR !== null && cacheEntry.attrG !== null && cacheEntry.attrB !== null) { - _color2.setRGB( - element[cacheEntry.attrR] / 255, - element[cacheEntry.attrG] / 255, - element[cacheEntry.attrB] / 255 - ).convertSRGBToLinear(); - buffer.faceVertexColors.push(_color2.r, _color2.g, _color2.b); - buffer.faceVertexColors.push(_color2.r, _color2.g, _color2.b); - buffer.faceVertexColors.push(_color2.r, _color2.g, _color2.b); - } - } - } - function binaryReadElement(at, properties) { - const element = {}; - let read = 0; - for (let i = 0; i < properties.length; i++) { - const property2 = properties[i]; - const valueReader = property2.valueReader; - if (property2.type === "list") { - const list = []; - const n2 = property2.countReader.read(at + read); - read += property2.countReader.size; - for (let j = 0; j < n2; j++) { - list.push(valueReader.read(at + read)); - read += valueReader.size; - } - element[property2.name] = list; - } else { - element[property2.name] = valueReader.read(at + read); - read += valueReader.size; - } - } - return [element, read]; - } - function setPropertyBinaryReaders(properties, body, little_endian) { - function getBinaryReader(dataview, type, little_endian2) { - switch (type) { - case "int8": - case "char": - return { read: (at) => { - return dataview.getInt8(at); - }, size: 1 }; - case "uint8": - case "uchar": - return { read: (at) => { - return dataview.getUint8(at); - }, size: 1 }; - case "int16": - case "short": - return { read: (at) => { - return dataview.getInt16(at, little_endian2); - }, size: 2 }; - case "uint16": - case "ushort": - return { read: (at) => { - return dataview.getUint16(at, little_endian2); - }, size: 2 }; - case "int32": - case "int": - return { read: (at) => { - return dataview.getInt32(at, little_endian2); - }, size: 4 }; - case "uint32": - case "uint": - return { read: (at) => { - return dataview.getUint32(at, little_endian2); - }, size: 4 }; - case "float32": - case "float": - return { read: (at) => { - return dataview.getFloat32(at, little_endian2); - }, size: 4 }; - case "float64": - case "double": - return { read: (at) => { - return dataview.getFloat64(at, little_endian2); - }, size: 8 }; - } - } - for (let i = 0, l2 = properties.length; i < l2; i++) { - const property2 = properties[i]; - if (property2.type === "list") { - property2.countReader = getBinaryReader(body, property2.countType, little_endian); - property2.valueReader = getBinaryReader(body, property2.itemType, little_endian); - } else { - property2.valueReader = getBinaryReader(body, property2.type, little_endian); - } - } - } - function parseBinary(data3, header) { - const buffer = createBuffer(); - const little_endian = header.format === "binary_little_endian"; - const body = new DataView(data3, header.headerLength); - let result, loc = 0; - for (let currentElement = 0; currentElement < header.elements.length; currentElement++) { - const elementDesc = header.elements[currentElement]; - const properties = elementDesc.properties; - const attributeMap = mapElementAttributes(properties); - setPropertyBinaryReaders(properties, body, little_endian); - for (let currentElementCount = 0; currentElementCount < elementDesc.count; currentElementCount++) { - result = binaryReadElement(loc, properties); - loc += result[1]; - const element = result[0]; - handleElement(buffer, elementDesc.name, element, attributeMap); - } - } - return postProcess(buffer); - } - function extractHeaderText(bytes) { - let i = 0; - let cont = true; - let line2 = ""; - const lines = []; - const startLine = new TextDecoder().decode(bytes.subarray(0, 5)); - const hasCRNL = /^ply\r\n/.test(startLine); - do { - const c2 = String.fromCharCode(bytes[i++]); - if (c2 !== "\n" && c2 !== "\r") { - line2 += c2; - } else { - if (line2 === "end_header") cont = false; - if (line2 !== "") { - lines.push(line2); - line2 = ""; - } - } - } while (cont && i < bytes.length); - if (hasCRNL === true) i++; - return { headerText: lines.join("\r") + "\r", headerLength: i }; - } - let geometry; - const scope = this; - if (data2 instanceof ArrayBuffer) { - const bytes = new Uint8Array(data2); - const { headerText, headerLength } = extractHeaderText(bytes); - const header = parseHeader(headerText, headerLength); - if (header.format === "ascii") { - const text2 = new TextDecoder().decode(bytes); - geometry = parseASCII(text2, header); - } else { - geometry = parseBinary(data2, header); - } - } else { - geometry = parseASCII(data2, parseHeader(data2)); - } - return geometry; - } -}; -var ArrayStream = class { - constructor(arr) { - this.arr = arr; - this.i = 0; - } - empty() { - return this.i >= this.arr.length; - } - next() { - return this.arr[this.i++]; - } -}; - -// node_modules/three/examples/jsm/loaders/PVRLoader.js -var PVRLoader = class extends CompressedTextureLoader { - constructor(manager) { - super(manager); - } - parse(buffer, loadMipmaps) { - const headerLengthInt = 13; - const header = new Uint32Array(buffer, 0, headerLengthInt); - const pvrDatas = { - buffer, - header, - loadMipmaps - }; - if (header[0] === 55727696) { - return _parseV3(pvrDatas); - } else if (header[11] === 559044176) { - return _parseV2(pvrDatas); - } else { - console.error("THREE.PVRLoader: Unknown PVR format."); - } - } -}; -function _parseV3(pvrDatas) { - const header = pvrDatas.header; - let bpp, format; - const metaLen = header[12], pixelFormat = header[2], height2 = header[6], width2 = header[7], numFaces = header[10], numMipmaps = header[11]; - switch (pixelFormat) { - case 0: - bpp = 2; - format = RGB_PVRTC_2BPPV1_Format; - break; - case 1: - bpp = 2; - format = RGBA_PVRTC_2BPPV1_Format; - break; - case 2: - bpp = 4; - format = RGB_PVRTC_4BPPV1_Format; - break; - case 3: - bpp = 4; - format = RGBA_PVRTC_4BPPV1_Format; - break; - default: - console.error("THREE.PVRLoader: Unsupported PVR format:", pixelFormat); - } - pvrDatas.dataPtr = 52 + metaLen; - pvrDatas.bpp = bpp; - pvrDatas.format = format; - pvrDatas.width = width2; - pvrDatas.height = height2; - pvrDatas.numSurfaces = numFaces; - pvrDatas.numMipmaps = numMipmaps; - pvrDatas.isCubemap = numFaces === 6; - return _extract(pvrDatas); -} -function _parseV2(pvrDatas) { - const header = pvrDatas.header; - const headerLength = header[0], height2 = header[1], width2 = header[2], numMipmaps = header[3], flags = header[4], bitmaskAlpha = header[10], numSurfs = header[12]; - const TYPE_MASK = 255; - const PVRTC_2 = 24, PVRTC_4 = 25; - const formatFlags = flags & TYPE_MASK; - let bpp, format; - const _hasAlpha = bitmaskAlpha > 0; - if (formatFlags === PVRTC_4) { - format = _hasAlpha ? RGBA_PVRTC_4BPPV1_Format : RGB_PVRTC_4BPPV1_Format; - bpp = 4; - } else if (formatFlags === PVRTC_2) { - format = _hasAlpha ? RGBA_PVRTC_2BPPV1_Format : RGB_PVRTC_2BPPV1_Format; - bpp = 2; - } else { - console.error("THREE.PVRLoader: Unknown PVR format:", formatFlags); - } - pvrDatas.dataPtr = headerLength; - pvrDatas.bpp = bpp; - pvrDatas.format = format; - pvrDatas.width = width2; - pvrDatas.height = height2; - pvrDatas.numSurfaces = numSurfs; - pvrDatas.numMipmaps = numMipmaps + 1; - pvrDatas.isCubemap = numSurfs === 6; - return _extract(pvrDatas); -} -function _extract(pvrDatas) { - const pvr = { - mipmaps: [], - width: pvrDatas.width, - height: pvrDatas.height, - format: pvrDatas.format, - mipmapCount: pvrDatas.numMipmaps, - isCubemap: pvrDatas.isCubemap - }; - const buffer = pvrDatas.buffer; - let dataOffset = pvrDatas.dataPtr, dataSize = 0, blockSize = 0, blockWidth = 0, blockHeight = 0, widthBlocks = 0, heightBlocks = 0; - const bpp = pvrDatas.bpp, numSurfs = pvrDatas.numSurfaces; - if (bpp === 2) { - blockWidth = 8; - blockHeight = 4; - } else { - blockWidth = 4; - blockHeight = 4; - } - blockSize = blockWidth * blockHeight * bpp / 8; - pvr.mipmaps.length = pvrDatas.numMipmaps * numSurfs; - let mipLevel = 0; - while (mipLevel < pvrDatas.numMipmaps) { - const sWidth = pvrDatas.width >> mipLevel, sHeight = pvrDatas.height >> mipLevel; - widthBlocks = sWidth / blockWidth; - heightBlocks = sHeight / blockHeight; - if (widthBlocks < 2) widthBlocks = 2; - if (heightBlocks < 2) heightBlocks = 2; - dataSize = widthBlocks * heightBlocks * blockSize; - for (let surfIndex = 0; surfIndex < numSurfs; surfIndex++) { - const byteArray = new Uint8Array(buffer, dataOffset, dataSize); - const mipmap = { - data: byteArray, - width: sWidth, - height: sHeight - }; - pvr.mipmaps[surfIndex * pvrDatas.numMipmaps + mipLevel] = mipmap; - dataOffset += dataSize; - } - mipLevel++; - } - return pvr; -} - -// node_modules/three/examples/jsm/loaders/UltraHDRLoader.js -var SRGB_TO_LINEAR = Array(1024).fill(0).map( - (_, value2) => Math.pow(value2 / 255 * 0.9478672986 + 0.0521327014, 2.4) -); -var UltraHDRLoader = class extends Loader { - constructor(manager) { - super(manager); - this.type = HalfFloatType; - } - setDataType(value2) { - this.type = value2; - return this; - } - parse(buffer, onLoad) { - const xmpMetadata = { - version: null, - baseRenditionIsHDR: null, - gainMapMin: null, - gainMapMax: null, - gamma: null, - offsetSDR: null, - offsetHDR: null, - hdrCapacityMin: null, - hdrCapacityMax: null - }; - const textDecoder = new TextDecoder(); - const data2 = new DataView(buffer); - let byteOffset = 0; - const sections = []; - while (byteOffset < data2.byteLength) { - const byte = data2.getUint8(byteOffset); - if (byte === 255) { - const leadingByte = data2.getUint8(byteOffset + 1); - if ([ - /* Valid section headers */ - 216, - // SOI - 224, - // APP0 - 225, - // APP1 - 226 - // APP2 - ].includes(leadingByte)) { - sections.push({ - sectionType: leadingByte, - section: [byte, leadingByte], - sectionOffset: byteOffset + 2 - }); - byteOffset += 2; - } else { - sections[sections.length - 1].section.push(byte, leadingByte); - byteOffset += 2; - } - } else { - sections[sections.length - 1].section.push(byte); - byteOffset++; - } - } - let primaryImage, gainmapImage; - for (let i = 0; i < sections.length; i++) { - const { sectionType, section, sectionOffset } = sections[i]; - if (sectionType === 224) { - } else if (sectionType === 225) { - this._parseXMPMetadata( - textDecoder.decode(new Uint8Array(section)), - xmpMetadata - ); - } else if (sectionType === 226) { - const sectionData = new DataView( - new Uint8Array(section.slice(2)).buffer - ); - const sectionHeader = sectionData.getUint32(2, false); - if (sectionHeader === 1297106432) { - const mpfLittleEndian = sectionData.getUint32(6) === 1229531648; - const mpfBytesOffset = 60; - const primaryImageSize = sectionData.getUint32( - mpfBytesOffset, - mpfLittleEndian - ); - const primaryImageOffset = sectionData.getUint32( - mpfBytesOffset + 4, - mpfLittleEndian - ); - const gainmapImageSize = sectionData.getUint32( - mpfBytesOffset + 16, - mpfLittleEndian - ); - const gainmapImageOffset = sectionData.getUint32(mpfBytesOffset + 20, mpfLittleEndian) + sectionOffset + 6; - primaryImage = new Uint8Array( - data2.buffer, - primaryImageOffset, - primaryImageSize - ); - gainmapImage = new Uint8Array( - data2.buffer, - gainmapImageOffset, - gainmapImageSize - ); - } - } - } - if (!xmpMetadata.version) { - throw new Error("THREE.UltraHDRLoader: Not a valid UltraHDR image"); - } - if (primaryImage && gainmapImage) { - this._applyGainmapToSDR( - xmpMetadata, - primaryImage, - gainmapImage, - (hdrBuffer, width2, height2) => { - onLoad({ - width: width2, - height: height2, - data: hdrBuffer, - format: RGBAFormat, - type: this.type - }); - }, - (error) => { - throw new Error(error); - } - ); - } else { - throw new Error("THREE.UltraHDRLoader: Could not parse UltraHDR images"); - } - } - load(url, onLoad, onProgress, onError) { - const texture = new DataTexture( - this.type === HalfFloatType ? new Uint16Array() : new Float32Array(), - 0, - 0, - RGBAFormat, - this.type, - UVMapping, - ClampToEdgeWrapping, - ClampToEdgeWrapping, - LinearFilter, - LinearMipMapLinearFilter, - 1, - LinearSRGBColorSpace - ); - texture.generateMipmaps = true; - texture.flipY = true; - const loader = new FileLoader(this.manager); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(this.requestHeader); - loader.setPath(this.path); - loader.setWithCredentials(this.withCredentials); - loader.load(url, (buffer) => { - try { - this.parse( - buffer, - (texData) => { - texture.image = { - data: texData.data, - width: texData.width, - height: texData.height - }; - texture.needsUpdate = true; - if (onLoad) onLoad(texture, texData); - } - ); - } catch (error) { - if (onError) onError(error); - console.error(error); - } - }, onProgress, onError); - return texture; - } - _parseXMPMetadata(xmpDataString, xmpMetadata) { - const domParser = new DOMParser(); - const xmpXml = domParser.parseFromString( - xmpDataString.substring( - xmpDataString.indexOf("<"), - xmpDataString.lastIndexOf(">") + 1 - ), - "text/xml" - ); - const [hasHDRContainerDescriptor] = xmpXml.getElementsByTagName( - "Container:Directory" - ); - if (hasHDRContainerDescriptor) { - } else { - const [gainmapNode] = xmpXml.getElementsByTagName("rdf:Description"); - xmpMetadata.version = gainmapNode.getAttribute("hdrgm:Version"); - xmpMetadata.baseRenditionIsHDR = gainmapNode.getAttribute("hdrgm:BaseRenditionIsHDR") === "True"; - xmpMetadata.gainMapMin = parseFloat( - gainmapNode.getAttribute("hdrgm:GainMapMin") || 0 - ); - xmpMetadata.gainMapMax = parseFloat( - gainmapNode.getAttribute("hdrgm:GainMapMax") || 1 - ); - xmpMetadata.gamma = parseFloat( - gainmapNode.getAttribute("hdrgm:Gamma") || 1 - ); - xmpMetadata.offsetSDR = parseFloat( - gainmapNode.getAttribute("hdrgm:OffsetSDR") / (1 / 64) - ); - xmpMetadata.offsetHDR = parseFloat( - gainmapNode.getAttribute("hdrgm:OffsetHDR") / (1 / 64) - ); - xmpMetadata.hdrCapacityMin = parseFloat( - gainmapNode.getAttribute("hdrgm:HDRCapacityMin") || 0 - ); - xmpMetadata.hdrCapacityMax = parseFloat( - gainmapNode.getAttribute("hdrgm:HDRCapacityMax") || 1 - ); - } - } - _srgbToLinear(value2) { - if (value2 / 255 < 0.04045) { - return value2 / 255 * 0.0773993808; - } - if (value2 < 1024) { - return SRGB_TO_LINEAR[~~value2]; - } - return Math.pow(value2 / 255 * 0.9478672986 + 0.0521327014, 2.4); - } - _applyGainmapToSDR(xmpMetadata, sdrBuffer, gainmapBuffer, onSuccess, onError) { - const getImageDataFromBuffer = (buffer) => new Promise((resolve, reject2) => { - const imageLoader = document.createElement("img"); - imageLoader.onload = () => { - const image = { - width: imageLoader.naturalWidth, - height: imageLoader.naturalHeight, - source: imageLoader - }; - URL.revokeObjectURL(imageLoader.src); - resolve(image); - }; - imageLoader.onerror = () => { - URL.revokeObjectURL(imageLoader.src); - reject2(); - }; - imageLoader.src = URL.createObjectURL( - new Blob([buffer], { type: "image/jpeg" }) - ); - }); - Promise.all([ - getImageDataFromBuffer(sdrBuffer), - getImageDataFromBuffer(gainmapBuffer) - ]).then(([sdrImage, gainmapImage]) => { - const sdrImageAspect = sdrImage.width / sdrImage.height; - const gainmapImageAspect = gainmapImage.width / gainmapImage.height; - if (sdrImageAspect !== gainmapImageAspect) { - onError( - "THREE.UltraHDRLoader Error: Aspect ratio mismatch between SDR and Gainmap images" - ); - return; - } - const canvas = document.createElement("canvas"); - const ctx = canvas.getContext("2d", { - willReadFrequently: true, - colorSpace: "srgb" - }); - canvas.width = sdrImage.width; - canvas.height = sdrImage.height; - ctx.drawImage( - gainmapImage.source, - 0, - 0, - gainmapImage.width, - gainmapImage.height, - 0, - 0, - sdrImage.width, - sdrImage.height - ); - const gainmapImageData = ctx.getImageData( - 0, - 0, - sdrImage.width, - sdrImage.height, - { colorSpace: "srgb" } - ); - ctx.drawImage(sdrImage.source, 0, 0); - const sdrImageData = ctx.getImageData( - 0, - 0, - sdrImage.width, - sdrImage.height, - { colorSpace: "srgb" } - ); - let hdrBuffer; - if (this.type === HalfFloatType) { - hdrBuffer = new Uint16Array(sdrImageData.data.length).fill(23544); - } else { - hdrBuffer = new Float32Array(sdrImageData.data.length).fill(255); - } - const maxDisplayBoost = Math.sqrt( - Math.pow( - /* 1.8 instead of 2 near-perfectly rectifies approximations introduced by precalculated SRGB_TO_LINEAR values */ - 1.8, - xmpMetadata.hdrCapacityMax - ) - ); - const unclampedWeightFactor = (Math.log2(maxDisplayBoost) - xmpMetadata.hdrCapacityMin) / (xmpMetadata.hdrCapacityMax - xmpMetadata.hdrCapacityMin); - const weightFactor = Math.min( - Math.max(unclampedWeightFactor, 0), - 1 - ); - const useGammaOne = xmpMetadata.gamma === 1; - for (let pixelIndex = 0; pixelIndex < sdrImageData.data.length; pixelIndex += 4) { - const x2 = pixelIndex / 4 % sdrImage.width; - const y2 = Math.floor(pixelIndex / 4 / sdrImage.width); - for (let channelIndex = 0; channelIndex < 3; channelIndex++) { - const sdrValue = sdrImageData.data[pixelIndex + channelIndex]; - const gainmapIndex = (y2 * sdrImage.width + x2) * 4 + channelIndex; - const gainmapValue = gainmapImageData.data[gainmapIndex] / 255; - const logRecovery = useGammaOne ? gainmapValue : Math.pow(gainmapValue, 1 / xmpMetadata.gamma); - const logBoost = xmpMetadata.gainMapMin * (1 - logRecovery) + xmpMetadata.gainMapMax * logRecovery; - const hdrValue = (sdrValue + xmpMetadata.offsetSDR) * (logBoost * weightFactor === 0 ? 1 : Math.pow(2, logBoost * weightFactor)) - xmpMetadata.offsetHDR; - const linearHDRValue = Math.min( - Math.max(this._srgbToLinear(hdrValue), 0), - 65504 - ); - hdrBuffer[pixelIndex + channelIndex] = this.type === HalfFloatType ? DataUtils.toHalfFloat(linearHDRValue) : linearHDRValue; - } - } - onSuccess(hdrBuffer, sdrImage.width, sdrImage.height); - }).catch(() => { - throw new Error( - "THREE.UltraHDRLoader Error: Could not parse UltraHDR images" - ); - }); - } -}; - -// node_modules/three/examples/jsm/loaders/RGBMLoader.js -var RGBMLoader = class extends DataTextureLoader { - constructor(manager) { - super(manager); - this.type = HalfFloatType; - this.maxRange = 7; - } - setDataType(value2) { - this.type = value2; - return this; - } - setMaxRange(value2) { - this.maxRange = value2; - return this; - } - loadCubemap(urls, onLoad, onProgress, onError) { - const texture = new CubeTexture(); - for (let i = 0; i < 6; i++) { - texture.images[i] = void 0; - } - let loaded = 0; - const scope = this; - function loadTexture(i) { - scope.load(urls[i], function(image) { - texture.images[i] = image; - loaded++; - if (loaded === 6) { - texture.needsUpdate = true; - if (onLoad) onLoad(texture); - } - }, void 0, onError); - } - for (let i = 0; i < urls.length; ++i) { - loadTexture(i); - } - texture.type = this.type; - texture.format = RGBAFormat; - texture.minFilter = LinearFilter; - texture.generateMipmaps = false; - return texture; - } - loadCubemapAsync(urls, onProgress) { - return new Promise((resolve, reject2) => { - this.loadCubemap(urls, resolve, onProgress, reject2); - }); - } - parse(buffer) { - const img = UPNG.decode(buffer); - const rgba = UPNG.toRGBA8(img)[0]; - const data2 = new Uint8Array(rgba); - const size2 = img.width * img.height * 4; - const output = this.type === HalfFloatType ? new Uint16Array(size2) : new Float32Array(size2); - for (let i = 0; i < data2.length; i += 4) { - const r = data2[i + 0] / 255; - const g2 = data2[i + 1] / 255; - const b3 = data2[i + 2] / 255; - const a2 = data2[i + 3] / 255; - if (this.type === HalfFloatType) { - output[i + 0] = DataUtils.toHalfFloat(Math.min(r * a2 * this.maxRange, 65504)); - output[i + 1] = DataUtils.toHalfFloat(Math.min(g2 * a2 * this.maxRange, 65504)); - output[i + 2] = DataUtils.toHalfFloat(Math.min(b3 * a2 * this.maxRange, 65504)); - output[i + 3] = DataUtils.toHalfFloat(1); - } else { - output[i + 0] = r * a2 * this.maxRange; - output[i + 1] = g2 * a2 * this.maxRange; - output[i + 2] = b3 * a2 * this.maxRange; - output[i + 3] = 1; - } - } - return { - width: img.width, - height: img.height, - data: output, - format: RGBAFormat, - type: this.type, - flipY: true - }; - } -}; -var UPNG = {}; -UPNG.toRGBA8 = function(out) { - var w = out.width, h = out.height; - if (out.tabs.acTL == null) return [UPNG.toRGBA8.decodeImage(out.data, w, h, out).buffer]; - var frms = []; - if (out.frames[0].data == null) out.frames[0].data = out.data; - var len = w * h * 4, img = new Uint8Array(len), empty = new Uint8Array(len), prev = new Uint8Array(len); - for (var i = 0; i < out.frames.length; i++) { - var frm = out.frames[i]; - var fx = frm.rect.x, fy = frm.rect.y, fw = frm.rect.width, fh = frm.rect.height; - var fdata = UPNG.toRGBA8.decodeImage(frm.data, fw, fh, out); - if (i != 0) for (var j = 0; j < len; j++) prev[j] = img[j]; - if (frm.blend == 0) UPNG._copyTile(fdata, fw, fh, img, w, h, fx, fy, 0); - else if (frm.blend == 1) UPNG._copyTile(fdata, fw, fh, img, w, h, fx, fy, 1); - frms.push(img.buffer.slice(0)); - if (frm.dispose == 1) UPNG._copyTile(empty, fw, fh, img, w, h, fx, fy, 0); - else if (frm.dispose == 2) for (var j = 0; j < len; j++) img[j] = prev[j]; - } - return frms; -}; -UPNG.toRGBA8.decodeImage = function(data2, w, h, out) { - var area = w * h, bpp = UPNG.decode._getBPP(out); - var bpl = Math.ceil(w * bpp / 8); - var bf = new Uint8Array(area * 4), bf32 = new Uint32Array(bf.buffer); - var ctype = out.ctype, depth = out.depth; - var rs = UPNG._bin.readUshort; - if (ctype == 6) { - var qarea = area << 2; - if (depth == 8) for (var i = 0; i < qarea; i += 4) { - bf[i] = data2[i]; - bf[i + 1] = data2[i + 1]; - bf[i + 2] = data2[i + 2]; - bf[i + 3] = data2[i + 3]; - } - if (depth == 16) for (var i = 0; i < qarea; i++) { - bf[i] = data2[i << 1]; - } - } else if (ctype == 2) { - var ts = out.tabs["tRNS"]; - if (ts == null) { - if (depth == 8) for (var i = 0; i < area; i++) { - var ti = i * 3; - bf32[i] = 255 << 24 | data2[ti + 2] << 16 | data2[ti + 1] << 8 | data2[ti]; - } - if (depth == 16) for (var i = 0; i < area; i++) { - var ti = i * 6; - bf32[i] = 255 << 24 | data2[ti + 4] << 16 | data2[ti + 2] << 8 | data2[ti]; - } - } else { - var tr = ts[0], tg = ts[1], tb = ts[2]; - if (depth == 8) for (var i = 0; i < area; i++) { - var qi = i << 2, ti = i * 3; - bf32[i] = 255 << 24 | data2[ti + 2] << 16 | data2[ti + 1] << 8 | data2[ti]; - if (data2[ti] == tr && data2[ti + 1] == tg && data2[ti + 2] == tb) bf[qi + 3] = 0; - } - if (depth == 16) for (var i = 0; i < area; i++) { - var qi = i << 2, ti = i * 6; - bf32[i] = 255 << 24 | data2[ti + 4] << 16 | data2[ti + 2] << 8 | data2[ti]; - if (rs(data2, ti) == tr && rs(data2, ti + 2) == tg && rs(data2, ti + 4) == tb) bf[qi + 3] = 0; - } - } - } else if (ctype == 3) { - var p2 = out.tabs["PLTE"], ap = out.tabs["tRNS"], tl = ap ? ap.length : 0; - if (depth == 1) for (var y2 = 0; y2 < h; y2++) { - var s0 = y2 * bpl, t0 = y2 * w; - for (var i = 0; i < w; i++) { - var qi = t0 + i << 2, j = data2[s0 + (i >> 3)] >> 7 - ((i & 7) << 0) & 1, cj = 3 * j; - bf[qi] = p2[cj]; - bf[qi + 1] = p2[cj + 1]; - bf[qi + 2] = p2[cj + 2]; - bf[qi + 3] = j < tl ? ap[j] : 255; - } - } - if (depth == 2) for (var y2 = 0; y2 < h; y2++) { - var s0 = y2 * bpl, t0 = y2 * w; - for (var i = 0; i < w; i++) { - var qi = t0 + i << 2, j = data2[s0 + (i >> 2)] >> 6 - ((i & 3) << 1) & 3, cj = 3 * j; - bf[qi] = p2[cj]; - bf[qi + 1] = p2[cj + 1]; - bf[qi + 2] = p2[cj + 2]; - bf[qi + 3] = j < tl ? ap[j] : 255; - } - } - if (depth == 4) for (var y2 = 0; y2 < h; y2++) { - var s0 = y2 * bpl, t0 = y2 * w; - for (var i = 0; i < w; i++) { - var qi = t0 + i << 2, j = data2[s0 + (i >> 1)] >> 4 - ((i & 1) << 2) & 15, cj = 3 * j; - bf[qi] = p2[cj]; - bf[qi + 1] = p2[cj + 1]; - bf[qi + 2] = p2[cj + 2]; - bf[qi + 3] = j < tl ? ap[j] : 255; - } - } - if (depth == 8) for (var i = 0; i < area; i++) { - var qi = i << 2, j = data2[i], cj = 3 * j; - bf[qi] = p2[cj]; - bf[qi + 1] = p2[cj + 1]; - bf[qi + 2] = p2[cj + 2]; - bf[qi + 3] = j < tl ? ap[j] : 255; - } - } else if (ctype == 4) { - if (depth == 8) for (var i = 0; i < area; i++) { - var qi = i << 2, di = i << 1, gr = data2[di]; - bf[qi] = gr; - bf[qi + 1] = gr; - bf[qi + 2] = gr; - bf[qi + 3] = data2[di + 1]; - } - if (depth == 16) for (var i = 0; i < area; i++) { - var qi = i << 2, di = i << 2, gr = data2[di]; - bf[qi] = gr; - bf[qi + 1] = gr; - bf[qi + 2] = gr; - bf[qi + 3] = data2[di + 2]; - } - } else if (ctype == 0) { - var tr = out.tabs["tRNS"] ? out.tabs["tRNS"] : -1; - for (var y2 = 0; y2 < h; y2++) { - var off = y2 * bpl, to = y2 * w; - if (depth == 1) for (var x2 = 0; x2 < w; x2++) { - var gr = 255 * (data2[off + (x2 >>> 3)] >>> 7 - (x2 & 7) & 1), al = gr == tr * 255 ? 0 : 255; - bf32[to + x2] = al << 24 | gr << 16 | gr << 8 | gr; - } - else if (depth == 2) for (var x2 = 0; x2 < w; x2++) { - var gr = 85 * (data2[off + (x2 >>> 2)] >>> 6 - ((x2 & 3) << 1) & 3), al = gr == tr * 85 ? 0 : 255; - bf32[to + x2] = al << 24 | gr << 16 | gr << 8 | gr; - } - else if (depth == 4) for (var x2 = 0; x2 < w; x2++) { - var gr = 17 * (data2[off + (x2 >>> 1)] >>> 4 - ((x2 & 1) << 2) & 15), al = gr == tr * 17 ? 0 : 255; - bf32[to + x2] = al << 24 | gr << 16 | gr << 8 | gr; - } - else if (depth == 8) for (var x2 = 0; x2 < w; x2++) { - var gr = data2[off + x2], al = gr == tr ? 0 : 255; - bf32[to + x2] = al << 24 | gr << 16 | gr << 8 | gr; - } - else if (depth == 16) for (var x2 = 0; x2 < w; x2++) { - var gr = data2[off + (x2 << 1)], al = rs(data2, off + (x2 << 1)) == tr ? 0 : 255; - bf32[to + x2] = al << 24 | gr << 16 | gr << 8 | gr; - } - } - } - return bf; -}; -UPNG.decode = function(buff) { - var data2 = new Uint8Array(buff), offset = 8, bin = UPNG._bin, rUs = bin.readUshort, rUi = bin.readUint; - var out = { tabs: {}, frames: [] }; - var dd = new Uint8Array(data2.length), doff = 0; - var fd2, foff = 0; - var text2, keyw, bfr; - var mgck = [137, 80, 78, 71, 13, 10, 26, 10]; - for (var i = 0; i < 8; i++) if (data2[i] != mgck[i]) throw new Error("The input is not a PNG file!"); - while (offset < data2.length) { - var len = bin.readUint(data2, offset); - offset += 4; - var type = bin.readASCII(data2, offset, 4); - offset += 4; - if (type == "IHDR") { - UPNG.decode._IHDR(data2, offset, out); - } else if (type == "CgBI") { - out.tabs[type] = data2.slice(offset, offset + 4); - } else if (type == "IDAT") { - for (var i = 0; i < len; i++) dd[doff + i] = data2[offset + i]; - doff += len; - } else if (type == "acTL") { - out.tabs[type] = { num_frames: rUi(data2, offset), num_plays: rUi(data2, offset + 4) }; - fd2 = new Uint8Array(data2.length); - } else if (type == "fcTL") { - if (foff != 0) { - var fr = out.frames[out.frames.length - 1]; - fr.data = UPNG.decode._decompress(out, fd2.slice(0, foff), fr.rect.width, fr.rect.height); - foff = 0; - } - var rct = { x: rUi(data2, offset + 12), y: rUi(data2, offset + 16), width: rUi(data2, offset + 4), height: rUi(data2, offset + 8) }; - var del = rUs(data2, offset + 22); - del = rUs(data2, offset + 20) / (del == 0 ? 100 : del); - var frm = { rect: rct, delay: Math.round(del * 1e3), dispose: data2[offset + 24], blend: data2[offset + 25] }; - out.frames.push(frm); - } else if (type == "fdAT") { - for (var i = 0; i < len - 4; i++) fd2[foff + i] = data2[offset + i + 4]; - foff += len - 4; - } else if (type == "pHYs") { - out.tabs[type] = [bin.readUint(data2, offset), bin.readUint(data2, offset + 4), data2[offset + 8]]; - } else if (type == "cHRM") { - out.tabs[type] = []; - for (var i = 0; i < 8; i++) out.tabs[type].push(bin.readUint(data2, offset + i * 4)); - } else if (type == "tEXt" || type == "zTXt") { - if (out.tabs[type] == null) out.tabs[type] = {}; - var nz = bin.nextZero(data2, offset); - keyw = bin.readASCII(data2, offset, nz - offset); - var tl = offset + len - nz - 1; - if (type == "tEXt") text2 = bin.readASCII(data2, nz + 1, tl); - else { - bfr = UPNG.decode._inflate(data2.slice(nz + 2, nz + 2 + tl)); - text2 = bin.readUTF8(bfr, 0, bfr.length); - } - out.tabs[type][keyw] = text2; - } else if (type == "iTXt") { - if (out.tabs[type] == null) out.tabs[type] = {}; - var nz = 0, off = offset; - nz = bin.nextZero(data2, off); - keyw = bin.readASCII(data2, off, nz - off); - off = nz + 1; - var cflag = data2[off]; - off += 2; - nz = bin.nextZero(data2, off); - bin.readASCII(data2, off, nz - off); - off = nz + 1; - nz = bin.nextZero(data2, off); - bin.readUTF8(data2, off, nz - off); - off = nz + 1; - var tl = len - (off - offset); - if (cflag == 0) text2 = bin.readUTF8(data2, off, tl); - else { - bfr = UPNG.decode._inflate(data2.slice(off, off + tl)); - text2 = bin.readUTF8(bfr, 0, bfr.length); - } - out.tabs[type][keyw] = text2; - } else if (type == "PLTE") { - out.tabs[type] = bin.readBytes(data2, offset, len); - } else if (type == "hIST") { - var pl = out.tabs["PLTE"].length / 3; - out.tabs[type] = []; - for (var i = 0; i < pl; i++) out.tabs[type].push(rUs(data2, offset + i * 2)); - } else if (type == "tRNS") { - if (out.ctype == 3) out.tabs[type] = bin.readBytes(data2, offset, len); - else if (out.ctype == 0) out.tabs[type] = rUs(data2, offset); - else if (out.ctype == 2) out.tabs[type] = [rUs(data2, offset), rUs(data2, offset + 2), rUs(data2, offset + 4)]; - } else if (type == "gAMA") out.tabs[type] = bin.readUint(data2, offset) / 1e5; - else if (type == "sRGB") out.tabs[type] = data2[offset]; - else if (type == "bKGD") { - if (out.ctype == 0 || out.ctype == 4) out.tabs[type] = [rUs(data2, offset)]; - else if (out.ctype == 2 || out.ctype == 6) out.tabs[type] = [rUs(data2, offset), rUs(data2, offset + 2), rUs(data2, offset + 4)]; - else if (out.ctype == 3) out.tabs[type] = data2[offset]; - } else if (type == "IEND") { - break; - } - offset += len; - bin.readUint(data2, offset); - offset += 4; - } - if (foff != 0) { - var fr = out.frames[out.frames.length - 1]; - fr.data = UPNG.decode._decompress(out, fd2.slice(0, foff), fr.rect.width, fr.rect.height); - } - out.data = UPNG.decode._decompress(out, dd, out.width, out.height); - delete out.compress; - delete out.interlace; - delete out.filter; - return out; -}; -UPNG.decode._decompress = function(out, dd, w, h) { - var bpp = UPNG.decode._getBPP(out), bpl = Math.ceil(w * bpp / 8), buff = new Uint8Array((bpl + 1 + out.interlace) * h); - if (out.tabs["CgBI"]) dd = UPNG.inflateRaw(dd, buff); - else dd = UPNG.decode._inflate(dd, buff); - if (out.interlace == 0) dd = UPNG.decode._filterZero(dd, out, 0, w, h); - else if (out.interlace == 1) dd = UPNG.decode._readInterlace(dd, out); - return dd; -}; -UPNG.decode._inflate = function(data2, buff) { - var out = UPNG["inflateRaw"](new Uint8Array(data2.buffer, 2, data2.length - 6), buff); - return out; -}; -UPNG.inflateRaw = function() { - var H = {}; - H.H = {}; - H.H.N = function(N, W) { - var R4 = Uint8Array, i = 0, m = 0, J = 0, h = 0, Q3 = 0, X2 = 0, u = 0, w = 0, d = 0, v, C2; - if (N[0] == 3 && N[1] == 0) return W ? W : new R4(0); - var V = H.H, n2 = V.b, A2 = V.e, l2 = V.R, M = V.n, I2 = V.A, e = V.Z, b3 = V.m, Z2 = W == null; - if (Z2) W = new R4(N.length >>> 2 << 5); - while (i == 0) { - i = n2(N, d, 1); - m = n2(N, d + 1, 2); - d += 3; - if (m == 0) { - if ((d & 7) != 0) d += 8 - (d & 7); - var D = (d >>> 3) + 4, q2 = N[D - 4] | N[D - 3] << 8; - if (Z2) W = H.H.W(W, w + q2); - W.set(new R4(N.buffer, N.byteOffset + D, q2), w); - d = D + q2 << 3; - w += q2; - continue; - } - if (Z2) W = H.H.W(W, w + (1 << 17)); - if (m == 1) { - v = b3.J; - C2 = b3.h; - X2 = (1 << 9) - 1; - u = (1 << 5) - 1; - } - if (m == 2) { - J = A2(N, d, 5) + 257; - h = A2(N, d + 5, 5) + 1; - Q3 = A2(N, d + 10, 4) + 4; - d += 14; - var j = 1; - for (var c2 = 0; c2 < 38; c2 += 2) { - b3.Q[c2] = 0; - b3.Q[c2 + 1] = 0; - } - for (var c2 = 0; c2 < Q3; c2++) { - var K = A2(N, d + c2 * 3, 3); - b3.Q[(b3.X[c2] << 1) + 1] = K; - if (K > j) j = K; - } - d += 3 * Q3; - M(b3.Q, j); - I2(b3.Q, j, b3.u); - v = b3.w; - C2 = b3.d; - d = l2(b3.u, (1 << j) - 1, J + h, N, d, b3.v); - var r = V.V(b3.v, 0, J, b3.C); - X2 = (1 << r) - 1; - var S = V.V(b3.v, J, h, b3.D); - u = (1 << S) - 1; - M(b3.C, r); - I2(b3.C, r, v); - M(b3.D, S); - I2(b3.D, S, C2); - } - while (true) { - var T = v[e(N, d) & X2]; - d += T & 15; - var p2 = T >>> 4; - if (p2 >>> 8 == 0) { - W[w++] = p2; - } else if (p2 == 256) { - break; - } else { - var z = w + p2 - 254; - if (p2 > 264) { - var _ = b3.q[p2 - 257]; - z = w + (_ >>> 3) + A2(N, d, _ & 7); - d += _ & 7; - } - var $2 = C2[e(N, d) & u]; - d += $2 & 15; - var s = $2 >>> 4, Y2 = b3.c[s], a2 = (Y2 >>> 4) + n2(N, d, Y2 & 15); - d += Y2 & 15; - while (w < z) { - W[w] = W[w++ - a2]; - W[w] = W[w++ - a2]; - W[w] = W[w++ - a2]; - W[w] = W[w++ - a2]; - } - w = z; - } - } - } - return W.length == w ? W : W.slice(0, w); - }; - H.H.W = function(N, W) { - var R4 = N.length; - if (W <= R4) return N; - var V = new Uint8Array(R4 << 1); - V.set(N, 0); - return V; - }; - H.H.R = function(N, W, R4, V, n2, A2) { - var l2 = H.H.e, M = H.H.Z, I2 = 0; - while (I2 < R4) { - var e = N[M(V, n2) & W]; - n2 += e & 15; - var b3 = e >>> 4; - if (b3 <= 15) { - A2[I2] = b3; - I2++; - } else { - var Z2 = 0, m = 0; - if (b3 == 16) { - m = 3 + l2(V, n2, 2); - n2 += 2; - Z2 = A2[I2 - 1]; - } else if (b3 == 17) { - m = 3 + l2(V, n2, 3); - n2 += 3; - } else if (b3 == 18) { - m = 11 + l2(V, n2, 7); - n2 += 7; - } - var J = I2 + m; - while (I2 < J) { - A2[I2] = Z2; - I2++; - } - } - } - return n2; - }; - H.H.V = function(N, W, R4, V) { - var n2 = 0, A2 = 0, l2 = V.length >>> 1; - while (A2 < R4) { - var M = N[A2 + W]; - V[A2 << 1] = 0; - V[(A2 << 1) + 1] = M; - if (M > n2) n2 = M; - A2++; - } - while (A2 < l2) { - V[A2 << 1] = 0; - V[(A2 << 1) + 1] = 0; - A2++; - } - return n2; - }; - H.H.n = function(N, W) { - var R4 = H.H.m, V = N.length, n2, A2, l2, M, I2, e = R4.j; - for (var M = 0; M <= W; M++) e[M] = 0; - for (M = 1; M < V; M += 2) e[N[M]]++; - var b3 = R4.K; - n2 = 0; - e[0] = 0; - for (A2 = 1; A2 <= W; A2++) { - n2 = n2 + e[A2 - 1] << 1; - b3[A2] = n2; - } - for (l2 = 0; l2 < V; l2 += 2) { - I2 = N[l2 + 1]; - if (I2 != 0) { - N[l2] = b3[I2]; - b3[I2]++; - } - } - }; - H.H.A = function(N, W, R4) { - var V = N.length, n2 = H.H.m, A2 = n2.r; - for (var l2 = 0; l2 < V; l2 += 2) if (N[l2 + 1] != 0) { - var M = l2 >> 1, I2 = N[l2 + 1], e = M << 4 | I2, b3 = W - I2, Z2 = N[l2] << b3, m = Z2 + (1 << b3); - while (Z2 != m) { - var J = A2[Z2] >>> 15 - W; - R4[J] = e; - Z2++; - } - } - }; - H.H.l = function(N, W) { - var R4 = H.H.m.r, V = 15 - W; - for (var n2 = 0; n2 < N.length; n2 += 2) { - var A2 = N[n2] << W - N[n2 + 1]; - N[n2] = R4[A2] >>> V; - } - }; - H.H.M = function(N, W, R4) { - R4 = R4 << (W & 7); - var V = W >>> 3; - N[V] |= R4; - N[V + 1] |= R4 >>> 8; - }; - H.H.I = function(N, W, R4) { - R4 = R4 << (W & 7); - var V = W >>> 3; - N[V] |= R4; - N[V + 1] |= R4 >>> 8; - N[V + 2] |= R4 >>> 16; - }; - H.H.e = function(N, W, R4) { - return (N[W >>> 3] | N[(W >>> 3) + 1] << 8) >>> (W & 7) & (1 << R4) - 1; - }; - H.H.b = function(N, W, R4) { - return (N[W >>> 3] | N[(W >>> 3) + 1] << 8 | N[(W >>> 3) + 2] << 16) >>> (W & 7) & (1 << R4) - 1; - }; - H.H.Z = function(N, W) { - return (N[W >>> 3] | N[(W >>> 3) + 1] << 8 | N[(W >>> 3) + 2] << 16) >>> (W & 7); - }; - H.H.i = function(N, W) { - return (N[W >>> 3] | N[(W >>> 3) + 1] << 8 | N[(W >>> 3) + 2] << 16 | N[(W >>> 3) + 3] << 24) >>> (W & 7); - }; - H.H.m = function() { - var N = Uint16Array, W = Uint32Array; - return { K: new N(16), j: new N(16), X: [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], S: [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 999, 999, 999], T: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0], q: new N(32), p: [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 65535, 65535], z: [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 0, 0], c: new W(32), J: new N(512), _: [], h: new N(32), $: [], w: new N(32768), C: [], v: [], d: new N(32768), D: [], u: new N(512), Q: [], r: new N(1 << 15), s: new W(286), Y: new W(30), a: new W(19), t: new W(15e3), k: new N(1 << 16), g: new N(1 << 15) }; - }(); - (function() { - var N = H.H.m, W = 1 << 15; - for (var R4 = 0; R4 < W; R4++) { - var V = R4; - V = (V & 2863311530) >>> 1 | (V & 1431655765) << 1; - V = (V & 3435973836) >>> 2 | (V & 858993459) << 2; - V = (V & 4042322160) >>> 4 | (V & 252645135) << 4; - V = (V & 4278255360) >>> 8 | (V & 16711935) << 8; - N.r[R4] = (V >>> 16 | V << 16) >>> 17; - } - function n2(A2, l2, M) { - while (l2-- != 0) A2.push(0, M); - } - for (var R4 = 0; R4 < 32; R4++) { - N.q[R4] = N.S[R4] << 3 | N.T[R4]; - N.c[R4] = N.p[R4] << 4 | N.z[R4]; - } - n2(N._, 144, 8); - n2(N._, 255 - 143, 9); - n2(N._, 279 - 255, 7); - n2(N._, 287 - 279, 8); - H.H.n(N._, 9); - H.H.A(N._, 9, N.J); - H.H.l(N._, 9); - n2(N.$, 32, 5); - H.H.n(N.$, 5); - H.H.A(N.$, 5, N.h); - H.H.l(N.$, 5); - n2(N.Q, 19, 0); - n2(N.C, 286, 0); - n2(N.D, 30, 0); - n2(N.v, 320, 0); - })(); - return H.H.N; -}(); -UPNG.decode._readInterlace = function(data2, out) { - var w = out.width, h = out.height; - var bpp = UPNG.decode._getBPP(out), cbpp = bpp >> 3, bpl = Math.ceil(w * bpp / 8); - var img = new Uint8Array(h * bpl); - var di = 0; - var starting_row = [0, 0, 4, 0, 2, 0, 1]; - var starting_col = [0, 4, 0, 2, 0, 1, 0]; - var row_increment = [8, 8, 8, 4, 4, 2, 2]; - var col_increment = [8, 8, 4, 4, 2, 2, 1]; - var pass = 0; - while (pass < 7) { - var ri = row_increment[pass], ci = col_increment[pass]; - var sw = 0, sh = 0; - var cr = starting_row[pass]; - while (cr < h) { - cr += ri; - sh++; - } - var cc = starting_col[pass]; - while (cc < w) { - cc += ci; - sw++; - } - var bpll = Math.ceil(sw * bpp / 8); - UPNG.decode._filterZero(data2, out, di, sw, sh); - var y2 = 0, row = starting_row[pass]; - var val2; - while (row < h) { - var col = starting_col[pass]; - var cdi = di + y2 * bpll << 3; - while (col < w) { - if (bpp == 1) { - val2 = data2[cdi >> 3]; - val2 = val2 >> 7 - (cdi & 7) & 1; - img[row * bpl + (col >> 3)] |= val2 << 7 - ((col & 7) << 0); - } - if (bpp == 2) { - val2 = data2[cdi >> 3]; - val2 = val2 >> 6 - (cdi & 7) & 3; - img[row * bpl + (col >> 2)] |= val2 << 6 - ((col & 3) << 1); - } - if (bpp == 4) { - val2 = data2[cdi >> 3]; - val2 = val2 >> 4 - (cdi & 7) & 15; - img[row * bpl + (col >> 1)] |= val2 << 4 - ((col & 1) << 2); - } - if (bpp >= 8) { - var ii = row * bpl + col * cbpp; - for (var j = 0; j < cbpp; j++) img[ii + j] = data2[(cdi >> 3) + j]; - } - cdi += bpp; - col += ci; - } - y2++; - row += ri; - } - if (sw * sh != 0) di += sh * (1 + bpll); - pass = pass + 1; - } - return img; -}; -UPNG.decode._getBPP = function(out) { - var noc = [1, null, 3, 1, 2, null, 4][out.ctype]; - return noc * out.depth; -}; -UPNG.decode._filterZero = function(data2, out, off, w, h) { - var bpp = UPNG.decode._getBPP(out), bpl = Math.ceil(w * bpp / 8), paeth = UPNG.decode._paeth; - bpp = Math.ceil(bpp / 8); - var i, di, type = data2[off], x2 = 0; - if (type > 1) data2[off] = [0, 0, 1][type - 2]; - if (type == 3) for (x2 = bpp; x2 < bpl; x2++) data2[x2 + 1] = data2[x2 + 1] + (data2[x2 + 1 - bpp] >>> 1) & 255; - for (var y2 = 0; y2 < h; y2++) { - i = off + y2 * bpl; - di = i + y2 + 1; - type = data2[di - 1]; - x2 = 0; - if (type == 0) for (; x2 < bpl; x2++) data2[i + x2] = data2[di + x2]; - else if (type == 1) { - for (; x2 < bpp; x2++) data2[i + x2] = data2[di + x2]; - for (; x2 < bpl; x2++) data2[i + x2] = data2[di + x2] + data2[i + x2 - bpp]; - } else if (type == 2) { - for (; x2 < bpl; x2++) data2[i + x2] = data2[di + x2] + data2[i + x2 - bpl]; - } else if (type == 3) { - for (; x2 < bpp; x2++) data2[i + x2] = data2[di + x2] + (data2[i + x2 - bpl] >>> 1); - for (; x2 < bpl; x2++) data2[i + x2] = data2[di + x2] + (data2[i + x2 - bpl] + data2[i + x2 - bpp] >>> 1); - } else { - for (; x2 < bpp; x2++) data2[i + x2] = data2[di + x2] + paeth(0, data2[i + x2 - bpl], 0); - for (; x2 < bpl; x2++) data2[i + x2] = data2[di + x2] + paeth(data2[i + x2 - bpp], data2[i + x2 - bpl], data2[i + x2 - bpp - bpl]); - } - } - return data2; -}; -UPNG.decode._paeth = function(a2, b3, c2) { - var p2 = a2 + b3 - c2, pa2 = p2 - a2, pb = p2 - b3, pc = p2 - c2; - if (pa2 * pa2 <= pb * pb && pa2 * pa2 <= pc * pc) return a2; - else if (pb * pb <= pc * pc) return b3; - return c2; -}; -UPNG.decode._IHDR = function(data2, offset, out) { - var bin = UPNG._bin; - out.width = bin.readUint(data2, offset); - offset += 4; - out.height = bin.readUint(data2, offset); - offset += 4; - out.depth = data2[offset]; - offset++; - out.ctype = data2[offset]; - offset++; - out.compress = data2[offset]; - offset++; - out.filter = data2[offset]; - offset++; - out.interlace = data2[offset]; - offset++; -}; -UPNG._bin = { - nextZero: function(data2, p2) { - while (data2[p2] != 0) p2++; - return p2; - }, - readUshort: function(buff, p2) { - return buff[p2] << 8 | buff[p2 + 1]; - }, - writeUshort: function(buff, p2, n2) { - buff[p2] = n2 >> 8 & 255; - buff[p2 + 1] = n2 & 255; - }, - readUint: function(buff, p2) { - return buff[p2] * (256 * 256 * 256) + (buff[p2 + 1] << 16 | buff[p2 + 2] << 8 | buff[p2 + 3]); - }, - writeUint: function(buff, p2, n2) { - buff[p2] = n2 >> 24 & 255; - buff[p2 + 1] = n2 >> 16 & 255; - buff[p2 + 2] = n2 >> 8 & 255; - buff[p2 + 3] = n2 & 255; - }, - readASCII: function(buff, p2, l2) { - var s = ""; - for (var i = 0; i < l2; i++) s += String.fromCharCode(buff[p2 + i]); - return s; - }, - writeASCII: function(data2, p2, s) { - for (var i = 0; i < s.length; i++) data2[p2 + i] = s.charCodeAt(i); - }, - readBytes: function(buff, p2, l2) { - var arr = []; - for (var i = 0; i < l2; i++) arr.push(buff[p2 + i]); - return arr; - }, - pad: function(n2) { - return n2.length < 2 ? "0" + n2 : n2; - }, - readUTF8: function(buff, p2, l2) { - var s = "", ns; - for (var i = 0; i < l2; i++) s += "%" + UPNG._bin.pad(buff[p2 + i].toString(16)); - try { - ns = decodeURIComponent(s); - } catch (e) { - return UPNG._bin.readASCII(buff, p2, l2); - } - return ns; - } -}; -UPNG._copyTile = function(sb, sw, sh, tb, tw, th, xoff, yoff, mode) { - var w = Math.min(sw, tw), h = Math.min(sh, th); - var si = 0, ti = 0; - for (var y2 = 0; y2 < h; y2++) - for (var x2 = 0; x2 < w; x2++) { - if (xoff >= 0 && yoff >= 0) { - si = y2 * sw + x2 << 2; - ti = (yoff + y2) * tw + xoff + x2 << 2; - } else { - si = (-yoff + y2) * sw - xoff + x2 << 2; - ti = y2 * tw + x2 << 2; - } - if (mode == 0) { - tb[ti] = sb[si]; - tb[ti + 1] = sb[si + 1]; - tb[ti + 2] = sb[si + 2]; - tb[ti + 3] = sb[si + 3]; - } else if (mode == 1) { - var fa = sb[si + 3] * (1 / 255), fr = sb[si] * fa, fg = sb[si + 1] * fa, fb = sb[si + 2] * fa; - var ba = tb[ti + 3] * (1 / 255), br = tb[ti] * ba, bg = tb[ti + 1] * ba, bb = tb[ti + 2] * ba; - var ifa = 1 - fa, oa2 = fa + ba * ifa, ioa = oa2 == 0 ? 0 : 1 / oa2; - tb[ti + 3] = 255 * oa2; - tb[ti + 0] = (fr + br * ifa) * ioa; - tb[ti + 1] = (fg + bg * ifa) * ioa; - tb[ti + 2] = (fb + bb * ifa) * ioa; - } else if (mode == 2) { - var fa = sb[si + 3], fr = sb[si], fg = sb[si + 1], fb = sb[si + 2]; - var ba = tb[ti + 3], br = tb[ti], bg = tb[ti + 1], bb = tb[ti + 2]; - if (fa == ba && fr == br && fg == bg && fb == bb) { - tb[ti] = 0; - tb[ti + 1] = 0; - tb[ti + 2] = 0; - tb[ti + 3] = 0; - } else { - tb[ti] = fr; - tb[ti + 1] = fg; - tb[ti + 2] = fb; - tb[ti + 3] = fa; - } - } else if (mode == 3) { - var fa = sb[si + 3], fr = sb[si], fg = sb[si + 1], fb = sb[si + 2]; - var ba = tb[ti + 3], br = tb[ti], bg = tb[ti + 1], bb = tb[ti + 2]; - if (fa == ba && fr == br && fg == bg && fb == bb) continue; - if (fa < 220 && ba > 20) return false; - } - } - return true; -}; - -// node_modules/three/examples/jsm/loaders/STLLoader.js -var STLLoader = class extends Loader { - constructor(manager) { - super(manager); - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(this.requestHeader); - loader.setWithCredentials(this.withCredentials); - loader.load(url, function(text2) { - try { - onLoad(scope.parse(text2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(data2) { - function isBinary(data3) { - const reader = new DataView(data3); - const face_size = 32 / 8 * 3 + 32 / 8 * 3 * 3 + 16 / 8; - const n_faces = reader.getUint32(80, true); - const expect = 80 + 32 / 8 + n_faces * face_size; - if (expect === reader.byteLength) { - return true; - } - const solid = [115, 111, 108, 105, 100]; - for (let off = 0; off < 5; off++) { - if (matchDataViewAt(solid, reader, off)) return false; - } - return true; - } - function matchDataViewAt(query, reader, offset) { - for (let i = 0, il = query.length; i < il; i++) { - if (query[i] !== reader.getUint8(offset + i)) return false; - } - return true; - } - function parseBinary(data3) { - const reader = new DataView(data3); - const faces = reader.getUint32(80, true); - let r, g2, b3, hasColors = false, colors; - let defaultR, defaultG, defaultB, alpha; - for (let index2 = 0; index2 < 80 - 10; index2++) { - if (reader.getUint32(index2, false) == 1129270351 && reader.getUint8(index2 + 4) == 82 && reader.getUint8(index2 + 5) == 61) { - hasColors = true; - colors = new Float32Array(faces * 3 * 3); - defaultR = reader.getUint8(index2 + 6) / 255; - defaultG = reader.getUint8(index2 + 7) / 255; - defaultB = reader.getUint8(index2 + 8) / 255; - alpha = reader.getUint8(index2 + 9) / 255; - } - } - const dataOffset = 84; - const faceLength = 12 * 4 + 2; - const geometry = new BufferGeometry(); - const vertices = new Float32Array(faces * 3 * 3); - const normals = new Float32Array(faces * 3 * 3); - const color = new Color(); - for (let face = 0; face < faces; face++) { - const start = dataOffset + face * faceLength; - const normalX = reader.getFloat32(start, true); - const normalY = reader.getFloat32(start + 4, true); - const normalZ = reader.getFloat32(start + 8, true); - if (hasColors) { - const packedColor = reader.getUint16(start + 48, true); - if ((packedColor & 32768) === 0) { - r = (packedColor & 31) / 31; - g2 = (packedColor >> 5 & 31) / 31; - b3 = (packedColor >> 10 & 31) / 31; - } else { - r = defaultR; - g2 = defaultG; - b3 = defaultB; - } - } - for (let i = 1; i <= 3; i++) { - const vertexstart = start + i * 12; - const componentIdx = face * 3 * 3 + (i - 1) * 3; - vertices[componentIdx] = reader.getFloat32(vertexstart, true); - vertices[componentIdx + 1] = reader.getFloat32(vertexstart + 4, true); - vertices[componentIdx + 2] = reader.getFloat32(vertexstart + 8, true); - normals[componentIdx] = normalX; - normals[componentIdx + 1] = normalY; - normals[componentIdx + 2] = normalZ; - if (hasColors) { - color.set(r, g2, b3).convertSRGBToLinear(); - colors[componentIdx] = color.r; - colors[componentIdx + 1] = color.g; - colors[componentIdx + 2] = color.b; - } - } - } - geometry.setAttribute("position", new BufferAttribute(vertices, 3)); - geometry.setAttribute("normal", new BufferAttribute(normals, 3)); - if (hasColors) { - geometry.setAttribute("color", new BufferAttribute(colors, 3)); - geometry.hasColors = true; - geometry.alpha = alpha; - } - return geometry; - } - function parseASCII(data3) { - const geometry = new BufferGeometry(); - const patternSolid = /solid([\s\S]*?)endsolid/g; - const patternFace = /facet([\s\S]*?)endfacet/g; - const patternName = /solid\s(.+)/; - let faceCounter = 0; - const patternFloat = /[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source; - const patternVertex = new RegExp("vertex" + patternFloat + patternFloat + patternFloat, "g"); - const patternNormal = new RegExp("normal" + patternFloat + patternFloat + patternFloat, "g"); - const vertices = []; - const normals = []; - const groupNames = []; - const normal = new Vector3(); - let result; - let groupCount = 0; - let startVertex = 0; - let endVertex = 0; - while ((result = patternSolid.exec(data3)) !== null) { - startVertex = endVertex; - const solid = result[0]; - const name2 = (result = patternName.exec(solid)) !== null ? result[1] : ""; - groupNames.push(name2); - while ((result = patternFace.exec(solid)) !== null) { - let vertexCountPerFace = 0; - let normalCountPerFace = 0; - const text2 = result[0]; - while ((result = patternNormal.exec(text2)) !== null) { - normal.x = parseFloat(result[1]); - normal.y = parseFloat(result[2]); - normal.z = parseFloat(result[3]); - normalCountPerFace++; - } - while ((result = patternVertex.exec(text2)) !== null) { - vertices.push(parseFloat(result[1]), parseFloat(result[2]), parseFloat(result[3])); - normals.push(normal.x, normal.y, normal.z); - vertexCountPerFace++; - endVertex++; - } - if (normalCountPerFace !== 1) { - console.error("THREE.STLLoader: Something isn't right with the normal of face number " + faceCounter); - } - if (vertexCountPerFace !== 3) { - console.error("THREE.STLLoader: Something isn't right with the vertices of face number " + faceCounter); - } - faceCounter++; - } - const start = startVertex; - const count = endVertex - startVertex; - geometry.userData.groupNames = groupNames; - geometry.addGroup(start, count, groupCount); - groupCount++; - } - geometry.setAttribute("position", new Float32BufferAttribute(vertices, 3)); - geometry.setAttribute("normal", new Float32BufferAttribute(normals, 3)); - return geometry; - } - function ensureString(buffer) { - if (typeof buffer !== "string") { - return new TextDecoder().decode(buffer); - } - return buffer; - } - function ensureBinary(buffer) { - if (typeof buffer === "string") { - const array_buffer = new Uint8Array(buffer.length); - for (let i = 0; i < buffer.length; i++) { - array_buffer[i] = buffer.charCodeAt(i) & 255; - } - return array_buffer.buffer || array_buffer; - } else { - return buffer; - } - } - const binData = ensureBinary(data2); - return isBinary(binData) ? parseBinary(binData) : parseASCII(ensureString(data2)); - } -}; - -// node_modules/three/examples/jsm/loaders/SVGLoader.js -var COLOR_SPACE_SVG = SRGBColorSpace; -var SVGLoader = class _SVGLoader extends Loader { - constructor(manager) { - super(manager); - this.defaultDPI = 90; - this.defaultUnit = "px"; - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(scope.manager); - loader.setPath(scope.path); - loader.setRequestHeader(scope.requestHeader); - loader.setWithCredentials(scope.withCredentials); - loader.load(url, function(text2) { - try { - onLoad(scope.parse(text2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(text2) { - const scope = this; - function parseNode(node, style) { - if (node.nodeType !== 1) return; - const transform2 = getNodeTransform(node); - let isDefsNode = false; - let path = null; - switch (node.nodeName) { - case "svg": - style = parseStyle(node, style); - break; - case "style": - parseCSSStylesheet(node); - break; - case "g": - style = parseStyle(node, style); - break; - case "path": - style = parseStyle(node, style); - if (node.hasAttribute("d")) path = parsePathNode(node); - break; - case "rect": - style = parseStyle(node, style); - path = parseRectNode(node); - break; - case "polygon": - style = parseStyle(node, style); - path = parsePolygonNode(node); - break; - case "polyline": - style = parseStyle(node, style); - path = parsePolylineNode(node); - break; - case "circle": - style = parseStyle(node, style); - path = parseCircleNode(node); - break; - case "ellipse": - style = parseStyle(node, style); - path = parseEllipseNode(node); - break; - case "line": - style = parseStyle(node, style); - path = parseLineNode(node); - break; - case "defs": - isDefsNode = true; - break; - case "use": - style = parseStyle(node, style); - const href = node.getAttributeNS("http://www.w3.org/1999/xlink", "href") || ""; - const usedNodeId = href.substring(1); - const usedNode = node.viewportElement.getElementById(usedNodeId); - if (usedNode) { - parseNode(usedNode, style); - } else { - console.warn("SVGLoader: 'use node' references non-existent node id: " + usedNodeId); - } - break; - default: - } - if (path) { - if (style.fill !== void 0 && style.fill !== "none") { - path.color.setStyle(style.fill, COLOR_SPACE_SVG); - } - transformPath(path, currentTransform); - paths.push(path); - path.userData = { node, style }; - } - const childNodes = node.childNodes; - for (let i = 0; i < childNodes.length; i++) { - const node2 = childNodes[i]; - if (isDefsNode && node2.nodeName !== "style" && node2.nodeName !== "defs") { - continue; - } - parseNode(node2, style); - } - if (transform2) { - transformStack.pop(); - if (transformStack.length > 0) { - currentTransform.copy(transformStack[transformStack.length - 1]); - } else { - currentTransform.identity(); - } - } - } - function parsePathNode(node) { - const path = new ShapePath2(); - const point = new Vector2(); - const control = new Vector2(); - const firstPoint = new Vector2(); - let isFirstPoint = true; - let doSetFirstPoint = false; - const d = node.getAttribute("d"); - if (d === "" || d === "none") return null; - const commands = d.match(/[a-df-z][^a-df-z]*/ig); - for (let i = 0, l2 = commands.length; i < l2; i++) { - const command = commands[i]; - const type = command.charAt(0); - const data3 = command.slice(1).trim(); - if (isFirstPoint === true) { - doSetFirstPoint = true; - isFirstPoint = false; - } - let numbers; - switch (type) { - case "M": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j += 2) { - point.x = numbers[j + 0]; - point.y = numbers[j + 1]; - control.x = point.x; - control.y = point.y; - if (j === 0) { - path.moveTo(point.x, point.y); - } else { - path.lineTo(point.x, point.y); - } - if (j === 0) firstPoint.copy(point); - } - break; - case "H": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j++) { - point.x = numbers[j]; - control.x = point.x; - control.y = point.y; - path.lineTo(point.x, point.y); - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "V": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j++) { - point.y = numbers[j]; - control.x = point.x; - control.y = point.y; - path.lineTo(point.x, point.y); - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "L": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j += 2) { - point.x = numbers[j + 0]; - point.y = numbers[j + 1]; - control.x = point.x; - control.y = point.y; - path.lineTo(point.x, point.y); - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "C": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j += 6) { - path.bezierCurveTo( - numbers[j + 0], - numbers[j + 1], - numbers[j + 2], - numbers[j + 3], - numbers[j + 4], - numbers[j + 5] - ); - control.x = numbers[j + 2]; - control.y = numbers[j + 3]; - point.x = numbers[j + 4]; - point.y = numbers[j + 5]; - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "S": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j += 4) { - path.bezierCurveTo( - getReflection(point.x, control.x), - getReflection(point.y, control.y), - numbers[j + 0], - numbers[j + 1], - numbers[j + 2], - numbers[j + 3] - ); - control.x = numbers[j + 0]; - control.y = numbers[j + 1]; - point.x = numbers[j + 2]; - point.y = numbers[j + 3]; - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "Q": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j += 4) { - path.quadraticCurveTo( - numbers[j + 0], - numbers[j + 1], - numbers[j + 2], - numbers[j + 3] - ); - control.x = numbers[j + 0]; - control.y = numbers[j + 1]; - point.x = numbers[j + 2]; - point.y = numbers[j + 3]; - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "T": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j += 2) { - const rx = getReflection(point.x, control.x); - const ry = getReflection(point.y, control.y); - path.quadraticCurveTo( - rx, - ry, - numbers[j + 0], - numbers[j + 1] - ); - control.x = rx; - control.y = ry; - point.x = numbers[j + 0]; - point.y = numbers[j + 1]; - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "A": - numbers = parseFloats(data3, [3, 4], 7); - for (let j = 0, jl = numbers.length; j < jl; j += 7) { - if (numbers[j + 5] == point.x && numbers[j + 6] == point.y) continue; - const start = point.clone(); - point.x = numbers[j + 5]; - point.y = numbers[j + 6]; - control.x = point.x; - control.y = point.y; - parseArcCommand( - path, - numbers[j], - numbers[j + 1], - numbers[j + 2], - numbers[j + 3], - numbers[j + 4], - start, - point - ); - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "m": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j += 2) { - point.x += numbers[j + 0]; - point.y += numbers[j + 1]; - control.x = point.x; - control.y = point.y; - if (j === 0) { - path.moveTo(point.x, point.y); - } else { - path.lineTo(point.x, point.y); - } - if (j === 0) firstPoint.copy(point); - } - break; - case "h": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j++) { - point.x += numbers[j]; - control.x = point.x; - control.y = point.y; - path.lineTo(point.x, point.y); - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "v": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j++) { - point.y += numbers[j]; - control.x = point.x; - control.y = point.y; - path.lineTo(point.x, point.y); - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "l": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j += 2) { - point.x += numbers[j + 0]; - point.y += numbers[j + 1]; - control.x = point.x; - control.y = point.y; - path.lineTo(point.x, point.y); - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "c": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j += 6) { - path.bezierCurveTo( - point.x + numbers[j + 0], - point.y + numbers[j + 1], - point.x + numbers[j + 2], - point.y + numbers[j + 3], - point.x + numbers[j + 4], - point.y + numbers[j + 5] - ); - control.x = point.x + numbers[j + 2]; - control.y = point.y + numbers[j + 3]; - point.x += numbers[j + 4]; - point.y += numbers[j + 5]; - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "s": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j += 4) { - path.bezierCurveTo( - getReflection(point.x, control.x), - getReflection(point.y, control.y), - point.x + numbers[j + 0], - point.y + numbers[j + 1], - point.x + numbers[j + 2], - point.y + numbers[j + 3] - ); - control.x = point.x + numbers[j + 0]; - control.y = point.y + numbers[j + 1]; - point.x += numbers[j + 2]; - point.y += numbers[j + 3]; - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "q": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j += 4) { - path.quadraticCurveTo( - point.x + numbers[j + 0], - point.y + numbers[j + 1], - point.x + numbers[j + 2], - point.y + numbers[j + 3] - ); - control.x = point.x + numbers[j + 0]; - control.y = point.y + numbers[j + 1]; - point.x += numbers[j + 2]; - point.y += numbers[j + 3]; - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "t": - numbers = parseFloats(data3); - for (let j = 0, jl = numbers.length; j < jl; j += 2) { - const rx = getReflection(point.x, control.x); - const ry = getReflection(point.y, control.y); - path.quadraticCurveTo( - rx, - ry, - point.x + numbers[j + 0], - point.y + numbers[j + 1] - ); - control.x = rx; - control.y = ry; - point.x = point.x + numbers[j + 0]; - point.y = point.y + numbers[j + 1]; - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "a": - numbers = parseFloats(data3, [3, 4], 7); - for (let j = 0, jl = numbers.length; j < jl; j += 7) { - if (numbers[j + 5] == 0 && numbers[j + 6] == 0) continue; - const start = point.clone(); - point.x += numbers[j + 5]; - point.y += numbers[j + 6]; - control.x = point.x; - control.y = point.y; - parseArcCommand( - path, - numbers[j], - numbers[j + 1], - numbers[j + 2], - numbers[j + 3], - numbers[j + 4], - start, - point - ); - if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point); - } - break; - case "Z": - case "z": - path.currentPath.autoClose = true; - if (path.currentPath.curves.length > 0) { - point.copy(firstPoint); - path.currentPath.currentPoint.copy(point); - isFirstPoint = true; - } - break; - default: - console.warn(command); - } - doSetFirstPoint = false; - } - return path; - } - function parseCSSStylesheet(node) { - if (!node.sheet || !node.sheet.cssRules || !node.sheet.cssRules.length) return; - for (let i = 0; i < node.sheet.cssRules.length; i++) { - const stylesheet = node.sheet.cssRules[i]; - if (stylesheet.type !== 1) continue; - const selectorList = stylesheet.selectorText.split(/,/gm).filter(Boolean).map((i2) => i2.trim()); - for (let j = 0; j < selectorList.length; j++) { - const definitions = Object.fromEntries( - Object.entries(stylesheet.style).filter(([, v]) => v !== "") - ); - stylesheets[selectorList[j]] = Object.assign( - stylesheets[selectorList[j]] || {}, - definitions - ); - } - } - } - function parseArcCommand(path, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, start, end) { - if (rx == 0 || ry == 0) { - path.lineTo(end.x, end.y); - return; - } - x_axis_rotation = x_axis_rotation * Math.PI / 180; - rx = Math.abs(rx); - ry = Math.abs(ry); - const dx2 = (start.x - end.x) / 2; - const dy2 = (start.y - end.y) / 2; - const x1p = Math.cos(x_axis_rotation) * dx2 + Math.sin(x_axis_rotation) * dy2; - const y1p = -Math.sin(x_axis_rotation) * dx2 + Math.cos(x_axis_rotation) * dy2; - let rxs = rx * rx; - let rys = ry * ry; - const x1ps = x1p * x1p; - const y1ps = y1p * y1p; - const cr = x1ps / rxs + y1ps / rys; - if (cr > 1) { - const s = Math.sqrt(cr); - rx = s * rx; - ry = s * ry; - rxs = rx * rx; - rys = ry * ry; - } - const dq = rxs * y1ps + rys * x1ps; - const pq = (rxs * rys - dq) / dq; - let q2 = Math.sqrt(Math.max(0, pq)); - if (large_arc_flag === sweep_flag) q2 = -q2; - const cxp = q2 * rx * y1p / ry; - const cyp = -q2 * ry * x1p / rx; - const cx = Math.cos(x_axis_rotation) * cxp - Math.sin(x_axis_rotation) * cyp + (start.x + end.x) / 2; - const cy = Math.sin(x_axis_rotation) * cxp + Math.cos(x_axis_rotation) * cyp + (start.y + end.y) / 2; - const theta = svgAngle(1, 0, (x1p - cxp) / rx, (y1p - cyp) / ry); - const delta = svgAngle((x1p - cxp) / rx, (y1p - cyp) / ry, (-x1p - cxp) / rx, (-y1p - cyp) / ry) % (Math.PI * 2); - path.currentPath.absellipse(cx, cy, rx, ry, theta, theta + delta, sweep_flag === 0, x_axis_rotation); - } - function svgAngle(ux, uy, vx, vy) { - const dot = ux * vx + uy * vy; - const len = Math.sqrt(ux * ux + uy * uy) * Math.sqrt(vx * vx + vy * vy); - let ang = Math.acos(Math.max(-1, Math.min(1, dot / len))); - if (ux * vy - uy * vx < 0) ang = -ang; - return ang; - } - function parseRectNode(node) { - const x2 = parseFloatWithUnits(node.getAttribute("x") || 0); - const y2 = parseFloatWithUnits(node.getAttribute("y") || 0); - const rx = parseFloatWithUnits(node.getAttribute("rx") || node.getAttribute("ry") || 0); - const ry = parseFloatWithUnits(node.getAttribute("ry") || node.getAttribute("rx") || 0); - const w = parseFloatWithUnits(node.getAttribute("width")); - const h = parseFloatWithUnits(node.getAttribute("height")); - const bci = 1 - 0.551915024494; - const path = new ShapePath2(); - path.moveTo(x2 + rx, y2); - path.lineTo(x2 + w - rx, y2); - if (rx !== 0 || ry !== 0) { - path.bezierCurveTo( - x2 + w - rx * bci, - y2, - x2 + w, - y2 + ry * bci, - x2 + w, - y2 + ry - ); - } - path.lineTo(x2 + w, y2 + h - ry); - if (rx !== 0 || ry !== 0) { - path.bezierCurveTo( - x2 + w, - y2 + h - ry * bci, - x2 + w - rx * bci, - y2 + h, - x2 + w - rx, - y2 + h - ); - } - path.lineTo(x2 + rx, y2 + h); - if (rx !== 0 || ry !== 0) { - path.bezierCurveTo( - x2 + rx * bci, - y2 + h, - x2, - y2 + h - ry * bci, - x2, - y2 + h - ry - ); - } - path.lineTo(x2, y2 + ry); - if (rx !== 0 || ry !== 0) { - path.bezierCurveTo(x2, y2 + ry * bci, x2 + rx * bci, y2, x2 + rx, y2); - } - return path; - } - function parsePolygonNode(node) { - function iterator(match, a2, b3) { - const x2 = parseFloatWithUnits(a2); - const y2 = parseFloatWithUnits(b3); - if (index2 === 0) { - path.moveTo(x2, y2); - } else { - path.lineTo(x2, y2); - } - index2++; - } - const regex = /([+-]?\d*\.?\d+(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g; - const path = new ShapePath2(); - let index2 = 0; - node.getAttribute("points").replace(regex, iterator); - path.currentPath.autoClose = true; - return path; - } - function parsePolylineNode(node) { - function iterator(match, a2, b3) { - const x2 = parseFloatWithUnits(a2); - const y2 = parseFloatWithUnits(b3); - if (index2 === 0) { - path.moveTo(x2, y2); - } else { - path.lineTo(x2, y2); - } - index2++; - } - const regex = /([+-]?\d*\.?\d+(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g; - const path = new ShapePath2(); - let index2 = 0; - node.getAttribute("points").replace(regex, iterator); - path.currentPath.autoClose = false; - return path; - } - function parseCircleNode(node) { - const x2 = parseFloatWithUnits(node.getAttribute("cx") || 0); - const y2 = parseFloatWithUnits(node.getAttribute("cy") || 0); - const r = parseFloatWithUnits(node.getAttribute("r") || 0); - const subpath = new Path(); - subpath.absarc(x2, y2, r, 0, Math.PI * 2); - const path = new ShapePath2(); - path.subPaths.push(subpath); - return path; - } - function parseEllipseNode(node) { - const x2 = parseFloatWithUnits(node.getAttribute("cx") || 0); - const y2 = parseFloatWithUnits(node.getAttribute("cy") || 0); - const rx = parseFloatWithUnits(node.getAttribute("rx") || 0); - const ry = parseFloatWithUnits(node.getAttribute("ry") || 0); - const subpath = new Path(); - subpath.absellipse(x2, y2, rx, ry, 0, Math.PI * 2); - const path = new ShapePath2(); - path.subPaths.push(subpath); - return path; - } - function parseLineNode(node) { - const x1 = parseFloatWithUnits(node.getAttribute("x1") || 0); - const y1 = parseFloatWithUnits(node.getAttribute("y1") || 0); - const x2 = parseFloatWithUnits(node.getAttribute("x2") || 0); - const y2 = parseFloatWithUnits(node.getAttribute("y2") || 0); - const path = new ShapePath2(); - path.moveTo(x1, y1); - path.lineTo(x2, y2); - path.currentPath.autoClose = false; - return path; - } - function parseStyle(node, style) { - style = Object.assign({}, style); - let stylesheetStyles = {}; - if (node.hasAttribute("class")) { - const classSelectors = node.getAttribute("class").split(/\s/).filter(Boolean).map((i) => i.trim()); - for (let i = 0; i < classSelectors.length; i++) { - stylesheetStyles = Object.assign(stylesheetStyles, stylesheets["." + classSelectors[i]]); - } - } - if (node.hasAttribute("id")) { - stylesheetStyles = Object.assign(stylesheetStyles, stylesheets["#" + node.getAttribute("id")]); - } - function addStyle(svgName, jsName, adjustFunction) { - if (adjustFunction === void 0) adjustFunction = function copy(v) { - if (v.startsWith("url")) console.warn("SVGLoader: url access in attributes is not implemented."); - return v; - }; - if (node.hasAttribute(svgName)) style[jsName] = adjustFunction(node.getAttribute(svgName)); - if (stylesheetStyles[svgName]) style[jsName] = adjustFunction(stylesheetStyles[svgName]); - if (node.style && node.style[svgName] !== "") style[jsName] = adjustFunction(node.style[svgName]); - } - function clamp2(v) { - return Math.max(0, Math.min(1, parseFloatWithUnits(v))); - } - function positive(v) { - return Math.max(0, parseFloatWithUnits(v)); - } - addStyle("fill", "fill"); - addStyle("fill-opacity", "fillOpacity", clamp2); - addStyle("fill-rule", "fillRule"); - addStyle("opacity", "opacity", clamp2); - addStyle("stroke", "stroke"); - addStyle("stroke-opacity", "strokeOpacity", clamp2); - addStyle("stroke-width", "strokeWidth", positive); - addStyle("stroke-linejoin", "strokeLineJoin"); - addStyle("stroke-linecap", "strokeLineCap"); - addStyle("stroke-miterlimit", "strokeMiterLimit", positive); - addStyle("visibility", "visibility"); - return style; - } - function getReflection(a2, b3) { - return a2 - (b3 - a2); - } - function parseFloats(input, flags, stride) { - if (typeof input !== "string") { - throw new TypeError("Invalid input: " + typeof input); - } - const RE = { - SEPARATOR: /[ \t\r\n\,.\-+]/, - WHITESPACE: /[ \t\r\n]/, - DIGIT: /[\d]/, - SIGN: /[-+]/, - POINT: /\./, - COMMA: /,/, - EXP: /e/i, - FLAGS: /[01]/ - }; - const SEP = 0; - const INT = 1; - const FLOAT = 2; - const EXP = 3; - let state = SEP; - let seenComma = true; - let number = "", exponent = ""; - const result = []; - function throwSyntaxError(current2, i, partial2) { - const error = new SyntaxError('Unexpected character "' + current2 + '" at index ' + i + "."); - error.partial = partial2; - throw error; - } - function newNumber() { - if (number !== "") { - if (exponent === "") result.push(Number(number)); - else result.push(Number(number) * Math.pow(10, Number(exponent))); - } - number = ""; - exponent = ""; - } - let current; - const length2 = input.length; - for (let i = 0; i < length2; i++) { - current = input[i]; - if (Array.isArray(flags) && flags.includes(result.length % stride) && RE.FLAGS.test(current)) { - state = INT; - number = current; - newNumber(); - continue; - } - if (state === SEP) { - if (RE.WHITESPACE.test(current)) { - continue; - } - if (RE.DIGIT.test(current) || RE.SIGN.test(current)) { - state = INT; - number = current; - continue; - } - if (RE.POINT.test(current)) { - state = FLOAT; - number = current; - continue; - } - if (RE.COMMA.test(current)) { - if (seenComma) { - throwSyntaxError(current, i, result); - } - seenComma = true; - } - } - if (state === INT) { - if (RE.DIGIT.test(current)) { - number += current; - continue; - } - if (RE.POINT.test(current)) { - number += current; - state = FLOAT; - continue; - } - if (RE.EXP.test(current)) { - state = EXP; - continue; - } - if (RE.SIGN.test(current) && number.length === 1 && RE.SIGN.test(number[0])) { - throwSyntaxError(current, i, result); - } - } - if (state === FLOAT) { - if (RE.DIGIT.test(current)) { - number += current; - continue; - } - if (RE.EXP.test(current)) { - state = EXP; - continue; - } - if (RE.POINT.test(current) && number[number.length - 1] === ".") { - throwSyntaxError(current, i, result); - } - } - if (state === EXP) { - if (RE.DIGIT.test(current)) { - exponent += current; - continue; - } - if (RE.SIGN.test(current)) { - if (exponent === "") { - exponent += current; - continue; - } - if (exponent.length === 1 && RE.SIGN.test(exponent)) { - throwSyntaxError(current, i, result); - } - } - } - if (RE.WHITESPACE.test(current)) { - newNumber(); - state = SEP; - seenComma = false; - } else if (RE.COMMA.test(current)) { - newNumber(); - state = SEP; - seenComma = true; - } else if (RE.SIGN.test(current)) { - newNumber(); - state = INT; - number = current; - } else if (RE.POINT.test(current)) { - newNumber(); - state = FLOAT; - number = current; - } else { - throwSyntaxError(current, i, result); - } - } - newNumber(); - return result; - } - const units = ["mm", "cm", "in", "pt", "pc", "px"]; - const unitConversion = { - "mm": { - "mm": 1, - "cm": 0.1, - "in": 1 / 25.4, - "pt": 72 / 25.4, - "pc": 6 / 25.4, - "px": -1 - }, - "cm": { - "mm": 10, - "cm": 1, - "in": 1 / 2.54, - "pt": 72 / 2.54, - "pc": 6 / 2.54, - "px": -1 - }, - "in": { - "mm": 25.4, - "cm": 2.54, - "in": 1, - "pt": 72, - "pc": 6, - "px": -1 - }, - "pt": { - "mm": 25.4 / 72, - "cm": 2.54 / 72, - "in": 1 / 72, - "pt": 1, - "pc": 6 / 72, - "px": -1 - }, - "pc": { - "mm": 25.4 / 6, - "cm": 2.54 / 6, - "in": 1 / 6, - "pt": 72 / 6, - "pc": 1, - "px": -1 - }, - "px": { - "px": 1 - } - }; - function parseFloatWithUnits(string) { - let theUnit = "px"; - if (typeof string === "string" || string instanceof String) { - for (let i = 0, n2 = units.length; i < n2; i++) { - const u = units[i]; - if (string.endsWith(u)) { - theUnit = u; - string = string.substring(0, string.length - u.length); - break; - } - } - } - let scale2 = void 0; - if (theUnit === "px" && scope.defaultUnit !== "px") { - scale2 = unitConversion["in"][scope.defaultUnit] / scope.defaultDPI; - } else { - scale2 = unitConversion[theUnit][scope.defaultUnit]; - if (scale2 < 0) { - scale2 = unitConversion[theUnit]["in"] * scope.defaultDPI; - } - } - return scale2 * parseFloat(string); - } - function getNodeTransform(node) { - if (!(node.hasAttribute("transform") || node.nodeName === "use" && (node.hasAttribute("x") || node.hasAttribute("y")))) { - return null; - } - const transform2 = parseNodeTransform(node); - if (transformStack.length > 0) { - transform2.premultiply(transformStack[transformStack.length - 1]); - } - currentTransform.copy(transform2); - transformStack.push(transform2); - return transform2; - } - function parseNodeTransform(node) { - const transform2 = new Matrix3(); - const currentTransform2 = tempTransform0; - if (node.nodeName === "use" && (node.hasAttribute("x") || node.hasAttribute("y"))) { - const tx = parseFloatWithUnits(node.getAttribute("x")); - const ty = parseFloatWithUnits(node.getAttribute("y")); - transform2.translate(tx, ty); - } - if (node.hasAttribute("transform")) { - const transformsTexts = node.getAttribute("transform").split(")"); - for (let tIndex = transformsTexts.length - 1; tIndex >= 0; tIndex--) { - const transformText = transformsTexts[tIndex].trim(); - if (transformText === "") continue; - const openParPos = transformText.indexOf("("); - const closeParPos = transformText.length; - if (openParPos > 0 && openParPos < closeParPos) { - const transformType = transformText.slice(0, openParPos); - const array = parseFloats(transformText.slice(openParPos + 1)); - currentTransform2.identity(); - switch (transformType) { - case "translate": - if (array.length >= 1) { - const tx = array[0]; - let ty = 0; - if (array.length >= 2) { - ty = array[1]; - } - currentTransform2.translate(tx, ty); - } - break; - case "rotate": - if (array.length >= 1) { - let angle = 0; - let cx = 0; - let cy = 0; - angle = array[0] * Math.PI / 180; - if (array.length >= 3) { - cx = array[1]; - cy = array[2]; - } - tempTransform1.makeTranslation(-cx, -cy); - tempTransform2.makeRotation(angle); - tempTransform3.multiplyMatrices(tempTransform2, tempTransform1); - tempTransform1.makeTranslation(cx, cy); - currentTransform2.multiplyMatrices(tempTransform1, tempTransform3); - } - break; - case "scale": - if (array.length >= 1) { - const scaleX = array[0]; - let scaleY = scaleX; - if (array.length >= 2) { - scaleY = array[1]; - } - currentTransform2.scale(scaleX, scaleY); - } - break; - case "skewX": - if (array.length === 1) { - currentTransform2.set( - 1, - Math.tan(array[0] * Math.PI / 180), - 0, - 0, - 1, - 0, - 0, - 0, - 1 - ); - } - break; - case "skewY": - if (array.length === 1) { - currentTransform2.set( - 1, - 0, - 0, - Math.tan(array[0] * Math.PI / 180), - 1, - 0, - 0, - 0, - 1 - ); - } - break; - case "matrix": - if (array.length === 6) { - currentTransform2.set( - array[0], - array[2], - array[4], - array[1], - array[3], - array[5], - 0, - 0, - 1 - ); - } - break; - } - } - transform2.premultiply(currentTransform2); - } - } - return transform2; - } - function transformPath(path, m) { - function transfVec2(v2) { - tempV3.set(v2.x, v2.y, 1).applyMatrix3(m); - v2.set(tempV3.x, tempV3.y); - } - function transfEllipseGeneric(curve) { - const a2 = curve.xRadius; - const b3 = curve.yRadius; - const cosTheta = Math.cos(curve.aRotation); - const sinTheta = Math.sin(curve.aRotation); - const v12 = new Vector3(a2 * cosTheta, a2 * sinTheta, 0); - const v2 = new Vector3(-b3 * sinTheta, b3 * cosTheta, 0); - const f1 = v12.applyMatrix3(m); - const f2 = v2.applyMatrix3(m); - const mF = tempTransform0.set( - f1.x, - f2.x, - 0, - f1.y, - f2.y, - 0, - 0, - 0, - 1 - ); - const mFInv = tempTransform1.copy(mF).invert(); - const mFInvT = tempTransform2.copy(mFInv).transpose(); - const mQ = mFInvT.multiply(mFInv); - const mQe = mQ.elements; - const ed = eigenDecomposition(mQe[0], mQe[1], mQe[4]); - const rt1sqrt = Math.sqrt(ed.rt1); - const rt2sqrt = Math.sqrt(ed.rt2); - curve.xRadius = 1 / rt1sqrt; - curve.yRadius = 1 / rt2sqrt; - curve.aRotation = Math.atan2(ed.sn, ed.cs); - const isFullEllipse = (curve.aEndAngle - curve.aStartAngle) % (2 * Math.PI) < Number.EPSILON; - if (!isFullEllipse) { - const mDsqrt = tempTransform1.set( - rt1sqrt, - 0, - 0, - 0, - rt2sqrt, - 0, - 0, - 0, - 1 - ); - const mRT = tempTransform2.set( - ed.cs, - ed.sn, - 0, - -ed.sn, - ed.cs, - 0, - 0, - 0, - 1 - ); - const mDRF = mDsqrt.multiply(mRT).multiply(mF); - const transformAngle = (phi) => { - const { x: cosR, y: sinR } = new Vector3(Math.cos(phi), Math.sin(phi), 0).applyMatrix3(mDRF); - return Math.atan2(sinR, cosR); - }; - curve.aStartAngle = transformAngle(curve.aStartAngle); - curve.aEndAngle = transformAngle(curve.aEndAngle); - if (isTransformFlipped(m)) { - curve.aClockwise = !curve.aClockwise; - } - } - } - function transfEllipseNoSkew(curve) { - const sx = getTransformScaleX(m); - const sy = getTransformScaleY(m); - curve.xRadius *= sx; - curve.yRadius *= sy; - const theta = sx > Number.EPSILON ? Math.atan2(m.elements[1], m.elements[0]) : Math.atan2(-m.elements[3], m.elements[4]); - curve.aRotation += theta; - if (isTransformFlipped(m)) { - curve.aStartAngle *= -1; - curve.aEndAngle *= -1; - curve.aClockwise = !curve.aClockwise; - } - } - const subPaths = path.subPaths; - for (let i = 0, n2 = subPaths.length; i < n2; i++) { - const subPath = subPaths[i]; - const curves = subPath.curves; - for (let j = 0; j < curves.length; j++) { - const curve = curves[j]; - if (curve.isLineCurve) { - transfVec2(curve.v1); - transfVec2(curve.v2); - } else if (curve.isCubicBezierCurve) { - transfVec2(curve.v0); - transfVec2(curve.v1); - transfVec2(curve.v2); - transfVec2(curve.v3); - } else if (curve.isQuadraticBezierCurve) { - transfVec2(curve.v0); - transfVec2(curve.v1); - transfVec2(curve.v2); - } else if (curve.isEllipseCurve) { - tempV2.set(curve.aX, curve.aY); - transfVec2(tempV2); - curve.aX = tempV2.x; - curve.aY = tempV2.y; - if (isTransformSkewed(m)) { - transfEllipseGeneric(curve); - } else { - transfEllipseNoSkew(curve); - } - } - } - } - } - function isTransformFlipped(m) { - const te2 = m.elements; - return te2[0] * te2[4] - te2[1] * te2[3] < 0; - } - function isTransformSkewed(m) { - const te2 = m.elements; - const basisDot = te2[0] * te2[3] + te2[1] * te2[4]; - if (basisDot === 0) return false; - const sx = getTransformScaleX(m); - const sy = getTransformScaleY(m); - return Math.abs(basisDot / (sx * sy)) > Number.EPSILON; - } - function getTransformScaleX(m) { - const te2 = m.elements; - return Math.sqrt(te2[0] * te2[0] + te2[1] * te2[1]); - } - function getTransformScaleY(m) { - const te2 = m.elements; - return Math.sqrt(te2[3] * te2[3] + te2[4] * te2[4]); - } - function eigenDecomposition(A2, B2, C2) { - let rt1, rt2, cs, sn, t3; - const sm = A2 + C2; - const df = A2 - C2; - const rt = Math.sqrt(df * df + 4 * B2 * B2); - if (sm > 0) { - rt1 = 0.5 * (sm + rt); - t3 = 1 / rt1; - rt2 = A2 * t3 * C2 - B2 * t3 * B2; - } else if (sm < 0) { - rt2 = 0.5 * (sm - rt); - } else { - rt1 = 0.5 * rt; - rt2 = -0.5 * rt; - } - if (df > 0) { - cs = df + rt; - } else { - cs = df - rt; - } - if (Math.abs(cs) > 2 * Math.abs(B2)) { - t3 = -2 * B2 / cs; - sn = 1 / Math.sqrt(1 + t3 * t3); - cs = t3 * sn; - } else if (Math.abs(B2) === 0) { - cs = 1; - sn = 0; - } else { - t3 = -0.5 * cs / B2; - cs = 1 / Math.sqrt(1 + t3 * t3); - sn = t3 * cs; - } - if (df > 0) { - t3 = cs; - cs = -sn; - sn = t3; - } - return { rt1, rt2, cs, sn }; - } - const paths = []; - const stylesheets = {}; - const transformStack = []; - const tempTransform0 = new Matrix3(); - const tempTransform1 = new Matrix3(); - const tempTransform2 = new Matrix3(); - const tempTransform3 = new Matrix3(); - const tempV2 = new Vector2(); - const tempV3 = new Vector3(); - const currentTransform = new Matrix3(); - const xml = new DOMParser().parseFromString(text2, "image/svg+xml"); - parseNode(xml.documentElement, { - fill: "#000", - fillOpacity: 1, - strokeOpacity: 1, - strokeWidth: 1, - strokeLineJoin: "miter", - strokeLineCap: "butt", - strokeMiterLimit: 4 - }); - const data2 = { paths, xml: xml.documentElement }; - return data2; - } - static createShapes(shapePath) { - const BIGNUMBER = 999999999; - const IntersectionLocationType = { - ORIGIN: 0, - DESTINATION: 1, - BETWEEN: 2, - LEFT: 3, - RIGHT: 4, - BEHIND: 5, - BEYOND: 6 - }; - const classifyResult = { - loc: IntersectionLocationType.ORIGIN, - t: 0 - }; - function findEdgeIntersection(a0, a1, b0, b1) { - const x1 = a0.x; - const x2 = a1.x; - const x3 = b0.x; - const x4 = b1.x; - const y1 = a0.y; - const y2 = a1.y; - const y3 = b0.y; - const y4 = b1.y; - const nom1 = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3); - const nom2 = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3); - const denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1); - const t1 = nom1 / denom; - const t22 = nom2 / denom; - if (denom === 0 && nom1 !== 0 || t1 <= 0 || t1 >= 1 || t22 < 0 || t22 > 1) { - return null; - } else if (nom1 === 0 && denom === 0) { - for (let i = 0; i < 2; i++) { - classifyPoint(i === 0 ? b0 : b1, a0, a1); - if (classifyResult.loc == IntersectionLocationType.ORIGIN) { - const point = i === 0 ? b0 : b1; - return { x: point.x, y: point.y, t: classifyResult.t }; - } else if (classifyResult.loc == IntersectionLocationType.BETWEEN) { - const x5 = +(x1 + classifyResult.t * (x2 - x1)).toPrecision(10); - const y5 = +(y1 + classifyResult.t * (y2 - y1)).toPrecision(10); - return { x: x5, y: y5, t: classifyResult.t }; - } - } - return null; - } else { - for (let i = 0; i < 2; i++) { - classifyPoint(i === 0 ? b0 : b1, a0, a1); - if (classifyResult.loc == IntersectionLocationType.ORIGIN) { - const point = i === 0 ? b0 : b1; - return { x: point.x, y: point.y, t: classifyResult.t }; - } - } - const x5 = +(x1 + t1 * (x2 - x1)).toPrecision(10); - const y5 = +(y1 + t1 * (y2 - y1)).toPrecision(10); - return { x: x5, y: y5, t: t1 }; - } - } - function classifyPoint(p2, edgeStart, edgeEnd) { - const ax = edgeEnd.x - edgeStart.x; - const ay = edgeEnd.y - edgeStart.y; - const bx = p2.x - edgeStart.x; - const by = p2.y - edgeStart.y; - const sa = ax * by - bx * ay; - if (p2.x === edgeStart.x && p2.y === edgeStart.y) { - classifyResult.loc = IntersectionLocationType.ORIGIN; - classifyResult.t = 0; - return; - } - if (p2.x === edgeEnd.x && p2.y === edgeEnd.y) { - classifyResult.loc = IntersectionLocationType.DESTINATION; - classifyResult.t = 1; - return; - } - if (sa < -Number.EPSILON) { - classifyResult.loc = IntersectionLocationType.LEFT; - return; - } - if (sa > Number.EPSILON) { - classifyResult.loc = IntersectionLocationType.RIGHT; - return; - } - if (ax * bx < 0 || ay * by < 0) { - classifyResult.loc = IntersectionLocationType.BEHIND; - return; - } - if (Math.sqrt(ax * ax + ay * ay) < Math.sqrt(bx * bx + by * by)) { - classifyResult.loc = IntersectionLocationType.BEYOND; - return; - } - let t3; - if (ax !== 0) { - t3 = bx / ax; - } else { - t3 = by / ay; - } - classifyResult.loc = IntersectionLocationType.BETWEEN; - classifyResult.t = t3; - } - function getIntersections(path1, path2) { - const intersectionsRaw = []; - const intersections = []; - for (let index2 = 1; index2 < path1.length; index2++) { - const path1EdgeStart = path1[index2 - 1]; - const path1EdgeEnd = path1[index2]; - for (let index22 = 1; index22 < path2.length; index22++) { - const path2EdgeStart = path2[index22 - 1]; - const path2EdgeEnd = path2[index22]; - const intersection = findEdgeIntersection(path1EdgeStart, path1EdgeEnd, path2EdgeStart, path2EdgeEnd); - if (intersection !== null && intersectionsRaw.find((i) => i.t <= intersection.t + Number.EPSILON && i.t >= intersection.t - Number.EPSILON) === void 0) { - intersectionsRaw.push(intersection); - intersections.push(new Vector2(intersection.x, intersection.y)); - } - } - } - return intersections; - } - function getScanlineIntersections(scanline, boundingBox, paths) { - const center = new Vector2(); - boundingBox.getCenter(center); - const allIntersections = []; - paths.forEach((path) => { - if (path.boundingBox.containsPoint(center)) { - const intersections = getIntersections(scanline, path.points); - intersections.forEach((p2) => { - allIntersections.push({ identifier: path.identifier, isCW: path.isCW, point: p2 }); - }); - } - }); - allIntersections.sort((i1, i2) => { - return i1.point.x - i2.point.x; - }); - return allIntersections; - } - function isHoleTo(simplePath, allPaths, scanlineMinX2, scanlineMaxX2, _fillRule) { - if (_fillRule === null || _fillRule === void 0 || _fillRule === "") { - _fillRule = "nonzero"; - } - const centerBoundingBox = new Vector2(); - simplePath.boundingBox.getCenter(centerBoundingBox); - const scanline = [new Vector2(scanlineMinX2, centerBoundingBox.y), new Vector2(scanlineMaxX2, centerBoundingBox.y)]; - const scanlineIntersections = getScanlineIntersections(scanline, simplePath.boundingBox, allPaths); - scanlineIntersections.sort((i1, i2) => { - return i1.point.x - i2.point.x; - }); - const baseIntersections = []; - const otherIntersections = []; - scanlineIntersections.forEach((i2) => { - if (i2.identifier === simplePath.identifier) { - baseIntersections.push(i2); - } else { - otherIntersections.push(i2); - } - }); - const firstXOfPath = baseIntersections[0].point.x; - const stack = []; - let i = 0; - while (i < otherIntersections.length && otherIntersections[i].point.x < firstXOfPath) { - if (stack.length > 0 && stack[stack.length - 1] === otherIntersections[i].identifier) { - stack.pop(); - } else { - stack.push(otherIntersections[i].identifier); - } - i++; - } - stack.push(simplePath.identifier); - if (_fillRule === "evenodd") { - const isHole = stack.length % 2 === 0 ? true : false; - const isHoleFor = stack[stack.length - 2]; - return { identifier: simplePath.identifier, isHole, for: isHoleFor }; - } else if (_fillRule === "nonzero") { - let isHole = true; - let isHoleFor = null; - let lastCWValue = null; - for (let i2 = 0; i2 < stack.length; i2++) { - const identifier = stack[i2]; - if (isHole) { - lastCWValue = allPaths[identifier].isCW; - isHole = false; - isHoleFor = identifier; - } else if (lastCWValue !== allPaths[identifier].isCW) { - lastCWValue = allPaths[identifier].isCW; - isHole = true; - } - } - return { identifier: simplePath.identifier, isHole, for: isHoleFor }; - } else { - console.warn('fill-rule: "' + _fillRule + '" is currently not implemented.'); - } - } - let scanlineMinX = BIGNUMBER; - let scanlineMaxX = -BIGNUMBER; - let simplePaths = shapePath.subPaths.map((p2) => { - const points = p2.getPoints(); - let maxY = -BIGNUMBER; - let minY = BIGNUMBER; - let maxX = -BIGNUMBER; - let minX = BIGNUMBER; - for (let i = 0; i < points.length; i++) { - const p3 = points[i]; - if (p3.y > maxY) { - maxY = p3.y; - } - if (p3.y < minY) { - minY = p3.y; - } - if (p3.x > maxX) { - maxX = p3.x; - } - if (p3.x < minX) { - minX = p3.x; - } - } - if (scanlineMaxX <= maxX) { - scanlineMaxX = maxX + 1; - } - if (scanlineMinX >= minX) { - scanlineMinX = minX - 1; - } - return { curves: p2.curves, points, isCW: ShapeUtils.isClockWise(points), identifier: -1, boundingBox: new Box2(new Vector2(minX, minY), new Vector2(maxX, maxY)) }; - }); - simplePaths = simplePaths.filter((sp) => sp.points.length > 1); - for (let identifier = 0; identifier < simplePaths.length; identifier++) { - simplePaths[identifier].identifier = identifier; - } - const isAHole = simplePaths.map((p2) => isHoleTo(p2, simplePaths, scanlineMinX, scanlineMaxX, shapePath.userData ? shapePath.userData.style.fillRule : void 0)); - const shapesToReturn = []; - simplePaths.forEach((p2) => { - const amIAHole = isAHole[p2.identifier]; - if (!amIAHole.isHole) { - const shape = new Shape(); - shape.curves = p2.curves; - const holes = isAHole.filter((h) => h.isHole && h.for === p2.identifier); - holes.forEach((h) => { - const hole = simplePaths[h.identifier]; - const path = new Path(); - path.curves = hole.curves; - shape.holes.push(path); - }); - shapesToReturn.push(shape); - } - }); - return shapesToReturn; - } - static getStrokeStyle(width2, color, lineJoin, lineCap, miterLimit) { - width2 = width2 !== void 0 ? width2 : 1; - color = color !== void 0 ? color : "#000"; - lineJoin = lineJoin !== void 0 ? lineJoin : "miter"; - lineCap = lineCap !== void 0 ? lineCap : "butt"; - miterLimit = miterLimit !== void 0 ? miterLimit : 4; - return { - strokeColor: color, - strokeWidth: width2, - strokeLineJoin: lineJoin, - strokeLineCap: lineCap, - strokeMiterLimit: miterLimit - }; - } - static pointsToStroke(points, style, arcDivisions, minDistance) { - const vertices = []; - const normals = []; - const uvs = []; - if (_SVGLoader.pointsToStrokeWithBuffers(points, style, arcDivisions, minDistance, vertices, normals, uvs) === 0) { - return null; - } - const geometry = new BufferGeometry(); - geometry.setAttribute("position", new Float32BufferAttribute(vertices, 3)); - geometry.setAttribute("normal", new Float32BufferAttribute(normals, 3)); - geometry.setAttribute("uv", new Float32BufferAttribute(uvs, 2)); - return geometry; - } - static pointsToStrokeWithBuffers(points, style, arcDivisions, minDistance, vertices, normals, uvs, vertexOffset) { - const tempV2_1 = new Vector2(); - const tempV2_2 = new Vector2(); - const tempV2_3 = new Vector2(); - const tempV2_4 = new Vector2(); - const tempV2_5 = new Vector2(); - const tempV2_6 = new Vector2(); - const tempV2_7 = new Vector2(); - const lastPointL = new Vector2(); - const lastPointR = new Vector2(); - const point0L = new Vector2(); - const point0R = new Vector2(); - const currentPointL = new Vector2(); - const currentPointR = new Vector2(); - const nextPointL = new Vector2(); - const nextPointR = new Vector2(); - const innerPoint = new Vector2(); - const outerPoint = new Vector2(); - arcDivisions = arcDivisions !== void 0 ? arcDivisions : 12; - minDistance = minDistance !== void 0 ? minDistance : 1e-3; - vertexOffset = vertexOffset !== void 0 ? vertexOffset : 0; - points = removeDuplicatedPoints(points); - const numPoints = points.length; - if (numPoints < 2) return 0; - const isClosed = points[0].equals(points[numPoints - 1]); - let currentPoint; - let previousPoint = points[0]; - let nextPoint; - const strokeWidth2 = style.strokeWidth / 2; - const deltaU = 1 / (numPoints - 1); - let u0 = 0, u1; - let innerSideModified; - let joinIsOnLeftSide; - let isMiter; - let initialJoinIsOnLeftSide = false; - let numVertices = 0; - let currentCoordinate = vertexOffset * 3; - let currentCoordinateUV = vertexOffset * 2; - getNormal(points[0], points[1], tempV2_1).multiplyScalar(strokeWidth2); - lastPointL.copy(points[0]).sub(tempV2_1); - lastPointR.copy(points[0]).add(tempV2_1); - point0L.copy(lastPointL); - point0R.copy(lastPointR); - for (let iPoint = 1; iPoint < numPoints; iPoint++) { - currentPoint = points[iPoint]; - if (iPoint === numPoints - 1) { - if (isClosed) { - nextPoint = points[1]; - } else nextPoint = void 0; - } else { - nextPoint = points[iPoint + 1]; - } - const normal1 = tempV2_1; - getNormal(previousPoint, currentPoint, normal1); - tempV2_3.copy(normal1).multiplyScalar(strokeWidth2); - currentPointL.copy(currentPoint).sub(tempV2_3); - currentPointR.copy(currentPoint).add(tempV2_3); - u1 = u0 + deltaU; - innerSideModified = false; - if (nextPoint !== void 0) { - getNormal(currentPoint, nextPoint, tempV2_2); - tempV2_3.copy(tempV2_2).multiplyScalar(strokeWidth2); - nextPointL.copy(currentPoint).sub(tempV2_3); - nextPointR.copy(currentPoint).add(tempV2_3); - joinIsOnLeftSide = true; - tempV2_3.subVectors(nextPoint, previousPoint); - if (normal1.dot(tempV2_3) < 0) { - joinIsOnLeftSide = false; - } - if (iPoint === 1) initialJoinIsOnLeftSide = joinIsOnLeftSide; - tempV2_3.subVectors(nextPoint, currentPoint); - tempV2_3.normalize(); - const dot = Math.abs(normal1.dot(tempV2_3)); - if (dot > Number.EPSILON) { - const miterSide = strokeWidth2 / dot; - tempV2_3.multiplyScalar(-miterSide); - tempV2_4.subVectors(currentPoint, previousPoint); - tempV2_5.copy(tempV2_4).setLength(miterSide).add(tempV2_3); - innerPoint.copy(tempV2_5).negate(); - const miterLength2 = tempV2_5.length(); - const segmentLengthPrev = tempV2_4.length(); - tempV2_4.divideScalar(segmentLengthPrev); - tempV2_6.subVectors(nextPoint, currentPoint); - const segmentLengthNext = tempV2_6.length(); - tempV2_6.divideScalar(segmentLengthNext); - if (tempV2_4.dot(innerPoint) < segmentLengthPrev && tempV2_6.dot(innerPoint) < segmentLengthNext) { - innerSideModified = true; - } - outerPoint.copy(tempV2_5).add(currentPoint); - innerPoint.add(currentPoint); - isMiter = false; - if (innerSideModified) { - if (joinIsOnLeftSide) { - nextPointR.copy(innerPoint); - currentPointR.copy(innerPoint); - } else { - nextPointL.copy(innerPoint); - currentPointL.copy(innerPoint); - } - } else { - makeSegmentTriangles(); - } - switch (style.strokeLineJoin) { - case "bevel": - makeSegmentWithBevelJoin(joinIsOnLeftSide, innerSideModified, u1); - break; - case "round": - createSegmentTrianglesWithMiddleSection(joinIsOnLeftSide, innerSideModified); - if (joinIsOnLeftSide) { - makeCircularSector(currentPoint, currentPointL, nextPointL, u1, 0); - } else { - makeCircularSector(currentPoint, nextPointR, currentPointR, u1, 1); - } - break; - case "miter": - case "miter-clip": - default: - const miterFraction = strokeWidth2 * style.strokeMiterLimit / miterLength2; - if (miterFraction < 1) { - if (style.strokeLineJoin !== "miter-clip") { - makeSegmentWithBevelJoin(joinIsOnLeftSide, innerSideModified, u1); - break; - } else { - createSegmentTrianglesWithMiddleSection(joinIsOnLeftSide, innerSideModified); - if (joinIsOnLeftSide) { - tempV2_6.subVectors(outerPoint, currentPointL).multiplyScalar(miterFraction).add(currentPointL); - tempV2_7.subVectors(outerPoint, nextPointL).multiplyScalar(miterFraction).add(nextPointL); - addVertex(currentPointL, u1, 0); - addVertex(tempV2_6, u1, 0); - addVertex(currentPoint, u1, 0.5); - addVertex(currentPoint, u1, 0.5); - addVertex(tempV2_6, u1, 0); - addVertex(tempV2_7, u1, 0); - addVertex(currentPoint, u1, 0.5); - addVertex(tempV2_7, u1, 0); - addVertex(nextPointL, u1, 0); - } else { - tempV2_6.subVectors(outerPoint, currentPointR).multiplyScalar(miterFraction).add(currentPointR); - tempV2_7.subVectors(outerPoint, nextPointR).multiplyScalar(miterFraction).add(nextPointR); - addVertex(currentPointR, u1, 1); - addVertex(tempV2_6, u1, 1); - addVertex(currentPoint, u1, 0.5); - addVertex(currentPoint, u1, 0.5); - addVertex(tempV2_6, u1, 1); - addVertex(tempV2_7, u1, 1); - addVertex(currentPoint, u1, 0.5); - addVertex(tempV2_7, u1, 1); - addVertex(nextPointR, u1, 1); - } - } - } else { - if (innerSideModified) { - if (joinIsOnLeftSide) { - addVertex(lastPointR, u0, 1); - addVertex(lastPointL, u0, 0); - addVertex(outerPoint, u1, 0); - addVertex(lastPointR, u0, 1); - addVertex(outerPoint, u1, 0); - addVertex(innerPoint, u1, 1); - } else { - addVertex(lastPointR, u0, 1); - addVertex(lastPointL, u0, 0); - addVertex(outerPoint, u1, 1); - addVertex(lastPointL, u0, 0); - addVertex(innerPoint, u1, 0); - addVertex(outerPoint, u1, 1); - } - if (joinIsOnLeftSide) { - nextPointL.copy(outerPoint); - } else { - nextPointR.copy(outerPoint); - } - } else { - if (joinIsOnLeftSide) { - addVertex(currentPointL, u1, 0); - addVertex(outerPoint, u1, 0); - addVertex(currentPoint, u1, 0.5); - addVertex(currentPoint, u1, 0.5); - addVertex(outerPoint, u1, 0); - addVertex(nextPointL, u1, 0); - } else { - addVertex(currentPointR, u1, 1); - addVertex(outerPoint, u1, 1); - addVertex(currentPoint, u1, 0.5); - addVertex(currentPoint, u1, 0.5); - addVertex(outerPoint, u1, 1); - addVertex(nextPointR, u1, 1); - } - } - isMiter = true; - } - break; - } - } else { - makeSegmentTriangles(); - } - } else { - makeSegmentTriangles(); - } - if (!isClosed && iPoint === numPoints - 1) { - addCapGeometry(points[0], point0L, point0R, joinIsOnLeftSide, true, u0); - } - u0 = u1; - previousPoint = currentPoint; - lastPointL.copy(nextPointL); - lastPointR.copy(nextPointR); - } - if (!isClosed) { - addCapGeometry(currentPoint, currentPointL, currentPointR, joinIsOnLeftSide, false, u1); - } else if (innerSideModified && vertices) { - let lastOuter = outerPoint; - let lastInner = innerPoint; - if (initialJoinIsOnLeftSide !== joinIsOnLeftSide) { - lastOuter = innerPoint; - lastInner = outerPoint; - } - if (joinIsOnLeftSide) { - if (isMiter || initialJoinIsOnLeftSide) { - lastInner.toArray(vertices, 0 * 3); - lastInner.toArray(vertices, 3 * 3); - if (isMiter) { - lastOuter.toArray(vertices, 1 * 3); - } - } - } else { - if (isMiter || !initialJoinIsOnLeftSide) { - lastInner.toArray(vertices, 1 * 3); - lastInner.toArray(vertices, 3 * 3); - if (isMiter) { - lastOuter.toArray(vertices, 0 * 3); - } - } - } - } - return numVertices; - function getNormal(p1, p2, result) { - result.subVectors(p2, p1); - return result.set(-result.y, result.x).normalize(); - } - function addVertex(position2, u, v) { - if (vertices) { - vertices[currentCoordinate] = position2.x; - vertices[currentCoordinate + 1] = position2.y; - vertices[currentCoordinate + 2] = 0; - if (normals) { - normals[currentCoordinate] = 0; - normals[currentCoordinate + 1] = 0; - normals[currentCoordinate + 2] = 1; - } - currentCoordinate += 3; - if (uvs) { - uvs[currentCoordinateUV] = u; - uvs[currentCoordinateUV + 1] = v; - currentCoordinateUV += 2; - } - } - numVertices += 3; - } - function makeCircularSector(center, p1, p2, u, v) { - tempV2_1.copy(p1).sub(center).normalize(); - tempV2_2.copy(p2).sub(center).normalize(); - let angle = Math.PI; - const dot = tempV2_1.dot(tempV2_2); - if (Math.abs(dot) < 1) angle = Math.abs(Math.acos(dot)); - angle /= arcDivisions; - tempV2_3.copy(p1); - for (let i = 0, il = arcDivisions - 1; i < il; i++) { - tempV2_4.copy(tempV2_3).rotateAround(center, angle); - addVertex(tempV2_3, u, v); - addVertex(tempV2_4, u, v); - addVertex(center, u, 0.5); - tempV2_3.copy(tempV2_4); - } - addVertex(tempV2_4, u, v); - addVertex(p2, u, v); - addVertex(center, u, 0.5); - } - function makeSegmentTriangles() { - addVertex(lastPointR, u0, 1); - addVertex(lastPointL, u0, 0); - addVertex(currentPointL, u1, 0); - addVertex(lastPointR, u0, 1); - addVertex(currentPointL, u1, 0); - addVertex(currentPointR, u1, 1); - } - function makeSegmentWithBevelJoin(joinIsOnLeftSide2, innerSideModified2, u) { - if (innerSideModified2) { - if (joinIsOnLeftSide2) { - addVertex(lastPointR, u0, 1); - addVertex(lastPointL, u0, 0); - addVertex(currentPointL, u1, 0); - addVertex(lastPointR, u0, 1); - addVertex(currentPointL, u1, 0); - addVertex(innerPoint, u1, 1); - addVertex(currentPointL, u, 0); - addVertex(nextPointL, u, 0); - addVertex(innerPoint, u, 0.5); - } else { - addVertex(lastPointR, u0, 1); - addVertex(lastPointL, u0, 0); - addVertex(currentPointR, u1, 1); - addVertex(lastPointL, u0, 0); - addVertex(innerPoint, u1, 0); - addVertex(currentPointR, u1, 1); - addVertex(currentPointR, u, 1); - addVertex(innerPoint, u, 0); - addVertex(nextPointR, u, 1); - } - } else { - if (joinIsOnLeftSide2) { - addVertex(currentPointL, u, 0); - addVertex(nextPointL, u, 0); - addVertex(currentPoint, u, 0.5); - } else { - addVertex(currentPointR, u, 1); - addVertex(nextPointR, u, 0); - addVertex(currentPoint, u, 0.5); - } - } - } - function createSegmentTrianglesWithMiddleSection(joinIsOnLeftSide2, innerSideModified2) { - if (innerSideModified2) { - if (joinIsOnLeftSide2) { - addVertex(lastPointR, u0, 1); - addVertex(lastPointL, u0, 0); - addVertex(currentPointL, u1, 0); - addVertex(lastPointR, u0, 1); - addVertex(currentPointL, u1, 0); - addVertex(innerPoint, u1, 1); - addVertex(currentPointL, u0, 0); - addVertex(currentPoint, u1, 0.5); - addVertex(innerPoint, u1, 1); - addVertex(currentPoint, u1, 0.5); - addVertex(nextPointL, u0, 0); - addVertex(innerPoint, u1, 1); - } else { - addVertex(lastPointR, u0, 1); - addVertex(lastPointL, u0, 0); - addVertex(currentPointR, u1, 1); - addVertex(lastPointL, u0, 0); - addVertex(innerPoint, u1, 0); - addVertex(currentPointR, u1, 1); - addVertex(currentPointR, u0, 1); - addVertex(innerPoint, u1, 0); - addVertex(currentPoint, u1, 0.5); - addVertex(currentPoint, u1, 0.5); - addVertex(innerPoint, u1, 0); - addVertex(nextPointR, u0, 1); - } - } - } - function addCapGeometry(center, p1, p2, joinIsOnLeftSide2, start, u) { - switch (style.strokeLineCap) { - case "round": - if (start) { - makeCircularSector(center, p2, p1, u, 0.5); - } else { - makeCircularSector(center, p1, p2, u, 0.5); - } - break; - case "square": - if (start) { - tempV2_1.subVectors(p1, center); - tempV2_2.set(tempV2_1.y, -tempV2_1.x); - tempV2_3.addVectors(tempV2_1, tempV2_2).add(center); - tempV2_4.subVectors(tempV2_2, tempV2_1).add(center); - if (joinIsOnLeftSide2) { - tempV2_3.toArray(vertices, 1 * 3); - tempV2_4.toArray(vertices, 0 * 3); - tempV2_4.toArray(vertices, 3 * 3); - } else { - tempV2_3.toArray(vertices, 1 * 3); - uvs[3 * 2 + 1] === 1 ? tempV2_4.toArray(vertices, 3 * 3) : tempV2_3.toArray(vertices, 3 * 3); - tempV2_4.toArray(vertices, 0 * 3); - } - } else { - tempV2_1.subVectors(p2, center); - tempV2_2.set(tempV2_1.y, -tempV2_1.x); - tempV2_3.addVectors(tempV2_1, tempV2_2).add(center); - tempV2_4.subVectors(tempV2_2, tempV2_1).add(center); - const vl = vertices.length; - if (joinIsOnLeftSide2) { - tempV2_3.toArray(vertices, vl - 1 * 3); - tempV2_4.toArray(vertices, vl - 2 * 3); - tempV2_4.toArray(vertices, vl - 4 * 3); - } else { - tempV2_4.toArray(vertices, vl - 2 * 3); - tempV2_3.toArray(vertices, vl - 1 * 3); - tempV2_4.toArray(vertices, vl - 4 * 3); - } - } - break; - case "butt": - default: - break; - } - } - function removeDuplicatedPoints(points2) { - let dupPoints = false; - for (let i = 1, n2 = points2.length - 1; i < n2; i++) { - if (points2[i].distanceTo(points2[i + 1]) < minDistance) { - dupPoints = true; - break; - } - } - if (!dupPoints) return points2; - const newPoints = []; - newPoints.push(points2[0]); - for (let i = 1, n2 = points2.length - 1; i < n2; i++) { - if (points2[i].distanceTo(points2[i + 1]) >= minDistance) { - newPoints.push(points2[i]); - } - } - newPoints.push(points2[points2.length - 1]); - return newPoints; - } - } -}; - -// node_modules/three/examples/jsm/loaders/TDSLoader.js -var TDSLoader = class extends Loader { - constructor(manager) { - super(manager); - this.debug = false; - this.group = null; - this.materials = []; - this.meshes = []; - } - /** - * Load 3ds file from url. - * - * @method load - * @param {[type]} url URL for the file. - * @param {Function} onLoad onLoad callback, receives group Object3D as argument. - * @param {Function} onProgress onProgress callback. - * @param {Function} onError onError callback. - */ - load(url, onLoad, onProgress, onError) { - const scope = this; - const path = this.path === "" ? LoaderUtils.extractUrlBase(url) : this.path; - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(this.requestHeader); - loader.setWithCredentials(this.withCredentials); - loader.load(url, function(data2) { - try { - onLoad(scope.parse(data2, path)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - /** - * Parse arraybuffer data and load 3ds file. - * - * @method parse - * @param {ArrayBuffer} arraybuffer Arraybuffer data to be loaded. - * @param {String} path Path for external resources. - * @return {Group} Group loaded from 3ds file. - */ - parse(arraybuffer, path) { - this.group = new Group(); - this.materials = []; - this.meshes = []; - this.readFile(arraybuffer, path); - for (let i = 0; i < this.meshes.length; i++) { - this.group.add(this.meshes[i]); - } - return this.group; - } - /** - * Decode file content to read 3ds data. - * - * @method readFile - * @param {ArrayBuffer} arraybuffer Arraybuffer data to be loaded. - * @param {String} path Path for external resources. - */ - readFile(arraybuffer, path) { - const data2 = new DataView(arraybuffer); - const chunk = new Chunk(data2, 0, this.debugMessage); - if (chunk.id === MLIBMAGIC || chunk.id === CMAGIC || chunk.id === M3DMAGIC) { - let next = chunk.readChunk(); - while (next) { - if (next.id === M3D_VERSION) { - const version = next.readDWord(); - this.debugMessage("3DS file version: " + version); - } else if (next.id === MDATA) { - this.readMeshData(next, path); - } else { - this.debugMessage("Unknown main chunk: " + next.hexId); - } - next = chunk.readChunk(); - } - } - this.debugMessage("Parsed " + this.meshes.length + " meshes"); - } - /** - * Read mesh data chunk. - * - * @method readMeshData - * @param {Chunk} chunk to read mesh from - * @param {String} path Path for external resources. - */ - readMeshData(chunk, path) { - let next = chunk.readChunk(); - while (next) { - if (next.id === MESH_VERSION) { - const version = +next.readDWord(); - this.debugMessage("Mesh Version: " + version); - } else if (next.id === MASTER_SCALE) { - const scale2 = next.readFloat(); - this.debugMessage("Master scale: " + scale2); - this.group.scale.set(scale2, scale2, scale2); - } else if (next.id === NAMED_OBJECT) { - this.debugMessage("Named Object"); - this.readNamedObject(next); - } else if (next.id === MAT_ENTRY) { - this.debugMessage("Material"); - this.readMaterialEntry(next, path); - } else { - this.debugMessage("Unknown MDATA chunk: " + next.hexId); - } - next = chunk.readChunk(); - } - } - /** - * Read named object chunk. - * - * @method readNamedObject - * @param {Chunk} chunk Chunk in use. - */ - readNamedObject(chunk) { - const name2 = chunk.readString(); - let next = chunk.readChunk(); - while (next) { - if (next.id === N_TRI_OBJECT) { - const mesh = this.readMesh(next); - mesh.name = name2; - this.meshes.push(mesh); - } else { - this.debugMessage("Unknown named object chunk: " + next.hexId); - } - next = chunk.readChunk(); - } - } - /** - * Read material data chunk and add it to the material list. - * - * @method readMaterialEntry - * @param {Chunk} chunk Chunk in use. - * @param {String} path Path for external resources. - */ - readMaterialEntry(chunk, path) { - let next = chunk.readChunk(); - const material = new MeshPhongMaterial(); - while (next) { - if (next.id === MAT_NAME) { - material.name = next.readString(); - this.debugMessage(" Name: " + material.name); - } else if (next.id === MAT_WIRE) { - this.debugMessage(" Wireframe"); - material.wireframe = true; - } else if (next.id === MAT_WIRE_SIZE) { - const value2 = next.readByte(); - material.wireframeLinewidth = value2; - this.debugMessage(" Wireframe Thickness: " + value2); - } else if (next.id === MAT_TWO_SIDE) { - material.side = DoubleSide; - this.debugMessage(" DoubleSided"); - } else if (next.id === MAT_ADDITIVE) { - this.debugMessage(" Additive Blending"); - material.blending = AdditiveBlending; - } else if (next.id === MAT_DIFFUSE) { - this.debugMessage(" Diffuse Color"); - material.color = this.readColor(next); - } else if (next.id === MAT_SPECULAR) { - this.debugMessage(" Specular Color"); - material.specular = this.readColor(next); - } else if (next.id === MAT_AMBIENT) { - this.debugMessage(" Ambient color"); - material.color = this.readColor(next); - } else if (next.id === MAT_SHININESS) { - const shininess = this.readPercentage(next); - material.shininess = shininess * 100; - this.debugMessage(" Shininess : " + shininess); - } else if (next.id === MAT_TRANSPARENCY) { - const transparency = this.readPercentage(next); - material.opacity = 1 - transparency; - this.debugMessage(" Transparency : " + transparency); - material.transparent = material.opacity < 1 ? true : false; - } else if (next.id === MAT_TEXMAP) { - this.debugMessage(" ColorMap"); - material.map = this.readMap(next, path); - } else if (next.id === MAT_BUMPMAP) { - this.debugMessage(" BumpMap"); - material.bumpMap = this.readMap(next, path); - } else if (next.id === MAT_OPACMAP) { - this.debugMessage(" OpacityMap"); - material.alphaMap = this.readMap(next, path); - } else if (next.id === MAT_SPECMAP) { - this.debugMessage(" SpecularMap"); - material.specularMap = this.readMap(next, path); - } else { - this.debugMessage(" Unknown material chunk: " + next.hexId); - } - next = chunk.readChunk(); - } - this.materials[material.name] = material; - } - /** - * Read mesh data chunk. - * - * @method readMesh - * @param {Chunk} chunk Chunk in use. - * @return {Mesh} The parsed mesh. - */ - readMesh(chunk) { - let next = chunk.readChunk(); - const geometry = new BufferGeometry(); - const material = new MeshPhongMaterial(); - const mesh = new Mesh(geometry, material); - mesh.name = "mesh"; - while (next) { - if (next.id === POINT_ARRAY) { - const points = next.readWord(); - this.debugMessage(" Vertex: " + points); - const vertices = []; - for (let i = 0; i < points; i++) { - vertices.push(next.readFloat()); - vertices.push(next.readFloat()); - vertices.push(next.readFloat()); - } - geometry.setAttribute("position", new Float32BufferAttribute(vertices, 3)); - } else if (next.id === FACE_ARRAY) { - this.readFaceArray(next, mesh); - } else if (next.id === TEX_VERTS) { - const texels = next.readWord(); - this.debugMessage(" UV: " + texels); - const uvs = []; - for (let i = 0; i < texels; i++) { - uvs.push(next.readFloat()); - uvs.push(next.readFloat()); - } - geometry.setAttribute("uv", new Float32BufferAttribute(uvs, 2)); - } else if (next.id === MESH_MATRIX) { - this.debugMessage(" Tranformation Matrix (TODO)"); - const values2 = []; - for (let i = 0; i < 12; i++) { - values2[i] = next.readFloat(); - } - const matrix3 = new Matrix4(); - matrix3.elements[0] = values2[0]; - matrix3.elements[1] = values2[6]; - matrix3.elements[2] = values2[3]; - matrix3.elements[3] = values2[9]; - matrix3.elements[4] = values2[2]; - matrix3.elements[5] = values2[8]; - matrix3.elements[6] = values2[5]; - matrix3.elements[7] = values2[11]; - matrix3.elements[8] = values2[1]; - matrix3.elements[9] = values2[7]; - matrix3.elements[10] = values2[4]; - matrix3.elements[11] = values2[10]; - matrix3.elements[12] = 0; - matrix3.elements[13] = 0; - matrix3.elements[14] = 0; - matrix3.elements[15] = 1; - matrix3.transpose(); - const inverse2 = new Matrix4(); - inverse2.copy(matrix3).invert(); - geometry.applyMatrix4(inverse2); - matrix3.decompose(mesh.position, mesh.quaternion, mesh.scale); - } else { - this.debugMessage(" Unknown mesh chunk: " + next.hexId); - } - next = chunk.readChunk(); - } - geometry.computeVertexNormals(); - return mesh; - } - /** - * Read face array data chunk. - * - * @method readFaceArray - * @param {Chunk} chunk Chunk in use. - * @param {Mesh} mesh Mesh to be filled with the data read. - */ - readFaceArray(chunk, mesh) { - const faces = chunk.readWord(); - this.debugMessage(" Faces: " + faces); - const index2 = []; - for (let i = 0; i < faces; ++i) { - index2.push(chunk.readWord(), chunk.readWord(), chunk.readWord()); - chunk.readWord(); - } - mesh.geometry.setIndex(index2); - let materialIndex = 0; - let start = 0; - while (!chunk.endOfChunk) { - const subchunk = chunk.readChunk(); - if (subchunk.id === MSH_MAT_GROUP) { - this.debugMessage(" Material Group"); - const group = this.readMaterialGroup(subchunk); - const count = group.index.length * 3; - mesh.geometry.addGroup(start, count, materialIndex); - start += count; - materialIndex++; - const material = this.materials[group.name]; - if (Array.isArray(mesh.material) === false) mesh.material = []; - if (material !== void 0) { - mesh.material.push(material); - } - } else { - this.debugMessage(" Unknown face array chunk: " + subchunk.hexId); - } - } - if (mesh.material.length === 1) mesh.material = mesh.material[0]; - } - /** - * Read texture map data chunk. - * - * @method readMap - * @param {Chunk} chunk Chunk in use. - * @param {String} path Path for external resources. - * @return {Texture} Texture read from this data chunk. - */ - readMap(chunk, path) { - let next = chunk.readChunk(); - let texture = {}; - const loader = new TextureLoader(this.manager); - loader.setPath(this.resourcePath || path).setCrossOrigin(this.crossOrigin); - while (next) { - if (next.id === MAT_MAPNAME) { - const name2 = next.readString(); - texture = loader.load(name2); - this.debugMessage(" File: " + path + name2); - } else if (next.id === MAT_MAP_UOFFSET) { - texture.offset.x = next.readFloat(); - this.debugMessage(" OffsetX: " + texture.offset.x); - } else if (next.id === MAT_MAP_VOFFSET) { - texture.offset.y = next.readFloat(); - this.debugMessage(" OffsetY: " + texture.offset.y); - } else if (next.id === MAT_MAP_USCALE) { - texture.repeat.x = next.readFloat(); - this.debugMessage(" RepeatX: " + texture.repeat.x); - } else if (next.id === MAT_MAP_VSCALE) { - texture.repeat.y = next.readFloat(); - this.debugMessage(" RepeatY: " + texture.repeat.y); - } else { - this.debugMessage(" Unknown map chunk: " + next.hexId); - } - next = chunk.readChunk(); - } - return texture; - } - /** - * Read material group data chunk. - * - * @method readMaterialGroup - * @param {Chunk} chunk Chunk in use. - * @return {Object} Object with name and index of the object. - */ - readMaterialGroup(chunk) { - const name2 = chunk.readString(); - const numFaces = chunk.readWord(); - this.debugMessage(" Name: " + name2); - this.debugMessage(" Faces: " + numFaces); - const index2 = []; - for (let i = 0; i < numFaces; ++i) { - index2.push(chunk.readWord()); - } - return { name: name2, index: index2 }; - } - /** - * Read a color value. - * - * @method readColor - * @param {Chunk} chunk Chunk. - * @return {Color} Color value read.. - */ - readColor(chunk) { - const subChunk = chunk.readChunk(); - const color = new Color(); - if (subChunk.id === COLOR_24 || subChunk.id === LIN_COLOR_24) { - const r = subChunk.readByte(); - const g2 = subChunk.readByte(); - const b3 = subChunk.readByte(); - color.setRGB(r / 255, g2 / 255, b3 / 255); - this.debugMessage(" Color: " + color.r + ", " + color.g + ", " + color.b); - } else if (subChunk.id === COLOR_F || subChunk.id === LIN_COLOR_F) { - const r = subChunk.readFloat(); - const g2 = subChunk.readFloat(); - const b3 = subChunk.readFloat(); - color.setRGB(r, g2, b3); - this.debugMessage(" Color: " + color.r + ", " + color.g + ", " + color.b); - } else { - this.debugMessage(" Unknown color chunk: " + subChunk.hexId); - } - return color; - } - /** - * Read percentage value. - * - * @method readPercentage - * @param {Chunk} chunk Chunk to read data from. - * @return {Number} Data read from the dataview. - */ - readPercentage(chunk) { - const subChunk = chunk.readChunk(); - switch (subChunk.id) { - case INT_PERCENTAGE: - return subChunk.readShort() / 100; - break; - case FLOAT_PERCENTAGE: - return subChunk.readFloat(); - break; - default: - this.debugMessage(" Unknown percentage chunk: " + subChunk.hexId); - return 0; - } - } - /** - * Print debug message to the console. - * - * Is controlled by a flag to show or hide debug messages. - * - * @method debugMessage - * @param {Object} message Debug message to print to the console. - */ - debugMessage(message) { - if (this.debug) { - console.log(message); - } - } -}; -var Chunk = class _Chunk { - /** - * Create a new chunk - * - * @class Chunk - * @param {DataView} data DataView to read from. - * @param {Number} position in data. - * @param {Function} debugMessage logging callback. - */ - constructor(data2, position2, debugMessage) { - this.data = data2; - this.offset = position2; - this.position = position2; - this.debugMessage = debugMessage; - if (this.debugMessage instanceof Function) { - this.debugMessage = function() { - }; - } - this.id = this.readWord(); - this.size = this.readDWord(); - this.end = this.offset + this.size; - if (this.end > data2.byteLength) { - this.debugMessage("Bad chunk size for chunk at " + position2); - } - } - /** - * read a sub cchunk. - * - * @method readChunk - * @return {Chunk | null} next sub chunk - */ - readChunk() { - if (this.endOfChunk) { - return null; - } - try { - const next = new _Chunk(this.data, this.position, this.debugMessage); - this.position += next.size; - return next; - } catch (e) { - this.debugMessage("Unable to read chunk at " + this.position); - return null; - } - } - /** - * return the ID of this chunk as Hex - * - * @method idToString - * @return {String} hex-string of id - */ - get hexId() { - return this.id.toString(16); - } - get endOfChunk() { - return this.position >= this.end; - } - /** - * Read byte value. - * - * @method readByte - * @return {Number} Data read from the dataview. - */ - readByte() { - const v = this.data.getUint8(this.position, true); - this.position += 1; - return v; - } - /** - * Read 32 bit float value. - * - * @method readFloat - * @return {Number} Data read from the dataview. - */ - readFloat() { - try { - const v = this.data.getFloat32(this.position, true); - this.position += 4; - return v; - } catch (e) { - this.debugMessage(e + " " + this.position + " " + this.data.byteLength); - return 0; - } - } - /** - * Read 32 bit signed integer value. - * - * @method readInt - * @return {Number} Data read from the dataview. - */ - readInt() { - const v = this.data.getInt32(this.position, true); - this.position += 4; - return v; - } - /** - * Read 16 bit signed integer value. - * - * @method readShort - * @return {Number} Data read from the dataview. - */ - readShort() { - const v = this.data.getInt16(this.position, true); - this.position += 2; - return v; - } - /** - * Read 64 bit unsigned integer value. - * - * @method readDWord - * @return {Number} Data read from the dataview. - */ - readDWord() { - const v = this.data.getUint32(this.position, true); - this.position += 4; - return v; - } - /** - * Read 32 bit unsigned integer value. - * - * @method readWord - * @return {Number} Data read from the dataview. - */ - readWord() { - const v = this.data.getUint16(this.position, true); - this.position += 2; - return v; - } - /** - * Read NULL terminated ASCII string value from chunk-pos. - * - * @method readString - * @return {String} Data read from the dataview. - */ - readString() { - let s = ""; - let c2 = this.readByte(); - while (c2) { - s += String.fromCharCode(c2); - c2 = this.readByte(); - } - return s; - } -}; -var M3DMAGIC = 19789; -var MLIBMAGIC = 15786; -var CMAGIC = 49725; -var M3D_VERSION = 2; -var COLOR_F = 16; -var COLOR_24 = 17; -var LIN_COLOR_24 = 18; -var LIN_COLOR_F = 19; -var INT_PERCENTAGE = 48; -var FLOAT_PERCENTAGE = 49; -var MDATA = 15677; -var MESH_VERSION = 15678; -var MASTER_SCALE = 256; -var MAT_ENTRY = 45055; -var MAT_NAME = 40960; -var MAT_AMBIENT = 40976; -var MAT_DIFFUSE = 40992; -var MAT_SPECULAR = 41008; -var MAT_SHININESS = 41024; -var MAT_TRANSPARENCY = 41040; -var MAT_TWO_SIDE = 41089; -var MAT_ADDITIVE = 41091; -var MAT_WIRE = 41093; -var MAT_WIRE_SIZE = 41095; -var MAT_TEXMAP = 41472; -var MAT_OPACMAP = 41488; -var MAT_BUMPMAP = 41520; -var MAT_SPECMAP = 41476; -var MAT_MAPNAME = 41728; -var MAT_MAP_USCALE = 41812; -var MAT_MAP_VSCALE = 41814; -var MAT_MAP_UOFFSET = 41816; -var MAT_MAP_VOFFSET = 41818; -var NAMED_OBJECT = 16384; -var N_TRI_OBJECT = 16640; -var POINT_ARRAY = 16656; -var FACE_ARRAY = 16672; -var MSH_MAT_GROUP = 16688; -var TEX_VERTS = 16704; -var MESH_MATRIX = 16736; - -// node_modules/three/examples/jsm/libs/utif.module.js -var UTIF2 = {}; -(function() { - "use strict"; - var W = function a1() { - function W2(p2) { - this.message = "JPEG error: " + p2; - } - W2.prototype = new Error(); - W2.prototype.name = "JpegError"; - W2.constructor = W2; - return W2; - }(), ak = function ag() { - var p2 = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]), t3 = 4017, ac = 799, ah = 3406, ao = 2276, ar = 1567, ai = 3784, s = 5793, ad = 2896; - function ak2(Q3) { - if (Q3 == null) Q3 = {}; - if (Q3.w == null) Q3.w = -1; - this.V = Q3.n; - this.N = Q3.w; - } - function a5(Q3, h) { - var f = 0, G = [], n2, E2, a3 = 16, F2; - while (a3 > 0 && !Q3[a3 - 1]) { - a3--; - } - G.push({ children: [], index: 0 }); - var C2 = G[0]; - for (n2 = 0; n2 < a3; n2++) { - for (E2 = 0; E2 < Q3[n2]; E2++) { - C2 = G.pop(); - C2.children[C2.index] = h[f]; - while (C2.index > 0) { - C2 = G.pop(); - } - C2.index++; - G.push(C2); - while (G.length <= n2) { - G.push(F2 = { children: [], index: 0 }); - C2.children[C2.index] = F2.children; - C2 = F2; - } - f++; - } - if (n2 + 1 < a3) { - G.push(F2 = { children: [], index: 0 }); - C2.children[C2.index] = F2.children; - C2 = F2; - } - } - return G[0].children; - } - function a2(Q3, h, f) { - return 64 * ((Q3.P + 1) * h + f); - } - function a7(Q3, h, f, G, n2, E2, a3, C2, F2, d) { - if (d == null) d = false; - var T = f.m, U = f.Z, z = h, J = 0, V = 0, r = 0, D = 0, a8, q2 = 0, X2, O, _, N, e, K, x2 = 0, k2, g2, R4, c2; - function Y2() { - if (V > 0) { - V--; - return J >> V & 1; - } - J = Q3[h++]; - if (J === 255) { - var I2 = Q3[h++]; - if (I2) { - if (I2 === 220 && d) { - h += 2; - var l2 = Z2(Q3, h); - h += 2; - if (l2 > 0 && l2 !== f.s) { - throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data", l2); - } - } else if (I2 === 217) { - if (d) { - var M = q2 * 8; - if (M > 0 && M < f.s / 10) { - throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter", M); - } - } - throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data"); - } - throw new W("unexpected marker"); - } - } - V = 7; - return J >>> 7; - } - function u(I2) { - var l2 = I2; - while (true) { - l2 = l2[Y2()]; - switch (typeof l2) { - case "number": - return l2; - case "object": - continue; - } - throw new W("invalid huffman sequence"); - } - } - function m(I2) { - var e2 = 0; - while (I2 > 0) { - e2 = e2 << 1 | Y2(); - I2--; - } - return e2; - } - function j(I2) { - if (I2 === 1) { - return Y2() === 1 ? 1 : -1; - } - var e2 = m(I2); - if (e2 >= 1 << I2 - 1) { - return e2; - } - return e2 + (-1 << I2) + 1; - } - function v(X3, I2) { - var l2 = u(X3.J), M = l2 === 0 ? 0 : j(l2), N2 = 1; - X3.D[I2] = X3.Q += M; - while (N2 < 64) { - var S = u(X3.i), i = S & 15, A2 = S >> 4; - if (i === 0) { - if (A2 < 15) { - break; - } - N2 += 16; - continue; - } - N2 += A2; - var o = p2[N2]; - X3.D[I2 + o] = j(i); - N2++; - } - } - function $2(X3, I2) { - var l2 = u(X3.J), M = l2 === 0 ? 0 : j(l2) << F2; - X3.D[I2] = X3.Q += M; - } - function b3(X3, I2) { - X3.D[I2] |= Y2() << F2; - } - function P(X3, I2) { - if (r > 0) { - r--; - return; - } - var N2 = E2, l2 = a3; - while (N2 <= l2) { - var M = u(X3.i), S = M & 15, i = M >> 4; - if (S === 0) { - if (i < 15) { - r = m(i) + (1 << i) - 1; - break; - } - N2 += 16; - continue; - } - N2 += i; - var A2 = p2[N2]; - X3.D[I2 + A2] = j(S) * (1 << F2); - N2++; - } - } - function a4(X3, I2) { - var N2 = E2, l2 = a3, M = 0, S, i; - while (N2 <= l2) { - var A2 = I2 + p2[N2], o = X3.D[A2] < 0 ? -1 : 1; - switch (D) { - case 0: - i = u(X3.i); - S = i & 15; - M = i >> 4; - if (S === 0) { - if (M < 15) { - r = m(M) + (1 << M); - D = 4; - } else { - M = 16; - D = 1; - } - } else { - if (S !== 1) { - throw new W("invalid ACn encoding"); - } - a8 = j(S); - D = M ? 2 : 3; - } - continue; - case 1: - case 2: - if (X3.D[A2]) { - X3.D[A2] += o * (Y2() << F2); - } else { - M--; - if (M === 0) { - D = D === 2 ? 3 : 0; - } - } - break; - case 3: - if (X3.D[A2]) { - X3.D[A2] += o * (Y2() << F2); - } else { - X3.D[A2] = a8 << F2; - D = 0; - } - break; - case 4: - if (X3.D[A2]) { - X3.D[A2] += o * (Y2() << F2); - } - break; - } - N2++; - } - if (D === 4) { - r--; - if (r === 0) { - D = 0; - } - } - } - function H(X3, I2, x3, l2, M) { - var S = x3 / T | 0, i = x3 % T; - q2 = S * X3.A + l2; - var A2 = i * X3.h + M, o = a2(X3, q2, A2); - I2(X3, o); - } - function w(X3, I2, x3) { - q2 = x3 / X3.P | 0; - var l2 = x3 % X3.P, M = a2(X3, q2, l2); - I2(X3, M); - } - var y2 = G.length; - if (U) { - if (E2 === 0) { - K = C2 === 0 ? $2 : b3; - } else { - K = C2 === 0 ? P : a4; - } - } else { - K = v; - } - if (y2 === 1) { - g2 = G[0].P * G[0].c; - } else { - g2 = T * f.R; - } - while (x2 <= g2) { - var L = n2 ? Math.min(g2 - x2, n2) : g2; - if (L > 0) { - for (O = 0; O < y2; O++) { - G[O].Q = 0; - } - r = 0; - if (y2 === 1) { - X2 = G[0]; - for (e = 0; e < L; e++) { - w(X2, K, x2); - x2++; - } - } else { - for (e = 0; e < L; e++) { - for (O = 0; O < y2; O++) { - X2 = G[O]; - R4 = X2.h; - c2 = X2.A; - for (_ = 0; _ < c2; _++) { - for (N = 0; N < R4; N++) { - H(X2, K, x2, _, N); - } - } - } - x2++; - } - } - } - V = 0; - k2 = an(Q3, h); - if (!k2) { - break; - } - if (k2.u) { - var a6 = L > 0 ? "unexpected" : "excessive"; - h = k2.offset; - } - if (k2.M >= 65488 && k2.M <= 65495) { - h += 2; - } else { - break; - } - } - return h - z; - } - function al(Q3, h, f) { - var G = Q3.$, n2 = Q3.D, E2, a3, C2, F2, d, T, U, z, J, V, Y2, u, m, j, v, $2, b3; - if (!G) { - throw new W("missing required Quantization Table."); - } - for (var r = 0; r < 64; r += 8) { - J = n2[h + r]; - V = n2[h + r + 1]; - Y2 = n2[h + r + 2]; - u = n2[h + r + 3]; - m = n2[h + r + 4]; - j = n2[h + r + 5]; - v = n2[h + r + 6]; - $2 = n2[h + r + 7]; - J *= G[r]; - if ((V | Y2 | u | m | j | v | $2) === 0) { - b3 = s * J + 512 >> 10; - f[r] = b3; - f[r + 1] = b3; - f[r + 2] = b3; - f[r + 3] = b3; - f[r + 4] = b3; - f[r + 5] = b3; - f[r + 6] = b3; - f[r + 7] = b3; - continue; - } - V *= G[r + 1]; - Y2 *= G[r + 2]; - u *= G[r + 3]; - m *= G[r + 4]; - j *= G[r + 5]; - v *= G[r + 6]; - $2 *= G[r + 7]; - E2 = s * J + 128 >> 8; - a3 = s * m + 128 >> 8; - C2 = Y2; - F2 = v; - d = ad * (V - $2) + 128 >> 8; - z = ad * (V + $2) + 128 >> 8; - T = u << 4; - U = j << 4; - E2 = E2 + a3 + 1 >> 1; - a3 = E2 - a3; - b3 = C2 * ai + F2 * ar + 128 >> 8; - C2 = C2 * ar - F2 * ai + 128 >> 8; - F2 = b3; - d = d + U + 1 >> 1; - U = d - U; - z = z + T + 1 >> 1; - T = z - T; - E2 = E2 + F2 + 1 >> 1; - F2 = E2 - F2; - a3 = a3 + C2 + 1 >> 1; - C2 = a3 - C2; - b3 = d * ao + z * ah + 2048 >> 12; - d = d * ah - z * ao + 2048 >> 12; - z = b3; - b3 = T * ac + U * t3 + 2048 >> 12; - T = T * t3 - U * ac + 2048 >> 12; - U = b3; - f[r] = E2 + z; - f[r + 7] = E2 - z; - f[r + 1] = a3 + U; - f[r + 6] = a3 - U; - f[r + 2] = C2 + T; - f[r + 5] = C2 - T; - f[r + 3] = F2 + d; - f[r + 4] = F2 - d; - } - for (var P = 0; P < 8; ++P) { - J = f[P]; - V = f[P + 8]; - Y2 = f[P + 16]; - u = f[P + 24]; - m = f[P + 32]; - j = f[P + 40]; - v = f[P + 48]; - $2 = f[P + 56]; - if ((V | Y2 | u | m | j | v | $2) === 0) { - b3 = s * J + 8192 >> 14; - if (b3 < -2040) { - b3 = 0; - } else if (b3 >= 2024) { - b3 = 255; - } else { - b3 = b3 + 2056 >> 4; - } - n2[h + P] = b3; - n2[h + P + 8] = b3; - n2[h + P + 16] = b3; - n2[h + P + 24] = b3; - n2[h + P + 32] = b3; - n2[h + P + 40] = b3; - n2[h + P + 48] = b3; - n2[h + P + 56] = b3; - continue; - } - E2 = s * J + 2048 >> 12; - a3 = s * m + 2048 >> 12; - C2 = Y2; - F2 = v; - d = ad * (V - $2) + 2048 >> 12; - z = ad * (V + $2) + 2048 >> 12; - T = u; - U = j; - E2 = (E2 + a3 + 1 >> 1) + 4112; - a3 = E2 - a3; - b3 = C2 * ai + F2 * ar + 2048 >> 12; - C2 = C2 * ar - F2 * ai + 2048 >> 12; - F2 = b3; - d = d + U + 1 >> 1; - U = d - U; - z = z + T + 1 >> 1; - T = z - T; - E2 = E2 + F2 + 1 >> 1; - F2 = E2 - F2; - a3 = a3 + C2 + 1 >> 1; - C2 = a3 - C2; - b3 = d * ao + z * ah + 2048 >> 12; - d = d * ah - z * ao + 2048 >> 12; - z = b3; - b3 = T * ac + U * t3 + 2048 >> 12; - T = T * t3 - U * ac + 2048 >> 12; - U = b3; - J = E2 + z; - $2 = E2 - z; - V = a3 + U; - v = a3 - U; - Y2 = C2 + T; - j = C2 - T; - u = F2 + d; - m = F2 - d; - if (J < 16) { - J = 0; - } else if (J >= 4080) { - J = 255; - } else { - J >>= 4; - } - if (V < 16) { - V = 0; - } else if (V >= 4080) { - V = 255; - } else { - V >>= 4; - } - if (Y2 < 16) { - Y2 = 0; - } else if (Y2 >= 4080) { - Y2 = 255; - } else { - Y2 >>= 4; - } - if (u < 16) { - u = 0; - } else if (u >= 4080) { - u = 255; - } else { - u >>= 4; - } - if (m < 16) { - m = 0; - } else if (m >= 4080) { - m = 255; - } else { - m >>= 4; - } - if (j < 16) { - j = 0; - } else if (j >= 4080) { - j = 255; - } else { - j >>= 4; - } - if (v < 16) { - v = 0; - } else if (v >= 4080) { - v = 255; - } else { - v >>= 4; - } - if ($2 < 16) { - $2 = 0; - } else if ($2 >= 4080) { - $2 = 255; - } else { - $2 >>= 4; - } - n2[h + P] = J; - n2[h + P + 8] = V; - n2[h + P + 16] = Y2; - n2[h + P + 24] = u; - n2[h + P + 32] = m; - n2[h + P + 40] = j; - n2[h + P + 48] = v; - n2[h + P + 56] = $2; - } - } - function a0(Q3, h) { - var f = h.P, G = h.c, n2 = new Int16Array(64); - for (var E2 = 0; E2 < G; E2++) { - for (var a3 = 0; a3 < f; a3++) { - var C2 = a2(h, E2, a3); - al(h, C2, n2); - } - } - return h.D; - } - function an(Q3, h, f) { - if (f == null) f = h; - var G = Q3.length - 1, n2 = f < h ? f : h; - if (h >= G) { - return null; - } - var E2 = Z2(Q3, h); - if (E2 >= 65472 && E2 <= 65534) { - return { u: null, M: E2, offset: h }; - } - var a3 = Z2(Q3, n2); - while (!(a3 >= 65472 && a3 <= 65534)) { - if (++n2 >= G) { - return null; - } - a3 = Z2(Q3, n2); - } - return { u: E2.toString(16), M: a3, offset: n2 }; - } - ak2.prototype = { parse(Q3, h) { - if (h == null) h = {}; - var f = h.F, E2 = 0, a3 = null, C2 = null, F2, d, T = 0; - function G() { - var o = Z2(Q3, E2); - E2 += 2; - var B2 = E2 + o - 2, V2 = an(Q3, B2, E2); - if (V2 && V2.u) { - B2 = V2.offset; - } - var ab = Q3.subarray(E2, B2); - E2 += ab.length; - return ab; - } - function n2(F3) { - var o = Math.ceil(F3.o / 8 / F3.X), B2 = Math.ceil(F3.s / 8 / F3.B); - for (var Y3 = 0; Y3 < F3.W.length; Y3++) { - R4 = F3.W[Y3]; - var ab = Math.ceil(Math.ceil(F3.o / 8) * R4.h / F3.X), af = Math.ceil(Math.ceil(F3.s / 8) * R4.A / F3.B), ap = o * R4.h, aq = B2 * R4.A, ae = 64 * aq * (ap + 1); - R4.D = new Int16Array(ae); - R4.P = ab; - R4.c = af; - } - F3.m = o; - F3.R = B2; - } - var U = [], z = [], J = [], V = Z2(Q3, E2); - E2 += 2; - if (V !== 65496) { - throw new W("SOI not found"); - } - V = Z2(Q3, E2); - E2 += 2; - markerLoop: while (V !== 65497) { - var Y2, u, m; - switch (V) { - case 65504: - case 65505: - case 65506: - case 65507: - case 65508: - case 65509: - case 65510: - case 65511: - case 65512: - case 65513: - case 65514: - case 65515: - case 65516: - case 65517: - case 65518: - case 65519: - case 65534: - var j = G(); - if (V === 65504) { - if (j[0] === 74 && j[1] === 70 && j[2] === 73 && j[3] === 70 && j[4] === 0) { - a3 = { version: { d: j[5], T: j[6] }, K: j[7], j: j[8] << 8 | j[9], H: j[10] << 8 | j[11], S: j[12], I: j[13], C: j.subarray(14, 14 + 3 * j[12] * j[13]) }; - } - } - if (V === 65518) { - if (j[0] === 65 && j[1] === 100 && j[2] === 111 && j[3] === 98 && j[4] === 101) { - C2 = { version: j[5] << 8 | j[6], k: j[7] << 8 | j[8], q: j[9] << 8 | j[10], a: j[11] }; - } - } - break; - case 65499: - var v = Z2(Q3, E2), b3; - E2 += 2; - var $2 = v + E2 - 2; - while (E2 < $2) { - var r = Q3[E2++], P = new Uint16Array(64); - if (r >> 4 === 0) { - for (u = 0; u < 64; u++) { - b3 = p2[u]; - P[b3] = Q3[E2++]; - } - } else if (r >> 4 === 1) { - for (u = 0; u < 64; u++) { - b3 = p2[u]; - P[b3] = Z2(Q3, E2); - E2 += 2; - } - } else { - throw new W("DQT - invalid table spec"); - } - U[r & 15] = P; - } - break; - case 65472: - case 65473: - case 65474: - if (F2) { - throw new W("Only single frame JPEGs supported"); - } - E2 += 2; - F2 = {}; - F2.G = V === 65473; - F2.Z = V === 65474; - F2.precision = Q3[E2++]; - var D = Z2(Q3, E2), a4, q2 = 0, H = 0; - E2 += 2; - F2.s = f || D; - F2.o = Z2(Q3, E2); - E2 += 2; - F2.W = []; - F2._ = {}; - var a8 = Q3[E2++]; - for (Y2 = 0; Y2 < a8; Y2++) { - a4 = Q3[E2]; - var w = Q3[E2 + 1] >> 4, y2 = Q3[E2 + 1] & 15; - if (q2 < w) { - q2 = w; - } - if (H < y2) { - H = y2; - } - var X2 = Q3[E2 + 2]; - m = F2.W.push({ h: w, A: y2, L: X2, $: null }); - F2._[a4] = m - 1; - E2 += 3; - } - F2.X = q2; - F2.B = H; - n2(F2); - break; - case 65476: - var O = Z2(Q3, E2); - E2 += 2; - for (Y2 = 2; Y2 < O; ) { - var _ = Q3[E2++], N = new Uint8Array(16), e = 0; - for (u = 0; u < 16; u++, E2++) { - e += N[u] = Q3[E2]; - } - var K = new Uint8Array(e); - for (u = 0; u < e; u++, E2++) { - K[u] = Q3[E2]; - } - Y2 += 17 + e; - (_ >> 4 === 0 ? J : z)[_ & 15] = a5(N, K); - } - break; - case 65501: - E2 += 2; - d = Z2(Q3, E2); - E2 += 2; - break; - case 65498: - var x2 = ++T === 1 && !f, R4; - E2 += 2; - var k2 = Q3[E2++], g2 = []; - for (Y2 = 0; Y2 < k2; Y2++) { - var c2 = Q3[E2++], L = F2._[c2]; - R4 = F2.W[L]; - R4.index = c2; - var a6 = Q3[E2++]; - R4.J = J[a6 >> 4]; - R4.i = z[a6 & 15]; - g2.push(R4); - } - var I2 = Q3[E2++], l2 = Q3[E2++], M = Q3[E2++]; - try { - var S = a7(Q3, E2, F2, g2, d, I2, l2, M >> 4, M & 15, x2); - E2 += S; - } catch (ex) { - if (ex instanceof DNLMarkerError) { - return this.parse(Q3, { F: ex.s }); - } else if (ex instanceof EOIMarkerError) { - break markerLoop; - } - throw ex; - } - break; - case 65500: - E2 += 4; - break; - case 65535: - if (Q3[E2] !== 255) { - E2--; - } - break; - default: - var i = an(Q3, E2 - 2, E2 - 3); - if (i && i.u) { - E2 = i.offset; - break; - } - if (E2 >= Q3.length - 1) { - break markerLoop; - } - throw new W("JpegImage.parse - unknown marker: " + V.toString(16)); - } - V = Z2(Q3, E2); - E2 += 2; - } - this.width = F2.o; - this.height = F2.s; - this.g = a3; - this.b = C2; - this.W = []; - for (Y2 = 0; Y2 < F2.W.length; Y2++) { - R4 = F2.W[Y2]; - var A2 = U[R4.L]; - if (A2) { - R4.$ = A2; - } - this.W.push({ index: R4.index, e: a0(F2, R4), l: R4.h / F2.X, t: R4.A / F2.B, P: R4.P, c: R4.c }); - } - this.p = this.W.length; - return void 0; - }, Y(Q3, h, f) { - if (f == null) f = false; - var G = this.width / Q3, n2 = this.height / h, E2, a3, C2, F2, d, T, U, z, J, V, Y2 = 0, u, m = this.W.length, j = Q3 * h * m, v = new Uint8ClampedArray(j), $2 = new Uint32Array(Q3), b3 = 4294967288, r; - for (U = 0; U < m; U++) { - E2 = this.W[U]; - a3 = E2.l * G; - C2 = E2.t * n2; - Y2 = U; - u = E2.e; - F2 = E2.P + 1 << 3; - if (a3 !== r) { - for (d = 0; d < Q3; d++) { - z = 0 | d * a3; - $2[d] = (z & b3) << 3 | z & 7; - } - r = a3; - } - for (T = 0; T < h; T++) { - z = 0 | T * C2; - V = F2 * (z & b3) | (z & 7) << 3; - for (d = 0; d < Q3; d++) { - v[Y2] = u[V + $2[d]]; - Y2 += m; - } - } - } - var P = this.V; - if (!f && m === 4 && !P) { - P = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]); - } - if (P) { - for (U = 0; U < j; ) { - for (z = 0, J = 0; z < m; z++, U++, J += 2) { - v[U] = (v[U] * P[J] >> 8) + P[J + 1]; - } - } - } - return v; - }, get f() { - if (this.b) { - return !!this.b.a; - } - if (this.p === 3) { - if (this.N === 0) { - return false; - } else if (this.W[0].index === 82 && this.W[1].index === 71 && this.W[2].index === 66) { - return false; - } - return true; - } - if (this.N === 1) { - return true; - } - return false; - }, z: function aj(Q3) { - var h, f, G; - for (var n2 = 0, E2 = Q3.length; n2 < E2; n2 += 3) { - h = Q3[n2]; - f = Q3[n2 + 1]; - G = Q3[n2 + 2]; - Q3[n2] = h - 179.456 + 1.402 * G; - Q3[n2 + 1] = h + 135.459 - 0.344 * f - 0.714 * G; - Q3[n2 + 2] = h - 226.816 + 1.772 * f; - } - return Q3; - }, O: function aa(Q3) { - var h, f, G, n2, E2 = 0; - for (var a3 = 0, C2 = Q3.length; a3 < C2; a3 += 4) { - h = Q3[a3]; - f = Q3[a3 + 1]; - G = Q3[a3 + 2]; - n2 = Q3[a3 + 3]; - Q3[E2++] = -122.67195406894 + f * (-660635669420364e-19 * f + 437130475926232e-18 * G - 54080610064599e-18 * h + 48449797120281e-17 * n2 - 0.154362151871126) + G * (-957964378445773e-18 * G + 817076911346625e-18 * h - 0.00477271405408747 * n2 + 1.53380253221734) + h * (961250184130688e-18 * h - 0.00266257332283933 * n2 + 0.48357088451265) + n2 * (-336197177618394e-18 * n2 + 0.484791561490776); - Q3[E2++] = 107.268039397724 + f * (219927104525741e-19 * f - 640992018297945e-18 * G + 659397001245577e-18 * h + 426105652938837e-18 * n2 - 0.176491792462875) + G * (-778269941513683e-18 * G + 0.00130872261408275 * h + 770482631801132e-18 * n2 - 0.151051492775562) + h * (0.00126935368114843 * h - 0.00265090189010898 * n2 + 0.25802910206845) + n2 * (-318913117588328e-18 * n2 - 0.213742400323665); - Q3[E2++] = -20.810012546947 + f * (-570115196973677e-18 * f - 263409051004589e-19 * G + 0.0020741088115012 * h - 0.00288260236853442 * n2 + 0.814272968359295) + G * (-153496057440975e-19 * G - 132689043961446e-18 * h + 560833691242812e-18 * n2 - 0.195152027534049) + h * (0.00174418132927582 * h - 0.00255243321439347 * n2 + 0.116935020465145) + n2 * (-343531996510555e-18 * n2 + 0.24165260232407); - } - return Q3.subarray(0, E2); - }, r: function a3(Q3) { - var h, f, G; - for (var n2 = 0, E2 = Q3.length; n2 < E2; n2 += 4) { - h = Q3[n2]; - f = Q3[n2 + 1]; - G = Q3[n2 + 2]; - Q3[n2] = 434.456 - h - 1.402 * G; - Q3[n2 + 1] = 119.541 - h + 0.344 * f + 0.714 * G; - Q3[n2 + 2] = 481.816 - h - 1.772 * f; - } - return Q3; - }, U: function as(Q3) { - var h, f, G, n2, E2 = 0; - for (var a3 = 0, C2 = Q3.length; a3 < C2; a3 += 4) { - h = Q3[a3]; - f = Q3[a3 + 1]; - G = Q3[a3 + 2]; - n2 = Q3[a3 + 3]; - Q3[E2++] = 255 + h * (-6747147073602441e-20 * h + 8379262121013727e-19 * f + 2894718188643294e-19 * G + 0.003264231057537806 * n2 - 1.1185611867203937) + f * (26374107616089405e-21 * f - 8626949158638572e-20 * G - 2748769067499491e-19 * n2 - 0.02155688794978967) + G * (-3878099212869363e-20 * G - 3267808279485286e-19 * n2 + 0.0686742238595345) - n2 * (3361971776183937e-19 * n2 + 0.7430659151342254); - Q3[E2++] = 255 + h * (13596372813588848e-20 * h + 924537132573585e-18 * f + 10567359618683593e-20 * G + 4791864687436512e-19 * n2 - 0.3109689587515875) + f * (-23545346108370344e-20 * f + 2702845253534714e-19 * G + 0.0020200308977307156 * n2 - 0.7488052167015494) + G * (6834815998235662e-20 * G + 15168452363460973e-20 * n2 - 0.09751927774728933) - n2 * (3189131175883281e-19 * n2 + 0.7364883807733168); - Q3[E2++] = 255 + h * (13598650411385307e-21 * h + 12423956175490851e-20 * f + 4751985097583589e-19 * G - 36729317476630422e-22 * n2 - 0.05562186980264034) + f * (16141380598724676e-20 * f + 9692239130725186e-19 * G + 7782692450036253e-19 * n2 - 0.44015232367526463) + G * (5068882914068769e-22 * G + 0.0017778369011375071 * n2 - 0.7591454649749609) - n2 * (3435319965105553e-19 * n2 + 0.7063770186160144); - } - return Q3.subarray(0, E2); - }, getData: function(Q3) { - var h = Q3.width, f = Q3.height, G = Q3.forceRGB, n2 = Q3.isSourcePDF; - if (this.p > 4) { - throw new W("Unsupported color mode"); - } - var E2 = this.Y(h, f, n2); - if (this.p === 1 && G) { - var a3 = E2.length, C2 = new Uint8ClampedArray(a3 * 3), F2 = 0; - for (var d = 0; d < a3; d++) { - var T = E2[d]; - C2[F2++] = T; - C2[F2++] = T; - C2[F2++] = T; - } - return C2; - } else if (this.p === 3 && this.f) { - return this.z(E2); - } else if (this.p === 4) { - if (this.f) { - if (G) { - return this.O(E2); - } - return this.r(E2); - } else if (G) { - return this.U(E2); - } - } - return E2; - } }; - return ak2; - }(); - function a9(p2, t3) { - return p2[t3] << 24 >> 24; - } - function Z2(p2, t3) { - return p2[t3] << 8 | p2[t3 + 1]; - } - function am(p2, t3) { - return (p2[t3] << 24 | p2[t3 + 1] << 16 | p2[t3 + 2] << 8 | p2[t3 + 3]) >>> 0; - } - UTIF2.JpegDecoder = ak; -})(); -UTIF2.encodeImage = function(rgba, w, h, metadata) { - var idf = { - "t256": [w], - "t257": [h], - "t258": [8, 8, 8, 8], - "t259": [1], - "t262": [2], - "t273": [1e3], - // strips offset - "t277": [4], - "t278": [h], - /* rows per strip */ - "t279": [w * h * 4], - // strip byte counts - "t282": [[72, 1]], - "t283": [[72, 1]], - "t284": [1], - "t286": [[0, 1]], - "t287": [[0, 1]], - "t296": [1], - "t305": ["Photopea (UTIF.js)"], - "t338": [1] - }; - if (metadata) for (var i in metadata) idf[i] = metadata[i]; - var prfx = new Uint8Array(UTIF2.encode([idf])); - var img = new Uint8Array(rgba); - var data2 = new Uint8Array(1e3 + w * h * 4); - for (var i = 0; i < prfx.length; i++) data2[i] = prfx[i]; - for (var i = 0; i < img.length; i++) data2[1e3 + i] = img[i]; - return data2.buffer; -}; -UTIF2.encode = function(ifds) { - var LE = false; - var data2 = new Uint8Array(2e4), offset = 4, bin = LE ? UTIF2._binLE : UTIF2._binBE; - data2[0] = data2[1] = LE ? 73 : 77; - bin.writeUshort(data2, 2, 42); - var ifdo = 8; - bin.writeUint(data2, offset, ifdo); - offset += 4; - for (var i = 0; i < ifds.length; i++) { - var noffs = UTIF2._writeIFD(bin, UTIF2._types.basic, data2, ifdo, ifds[i]); - ifdo = noffs[1]; - if (i < ifds.length - 1) { - if ((ifdo & 3) != 0) ifdo += 4 - (ifdo & 3); - bin.writeUint(data2, noffs[0], ifdo); - } - } - return data2.slice(0, ifdo).buffer; -}; -UTIF2.decode = function(buff, prm) { - if (prm == null) prm = { parseMN: true, debug: false }; - var data2 = new Uint8Array(buff), offset = 0; - var id = UTIF2._binBE.readASCII(data2, offset, 2); - offset += 2; - var bin = id == "II" ? UTIF2._binLE : UTIF2._binBE; - var num = bin.readUshort(data2, offset); - offset += 2; - var ifdo = bin.readUint(data2, offset); - offset += 4; - var ifds = []; - while (true) { - var cnt = bin.readUshort(data2, ifdo), typ = bin.readUshort(data2, ifdo + 4); - if (cnt != 0) { - if (typ < 1 || 13 < typ) { - log("error in TIFF"); - break; - } - } - ; - UTIF2._readIFD(bin, data2, ifdo, ifds, 0, prm); - ifdo = bin.readUint(data2, ifdo + 2 + cnt * 12); - if (ifdo == 0) break; - } - return ifds; -}; -UTIF2.decodeImage = function(buff, img, ifds) { - if (img.data) return; - var data2 = new Uint8Array(buff); - var id = UTIF2._binBE.readASCII(data2, 0, 2); - if (img["t256"] == null) return; - img.isLE = id == "II"; - img.width = img["t256"][0]; - img.height = img["t257"][0]; - var cmpr = img["t259"] ? img["t259"][0] : 1; - var fo = img["t266"] ? img["t266"][0] : 1; - if (img["t284"] && img["t284"][0] == 2) log("PlanarConfiguration 2 should not be used!"); - if (cmpr == 7 && img["t258"] && img["t258"].length > 3) img["t258"] = img["t258"].slice(0, 3); - var spp = img["t277"] ? img["t277"][0] : 1; - var bps = img["t258"] ? img["t258"][0] : 1; - var bipp = bps * spp; - if (cmpr == 1 && img["t279"] != null && img["t278"] && img["t262"][0] == 32803) { - bipp = Math.round(img["t279"][0] * 8 / (img.width * img["t278"][0])); - } - if (img["t50885"] && img["t50885"][0] == 4) bipp = img["t258"][0] * 3; - var bipl = Math.ceil(img.width * bipp / 8) * 8; - var soff = img["t273"]; - if (soff == null || img["t322"]) soff = img["t324"]; - var bcnt = img["t279"]; - if (cmpr == 1 && soff.length == 1) bcnt = [img.height * (bipl >>> 3)]; - if (bcnt == null || img["t322"]) bcnt = img["t325"]; - var bytes = new Uint8Array(img.height * (bipl >>> 3)), bilen = 0; - if (img["t322"] != null) { - var tw = img["t322"][0], th = img["t323"][0]; - var tx = Math.floor((img.width + tw - 1) / tw); - var ty = Math.floor((img.height + th - 1) / th); - var tbuff = new Uint8Array(Math.ceil(tw * th * bipp / 8) | 0); - console.log("====", tx, ty); - for (var y2 = 0; y2 < ty; y2++) - for (var x2 = 0; x2 < tx; x2++) { - var i = y2 * tx + x2; - tbuff.fill(0); - UTIF2.decode._decompress(img, ifds, data2, soff[i], bcnt[i], cmpr, tbuff, 0, fo, tw, th); - if (cmpr == 6) bytes = tbuff; - else UTIF2._copyTile(tbuff, Math.ceil(tw * bipp / 8) | 0, th, bytes, Math.ceil(img.width * bipp / 8) | 0, img.height, Math.ceil(x2 * tw * bipp / 8) | 0, y2 * th); - } - bilen = bytes.length * 8; - } else { - if (soff == null) return; - var rps = img["t278"] ? img["t278"][0] : img.height; - rps = Math.min(rps, img.height); - for (var i = 0; i < soff.length; i++) { - UTIF2.decode._decompress(img, ifds, data2, soff[i], bcnt[i], cmpr, bytes, Math.ceil(bilen / 8) | 0, fo, img.width, rps); - bilen += bipl * rps; - } - bilen = Math.min(bilen, bytes.length * 8); - } - img.data = new Uint8Array(bytes.buffer, 0, Math.ceil(bilen / 8) | 0); -}; -UTIF2.decode._decompress = function(img, ifds, data2, off, len, cmpr, tgt, toff, fo, w, h) { - if (img["t271"] && img["t271"][0] == "Panasonic" && img["t45"] && img["t45"][0] == 6) cmpr = 34316; - if (false) { - } else if (cmpr == 1) for (var j = 0; j < len; j++) tgt[toff + j] = data2[off + j]; - else if (cmpr == 2) UTIF2.decode._decodeG2(data2, off, len, tgt, toff, w, fo); - else if (cmpr == 3) UTIF2.decode._decodeG3(data2, off, len, tgt, toff, w, fo, img["t292"] ? (img["t292"][0] & 1) == 1 : false); - else if (cmpr == 4) UTIF2.decode._decodeG4(data2, off, len, tgt, toff, w, fo); - else if (cmpr == 5) UTIF2.decode._decodeLZW(data2, off, len, tgt, toff, 8); - else if (cmpr == 6) UTIF2.decode._decodeOldJPEG(img, data2, off, len, tgt, toff); - else if (cmpr == 7 || cmpr == 34892) UTIF2.decode._decodeNewJPEG(img, data2, off, len, tgt, toff); - else if (cmpr == 8 || cmpr == 32946) { - var src = new Uint8Array(data2.buffer, off + 2, len - 6); - var bin = UTIF2._inflateRaw(src); - if (toff + bin.length <= tgt.length) tgt.set(bin, toff); - } else if (cmpr == 9) UTIF2.decode._decodeVC5(data2, off, len, tgt, toff, img["t33422"]); - else if (cmpr == 32767) UTIF2.decode._decodeARW(img, data2, off, len, tgt, toff); - else if (cmpr == 32773) UTIF2.decode._decodePackBits(data2, off, len, tgt, toff); - else if (cmpr == 32809) UTIF2.decode._decodeThunder(data2, off, len, tgt, toff); - else if (cmpr == 34316) UTIF2.decode._decodePanasonic(img, data2, off, len, tgt, toff); - else if (cmpr == 34713) - UTIF2.decode._decodeNikon(img, ifds, data2, off, len, tgt, toff); - else if (cmpr == 34676) UTIF2.decode._decodeLogLuv32(img, data2, off, len, tgt, toff); - else log("Unknown compression", cmpr); - var bps = img["t258"] ? Math.min(32, img["t258"][0]) : 1; - var noc = img["t277"] ? img["t277"][0] : 1, bpp = bps * noc >>> 3, bpl = Math.ceil(bps * noc * w / 8); - if (bps == 16 && !img.isLE && img["t33422"] == null) - for (var y2 = 0; y2 < h; y2++) { - var roff = toff + y2 * bpl; - for (var x2 = 1; x2 < bpl; x2 += 2) { - var t3 = tgt[roff + x2]; - tgt[roff + x2] = tgt[roff + x2 - 1]; - tgt[roff + x2 - 1] = t3; - } - } - if (img["t317"] && img["t317"][0] == 2) { - for (var y2 = 0; y2 < h; y2++) { - var ntoff = toff + y2 * bpl; - if (bps == 16) for (var j = bpp; j < bpl; j += 2) { - var nv = (tgt[ntoff + j + 1] << 8 | tgt[ntoff + j]) + (tgt[ntoff + j - bpp + 1] << 8 | tgt[ntoff + j - bpp]); - tgt[ntoff + j] = nv & 255; - tgt[ntoff + j + 1] = nv >>> 8 & 255; - } - else if (noc == 3) for (var j = 3; j < bpl; j += 3) { - tgt[ntoff + j] = tgt[ntoff + j] + tgt[ntoff + j - 3] & 255; - tgt[ntoff + j + 1] = tgt[ntoff + j + 1] + tgt[ntoff + j - 2] & 255; - tgt[ntoff + j + 2] = tgt[ntoff + j + 2] + tgt[ntoff + j - 1] & 255; - } - else for (var j = bpp; j < bpl; j++) tgt[ntoff + j] = tgt[ntoff + j] + tgt[ntoff + j - bpp] & 255; - } - } -}; -UTIF2.decode._decodePanasonic = function(img, data2, off, len, tgt, toff) { - var img_buffer = data2.buffer; - var rawWidth = img["t2"][0]; - var rawHeight = img["t3"][0]; - var bitsPerSample = img["t10"][0]; - var RW2_Format = img["t45"][0]; - var bidx = 0; - var imageIndex = 0; - var vpos = 0; - var byte = 0; - var arr_a, arr_b; - var bytes = RW2_Format == 6 ? new Uint32Array(18) : new Uint8Array(16); - var i, j, sh, pred = [0, 0], nonz = [0, 0], isOdd, idx = 0, pixel_base; - var row, col, crow; - var buffer = new Uint8Array(16384); - var result = new Uint16Array(tgt.buffer); - function getDataRaw(bits2) { - if (vpos == 0) { - var arr_a2 = new Uint8Array(img_buffer, off + imageIndex + 8184, 16384 - 8184); - var arr_b2 = new Uint8Array(img_buffer, off + imageIndex, 8184); - buffer.set(arr_a2); - buffer.set(arr_b2, arr_a2.length); - imageIndex += 16384; - } - if (RW2_Format == 5) { - for (i = 0; i < 16; i++) { - bytes[i] = buffer[vpos++]; - vpos &= 16383; - } - } else { - vpos = vpos - bits2 & 131071; - byte = vpos >> 3 ^ 16368; - return (buffer[byte] | buffer[byte + 1] << 8) >> (vpos & 7) & ~(-1 << bits2); - } - } - function getBufferDataRW6(i2) { - return buffer[vpos + 15 - i2]; - } - function readPageRW6() { - bytes[0] = getBufferDataRW6(0) << 6 | getBufferDataRW6(1) >> 2; - bytes[1] = ((getBufferDataRW6(1) & 3) << 12 | getBufferDataRW6(2) << 4 | getBufferDataRW6(3) >> 4) & 16383; - bytes[2] = getBufferDataRW6(3) >> 2 & 3; - bytes[3] = (getBufferDataRW6(3) & 3) << 8 | getBufferDataRW6(4); - bytes[4] = getBufferDataRW6(5) << 2 | getBufferDataRW6(6) >> 6; - bytes[5] = (getBufferDataRW6(6) & 63) << 4 | getBufferDataRW6(7) >> 4; - bytes[6] = getBufferDataRW6(7) >> 2 & 3; - bytes[7] = (getBufferDataRW6(7) & 3) << 8 | getBufferDataRW6(8); - bytes[8] = getBufferDataRW6(9) << 2 & 1020 | getBufferDataRW6(10) >> 6; - bytes[9] = (getBufferDataRW6(10) << 4 | getBufferDataRW6(11) >> 4) & 1023; - bytes[10] = getBufferDataRW6(11) >> 2 & 3; - bytes[11] = (getBufferDataRW6(11) & 3) << 8 | getBufferDataRW6(12); - bytes[12] = (getBufferDataRW6(13) << 2 & 1020 | getBufferDataRW6(14) >> 6) & 1023; - bytes[13] = (getBufferDataRW6(14) << 4 | getBufferDataRW6(15) >> 4) & 1023; - vpos += 16; - byte = 0; - } - function readPageRw6_bps12() { - bytes[0] = getBufferDataRW6(0) << 4 | getBufferDataRW6(1) >> 4; - bytes[1] = ((getBufferDataRW6(1) & 15) << 8 | getBufferDataRW6(2)) & 4095; - bytes[2] = getBufferDataRW6(3) >> 6 & 3; - bytes[3] = (getBufferDataRW6(3) & 63) << 2 | getBufferDataRW6(4) >> 6; - bytes[4] = (getBufferDataRW6(4) & 63) << 2 | getBufferDataRW6(5) >> 6; - bytes[5] = (getBufferDataRW6(5) & 63) << 2 | getBufferDataRW6(6) >> 6; - bytes[6] = getBufferDataRW6(6) >> 4 & 3; - bytes[7] = (getBufferDataRW6(6) & 15) << 4 | getBufferDataRW6(7) >> 4; - bytes[8] = (getBufferDataRW6(7) & 15) << 4 | getBufferDataRW6(8) >> 4; - bytes[9] = (getBufferDataRW6(8) & 15) << 4 | getBufferDataRW6(9) >> 4; - bytes[10] = getBufferDataRW6(9) >> 2 & 3; - bytes[11] = (getBufferDataRW6(9) & 3) << 6 | getBufferDataRW6(10) >> 2; - bytes[12] = (getBufferDataRW6(10) & 3) << 6 | getBufferDataRW6(11) >> 2; - bytes[13] = (getBufferDataRW6(11) & 3) << 6 | getBufferDataRW6(12) >> 2; - bytes[14] = getBufferDataRW6(12) & 3; - bytes[15] = getBufferDataRW6(13); - bytes[16] = getBufferDataRW6(14); - bytes[17] = getBufferDataRW6(15); - vpos += 16; - byte = 0; - } - function resetPredNonzeros() { - pred[0] = 0; - pred[1] = 0; - nonz[0] = 0; - nonz[1] = 0; - } - if (RW2_Format == 7) { - throw RW2_Format; - } else if (RW2_Format == 6) { - var is12bit = bitsPerSample == 12, readPageRw6Fn = is12bit ? readPageRw6_bps12 : readPageRW6, pixelsPerBlock = is12bit ? 14 : 11, pixelbase0 = is12bit ? 128 : 512, pixelbase_compare = is12bit ? 2048 : 8192, spix_compare = is12bit ? 16383 : 65535, pixel_mask = is12bit ? 4095 : 16383, blocksperrow = rawWidth / pixelsPerBlock, rowbytes = blocksperrow * 16, bufferSize = is12bit ? 18 : 14; - for (row = 0; row < rawHeight - 15; row += 16) { - var rowstoread = Math.min(16, rawHeight - row); - var readlen = rowbytes * rowstoread; - buffer = new Uint8Array(img_buffer, off + bidx, readlen); - vpos = 0; - bidx += readlen; - for (crow = 0, col = 0; crow < rowstoread; crow++, col = 0) { - idx = (row + crow) * rawWidth; - for (var rblock = 0; rblock < blocksperrow; rblock++) { - readPageRw6Fn(); - resetPredNonzeros(); - sh = 0; - pixel_base = 0; - for (i = 0; i < pixelsPerBlock; i++) { - isOdd = i & 1; - if (i % 3 == 2) { - var base = byte < bufferSize ? bytes[byte++] : 0; - if (base == 3) base = 4; - pixel_base = pixelbase0 << base; - sh = 1 << base; - } - var epixel = byte < bufferSize ? bytes[byte++] : 0; - if (pred[isOdd]) { - epixel *= sh; - if (pixel_base < pixelbase_compare && nonz[isOdd] > pixel_base) - epixel += nonz[isOdd] - pixel_base; - nonz[isOdd] = epixel; - } else { - pred[isOdd] = epixel; - if (epixel) - nonz[isOdd] = epixel; - else - epixel = nonz[isOdd]; - } - result[idx + col++] = epixel - 15 <= spix_compare ? epixel - 15 & spix_compare : epixel + 2147483633 >> 31 & pixel_mask; - } - } - } - } - } else if (RW2_Format == 5) { - var blockSize = bitsPerSample == 12 ? 10 : 9; - for (row = 0; row < rawHeight; row++) { - for (col = 0; col < rawWidth; col += blockSize) { - getDataRaw(0); - if (bitsPerSample == 12) { - result[idx++] = ((bytes[1] & 15) << 8) + bytes[0]; - result[idx++] = 16 * bytes[2] + (bytes[1] >> 4); - result[idx++] = ((bytes[4] & 15) << 8) + bytes[3]; - result[idx++] = 16 * bytes[5] + (bytes[4] >> 4); - result[idx++] = ((bytes[7] & 15) << 8) + bytes[6]; - result[idx++] = 16 * bytes[8] + (bytes[7] >> 4); - result[idx++] = ((bytes[10] & 15) << 8) + bytes[9]; - result[idx++] = 16 * bytes[11] + (bytes[10] >> 4); - result[idx++] = ((bytes[13] & 15) << 8) + bytes[12]; - result[idx++] = 16 * bytes[14] + (bytes[13] >> 4); - } else if (bitsPerSample == 14) { - result[idx++] = bytes[0] + ((bytes[1] & 63) << 8); - result[idx++] = (bytes[1] >> 6) + 4 * bytes[2] + ((bytes[3] & 15) << 10); - result[idx++] = (bytes[3] >> 4) + 16 * bytes[4] + ((bytes[5] & 3) << 12); - result[idx++] = ((bytes[5] & 252) >> 2) + (bytes[6] << 6); - result[idx++] = bytes[7] + ((bytes[8] & 63) << 8); - result[idx++] = (bytes[8] >> 6) + 4 * bytes[9] + ((bytes[10] & 15) << 10); - result[idx++] = (bytes[10] >> 4) + 16 * bytes[11] + ((bytes[12] & 3) << 12); - result[idx++] = ((bytes[12] & 252) >> 2) + (bytes[13] << 6); - result[idx++] = bytes[14] + ((bytes[15] & 63) << 8); - } - } - } - } else if (RW2_Format == 4) { - for (row = 0; row < rawHeight; row++) { - for (col = 0; col < rawWidth; col++) { - i = col % 14; - isOdd = i & 1; - if (i == 0) resetPredNonzeros(); - if (i % 3 == 2) - sh = 4 >> 3 - getDataRaw(2); - if (nonz[isOdd]) { - j = getDataRaw(8); - if (j != 0) { - pred[isOdd] -= 128 << sh; - if (pred[isOdd] < 0 || sh == 4) - pred[isOdd] &= ~(-1 << sh); - pred[isOdd] += j << sh; - } - } else { - nonz[isOdd] = getDataRaw(8); - if (nonz[isOdd] || i > 11) - pred[isOdd] = nonz[isOdd] << 4 | getDataRaw(4); - } - result[idx++] = pred[col & 1]; - } - } - } else throw RW2_Format; -}; -UTIF2.decode._decodeVC5 = function() { - var x2 = [1, 0, 1, 0, 2, 2, 1, 1, 3, 7, 1, 2, 5, 25, 1, 3, 6, 48, 1, 4, 6, 54, 1, 5, 7, 111, 1, 8, 7, 99, 1, 6, 7, 105, 12, 0, 7, 107, 1, 7, 8, 209, 20, 0, 8, 212, 1, 9, 8, 220, 1, 10, 9, 393, 1, 11, 9, 394, 32, 0, 9, 416, 1, 12, 9, 427, 1, 13, 10, 887, 1, 18, 10, 784, 1, 14, 10, 790, 1, 15, 10, 835, 60, 0, 10, 852, 1, 16, 10, 885, 1, 17, 11, 1571, 1, 19, 11, 1668, 1, 20, 11, 1669, 100, 0, 11, 1707, 1, 21, 11, 1772, 1, 22, 12, 3547, 1, 29, 12, 3164, 1, 24, 12, 3166, 1, 25, 12, 3140, 1, 23, 12, 3413, 1, 26, 12, 3537, 1, 27, 12, 3539, 1, 28, 13, 7093, 1, 35, 13, 6283, 1, 30, 13, 6331, 1, 31, 13, 6335, 180, 0, 13, 6824, 1, 32, 13, 7072, 1, 33, 13, 7077, 320, 0, 13, 7076, 1, 34, 14, 12565, 1, 36, 14, 12661, 1, 37, 14, 12669, 1, 38, 14, 13651, 1, 39, 14, 14184, 1, 40, 15, 28295, 1, 46, 15, 28371, 1, 47, 15, 25320, 1, 42, 15, 25336, 1, 43, 15, 25128, 1, 41, 15, 27300, 1, 44, 15, 28293, 1, 45, 16, 50259, 1, 48, 16, 50643, 1, 49, 16, 50675, 1, 50, 16, 56740, 1, 53, 16, 56584, 1, 51, 16, 56588, 1, 52, 17, 113483, 1, 61, 17, 113482, 1, 60, 17, 101285, 1, 55, 17, 101349, 1, 56, 17, 109205, 1, 57, 17, 109207, 1, 58, 17, 100516, 1, 54, 17, 113171, 1, 59, 18, 202568, 1, 62, 18, 202696, 1, 63, 18, 218408, 1, 64, 18, 218412, 1, 65, 18, 226340, 1, 66, 18, 226356, 1, 67, 18, 226358, 1, 68, 19, 402068, 1, 69, 19, 405138, 1, 70, 19, 405394, 1, 71, 19, 436818, 1, 72, 19, 436826, 1, 73, 19, 452714, 1, 75, 19, 452718, 1, 76, 19, 452682, 1, 74, 20, 804138, 1, 77, 20, 810279, 1, 78, 20, 810790, 1, 79, 20, 873638, 1, 80, 20, 873654, 1, 81, 20, 905366, 1, 82, 20, 905430, 1, 83, 20, 905438, 1, 84, 21, 1608278, 1, 85, 21, 1620557, 1, 86, 21, 1621582, 1, 87, 21, 1621583, 1, 88, 21, 1747310, 1, 89, 21, 1810734, 1, 90, 21, 1810735, 1, 91, 21, 1810863, 1, 92, 21, 1810879, 1, 93, 22, 3621725, 1, 99, 22, 3621757, 1, 100, 22, 3241112, 1, 94, 22, 3494556, 1, 95, 22, 3494557, 1, 96, 22, 3494622, 1, 97, 22, 3494623, 1, 98, 23, 6482227, 1, 102, 23, 6433117, 1, 101, 23, 6989117, 1, 103, 23, 6989119, 1, 105, 23, 6989118, 1, 104, 23, 7243449, 1, 106, 23, 7243512, 1, 107, 24, 13978233, 1, 111, 24, 12964453, 1, 109, 24, 12866232, 1, 108, 24, 14486897, 1, 113, 24, 13978232, 1, 110, 24, 14486896, 1, 112, 24, 14487026, 1, 114, 24, 14487027, 1, 115, 25, 25732598, 1, 225, 25, 25732597, 1, 189, 25, 25732596, 1, 188, 25, 25732595, 1, 203, 25, 25732594, 1, 202, 25, 25732593, 1, 197, 25, 25732592, 1, 207, 25, 25732591, 1, 169, 25, 25732590, 1, 223, 25, 25732589, 1, 159, 25, 25732522, 1, 235, 25, 25732579, 1, 152, 25, 25732575, 1, 192, 25, 25732489, 1, 179, 25, 25732573, 1, 201, 25, 25732472, 1, 172, 25, 25732576, 1, 149, 25, 25732488, 1, 178, 25, 25732566, 1, 120, 25, 25732571, 1, 219, 25, 25732577, 1, 150, 25, 25732487, 1, 127, 25, 25732506, 1, 211, 25, 25732548, 1, 125, 25, 25732588, 1, 158, 25, 25732486, 1, 247, 25, 25732467, 1, 238, 25, 25732508, 1, 163, 25, 25732552, 1, 228, 25, 25732603, 1, 183, 25, 25732513, 1, 217, 25, 25732587, 1, 168, 25, 25732520, 1, 122, 25, 25732484, 1, 128, 25, 25732562, 1, 249, 25, 25732505, 1, 187, 25, 25732504, 1, 186, 25, 25732483, 1, 136, 25, 25928905, 1, 181, 25, 25732560, 1, 255, 25, 25732500, 1, 230, 25, 25732482, 1, 135, 25, 25732555, 1, 233, 25, 25732568, 1, 222, 25, 25732583, 1, 145, 25, 25732481, 1, 134, 25, 25732586, 1, 167, 25, 25732521, 1, 248, 25, 25732518, 1, 209, 25, 25732480, 1, 243, 25, 25732512, 1, 216, 25, 25732509, 1, 164, 25, 25732547, 1, 140, 25, 25732479, 1, 157, 25, 25732544, 1, 239, 25, 25732574, 1, 191, 25, 25732564, 1, 251, 25, 25732478, 1, 156, 25, 25732546, 1, 139, 25, 25732498, 1, 242, 25, 25732557, 1, 133, 25, 25732477, 1, 162, 25, 25732515, 1, 213, 25, 25732584, 1, 165, 25, 25732514, 1, 212, 25, 25732476, 1, 227, 25, 25732494, 1, 198, 25, 25732531, 1, 236, 25, 25732530, 1, 234, 25, 25732529, 1, 117, 25, 25732528, 1, 215, 25, 25732527, 1, 124, 25, 25732526, 1, 123, 25, 25732525, 1, 254, 25, 25732524, 1, 253, 25, 25732523, 1, 148, 25, 25732570, 1, 218, 25, 25732580, 1, 146, 25, 25732581, 1, 147, 25, 25732569, 1, 224, 25, 25732533, 1, 143, 25, 25732540, 1, 184, 25, 25732541, 1, 185, 25, 25732585, 1, 166, 25, 25732556, 1, 132, 25, 25732485, 1, 129, 25, 25732563, 1, 250, 25, 25732578, 1, 151, 25, 25732501, 1, 119, 25, 25732502, 1, 193, 25, 25732536, 1, 176, 25, 25732496, 1, 245, 25, 25732553, 1, 229, 25, 25732516, 1, 206, 25, 25732582, 1, 144, 25, 25732517, 1, 208, 25, 25732558, 1, 137, 25, 25732543, 1, 241, 25, 25732466, 1, 237, 25, 25732507, 1, 190, 25, 25732542, 1, 240, 25, 25732551, 1, 131, 25, 25732554, 1, 232, 25, 25732565, 1, 252, 25, 25732475, 1, 171, 25, 25732493, 1, 205, 25, 25732492, 1, 204, 25, 25732491, 1, 118, 25, 25732490, 1, 214, 25, 25928904, 1, 180, 25, 25732549, 1, 126, 25, 25732602, 1, 182, 25, 25732539, 1, 175, 25, 25732545, 1, 141, 25, 25732559, 1, 138, 25, 25732537, 1, 177, 25, 25732534, 1, 153, 25, 25732503, 1, 194, 25, 25732606, 1, 160, 25, 25732567, 1, 121, 25, 25732538, 1, 174, 25, 25732497, 1, 246, 25, 25732550, 1, 130, 25, 25732572, 1, 200, 25, 25732474, 1, 170, 25, 25732511, 1, 221, 25, 25732601, 1, 196, 25, 25732532, 1, 142, 25, 25732519, 1, 210, 25, 25732495, 1, 199, 25, 25732605, 1, 155, 25, 25732535, 1, 154, 25, 25732499, 1, 244, 25, 25732510, 1, 220, 25, 25732600, 1, 195, 25, 25732607, 1, 161, 25, 25732604, 1, 231, 25, 25732473, 1, 173, 25, 25732599, 1, 226, 26, 51465122, 1, 116, 26, 51465123, 0, 1], o, C2, k2, P = [3, 3, 3, 3, 2, 2, 2, 1, 1, 1], V = 24576, ar = 16384, H = 8192, az = ar | H; - function d(t3) { - var E2 = t3[1], h = t3[0][E2 >>> 3] >>> 7 - (E2 & 7) & 1; - t3[1]++; - return h; - } - function ag(t3, E2) { - if (o == null) { - o = {}; - for (var h = 0; h < x2.length; h += 4) o[x2[h + 1]] = x2.slice(h, h + 4); - } - var L = d(t3), g2 = o[L]; - while (g2 == null) { - L = L << 1 | d(t3); - g2 = o[L]; - } - var n2 = g2[3]; - if (n2 != 0) n2 = d(t3) == 0 ? n2 : -n2; - E2[0] = g2[2]; - E2[1] = n2; - } - function m(t3, E2) { - for (var h = 0; h < E2; h++) { - if ((t3 & 1) == 1) t3++; - t3 = t3 >>> 1; - } - return t3; - } - function A2(t3, E2) { - return t3 >> E2; - } - function O(t3, E2, h, L, g2, n2) { - E2[h] = A2(A2(11 * t3[g2] - 4 * t3[g2 + n2] + t3[g2 + n2 + n2] + 4, 3) + t3[L], 1); - E2[h + n2] = A2(A2(5 * t3[g2] + 4 * t3[g2 + n2] - t3[g2 + n2 + n2] + 4, 3) - t3[L], 1); - } - function J(t3, E2, h, L, g2, n2) { - var W = t3[g2 - n2] - t3[g2 + n2], j = t3[g2], $2 = t3[L]; - E2[h] = A2(A2(W + 4, 3) + j + $2, 1); - E2[h + n2] = A2(A2(-W + 4, 3) + j - $2, 1); - } - function y2(t3, E2, h, L, g2, n2) { - E2[h] = A2(A2(5 * t3[g2] + 4 * t3[g2 - n2] - t3[g2 - n2 - n2] + 4, 3) + t3[L], 1); - E2[h + n2] = A2(A2(11 * t3[g2] - 4 * t3[g2 - n2] + t3[g2 - n2 - n2] + 4, 3) - t3[L], 1); - } - function q2(t3) { - t3 = t3 < 0 ? 0 : t3 > 4095 ? 4095 : t3; - t3 = k2[t3] >>> 2; - return t3; - } - function av(t3, E2, h, L, g2, n2) { - L = new Uint16Array(L.buffer); - var W = Date.now(), j = UTIF2._binBE, $2 = E2 + h, r, u, X2, I2, ax, a3, R4, ai, aa, ap, ah, ae, aD, al, i, aE, T, B2; - E2 += 4; - var a5 = n2[0] == 1; - while (E2 < $2) { - var S = j.readShort(t3, E2), s = j.readUshort(t3, E2 + 2); - E2 += 4; - if (S == 12) r = s; - else if (S == 20) u = s; - else if (S == 21) X2 = s; - else if (S == 48) I2 = s; - else if (S == 53) ax = s; - else if (S == 35) a3 = s; - else if (S == 62) R4 = s; - else if (S == 101) ai = s; - else if (S == 109) aa = s; - else if (S == 84) ap = s; - else if (S == 106) ah = s; - else if (S == 107) ae = s; - else if (S == 108) aD = s; - else if (S == 102) al = s; - else if (S == 104) i = s; - else if (S == 105) aE = s; - else { - var F2 = S < 0 ? -S : S, D = F2 & 65280, _ = 0; - if (F2 & az) { - if (F2 & H) { - _ = s & 65535; - _ += (F2 & 255) << 16; - } else { - _ = s & 65535; - } - } - if ((F2 & V) == V) { - if (T == null) { - T = []; - for (var M = 0; M < 4; M++) T[M] = new Int16Array((u >>> 1) * (X2 >>> 1)); - B2 = new Int16Array((u >>> 1) * (X2 >>> 1)); - C2 = new Int16Array(1024); - for (var M = 0; M < 1024; M++) { - var aG = M - 512, p2 = Math.abs(aG), r = Math.floor(768 * p2 * p2 * p2 / (255 * 255 * 255)) + p2; - C2[M] = Math.sign(aG) * r; - } - k2 = new Uint16Array(4096); - var aA = (1 << 16) - 1; - for (var M = 0; M < 4096; M++) { - var at = M, a1 = aA * (Math.pow(113, at / 4095) - 1) / 112; - k2[M] = Math.min(a1, aA); - } - } - var w = T[R4], v = m(u, 1 + P[I2]), N = m(X2, 1 + P[I2]); - if (I2 == 0) { - for (var b3 = 0; b3 < N; b3++) for (var G = 0; G < v; G++) { - var c2 = E2 + (b3 * v + G) * 2; - w[b3 * (u >>> 1) + G] = t3[c2] << 8 | t3[c2 + 1]; - } - } else { - var a7 = [t3, E2 * 8], a4 = [], ay = 0, aw = v * N, f = [0, 0], Q3 = 0, s = 0; - while (ay < aw) { - ag(a7, f); - Q3 = f[0]; - s = f[1]; - while (Q3 > 0) { - a4[ay++] = s; - Q3--; - } - } - var l2 = (I2 - 1) % 3, aF = l2 != 1 ? v : 0, a2 = l2 != 0 ? N : 0; - for (var b3 = 0; b3 < N; b3++) { - var af = (b3 + a2) * (u >>> 1) + aF, au = b3 * v; - for (var G = 0; G < v; G++) w[af + G] = C2[a4[au + G] + 512] * ax; - } - if (l2 == 2) { - var i = u >>> 1, an = v * 2, a9 = N * 2; - for (var b3 = 0; b3 < N; b3++) { - for (var G = 0; G < an; G++) { - var M = b3 * 2 * i + G, a6 = b3 * i + G, e = N * i + a6; - if (b3 == 0) O(w, B2, M, e, a6, i); - else if (b3 == N - 1) y2(w, B2, M, e, a6, i); - else J(w, B2, M, e, a6, i); - } - } - var Z2 = w; - w = B2; - B2 = Z2; - for (var b3 = 0; b3 < a9; b3++) { - for (var G = 0; G < v; G++) { - var M = b3 * i + 2 * G, a6 = b3 * i + G, e = v + a6; - if (G == 0) O(w, B2, M, e, a6, 1); - else if (G == v - 1) y2(w, B2, M, e, a6, 1); - else J(w, B2, M, e, a6, 1); - } - } - var Z2 = w; - w = B2; - B2 = Z2; - var aC = [], aB = 2 - ~~((I2 - 1) / 3); - for (var K = 0; K < 3; K++) aC[K] = aa >> 14 - K * 2 & 3; - var a62 = aC[aB]; - if (a62 != 0) for (var b3 = 0; b3 < a9; b3++) for (var G = 0; G < an; G++) { - var M = b3 * i + G; - w[M] = w[M] << a62; - } - } - } - if (I2 == 9 && R4 == 3) { - var a8 = T[0], ab = T[1], aq = T[2], as = T[3]; - for (var b3 = 0; b3 < X2; b3 += 2) for (var G = 0; G < u; G += 2) { - var U = b3 * u + G, c2 = (b3 >>> 1) * (u >>> 1) + (G >>> 1), z = a8[c2], ao = ab[c2] - 2048, ak = aq[c2] - 2048, ad = as[c2] - 2048, aj = (ao << 1) + z, a0 = (ak << 1) + z, aH = z + ad, am = z - ad; - if (a5) { - L[U] = q2(aH); - L[U + 1] = q2(a0); - L[U + u] = q2(aj); - L[U + u + 1] = q2(am); - } else { - L[U] = q2(aj); - L[U + 1] = q2(aH); - L[U + u] = q2(am); - L[U + u + 1] = q2(a0); - } - } - } - E2 += _ * 4; - } else if (F2 == 16388) { - E2 += _ * 4; - } else if (D == 8192 || D == 8448 || D == 9216) { - } else throw F2.toString(16); - } - } - console.log(Date.now() - W); - } - return av; -}(); -UTIF2.decode._decodeLogLuv32 = function(img, data2, off, len, tgt, toff) { - var w = img.width, qw = w * 4; - var io = 0, out = new Uint8Array(qw); - while (io < len) { - var oo = 0; - while (oo < qw) { - var c2 = data2[off + io]; - io++; - if (c2 < 128) { - for (var j = 0; j < c2; j++) out[oo + j] = data2[off + io + j]; - oo += c2; - io += c2; - } else { - c2 = c2 - 126; - for (var j = 0; j < c2; j++) out[oo + j] = data2[off + io]; - oo += c2; - io++; - } - } - for (var x2 = 0; x2 < w; x2++) { - tgt[toff + 0] = out[x2]; - tgt[toff + 1] = out[x2 + w]; - tgt[toff + 2] = out[x2 + w * 2]; - tgt[toff + 4] = out[x2 + w * 3]; - toff += 6; - } - } -}; -UTIF2.decode._ljpeg_diff = function(data2, prm, huff) { - var getbithuff = UTIF2.decode._getbithuff; - var len, diff; - len = getbithuff(data2, prm, huff[0], huff); - diff = getbithuff(data2, prm, len, 0); - if ((diff & 1 << len - 1) == 0) diff -= (1 << len) - 1; - return diff; -}; -UTIF2.decode._decodeARW = function(img, inp, off, src_length, tgt, toff) { - var raw_width = img["t256"][0], height2 = img["t257"][0], tiff_bps = img["t258"][0]; - var bin = img.isLE ? UTIF2._binLE : UTIF2._binBE; - var arw2 = raw_width * height2 == src_length || raw_width * height2 * 1.5 == src_length; - if (!arw2) { - height2 += 8; - var prm = [off, 0, 0, 0]; - var huff = new Uint16Array(32770); - var tab = [ - 3857, - 3856, - 3599, - 3342, - 3085, - 2828, - 2571, - 2314, - 2057, - 1800, - 1543, - 1286, - 1029, - 772, - 771, - 768, - 514, - 513 - ]; - var i, c2, n2, col, row, sum2 = 0; - var ljpeg_diff = UTIF2.decode._ljpeg_diff; - huff[0] = 15; - for (n2 = i = 0; i < 18; i++) { - var lim = 32768 >>> (tab[i] >>> 8); - for (var c2 = 0; c2 < lim; c2++) huff[++n2] = tab[i]; - } - for (col = raw_width; col--; ) - for (row = 0; row < height2 + 1; row += 2) { - if (row == height2) row = 1; - sum2 += ljpeg_diff(inp, prm, huff); - if (row < height2) { - var clr = sum2 & 4095; - UTIF2.decode._putsF(tgt, (row * raw_width + col) * tiff_bps, clr << 16 - tiff_bps); - } - } - return; - } - if (raw_width * height2 * 1.5 == src_length) { - for (var i = 0; i < src_length; i += 3) { - var b0 = inp[off + i + 0], b1 = inp[off + i + 1], b22 = inp[off + i + 2]; - tgt[toff + i] = b1 << 4 | b0 >>> 4; - tgt[toff + i + 1] = b0 << 4 | b22 >>> 4; - tgt[toff + i + 2] = b22 << 4 | b1 >>> 4; - } - return; - } - var pix = new Uint16Array(16); - var row, col, val2, max2, min, imax, imin, sh, bit, i, dp; - var data2 = new Uint8Array(raw_width + 1); - for (row = 0; row < height2; row++) { - for (var j = 0; j < raw_width; j++) data2[j] = inp[off++]; - for (dp = 0, col = 0; col < raw_width - 30; dp += 16) { - max2 = 2047 & (val2 = bin.readUint(data2, dp)); - min = 2047 & val2 >>> 11; - imax = 15 & val2 >>> 22; - imin = 15 & val2 >>> 26; - for (sh = 0; sh < 4 && 128 << sh <= max2 - min; sh++) ; - for (bit = 30, i = 0; i < 16; i++) - if (i == imax) pix[i] = max2; - else if (i == imin) pix[i] = min; - else { - pix[i] = ((bin.readUshort(data2, dp + (bit >> 3)) >>> (bit & 7) & 127) << sh) + min; - if (pix[i] > 2047) pix[i] = 2047; - bit += 7; - } - for (i = 0; i < 16; i++, col += 2) { - var clr = pix[i] << 1; - UTIF2.decode._putsF(tgt, (row * raw_width + col) * tiff_bps, clr << 16 - tiff_bps); - } - col -= col & 1 ? 1 : 31; - } - } -}; -UTIF2.decode._decodeNikon = function(img, imgs, data2, off, src_length, tgt, toff) { - var nikon_tree = [ - [ - 0, - 0, - 1, - 5, - 1, - 1, - 1, - 1, - 1, - 1, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - /* 12-bit lossy */ - 5, - 4, - 3, - 6, - 2, - 7, - 1, - 0, - 8, - 9, - 11, - 10, - 12 - ], - [ - 0, - 0, - 1, - 5, - 1, - 1, - 1, - 1, - 1, - 1, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - /* 12-bit lossy after split */ - 57, - 90, - 56, - 39, - 22, - 5, - 4, - 3, - 2, - 1, - 0, - 11, - 12, - 12 - ], - [ - 0, - 0, - 1, - 4, - 2, - 3, - 1, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - /* 12-bit lossless */ - 5, - 4, - 6, - 3, - 7, - 2, - 8, - 1, - 9, - 0, - 10, - 11, - 12 - ], - [ - 0, - 0, - 1, - 4, - 3, - 1, - 1, - 1, - 1, - 1, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - /* 14-bit lossy */ - 5, - 6, - 4, - 7, - 8, - 3, - 9, - 2, - 1, - 0, - 10, - 11, - 12, - 13, - 14 - ], - [ - 0, - 0, - 1, - 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 2, - 0, - 0, - 0, - 0, - 0, - /* 14-bit lossy after split */ - 8, - 92, - 75, - 58, - 41, - 7, - 6, - 5, - 4, - 3, - 2, - 1, - 0, - 13, - 14 - ], - [ - 0, - 0, - 1, - 4, - 2, - 2, - 3, - 1, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - /* 14-bit lossless */ - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 12, - 2, - 0, - 1, - 13, - 14 - ] - ]; - var raw_width = img["t256"][0], height2 = img["t257"][0], tiff_bps = img["t258"][0]; - var tree = 0, split = 0; - var make_decoder = UTIF2.decode._make_decoder; - var getbithuff = UTIF2.decode._getbithuff; - var mn = imgs[0].exifIFD.makerNote, md = mn["t150"] ? mn["t150"] : mn["t140"], mdo = 0; - var ver0 = md[mdo++], ver1 = md[mdo++]; - if (ver0 == 73 || ver1 == 88) mdo += 2110; - if (ver0 == 70) tree = 2; - if (tiff_bps == 14) tree += 3; - var vpred = [[0, 0], [0, 0]], bin = img.isLE ? UTIF2._binLE : UTIF2._binBE; - for (var i = 0; i < 2; i++) for (var j = 0; j < 2; j++) { - vpred[i][j] = bin.readShort(md, mdo); - mdo += 2; - } - var max2 = 1 << tiff_bps & 32767, step = 0; - var csize = bin.readShort(md, mdo); - mdo += 2; - if (csize > 1) step = Math.floor(max2 / (csize - 1)); - if (ver0 == 68 && ver1 == 32 && step > 0) split = bin.readShort(md, 562); - var i; - var row, col; - var len, shl, diff; - var min_v = 0; - var hpred = [0, 0]; - var huff = make_decoder(nikon_tree[tree]); - var prm = [off, 0, 0, 0]; - for (min_v = row = 0; row < height2; row++) { - if (split && row == split) { - huff = make_decoder(nikon_tree[tree + 1]); - } - for (col = 0; col < raw_width; col++) { - i = getbithuff(data2, prm, huff[0], huff); - len = i & 15; - shl = i >>> 4; - diff = (getbithuff(data2, prm, len - shl, 0) << 1) + 1 << shl >>> 1; - if ((diff & 1 << len - 1) == 0) - diff -= (1 << len) - (shl == 0 ? 1 : 0); - if (col < 2) hpred[col] = vpred[row & 1][col] += diff; - else hpred[col & 1] += diff; - var clr = Math.min(Math.max(hpred[col & 1], 0), (1 << tiff_bps) - 1); - var bti = (row * raw_width + col) * tiff_bps; - UTIF2.decode._putsF(tgt, bti, clr << 16 - tiff_bps); - } - } -}; -UTIF2.decode._putsF = function(dt2, pos, val2) { - val2 = val2 << 8 - (pos & 7); - var o = pos >>> 3; - dt2[o] |= val2 >>> 16; - dt2[o + 1] |= val2 >>> 8; - dt2[o + 2] |= val2; -}; -UTIF2.decode._getbithuff = function(data2, prm, nbits, huff) { - var zero_after_ff = 0; - var get_byte = UTIF2.decode._get_byte; - var c2; - var off = prm[0], bitbuf = prm[1], vbits = prm[2], reset = prm[3]; - if (nbits == 0 || vbits < 0) return 0; - while (!reset && vbits < nbits && (c2 = data2[off++]) != -1 && !(reset = zero_after_ff && c2 == 255 && data2[off++])) { - bitbuf = (bitbuf << 8) + c2; - vbits += 8; - } - c2 = bitbuf << 32 - vbits >>> 32 - nbits; - if (huff) { - vbits -= huff[c2 + 1] >>> 8; - c2 = huff[c2 + 1] & 255; - } else - vbits -= nbits; - if (vbits < 0) throw "e"; - prm[0] = off; - prm[1] = bitbuf; - prm[2] = vbits; - prm[3] = reset; - return c2; -}; -UTIF2.decode._make_decoder = function(source) { - var max2, len, h, i, j; - var huff = []; - for (max2 = 16; max2 != 0 && !source[max2]; max2--) ; - var si = 17; - huff[0] = max2; - for (h = len = 1; len <= max2; len++) - for (i = 0; i < source[len]; i++, ++si) - for (j = 0; j < 1 << max2 - len; j++) - if (h <= 1 << max2) - huff[h++] = len << 8 | source[si]; - return huff; -}; -UTIF2.decode._decodeNewJPEG = function(img, data2, off, len, tgt, toff) { - len = Math.min(len, data2.length - off); - var tables = img["t347"], tlen = tables ? tables.length : 0, buff = new Uint8Array(tlen + len); - if (tables) { - var SOI = 216, EOI2 = 217, boff = 0; - for (var i = 0; i < tlen - 1; i++) { - if (tables[i] == 255 && tables[i + 1] == EOI2) break; - buff[boff++] = tables[i]; - } - var byte1 = data2[off], byte2 = data2[off + 1]; - if (byte1 != 255 || byte2 != SOI) { - buff[boff++] = byte1; - buff[boff++] = byte2; - } - for (var i = 2; i < len; i++) buff[boff++] = data2[off + i]; - } else for (var i = 0; i < len; i++) buff[i] = data2[off + i]; - if (img["t262"][0] == 32803 || img["t259"][0] == 7 && img["t262"][0] == 34892) { - var bps = img["t258"][0]; - var out = UTIF2.LosslessJpegDecode(buff), olen = out.length; - if (false) { - } else if (bps == 16) { - if (img.isLE) for (var i = 0; i < olen; i++) { - tgt[toff + (i << 1)] = out[i] & 255; - tgt[toff + (i << 1) + 1] = out[i] >>> 8; - } - else for (var i = 0; i < olen; i++) { - tgt[toff + (i << 1)] = out[i] >>> 8; - tgt[toff + (i << 1) + 1] = out[i] & 255; - } - } else if (bps == 14 || bps == 12 || bps == 10) { - var rst = 16 - bps; - for (var i = 0; i < olen; i++) UTIF2.decode._putsF(tgt, i * bps, out[i] << rst); - } else if (bps == 8) { - for (var i = 0; i < olen; i++) tgt[toff + i] = out[i]; - } else throw new Error("unsupported bit depth " + bps); - } else { - var parser = new UTIF2.JpegDecoder(); - parser.parse(buff); - var decoded = parser.getData({ "width": parser.width, "height": parser.height, "forceRGB": true, "isSourcePDF": false }); - for (var i = 0; i < decoded.length; i++) tgt[toff + i] = decoded[i]; - } - if (img["t262"][0] == 6) img["t262"][0] = 2; -}; -UTIF2.decode._decodeOldJPEGInit = function(img, data2, off, len) { - var SOI = 216, EOI2 = 217, DQT = 219, DHT = 196, DRI = 221, SOF0 = 192, SOS2 = 218; - var joff = 0, soff = 0, tables, sosMarker2, isTiled = false, i, j, k2; - var jpgIchgFmt = img["t513"], jifoff = jpgIchgFmt ? jpgIchgFmt[0] : 0; - var jpgIchgFmtLen = img["t514"], jiflen = jpgIchgFmtLen ? jpgIchgFmtLen[0] : 0; - var soffTag = img["t324"] || img["t273"] || jpgIchgFmt; - var ycbcrss = img["t530"], ssx = 0, ssy = 0; - var spp = img["t277"] ? img["t277"][0] : 1; - var jpgresint = img["t515"]; - if (soffTag) { - soff = soffTag[0]; - isTiled = soffTag.length > 1; - } - if (!isTiled) { - if (data2[off] == 255 && data2[off + 1] == SOI) return { jpegOffset: off }; - if (jpgIchgFmt != null) { - if (data2[off + jifoff] == 255 && data2[off + jifoff + 1] == SOI) joff = off + jifoff; - else log("JPEGInterchangeFormat does not point to SOI"); - if (jpgIchgFmtLen == null) log("JPEGInterchangeFormatLength field is missing"); - else if (jifoff >= soff || jifoff + jiflen <= soff) log("JPEGInterchangeFormatLength field value is invalid"); - if (joff != null) return { jpegOffset: joff }; - } - } - if (ycbcrss != null) { - ssx = ycbcrss[0]; - ssy = ycbcrss[1]; - } - if (jpgIchgFmt != null) { - if (jpgIchgFmtLen != null) - if (jiflen >= 2 && jifoff + jiflen <= soff) { - if (data2[off + jifoff + jiflen - 2] == 255 && data2[off + jifoff + jiflen - 1] == SOI) tables = new Uint8Array(jiflen - 2); - else tables = new Uint8Array(jiflen); - for (i = 0; i < tables.length; i++) tables[i] = data2[off + jifoff + i]; - log("Incorrect JPEG interchange format: using JPEGInterchangeFormat offset to derive tables"); - } else log("JPEGInterchangeFormat+JPEGInterchangeFormatLength > offset to first strip or tile"); - } - if (tables == null) { - var ooff = 0, out = []; - out[ooff++] = 255; - out[ooff++] = SOI; - var qtables = img["t519"]; - if (qtables == null) throw new Error("JPEGQTables tag is missing"); - for (i = 0; i < qtables.length; i++) { - out[ooff++] = 255; - out[ooff++] = DQT; - out[ooff++] = 0; - out[ooff++] = 67; - out[ooff++] = i; - for (j = 0; j < 64; j++) out[ooff++] = data2[off + qtables[i] + j]; - } - for (k2 = 0; k2 < 2; k2++) { - var htables = img[k2 == 0 ? "t520" : "t521"]; - if (htables == null) throw new Error((k2 == 0 ? "JPEGDCTables" : "JPEGACTables") + " tag is missing"); - for (i = 0; i < htables.length; i++) { - out[ooff++] = 255; - out[ooff++] = DHT; - var nc = 19; - for (j = 0; j < 16; j++) nc += data2[off + htables[i] + j]; - out[ooff++] = nc >>> 8; - out[ooff++] = nc & 255; - out[ooff++] = i | k2 << 4; - for (j = 0; j < 16; j++) out[ooff++] = data2[off + htables[i] + j]; - for (j = 0; j < nc; j++) out[ooff++] = data2[off + htables[i] + 16 + j]; - } - } - out[ooff++] = 255; - out[ooff++] = SOF0; - out[ooff++] = 0; - out[ooff++] = 8 + 3 * spp; - out[ooff++] = 8; - out[ooff++] = img.height >>> 8 & 255; - out[ooff++] = img.height & 255; - out[ooff++] = img.width >>> 8 & 255; - out[ooff++] = img.width & 255; - out[ooff++] = spp; - if (spp == 1) { - out[ooff++] = 1; - out[ooff++] = 17; - out[ooff++] = 0; - } else for (i = 0; i < 3; i++) { - out[ooff++] = i + 1; - out[ooff++] = i != 0 ? 17 : (ssx & 15) << 4 | ssy & 15; - out[ooff++] = i; - } - if (jpgresint != null && jpgresint[0] != 0) { - out[ooff++] = 255; - out[ooff++] = DRI; - out[ooff++] = 0; - out[ooff++] = 4; - out[ooff++] = jpgresint[0] >>> 8 & 255; - out[ooff++] = jpgresint[0] & 255; - } - tables = new Uint8Array(out); - } - var sofpos = -1; - i = 0; - while (i < tables.length - 1) { - if (tables[i] == 255 && tables[i + 1] == SOF0) { - sofpos = i; - break; - } - i++; - } - if (sofpos == -1) { - var tmptab = new Uint8Array(tables.length + 10 + 3 * spp); - tmptab.set(tables); - var tmpoff = tables.length; - sofpos = tables.length; - tables = tmptab; - tables[tmpoff++] = 255; - tables[tmpoff++] = SOF0; - tables[tmpoff++] = 0; - tables[tmpoff++] = 8 + 3 * spp; - tables[tmpoff++] = 8; - tables[tmpoff++] = img.height >>> 8 & 255; - tables[tmpoff++] = img.height & 255; - tables[tmpoff++] = img.width >>> 8 & 255; - tables[tmpoff++] = img.width & 255; - tables[tmpoff++] = spp; - if (spp == 1) { - tables[tmpoff++] = 1; - tables[tmpoff++] = 17; - tables[tmpoff++] = 0; - } else for (i = 0; i < 3; i++) { - tables[tmpoff++] = i + 1; - tables[tmpoff++] = i != 0 ? 17 : (ssx & 15) << 4 | ssy & 15; - tables[tmpoff++] = i; - } - } - if (data2[soff] == 255 && data2[soff + 1] == SOS2) { - var soslen = data2[soff + 2] << 8 | data2[soff + 3]; - sosMarker2 = new Uint8Array(soslen + 2); - sosMarker2[0] = data2[soff]; - sosMarker2[1] = data2[soff + 1]; - sosMarker2[2] = data2[soff + 2]; - sosMarker2[3] = data2[soff + 3]; - for (i = 0; i < soslen - 2; i++) sosMarker2[i + 4] = data2[soff + i + 4]; - } else { - sosMarker2 = new Uint8Array(2 + 6 + 2 * spp); - var sosoff = 0; - sosMarker2[sosoff++] = 255; - sosMarker2[sosoff++] = SOS2; - sosMarker2[sosoff++] = 0; - sosMarker2[sosoff++] = 6 + 2 * spp; - sosMarker2[sosoff++] = spp; - if (spp == 1) { - sosMarker2[sosoff++] = 1; - sosMarker2[sosoff++] = 0; - } else for (i = 0; i < 3; i++) { - sosMarker2[sosoff++] = i + 1; - sosMarker2[sosoff++] = i << 4 | i; - } - sosMarker2[sosoff++] = 0; - sosMarker2[sosoff++] = 63; - sosMarker2[sosoff++] = 0; - } - return { jpegOffset: off, tables, sosMarker: sosMarker2, sofPosition: sofpos }; -}; -UTIF2.decode._decodeOldJPEG = function(img, data2, off, len, tgt, toff) { - var i, dlen, tlen, buff, buffoff; - var jpegData = UTIF2.decode._decodeOldJPEGInit(img, data2, off, len); - if (jpegData.jpegOffset != null) { - dlen = off + len - jpegData.jpegOffset; - buff = new Uint8Array(dlen); - for (i = 0; i < dlen; i++) buff[i] = data2[jpegData.jpegOffset + i]; - } else { - tlen = jpegData.tables.length; - buff = new Uint8Array(tlen + jpegData.sosMarker.length + len + 2); - buff.set(jpegData.tables); - buffoff = tlen; - buff[jpegData.sofPosition + 5] = img.height >>> 8 & 255; - buff[jpegData.sofPosition + 6] = img.height & 255; - buff[jpegData.sofPosition + 7] = img.width >>> 8 & 255; - buff[jpegData.sofPosition + 8] = img.width & 255; - if (data2[off] != 255 || data2[off + 1] != SOS) { - buff.set(jpegData.sosMarker, buffoff); - buffoff += sosMarker.length; - } - for (i = 0; i < len; i++) buff[buffoff++] = data2[off + i]; - buff[buffoff++] = 255; - buff[buffoff++] = EOI; - } - var parser = new UTIF2.JpegDecoder(); - parser.parse(buff); - var decoded = parser.getData({ "width": parser.width, "height": parser.height, "forceRGB": true, "isSourcePDF": false }); - for (var i = 0; i < decoded.length; i++) tgt[toff + i] = decoded[i]; - if (img["t262"] && img["t262"][0] == 6) img["t262"][0] = 2; -}; -UTIF2.decode._decodePackBits = function(data2, off, len, tgt, toff) { - var sa = new Int8Array(data2.buffer), ta = new Int8Array(tgt.buffer), lim = off + len; - while (off < lim) { - var n2 = sa[off]; - off++; - if (n2 >= 0 && n2 < 128) for (var i = 0; i < n2 + 1; i++) { - ta[toff] = sa[off]; - toff++; - off++; - } - if (n2 >= -127 && n2 < 0) { - for (var i = 0; i < -n2 + 1; i++) { - ta[toff] = sa[off]; - toff++; - } - off++; - } - } - return toff; -}; -UTIF2.decode._decodeThunder = function(data2, off, len, tgt, toff) { - var d2 = [0, 1, 0, -1], d3 = [0, 1, 2, 3, 0, -3, -2, -1]; - var lim = off + len, qoff = toff * 2, px = 0; - while (off < lim) { - var b3 = data2[off], msk = b3 >>> 6, n2 = b3 & 63; - off++; - if (msk == 3) { - px = n2 & 15; - tgt[qoff >>> 1] |= px << 4 * (1 - qoff & 1); - qoff++; - } - if (msk == 0) for (var i = 0; i < n2; i++) { - tgt[qoff >>> 1] |= px << 4 * (1 - qoff & 1); - qoff++; - } - if (msk == 2) for (var i = 0; i < 2; i++) { - var d = n2 >>> 3 * (1 - i) & 7; - if (d != 4) { - px += d3[d]; - tgt[qoff >>> 1] |= px << 4 * (1 - qoff & 1); - qoff++; - } - } - if (msk == 1) for (var i = 0; i < 3; i++) { - var d = n2 >>> 2 * (2 - i) & 3; - if (d != 2) { - px += d2[d]; - tgt[qoff >>> 1] |= px << 4 * (1 - qoff & 1); - qoff++; - } - } - } -}; -UTIF2.decode._dmap = { "1": 0, "011": 1, "000011": 2, "0000011": 3, "010": -1, "000010": -2, "0000010": -3 }; -UTIF2.decode._lens = function() { - var addKeys = function(lens, arr, i0, inc) { - for (var i = 0; i < arr.length; i++) lens[arr[i]] = i0 + i * inc; - }; - var termW = "00110101,000111,0111,1000,1011,1100,1110,1111,10011,10100,00111,01000,001000,000011,110100,110101,101010,101011,0100111,0001100,0001000,0010111,0000011,0000100,0101000,0101011,0010011,0100100,0011000,00000010,00000011,00011010,00011011,00010010,00010011,00010100,00010101,00010110,00010111,00101000,00101001,00101010,00101011,00101100,00101101,00000100,00000101,00001010,00001011,01010010,01010011,01010100,01010101,00100100,00100101,01011000,01011001,01011010,01011011,01001010,01001011,00110010,00110011,00110100"; - var termB = "0000110111,010,11,10,011,0011,0010,00011,000101,000100,0000100,0000101,0000111,00000100,00000111,000011000,0000010111,0000011000,0000001000,00001100111,00001101000,00001101100,00000110111,00000101000,00000010111,00000011000,000011001010,000011001011,000011001100,000011001101,000001101000,000001101001,000001101010,000001101011,000011010010,000011010011,000011010100,000011010101,000011010110,000011010111,000001101100,000001101101,000011011010,000011011011,000001010100,000001010101,000001010110,000001010111,000001100100,000001100101,000001010010,000001010011,000000100100,000000110111,000000111000,000000100111,000000101000,000001011000,000001011001,000000101011,000000101100,000001011010,000001100110,000001100111"; - var makeW = "11011,10010,010111,0110111,00110110,00110111,01100100,01100101,01101000,01100111,011001100,011001101,011010010,011010011,011010100,011010101,011010110,011010111,011011000,011011001,011011010,011011011,010011000,010011001,010011010,011000,010011011"; - var makeB = "0000001111,000011001000,000011001001,000001011011,000000110011,000000110100,000000110101,0000001101100,0000001101101,0000001001010,0000001001011,0000001001100,0000001001101,0000001110010,0000001110011,0000001110100,0000001110101,0000001110110,0000001110111,0000001010010,0000001010011,0000001010100,0000001010101,0000001011010,0000001011011,0000001100100,0000001100101"; - var makeA = "00000001000,00000001100,00000001101,000000010010,000000010011,000000010100,000000010101,000000010110,000000010111,000000011100,000000011101,000000011110,000000011111"; - termW = termW.split(","); - termB = termB.split(","); - makeW = makeW.split(","); - makeB = makeB.split(","); - makeA = makeA.split(","); - var lensW = {}, lensB = {}; - addKeys(lensW, termW, 0, 1); - addKeys(lensW, makeW, 64, 64); - addKeys(lensW, makeA, 1792, 64); - addKeys(lensB, termB, 0, 1); - addKeys(lensB, makeB, 64, 64); - addKeys(lensB, makeA, 1792, 64); - return [lensW, lensB]; -}(); -UTIF2.decode._decodeG4 = function(data2, off, slen, tgt, toff, w, fo) { - var U = UTIF2.decode, boff = off << 3, len = 0, wrd = ""; - var line2 = [], pline = []; - for (var i = 0; i < w; i++) pline.push(0); - pline = U._makeDiff(pline); - var a0 = 0, a1 = 0, a2 = 0, b1 = 0, b22 = 0, clr = 0; - var y2 = 0, mode = "", toRead = 0; - var bipl = Math.ceil(w / 8) * 8; - while (boff >>> 3 < off + slen) { - b1 = U._findDiff(pline, a0 + (a0 == 0 ? 0 : 1), 1 - clr), b22 = U._findDiff(pline, b1, clr); - var bit = 0; - if (fo == 1) bit = data2[boff >>> 3] >>> 7 - (boff & 7) & 1; - if (fo == 2) bit = data2[boff >>> 3] >>> (boff & 7) & 1; - boff++; - wrd += bit; - if (mode == "H") { - if (U._lens[clr][wrd] != null) { - var dl = U._lens[clr][wrd]; - wrd = ""; - len += dl; - if (dl < 64) { - U._addNtimes(line2, len, clr); - a0 += len; - clr = 1 - clr; - len = 0; - toRead--; - if (toRead == 0) mode = ""; - } - } - } else { - if (wrd == "0001") { - wrd = ""; - U._addNtimes(line2, b22 - a0, clr); - a0 = b22; - } - if (wrd == "001") { - wrd = ""; - mode = "H"; - toRead = 2; - } - if (U._dmap[wrd] != null) { - a1 = b1 + U._dmap[wrd]; - U._addNtimes(line2, a1 - a0, clr); - a0 = a1; - wrd = ""; - clr = 1 - clr; - } - } - if (line2.length == w && mode == "") { - U._writeBits(line2, tgt, toff * 8 + y2 * bipl); - clr = 0; - y2++; - a0 = 0; - pline = U._makeDiff(line2); - line2 = []; - } - } -}; -UTIF2.decode._findDiff = function(line2, x2, clr) { - for (var i = 0; i < line2.length; i += 2) if (line2[i] >= x2 && line2[i + 1] == clr) return line2[i]; -}; -UTIF2.decode._makeDiff = function(line2) { - var out = []; - if (line2[0] == 1) out.push(0, 1); - for (var i = 1; i < line2.length; i++) if (line2[i - 1] != line2[i]) out.push(i, line2[i]); - out.push(line2.length, 0, line2.length, 1); - return out; -}; -UTIF2.decode._decodeG2 = function(data2, off, slen, tgt, toff, w, fo) { - var U = UTIF2.decode, boff = off << 3, len = 0, wrd = ""; - var line2 = []; - var clr = 0; - var y2 = 0; - var bipl = Math.ceil(w / 8) * 8; - while (boff >>> 3 < off + slen) { - var bit = 0; - if (fo == 1) bit = data2[boff >>> 3] >>> 7 - (boff & 7) & 1; - if (fo == 2) bit = data2[boff >>> 3] >>> (boff & 7) & 1; - boff++; - wrd += bit; - len = U._lens[clr][wrd]; - if (len != null) { - U._addNtimes(line2, len, clr); - wrd = ""; - if (len < 64) clr = 1 - clr; - if (line2.length == w) { - U._writeBits(line2, tgt, toff * 8 + y2 * bipl); - line2 = []; - y2++; - clr = 0; - if ((boff & 7) != 0) boff += 8 - (boff & 7); - if (len >= 64) boff += 8; - } - } - } -}; -UTIF2.decode._decodeG3 = function(data2, off, slen, tgt, toff, w, fo, twoDim) { - var U = UTIF2.decode, boff = off << 3, len = 0, wrd = ""; - var line2 = [], pline = []; - for (var i = 0; i < w; i++) line2.push(0); - var a0 = 0, a1 = 0, a2 = 0, b1 = 0, b22 = 0, clr = 0; - var y2 = -1, mode = "", toRead = 0, is1D = true; - var bipl = Math.ceil(w / 8) * 8; - while (boff >>> 3 < off + slen) { - b1 = U._findDiff(pline, a0 + (a0 == 0 ? 0 : 1), 1 - clr), b22 = U._findDiff(pline, b1, clr); - var bit = 0; - if (fo == 1) bit = data2[boff >>> 3] >>> 7 - (boff & 7) & 1; - if (fo == 2) bit = data2[boff >>> 3] >>> (boff & 7) & 1; - boff++; - wrd += bit; - if (is1D) { - if (U._lens[clr][wrd] != null) { - var dl = U._lens[clr][wrd]; - wrd = ""; - len += dl; - if (dl < 64) { - U._addNtimes(line2, len, clr); - clr = 1 - clr; - len = 0; - } - } - } else { - if (mode == "H") { - if (U._lens[clr][wrd] != null) { - var dl = U._lens[clr][wrd]; - wrd = ""; - len += dl; - if (dl < 64) { - U._addNtimes(line2, len, clr); - a0 += len; - clr = 1 - clr; - len = 0; - toRead--; - if (toRead == 0) mode = ""; - } - } - } else { - if (wrd == "0001") { - wrd = ""; - U._addNtimes(line2, b22 - a0, clr); - a0 = b22; - } - if (wrd == "001") { - wrd = ""; - mode = "H"; - toRead = 2; - } - if (U._dmap[wrd] != null) { - a1 = b1 + U._dmap[wrd]; - U._addNtimes(line2, a1 - a0, clr); - a0 = a1; - wrd = ""; - clr = 1 - clr; - } - } - } - if (wrd.endsWith("000000000001")) { - if (y2 >= 0) U._writeBits(line2, tgt, toff * 8 + y2 * bipl); - if (twoDim) { - if (fo == 1) is1D = (data2[boff >>> 3] >>> 7 - (boff & 7) & 1) == 1; - if (fo == 2) is1D = (data2[boff >>> 3] >>> (boff & 7) & 1) == 1; - boff++; - } - wrd = ""; - clr = 0; - y2++; - a0 = 0; - pline = U._makeDiff(line2); - line2 = []; - } - } - if (line2.length == w) U._writeBits(line2, tgt, toff * 8 + y2 * bipl); -}; -UTIF2.decode._addNtimes = function(arr, n2, val2) { - for (var i = 0; i < n2; i++) arr.push(val2); -}; -UTIF2.decode._writeBits = function(bits2, tgt, boff) { - for (var i = 0; i < bits2.length; i++) tgt[boff + i >>> 3] |= bits2[i] << 7 - (boff + i & 7); -}; -UTIF2.decode._decodeLZW = UTIF2.decode._decodeLZW = function() { - var e, U, Z2, u, K = 0, V = 0, g2 = 0, N = 0, O = function() { - var S = e >>> 3, A2 = U[S] << 16 | U[S + 1] << 8 | U[S + 2], j = A2 >>> 24 - (e & 7) - V & (1 << V) - 1; - e += V; - return j; - }, h = new Uint32Array(4096 * 4), w = 0, m = function(S) { - if (S == w) return; - w = S; - g2 = 1 << S; - N = g2 + 1; - for (var A2 = 0; A2 < N + 1; A2++) { - h[4 * A2] = h[4 * A2 + 3] = A2; - h[4 * A2 + 1] = 65535; - h[4 * A2 + 2] = 1; - } - }, i = function(S) { - V = S + 1; - K = N + 1; - }, D = function(S) { - var A2 = S << 2, j = h[A2 + 2], a2 = u + j - 1; - while (A2 != 65535) { - Z2[a2--] = h[A2]; - A2 = h[A2 + 1]; - } - u += j; - }, L = function(S, A2) { - var j = K << 2, a2 = S << 2; - h[j] = h[(A2 << 2) + 3]; - h[j + 1] = a2; - h[j + 2] = h[a2 + 2] + 1; - h[j + 3] = h[a2 + 3]; - K++; - if (K + 1 == 1 << V && V != 12) V++; - }, T = function(S, A2, j, a2, n2, q2) { - e = A2 << 3; - U = S; - Z2 = a2; - u = n2; - var B2 = A2 + j << 3, _ = 0, t3 = 0; - m(q2); - i(q2); - while (e < B2 && (_ = O()) != N) { - if (_ == g2) { - i(q2); - _ = O(); - if (_ == N) break; - D(_); - } else { - if (_ < K) { - D(_); - L(t3, _); - } else { - L(t3, t3); - D(K - 1); - } - } - t3 = _; - } - return u; - }; - return T; -}(); -UTIF2.tags = {}; -UTIF2._types = function() { - var main = new Array(250); - main.fill(0); - main = main.concat([0, 0, 0, 0, 4, 3, 3, 3, 3, 3, 0, 0, 3, 0, 0, 0, 3, 0, 0, 2, 2, 2, 2, 4, 3, 0, 0, 3, 4, 4, 3, 3, 5, 5, 3, 2, 5, 5, 0, 0, 0, 0, 4, 4, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 3, 5, 5, 3, 0, 3, 3, 4, 4, 4, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); - var rest = { 33432: 2, 33434: 5, 33437: 5, 34665: 4, 34850: 3, 34853: 4, 34855: 3, 34864: 3, 34866: 4, 36864: 7, 36867: 2, 36868: 2, 37121: 7, 37377: 10, 37378: 5, 37380: 10, 37381: 5, 37383: 3, 37384: 3, 37385: 3, 37386: 5, 37510: 7, 37520: 2, 37521: 2, 37522: 2, 40960: 7, 40961: 3, 40962: 4, 40963: 4, 40965: 4, 41486: 5, 41487: 5, 41488: 3, 41985: 3, 41986: 3, 41987: 3, 41988: 5, 41989: 3, 41990: 3, 41993: 3, 41994: 3, 41995: 7, 41996: 3, 42032: 2, 42033: 2, 42034: 5, 42036: 2, 42037: 2, 59932: 7 }; - return { - basic: { - main, - rest - }, - gps: { - main: [1, 2, 5, 2, 5, 1, 5, 5, 0, 9], - rest: { 18: 2, 29: 2 } - } - }; -}(); -UTIF2._readIFD = function(bin, data2, offset, ifds, depth, prm) { - var cnt = bin.readUshort(data2, offset); - offset += 2; - var ifd = {}; - if (prm.debug) log(" ".repeat(depth), ifds.length - 1, ">>>----------------"); - for (var i = 0; i < cnt; i++) { - var tag = bin.readUshort(data2, offset); - offset += 2; - var type = bin.readUshort(data2, offset); - offset += 2; - var num = bin.readUint(data2, offset); - offset += 4; - var voff = bin.readUint(data2, offset); - offset += 4; - var arr = []; - if (type == 1 || type == 7) { - var no = num < 5 ? offset - 4 : voff; - if (no + num > data2.buffer.byteLength) num = data2.buffer.byteLength - no; - arr = new Uint8Array(data2.buffer, no, num); - } - if (type == 2) { - var o0 = num < 5 ? offset - 4 : voff, c2 = data2[o0], len = Math.max(0, Math.min(num - 1, data2.length - o0)); - if (c2 < 128 || len == 0) arr.push(bin.readASCII(data2, o0, len)); - else arr = new Uint8Array(data2.buffer, o0, len); - } - if (type == 3) { - for (var j = 0; j < num; j++) arr.push(bin.readUshort(data2, (num < 3 ? offset - 4 : voff) + 2 * j)); - } - if (type == 4 || type == 13) { - for (var j = 0; j < num; j++) arr.push(bin.readUint(data2, (num < 2 ? offset - 4 : voff) + 4 * j)); - } - if (type == 5 || type == 10) { - var ri = type == 5 ? bin.readUint : bin.readInt; - for (var j = 0; j < num; j++) arr.push([ri(data2, voff + j * 8), ri(data2, voff + j * 8 + 4)]); - } - if (type == 8) { - for (var j = 0; j < num; j++) arr.push(bin.readShort(data2, (num < 3 ? offset - 4 : voff) + 2 * j)); - } - if (type == 9) { - for (var j = 0; j < num; j++) arr.push(bin.readInt(data2, (num < 2 ? offset - 4 : voff) + 4 * j)); - } - if (type == 11) { - for (var j = 0; j < num; j++) arr.push(bin.readFloat(data2, voff + j * 4)); - } - if (type == 12) { - for (var j = 0; j < num; j++) arr.push(bin.readDouble(data2, voff + j * 8)); - } - if (num != 0 && arr.length == 0) { - log(tag, "unknown TIFF tag type: ", type, "num:", num); - if (i == 0) return; - continue; - } - if (prm.debug) log(" ".repeat(depth), tag, type, UTIF2.tags[tag], arr); - ifd["t" + tag] = arr; - if (tag == 330 && ifd["t272"] && ifd["t272"][0] == "DSLR-A100") { - } else if (tag == 330 || tag == 34665 || tag == 34853 || tag == 50740 && bin.readUshort(data2, bin.readUint(arr, 0)) < 300 || tag == 61440) { - var oarr = tag == 50740 ? [bin.readUint(arr, 0)] : arr; - var subfd = []; - for (var j = 0; j < oarr.length; j++) UTIF2._readIFD(bin, data2, oarr[j], subfd, depth + 1, prm); - if (tag == 330) ifd.subIFD = subfd; - if (tag == 34665) ifd.exifIFD = subfd[0]; - if (tag == 34853) ifd.gpsiIFD = subfd[0]; - if (tag == 50740) ifd.dngPrvt = subfd[0]; - if (tag == 61440) ifd.fujiIFD = subfd[0]; - } - if (tag == 37500 && prm.parseMN) { - var mn = arr; - if (bin.readASCII(mn, 0, 5) == "Nikon") ifd.makerNote = UTIF2["decode"](mn.slice(10).buffer)[0]; - else if (bin.readASCII(mn, 0, 5) == "OLYMP" || bin.readASCII(mn, 0, 9) == "OM SYSTEM") { - var inds = [8208, 8224, 8240, 8256, 8272]; - var subsub = []; - UTIF2._readIFD(bin, mn, mn[1] == 77 ? 16 : mn[5] == 85 ? 12 : 8, subsub, depth + 1, prm); - var obj = ifd.makerNote = subsub.pop(); - for (var j = 0; j < inds.length; j++) { - var k2 = "t" + inds[j]; - if (obj[k2] == null) continue; - UTIF2._readIFD(bin, mn, obj[k2][0], subsub, depth + 1, prm); - obj[k2] = subsub.pop(); - } - if (obj["t12288"]) { - UTIF2._readIFD(bin, obj["t12288"], 0, subsub, depth + 1, prm); - obj["t12288"] = subsub.pop(); - } - } else if (bin.readUshort(data2, voff) < 300 && bin.readUshort(data2, voff + 4) <= 12) { - var subsub = []; - UTIF2._readIFD(bin, data2, voff, subsub, depth + 1, prm); - ifd.makerNote = subsub[0]; - } - } - } - ifds.push(ifd); - if (prm.debug) log(" ".repeat(depth), "<<<---------------"); - return offset; -}; -UTIF2._writeIFD = function(bin, types, data2, offset, ifd) { - var keys2 = Object.keys(ifd), knum = keys2.length; - if (ifd["exifIFD"]) knum--; - if (ifd["gpsiIFD"]) knum--; - bin.writeUshort(data2, offset, knum); - offset += 2; - var eoff = offset + knum * 12 + 4; - for (var ki = 0; ki < keys2.length; ki++) { - var key2 = keys2[ki]; - if (key2 == "t34665" || key2 == "t34853") continue; - if (key2 == "exifIFD") key2 = "t34665"; - if (key2 == "gpsiIFD") key2 = "t34853"; - var tag = parseInt(key2.slice(1)), type = types.main[tag]; - if (type == null) type = types.rest[tag]; - if (type == null || type == 0) throw new Error("unknown type of tag: " + tag); - var val2 = ifd[key2]; - if (tag == 34665) { - var outp = UTIF2._writeIFD(bin, types, data2, eoff, ifd["exifIFD"]); - val2 = [eoff]; - eoff = outp[1]; - } - if (tag == 34853) { - var outp = UTIF2._writeIFD(bin, UTIF2._types.gps, data2, eoff, ifd["gpsiIFD"]); - val2 = [eoff]; - eoff = outp[1]; - } - if (type == 2) val2 = val2[0] + "\0"; - var num = val2.length; - bin.writeUshort(data2, offset, tag); - offset += 2; - bin.writeUshort(data2, offset, type); - offset += 2; - bin.writeUint(data2, offset, num); - offset += 4; - var dlen = [-1, 1, 1, 2, 4, 8, 0, 1, 0, 4, 8, 0, 8][type] * num; - var toff = offset; - if (dlen > 4) { - bin.writeUint(data2, offset, eoff); - toff = eoff; - } - if (type == 1 || type == 7) { - for (var i = 0; i < num; i++) data2[toff + i] = val2[i]; - } else if (type == 2) { - bin.writeASCII(data2, toff, val2); - } else if (type == 3) { - for (var i = 0; i < num; i++) bin.writeUshort(data2, toff + 2 * i, val2[i]); - } else if (type == 4) { - for (var i = 0; i < num; i++) bin.writeUint(data2, toff + 4 * i, val2[i]); - } else if (type == 5 || type == 10) { - var wr = type == 5 ? bin.writeUint : bin.writeInt; - for (var i = 0; i < num; i++) { - var v = val2[i], nu = v[0], de2 = v[1]; - if (nu == null) throw "e"; - wr(data2, toff + 8 * i, nu); - wr(data2, toff + 8 * i + 4, de2); - } - } else if (type == 9) { - for (var i = 0; i < num; i++) bin.writeInt(data2, toff + 4 * i, val2[i]); - } else if (type == 12) { - for (var i = 0; i < num; i++) bin.writeDouble(data2, toff + 8 * i, val2[i]); - } else throw type; - if (dlen > 4) { - dlen += dlen & 1; - eoff += dlen; - } - offset += 4; - } - return [offset, eoff]; -}; -UTIF2.toRGBA8 = function(out, scl) { - function gamma(x3) { - return x3 < 31308e-7 ? 12.92 * x3 : 1.055 * Math.pow(x3, 1 / 2.4) - 0.055; - } - var w = out.width, h = out.height, area = w * h, qarea = area * 4, data2 = out.data; - var img = new Uint8Array(area * 4); - var intp = out["t262"] ? out["t262"][0] : 2, bps = out["t258"] ? Math.min(32, out["t258"][0]) : 1; - if (out["t262"] == null && bps == 1) intp = 0; - var smpls = out["t277"] ? out["t277"][0] : out["t258"] ? out["t258"].length : [1, 1, 3, 1, 1, 4, 3][intp]; - var sfmt = out["t339"] ? out["t339"][0] : null; - if (intp == 1 && bps == 32 && sfmt != 3) throw "e"; - var bpl = Math.ceil(smpls * bps * w / 8); - if (false) { - } else if (intp == 0) { - scl = 1 / 256; - for (var y2 = 0; y2 < h; y2++) { - var off = y2 * bpl, io = y2 * w; - if (bps == 1) for (var i = 0; i < w; i++) { - var qi = io + i << 2, px = data2[off + (i >> 3)] >> 7 - (i & 7) & 1; - img[qi] = img[qi + 1] = img[qi + 2] = (1 - px) * 255; - img[qi + 3] = 255; - } - if (bps == 4) for (var i = 0; i < w; i++) { - var qi = io + i << 2, px = data2[off + (i >> 1)] >> 4 - 4 * (i & 1) & 15; - img[qi] = img[qi + 1] = img[qi + 2] = (15 - px) * 17; - img[qi + 3] = 255; - } - if (bps == 8) for (var i = 0; i < w; i++) { - var qi = io + i << 2, px = data2[off + i]; - img[qi] = img[qi + 1] = img[qi + 2] = 255 - px; - img[qi + 3] = 255; - } - if (bps == 16) for (var i = 0; i < w; i++) { - var qi = io + i << 2, o = off + 2 * i, px = data2[o + 1] << 8 | data2[o]; - img[qi] = img[qi + 1] = img[qi + 2] = Math.min(255, 255 - ~~(px * scl)); - img[qi + 3] = 255; - } - } - } else if (intp == 1) { - if (scl == null) scl = 1 / 256; - var f32 = (data2.length & 3) == 0 ? new Float32Array(data2.buffer) : null; - for (var y2 = 0; y2 < h; y2++) { - var off = y2 * bpl, io = y2 * w; - if (bps == 1) for (var i = 0; i < w; i++) { - var qi = io + i << 2, px = data2[off + (i >> 3)] >> 7 - (i & 7) & 1; - img[qi] = img[qi + 1] = img[qi + 2] = px * 255; - img[qi + 3] = 255; - } - if (bps == 2) for (var i = 0; i < w; i++) { - var qi = io + i << 2, px = data2[off + (i >> 2)] >> 6 - 2 * (i & 3) & 3; - img[qi] = img[qi + 1] = img[qi + 2] = px * 85; - img[qi + 3] = 255; - } - if (bps == 8) for (var i = 0; i < w; i++) { - var qi = io + i << 2, px = data2[off + i * smpls]; - img[qi] = img[qi + 1] = img[qi + 2] = px; - img[qi + 3] = 255; - } - if (bps == 16) for (var i = 0; i < w; i++) { - var qi = io + i << 2, o = off + 2 * i, px = data2[o + 1] << 8 | data2[o]; - img[qi] = img[qi + 1] = img[qi + 2] = Math.min(255, ~~(px * scl)); - img[qi + 3] = 255; - } - if (bps == 32) for (var i = 0; i < w; i++) { - var qi = io + i << 2, o = (off >>> 2) + i, px = f32[o]; - img[qi] = img[qi + 1] = img[qi + 2] = ~~(0.5 + 255 * px); - img[qi + 3] = 255; - } - } - } else if (intp == 2) { - if (bps == 8) { - if (smpls == 1) for (var i = 0; i < area; i++) { - img[4 * i] = img[4 * i + 1] = img[4 * i + 2] = data2[i]; - img[4 * i + 3] = 255; - } - if (smpls == 3) for (var i = 0; i < area; i++) { - var qi = i << 2, ti = i * 3; - img[qi] = data2[ti]; - img[qi + 1] = data2[ti + 1]; - img[qi + 2] = data2[ti + 2]; - img[qi + 3] = 255; - } - if (smpls >= 4) for (var i = 0; i < area; i++) { - var qi = i << 2, ti = i * smpls; - img[qi] = data2[ti]; - img[qi + 1] = data2[ti + 1]; - img[qi + 2] = data2[ti + 2]; - img[qi + 3] = data2[ti + 3]; - } - } else if (bps == 16) { - if (smpls == 4) for (var i = 0; i < area; i++) { - var qi = i << 2, ti = i * 8 + 1; - img[qi] = data2[ti]; - img[qi + 1] = data2[ti + 2]; - img[qi + 2] = data2[ti + 4]; - img[qi + 3] = data2[ti + 6]; - } - if (smpls == 3) for (var i = 0; i < area; i++) { - var qi = i << 2, ti = i * 6 + 1; - img[qi] = data2[ti]; - img[qi + 1] = data2[ti + 2]; - img[qi + 2] = data2[ti + 4]; - img[qi + 3] = 255; - } - } else if (bps == 32) { - var ndt = new Float32Array(data2.buffer); - var min = 0; - for (var i = 0; i < ndt.length; i++) min = Math.min(min, ndt[i]); - if (min < 0) for (var i = 0; i < data2.length; i += 4) { - var t3 = data2[i]; - data2[i] = data2[i + 3]; - data2[i + 3] = t3; - t3 = data2[i + 1]; - data2[i + 1] = data2[i + 2]; - data2[i + 2] = t3; - } - var pmap = []; - for (var i = 0; i < 65536; i++) pmap.push(gamma(i / 65535)); - for (var i = 0; i < ndt.length; i++) { - var cv = Math.max(0, Math.min(1, ndt[i])); - ndt[i] = pmap[~~(0.5 + cv * 65535)]; - } - if (smpls == 3) for (var i = 0; i < area; i++) { - var qi = i << 2, ti = i * 3; - img[qi] = ~~(0.5 + ndt[ti] * 255); - img[qi + 1] = ~~(0.5 + ndt[ti + 1] * 255); - img[qi + 2] = ~~(0.5 + ndt[ti + 2] * 255); - img[qi + 3] = 255; - } - else if (smpls == 4) for (var i = 0; i < area; i++) { - var qi = i << 2, ti = i * 4; - img[qi] = ~~(0.5 + ndt[ti] * 255); - img[qi + 1] = ~~(0.5 + ndt[ti + 1] * 255); - img[qi + 2] = ~~(0.5 + ndt[ti + 2] * 255); - img[qi + 3] = ~~(0.5 + ndt[ti + 3] * 255); - } - else throw smpls; - } else throw bps; - } else if (intp == 3) { - var map2 = out["t320"]; - var cn = 1 << bps; - var nexta = bps == 8 && smpls > 1 && out["t338"] && out["t338"][0] != 0; - for (var y2 = 0; y2 < h; y2++) - for (var x2 = 0; x2 < w; x2++) { - var i = y2 * w + x2; - var qi = i << 2, mi2 = 0; - var dof = y2 * bpl; - if (false) { - } else if (bps == 1) mi2 = data2[dof + (x2 >>> 3)] >>> 7 - (x2 & 7) & 1; - else if (bps == 2) mi2 = data2[dof + (x2 >>> 2)] >>> 6 - 2 * (x2 & 3) & 3; - else if (bps == 4) mi2 = data2[dof + (x2 >>> 1)] >>> 4 - 4 * (x2 & 1) & 15; - else if (bps == 8) mi2 = data2[dof + x2 * smpls]; - else throw bps; - img[qi] = map2[mi2] >> 8; - img[qi + 1] = map2[cn + mi2] >> 8; - img[qi + 2] = map2[cn + cn + mi2] >> 8; - img[qi + 3] = nexta ? data2[dof + x2 * smpls + 1] : 255; - } - } else if (intp == 5) { - var gotAlpha = smpls > 4 ? 1 : 0; - for (var i = 0; i < area; i++) { - var qi = i << 2, si = i * smpls; - if (window.UDOC) { - var C2 = data2[si], M = data2[si + 1], Y2 = data2[si + 2], K = data2[si + 3]; - var c2 = UDOC.C.cmykToRgb([C2 * (1 / 255), M * (1 / 255), Y2 * (1 / 255), K * (1 / 255)]); - img[qi] = ~~(0.5 + 255 * c2[0]); - img[qi + 1] = ~~(0.5 + 255 * c2[1]); - img[qi + 2] = ~~(0.5 + 255 * c2[2]); - } else { - var C2 = 255 - data2[si], M = 255 - data2[si + 1], Y2 = 255 - data2[si + 2], K = (255 - data2[si + 3]) * (1 / 255); - img[qi] = ~~(C2 * K + 0.5); - img[qi + 1] = ~~(M * K + 0.5); - img[qi + 2] = ~~(Y2 * K + 0.5); - } - img[qi + 3] = 255 * (1 - gotAlpha) + data2[si + 4] * gotAlpha; - } - } else if (intp == 6 && out["t278"]) { - var rps = out["t278"][0]; - for (var y2 = 0; y2 < h; y2 += rps) { - var i = y2 * w, len = rps * w; - for (var j = 0; j < len; j++) { - var qi = 4 * (i + j), si = 3 * i + 4 * (j >>> 1); - var Y2 = data2[si + (j & 1)], Cb = data2[si + 2] - 128, Cr = data2[si + 3] - 128; - var r = Y2 + ((Cr >> 2) + (Cr >> 3) + (Cr >> 5)); - var g2 = Y2 - ((Cb >> 2) + (Cb >> 4) + (Cb >> 5)) - ((Cr >> 1) + (Cr >> 3) + (Cr >> 4) + (Cr >> 5)); - var b3 = Y2 + (Cb + (Cb >> 1) + (Cb >> 2) + (Cb >> 6)); - img[qi] = Math.max(0, Math.min(255, r)); - img[qi + 1] = Math.max(0, Math.min(255, g2)); - img[qi + 2] = Math.max(0, Math.min(255, b3)); - img[qi + 3] = 255; - } - } - } else if (intp == 32845) { - for (var y2 = 0; y2 < h; y2++) - for (var x2 = 0; x2 < w; x2++) { - var si = (y2 * w + x2) * 6, qi = (y2 * w + x2) * 4; - var L = data2[si + 1] << 8 | data2[si]; - var L = Math.pow(2, (L + 0.5) / 256 - 64); - var u = (data2[si + 3] + 0.5) / 410; - var v = (data2[si + 5] + 0.5) / 410; - var sX = 9 * u / (6 * u - 16 * v + 12); - var sY = 4 * v / (6 * u - 16 * v + 12); - var bY = L; - var X2 = sX * bY / sY, Y2 = bY, Z2 = (1 - sX - sY) * bY / sY; - var r = 2.69 * X2 - 1.276 * Y2 - 0.414 * Z2; - var g2 = -1.022 * X2 + 1.978 * Y2 + 0.044 * Z2; - var b3 = 0.061 * X2 - 0.224 * Y2 + 1.163 * Z2; - img[qi] = gamma(Math.min(r, 1)) * 255; - img[qi + 1] = gamma(Math.min(g2, 1)) * 255; - img[qi + 2] = gamma(Math.min(b3, 1)) * 255; - img[qi + 3] = 255; - } - } else log("Unknown Photometric interpretation: " + intp); - return img; -}; -UTIF2.replaceIMG = function(imgs) { - if (imgs == null) imgs = document.getElementsByTagName("img"); - var sufs = ["tif", "tiff", "dng", "cr2", "nef"]; - for (var i = 0; i < imgs.length; i++) { - var img = imgs[i], src = img.getAttribute("src"); - if (src == null) continue; - var suff = src.split(".").pop().toLowerCase(); - if (sufs.indexOf(suff) == -1) continue; - var xhr = new XMLHttpRequest(); - UTIF2._xhrs.push(xhr); - UTIF2._imgs.push(img); - xhr.open("GET", src); - xhr.responseType = "arraybuffer"; - xhr.onload = UTIF2._imgLoaded; - xhr.send(); - } -}; -UTIF2._xhrs = []; -UTIF2._imgs = []; -UTIF2._imgLoaded = function(e) { - var ind = UTIF2._xhrs.indexOf(e.target), img = UTIF2._imgs[ind]; - UTIF2._xhrs.splice(ind, 1); - UTIF2._imgs.splice(ind, 1); - img.setAttribute("src", UTIF2.bufferToURI(e.target.response)); -}; -UTIF2.bufferToURI = function(buff) { - var ifds = UTIF2.decode(buff); - var vsns = ifds, ma = 0, page = vsns[0]; - if (ifds[0].subIFD) vsns = vsns.concat(ifds[0].subIFD); - for (var i = 0; i < vsns.length; i++) { - var img = vsns[i]; - if (img["t258"] == null || img["t258"].length < 3) continue; - var ar = img["t256"] * img["t257"]; - if (ar > ma) { - ma = ar; - page = img; - } - } - UTIF2.decodeImage(buff, page, ifds); - var rgba = UTIF2.toRGBA8(page), w = page.width, h = page.height; - var cnv = document.createElement("canvas"); - cnv.width = w; - cnv.height = h; - var ctx = cnv.getContext("2d"); - var imgd = new ImageData(new Uint8ClampedArray(rgba.buffer), w, h); - ctx.putImageData(imgd, 0, 0); - return cnv.toDataURL(); -}; -UTIF2._binBE = { - nextZero: function(data2, o) { - while (data2[o] != 0) o++; - return o; - }, - readUshort: function(buff, p2) { - return buff[p2] << 8 | buff[p2 + 1]; - }, - readShort: function(buff, p2) { - var a2 = UTIF2._binBE.ui8; - a2[0] = buff[p2 + 1]; - a2[1] = buff[p2 + 0]; - return UTIF2._binBE.i16[0]; - }, - readInt: function(buff, p2) { - var a2 = UTIF2._binBE.ui8; - a2[0] = buff[p2 + 3]; - a2[1] = buff[p2 + 2]; - a2[2] = buff[p2 + 1]; - a2[3] = buff[p2 + 0]; - return UTIF2._binBE.i32[0]; - }, - readUint: function(buff, p2) { - var a2 = UTIF2._binBE.ui8; - a2[0] = buff[p2 + 3]; - a2[1] = buff[p2 + 2]; - a2[2] = buff[p2 + 1]; - a2[3] = buff[p2 + 0]; - return UTIF2._binBE.ui32[0]; - }, - readASCII: function(buff, p2, l2) { - var s = ""; - for (var i = 0; i < l2; i++) s += String.fromCharCode(buff[p2 + i]); - return s; - }, - readFloat: function(buff, p2) { - var a2 = UTIF2._binBE.ui8; - for (var i = 0; i < 4; i++) a2[i] = buff[p2 + 3 - i]; - return UTIF2._binBE.fl32[0]; - }, - readDouble: function(buff, p2) { - var a2 = UTIF2._binBE.ui8; - for (var i = 0; i < 8; i++) a2[i] = buff[p2 + 7 - i]; - return UTIF2._binBE.fl64[0]; - }, - writeUshort: function(buff, p2, n2) { - buff[p2] = n2 >> 8 & 255; - buff[p2 + 1] = n2 & 255; - }, - writeInt: function(buff, p2, n2) { - var a2 = UTIF2._binBE.ui8; - UTIF2._binBE.i32[0] = n2; - buff[p2 + 3] = a2[0]; - buff[p2 + 2] = a2[1]; - buff[p2 + 1] = a2[2]; - buff[p2 + 0] = a2[3]; - }, - writeUint: function(buff, p2, n2) { - buff[p2] = n2 >> 24 & 255; - buff[p2 + 1] = n2 >> 16 & 255; - buff[p2 + 2] = n2 >> 8 & 255; - buff[p2 + 3] = n2 >> 0 & 255; - }, - writeASCII: function(buff, p2, s) { - for (var i = 0; i < s.length; i++) buff[p2 + i] = s.charCodeAt(i); - }, - writeDouble: function(buff, p2, n2) { - UTIF2._binBE.fl64[0] = n2; - for (var i = 0; i < 8; i++) buff[p2 + i] = UTIF2._binBE.ui8[7 - i]; - } -}; -UTIF2._binBE.ui8 = new Uint8Array(8); -UTIF2._binBE.i16 = new Int16Array(UTIF2._binBE.ui8.buffer); -UTIF2._binBE.i32 = new Int32Array(UTIF2._binBE.ui8.buffer); -UTIF2._binBE.ui32 = new Uint32Array(UTIF2._binBE.ui8.buffer); -UTIF2._binBE.fl32 = new Float32Array(UTIF2._binBE.ui8.buffer); -UTIF2._binBE.fl64 = new Float64Array(UTIF2._binBE.ui8.buffer); -UTIF2._binLE = { - nextZero: UTIF2._binBE.nextZero, - readUshort: function(buff, p2) { - return buff[p2 + 1] << 8 | buff[p2]; - }, - readShort: function(buff, p2) { - var a2 = UTIF2._binBE.ui8; - a2[0] = buff[p2 + 0]; - a2[1] = buff[p2 + 1]; - return UTIF2._binBE.i16[0]; - }, - readInt: function(buff, p2) { - var a2 = UTIF2._binBE.ui8; - a2[0] = buff[p2 + 0]; - a2[1] = buff[p2 + 1]; - a2[2] = buff[p2 + 2]; - a2[3] = buff[p2 + 3]; - return UTIF2._binBE.i32[0]; - }, - readUint: function(buff, p2) { - var a2 = UTIF2._binBE.ui8; - a2[0] = buff[p2 + 0]; - a2[1] = buff[p2 + 1]; - a2[2] = buff[p2 + 2]; - a2[3] = buff[p2 + 3]; - return UTIF2._binBE.ui32[0]; - }, - readASCII: UTIF2._binBE.readASCII, - readFloat: function(buff, p2) { - var a2 = UTIF2._binBE.ui8; - for (var i = 0; i < 4; i++) a2[i] = buff[p2 + i]; - return UTIF2._binBE.fl32[0]; - }, - readDouble: function(buff, p2) { - var a2 = UTIF2._binBE.ui8; - for (var i = 0; i < 8; i++) a2[i] = buff[p2 + i]; - return UTIF2._binBE.fl64[0]; - }, - writeUshort: function(buff, p2, n2) { - buff[p2] = n2 & 255; - buff[p2 + 1] = n2 >> 8 & 255; - }, - writeInt: function(buff, p2, n2) { - var a2 = UTIF2._binBE.ui8; - UTIF2._binBE.i32[0] = n2; - buff[p2 + 0] = a2[0]; - buff[p2 + 1] = a2[1]; - buff[p2 + 2] = a2[2]; - buff[p2 + 3] = a2[3]; - }, - writeUint: function(buff, p2, n2) { - buff[p2] = n2 >>> 0 & 255; - buff[p2 + 1] = n2 >>> 8 & 255; - buff[p2 + 2] = n2 >>> 16 & 255; - buff[p2 + 3] = n2 >>> 24 & 255; - }, - writeASCII: UTIF2._binBE.writeASCII -}; -UTIF2._copyTile = function(tb, tw, th, b3, w, h, xoff, yoff) { - var xlim = Math.min(tw, w - xoff); - var ylim = Math.min(th, h - yoff); - for (var y2 = 0; y2 < ylim; y2++) { - var tof = (yoff + y2) * w + xoff; - var sof = y2 * tw; - for (var x2 = 0; x2 < xlim; x2++) b3[tof + x2] = tb[sof + x2]; - } -}; -UTIF2._inflateRaw = function() { - var H = {}; - H.H = {}; - H.H.N = function(N, W) { - var R4 = Uint8Array, i = 0, m = 0, J = 0, h = 0, Q3 = 0, X2 = 0, u = 0, w = 0, d = 0, v, C2; - if (N[0] == 3 && N[1] == 0) return W ? W : new R4(0); - var V = H.H, n2 = V.b, A2 = V.e, l2 = V.R, M = V.n, I2 = V.A, e = V.Z, b3 = V.m, Z2 = W == null; - if (Z2) W = new R4(N.length >>> 2 << 5); - while (i == 0) { - i = n2(N, d, 1); - m = n2(N, d + 1, 2); - d += 3; - if (m == 0) { - if ((d & 7) != 0) d += 8 - (d & 7); - var D = (d >>> 3) + 4, q2 = N[D - 4] | N[D - 3] << 8; - if (Z2) W = H.H.W(W, w + q2); - W.set(new R4(N.buffer, N.byteOffset + D, q2), w); - d = D + q2 << 3; - w += q2; - continue; - } - if (Z2) W = H.H.W(W, w + (1 << 17)); - if (m == 1) { - v = b3.J; - C2 = b3.h; - X2 = (1 << 9) - 1; - u = (1 << 5) - 1; - } - if (m == 2) { - J = A2(N, d, 5) + 257; - h = A2(N, d + 5, 5) + 1; - Q3 = A2(N, d + 10, 4) + 4; - d += 14; - var E2 = d, j = 1; - for (var c2 = 0; c2 < 38; c2 += 2) { - b3.Q[c2] = 0; - b3.Q[c2 + 1] = 0; - } - for (var c2 = 0; c2 < Q3; c2++) { - var K = A2(N, d + c2 * 3, 3); - b3.Q[(b3.X[c2] << 1) + 1] = K; - if (K > j) j = K; - } - d += 3 * Q3; - M(b3.Q, j); - I2(b3.Q, j, b3.u); - v = b3.w; - C2 = b3.d; - d = l2(b3.u, (1 << j) - 1, J + h, N, d, b3.v); - var r = V.V(b3.v, 0, J, b3.C); - X2 = (1 << r) - 1; - var S = V.V(b3.v, J, h, b3.D); - u = (1 << S) - 1; - M(b3.C, r); - I2(b3.C, r, v); - M(b3.D, S); - I2(b3.D, S, C2); - } - while (true) { - var T = v[e(N, d) & X2]; - d += T & 15; - var p2 = T >>> 4; - if (p2 >>> 8 == 0) { - W[w++] = p2; - } else if (p2 == 256) { - break; - } else { - var z = w + p2 - 254; - if (p2 > 264) { - var _ = b3.q[p2 - 257]; - z = w + (_ >>> 3) + A2(N, d, _ & 7); - d += _ & 7; - } - var $2 = C2[e(N, d) & u]; - d += $2 & 15; - var s = $2 >>> 4, Y2 = b3.c[s], a2 = (Y2 >>> 4) + n2(N, d, Y2 & 15); - d += Y2 & 15; - while (w < z) { - W[w] = W[w++ - a2]; - W[w] = W[w++ - a2]; - W[w] = W[w++ - a2]; - W[w] = W[w++ - a2]; - } - w = z; - } - } - } - return W.length == w ? W : W.slice(0, w); - }; - H.H.W = function(N, W) { - var R4 = N.length; - if (W <= R4) return N; - var V = new Uint8Array(R4 << 1); - V.set(N, 0); - return V; - }; - H.H.R = function(N, W, R4, V, n2, A2) { - var l2 = H.H.e, M = H.H.Z, I2 = 0; - while (I2 < R4) { - var e = N[M(V, n2) & W]; - n2 += e & 15; - var b3 = e >>> 4; - if (b3 <= 15) { - A2[I2] = b3; - I2++; - } else { - var Z2 = 0, m = 0; - if (b3 == 16) { - m = 3 + l2(V, n2, 2); - n2 += 2; - Z2 = A2[I2 - 1]; - } else if (b3 == 17) { - m = 3 + l2(V, n2, 3); - n2 += 3; - } else if (b3 == 18) { - m = 11 + l2(V, n2, 7); - n2 += 7; - } - var J = I2 + m; - while (I2 < J) { - A2[I2] = Z2; - I2++; - } - } - } - return n2; - }; - H.H.V = function(N, W, R4, V) { - var n2 = 0, A2 = 0, l2 = V.length >>> 1; - while (A2 < R4) { - var M = N[A2 + W]; - V[A2 << 1] = 0; - V[(A2 << 1) + 1] = M; - if (M > n2) n2 = M; - A2++; - } - while (A2 < l2) { - V[A2 << 1] = 0; - V[(A2 << 1) + 1] = 0; - A2++; - } - return n2; - }; - H.H.n = function(N, W) { - var R4 = H.H.m, V = N.length, n2, A2, l2, M, I2, e = R4.j; - for (var M = 0; M <= W; M++) e[M] = 0; - for (M = 1; M < V; M += 2) e[N[M]]++; - var b3 = R4.K; - n2 = 0; - e[0] = 0; - for (A2 = 1; A2 <= W; A2++) { - n2 = n2 + e[A2 - 1] << 1; - b3[A2] = n2; - } - for (l2 = 0; l2 < V; l2 += 2) { - I2 = N[l2 + 1]; - if (I2 != 0) { - N[l2] = b3[I2]; - b3[I2]++; - } - } - }; - H.H.A = function(N, W, R4) { - var V = N.length, n2 = H.H.m, A2 = n2.r; - for (var l2 = 0; l2 < V; l2 += 2) if (N[l2 + 1] != 0) { - var M = l2 >> 1, I2 = N[l2 + 1], e = M << 4 | I2, b3 = W - I2, Z2 = N[l2] << b3, m = Z2 + (1 << b3); - while (Z2 != m) { - var J = A2[Z2] >>> 15 - W; - R4[J] = e; - Z2++; - } - } - }; - H.H.l = function(N, W) { - var R4 = H.H.m.r, V = 15 - W; - for (var n2 = 0; n2 < N.length; n2 += 2) { - var A2 = N[n2] << W - N[n2 + 1]; - N[n2] = R4[A2] >>> V; - } - }; - H.H.M = function(N, W, R4) { - R4 = R4 << (W & 7); - var V = W >>> 3; - N[V] |= R4; - N[V + 1] |= R4 >>> 8; - }; - H.H.I = function(N, W, R4) { - R4 = R4 << (W & 7); - var V = W >>> 3; - N[V] |= R4; - N[V + 1] |= R4 >>> 8; - N[V + 2] |= R4 >>> 16; - }; - H.H.e = function(N, W, R4) { - return (N[W >>> 3] | N[(W >>> 3) + 1] << 8) >>> (W & 7) & (1 << R4) - 1; - }; - H.H.b = function(N, W, R4) { - return (N[W >>> 3] | N[(W >>> 3) + 1] << 8 | N[(W >>> 3) + 2] << 16) >>> (W & 7) & (1 << R4) - 1; - }; - H.H.Z = function(N, W) { - return (N[W >>> 3] | N[(W >>> 3) + 1] << 8 | N[(W >>> 3) + 2] << 16) >>> (W & 7); - }; - H.H.i = function(N, W) { - return (N[W >>> 3] | N[(W >>> 3) + 1] << 8 | N[(W >>> 3) + 2] << 16 | N[(W >>> 3) + 3] << 24) >>> (W & 7); - }; - H.H.m = function() { - var N = Uint16Array, W = Uint32Array; - return { K: new N(16), j: new N(16), X: [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], S: [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 999, 999, 999], T: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0], q: new N(32), p: [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 65535, 65535], z: [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 0, 0], c: new W(32), J: new N(512), _: [], h: new N(32), $: [], w: new N(32768), C: [], v: [], d: new N(32768), D: [], u: new N(512), Q: [], r: new N(1 << 15), s: new W(286), Y: new W(30), a: new W(19), t: new W(15e3), k: new N(1 << 16), g: new N(1 << 15) }; - }(); - (function() { - var N = H.H.m, W = 1 << 15; - for (var R4 = 0; R4 < W; R4++) { - var V = R4; - V = (V & 2863311530) >>> 1 | (V & 1431655765) << 1; - V = (V & 3435973836) >>> 2 | (V & 858993459) << 2; - V = (V & 4042322160) >>> 4 | (V & 252645135) << 4; - V = (V & 4278255360) >>> 8 | (V & 16711935) << 8; - N.r[R4] = (V >>> 16 | V << 16) >>> 17; - } - function n2(A2, l2, M) { - while (l2-- != 0) A2.push(0, M); - } - for (var R4 = 0; R4 < 32; R4++) { - N.q[R4] = N.S[R4] << 3 | N.T[R4]; - N.c[R4] = N.p[R4] << 4 | N.z[R4]; - } - n2(N._, 144, 8); - n2(N._, 255 - 143, 9); - n2(N._, 279 - 255, 7); - n2(N._, 287 - 279, 8); - H.H.n(N._, 9); - H.H.A(N._, 9, N.J); - H.H.l(N._, 9); - n2(N.$, 32, 5); - H.H.n(N.$, 5); - H.H.A(N.$, 5, N.h); - H.H.l(N.$, 5); - n2(N.Q, 19, 0); - n2(N.C, 286, 0); - n2(N.D, 30, 0); - n2(N.v, 320, 0); - })(); - return H.H.N; -}(); -UTIF2.LosslessJpegDecode = /* @__PURE__ */ function() { - var b3, O; - function l2() { - return b3[O++]; - } - function m() { - return b3[O++] << 8 | b3[O++]; - } - function a0(h) { - var V = l2(), I2 = [0, 0, 0, 255], f = [], G = 8; - for (var w = 0; w < 16; w++) f[w] = l2(); - for (var w = 0; w < 16; w++) { - for (var x2 = 0; x2 < f[w]; x2++) { - var T = z(I2, 0, w + 1, 1); - I2[T + 3] = l2(); - } - } - var E2 = new Uint8Array(1 << G); - h[V] = [new Uint8Array(I2), E2]; - for (var w = 0; w < 1 << G; w++) { - var s = G, _ = w, Y2 = 0, F2 = 0; - while (I2[Y2 + 3] == 255 && s != 0) { - F2 = _ >> --s & 1; - Y2 = I2[Y2 + F2]; - } - E2[w] = Y2; - } - } - function z(h, V, I2, f) { - if (h[V + 3] != 255) return 0; - if (I2 == 0) return V; - for (var w = 0; w < 2; w++) { - if (h[V + w] == 0) { - h[V + w] = h.length; - h.push(0, 0, f, 255); - } - var x2 = z(h, h[V + w], I2 - 1, f + 1); - if (x2 != 0) return x2; - } - return 0; - } - function i(h) { - var V = h.b, I2 = h.f; - while (V < 25 && h.a < h.d) { - var f = h.data[h.a++]; - if (f == 255 && !h.c) h.a++; - I2 = I2 << 8 | f; - V += 8; - } - if (V < 0) throw "e"; - h.b = V; - h.f = I2; - } - function H(h, V) { - if (V.b < h) i(V); - return V.f >> (V.b -= h) & 65535 >> 16 - h; - } - function g2(h, V) { - var I2 = h[0], f = 0, w = 255, x2 = 0; - if (V.b < 16) i(V); - var T = V.f >> V.b - 8 & 255; - f = h[1][T]; - w = I2[f + 3]; - V.b -= I2[f + 2]; - while (w == 255) { - x2 = V.f >> --V.b & 1; - f = I2[f + x2]; - w = I2[f + 3]; - } - return w; - } - function P(h, V) { - if (h < 32768 >> 16 - V) h += -(1 << V) + 1; - return h; - } - function a2(h, V) { - var I2 = g2(h, V); - if (I2 == 0) return 0; - if (I2 == 16) return -32768; - var f = H(I2, V); - return P(f, I2); - } - function X2(h, V, I2, f, w, x2) { - var T = 0; - for (var G = 0; G < x2; G++) { - var s = G * V; - for (var _ = 0; _ < V; _ += w) { - T++; - for (var Y2 = 0; Y2 < w; Y2++) h[s + _ + Y2] = a2(f[Y2], I2); - } - if (I2.e != 0 && T % I2.e == 0 && G != 0) { - var F2 = I2.a, t3 = I2.data; - while (t3[F2] != 255 || !(208 <= t3[F2 + 1] && t3[F2 + 1] <= 215)) F2--; - I2.a = F2 + 2; - I2.f = 0; - I2.b = 0; - } - } - } - function o(h, V) { - return P(H(h, V), h); - } - function a1(h, V, I2, f, w) { - var x2 = b3.length - O; - for (var T = 0; T < x2; T += 4) { - var G = b3[O + T]; - b3[O + T] = b3[O + T + 3]; - b3[O + T + 3] = G; - var G = b3[O + T + 1]; - b3[O + T + 1] = b3[O + T + 2]; - b3[O + T + 2] = G; - } - for (var E2 = 0; E2 < w; E2++) { - var s = 32768, _ = 32768; - for (var Y2 = 0; Y2 < V; Y2 += 2) { - var F2 = g2(f, I2), t3 = g2(f, I2); - if (F2 != 0) s += o(F2, I2); - if (t3 != 0) _ += o(t3, I2); - h[E2 * V + Y2] = s & 65535; - h[E2 * V + Y2 + 1] = _ & 65535; - } - } - } - function C2(h) { - b3 = h; - O = 0; - if (m() != 65496) throw "e"; - var V = [], I2 = 0, f = 0, w = 0, x2 = [], T = [], G = [], E2 = 0, s = 0, _ = 0; - while (true) { - var Y2 = m(); - if (Y2 == 65535) { - O--; - continue; - } - var F2 = m(); - if (Y2 == 65475) { - f = l2(); - s = m(); - _ = m(); - E2 = l2(); - for (var t3 = 0; t3 < E2; t3++) { - var a3 = l2(), J = l2(), r = l2(); - if (r != 0) throw "e"; - V[a3] = [t3, J >> 4, J & 15]; - } - } else if (Y2 == 65476) { - var a32 = O + F2 - 2; - while (O < a32) a0(T); - } else if (Y2 == 65498) { - O++; - for (var t3 = 0; t3 < E2; t3++) { - var a5 = l2(), v = V[a5]; - G[v[0]] = T[l2() >>> 4]; - x2[v[0]] = v.slice(1); - } - I2 = l2(); - O += 2; - break; - } else if (Y2 == 65501) { - w = m(); - } else { - O += F2 - 2; - } - } - var a4 = f > 8 ? Uint16Array : Uint8Array, $2 = new a4(s * _ * E2), M = { b: 0, f: 0, c: I2 == 8, a: O, data: b3, d: b3.length, e: w }; - if (M.c) a1($2, _ * E2, M, G[0], s); - else { - var c2 = [], p2 = 0, D = 0; - for (var t3 = 0; t3 < E2; t3++) { - var N = x2[t3], S = N[0], K = N[1]; - if (S > p2) p2 = S; - if (K > D) D = K; - c2.push(S * K); - } - if (p2 != 1 || D != 1) { - if (E2 != 3 || c2[1] != 1 || c2[2] != 1) throw "e"; - if (p2 != 2 || D != 1 && D != 2) throw "e"; - var u = [], Z2 = 0; - for (var t3 = 0; t3 < E2; t3++) { - for (var R4 = 0; R4 < c2[t3]; R4++) u.push(G[t3]); - Z2 += c2[t3]; - } - var B2 = _ / p2, e = s / D, d = B2 * e; - X2($2, B2 * Z2, M, u, Z2, e); - j($2, I2, B2, e, Z2 - 2, Z2, Z2, f); - var A2 = new Uint16Array(d * c2[0]); - if (p2 == 2 && D == 2) { - for (var t3 = 0; t3 < d; t3++) { - A2[4 * t3] = $2[6 * t3]; - A2[4 * t3 + 1] = $2[6 * t3 + 1]; - A2[4 * t3 + 2] = $2[6 * t3 + 2]; - A2[4 * t3 + 3] = $2[6 * t3 + 3]; - } - j(A2, I2, B2 * 4, e, 0, 1, 1, f); - for (var t3 = 0; t3 < d; t3++) { - $2[6 * t3] = A2[4 * t3]; - $2[6 * t3 + 1] = A2[4 * t3 + 1]; - $2[6 * t3 + 2] = A2[4 * t3 + 2]; - $2[6 * t3 + 3] = A2[4 * t3 + 3]; - } - } - if (p2 == 2 && D == 1) { - for (var t3 = 0; t3 < d; t3++) { - A2[2 * t3] = $2[4 * t3]; - A2[2 * t3 + 1] = $2[4 * t3 + 1]; - } - j(A2, I2, B2 * 2, e, 0, 1, 1, f); - for (var t3 = 0; t3 < d; t3++) { - $2[4 * t3] = A2[2 * t3]; - $2[4 * t3 + 1] = A2[2 * t3 + 1]; - } - } - var n2 = $2.slice(0); - for (var K = 0; K < s; K++) { - if (D == 2) for (var S = 0; S < _; S++) { - var q2 = (K * _ + S) * E2, k2 = ((K >>> 1) * B2 + (S >>> 1)) * Z2, y2 = (K & 1) * 2 + (S & 1); - $2[q2] = n2[k2 + y2]; - $2[q2 + 1] = n2[k2 + 4]; - $2[q2 + 2] = n2[k2 + 5]; - } - else for (var S = 0; S < _; S++) { - var q2 = (K * _ + S) * E2, k2 = (K * B2 + (S >>> 1)) * Z2, y2 = S & 1; - $2[q2] = n2[k2 + y2]; - $2[q2 + 1] = n2[k2 + 2]; - $2[q2 + 2] = n2[k2 + 3]; - } - } - } else { - X2($2, _ * E2, M, G, E2, s); - if (w == 0) j($2, I2, _, s, 0, E2, E2, f); - else { - var U = Math.floor(w / _); - for (var K = 0; K < s; K += U) { - var L = $2.slice(K * _ * E2, (K + U) * _ * E2); - j(L, I2, _, U, 0, E2, E2, f); - $2.set(L, K * _ * E2); - } - } - } - } - return $2; - } - function j(h, V, I2, f, w, x2, G, E2) { - var s = I2 * G; - for (var _ = w; _ < x2; _++) h[_] += 1 << E2 - 1; - for (var Y2 = G; Y2 < s; Y2 += G) for (var _ = w; _ < x2; _++) h[Y2 + _] += h[Y2 + _ - G]; - for (var F2 = 1; F2 < f; F2++) { - var t3 = F2 * s; - for (var _ = w; _ < x2; _++) h[t3 + _] += h[t3 + _ - s]; - for (var Y2 = G; Y2 < s; Y2 += G) { - for (var _ = w; _ < x2; _++) { - var a3 = t3 + Y2 + _, J = a3 - s, r = h[a3 - G], Q3 = 0; - if (V == 0) Q3 = 0; - else if (V == 1) Q3 = r; - else if (V == 2) Q3 = h[J]; - else if (V == 3) Q3 = h[J - G]; - else if (V == 4) Q3 = r + (h[J] - h[J - G]); - else if (V == 5) Q3 = r + (h[J] - h[J - G] >>> 1); - else if (V == 6) Q3 = h[J] + (r - h[J - G] >>> 1); - else if (V == 7) Q3 = r + h[J] >>> 1; - else throw V; - h[a3] += Q3; - } - } - } - } - return C2; -}(); -(function() { - var G = 0, F2 = 1, i = 2, b3 = 3, J = 4, N = 5, E2 = 6, s = 7, c2 = 8, T = 9, a3 = 10, f = 11, q2 = 12, M = 13, m = 14, x2 = 15, L = 16, $2 = 17, p2 = 18; - function a5(t3) { - var Z2 = UTIF2._binBE.readUshort, u = { b: Z2(t3, 0), i: t3[2], C: t3[3], u: t3[4], q: Z2(t3, 5), k: Z2(t3, 7), e: Z2(t3, 9), l: Z2(t3, 11), s: t3[13], d: Z2(t3, 14) }; - if (u.b != 18771 || u.i > 1 || u.q < 6 || u.q % 6 || u.e < 768 || u.e % 24 || u.l != 768 || u.k < u.l || u.k % u.l || u.k - u.e >= u.l || u.s > 16 || u.s != u.k / u.l || u.s != Math.ceil(u.e / u.l) || u.d != u.q / 6 || u.u != 12 && u.u != 14 && u.u != 16 || u.C != 16 && u.C != 0) { - throw "Invalid data"; - } - if (u.i == 0) { - throw "Not implemented. We need this file!"; - } - u.h = u.C == 16; - u.m = (u.h ? u.l * 2 / 3 : u.l >>> 1) | 0; - u.A = u.m + 2; - u.f = 64; - u.g = (1 << u.u) - 1; - u.n = 4 * u.u; - return u; - } - function a7(t3, Z2) { - var u = new Array(Z2.s), e = 4 * Z2.s, Q3 = 16 + e; - if (e & 12) Q3 += 16 - (e & 12); - for (var V = 0, O = 16; V < Z2.s; O += 4) { - var o = UTIF2._binBE.readUint(t3, O); - u[V] = t3.slice(Q3, Q3 + o); - u[V].j = 0; - u[V].a = 0; - Q3 += o; - V++; - } - if (Q3 != t3.length) throw "Invalid data"; - return u; - } - function a6(t3, Z2) { - for (var u = -Z2[4], e = 0; u <= Z2[4]; e++, u++) { - t3[e] = u <= -Z2[3] ? -4 : u <= -Z2[2] ? -3 : u <= -Z2[1] ? -2 : u < -Z2[0] ? -1 : u <= Z2[0] ? 0 : u < Z2[1] ? 1 : u < Z2[2] ? 2 : u < Z2[3] ? 3 : 4; - } - } - function a1(t3, Z2, u) { - var e = [Z2, 3 * Z2 + 18, 5 * Z2 + 67, 7 * Z2 + 276, u]; - t3.o = Z2; - t3.w = (e[4] + 2 * Z2) / (2 * Z2 + 1) + 1 | 0; - t3.v = Math.ceil(Math.log2(t3.w)); - t3.t = 9; - a6(t3.c, e); - } - function a2(t3) { - var Z2 = { c: new Int8Array(2 << t3.u) }; - a1(Z2, 0, t3.g); - return Z2; - } - function D(t3) { - var Z2 = [[], [], []], u = Math.max(2, t3.w + 32 >>> 6); - for (var e = 0; e < 3; e++) { - for (var Q3 = 0; Q3 < 41; Q3++) { - Z2[e][Q3] = [u, 1]; - } - } - return Z2; - } - function a4(t3) { - for (var Z2 = -1, u = 0; !u; Z2++) { - u = t3[t3.j] >>> 7 - t3.a & 1; - t3.a++; - t3.a &= 7; - if (!t3.a) t3.j++; - } - return Z2; - } - function K(t3, Z2) { - var u = 0, e = 8 - t3.a, Q3 = t3.j, V = t3.a; - if (Z2) { - if (Z2 >= e) { - do { - u <<= e; - Z2 -= e; - u |= t3[t3.j] & (1 << e) - 1; - t3.j++; - e = 8; - } while (Z2 >= 8); - } - if (Z2) { - u <<= Z2; - e -= Z2; - u |= t3[t3.j] >>> e & (1 << Z2) - 1; - } - t3.a = 8 - e; - } - return u; - } - function a0(t3, Z2) { - var u = 0; - if (Z2 < t3) { - while (u <= 14 && Z2 << ++u < t3) ; - } - return u; - } - function r(t3, Z2, u, e, Q3, V, O, o) { - if (o == null) o = 0; - var X2 = V + 1, k2 = X2 % 2, j = 0, I2 = 0, a10 = 0, l2, R4, w = e[Q3], S = e[Q3 - 1], H = e[Q3 - 2][X2], g2 = S[X2 - 1], Y2 = S[X2], P = S[X2 + 1], A2 = w[X2 - 1], v = w[X2 + 1], y2 = Math.abs, d, C2, n2, h; - if (k2) { - d = y2(P - Y2); - C2 = y2(H - Y2); - n2 = y2(g2 - Y2); - } - if (k2) { - h = d > n2 && C2 < d ? H + g2 : d < n2 && C2 < n2 ? H + P : P + g2; - h = h + 2 * Y2 >>> 2; - if (o) { - w[X2] = h; - return; - } - l2 = Z2.t * Z2.c[t3.g + Y2 - H] + Z2.c[t3.g + g2 - Y2]; - } else { - h = Y2 > g2 && Y2 > P || Y2 < g2 && Y2 < P ? v + A2 + 2 * Y2 >>> 2 : A2 + v >>> 1; - l2 = Z2.t * Z2.c[t3.g + Y2 - g2] + Z2.c[t3.g + g2 - A2]; - } - R4 = y2(l2); - var W = a4(u); - if (W < t3.n - Z2.v - 1) { - var z = a0(O[R4][0], O[R4][1]); - a10 = K(u, z) + (W << z); - } else { - a10 = K(u, Z2.v) + 1; - } - a10 = a10 & 1 ? -1 - (a10 >>> 1) : a10 >>> 1; - O[R4][0] += y2(a10); - if (O[R4][1] == t3.f) { - O[R4][0] >>>= 1; - O[R4][1] >>>= 1; - } - O[R4][1]++; - h = l2 < 0 ? h - a10 : h + a10; - if (t3.i) { - if (h < 0) h += Z2.w; - else if (h > t3.g) h -= Z2.w; - } - w[X2] = h >= 0 ? Math.min(h, t3.g) : 0; - } - function U(t3, Z2, u) { - var e = t3[0].length; - for (var Q3 = Z2; Q3 <= u; Q3++) { - t3[Q3][0] = t3[Q3 - 1][1]; - t3[Q3][e - 1] = t3[Q3 - 1][e - 2]; - } - } - function B2(t3) { - U(t3, s, q2); - U(t3, i, J); - U(t3, x2, $2); - } - function _(t3, Z2, u, e, Q3, V, O, o, X2, k2, j, I2, a10) { - var l2 = 0, R4 = 1, w = Q3 < M && Q3 > J; - while (R4 < t3.m) { - if (l2 < t3.m) { - r(t3, Z2, u, e, Q3, l2, O[X2], t3.h && (w && k2 || !w && (j || (l2 & I2) == a10))); - r(t3, Z2, u, e, V, l2, O[X2], t3.h && (!w && k2 || w && (j || (l2 & I2) == a10))); - l2 += 2; - } - if (l2 > 8) { - r(t3, Z2, u, e, Q3, R4, o[X2]); - r(t3, Z2, u, e, V, R4, o[X2]); - R4 += 2; - } - } - B2(e); - } - function a8(t3, Z2, u, e, Q3, V) { - _(t3, Z2, u, e, i, s, Q3, V, 0, 0, 1, 0, 8); - _(t3, Z2, u, e, c2, x2, Q3, V, 1, 0, 1, 0, 8); - _(t3, Z2, u, e, b3, T, Q3, V, 2, 1, 0, 3, 0); - _(t3, Z2, u, e, a3, L, Q3, V, 0, 0, 0, 3, 2); - _(t3, Z2, u, e, J, f, Q3, V, 1, 0, 0, 3, 2); - _(t3, Z2, u, e, q2, $2, Q3, V, 2, 1, 0, 3, 0); - } - function a9(t3, Z2, u, e, Q3, V) { - var O = V.length, o = t3.l; - if (Q3 + 1 == t3.s) o = t3.e - Q3 * t3.l; - var X2 = 6 * t3.e * e + Q3 * t3.l; - for (var k2 = 0; k2 < 6; k2++) { - for (var j = 0; j < o; j++) { - var I2 = V[k2 % O][j % O], a10; - if (I2 == 0) { - a10 = i + (k2 >>> 1); - } else if (I2 == 2) { - a10 = x2 + (k2 >>> 1); - } else { - a10 = s + k2; - } - var l2 = t3.h ? (j * 2 / 3 & 2147483646 | j % 3 & 1) + (j % 3 >>> 1) : j >>> 1; - Z2[X2 + j] = u[a10][l2 + 1]; - } - X2 += t3.e; - } - } - UTIF2._decompressRAF = function(t3, Z2) { - var u = a5(t3), e = a7(t3, u), Q3 = a2(u), V = new Int16Array(u.e * u.q); - if (Z2 == null) { - Z2 = u.h ? [[1, 1, 0, 1, 1, 2], [1, 1, 2, 1, 1, 0], [2, 0, 1, 0, 2, 1], [1, 1, 2, 1, 1, 0], [1, 1, 0, 1, 1, 2], [0, 2, 1, 2, 0, 1]] : [[0, 1], [3, 2]]; - } - var O = [[G, b3], [F2, J], [N, f], [E2, q2], [M, L], [m, $2]], o = []; - for (var X2 = 0; X2 < p2; X2++) { - o[X2] = new Uint16Array(u.A); - } - for (var k2 = 0; k2 < u.s; k2++) { - var j = D(Q3), I2 = D(Q3); - for (var X2 = 0; X2 < p2; X2++) { - for (var a10 = 0; a10 < u.A; a10++) { - o[X2][a10] = 0; - } - } - for (var l2 = 0; l2 < u.d; l2++) { - a8(u, Q3, e[k2], o, j, I2); - for (var X2 = 0; X2 < 6; X2++) { - for (var a10 = 0; a10 < u.A; a10++) { - o[O[X2][0]][a10] = o[O[X2][1]][a10]; - } - } - a9(u, V, o, l2, k2, Z2); - for (var X2 = i; X2 < p2; X2++) { - if ([N, E2, M, m].indexOf(X2) == -1) { - for (var a10 = 0; a10 < u.A; a10++) { - o[X2][a10] = 0; - } - } - } - B2(o); - } - } - return V; - }; -})(); -var utif_module_default = UTIF2; - -// node_modules/three/examples/jsm/loaders/TIFFLoader.js -var TIFFLoader = class extends DataTextureLoader { - constructor(manager) { - super(manager); - } - parse(buffer) { - const ifds = utif_module_default.decode(buffer); - utif_module_default.decodeImage(buffer, ifds[0]); - const rgba = utif_module_default.toRGBA8(ifds[0]); - return { - width: ifds[0].width, - height: ifds[0].height, - data: rgba, - flipY: true, - magFilter: LinearFilter, - minFilter: LinearMipmapLinearFilter - }; - } -}; - -// node_modules/three/examples/jsm/libs/opentype.module.js -if (!String.prototype.codePointAt) { - (function() { - var defineProperty = function() { - try { - var object = {}; - var $defineProperty = Object.defineProperty; - var result = $defineProperty(object, object, object) && $defineProperty; - } catch (error) { - } - return result; - }(); - var codePointAt = function(position2) { - if (this == null) { - throw TypeError(); - } - var string = String(this); - var size2 = string.length; - var index2 = position2 ? Number(position2) : 0; - if (index2 != index2) { - index2 = 0; - } - if (index2 < 0 || index2 >= size2) { - return void 0; - } - var first2 = string.charCodeAt(index2); - var second; - if ( - // check if it’s the start of a surrogate pair - first2 >= 55296 && first2 <= 56319 && // high surrogate - size2 > index2 + 1 - ) { - second = string.charCodeAt(index2 + 1); - if (second >= 56320 && second <= 57343) { - return (first2 - 55296) * 1024 + second - 56320 + 65536; - } - } - return first2; - }; - if (defineProperty) { - defineProperty(String.prototype, "codePointAt", { - "value": codePointAt, - "configurable": true, - "writable": true - }); - } else { - String.prototype.codePointAt = codePointAt; - } - })(); -} -var TINF_OK = 0; -var TINF_DATA_ERROR = -3; -function Tree() { - this.table = new Uint16Array(16); - this.trans = new Uint16Array(288); -} -function Data(source, dest) { - this.source = source; - this.sourceIndex = 0; - this.tag = 0; - this.bitcount = 0; - this.dest = dest; - this.destLen = 0; - this.ltree = new Tree(); - this.dtree = new Tree(); -} -var sltree = new Tree(); -var sdtree = new Tree(); -var length_bits = new Uint8Array(30); -var length_base = new Uint16Array(30); -var dist_bits = new Uint8Array(30); -var dist_base = new Uint16Array(30); -var clcidx = new Uint8Array([ - 16, - 17, - 18, - 0, - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15 -]); -var code_tree = new Tree(); -var lengths = new Uint8Array(288 + 32); -function tinf_build_bits_base(bits2, base, delta, first2) { - var i, sum2; - for (i = 0; i < delta; ++i) { - bits2[i] = 0; - } - for (i = 0; i < 30 - delta; ++i) { - bits2[i + delta] = i / delta | 0; - } - for (sum2 = first2, i = 0; i < 30; ++i) { - base[i] = sum2; - sum2 += 1 << bits2[i]; - } -} -function tinf_build_fixed_trees(lt, dt2) { - var i; - for (i = 0; i < 7; ++i) { - lt.table[i] = 0; - } - lt.table[7] = 24; - lt.table[8] = 152; - lt.table[9] = 112; - for (i = 0; i < 24; ++i) { - lt.trans[i] = 256 + i; - } - for (i = 0; i < 144; ++i) { - lt.trans[24 + i] = i; - } - for (i = 0; i < 8; ++i) { - lt.trans[24 + 144 + i] = 280 + i; - } - for (i = 0; i < 112; ++i) { - lt.trans[24 + 144 + 8 + i] = 144 + i; - } - for (i = 0; i < 5; ++i) { - dt2.table[i] = 0; - } - dt2.table[5] = 32; - for (i = 0; i < 32; ++i) { - dt2.trans[i] = i; - } -} -var offs = new Uint16Array(16); -function tinf_build_tree(t3, lengths2, off, num) { - var i, sum2; - for (i = 0; i < 16; ++i) { - t3.table[i] = 0; - } - for (i = 0; i < num; ++i) { - t3.table[lengths2[off + i]]++; - } - t3.table[0] = 0; - for (sum2 = 0, i = 0; i < 16; ++i) { - offs[i] = sum2; - sum2 += t3.table[i]; - } - for (i = 0; i < num; ++i) { - if (lengths2[off + i]) { - t3.trans[offs[lengths2[off + i]]++] = i; - } - } -} -function tinf_getbit(d) { - if (!d.bitcount--) { - d.tag = d.source[d.sourceIndex++]; - d.bitcount = 7; - } - var bit = d.tag & 1; - d.tag >>>= 1; - return bit; -} -function tinf_read_bits(d, num, base) { - if (!num) { - return base; - } - while (d.bitcount < 24) { - d.tag |= d.source[d.sourceIndex++] << d.bitcount; - d.bitcount += 8; - } - var val2 = d.tag & 65535 >>> 16 - num; - d.tag >>>= num; - d.bitcount -= num; - return val2 + base; -} -function tinf_decode_symbol(d, t3) { - while (d.bitcount < 24) { - d.tag |= d.source[d.sourceIndex++] << d.bitcount; - d.bitcount += 8; - } - var sum2 = 0, cur = 0, len = 0; - var tag = d.tag; - do { - cur = 2 * cur + (tag & 1); - tag >>>= 1; - ++len; - sum2 += t3.table[len]; - cur -= t3.table[len]; - } while (cur >= 0); - d.tag = tag; - d.bitcount -= len; - return t3.trans[sum2 + cur]; -} -function tinf_decode_trees(d, lt, dt2) { - var hlit, hdist, hclen; - var i, num, length2; - hlit = tinf_read_bits(d, 5, 257); - hdist = tinf_read_bits(d, 5, 1); - hclen = tinf_read_bits(d, 4, 4); - for (i = 0; i < 19; ++i) { - lengths[i] = 0; - } - for (i = 0; i < hclen; ++i) { - var clen2 = tinf_read_bits(d, 3, 0); - lengths[clcidx[i]] = clen2; - } - tinf_build_tree(code_tree, lengths, 0, 19); - for (num = 0; num < hlit + hdist; ) { - var sym = tinf_decode_symbol(d, code_tree); - switch (sym) { - case 16: - var prev = lengths[num - 1]; - for (length2 = tinf_read_bits(d, 2, 3); length2; --length2) { - lengths[num++] = prev; - } - break; - case 17: - for (length2 = tinf_read_bits(d, 3, 3); length2; --length2) { - lengths[num++] = 0; - } - break; - case 18: - for (length2 = tinf_read_bits(d, 7, 11); length2; --length2) { - lengths[num++] = 0; - } - break; - default: - lengths[num++] = sym; - break; - } - } - tinf_build_tree(lt, lengths, 0, hlit); - tinf_build_tree(dt2, lengths, hlit, hdist); -} -function tinf_inflate_block_data(d, lt, dt2) { - while (1) { - var sym = tinf_decode_symbol(d, lt); - if (sym === 256) { - return TINF_OK; - } - if (sym < 256) { - d.dest[d.destLen++] = sym; - } else { - var length2, dist, offs2; - var i; - sym -= 257; - length2 = tinf_read_bits(d, length_bits[sym], length_base[sym]); - dist = tinf_decode_symbol(d, dt2); - offs2 = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]); - for (i = offs2; i < offs2 + length2; ++i) { - d.dest[d.destLen++] = d.dest[i]; - } - } - } -} -function tinf_inflate_uncompressed_block(d) { - var length2, invlength; - var i; - while (d.bitcount > 8) { - d.sourceIndex--; - d.bitcount -= 8; - } - length2 = d.source[d.sourceIndex + 1]; - length2 = 256 * length2 + d.source[d.sourceIndex]; - invlength = d.source[d.sourceIndex + 3]; - invlength = 256 * invlength + d.source[d.sourceIndex + 2]; - if (length2 !== (~invlength & 65535)) { - return TINF_DATA_ERROR; - } - d.sourceIndex += 4; - for (i = length2; i; --i) { - d.dest[d.destLen++] = d.source[d.sourceIndex++]; - } - d.bitcount = 0; - return TINF_OK; -} -function tinf_uncompress(source, dest) { - var d = new Data(source, dest); - var bfinal, btype, res; - do { - bfinal = tinf_getbit(d); - btype = tinf_read_bits(d, 2, 0); - switch (btype) { - case 0: - res = tinf_inflate_uncompressed_block(d); - break; - case 1: - res = tinf_inflate_block_data(d, sltree, sdtree); - break; - case 2: - tinf_decode_trees(d, d.ltree, d.dtree); - res = tinf_inflate_block_data(d, d.ltree, d.dtree); - break; - default: - res = TINF_DATA_ERROR; - } - if (res !== TINF_OK) { - throw new Error("Data error"); - } - } while (!bfinal); - if (d.destLen < d.dest.length) { - if (typeof d.dest.slice === "function") { - return d.dest.slice(0, d.destLen); - } else { - return d.dest.subarray(0, d.destLen); - } - } - return d.dest; -} -tinf_build_fixed_trees(sltree, sdtree); -tinf_build_bits_base(length_bits, length_base, 4, 3); -tinf_build_bits_base(dist_bits, dist_base, 2, 1); -length_bits[28] = 0; -length_base[28] = 258; -var tinyInflate = tinf_uncompress; -function derive(v0, v12, v2, v3, t3) { - return Math.pow(1 - t3, 3) * v0 + 3 * Math.pow(1 - t3, 2) * t3 * v12 + 3 * (1 - t3) * Math.pow(t3, 2) * v2 + Math.pow(t3, 3) * v3; -} -function BoundingBox() { - this.x1 = Number.NaN; - this.y1 = Number.NaN; - this.x2 = Number.NaN; - this.y2 = Number.NaN; -} -BoundingBox.prototype.isEmpty = function() { - return isNaN(this.x1) || isNaN(this.y1) || isNaN(this.x2) || isNaN(this.y2); -}; -BoundingBox.prototype.addPoint = function(x2, y2) { - if (typeof x2 === "number") { - if (isNaN(this.x1) || isNaN(this.x2)) { - this.x1 = x2; - this.x2 = x2; - } - if (x2 < this.x1) { - this.x1 = x2; - } - if (x2 > this.x2) { - this.x2 = x2; - } - } - if (typeof y2 === "number") { - if (isNaN(this.y1) || isNaN(this.y2)) { - this.y1 = y2; - this.y2 = y2; - } - if (y2 < this.y1) { - this.y1 = y2; - } - if (y2 > this.y2) { - this.y2 = y2; - } - } -}; -BoundingBox.prototype.addX = function(x2) { - this.addPoint(x2, null); -}; -BoundingBox.prototype.addY = function(y2) { - this.addPoint(null, y2); -}; -BoundingBox.prototype.addBezier = function(x0, y0, x1, y1, x2, y2, x3, y3) { - var p0 = [x0, y0]; - var p1 = [x1, y1]; - var p2 = [x2, y2]; - var p3 = [x3, y3]; - this.addPoint(x0, y0); - this.addPoint(x3, y3); - for (var i = 0; i <= 1; i++) { - var b3 = 6 * p0[i] - 12 * p1[i] + 6 * p2[i]; - var a2 = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i]; - var c2 = 3 * p1[i] - 3 * p0[i]; - if (a2 === 0) { - if (b3 === 0) { - continue; - } - var t3 = -c2 / b3; - if (0 < t3 && t3 < 1) { - if (i === 0) { - this.addX(derive(p0[i], p1[i], p2[i], p3[i], t3)); - } - if (i === 1) { - this.addY(derive(p0[i], p1[i], p2[i], p3[i], t3)); - } - } - continue; - } - var b2ac = Math.pow(b3, 2) - 4 * c2 * a2; - if (b2ac < 0) { - continue; - } - var t1 = (-b3 + Math.sqrt(b2ac)) / (2 * a2); - if (0 < t1 && t1 < 1) { - if (i === 0) { - this.addX(derive(p0[i], p1[i], p2[i], p3[i], t1)); - } - if (i === 1) { - this.addY(derive(p0[i], p1[i], p2[i], p3[i], t1)); - } - } - var t22 = (-b3 - Math.sqrt(b2ac)) / (2 * a2); - if (0 < t22 && t22 < 1) { - if (i === 0) { - this.addX(derive(p0[i], p1[i], p2[i], p3[i], t22)); - } - if (i === 1) { - this.addY(derive(p0[i], p1[i], p2[i], p3[i], t22)); - } - } - } -}; -BoundingBox.prototype.addQuad = function(x0, y0, x1, y1, x2, y2) { - var cp1x = x0 + 2 / 3 * (x1 - x0); - var cp1y = y0 + 2 / 3 * (y1 - y0); - var cp2x = cp1x + 1 / 3 * (x2 - x0); - var cp2y = cp1y + 1 / 3 * (y2 - y0); - this.addBezier(x0, y0, cp1x, cp1y, cp2x, cp2y, x2, y2); -}; -function Path2() { - this.commands = []; - this.fill = "black"; - this.stroke = null; - this.strokeWidth = 1; -} -Path2.prototype.moveTo = function(x2, y2) { - this.commands.push({ - type: "M", - x: x2, - y: y2 - }); -}; -Path2.prototype.lineTo = function(x2, y2) { - this.commands.push({ - type: "L", - x: x2, - y: y2 - }); -}; -Path2.prototype.curveTo = Path2.prototype.bezierCurveTo = function(x1, y1, x2, y2, x3, y3) { - this.commands.push({ - type: "C", - x1, - y1, - x2, - y2, - x: x3, - y: y3 - }); -}; -Path2.prototype.quadTo = Path2.prototype.quadraticCurveTo = function(x1, y1, x2, y2) { - this.commands.push({ - type: "Q", - x1, - y1, - x: x2, - y: y2 - }); -}; -Path2.prototype.close = Path2.prototype.closePath = function() { - this.commands.push({ - type: "Z" - }); -}; -Path2.prototype.extend = function(pathOrCommands) { - if (pathOrCommands.commands) { - pathOrCommands = pathOrCommands.commands; - } else if (pathOrCommands instanceof BoundingBox) { - var box = pathOrCommands; - this.moveTo(box.x1, box.y1); - this.lineTo(box.x2, box.y1); - this.lineTo(box.x2, box.y2); - this.lineTo(box.x1, box.y2); - this.close(); - return; - } - Array.prototype.push.apply(this.commands, pathOrCommands); -}; -Path2.prototype.getBoundingBox = function() { - var box = new BoundingBox(); - var startX = 0; - var startY = 0; - var prevX = 0; - var prevY = 0; - for (var i = 0; i < this.commands.length; i++) { - var cmd = this.commands[i]; - switch (cmd.type) { - case "M": - box.addPoint(cmd.x, cmd.y); - startX = prevX = cmd.x; - startY = prevY = cmd.y; - break; - case "L": - box.addPoint(cmd.x, cmd.y); - prevX = cmd.x; - prevY = cmd.y; - break; - case "Q": - box.addQuad(prevX, prevY, cmd.x1, cmd.y1, cmd.x, cmd.y); - prevX = cmd.x; - prevY = cmd.y; - break; - case "C": - box.addBezier(prevX, prevY, cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y); - prevX = cmd.x; - prevY = cmd.y; - break; - case "Z": - prevX = startX; - prevY = startY; - break; - default: - throw new Error("Unexpected path command " + cmd.type); - } - } - if (box.isEmpty()) { - box.addPoint(0, 0); - } - return box; -}; -Path2.prototype.draw = function(ctx) { - ctx.beginPath(); - for (var i = 0; i < this.commands.length; i += 1) { - var cmd = this.commands[i]; - if (cmd.type === "M") { - ctx.moveTo(cmd.x, cmd.y); - } else if (cmd.type === "L") { - ctx.lineTo(cmd.x, cmd.y); - } else if (cmd.type === "C") { - ctx.bezierCurveTo(cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y); - } else if (cmd.type === "Q") { - ctx.quadraticCurveTo(cmd.x1, cmd.y1, cmd.x, cmd.y); - } else if (cmd.type === "Z") { - ctx.closePath(); - } - } - if (this.fill) { - ctx.fillStyle = this.fill; - ctx.fill(); - } - if (this.stroke) { - ctx.strokeStyle = this.stroke; - ctx.lineWidth = this.strokeWidth; - ctx.stroke(); - } -}; -Path2.prototype.toPathData = function(decimalPlaces) { - decimalPlaces = decimalPlaces !== void 0 ? decimalPlaces : 2; - function floatToString(v) { - if (Math.round(v) === v) { - return "" + Math.round(v); - } else { - return v.toFixed(decimalPlaces); - } - } - function packValues() { - var arguments$1 = arguments; - var s = ""; - for (var i2 = 0; i2 < arguments.length; i2 += 1) { - var v = arguments$1[i2]; - if (v >= 0 && i2 > 0) { - s += " "; - } - s += floatToString(v); - } - return s; - } - var d = ""; - for (var i = 0; i < this.commands.length; i += 1) { - var cmd = this.commands[i]; - if (cmd.type === "M") { - d += "M" + packValues(cmd.x, cmd.y); - } else if (cmd.type === "L") { - d += "L" + packValues(cmd.x, cmd.y); - } else if (cmd.type === "C") { - d += "C" + packValues(cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y); - } else if (cmd.type === "Q") { - d += "Q" + packValues(cmd.x1, cmd.y1, cmd.x, cmd.y); - } else if (cmd.type === "Z") { - d += "Z"; - } - } - return d; -}; -Path2.prototype.toSVG = function(decimalPlaces) { - var svg = '= 0 && v <= 255, "Byte value should be between 0 and 255."); - return [v]; -}; -sizeOf.BYTE = constant(1); -encode.CHAR = function(v) { - return [v.charCodeAt(0)]; -}; -sizeOf.CHAR = constant(1); -encode.CHARARRAY = function(v) { - if (typeof v === "undefined") { - v = ""; - console.warn("Undefined CHARARRAY encountered and treated as an empty string. This is probably caused by a missing glyph name."); - } - var b3 = []; - for (var i = 0; i < v.length; i += 1) { - b3[i] = v.charCodeAt(i); - } - return b3; -}; -sizeOf.CHARARRAY = function(v) { - if (typeof v === "undefined") { - return 0; - } - return v.length; -}; -encode.USHORT = function(v) { - return [v >> 8 & 255, v & 255]; -}; -sizeOf.USHORT = constant(2); -encode.SHORT = function(v) { - if (v >= LIMIT16) { - v = -(2 * LIMIT16 - v); - } - return [v >> 8 & 255, v & 255]; -}; -sizeOf.SHORT = constant(2); -encode.UINT24 = function(v) { - return [v >> 16 & 255, v >> 8 & 255, v & 255]; -}; -sizeOf.UINT24 = constant(3); -encode.ULONG = function(v) { - return [v >> 24 & 255, v >> 16 & 255, v >> 8 & 255, v & 255]; -}; -sizeOf.ULONG = constant(4); -encode.LONG = function(v) { - if (v >= LIMIT32) { - v = -(2 * LIMIT32 - v); - } - return [v >> 24 & 255, v >> 16 & 255, v >> 8 & 255, v & 255]; -}; -sizeOf.LONG = constant(4); -encode.FIXED = encode.ULONG; -sizeOf.FIXED = sizeOf.ULONG; -encode.FWORD = encode.SHORT; -sizeOf.FWORD = sizeOf.SHORT; -encode.UFWORD = encode.USHORT; -sizeOf.UFWORD = sizeOf.USHORT; -encode.LONGDATETIME = function(v) { - return [0, 0, 0, 0, v >> 24 & 255, v >> 16 & 255, v >> 8 & 255, v & 255]; -}; -sizeOf.LONGDATETIME = constant(8); -encode.TAG = function(v) { - check.argument(v.length === 4, "Tag should be exactly 4 ASCII characters."); - return [ - v.charCodeAt(0), - v.charCodeAt(1), - v.charCodeAt(2), - v.charCodeAt(3) - ]; -}; -sizeOf.TAG = constant(4); -encode.Card8 = encode.BYTE; -sizeOf.Card8 = sizeOf.BYTE; -encode.Card16 = encode.USHORT; -sizeOf.Card16 = sizeOf.USHORT; -encode.OffSize = encode.BYTE; -sizeOf.OffSize = sizeOf.BYTE; -encode.SID = encode.USHORT; -sizeOf.SID = sizeOf.USHORT; -encode.NUMBER = function(v) { - if (v >= -107 && v <= 107) { - return [v + 139]; - } else if (v >= 108 && v <= 1131) { - v = v - 108; - return [(v >> 8) + 247, v & 255]; - } else if (v >= -1131 && v <= -108) { - v = -v - 108; - return [(v >> 8) + 251, v & 255]; - } else if (v >= -32768 && v <= 32767) { - return encode.NUMBER16(v); - } else { - return encode.NUMBER32(v); - } -}; -sizeOf.NUMBER = function(v) { - return encode.NUMBER(v).length; -}; -encode.NUMBER16 = function(v) { - return [28, v >> 8 & 255, v & 255]; -}; -sizeOf.NUMBER16 = constant(3); -encode.NUMBER32 = function(v) { - return [29, v >> 24 & 255, v >> 16 & 255, v >> 8 & 255, v & 255]; -}; -sizeOf.NUMBER32 = constant(5); -encode.REAL = function(v) { - var value2 = v.toString(); - var m = /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(value2); - if (m) { - var epsilon = parseFloat("1e" + ((m[2] ? +m[2] : 0) + m[1].length)); - value2 = (Math.round(v * epsilon) / epsilon).toString(); - } - var nibbles = ""; - for (var i = 0, ii = value2.length; i < ii; i += 1) { - var c2 = value2[i]; - if (c2 === "e") { - nibbles += value2[++i] === "-" ? "c" : "b"; - } else if (c2 === ".") { - nibbles += "a"; - } else if (c2 === "-") { - nibbles += "e"; - } else { - nibbles += c2; - } - } - nibbles += nibbles.length & 1 ? "f" : "ff"; - var out = [30]; - for (var i$1 = 0, ii$1 = nibbles.length; i$1 < ii$1; i$1 += 2) { - out.push(parseInt(nibbles.substr(i$1, 2), 16)); - } - return out; -}; -sizeOf.REAL = function(v) { - return encode.REAL(v).length; -}; -encode.NAME = encode.CHARARRAY; -sizeOf.NAME = sizeOf.CHARARRAY; -encode.STRING = encode.CHARARRAY; -sizeOf.STRING = sizeOf.CHARARRAY; -decode.UTF8 = function(data2, offset, numBytes) { - var codePoints = []; - var numChars = numBytes; - for (var j = 0; j < numChars; j++, offset += 1) { - codePoints[j] = data2.getUint8(offset); - } - return String.fromCharCode.apply(null, codePoints); -}; -decode.UTF16 = function(data2, offset, numBytes) { - var codePoints = []; - var numChars = numBytes / 2; - for (var j = 0; j < numChars; j++, offset += 2) { - codePoints[j] = data2.getUint16(offset); - } - return String.fromCharCode.apply(null, codePoints); -}; -encode.UTF16 = function(v) { - var b3 = []; - for (var i = 0; i < v.length; i += 1) { - var codepoint = v.charCodeAt(i); - b3[b3.length] = codepoint >> 8 & 255; - b3[b3.length] = codepoint & 255; - } - return b3; -}; -sizeOf.UTF16 = function(v) { - return v.length * 2; -}; -var eightBitMacEncodings = { - "x-mac-croatian": ( - // Python: 'mac_croatian' - "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ" - ), - "x-mac-cyrillic": ( - // Python: 'mac_cyrillic' - "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю" - ), - "x-mac-gaelic": ( - // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/GAELIC.TXT - "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæøṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ" - ), - "x-mac-greek": ( - // Python: 'mac_greek' - "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ­" - ), - "x-mac-icelandic": ( - // Python: 'mac_iceland' - "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - ), - "x-mac-inuit": ( - // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/INUIT.TXT - "ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł" - ), - "x-mac-ce": ( - // Python: 'mac_latin2' - "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ" - ), - macintosh: ( - // Python: 'mac_roman' - "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - ), - "x-mac-romanian": ( - // Python: 'mac_romanian' - "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - ), - "x-mac-turkish": ( - // Python: 'mac_turkish' - "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ" - ) -}; -decode.MACSTRING = function(dataView, offset, dataLength, encoding) { - var table2 = eightBitMacEncodings[encoding]; - if (table2 === void 0) { - return void 0; - } - var result = ""; - for (var i = 0; i < dataLength; i++) { - var c2 = dataView.getUint8(offset + i); - if (c2 <= 127) { - result += String.fromCharCode(c2); - } else { - result += table2[c2 & 127]; - } - } - return result; -}; -var macEncodingTableCache = typeof WeakMap === "function" && /* @__PURE__ */ new WeakMap(); -var macEncodingCacheKeys; -var getMacEncodingTable = function(encoding) { - if (!macEncodingCacheKeys) { - macEncodingCacheKeys = {}; - for (var e in eightBitMacEncodings) { - macEncodingCacheKeys[e] = new String(e); - } - } - var cacheKey = macEncodingCacheKeys[encoding]; - if (cacheKey === void 0) { - return void 0; - } - if (macEncodingTableCache) { - var cachedTable = macEncodingTableCache.get(cacheKey); - if (cachedTable !== void 0) { - return cachedTable; - } - } - var decodingTable = eightBitMacEncodings[encoding]; - if (decodingTable === void 0) { - return void 0; - } - var encodingTable = {}; - for (var i = 0; i < decodingTable.length; i++) { - encodingTable[decodingTable.charCodeAt(i)] = i + 128; - } - if (macEncodingTableCache) { - macEncodingTableCache.set(cacheKey, encodingTable); - } - return encodingTable; -}; -encode.MACSTRING = function(str, encoding) { - var table2 = getMacEncodingTable(encoding); - if (table2 === void 0) { - return void 0; - } - var result = []; - for (var i = 0; i < str.length; i++) { - var c2 = str.charCodeAt(i); - if (c2 >= 128) { - c2 = table2[c2]; - if (c2 === void 0) { - return void 0; - } - } - result[i] = c2; - } - return result; -}; -sizeOf.MACSTRING = function(str, encoding) { - var b3 = encode.MACSTRING(str, encoding); - if (b3 !== void 0) { - return b3.length; - } else { - return 0; - } -}; -function isByteEncodable(value2) { - return value2 >= -128 && value2 <= 127; -} -function encodeVarDeltaRunAsZeroes(deltas, pos, result) { - var runLength = 0; - var numDeltas = deltas.length; - while (pos < numDeltas && runLength < 64 && deltas[pos] === 0) { - ++pos; - ++runLength; - } - result.push(128 | runLength - 1); - return pos; -} -function encodeVarDeltaRunAsBytes(deltas, offset, result) { - var runLength = 0; - var numDeltas = deltas.length; - var pos = offset; - while (pos < numDeltas && runLength < 64) { - var value2 = deltas[pos]; - if (!isByteEncodable(value2)) { - break; - } - if (value2 === 0 && pos + 1 < numDeltas && deltas[pos + 1] === 0) { - break; - } - ++pos; - ++runLength; - } - result.push(runLength - 1); - for (var i = offset; i < pos; ++i) { - result.push(deltas[i] + 256 & 255); - } - return pos; -} -function encodeVarDeltaRunAsWords(deltas, offset, result) { - var runLength = 0; - var numDeltas = deltas.length; - var pos = offset; - while (pos < numDeltas && runLength < 64) { - var value2 = deltas[pos]; - if (value2 === 0) { - break; - } - if (isByteEncodable(value2) && pos + 1 < numDeltas && isByteEncodable(deltas[pos + 1])) { - break; - } - ++pos; - ++runLength; - } - result.push(64 | runLength - 1); - for (var i = offset; i < pos; ++i) { - var val2 = deltas[i]; - result.push(val2 + 65536 >> 8 & 255, val2 + 256 & 255); - } - return pos; -} -encode.VARDELTAS = function(deltas) { - var pos = 0; - var result = []; - while (pos < deltas.length) { - var value2 = deltas[pos]; - if (value2 === 0) { - pos = encodeVarDeltaRunAsZeroes(deltas, pos, result); - } else if (value2 >= -128 && value2 <= 127) { - pos = encodeVarDeltaRunAsBytes(deltas, pos, result); - } else { - pos = encodeVarDeltaRunAsWords(deltas, pos, result); - } - } - return result; -}; -encode.INDEX = function(l2) { - var offset = 1; - var offsets = [offset]; - var data2 = []; - for (var i = 0; i < l2.length; i += 1) { - var v = encode.OBJECT(l2[i]); - Array.prototype.push.apply(data2, v); - offset += v.length; - offsets.push(offset); - } - if (data2.length === 0) { - return [0, 0]; - } - var encodedOffsets = []; - var offSize = 1 + Math.floor(Math.log(offset) / Math.log(2)) / 8 | 0; - var offsetEncoder = [void 0, encode.BYTE, encode.USHORT, encode.UINT24, encode.ULONG][offSize]; - for (var i$1 = 0; i$1 < offsets.length; i$1 += 1) { - var encodedOffset = offsetEncoder(offsets[i$1]); - Array.prototype.push.apply(encodedOffsets, encodedOffset); - } - return Array.prototype.concat( - encode.Card16(l2.length), - encode.OffSize(offSize), - encodedOffsets, - data2 - ); -}; -sizeOf.INDEX = function(v) { - return encode.INDEX(v).length; -}; -encode.DICT = function(m) { - var d = []; - var keys2 = Object.keys(m); - var length2 = keys2.length; - for (var i = 0; i < length2; i += 1) { - var k2 = parseInt(keys2[i], 0); - var v = m[k2]; - d = d.concat(encode.OPERAND(v.value, v.type)); - d = d.concat(encode.OPERATOR(k2)); - } - return d; -}; -sizeOf.DICT = function(m) { - return encode.DICT(m).length; -}; -encode.OPERATOR = function(v) { - if (v < 1200) { - return [v]; - } else { - return [12, v - 1200]; - } -}; -encode.OPERAND = function(v, type) { - var d = []; - if (Array.isArray(type)) { - for (var i = 0; i < type.length; i += 1) { - check.argument(v.length === type.length, "Not enough arguments given for type" + type); - d = d.concat(encode.OPERAND(v[i], type[i])); - } - } else { - if (type === "SID") { - d = d.concat(encode.NUMBER(v)); - } else if (type === "offset") { - d = d.concat(encode.NUMBER32(v)); - } else if (type === "number") { - d = d.concat(encode.NUMBER(v)); - } else if (type === "real") { - d = d.concat(encode.REAL(v)); - } else { - throw new Error("Unknown operand type " + type); - } - } - return d; -}; -encode.OP = encode.BYTE; -sizeOf.OP = sizeOf.BYTE; -var wmm = typeof WeakMap === "function" && /* @__PURE__ */ new WeakMap(); -encode.CHARSTRING = function(ops) { - if (wmm) { - var cachedValue = wmm.get(ops); - if (cachedValue !== void 0) { - return cachedValue; - } - } - var d = []; - var length2 = ops.length; - for (var i = 0; i < length2; i += 1) { - var op = ops[i]; - d = d.concat(encode[op.type](op.value)); - } - if (wmm) { - wmm.set(ops, d); - } - return d; -}; -sizeOf.CHARSTRING = function(ops) { - return encode.CHARSTRING(ops).length; -}; -encode.OBJECT = function(v) { - var encodingFunction = encode[v.type]; - check.argument(encodingFunction !== void 0, "No encoding function for type " + v.type); - return encodingFunction(v.value); -}; -sizeOf.OBJECT = function(v) { - var sizeOfFunction = sizeOf[v.type]; - check.argument(sizeOfFunction !== void 0, "No sizeOf function for type " + v.type); - return sizeOfFunction(v.value); -}; -encode.TABLE = function(table2) { - var d = []; - var length2 = table2.fields.length; - var subtables = []; - var subtableOffsets = []; - for (var i = 0; i < length2; i += 1) { - var field = table2.fields[i]; - var encodingFunction = encode[field.type]; - check.argument(encodingFunction !== void 0, "No encoding function for field type " + field.type + " (" + field.name + ")"); - var value2 = table2[field.name]; - if (value2 === void 0) { - value2 = field.value; - } - var bytes = encodingFunction(value2); - if (field.type === "TABLE") { - subtableOffsets.push(d.length); - d = d.concat([0, 0]); - subtables.push(bytes); - } else { - d = d.concat(bytes); - } - } - for (var i$1 = 0; i$1 < subtables.length; i$1 += 1) { - var o = subtableOffsets[i$1]; - var offset = d.length; - check.argument(offset < 65536, "Table " + table2.tableName + " too big."); - d[o] = offset >> 8; - d[o + 1] = offset & 255; - d = d.concat(subtables[i$1]); - } - return d; -}; -sizeOf.TABLE = function(table2) { - var numBytes = 0; - var length2 = table2.fields.length; - for (var i = 0; i < length2; i += 1) { - var field = table2.fields[i]; - var sizeOfFunction = sizeOf[field.type]; - check.argument(sizeOfFunction !== void 0, "No sizeOf function for field type " + field.type + " (" + field.name + ")"); - var value2 = table2[field.name]; - if (value2 === void 0) { - value2 = field.value; - } - numBytes += sizeOfFunction(value2); - if (field.type === "TABLE") { - numBytes += 2; - } - } - return numBytes; -}; -encode.RECORD = encode.TABLE; -sizeOf.RECORD = sizeOf.TABLE; -encode.LITERAL = function(v) { - return v; -}; -sizeOf.LITERAL = function(v) { - return v.length; -}; -function Table(tableName, fields, options) { - if (fields.length && (fields[0].name !== "coverageFormat" || fields[0].value === 1)) { - for (var i = 0; i < fields.length; i += 1) { - var field = fields[i]; - this[field.name] = field.value; - } - } - this.tableName = tableName; - this.fields = fields; - if (options) { - var optionKeys = Object.keys(options); - for (var i$1 = 0; i$1 < optionKeys.length; i$1 += 1) { - var k2 = optionKeys[i$1]; - var v = options[k2]; - if (this[k2] !== void 0) { - this[k2] = v; - } - } - } -} -Table.prototype.encode = function() { - return encode.TABLE(this); -}; -Table.prototype.sizeOf = function() { - return sizeOf.TABLE(this); -}; -function ushortList(itemName, list, count) { - if (count === void 0) { - count = list.length; - } - var fields = new Array(list.length + 1); - fields[0] = { name: itemName + "Count", type: "USHORT", value: count }; - for (var i = 0; i < list.length; i++) { - fields[i + 1] = { name: itemName + i, type: "USHORT", value: list[i] }; - } - return fields; -} -function tableList(itemName, records, itemCallback) { - var count = records.length; - var fields = new Array(count + 1); - fields[0] = { name: itemName + "Count", type: "USHORT", value: count }; - for (var i = 0; i < count; i++) { - fields[i + 1] = { name: itemName + i, type: "TABLE", value: itemCallback(records[i], i) }; - } - return fields; -} -function recordList(itemName, records, itemCallback) { - var count = records.length; - var fields = []; - fields[0] = { name: itemName + "Count", type: "USHORT", value: count }; - for (var i = 0; i < count; i++) { - fields = fields.concat(itemCallback(records[i], i)); - } - return fields; -} -function Coverage(coverageTable) { - if (coverageTable.format === 1) { - Table.call( - this, - "coverageTable", - [{ name: "coverageFormat", type: "USHORT", value: 1 }].concat(ushortList("glyph", coverageTable.glyphs)) - ); - } else if (coverageTable.format === 2) { - Table.call( - this, - "coverageTable", - [{ name: "coverageFormat", type: "USHORT", value: 2 }].concat(recordList("rangeRecord", coverageTable.ranges, function(RangeRecord) { - return [ - { name: "startGlyphID", type: "USHORT", value: RangeRecord.start }, - { name: "endGlyphID", type: "USHORT", value: RangeRecord.end }, - { name: "startCoverageIndex", type: "USHORT", value: RangeRecord.index } - ]; - })) - ); - } else { - check.assert(false, "Coverage format must be 1 or 2."); - } -} -Coverage.prototype = Object.create(Table.prototype); -Coverage.prototype.constructor = Coverage; -function ScriptList(scriptListTable) { - Table.call( - this, - "scriptListTable", - recordList("scriptRecord", scriptListTable, function(scriptRecord, i) { - var script = scriptRecord.script; - var defaultLangSys = script.defaultLangSys; - check.assert(!!defaultLangSys, "Unable to write GSUB: script " + scriptRecord.tag + " has no default language system."); - return [ - { name: "scriptTag" + i, type: "TAG", value: scriptRecord.tag }, - { name: "script" + i, type: "TABLE", value: new Table("scriptTable", [ - { name: "defaultLangSys", type: "TABLE", value: new Table("defaultLangSys", [ - { name: "lookupOrder", type: "USHORT", value: 0 }, - { name: "reqFeatureIndex", type: "USHORT", value: defaultLangSys.reqFeatureIndex } - ].concat(ushortList("featureIndex", defaultLangSys.featureIndexes))) } - ].concat(recordList("langSys", script.langSysRecords, function(langSysRecord, i2) { - var langSys = langSysRecord.langSys; - return [ - { name: "langSysTag" + i2, type: "TAG", value: langSysRecord.tag }, - { name: "langSys" + i2, type: "TABLE", value: new Table("langSys", [ - { name: "lookupOrder", type: "USHORT", value: 0 }, - { name: "reqFeatureIndex", type: "USHORT", value: langSys.reqFeatureIndex } - ].concat(ushortList("featureIndex", langSys.featureIndexes))) } - ]; - }))) } - ]; - }) - ); -} -ScriptList.prototype = Object.create(Table.prototype); -ScriptList.prototype.constructor = ScriptList; -function FeatureList(featureListTable) { - Table.call( - this, - "featureListTable", - recordList("featureRecord", featureListTable, function(featureRecord, i) { - var feature = featureRecord.feature; - return [ - { name: "featureTag" + i, type: "TAG", value: featureRecord.tag }, - { name: "feature" + i, type: "TABLE", value: new Table("featureTable", [ - { name: "featureParams", type: "USHORT", value: feature.featureParams } - ].concat(ushortList("lookupListIndex", feature.lookupListIndexes))) } - ]; - }) - ); -} -FeatureList.prototype = Object.create(Table.prototype); -FeatureList.prototype.constructor = FeatureList; -function LookupList(lookupListTable, subtableMakers2) { - Table.call(this, "lookupListTable", tableList("lookup", lookupListTable, function(lookupTable) { - var subtableCallback = subtableMakers2[lookupTable.lookupType]; - check.assert(!!subtableCallback, "Unable to write GSUB lookup type " + lookupTable.lookupType + " tables."); - return new Table("lookupTable", [ - { name: "lookupType", type: "USHORT", value: lookupTable.lookupType }, - { name: "lookupFlag", type: "USHORT", value: lookupTable.lookupFlag } - ].concat(tableList("subtable", lookupTable.subtables, subtableCallback))); - })); -} -LookupList.prototype = Object.create(Table.prototype); -LookupList.prototype.constructor = LookupList; -var table = { - Table, - Record: Table, - Coverage, - ScriptList, - FeatureList, - LookupList, - ushortList, - tableList, - recordList -}; -function getByte(dataView, offset) { - return dataView.getUint8(offset); -} -function getUShort(dataView, offset) { - return dataView.getUint16(offset, false); -} -function getShort(dataView, offset) { - return dataView.getInt16(offset, false); -} -function getULong(dataView, offset) { - return dataView.getUint32(offset, false); -} -function getFixed(dataView, offset) { - var decimal = dataView.getInt16(offset, false); - var fraction = dataView.getUint16(offset + 2, false); - return decimal + fraction / 65535; -} -function getTag(dataView, offset) { - var tag = ""; - for (var i = offset; i < offset + 4; i += 1) { - tag += String.fromCharCode(dataView.getInt8(i)); - } - return tag; -} -function getOffset(dataView, offset, offSize) { - var v = 0; - for (var i = 0; i < offSize; i += 1) { - v <<= 8; - v += dataView.getUint8(offset + i); - } - return v; -} -function getBytes(dataView, startOffset, endOffset) { - var bytes = []; - for (var i = startOffset; i < endOffset; i += 1) { - bytes.push(dataView.getUint8(i)); - } - return bytes; -} -function bytesToString(bytes) { - var s = ""; - for (var i = 0; i < bytes.length; i += 1) { - s += String.fromCharCode(bytes[i]); - } - return s; -} -var typeOffsets = { - byte: 1, - uShort: 2, - short: 2, - uLong: 4, - fixed: 4, - longDateTime: 8, - tag: 4 -}; -function Parser2(data2, offset) { - this.data = data2; - this.offset = offset; - this.relativeOffset = 0; -} -Parser2.prototype.parseByte = function() { - var v = this.data.getUint8(this.offset + this.relativeOffset); - this.relativeOffset += 1; - return v; -}; -Parser2.prototype.parseChar = function() { - var v = this.data.getInt8(this.offset + this.relativeOffset); - this.relativeOffset += 1; - return v; -}; -Parser2.prototype.parseCard8 = Parser2.prototype.parseByte; -Parser2.prototype.parseUShort = function() { - var v = this.data.getUint16(this.offset + this.relativeOffset); - this.relativeOffset += 2; - return v; -}; -Parser2.prototype.parseCard16 = Parser2.prototype.parseUShort; -Parser2.prototype.parseSID = Parser2.prototype.parseUShort; -Parser2.prototype.parseOffset16 = Parser2.prototype.parseUShort; -Parser2.prototype.parseShort = function() { - var v = this.data.getInt16(this.offset + this.relativeOffset); - this.relativeOffset += 2; - return v; -}; -Parser2.prototype.parseF2Dot14 = function() { - var v = this.data.getInt16(this.offset + this.relativeOffset) / 16384; - this.relativeOffset += 2; - return v; -}; -Parser2.prototype.parseULong = function() { - var v = getULong(this.data, this.offset + this.relativeOffset); - this.relativeOffset += 4; - return v; -}; -Parser2.prototype.parseOffset32 = Parser2.prototype.parseULong; -Parser2.prototype.parseFixed = function() { - var v = getFixed(this.data, this.offset + this.relativeOffset); - this.relativeOffset += 4; - return v; -}; -Parser2.prototype.parseString = function(length2) { - var dataView = this.data; - var offset = this.offset + this.relativeOffset; - var string = ""; - this.relativeOffset += length2; - for (var i = 0; i < length2; i++) { - string += String.fromCharCode(dataView.getUint8(offset + i)); - } - return string; -}; -Parser2.prototype.parseTag = function() { - return this.parseString(4); -}; -Parser2.prototype.parseLongDateTime = function() { - var v = getULong(this.data, this.offset + this.relativeOffset + 4); - v -= 2082844800; - this.relativeOffset += 8; - return v; -}; -Parser2.prototype.parseVersion = function(minorBase) { - var major = getUShort(this.data, this.offset + this.relativeOffset); - var minor = getUShort(this.data, this.offset + this.relativeOffset + 2); - this.relativeOffset += 4; - if (minorBase === void 0) { - minorBase = 4096; - } - return major + minor / minorBase / 10; -}; -Parser2.prototype.skip = function(type, amount) { - if (amount === void 0) { - amount = 1; - } - this.relativeOffset += typeOffsets[type] * amount; -}; -Parser2.prototype.parseULongList = function(count) { - if (count === void 0) { - count = this.parseULong(); - } - var offsets = new Array(count); - var dataView = this.data; - var offset = this.offset + this.relativeOffset; - for (var i = 0; i < count; i++) { - offsets[i] = dataView.getUint32(offset); - offset += 4; - } - this.relativeOffset += count * 4; - return offsets; -}; -Parser2.prototype.parseOffset16List = Parser2.prototype.parseUShortList = function(count) { - if (count === void 0) { - count = this.parseUShort(); - } - var offsets = new Array(count); - var dataView = this.data; - var offset = this.offset + this.relativeOffset; - for (var i = 0; i < count; i++) { - offsets[i] = dataView.getUint16(offset); - offset += 2; - } - this.relativeOffset += count * 2; - return offsets; -}; -Parser2.prototype.parseShortList = function(count) { - var list = new Array(count); - var dataView = this.data; - var offset = this.offset + this.relativeOffset; - for (var i = 0; i < count; i++) { - list[i] = dataView.getInt16(offset); - offset += 2; - } - this.relativeOffset += count * 2; - return list; -}; -Parser2.prototype.parseByteList = function(count) { - var list = new Array(count); - var dataView = this.data; - var offset = this.offset + this.relativeOffset; - for (var i = 0; i < count; i++) { - list[i] = dataView.getUint8(offset++); - } - this.relativeOffset += count; - return list; -}; -Parser2.prototype.parseList = function(count, itemCallback) { - if (!itemCallback) { - itemCallback = count; - count = this.parseUShort(); - } - var list = new Array(count); - for (var i = 0; i < count; i++) { - list[i] = itemCallback.call(this); - } - return list; -}; -Parser2.prototype.parseList32 = function(count, itemCallback) { - if (!itemCallback) { - itemCallback = count; - count = this.parseULong(); - } - var list = new Array(count); - for (var i = 0; i < count; i++) { - list[i] = itemCallback.call(this); - } - return list; -}; -Parser2.prototype.parseRecordList = function(count, recordDescription) { - if (!recordDescription) { - recordDescription = count; - count = this.parseUShort(); - } - var records = new Array(count); - var fields = Object.keys(recordDescription); - for (var i = 0; i < count; i++) { - var rec = {}; - for (var j = 0; j < fields.length; j++) { - var fieldName = fields[j]; - var fieldType = recordDescription[fieldName]; - rec[fieldName] = fieldType.call(this); - } - records[i] = rec; - } - return records; -}; -Parser2.prototype.parseRecordList32 = function(count, recordDescription) { - if (!recordDescription) { - recordDescription = count; - count = this.parseULong(); - } - var records = new Array(count); - var fields = Object.keys(recordDescription); - for (var i = 0; i < count; i++) { - var rec = {}; - for (var j = 0; j < fields.length; j++) { - var fieldName = fields[j]; - var fieldType = recordDescription[fieldName]; - rec[fieldName] = fieldType.call(this); - } - records[i] = rec; - } - return records; -}; -Parser2.prototype.parseStruct = function(description) { - if (typeof description === "function") { - return description.call(this); - } else { - var fields = Object.keys(description); - var struct = {}; - for (var j = 0; j < fields.length; j++) { - var fieldName = fields[j]; - var fieldType = description[fieldName]; - struct[fieldName] = fieldType.call(this); - } - return struct; - } -}; -Parser2.prototype.parseValueRecord = function(valueFormat) { - if (valueFormat === void 0) { - valueFormat = this.parseUShort(); - } - if (valueFormat === 0) { - return; - } - var valueRecord = {}; - if (valueFormat & 1) { - valueRecord.xPlacement = this.parseShort(); - } - if (valueFormat & 2) { - valueRecord.yPlacement = this.parseShort(); - } - if (valueFormat & 4) { - valueRecord.xAdvance = this.parseShort(); - } - if (valueFormat & 8) { - valueRecord.yAdvance = this.parseShort(); - } - if (valueFormat & 16) { - valueRecord.xPlaDevice = void 0; - this.parseShort(); - } - if (valueFormat & 32) { - valueRecord.yPlaDevice = void 0; - this.parseShort(); - } - if (valueFormat & 64) { - valueRecord.xAdvDevice = void 0; - this.parseShort(); - } - if (valueFormat & 128) { - valueRecord.yAdvDevice = void 0; - this.parseShort(); - } - return valueRecord; -}; -Parser2.prototype.parseValueRecordList = function() { - var valueFormat = this.parseUShort(); - var valueCount = this.parseUShort(); - var values2 = new Array(valueCount); - for (var i = 0; i < valueCount; i++) { - values2[i] = this.parseValueRecord(valueFormat); - } - return values2; -}; -Parser2.prototype.parsePointer = function(description) { - var structOffset = this.parseOffset16(); - if (structOffset > 0) { - return new Parser2(this.data, this.offset + structOffset).parseStruct(description); - } - return void 0; -}; -Parser2.prototype.parsePointer32 = function(description) { - var structOffset = this.parseOffset32(); - if (structOffset > 0) { - return new Parser2(this.data, this.offset + structOffset).parseStruct(description); - } - return void 0; -}; -Parser2.prototype.parseListOfLists = function(itemCallback) { - var offsets = this.parseOffset16List(); - var count = offsets.length; - var relativeOffset = this.relativeOffset; - var list = new Array(count); - for (var i = 0; i < count; i++) { - var start = offsets[i]; - if (start === 0) { - list[i] = void 0; - continue; - } - this.relativeOffset = start; - if (itemCallback) { - var subOffsets = this.parseOffset16List(); - var subList = new Array(subOffsets.length); - for (var j = 0; j < subOffsets.length; j++) { - this.relativeOffset = start + subOffsets[j]; - subList[j] = itemCallback.call(this); - } - list[i] = subList; - } else { - list[i] = this.parseUShortList(); - } - } - this.relativeOffset = relativeOffset; - return list; -}; -Parser2.prototype.parseCoverage = function() { - var startOffset = this.offset + this.relativeOffset; - var format = this.parseUShort(); - var count = this.parseUShort(); - if (format === 1) { - return { - format: 1, - glyphs: this.parseUShortList(count) - }; - } else if (format === 2) { - var ranges = new Array(count); - for (var i = 0; i < count; i++) { - ranges[i] = { - start: this.parseUShort(), - end: this.parseUShort(), - index: this.parseUShort() - }; - } - return { - format: 2, - ranges - }; - } - throw new Error("0x" + startOffset.toString(16) + ": Coverage format must be 1 or 2."); -}; -Parser2.prototype.parseClassDef = function() { - var startOffset = this.offset + this.relativeOffset; - var format = this.parseUShort(); - if (format === 1) { - return { - format: 1, - startGlyph: this.parseUShort(), - classes: this.parseUShortList() - }; - } else if (format === 2) { - return { - format: 2, - ranges: this.parseRecordList({ - start: Parser2.uShort, - end: Parser2.uShort, - classId: Parser2.uShort - }) - }; - } - throw new Error("0x" + startOffset.toString(16) + ": ClassDef format must be 1 or 2."); -}; -Parser2.list = function(count, itemCallback) { - return function() { - return this.parseList(count, itemCallback); - }; -}; -Parser2.list32 = function(count, itemCallback) { - return function() { - return this.parseList32(count, itemCallback); - }; -}; -Parser2.recordList = function(count, recordDescription) { - return function() { - return this.parseRecordList(count, recordDescription); - }; -}; -Parser2.recordList32 = function(count, recordDescription) { - return function() { - return this.parseRecordList32(count, recordDescription); - }; -}; -Parser2.pointer = function(description) { - return function() { - return this.parsePointer(description); - }; -}; -Parser2.pointer32 = function(description) { - return function() { - return this.parsePointer32(description); - }; -}; -Parser2.tag = Parser2.prototype.parseTag; -Parser2.byte = Parser2.prototype.parseByte; -Parser2.uShort = Parser2.offset16 = Parser2.prototype.parseUShort; -Parser2.uShortList = Parser2.prototype.parseUShortList; -Parser2.uLong = Parser2.offset32 = Parser2.prototype.parseULong; -Parser2.uLongList = Parser2.prototype.parseULongList; -Parser2.struct = Parser2.prototype.parseStruct; -Parser2.coverage = Parser2.prototype.parseCoverage; -Parser2.classDef = Parser2.prototype.parseClassDef; -var langSysTable = { - reserved: Parser2.uShort, - reqFeatureIndex: Parser2.uShort, - featureIndexes: Parser2.uShortList -}; -Parser2.prototype.parseScriptList = function() { - return this.parsePointer(Parser2.recordList({ - tag: Parser2.tag, - script: Parser2.pointer({ - defaultLangSys: Parser2.pointer(langSysTable), - langSysRecords: Parser2.recordList({ - tag: Parser2.tag, - langSys: Parser2.pointer(langSysTable) - }) - }) - })) || []; -}; -Parser2.prototype.parseFeatureList = function() { - return this.parsePointer(Parser2.recordList({ - tag: Parser2.tag, - feature: Parser2.pointer({ - featureParams: Parser2.offset16, - lookupListIndexes: Parser2.uShortList - }) - })) || []; -}; -Parser2.prototype.parseLookupList = function(lookupTableParsers) { - return this.parsePointer(Parser2.list(Parser2.pointer(function() { - var lookupType = this.parseUShort(); - check.argument(1 <= lookupType && lookupType <= 9, "GPOS/GSUB lookup type " + lookupType + " unknown."); - var lookupFlag = this.parseUShort(); - var useMarkFilteringSet = lookupFlag & 16; - return { - lookupType, - lookupFlag, - subtables: this.parseList(Parser2.pointer(lookupTableParsers[lookupType])), - markFilteringSet: useMarkFilteringSet ? this.parseUShort() : void 0 - }; - }))) || []; -}; -Parser2.prototype.parseFeatureVariationsList = function() { - return this.parsePointer32(function() { - var majorVersion = this.parseUShort(); - var minorVersion = this.parseUShort(); - check.argument(majorVersion === 1 && minorVersion < 1, "GPOS/GSUB feature variations table unknown."); - var featureVariations = this.parseRecordList32({ - conditionSetOffset: Parser2.offset32, - featureTableSubstitutionOffset: Parser2.offset32 - }); - return featureVariations; - }) || []; -}; -var parse = { - getByte, - getCard8: getByte, - getUShort, - getCard16: getUShort, - getShort, - getULong, - getFixed, - getTag, - getOffset, - getBytes, - bytesToString, - Parser: Parser2 -}; -function parseCmapTableFormat12(cmap2, p2) { - p2.parseUShort(); - cmap2.length = p2.parseULong(); - cmap2.language = p2.parseULong(); - var groupCount; - cmap2.groupCount = groupCount = p2.parseULong(); - cmap2.glyphIndexMap = {}; - for (var i = 0; i < groupCount; i += 1) { - var startCharCode = p2.parseULong(); - var endCharCode = p2.parseULong(); - var startGlyphId = p2.parseULong(); - for (var c2 = startCharCode; c2 <= endCharCode; c2 += 1) { - cmap2.glyphIndexMap[c2] = startGlyphId; - startGlyphId++; - } - } -} -function parseCmapTableFormat4(cmap2, p2, data2, start, offset) { - cmap2.length = p2.parseUShort(); - cmap2.language = p2.parseUShort(); - var segCount; - cmap2.segCount = segCount = p2.parseUShort() >> 1; - p2.skip("uShort", 3); - cmap2.glyphIndexMap = {}; - var endCountParser = new parse.Parser(data2, start + offset + 14); - var startCountParser = new parse.Parser(data2, start + offset + 16 + segCount * 2); - var idDeltaParser = new parse.Parser(data2, start + offset + 16 + segCount * 4); - var idRangeOffsetParser = new parse.Parser(data2, start + offset + 16 + segCount * 6); - var glyphIndexOffset = start + offset + 16 + segCount * 8; - for (var i = 0; i < segCount - 1; i += 1) { - var glyphIndex = void 0; - var endCount = endCountParser.parseUShort(); - var startCount = startCountParser.parseUShort(); - var idDelta = idDeltaParser.parseShort(); - var idRangeOffset = idRangeOffsetParser.parseUShort(); - for (var c2 = startCount; c2 <= endCount; c2 += 1) { - if (idRangeOffset !== 0) { - glyphIndexOffset = idRangeOffsetParser.offset + idRangeOffsetParser.relativeOffset - 2; - glyphIndexOffset += idRangeOffset; - glyphIndexOffset += (c2 - startCount) * 2; - glyphIndex = parse.getUShort(data2, glyphIndexOffset); - if (glyphIndex !== 0) { - glyphIndex = glyphIndex + idDelta & 65535; - } - } else { - glyphIndex = c2 + idDelta & 65535; - } - cmap2.glyphIndexMap[c2] = glyphIndex; - } - } -} -function parseCmapTable(data2, start) { - var cmap2 = {}; - cmap2.version = parse.getUShort(data2, start); - check.argument(cmap2.version === 0, "cmap table version should be 0."); - cmap2.numTables = parse.getUShort(data2, start + 2); - var offset = -1; - for (var i = cmap2.numTables - 1; i >= 0; i -= 1) { - var platformId = parse.getUShort(data2, start + 4 + i * 8); - var encodingId = parse.getUShort(data2, start + 4 + i * 8 + 2); - if (platformId === 3 && (encodingId === 0 || encodingId === 1 || encodingId === 10) || platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 2 || encodingId === 3 || encodingId === 4)) { - offset = parse.getULong(data2, start + 4 + i * 8 + 4); - break; - } - } - if (offset === -1) { - throw new Error("No valid cmap sub-tables found."); - } - var p2 = new parse.Parser(data2, start + offset); - cmap2.format = p2.parseUShort(); - if (cmap2.format === 12) { - parseCmapTableFormat12(cmap2, p2); - } else if (cmap2.format === 4) { - parseCmapTableFormat4(cmap2, p2, data2, start, offset); - } else { - throw new Error("Only format 4 and 12 cmap tables are supported (found format " + cmap2.format + ")."); - } - return cmap2; -} -function addSegment(t3, code, glyphIndex) { - t3.segments.push({ - end: code, - start: code, - delta: -(code - glyphIndex), - offset: 0, - glyphIndex - }); -} -function addTerminatorSegment(t3) { - t3.segments.push({ - end: 65535, - start: 65535, - delta: 1, - offset: 0 - }); -} -function makeCmapTable(glyphs) { - var isPlan0Only = true; - var i; - for (i = glyphs.length - 1; i > 0; i -= 1) { - var g2 = glyphs.get(i); - if (g2.unicode > 65535) { - console.log("Adding CMAP format 12 (needed!)"); - isPlan0Only = false; - break; - } - } - var cmapTable = [ - { name: "version", type: "USHORT", value: 0 }, - { name: "numTables", type: "USHORT", value: isPlan0Only ? 1 : 2 }, - // CMAP 4 header - { name: "platformID", type: "USHORT", value: 3 }, - { name: "encodingID", type: "USHORT", value: 1 }, - { name: "offset", type: "ULONG", value: isPlan0Only ? 12 : 12 + 8 } - ]; - if (!isPlan0Only) { - cmapTable = cmapTable.concat([ - // CMAP 12 header - { name: "cmap12PlatformID", type: "USHORT", value: 3 }, - // We encode only for PlatformID = 3 (Windows) because it is supported everywhere - { name: "cmap12EncodingID", type: "USHORT", value: 10 }, - { name: "cmap12Offset", type: "ULONG", value: 0 } - ]); - } - cmapTable = cmapTable.concat([ - // CMAP 4 Subtable - { name: "format", type: "USHORT", value: 4 }, - { name: "cmap4Length", type: "USHORT", value: 0 }, - { name: "language", type: "USHORT", value: 0 }, - { name: "segCountX2", type: "USHORT", value: 0 }, - { name: "searchRange", type: "USHORT", value: 0 }, - { name: "entrySelector", type: "USHORT", value: 0 }, - { name: "rangeShift", type: "USHORT", value: 0 } - ]); - var t3 = new table.Table("cmap", cmapTable); - t3.segments = []; - for (i = 0; i < glyphs.length; i += 1) { - var glyph = glyphs.get(i); - for (var j = 0; j < glyph.unicodes.length; j += 1) { - addSegment(t3, glyph.unicodes[j], i); - } - t3.segments = t3.segments.sort(function(a2, b3) { - return a2.start - b3.start; - }); - } - addTerminatorSegment(t3); - var segCount = t3.segments.length; - var segCountToRemove = 0; - var endCounts = []; - var startCounts = []; - var idDeltas = []; - var idRangeOffsets = []; - var glyphIds = []; - var cmap12Groups = []; - for (i = 0; i < segCount; i += 1) { - var segment = t3.segments[i]; - if (segment.end <= 65535 && segment.start <= 65535) { - endCounts = endCounts.concat({ name: "end_" + i, type: "USHORT", value: segment.end }); - startCounts = startCounts.concat({ name: "start_" + i, type: "USHORT", value: segment.start }); - idDeltas = idDeltas.concat({ name: "idDelta_" + i, type: "SHORT", value: segment.delta }); - idRangeOffsets = idRangeOffsets.concat({ name: "idRangeOffset_" + i, type: "USHORT", value: segment.offset }); - if (segment.glyphId !== void 0) { - glyphIds = glyphIds.concat({ name: "glyph_" + i, type: "USHORT", value: segment.glyphId }); - } - } else { - segCountToRemove += 1; - } - if (!isPlan0Only && segment.glyphIndex !== void 0) { - cmap12Groups = cmap12Groups.concat({ name: "cmap12Start_" + i, type: "ULONG", value: segment.start }); - cmap12Groups = cmap12Groups.concat({ name: "cmap12End_" + i, type: "ULONG", value: segment.end }); - cmap12Groups = cmap12Groups.concat({ name: "cmap12Glyph_" + i, type: "ULONG", value: segment.glyphIndex }); - } - } - t3.segCountX2 = (segCount - segCountToRemove) * 2; - t3.searchRange = Math.pow(2, Math.floor(Math.log(segCount - segCountToRemove) / Math.log(2))) * 2; - t3.entrySelector = Math.log(t3.searchRange / 2) / Math.log(2); - t3.rangeShift = t3.segCountX2 - t3.searchRange; - t3.fields = t3.fields.concat(endCounts); - t3.fields.push({ name: "reservedPad", type: "USHORT", value: 0 }); - t3.fields = t3.fields.concat(startCounts); - t3.fields = t3.fields.concat(idDeltas); - t3.fields = t3.fields.concat(idRangeOffsets); - t3.fields = t3.fields.concat(glyphIds); - t3.cmap4Length = 14 + // Subtable header - endCounts.length * 2 + 2 + // reservedPad - startCounts.length * 2 + idDeltas.length * 2 + idRangeOffsets.length * 2 + glyphIds.length * 2; - if (!isPlan0Only) { - var cmap12Length = 16 + // Subtable header - cmap12Groups.length * 4; - t3.cmap12Offset = 12 + 2 * 2 + 4 + t3.cmap4Length; - t3.fields = t3.fields.concat([ - { name: "cmap12Format", type: "USHORT", value: 12 }, - { name: "cmap12Reserved", type: "USHORT", value: 0 }, - { name: "cmap12Length", type: "ULONG", value: cmap12Length }, - { name: "cmap12Language", type: "ULONG", value: 0 }, - { name: "cmap12nGroups", type: "ULONG", value: cmap12Groups.length / 3 } - ]); - t3.fields = t3.fields.concat(cmap12Groups); - } - return t3; -} -var cmap = { parse: parseCmapTable, make: makeCmapTable }; -var cffStandardStrings = [ - ".notdef", - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quoteright", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "quoteleft", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - "exclamdown", - "cent", - "sterling", - "fraction", - "yen", - "florin", - "section", - "currency", - "quotesingle", - "quotedblleft", - "guillemotleft", - "guilsinglleft", - "guilsinglright", - "fi", - "fl", - "endash", - "dagger", - "daggerdbl", - "periodcentered", - "paragraph", - "bullet", - "quotesinglbase", - "quotedblbase", - "quotedblright", - "guillemotright", - "ellipsis", - "perthousand", - "questiondown", - "grave", - "acute", - "circumflex", - "tilde", - "macron", - "breve", - "dotaccent", - "dieresis", - "ring", - "cedilla", - "hungarumlaut", - "ogonek", - "caron", - "emdash", - "AE", - "ordfeminine", - "Lslash", - "Oslash", - "OE", - "ordmasculine", - "ae", - "dotlessi", - "lslash", - "oslash", - "oe", - "germandbls", - "onesuperior", - "logicalnot", - "mu", - "trademark", - "Eth", - "onehalf", - "plusminus", - "Thorn", - "onequarter", - "divide", - "brokenbar", - "degree", - "thorn", - "threequarters", - "twosuperior", - "registered", - "minus", - "eth", - "multiply", - "threesuperior", - "copyright", - "Aacute", - "Acircumflex", - "Adieresis", - "Agrave", - "Aring", - "Atilde", - "Ccedilla", - "Eacute", - "Ecircumflex", - "Edieresis", - "Egrave", - "Iacute", - "Icircumflex", - "Idieresis", - "Igrave", - "Ntilde", - "Oacute", - "Ocircumflex", - "Odieresis", - "Ograve", - "Otilde", - "Scaron", - "Uacute", - "Ucircumflex", - "Udieresis", - "Ugrave", - "Yacute", - "Ydieresis", - "Zcaron", - "aacute", - "acircumflex", - "adieresis", - "agrave", - "aring", - "atilde", - "ccedilla", - "eacute", - "ecircumflex", - "edieresis", - "egrave", - "iacute", - "icircumflex", - "idieresis", - "igrave", - "ntilde", - "oacute", - "ocircumflex", - "odieresis", - "ograve", - "otilde", - "scaron", - "uacute", - "ucircumflex", - "udieresis", - "ugrave", - "yacute", - "ydieresis", - "zcaron", - "exclamsmall", - "Hungarumlautsmall", - "dollaroldstyle", - "dollarsuperior", - "ampersandsmall", - "Acutesmall", - "parenleftsuperior", - "parenrightsuperior", - "266 ff", - "onedotenleader", - "zerooldstyle", - "oneoldstyle", - "twooldstyle", - "threeoldstyle", - "fouroldstyle", - "fiveoldstyle", - "sixoldstyle", - "sevenoldstyle", - "eightoldstyle", - "nineoldstyle", - "commasuperior", - "threequartersemdash", - "periodsuperior", - "questionsmall", - "asuperior", - "bsuperior", - "centsuperior", - "dsuperior", - "esuperior", - "isuperior", - "lsuperior", - "msuperior", - "nsuperior", - "osuperior", - "rsuperior", - "ssuperior", - "tsuperior", - "ff", - "ffi", - "ffl", - "parenleftinferior", - "parenrightinferior", - "Circumflexsmall", - "hyphensuperior", - "Gravesmall", - "Asmall", - "Bsmall", - "Csmall", - "Dsmall", - "Esmall", - "Fsmall", - "Gsmall", - "Hsmall", - "Ismall", - "Jsmall", - "Ksmall", - "Lsmall", - "Msmall", - "Nsmall", - "Osmall", - "Psmall", - "Qsmall", - "Rsmall", - "Ssmall", - "Tsmall", - "Usmall", - "Vsmall", - "Wsmall", - "Xsmall", - "Ysmall", - "Zsmall", - "colonmonetary", - "onefitted", - "rupiah", - "Tildesmall", - "exclamdownsmall", - "centoldstyle", - "Lslashsmall", - "Scaronsmall", - "Zcaronsmall", - "Dieresissmall", - "Brevesmall", - "Caronsmall", - "Dotaccentsmall", - "Macronsmall", - "figuredash", - "hypheninferior", - "Ogoneksmall", - "Ringsmall", - "Cedillasmall", - "questiondownsmall", - "oneeighth", - "threeeighths", - "fiveeighths", - "seveneighths", - "onethird", - "twothirds", - "zerosuperior", - "foursuperior", - "fivesuperior", - "sixsuperior", - "sevensuperior", - "eightsuperior", - "ninesuperior", - "zeroinferior", - "oneinferior", - "twoinferior", - "threeinferior", - "fourinferior", - "fiveinferior", - "sixinferior", - "seveninferior", - "eightinferior", - "nineinferior", - "centinferior", - "dollarinferior", - "periodinferior", - "commainferior", - "Agravesmall", - "Aacutesmall", - "Acircumflexsmall", - "Atildesmall", - "Adieresissmall", - "Aringsmall", - "AEsmall", - "Ccedillasmall", - "Egravesmall", - "Eacutesmall", - "Ecircumflexsmall", - "Edieresissmall", - "Igravesmall", - "Iacutesmall", - "Icircumflexsmall", - "Idieresissmall", - "Ethsmall", - "Ntildesmall", - "Ogravesmall", - "Oacutesmall", - "Ocircumflexsmall", - "Otildesmall", - "Odieresissmall", - "OEsmall", - "Oslashsmall", - "Ugravesmall", - "Uacutesmall", - "Ucircumflexsmall", - "Udieresissmall", - "Yacutesmall", - "Thornsmall", - "Ydieresissmall", - "001.000", - "001.001", - "001.002", - "001.003", - "Black", - "Bold", - "Book", - "Light", - "Medium", - "Regular", - "Roman", - "Semibold" -]; -var cffStandardEncoding = [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quoteright", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "quoteleft", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "exclamdown", - "cent", - "sterling", - "fraction", - "yen", - "florin", - "section", - "currency", - "quotesingle", - "quotedblleft", - "guillemotleft", - "guilsinglleft", - "guilsinglright", - "fi", - "fl", - "", - "endash", - "dagger", - "daggerdbl", - "periodcentered", - "", - "paragraph", - "bullet", - "quotesinglbase", - "quotedblbase", - "quotedblright", - "guillemotright", - "ellipsis", - "perthousand", - "", - "questiondown", - "", - "grave", - "acute", - "circumflex", - "tilde", - "macron", - "breve", - "dotaccent", - "dieresis", - "", - "ring", - "cedilla", - "", - "hungarumlaut", - "ogonek", - "caron", - "emdash", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "AE", - "", - "ordfeminine", - "", - "", - "", - "", - "Lslash", - "Oslash", - "OE", - "ordmasculine", - "", - "", - "", - "", - "", - "ae", - "", - "", - "", - "dotlessi", - "", - "", - "lslash", - "oslash", - "oe", - "germandbls" -]; -var cffExpertEncoding = [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "space", - "exclamsmall", - "Hungarumlautsmall", - "", - "dollaroldstyle", - "dollarsuperior", - "ampersandsmall", - "Acutesmall", - "parenleftsuperior", - "parenrightsuperior", - "twodotenleader", - "onedotenleader", - "comma", - "hyphen", - "period", - "fraction", - "zerooldstyle", - "oneoldstyle", - "twooldstyle", - "threeoldstyle", - "fouroldstyle", - "fiveoldstyle", - "sixoldstyle", - "sevenoldstyle", - "eightoldstyle", - "nineoldstyle", - "colon", - "semicolon", - "commasuperior", - "threequartersemdash", - "periodsuperior", - "questionsmall", - "", - "asuperior", - "bsuperior", - "centsuperior", - "dsuperior", - "esuperior", - "", - "", - "isuperior", - "", - "", - "lsuperior", - "msuperior", - "nsuperior", - "osuperior", - "", - "", - "rsuperior", - "ssuperior", - "tsuperior", - "", - "ff", - "fi", - "fl", - "ffi", - "ffl", - "parenleftinferior", - "", - "parenrightinferior", - "Circumflexsmall", - "hyphensuperior", - "Gravesmall", - "Asmall", - "Bsmall", - "Csmall", - "Dsmall", - "Esmall", - "Fsmall", - "Gsmall", - "Hsmall", - "Ismall", - "Jsmall", - "Ksmall", - "Lsmall", - "Msmall", - "Nsmall", - "Osmall", - "Psmall", - "Qsmall", - "Rsmall", - "Ssmall", - "Tsmall", - "Usmall", - "Vsmall", - "Wsmall", - "Xsmall", - "Ysmall", - "Zsmall", - "colonmonetary", - "onefitted", - "rupiah", - "Tildesmall", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "exclamdownsmall", - "centoldstyle", - "Lslashsmall", - "", - "", - "Scaronsmall", - "Zcaronsmall", - "Dieresissmall", - "Brevesmall", - "Caronsmall", - "", - "Dotaccentsmall", - "", - "", - "Macronsmall", - "", - "", - "figuredash", - "hypheninferior", - "", - "", - "Ogoneksmall", - "Ringsmall", - "Cedillasmall", - "", - "", - "", - "onequarter", - "onehalf", - "threequarters", - "questiondownsmall", - "oneeighth", - "threeeighths", - "fiveeighths", - "seveneighths", - "onethird", - "twothirds", - "", - "", - "zerosuperior", - "onesuperior", - "twosuperior", - "threesuperior", - "foursuperior", - "fivesuperior", - "sixsuperior", - "sevensuperior", - "eightsuperior", - "ninesuperior", - "zeroinferior", - "oneinferior", - "twoinferior", - "threeinferior", - "fourinferior", - "fiveinferior", - "sixinferior", - "seveninferior", - "eightinferior", - "nineinferior", - "centinferior", - "dollarinferior", - "periodinferior", - "commainferior", - "Agravesmall", - "Aacutesmall", - "Acircumflexsmall", - "Atildesmall", - "Adieresissmall", - "Aringsmall", - "AEsmall", - "Ccedillasmall", - "Egravesmall", - "Eacutesmall", - "Ecircumflexsmall", - "Edieresissmall", - "Igravesmall", - "Iacutesmall", - "Icircumflexsmall", - "Idieresissmall", - "Ethsmall", - "Ntildesmall", - "Ogravesmall", - "Oacutesmall", - "Ocircumflexsmall", - "Otildesmall", - "Odieresissmall", - "OEsmall", - "Oslashsmall", - "Ugravesmall", - "Uacutesmall", - "Ucircumflexsmall", - "Udieresissmall", - "Yacutesmall", - "Thornsmall", - "Ydieresissmall" -]; -var standardNames = [ - ".notdef", - ".null", - "nonmarkingreturn", - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quotesingle", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "grave", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - "Adieresis", - "Aring", - "Ccedilla", - "Eacute", - "Ntilde", - "Odieresis", - "Udieresis", - "aacute", - "agrave", - "acircumflex", - "adieresis", - "atilde", - "aring", - "ccedilla", - "eacute", - "egrave", - "ecircumflex", - "edieresis", - "iacute", - "igrave", - "icircumflex", - "idieresis", - "ntilde", - "oacute", - "ograve", - "ocircumflex", - "odieresis", - "otilde", - "uacute", - "ugrave", - "ucircumflex", - "udieresis", - "dagger", - "degree", - "cent", - "sterling", - "section", - "bullet", - "paragraph", - "germandbls", - "registered", - "copyright", - "trademark", - "acute", - "dieresis", - "notequal", - "AE", - "Oslash", - "infinity", - "plusminus", - "lessequal", - "greaterequal", - "yen", - "mu", - "partialdiff", - "summation", - "product", - "pi", - "integral", - "ordfeminine", - "ordmasculine", - "Omega", - "ae", - "oslash", - "questiondown", - "exclamdown", - "logicalnot", - "radical", - "florin", - "approxequal", - "Delta", - "guillemotleft", - "guillemotright", - "ellipsis", - "nonbreakingspace", - "Agrave", - "Atilde", - "Otilde", - "OE", - "oe", - "endash", - "emdash", - "quotedblleft", - "quotedblright", - "quoteleft", - "quoteright", - "divide", - "lozenge", - "ydieresis", - "Ydieresis", - "fraction", - "currency", - "guilsinglleft", - "guilsinglright", - "fi", - "fl", - "daggerdbl", - "periodcentered", - "quotesinglbase", - "quotedblbase", - "perthousand", - "Acircumflex", - "Ecircumflex", - "Aacute", - "Edieresis", - "Egrave", - "Iacute", - "Icircumflex", - "Idieresis", - "Igrave", - "Oacute", - "Ocircumflex", - "apple", - "Ograve", - "Uacute", - "Ucircumflex", - "Ugrave", - "dotlessi", - "circumflex", - "tilde", - "macron", - "breve", - "dotaccent", - "ring", - "cedilla", - "hungarumlaut", - "ogonek", - "caron", - "Lslash", - "lslash", - "Scaron", - "scaron", - "Zcaron", - "zcaron", - "brokenbar", - "Eth", - "eth", - "Yacute", - "yacute", - "Thorn", - "thorn", - "minus", - "multiply", - "onesuperior", - "twosuperior", - "threesuperior", - "onehalf", - "onequarter", - "threequarters", - "franc", - "Gbreve", - "gbreve", - "Idotaccent", - "Scedilla", - "scedilla", - "Cacute", - "cacute", - "Ccaron", - "ccaron", - "dcroat" -]; -function DefaultEncoding(font) { - this.font = font; -} -DefaultEncoding.prototype.charToGlyphIndex = function(c2) { - var code = c2.codePointAt(0); - var glyphs = this.font.glyphs; - if (glyphs) { - for (var i = 0; i < glyphs.length; i += 1) { - var glyph = glyphs.get(i); - for (var j = 0; j < glyph.unicodes.length; j += 1) { - if (glyph.unicodes[j] === code) { - return i; - } - } - } - } - return null; -}; -function CmapEncoding(cmap2) { - this.cmap = cmap2; -} -CmapEncoding.prototype.charToGlyphIndex = function(c2) { - return this.cmap.glyphIndexMap[c2.codePointAt(0)] || 0; -}; -function CffEncoding(encoding, charset) { - this.encoding = encoding; - this.charset = charset; -} -CffEncoding.prototype.charToGlyphIndex = function(s) { - var code = s.codePointAt(0); - var charName = this.encoding[code]; - return this.charset.indexOf(charName); -}; -function GlyphNames(post2) { - switch (post2.version) { - case 1: - this.names = standardNames.slice(); - break; - case 2: - this.names = new Array(post2.numberOfGlyphs); - for (var i = 0; i < post2.numberOfGlyphs; i++) { - if (post2.glyphNameIndex[i] < standardNames.length) { - this.names[i] = standardNames[post2.glyphNameIndex[i]]; - } else { - this.names[i] = post2.names[post2.glyphNameIndex[i] - standardNames.length]; - } - } - break; - case 2.5: - this.names = new Array(post2.numberOfGlyphs); - for (var i$1 = 0; i$1 < post2.numberOfGlyphs; i$1++) { - this.names[i$1] = standardNames[i$1 + post2.glyphNameIndex[i$1]]; - } - break; - case 3: - this.names = []; - break; - default: - this.names = []; - break; - } -} -GlyphNames.prototype.nameToGlyphIndex = function(name2) { - return this.names.indexOf(name2); -}; -GlyphNames.prototype.glyphIndexToName = function(gid) { - return this.names[gid]; -}; -function addGlyphNamesAll(font) { - var glyph; - var glyphIndexMap = font.tables.cmap.glyphIndexMap; - var charCodes = Object.keys(glyphIndexMap); - for (var i = 0; i < charCodes.length; i += 1) { - var c2 = charCodes[i]; - var glyphIndex = glyphIndexMap[c2]; - glyph = font.glyphs.get(glyphIndex); - glyph.addUnicode(parseInt(c2)); - } - for (var i$1 = 0; i$1 < font.glyphs.length; i$1 += 1) { - glyph = font.glyphs.get(i$1); - if (font.cffEncoding) { - if (font.isCIDFont) { - glyph.name = "gid" + i$1; - } else { - glyph.name = font.cffEncoding.charset[i$1]; - } - } else if (font.glyphNames.names) { - glyph.name = font.glyphNames.glyphIndexToName(i$1); - } - } -} -function addGlyphNamesToUnicodeMap(font) { - font._IndexToUnicodeMap = {}; - var glyphIndexMap = font.tables.cmap.glyphIndexMap; - var charCodes = Object.keys(glyphIndexMap); - for (var i = 0; i < charCodes.length; i += 1) { - var c2 = charCodes[i]; - var glyphIndex = glyphIndexMap[c2]; - if (font._IndexToUnicodeMap[glyphIndex] === void 0) { - font._IndexToUnicodeMap[glyphIndex] = { - unicodes: [parseInt(c2)] - }; - } else { - font._IndexToUnicodeMap[glyphIndex].unicodes.push(parseInt(c2)); - } - } -} -function addGlyphNames(font, opt) { - if (opt.lowMemory) { - addGlyphNamesToUnicodeMap(font); - } else { - addGlyphNamesAll(font); - } -} -function line(ctx, x1, y1, x2, y2) { - ctx.beginPath(); - ctx.moveTo(x1, y1); - ctx.lineTo(x2, y2); - ctx.stroke(); -} -var draw = { line }; -function getPathDefinition(glyph, path) { - var _path = path || new Path2(); - return { - configurable: true, - get: function() { - if (typeof _path === "function") { - _path = _path(); - } - return _path; - }, - set: function(p2) { - _path = p2; - } - }; -} -function Glyph(options) { - this.bindConstructorValues(options); -} -Glyph.prototype.bindConstructorValues = function(options) { - this.index = options.index || 0; - this.name = options.name || null; - this.unicode = options.unicode || void 0; - this.unicodes = options.unicodes || options.unicode !== void 0 ? [options.unicode] : []; - if ("xMin" in options) { - this.xMin = options.xMin; - } - if ("yMin" in options) { - this.yMin = options.yMin; - } - if ("xMax" in options) { - this.xMax = options.xMax; - } - if ("yMax" in options) { - this.yMax = options.yMax; - } - if ("advanceWidth" in options) { - this.advanceWidth = options.advanceWidth; - } - Object.defineProperty(this, "path", getPathDefinition(this, options.path)); -}; -Glyph.prototype.addUnicode = function(unicode) { - if (this.unicodes.length === 0) { - this.unicode = unicode; - } - this.unicodes.push(unicode); -}; -Glyph.prototype.getBoundingBox = function() { - return this.path.getBoundingBox(); -}; -Glyph.prototype.getPath = function(x2, y2, fontSize, options, font) { - x2 = x2 !== void 0 ? x2 : 0; - y2 = y2 !== void 0 ? y2 : 0; - fontSize = fontSize !== void 0 ? fontSize : 72; - var commands; - var hPoints; - if (!options) { - options = {}; - } - var xScale = options.xScale; - var yScale = options.yScale; - if (options.hinting && font && font.hinting) { - hPoints = this.path && font.hinting.exec(this, fontSize); - } - if (hPoints) { - commands = font.hinting.getCommands(hPoints); - x2 = Math.round(x2); - y2 = Math.round(y2); - xScale = yScale = 1; - } else { - commands = this.path.commands; - var scale2 = 1 / (this.path.unitsPerEm || 1e3) * fontSize; - if (xScale === void 0) { - xScale = scale2; - } - if (yScale === void 0) { - yScale = scale2; - } - } - var p2 = new Path2(); - for (var i = 0; i < commands.length; i += 1) { - var cmd = commands[i]; - if (cmd.type === "M") { - p2.moveTo(x2 + cmd.x * xScale, y2 + -cmd.y * yScale); - } else if (cmd.type === "L") { - p2.lineTo(x2 + cmd.x * xScale, y2 + -cmd.y * yScale); - } else if (cmd.type === "Q") { - p2.quadraticCurveTo( - x2 + cmd.x1 * xScale, - y2 + -cmd.y1 * yScale, - x2 + cmd.x * xScale, - y2 + -cmd.y * yScale - ); - } else if (cmd.type === "C") { - p2.curveTo( - x2 + cmd.x1 * xScale, - y2 + -cmd.y1 * yScale, - x2 + cmd.x2 * xScale, - y2 + -cmd.y2 * yScale, - x2 + cmd.x * xScale, - y2 + -cmd.y * yScale - ); - } else if (cmd.type === "Z") { - p2.closePath(); - } - } - return p2; -}; -Glyph.prototype.getContours = function() { - if (this.points === void 0) { - return []; - } - var contours = []; - var currentContour = []; - for (var i = 0; i < this.points.length; i += 1) { - var pt = this.points[i]; - currentContour.push(pt); - if (pt.lastPointOfContour) { - contours.push(currentContour); - currentContour = []; - } - } - check.argument(currentContour.length === 0, "There are still points left in the current contour."); - return contours; -}; -Glyph.prototype.getMetrics = function() { - var commands = this.path.commands; - var xCoords = []; - var yCoords = []; - for (var i = 0; i < commands.length; i += 1) { - var cmd = commands[i]; - if (cmd.type !== "Z") { - xCoords.push(cmd.x); - yCoords.push(cmd.y); - } - if (cmd.type === "Q" || cmd.type === "C") { - xCoords.push(cmd.x1); - yCoords.push(cmd.y1); - } - if (cmd.type === "C") { - xCoords.push(cmd.x2); - yCoords.push(cmd.y2); - } - } - var metrics = { - xMin: Math.min.apply(null, xCoords), - yMin: Math.min.apply(null, yCoords), - xMax: Math.max.apply(null, xCoords), - yMax: Math.max.apply(null, yCoords), - leftSideBearing: this.leftSideBearing - }; - if (!isFinite(metrics.xMin)) { - metrics.xMin = 0; - } - if (!isFinite(metrics.xMax)) { - metrics.xMax = this.advanceWidth; - } - if (!isFinite(metrics.yMin)) { - metrics.yMin = 0; - } - if (!isFinite(metrics.yMax)) { - metrics.yMax = 0; - } - metrics.rightSideBearing = this.advanceWidth - metrics.leftSideBearing - (metrics.xMax - metrics.xMin); - return metrics; -}; -Glyph.prototype.draw = function(ctx, x2, y2, fontSize, options) { - this.getPath(x2, y2, fontSize, options).draw(ctx); -}; -Glyph.prototype.drawPoints = function(ctx, x2, y2, fontSize) { - function drawCircles(l2, x3, y3, scale3) { - ctx.beginPath(); - for (var j = 0; j < l2.length; j += 1) { - ctx.moveTo(x3 + l2[j].x * scale3, y3 + l2[j].y * scale3); - ctx.arc(x3 + l2[j].x * scale3, y3 + l2[j].y * scale3, 2, 0, Math.PI * 2, false); - } - ctx.closePath(); - ctx.fill(); - } - x2 = x2 !== void 0 ? x2 : 0; - y2 = y2 !== void 0 ? y2 : 0; - fontSize = fontSize !== void 0 ? fontSize : 24; - var scale2 = 1 / this.path.unitsPerEm * fontSize; - var blueCircles = []; - var redCircles = []; - var path = this.path; - for (var i = 0; i < path.commands.length; i += 1) { - var cmd = path.commands[i]; - if (cmd.x !== void 0) { - blueCircles.push({ x: cmd.x, y: -cmd.y }); - } - if (cmd.x1 !== void 0) { - redCircles.push({ x: cmd.x1, y: -cmd.y1 }); - } - if (cmd.x2 !== void 0) { - redCircles.push({ x: cmd.x2, y: -cmd.y2 }); - } - } - ctx.fillStyle = "blue"; - drawCircles(blueCircles, x2, y2, scale2); - ctx.fillStyle = "red"; - drawCircles(redCircles, x2, y2, scale2); -}; -Glyph.prototype.drawMetrics = function(ctx, x2, y2, fontSize) { - var scale2; - x2 = x2 !== void 0 ? x2 : 0; - y2 = y2 !== void 0 ? y2 : 0; - fontSize = fontSize !== void 0 ? fontSize : 24; - scale2 = 1 / this.path.unitsPerEm * fontSize; - ctx.lineWidth = 1; - ctx.strokeStyle = "black"; - draw.line(ctx, x2, -1e4, x2, 1e4); - draw.line(ctx, -1e4, y2, 1e4, y2); - var xMin = this.xMin || 0; - var yMin = this.yMin || 0; - var xMax = this.xMax || 0; - var yMax = this.yMax || 0; - var advanceWidth = this.advanceWidth || 0; - ctx.strokeStyle = "blue"; - draw.line(ctx, x2 + xMin * scale2, -1e4, x2 + xMin * scale2, 1e4); - draw.line(ctx, x2 + xMax * scale2, -1e4, x2 + xMax * scale2, 1e4); - draw.line(ctx, -1e4, y2 + -yMin * scale2, 1e4, y2 + -yMin * scale2); - draw.line(ctx, -1e4, y2 + -yMax * scale2, 1e4, y2 + -yMax * scale2); - ctx.strokeStyle = "green"; - draw.line(ctx, x2 + advanceWidth * scale2, -1e4, x2 + advanceWidth * scale2, 1e4); -}; -function defineDependentProperty(glyph, externalName, internalName) { - Object.defineProperty(glyph, externalName, { - get: function() { - glyph.path; - return glyph[internalName]; - }, - set: function(newValue) { - glyph[internalName] = newValue; - }, - enumerable: true, - configurable: true - }); -} -function GlyphSet(font, glyphs) { - this.font = font; - this.glyphs = {}; - if (Array.isArray(glyphs)) { - for (var i = 0; i < glyphs.length; i++) { - var glyph = glyphs[i]; - glyph.path.unitsPerEm = font.unitsPerEm; - this.glyphs[i] = glyph; - } - } - this.length = glyphs && glyphs.length || 0; -} -GlyphSet.prototype.get = function(index2) { - if (this.glyphs[index2] === void 0) { - this.font._push(index2); - if (typeof this.glyphs[index2] === "function") { - this.glyphs[index2] = this.glyphs[index2](); - } - var glyph = this.glyphs[index2]; - var unicodeObj = this.font._IndexToUnicodeMap[index2]; - if (unicodeObj) { - for (var j = 0; j < unicodeObj.unicodes.length; j++) { - glyph.addUnicode(unicodeObj.unicodes[j]); - } - } - if (this.font.cffEncoding) { - if (this.font.isCIDFont) { - glyph.name = "gid" + index2; - } else { - glyph.name = this.font.cffEncoding.charset[index2]; - } - } else if (this.font.glyphNames.names) { - glyph.name = this.font.glyphNames.glyphIndexToName(index2); - } - this.glyphs[index2].advanceWidth = this.font._hmtxTableData[index2].advanceWidth; - this.glyphs[index2].leftSideBearing = this.font._hmtxTableData[index2].leftSideBearing; - } else { - if (typeof this.glyphs[index2] === "function") { - this.glyphs[index2] = this.glyphs[index2](); - } - } - return this.glyphs[index2]; -}; -GlyphSet.prototype.push = function(index2, loader) { - this.glyphs[index2] = loader; - this.length++; -}; -function glyphLoader(font, index2) { - return new Glyph({ index: index2, font }); -} -function ttfGlyphLoader(font, index2, parseGlyph2, data2, position2, buildPath2) { - return function() { - var glyph = new Glyph({ index: index2, font }); - glyph.path = function() { - parseGlyph2(glyph, data2, position2); - var path = buildPath2(font.glyphs, glyph); - path.unitsPerEm = font.unitsPerEm; - return path; - }; - defineDependentProperty(glyph, "xMin", "_xMin"); - defineDependentProperty(glyph, "xMax", "_xMax"); - defineDependentProperty(glyph, "yMin", "_yMin"); - defineDependentProperty(glyph, "yMax", "_yMax"); - return glyph; - }; -} -function cffGlyphLoader(font, index2, parseCFFCharstring2, charstring) { - return function() { - var glyph = new Glyph({ index: index2, font }); - glyph.path = function() { - var path = parseCFFCharstring2(font, glyph, charstring); - path.unitsPerEm = font.unitsPerEm; - return path; - }; - return glyph; - }; -} -var glyphset = { GlyphSet, glyphLoader, ttfGlyphLoader, cffGlyphLoader }; -function equals(a2, b3) { - if (a2 === b3) { - return true; - } else if (Array.isArray(a2) && Array.isArray(b3)) { - if (a2.length !== b3.length) { - return false; - } - for (var i = 0; i < a2.length; i += 1) { - if (!equals(a2[i], b3[i])) { - return false; - } - } - return true; - } else { - return false; - } -} -function calcCFFSubroutineBias(subrs) { - var bias; - if (subrs.length < 1240) { - bias = 107; - } else if (subrs.length < 33900) { - bias = 1131; - } else { - bias = 32768; - } - return bias; -} -function parseCFFIndex(data2, start, conversionFn) { - var offsets = []; - var objects = []; - var count = parse.getCard16(data2, start); - var objectOffset; - var endOffset; - if (count !== 0) { - var offsetSize = parse.getByte(data2, start + 2); - objectOffset = start + (count + 1) * offsetSize + 2; - var pos = start + 3; - for (var i = 0; i < count + 1; i += 1) { - offsets.push(parse.getOffset(data2, pos, offsetSize)); - pos += offsetSize; - } - endOffset = objectOffset + offsets[count]; - } else { - endOffset = start + 2; - } - for (var i$1 = 0; i$1 < offsets.length - 1; i$1 += 1) { - var value2 = parse.getBytes(data2, objectOffset + offsets[i$1], objectOffset + offsets[i$1 + 1]); - if (conversionFn) { - value2 = conversionFn(value2); - } - objects.push(value2); - } - return { objects, startOffset: start, endOffset }; -} -function parseCFFIndexLowMemory(data2, start) { - var offsets = []; - var count = parse.getCard16(data2, start); - var objectOffset; - var endOffset; - if (count !== 0) { - var offsetSize = parse.getByte(data2, start + 2); - objectOffset = start + (count + 1) * offsetSize + 2; - var pos = start + 3; - for (var i = 0; i < count + 1; i += 1) { - offsets.push(parse.getOffset(data2, pos, offsetSize)); - pos += offsetSize; - } - endOffset = objectOffset + offsets[count]; - } else { - endOffset = start + 2; - } - return { offsets, startOffset: start, endOffset }; -} -function getCffIndexObject(i, offsets, data2, start, conversionFn) { - var count = parse.getCard16(data2, start); - var objectOffset = 0; - if (count !== 0) { - var offsetSize = parse.getByte(data2, start + 2); - objectOffset = start + (count + 1) * offsetSize + 2; - } - var value2 = parse.getBytes(data2, objectOffset + offsets[i], objectOffset + offsets[i + 1]); - if (conversionFn) { - value2 = conversionFn(value2); - } - return value2; -} -function parseFloatOperand(parser) { - var s = ""; - var eof = 15; - var lookup = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "E", "E-", null, "-"]; - while (true) { - var b3 = parser.parseByte(); - var n1 = b3 >> 4; - var n2 = b3 & 15; - if (n1 === eof) { - break; - } - s += lookup[n1]; - if (n2 === eof) { - break; - } - s += lookup[n2]; - } - return parseFloat(s); -} -function parseOperand(parser, b0) { - var b1; - var b22; - var b3; - var b42; - if (b0 === 28) { - b1 = parser.parseByte(); - b22 = parser.parseByte(); - return b1 << 8 | b22; - } - if (b0 === 29) { - b1 = parser.parseByte(); - b22 = parser.parseByte(); - b3 = parser.parseByte(); - b42 = parser.parseByte(); - return b1 << 24 | b22 << 16 | b3 << 8 | b42; - } - if (b0 === 30) { - return parseFloatOperand(parser); - } - if (b0 >= 32 && b0 <= 246) { - return b0 - 139; - } - if (b0 >= 247 && b0 <= 250) { - b1 = parser.parseByte(); - return (b0 - 247) * 256 + b1 + 108; - } - if (b0 >= 251 && b0 <= 254) { - b1 = parser.parseByte(); - return -(b0 - 251) * 256 - b1 - 108; - } - throw new Error("Invalid b0 " + b0); -} -function entriesToObject(entries) { - var o = {}; - for (var i = 0; i < entries.length; i += 1) { - var key2 = entries[i][0]; - var values2 = entries[i][1]; - var value2 = void 0; - if (values2.length === 1) { - value2 = values2[0]; - } else { - value2 = values2; - } - if (o.hasOwnProperty(key2) && !isNaN(o[key2])) { - throw new Error("Object " + o + " already has key " + key2); - } - o[key2] = value2; - } - return o; -} -function parseCFFDict(data2, start, size2) { - start = start !== void 0 ? start : 0; - var parser = new parse.Parser(data2, start); - var entries = []; - var operands = []; - size2 = size2 !== void 0 ? size2 : data2.length; - while (parser.relativeOffset < size2) { - var op = parser.parseByte(); - if (op <= 21) { - if (op === 12) { - op = 1200 + parser.parseByte(); - } - entries.push([op, operands]); - operands = []; - } else { - operands.push(parseOperand(parser, op)); - } - } - return entriesToObject(entries); -} -function getCFFString(strings, index2) { - if (index2 <= 390) { - index2 = cffStandardStrings[index2]; - } else { - index2 = strings[index2 - 391]; - } - return index2; -} -function interpretDict(dict, meta2, strings) { - var newDict = {}; - var value2; - for (var i = 0; i < meta2.length; i += 1) { - var m = meta2[i]; - if (Array.isArray(m.type)) { - var values2 = []; - values2.length = m.type.length; - for (var j = 0; j < m.type.length; j++) { - value2 = dict[m.op] !== void 0 ? dict[m.op][j] : void 0; - if (value2 === void 0) { - value2 = m.value !== void 0 && m.value[j] !== void 0 ? m.value[j] : null; - } - if (m.type[j] === "SID") { - value2 = getCFFString(strings, value2); - } - values2[j] = value2; - } - newDict[m.name] = values2; - } else { - value2 = dict[m.op]; - if (value2 === void 0) { - value2 = m.value !== void 0 ? m.value : null; - } - if (m.type === "SID") { - value2 = getCFFString(strings, value2); - } - newDict[m.name] = value2; - } - } - return newDict; -} -function parseCFFHeader(data2, start) { - var header = {}; - header.formatMajor = parse.getCard8(data2, start); - header.formatMinor = parse.getCard8(data2, start + 1); - header.size = parse.getCard8(data2, start + 2); - header.offsetSize = parse.getCard8(data2, start + 3); - header.startOffset = start; - header.endOffset = start + 4; - return header; -} -var TOP_DICT_META = [ - { name: "version", op: 0, type: "SID" }, - { name: "notice", op: 1, type: "SID" }, - { name: "copyright", op: 1200, type: "SID" }, - { name: "fullName", op: 2, type: "SID" }, - { name: "familyName", op: 3, type: "SID" }, - { name: "weight", op: 4, type: "SID" }, - { name: "isFixedPitch", op: 1201, type: "number", value: 0 }, - { name: "italicAngle", op: 1202, type: "number", value: 0 }, - { name: "underlinePosition", op: 1203, type: "number", value: -100 }, - { name: "underlineThickness", op: 1204, type: "number", value: 50 }, - { name: "paintType", op: 1205, type: "number", value: 0 }, - { name: "charstringType", op: 1206, type: "number", value: 2 }, - { - name: "fontMatrix", - op: 1207, - type: ["real", "real", "real", "real", "real", "real"], - value: [1e-3, 0, 0, 1e-3, 0, 0] - }, - { name: "uniqueId", op: 13, type: "number" }, - { name: "fontBBox", op: 5, type: ["number", "number", "number", "number"], value: [0, 0, 0, 0] }, - { name: "strokeWidth", op: 1208, type: "number", value: 0 }, - { name: "xuid", op: 14, type: [], value: null }, - { name: "charset", op: 15, type: "offset", value: 0 }, - { name: "encoding", op: 16, type: "offset", value: 0 }, - { name: "charStrings", op: 17, type: "offset", value: 0 }, - { name: "private", op: 18, type: ["number", "offset"], value: [0, 0] }, - { name: "ros", op: 1230, type: ["SID", "SID", "number"] }, - { name: "cidFontVersion", op: 1231, type: "number", value: 0 }, - { name: "cidFontRevision", op: 1232, type: "number", value: 0 }, - { name: "cidFontType", op: 1233, type: "number", value: 0 }, - { name: "cidCount", op: 1234, type: "number", value: 8720 }, - { name: "uidBase", op: 1235, type: "number" }, - { name: "fdArray", op: 1236, type: "offset" }, - { name: "fdSelect", op: 1237, type: "offset" }, - { name: "fontName", op: 1238, type: "SID" } -]; -var PRIVATE_DICT_META = [ - { name: "subrs", op: 19, type: "offset", value: 0 }, - { name: "defaultWidthX", op: 20, type: "number", value: 0 }, - { name: "nominalWidthX", op: 21, type: "number", value: 0 } -]; -function parseCFFTopDict(data2, strings) { - var dict = parseCFFDict(data2, 0, data2.byteLength); - return interpretDict(dict, TOP_DICT_META, strings); -} -function parseCFFPrivateDict(data2, start, size2, strings) { - var dict = parseCFFDict(data2, start, size2); - return interpretDict(dict, PRIVATE_DICT_META, strings); -} -function gatherCFFTopDicts(data2, start, cffIndex, strings) { - var topDictArray = []; - for (var iTopDict = 0; iTopDict < cffIndex.length; iTopDict += 1) { - var topDictData = new DataView(new Uint8Array(cffIndex[iTopDict]).buffer); - var topDict = parseCFFTopDict(topDictData, strings); - topDict._subrs = []; - topDict._subrsBias = 0; - topDict._defaultWidthX = 0; - topDict._nominalWidthX = 0; - var privateSize = topDict.private[0]; - var privateOffset = topDict.private[1]; - if (privateSize !== 0 && privateOffset !== 0) { - var privateDict = parseCFFPrivateDict(data2, privateOffset + start, privateSize, strings); - topDict._defaultWidthX = privateDict.defaultWidthX; - topDict._nominalWidthX = privateDict.nominalWidthX; - if (privateDict.subrs !== 0) { - var subrOffset = privateOffset + privateDict.subrs; - var subrIndex = parseCFFIndex(data2, subrOffset + start); - topDict._subrs = subrIndex.objects; - topDict._subrsBias = calcCFFSubroutineBias(topDict._subrs); - } - topDict._privateDict = privateDict; - } - topDictArray.push(topDict); - } - return topDictArray; -} -function parseCFFCharset(data2, start, nGlyphs, strings) { - var sid; - var count; - var parser = new parse.Parser(data2, start); - nGlyphs -= 1; - var charset = [".notdef"]; - var format = parser.parseCard8(); - if (format === 0) { - for (var i = 0; i < nGlyphs; i += 1) { - sid = parser.parseSID(); - charset.push(getCFFString(strings, sid)); - } - } else if (format === 1) { - while (charset.length <= nGlyphs) { - sid = parser.parseSID(); - count = parser.parseCard8(); - for (var i$1 = 0; i$1 <= count; i$1 += 1) { - charset.push(getCFFString(strings, sid)); - sid += 1; - } - } - } else if (format === 2) { - while (charset.length <= nGlyphs) { - sid = parser.parseSID(); - count = parser.parseCard16(); - for (var i$2 = 0; i$2 <= count; i$2 += 1) { - charset.push(getCFFString(strings, sid)); - sid += 1; - } - } - } else { - throw new Error("Unknown charset format " + format); - } - return charset; -} -function parseCFFEncoding(data2, start, charset) { - var code; - var enc = {}; - var parser = new parse.Parser(data2, start); - var format = parser.parseCard8(); - if (format === 0) { - var nCodes = parser.parseCard8(); - for (var i = 0; i < nCodes; i += 1) { - code = parser.parseCard8(); - enc[code] = i; - } - } else if (format === 1) { - var nRanges = parser.parseCard8(); - code = 1; - for (var i$1 = 0; i$1 < nRanges; i$1 += 1) { - var first2 = parser.parseCard8(); - var nLeft = parser.parseCard8(); - for (var j = first2; j <= first2 + nLeft; j += 1) { - enc[j] = code; - code += 1; - } - } - } else { - throw new Error("Unknown encoding format " + format); - } - return new CffEncoding(enc, charset); -} -function parseCFFCharstring(font, glyph, code) { - var c1x; - var c1y; - var c2x; - var c2y; - var p2 = new Path2(); - var stack = []; - var nStems = 0; - var haveWidth = false; - var open = false; - var x2 = 0; - var y2 = 0; - var subrs; - var subrsBias; - var defaultWidthX; - var nominalWidthX; - if (font.isCIDFont) { - var fdIndex = font.tables.cff.topDict._fdSelect[glyph.index]; - var fdDict = font.tables.cff.topDict._fdArray[fdIndex]; - subrs = fdDict._subrs; - subrsBias = fdDict._subrsBias; - defaultWidthX = fdDict._defaultWidthX; - nominalWidthX = fdDict._nominalWidthX; - } else { - subrs = font.tables.cff.topDict._subrs; - subrsBias = font.tables.cff.topDict._subrsBias; - defaultWidthX = font.tables.cff.topDict._defaultWidthX; - nominalWidthX = font.tables.cff.topDict._nominalWidthX; - } - var width2 = defaultWidthX; - function newContour(x3, y3) { - if (open) { - p2.closePath(); - } - p2.moveTo(x3, y3); - open = true; - } - function parseStems() { - var hasWidthArg; - hasWidthArg = stack.length % 2 !== 0; - if (hasWidthArg && !haveWidth) { - width2 = stack.shift() + nominalWidthX; - } - nStems += stack.length >> 1; - stack.length = 0; - haveWidth = true; - } - function parse2(code2) { - var b1; - var b22; - var b3; - var b42; - var codeIndex; - var subrCode; - var jpx; - var jpy; - var c3x; - var c3y; - var c4x; - var c4y; - var i = 0; - while (i < code2.length) { - var v = code2[i]; - i += 1; - switch (v) { - case 1: - parseStems(); - break; - case 3: - parseStems(); - break; - case 4: - if (stack.length > 1 && !haveWidth) { - width2 = stack.shift() + nominalWidthX; - haveWidth = true; - } - y2 += stack.pop(); - newContour(x2, y2); - break; - case 5: - while (stack.length > 0) { - x2 += stack.shift(); - y2 += stack.shift(); - p2.lineTo(x2, y2); - } - break; - case 6: - while (stack.length > 0) { - x2 += stack.shift(); - p2.lineTo(x2, y2); - if (stack.length === 0) { - break; - } - y2 += stack.shift(); - p2.lineTo(x2, y2); - } - break; - case 7: - while (stack.length > 0) { - y2 += stack.shift(); - p2.lineTo(x2, y2); - if (stack.length === 0) { - break; - } - x2 += stack.shift(); - p2.lineTo(x2, y2); - } - break; - case 8: - while (stack.length > 0) { - c1x = x2 + stack.shift(); - c1y = y2 + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x2 = c2x + stack.shift(); - y2 = c2y + stack.shift(); - p2.curveTo(c1x, c1y, c2x, c2y, x2, y2); - } - break; - case 10: - codeIndex = stack.pop() + subrsBias; - subrCode = subrs[codeIndex]; - if (subrCode) { - parse2(subrCode); - } - break; - case 11: - return; - case 12: - v = code2[i]; - i += 1; - switch (v) { - case 35: - c1x = x2 + stack.shift(); - c1y = y2 + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - jpx = c2x + stack.shift(); - jpy = c2y + stack.shift(); - c3x = jpx + stack.shift(); - c3y = jpy + stack.shift(); - c4x = c3x + stack.shift(); - c4y = c3y + stack.shift(); - x2 = c4x + stack.shift(); - y2 = c4y + stack.shift(); - stack.shift(); - p2.curveTo(c1x, c1y, c2x, c2y, jpx, jpy); - p2.curveTo(c3x, c3y, c4x, c4y, x2, y2); - break; - case 34: - c1x = x2 + stack.shift(); - c1y = y2; - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - jpx = c2x + stack.shift(); - jpy = c2y; - c3x = jpx + stack.shift(); - c3y = c2y; - c4x = c3x + stack.shift(); - c4y = y2; - x2 = c4x + stack.shift(); - p2.curveTo(c1x, c1y, c2x, c2y, jpx, jpy); - p2.curveTo(c3x, c3y, c4x, c4y, x2, y2); - break; - case 36: - c1x = x2 + stack.shift(); - c1y = y2 + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - jpx = c2x + stack.shift(); - jpy = c2y; - c3x = jpx + stack.shift(); - c3y = c2y; - c4x = c3x + stack.shift(); - c4y = c3y + stack.shift(); - x2 = c4x + stack.shift(); - p2.curveTo(c1x, c1y, c2x, c2y, jpx, jpy); - p2.curveTo(c3x, c3y, c4x, c4y, x2, y2); - break; - case 37: - c1x = x2 + stack.shift(); - c1y = y2 + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - jpx = c2x + stack.shift(); - jpy = c2y + stack.shift(); - c3x = jpx + stack.shift(); - c3y = jpy + stack.shift(); - c4x = c3x + stack.shift(); - c4y = c3y + stack.shift(); - if (Math.abs(c4x - x2) > Math.abs(c4y - y2)) { - x2 = c4x + stack.shift(); - } else { - y2 = c4y + stack.shift(); - } - p2.curveTo(c1x, c1y, c2x, c2y, jpx, jpy); - p2.curveTo(c3x, c3y, c4x, c4y, x2, y2); - break; - default: - console.log("Glyph " + glyph.index + ": unknown operator 1200" + v); - stack.length = 0; - } - break; - case 14: - if (stack.length > 0 && !haveWidth) { - width2 = stack.shift() + nominalWidthX; - haveWidth = true; - } - if (open) { - p2.closePath(); - open = false; - } - break; - case 18: - parseStems(); - break; - case 19: - case 20: - parseStems(); - i += nStems + 7 >> 3; - break; - case 21: - if (stack.length > 2 && !haveWidth) { - width2 = stack.shift() + nominalWidthX; - haveWidth = true; - } - y2 += stack.pop(); - x2 += stack.pop(); - newContour(x2, y2); - break; - case 22: - if (stack.length > 1 && !haveWidth) { - width2 = stack.shift() + nominalWidthX; - haveWidth = true; - } - x2 += stack.pop(); - newContour(x2, y2); - break; - case 23: - parseStems(); - break; - case 24: - while (stack.length > 2) { - c1x = x2 + stack.shift(); - c1y = y2 + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x2 = c2x + stack.shift(); - y2 = c2y + stack.shift(); - p2.curveTo(c1x, c1y, c2x, c2y, x2, y2); - } - x2 += stack.shift(); - y2 += stack.shift(); - p2.lineTo(x2, y2); - break; - case 25: - while (stack.length > 6) { - x2 += stack.shift(); - y2 += stack.shift(); - p2.lineTo(x2, y2); - } - c1x = x2 + stack.shift(); - c1y = y2 + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x2 = c2x + stack.shift(); - y2 = c2y + stack.shift(); - p2.curveTo(c1x, c1y, c2x, c2y, x2, y2); - break; - case 26: - if (stack.length % 2) { - x2 += stack.shift(); - } - while (stack.length > 0) { - c1x = x2; - c1y = y2 + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x2 = c2x; - y2 = c2y + stack.shift(); - p2.curveTo(c1x, c1y, c2x, c2y, x2, y2); - } - break; - case 27: - if (stack.length % 2) { - y2 += stack.shift(); - } - while (stack.length > 0) { - c1x = x2 + stack.shift(); - c1y = y2; - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x2 = c2x + stack.shift(); - y2 = c2y; - p2.curveTo(c1x, c1y, c2x, c2y, x2, y2); - } - break; - case 28: - b1 = code2[i]; - b22 = code2[i + 1]; - stack.push((b1 << 24 | b22 << 16) >> 16); - i += 2; - break; - case 29: - codeIndex = stack.pop() + font.gsubrsBias; - subrCode = font.gsubrs[codeIndex]; - if (subrCode) { - parse2(subrCode); - } - break; - case 30: - while (stack.length > 0) { - c1x = x2; - c1y = y2 + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x2 = c2x + stack.shift(); - y2 = c2y + (stack.length === 1 ? stack.shift() : 0); - p2.curveTo(c1x, c1y, c2x, c2y, x2, y2); - if (stack.length === 0) { - break; - } - c1x = x2 + stack.shift(); - c1y = y2; - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - y2 = c2y + stack.shift(); - x2 = c2x + (stack.length === 1 ? stack.shift() : 0); - p2.curveTo(c1x, c1y, c2x, c2y, x2, y2); - } - break; - case 31: - while (stack.length > 0) { - c1x = x2 + stack.shift(); - c1y = y2; - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - y2 = c2y + stack.shift(); - x2 = c2x + (stack.length === 1 ? stack.shift() : 0); - p2.curveTo(c1x, c1y, c2x, c2y, x2, y2); - if (stack.length === 0) { - break; - } - c1x = x2; - c1y = y2 + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x2 = c2x + stack.shift(); - y2 = c2y + (stack.length === 1 ? stack.shift() : 0); - p2.curveTo(c1x, c1y, c2x, c2y, x2, y2); - } - break; - default: - if (v < 32) { - console.log("Glyph " + glyph.index + ": unknown operator " + v); - } else if (v < 247) { - stack.push(v - 139); - } else if (v < 251) { - b1 = code2[i]; - i += 1; - stack.push((v - 247) * 256 + b1 + 108); - } else if (v < 255) { - b1 = code2[i]; - i += 1; - stack.push(-(v - 251) * 256 - b1 - 108); - } else { - b1 = code2[i]; - b22 = code2[i + 1]; - b3 = code2[i + 2]; - b42 = code2[i + 3]; - i += 4; - stack.push((b1 << 24 | b22 << 16 | b3 << 8 | b42) / 65536); - } - } - } - } - parse2(code); - glyph.advanceWidth = width2; - return p2; -} -function parseCFFFDSelect(data2, start, nGlyphs, fdArrayCount) { - var fdSelect = []; - var fdIndex; - var parser = new parse.Parser(data2, start); - var format = parser.parseCard8(); - if (format === 0) { - for (var iGid = 0; iGid < nGlyphs; iGid++) { - fdIndex = parser.parseCard8(); - if (fdIndex >= fdArrayCount) { - throw new Error("CFF table CID Font FDSelect has bad FD index value " + fdIndex + " (FD count " + fdArrayCount + ")"); - } - fdSelect.push(fdIndex); - } - } else if (format === 3) { - var nRanges = parser.parseCard16(); - var first2 = parser.parseCard16(); - if (first2 !== 0) { - throw new Error("CFF Table CID Font FDSelect format 3 range has bad initial GID " + first2); - } - var next; - for (var iRange = 0; iRange < nRanges; iRange++) { - fdIndex = parser.parseCard8(); - next = parser.parseCard16(); - if (fdIndex >= fdArrayCount) { - throw new Error("CFF table CID Font FDSelect has bad FD index value " + fdIndex + " (FD count " + fdArrayCount + ")"); - } - if (next > nGlyphs) { - throw new Error("CFF Table CID Font FDSelect format 3 range has bad GID " + next); - } - for (; first2 < next; first2++) { - fdSelect.push(fdIndex); - } - first2 = next; - } - if (next !== nGlyphs) { - throw new Error("CFF Table CID Font FDSelect format 3 range has bad final GID " + next); - } - } else { - throw new Error("CFF Table CID Font FDSelect table has unsupported format " + format); - } - return fdSelect; -} -function parseCFFTable(data2, start, font, opt) { - font.tables.cff = {}; - var header = parseCFFHeader(data2, start); - var nameIndex = parseCFFIndex(data2, header.endOffset, parse.bytesToString); - var topDictIndex = parseCFFIndex(data2, nameIndex.endOffset); - var stringIndex = parseCFFIndex(data2, topDictIndex.endOffset, parse.bytesToString); - var globalSubrIndex = parseCFFIndex(data2, stringIndex.endOffset); - font.gsubrs = globalSubrIndex.objects; - font.gsubrsBias = calcCFFSubroutineBias(font.gsubrs); - var topDictArray = gatherCFFTopDicts(data2, start, topDictIndex.objects, stringIndex.objects); - if (topDictArray.length !== 1) { - throw new Error("CFF table has too many fonts in 'FontSet' - count of fonts NameIndex.length = " + topDictArray.length); - } - var topDict = topDictArray[0]; - font.tables.cff.topDict = topDict; - if (topDict._privateDict) { - font.defaultWidthX = topDict._privateDict.defaultWidthX; - font.nominalWidthX = topDict._privateDict.nominalWidthX; - } - if (topDict.ros[0] !== void 0 && topDict.ros[1] !== void 0) { - font.isCIDFont = true; - } - if (font.isCIDFont) { - var fdArrayOffset = topDict.fdArray; - var fdSelectOffset = topDict.fdSelect; - if (fdArrayOffset === 0 || fdSelectOffset === 0) { - throw new Error("Font is marked as a CID font, but FDArray and/or FDSelect information is missing"); - } - fdArrayOffset += start; - var fdArrayIndex = parseCFFIndex(data2, fdArrayOffset); - var fdArray = gatherCFFTopDicts(data2, start, fdArrayIndex.objects, stringIndex.objects); - topDict._fdArray = fdArray; - fdSelectOffset += start; - topDict._fdSelect = parseCFFFDSelect(data2, fdSelectOffset, font.numGlyphs, fdArray.length); - } - var privateDictOffset = start + topDict.private[1]; - var privateDict = parseCFFPrivateDict(data2, privateDictOffset, topDict.private[0], stringIndex.objects); - font.defaultWidthX = privateDict.defaultWidthX; - font.nominalWidthX = privateDict.nominalWidthX; - if (privateDict.subrs !== 0) { - var subrOffset = privateDictOffset + privateDict.subrs; - var subrIndex = parseCFFIndex(data2, subrOffset); - font.subrs = subrIndex.objects; - font.subrsBias = calcCFFSubroutineBias(font.subrs); - } else { - font.subrs = []; - font.subrsBias = 0; - } - var charStringsIndex; - if (opt.lowMemory) { - charStringsIndex = parseCFFIndexLowMemory(data2, start + topDict.charStrings); - font.nGlyphs = charStringsIndex.offsets.length; - } else { - charStringsIndex = parseCFFIndex(data2, start + topDict.charStrings); - font.nGlyphs = charStringsIndex.objects.length; - } - var charset = parseCFFCharset(data2, start + topDict.charset, font.nGlyphs, stringIndex.objects); - if (topDict.encoding === 0) { - font.cffEncoding = new CffEncoding(cffStandardEncoding, charset); - } else if (topDict.encoding === 1) { - font.cffEncoding = new CffEncoding(cffExpertEncoding, charset); - } else { - font.cffEncoding = parseCFFEncoding(data2, start + topDict.encoding, charset); - } - font.encoding = font.encoding || font.cffEncoding; - font.glyphs = new glyphset.GlyphSet(font); - if (opt.lowMemory) { - font._push = function(i2) { - var charString2 = getCffIndexObject(i2, charStringsIndex.offsets, data2, start + topDict.charStrings); - font.glyphs.push(i2, glyphset.cffGlyphLoader(font, i2, parseCFFCharstring, charString2)); - }; - } else { - for (var i = 0; i < font.nGlyphs; i += 1) { - var charString = charStringsIndex.objects[i]; - font.glyphs.push(i, glyphset.cffGlyphLoader(font, i, parseCFFCharstring, charString)); - } - } -} -function encodeString(s, strings) { - var sid; - var i = cffStandardStrings.indexOf(s); - if (i >= 0) { - sid = i; - } - i = strings.indexOf(s); - if (i >= 0) { - sid = i + cffStandardStrings.length; - } else { - sid = cffStandardStrings.length + strings.length; - strings.push(s); - } - return sid; -} -function makeHeader() { - return new table.Record("Header", [ - { name: "major", type: "Card8", value: 1 }, - { name: "minor", type: "Card8", value: 0 }, - { name: "hdrSize", type: "Card8", value: 4 }, - { name: "major", type: "Card8", value: 1 } - ]); -} -function makeNameIndex(fontNames) { - var t3 = new table.Record("Name INDEX", [ - { name: "names", type: "INDEX", value: [] } - ]); - t3.names = []; - for (var i = 0; i < fontNames.length; i += 1) { - t3.names.push({ name: "name_" + i, type: "NAME", value: fontNames[i] }); - } - return t3; -} -function makeDict(meta2, attrs, strings) { - var m = {}; - for (var i = 0; i < meta2.length; i += 1) { - var entry = meta2[i]; - var value2 = attrs[entry.name]; - if (value2 !== void 0 && !equals(value2, entry.value)) { - if (entry.type === "SID") { - value2 = encodeString(value2, strings); - } - m[entry.op] = { name: entry.name, type: entry.type, value: value2 }; - } - } - return m; -} -function makeTopDict(attrs, strings) { - var t3 = new table.Record("Top DICT", [ - { name: "dict", type: "DICT", value: {} } - ]); - t3.dict = makeDict(TOP_DICT_META, attrs, strings); - return t3; -} -function makeTopDictIndex(topDict) { - var t3 = new table.Record("Top DICT INDEX", [ - { name: "topDicts", type: "INDEX", value: [] } - ]); - t3.topDicts = [{ name: "topDict_0", type: "TABLE", value: topDict }]; - return t3; -} -function makeStringIndex(strings) { - var t3 = new table.Record("String INDEX", [ - { name: "strings", type: "INDEX", value: [] } - ]); - t3.strings = []; - for (var i = 0; i < strings.length; i += 1) { - t3.strings.push({ name: "string_" + i, type: "STRING", value: strings[i] }); - } - return t3; -} -function makeGlobalSubrIndex() { - return new table.Record("Global Subr INDEX", [ - { name: "subrs", type: "INDEX", value: [] } - ]); -} -function makeCharsets(glyphNames, strings) { - var t3 = new table.Record("Charsets", [ - { name: "format", type: "Card8", value: 0 } - ]); - for (var i = 0; i < glyphNames.length; i += 1) { - var glyphName = glyphNames[i]; - var glyphSID = encodeString(glyphName, strings); - t3.fields.push({ name: "glyph_" + i, type: "SID", value: glyphSID }); - } - return t3; -} -function glyphToOps(glyph) { - var ops = []; - var path = glyph.path; - ops.push({ name: "width", type: "NUMBER", value: glyph.advanceWidth }); - var x2 = 0; - var y2 = 0; - for (var i = 0; i < path.commands.length; i += 1) { - var dx = void 0; - var dy = void 0; - var cmd = path.commands[i]; - if (cmd.type === "Q") { - var _13 = 1 / 3; - var _23 = 2 / 3; - cmd = { - type: "C", - x: cmd.x, - y: cmd.y, - x1: Math.round(_13 * x2 + _23 * cmd.x1), - y1: Math.round(_13 * y2 + _23 * cmd.y1), - x2: Math.round(_13 * cmd.x + _23 * cmd.x1), - y2: Math.round(_13 * cmd.y + _23 * cmd.y1) - }; - } - if (cmd.type === "M") { - dx = Math.round(cmd.x - x2); - dy = Math.round(cmd.y - y2); - ops.push({ name: "dx", type: "NUMBER", value: dx }); - ops.push({ name: "dy", type: "NUMBER", value: dy }); - ops.push({ name: "rmoveto", type: "OP", value: 21 }); - x2 = Math.round(cmd.x); - y2 = Math.round(cmd.y); - } else if (cmd.type === "L") { - dx = Math.round(cmd.x - x2); - dy = Math.round(cmd.y - y2); - ops.push({ name: "dx", type: "NUMBER", value: dx }); - ops.push({ name: "dy", type: "NUMBER", value: dy }); - ops.push({ name: "rlineto", type: "OP", value: 5 }); - x2 = Math.round(cmd.x); - y2 = Math.round(cmd.y); - } else if (cmd.type === "C") { - var dx1 = Math.round(cmd.x1 - x2); - var dy1 = Math.round(cmd.y1 - y2); - var dx2 = Math.round(cmd.x2 - cmd.x1); - var dy2 = Math.round(cmd.y2 - cmd.y1); - dx = Math.round(cmd.x - cmd.x2); - dy = Math.round(cmd.y - cmd.y2); - ops.push({ name: "dx1", type: "NUMBER", value: dx1 }); - ops.push({ name: "dy1", type: "NUMBER", value: dy1 }); - ops.push({ name: "dx2", type: "NUMBER", value: dx2 }); - ops.push({ name: "dy2", type: "NUMBER", value: dy2 }); - ops.push({ name: "dx", type: "NUMBER", value: dx }); - ops.push({ name: "dy", type: "NUMBER", value: dy }); - ops.push({ name: "rrcurveto", type: "OP", value: 8 }); - x2 = Math.round(cmd.x); - y2 = Math.round(cmd.y); - } - } - ops.push({ name: "endchar", type: "OP", value: 14 }); - return ops; -} -function makeCharStringsIndex(glyphs) { - var t3 = new table.Record("CharStrings INDEX", [ - { name: "charStrings", type: "INDEX", value: [] } - ]); - for (var i = 0; i < glyphs.length; i += 1) { - var glyph = glyphs.get(i); - var ops = glyphToOps(glyph); - t3.charStrings.push({ name: glyph.name, type: "CHARSTRING", value: ops }); - } - return t3; -} -function makePrivateDict(attrs, strings) { - var t3 = new table.Record("Private DICT", [ - { name: "dict", type: "DICT", value: {} } - ]); - t3.dict = makeDict(PRIVATE_DICT_META, attrs, strings); - return t3; -} -function makeCFFTable(glyphs, options) { - var t3 = new table.Table("CFF ", [ - { name: "header", type: "RECORD" }, - { name: "nameIndex", type: "RECORD" }, - { name: "topDictIndex", type: "RECORD" }, - { name: "stringIndex", type: "RECORD" }, - { name: "globalSubrIndex", type: "RECORD" }, - { name: "charsets", type: "RECORD" }, - { name: "charStringsIndex", type: "RECORD" }, - { name: "privateDict", type: "RECORD" } - ]); - var fontScale = 1 / options.unitsPerEm; - var attrs = { - version: options.version, - fullName: options.fullName, - familyName: options.familyName, - weight: options.weightName, - fontBBox: options.fontBBox || [0, 0, 0, 0], - fontMatrix: [fontScale, 0, 0, fontScale, 0, 0], - charset: 999, - encoding: 0, - charStrings: 999, - private: [0, 999] - }; - var privateAttrs = {}; - var glyphNames = []; - var glyph; - for (var i = 1; i < glyphs.length; i += 1) { - glyph = glyphs.get(i); - glyphNames.push(glyph.name); - } - var strings = []; - t3.header = makeHeader(); - t3.nameIndex = makeNameIndex([options.postScriptName]); - var topDict = makeTopDict(attrs, strings); - t3.topDictIndex = makeTopDictIndex(topDict); - t3.globalSubrIndex = makeGlobalSubrIndex(); - t3.charsets = makeCharsets(glyphNames, strings); - t3.charStringsIndex = makeCharStringsIndex(glyphs); - t3.privateDict = makePrivateDict(privateAttrs, strings); - t3.stringIndex = makeStringIndex(strings); - var startOffset = t3.header.sizeOf() + t3.nameIndex.sizeOf() + t3.topDictIndex.sizeOf() + t3.stringIndex.sizeOf() + t3.globalSubrIndex.sizeOf(); - attrs.charset = startOffset; - attrs.encoding = 0; - attrs.charStrings = attrs.charset + t3.charsets.sizeOf(); - attrs.private[1] = attrs.charStrings + t3.charStringsIndex.sizeOf(); - topDict = makeTopDict(attrs, strings); - t3.topDictIndex = makeTopDictIndex(topDict); - return t3; -} -var cff = { parse: parseCFFTable, make: makeCFFTable }; -function parseHeadTable(data2, start) { - var head2 = {}; - var p2 = new parse.Parser(data2, start); - head2.version = p2.parseVersion(); - head2.fontRevision = Math.round(p2.parseFixed() * 1e3) / 1e3; - head2.checkSumAdjustment = p2.parseULong(); - head2.magicNumber = p2.parseULong(); - check.argument(head2.magicNumber === 1594834165, "Font header has wrong magic number."); - head2.flags = p2.parseUShort(); - head2.unitsPerEm = p2.parseUShort(); - head2.created = p2.parseLongDateTime(); - head2.modified = p2.parseLongDateTime(); - head2.xMin = p2.parseShort(); - head2.yMin = p2.parseShort(); - head2.xMax = p2.parseShort(); - head2.yMax = p2.parseShort(); - head2.macStyle = p2.parseUShort(); - head2.lowestRecPPEM = p2.parseUShort(); - head2.fontDirectionHint = p2.parseShort(); - head2.indexToLocFormat = p2.parseShort(); - head2.glyphDataFormat = p2.parseShort(); - return head2; -} -function makeHeadTable(options) { - var timestamp = Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3) + 2082844800; - var createdTimestamp = timestamp; - if (options.createdTimestamp) { - createdTimestamp = options.createdTimestamp + 2082844800; - } - return new table.Table("head", [ - { name: "version", type: "FIXED", value: 65536 }, - { name: "fontRevision", type: "FIXED", value: 65536 }, - { name: "checkSumAdjustment", type: "ULONG", value: 0 }, - { name: "magicNumber", type: "ULONG", value: 1594834165 }, - { name: "flags", type: "USHORT", value: 0 }, - { name: "unitsPerEm", type: "USHORT", value: 1e3 }, - { name: "created", type: "LONGDATETIME", value: createdTimestamp }, - { name: "modified", type: "LONGDATETIME", value: timestamp }, - { name: "xMin", type: "SHORT", value: 0 }, - { name: "yMin", type: "SHORT", value: 0 }, - { name: "xMax", type: "SHORT", value: 0 }, - { name: "yMax", type: "SHORT", value: 0 }, - { name: "macStyle", type: "USHORT", value: 0 }, - { name: "lowestRecPPEM", type: "USHORT", value: 0 }, - { name: "fontDirectionHint", type: "SHORT", value: 2 }, - { name: "indexToLocFormat", type: "SHORT", value: 0 }, - { name: "glyphDataFormat", type: "SHORT", value: 0 } - ], options); -} -var head = { parse: parseHeadTable, make: makeHeadTable }; -function parseHheaTable(data2, start) { - var hhea2 = {}; - var p2 = new parse.Parser(data2, start); - hhea2.version = p2.parseVersion(); - hhea2.ascender = p2.parseShort(); - hhea2.descender = p2.parseShort(); - hhea2.lineGap = p2.parseShort(); - hhea2.advanceWidthMax = p2.parseUShort(); - hhea2.minLeftSideBearing = p2.parseShort(); - hhea2.minRightSideBearing = p2.parseShort(); - hhea2.xMaxExtent = p2.parseShort(); - hhea2.caretSlopeRise = p2.parseShort(); - hhea2.caretSlopeRun = p2.parseShort(); - hhea2.caretOffset = p2.parseShort(); - p2.relativeOffset += 8; - hhea2.metricDataFormat = p2.parseShort(); - hhea2.numberOfHMetrics = p2.parseUShort(); - return hhea2; -} -function makeHheaTable(options) { - return new table.Table("hhea", [ - { name: "version", type: "FIXED", value: 65536 }, - { name: "ascender", type: "FWORD", value: 0 }, - { name: "descender", type: "FWORD", value: 0 }, - { name: "lineGap", type: "FWORD", value: 0 }, - { name: "advanceWidthMax", type: "UFWORD", value: 0 }, - { name: "minLeftSideBearing", type: "FWORD", value: 0 }, - { name: "minRightSideBearing", type: "FWORD", value: 0 }, - { name: "xMaxExtent", type: "FWORD", value: 0 }, - { name: "caretSlopeRise", type: "SHORT", value: 1 }, - { name: "caretSlopeRun", type: "SHORT", value: 0 }, - { name: "caretOffset", type: "SHORT", value: 0 }, - { name: "reserved1", type: "SHORT", value: 0 }, - { name: "reserved2", type: "SHORT", value: 0 }, - { name: "reserved3", type: "SHORT", value: 0 }, - { name: "reserved4", type: "SHORT", value: 0 }, - { name: "metricDataFormat", type: "SHORT", value: 0 }, - { name: "numberOfHMetrics", type: "USHORT", value: 0 } - ], options); -} -var hhea = { parse: parseHheaTable, make: makeHheaTable }; -function parseHmtxTableAll(data2, start, numMetrics, numGlyphs, glyphs) { - var advanceWidth; - var leftSideBearing; - var p2 = new parse.Parser(data2, start); - for (var i = 0; i < numGlyphs; i += 1) { - if (i < numMetrics) { - advanceWidth = p2.parseUShort(); - leftSideBearing = p2.parseShort(); - } - var glyph = glyphs.get(i); - glyph.advanceWidth = advanceWidth; - glyph.leftSideBearing = leftSideBearing; - } -} -function parseHmtxTableOnLowMemory(font, data2, start, numMetrics, numGlyphs) { - font._hmtxTableData = {}; - var advanceWidth; - var leftSideBearing; - var p2 = new parse.Parser(data2, start); - for (var i = 0; i < numGlyphs; i += 1) { - if (i < numMetrics) { - advanceWidth = p2.parseUShort(); - leftSideBearing = p2.parseShort(); - } - font._hmtxTableData[i] = { - advanceWidth, - leftSideBearing - }; - } -} -function parseHmtxTable(font, data2, start, numMetrics, numGlyphs, glyphs, opt) { - if (opt.lowMemory) { - parseHmtxTableOnLowMemory(font, data2, start, numMetrics, numGlyphs); - } else { - parseHmtxTableAll(data2, start, numMetrics, numGlyphs, glyphs); - } -} -function makeHmtxTable(glyphs) { - var t3 = new table.Table("hmtx", []); - for (var i = 0; i < glyphs.length; i += 1) { - var glyph = glyphs.get(i); - var advanceWidth = glyph.advanceWidth || 0; - var leftSideBearing = glyph.leftSideBearing || 0; - t3.fields.push({ name: "advanceWidth_" + i, type: "USHORT", value: advanceWidth }); - t3.fields.push({ name: "leftSideBearing_" + i, type: "SHORT", value: leftSideBearing }); - } - return t3; -} -var hmtx = { parse: parseHmtxTable, make: makeHmtxTable }; -function makeLtagTable(tags) { - var result = new table.Table("ltag", [ - { name: "version", type: "ULONG", value: 1 }, - { name: "flags", type: "ULONG", value: 0 }, - { name: "numTags", type: "ULONG", value: tags.length } - ]); - var stringPool = ""; - var stringPoolOffset = 12 + tags.length * 4; - for (var i = 0; i < tags.length; ++i) { - var pos = stringPool.indexOf(tags[i]); - if (pos < 0) { - pos = stringPool.length; - stringPool += tags[i]; - } - result.fields.push({ name: "offset " + i, type: "USHORT", value: stringPoolOffset + pos }); - result.fields.push({ name: "length " + i, type: "USHORT", value: tags[i].length }); - } - result.fields.push({ name: "stringPool", type: "CHARARRAY", value: stringPool }); - return result; -} -function parseLtagTable(data2, start) { - var p2 = new parse.Parser(data2, start); - var tableVersion = p2.parseULong(); - check.argument(tableVersion === 1, "Unsupported ltag table version."); - p2.skip("uLong", 1); - var numTags = p2.parseULong(); - var tags = []; - for (var i = 0; i < numTags; i++) { - var tag = ""; - var offset = start + p2.parseUShort(); - var length2 = p2.parseUShort(); - for (var j = offset; j < offset + length2; ++j) { - tag += String.fromCharCode(data2.getInt8(j)); - } - tags.push(tag); - } - return tags; -} -var ltag = { make: makeLtagTable, parse: parseLtagTable }; -function parseMaxpTable(data2, start) { - var maxp2 = {}; - var p2 = new parse.Parser(data2, start); - maxp2.version = p2.parseVersion(); - maxp2.numGlyphs = p2.parseUShort(); - if (maxp2.version === 1) { - maxp2.maxPoints = p2.parseUShort(); - maxp2.maxContours = p2.parseUShort(); - maxp2.maxCompositePoints = p2.parseUShort(); - maxp2.maxCompositeContours = p2.parseUShort(); - maxp2.maxZones = p2.parseUShort(); - maxp2.maxTwilightPoints = p2.parseUShort(); - maxp2.maxStorage = p2.parseUShort(); - maxp2.maxFunctionDefs = p2.parseUShort(); - maxp2.maxInstructionDefs = p2.parseUShort(); - maxp2.maxStackElements = p2.parseUShort(); - maxp2.maxSizeOfInstructions = p2.parseUShort(); - maxp2.maxComponentElements = p2.parseUShort(); - maxp2.maxComponentDepth = p2.parseUShort(); - } - return maxp2; -} -function makeMaxpTable(numGlyphs) { - return new table.Table("maxp", [ - { name: "version", type: "FIXED", value: 20480 }, - { name: "numGlyphs", type: "USHORT", value: numGlyphs } - ]); -} -var maxp = { parse: parseMaxpTable, make: makeMaxpTable }; -var nameTableNames = [ - "copyright", - // 0 - "fontFamily", - // 1 - "fontSubfamily", - // 2 - "uniqueID", - // 3 - "fullName", - // 4 - "version", - // 5 - "postScriptName", - // 6 - "trademark", - // 7 - "manufacturer", - // 8 - "designer", - // 9 - "description", - // 10 - "manufacturerURL", - // 11 - "designerURL", - // 12 - "license", - // 13 - "licenseURL", - // 14 - "reserved", - // 15 - "preferredFamily", - // 16 - "preferredSubfamily", - // 17 - "compatibleFullName", - // 18 - "sampleText", - // 19 - "postScriptFindFontName", - // 20 - "wwsFamily", - // 21 - "wwsSubfamily" - // 22 -]; -var macLanguages = { - 0: "en", - 1: "fr", - 2: "de", - 3: "it", - 4: "nl", - 5: "sv", - 6: "es", - 7: "da", - 8: "pt", - 9: "no", - 10: "he", - 11: "ja", - 12: "ar", - 13: "fi", - 14: "el", - 15: "is", - 16: "mt", - 17: "tr", - 18: "hr", - 19: "zh-Hant", - 20: "ur", - 21: "hi", - 22: "th", - 23: "ko", - 24: "lt", - 25: "pl", - 26: "hu", - 27: "es", - 28: "lv", - 29: "se", - 30: "fo", - 31: "fa", - 32: "ru", - 33: "zh", - 34: "nl-BE", - 35: "ga", - 36: "sq", - 37: "ro", - 38: "cz", - 39: "sk", - 40: "si", - 41: "yi", - 42: "sr", - 43: "mk", - 44: "bg", - 45: "uk", - 46: "be", - 47: "uz", - 48: "kk", - 49: "az-Cyrl", - 50: "az-Arab", - 51: "hy", - 52: "ka", - 53: "mo", - 54: "ky", - 55: "tg", - 56: "tk", - 57: "mn-CN", - 58: "mn", - 59: "ps", - 60: "ks", - 61: "ku", - 62: "sd", - 63: "bo", - 64: "ne", - 65: "sa", - 66: "mr", - 67: "bn", - 68: "as", - 69: "gu", - 70: "pa", - 71: "or", - 72: "ml", - 73: "kn", - 74: "ta", - 75: "te", - 76: "si", - 77: "my", - 78: "km", - 79: "lo", - 80: "vi", - 81: "id", - 82: "tl", - 83: "ms", - 84: "ms-Arab", - 85: "am", - 86: "ti", - 87: "om", - 88: "so", - 89: "sw", - 90: "rw", - 91: "rn", - 92: "ny", - 93: "mg", - 94: "eo", - 128: "cy", - 129: "eu", - 130: "ca", - 131: "la", - 132: "qu", - 133: "gn", - 134: "ay", - 135: "tt", - 136: "ug", - 137: "dz", - 138: "jv", - 139: "su", - 140: "gl", - 141: "af", - 142: "br", - 143: "iu", - 144: "gd", - 145: "gv", - 146: "ga", - 147: "to", - 148: "el-polyton", - 149: "kl", - 150: "az", - 151: "nn" -}; -var macLanguageToScript = { - 0: 0, - // langEnglish → smRoman - 1: 0, - // langFrench → smRoman - 2: 0, - // langGerman → smRoman - 3: 0, - // langItalian → smRoman - 4: 0, - // langDutch → smRoman - 5: 0, - // langSwedish → smRoman - 6: 0, - // langSpanish → smRoman - 7: 0, - // langDanish → smRoman - 8: 0, - // langPortuguese → smRoman - 9: 0, - // langNorwegian → smRoman - 10: 5, - // langHebrew → smHebrew - 11: 1, - // langJapanese → smJapanese - 12: 4, - // langArabic → smArabic - 13: 0, - // langFinnish → smRoman - 14: 6, - // langGreek → smGreek - 15: 0, - // langIcelandic → smRoman (modified) - 16: 0, - // langMaltese → smRoman - 17: 0, - // langTurkish → smRoman (modified) - 18: 0, - // langCroatian → smRoman (modified) - 19: 2, - // langTradChinese → smTradChinese - 20: 4, - // langUrdu → smArabic - 21: 9, - // langHindi → smDevanagari - 22: 21, - // langThai → smThai - 23: 3, - // langKorean → smKorean - 24: 29, - // langLithuanian → smCentralEuroRoman - 25: 29, - // langPolish → smCentralEuroRoman - 26: 29, - // langHungarian → smCentralEuroRoman - 27: 29, - // langEstonian → smCentralEuroRoman - 28: 29, - // langLatvian → smCentralEuroRoman - 29: 0, - // langSami → smRoman - 30: 0, - // langFaroese → smRoman (modified) - 31: 4, - // langFarsi → smArabic (modified) - 32: 7, - // langRussian → smCyrillic - 33: 25, - // langSimpChinese → smSimpChinese - 34: 0, - // langFlemish → smRoman - 35: 0, - // langIrishGaelic → smRoman (modified) - 36: 0, - // langAlbanian → smRoman - 37: 0, - // langRomanian → smRoman (modified) - 38: 29, - // langCzech → smCentralEuroRoman - 39: 29, - // langSlovak → smCentralEuroRoman - 40: 0, - // langSlovenian → smRoman (modified) - 41: 5, - // langYiddish → smHebrew - 42: 7, - // langSerbian → smCyrillic - 43: 7, - // langMacedonian → smCyrillic - 44: 7, - // langBulgarian → smCyrillic - 45: 7, - // langUkrainian → smCyrillic (modified) - 46: 7, - // langByelorussian → smCyrillic - 47: 7, - // langUzbek → smCyrillic - 48: 7, - // langKazakh → smCyrillic - 49: 7, - // langAzerbaijani → smCyrillic - 50: 4, - // langAzerbaijanAr → smArabic - 51: 24, - // langArmenian → smArmenian - 52: 23, - // langGeorgian → smGeorgian - 53: 7, - // langMoldavian → smCyrillic - 54: 7, - // langKirghiz → smCyrillic - 55: 7, - // langTajiki → smCyrillic - 56: 7, - // langTurkmen → smCyrillic - 57: 27, - // langMongolian → smMongolian - 58: 7, - // langMongolianCyr → smCyrillic - 59: 4, - // langPashto → smArabic - 60: 4, - // langKurdish → smArabic - 61: 4, - // langKashmiri → smArabic - 62: 4, - // langSindhi → smArabic - 63: 26, - // langTibetan → smTibetan - 64: 9, - // langNepali → smDevanagari - 65: 9, - // langSanskrit → smDevanagari - 66: 9, - // langMarathi → smDevanagari - 67: 13, - // langBengali → smBengali - 68: 13, - // langAssamese → smBengali - 69: 11, - // langGujarati → smGujarati - 70: 10, - // langPunjabi → smGurmukhi - 71: 12, - // langOriya → smOriya - 72: 17, - // langMalayalam → smMalayalam - 73: 16, - // langKannada → smKannada - 74: 14, - // langTamil → smTamil - 75: 15, - // langTelugu → smTelugu - 76: 18, - // langSinhalese → smSinhalese - 77: 19, - // langBurmese → smBurmese - 78: 20, - // langKhmer → smKhmer - 79: 22, - // langLao → smLao - 80: 30, - // langVietnamese → smVietnamese - 81: 0, - // langIndonesian → smRoman - 82: 0, - // langTagalog → smRoman - 83: 0, - // langMalayRoman → smRoman - 84: 4, - // langMalayArabic → smArabic - 85: 28, - // langAmharic → smEthiopic - 86: 28, - // langTigrinya → smEthiopic - 87: 28, - // langOromo → smEthiopic - 88: 0, - // langSomali → smRoman - 89: 0, - // langSwahili → smRoman - 90: 0, - // langKinyarwanda → smRoman - 91: 0, - // langRundi → smRoman - 92: 0, - // langNyanja → smRoman - 93: 0, - // langMalagasy → smRoman - 94: 0, - // langEsperanto → smRoman - 128: 0, - // langWelsh → smRoman (modified) - 129: 0, - // langBasque → smRoman - 130: 0, - // langCatalan → smRoman - 131: 0, - // langLatin → smRoman - 132: 0, - // langQuechua → smRoman - 133: 0, - // langGuarani → smRoman - 134: 0, - // langAymara → smRoman - 135: 7, - // langTatar → smCyrillic - 136: 4, - // langUighur → smArabic - 137: 26, - // langDzongkha → smTibetan - 138: 0, - // langJavaneseRom → smRoman - 139: 0, - // langSundaneseRom → smRoman - 140: 0, - // langGalician → smRoman - 141: 0, - // langAfrikaans → smRoman - 142: 0, - // langBreton → smRoman (modified) - 143: 28, - // langInuktitut → smEthiopic (modified) - 144: 0, - // langScottishGaelic → smRoman (modified) - 145: 0, - // langManxGaelic → smRoman (modified) - 146: 0, - // langIrishGaelicScript → smRoman (modified) - 147: 0, - // langTongan → smRoman - 148: 6, - // langGreekAncient → smRoman - 149: 0, - // langGreenlandic → smRoman - 150: 0, - // langAzerbaijanRoman → smRoman - 151: 0 - // langNynorsk → smRoman -}; -var windowsLanguages = { - 1078: "af", - 1052: "sq", - 1156: "gsw", - 1118: "am", - 5121: "ar-DZ", - 15361: "ar-BH", - 3073: "ar", - 2049: "ar-IQ", - 11265: "ar-JO", - 13313: "ar-KW", - 12289: "ar-LB", - 4097: "ar-LY", - 6145: "ary", - 8193: "ar-OM", - 16385: "ar-QA", - 1025: "ar-SA", - 10241: "ar-SY", - 7169: "aeb", - 14337: "ar-AE", - 9217: "ar-YE", - 1067: "hy", - 1101: "as", - 2092: "az-Cyrl", - 1068: "az", - 1133: "ba", - 1069: "eu", - 1059: "be", - 2117: "bn", - 1093: "bn-IN", - 8218: "bs-Cyrl", - 5146: "bs", - 1150: "br", - 1026: "bg", - 1027: "ca", - 3076: "zh-HK", - 5124: "zh-MO", - 2052: "zh", - 4100: "zh-SG", - 1028: "zh-TW", - 1155: "co", - 1050: "hr", - 4122: "hr-BA", - 1029: "cs", - 1030: "da", - 1164: "prs", - 1125: "dv", - 2067: "nl-BE", - 1043: "nl", - 3081: "en-AU", - 10249: "en-BZ", - 4105: "en-CA", - 9225: "en-029", - 16393: "en-IN", - 6153: "en-IE", - 8201: "en-JM", - 17417: "en-MY", - 5129: "en-NZ", - 13321: "en-PH", - 18441: "en-SG", - 7177: "en-ZA", - 11273: "en-TT", - 2057: "en-GB", - 1033: "en", - 12297: "en-ZW", - 1061: "et", - 1080: "fo", - 1124: "fil", - 1035: "fi", - 2060: "fr-BE", - 3084: "fr-CA", - 1036: "fr", - 5132: "fr-LU", - 6156: "fr-MC", - 4108: "fr-CH", - 1122: "fy", - 1110: "gl", - 1079: "ka", - 3079: "de-AT", - 1031: "de", - 5127: "de-LI", - 4103: "de-LU", - 2055: "de-CH", - 1032: "el", - 1135: "kl", - 1095: "gu", - 1128: "ha", - 1037: "he", - 1081: "hi", - 1038: "hu", - 1039: "is", - 1136: "ig", - 1057: "id", - 1117: "iu", - 2141: "iu-Latn", - 2108: "ga", - 1076: "xh", - 1077: "zu", - 1040: "it", - 2064: "it-CH", - 1041: "ja", - 1099: "kn", - 1087: "kk", - 1107: "km", - 1158: "quc", - 1159: "rw", - 1089: "sw", - 1111: "kok", - 1042: "ko", - 1088: "ky", - 1108: "lo", - 1062: "lv", - 1063: "lt", - 2094: "dsb", - 1134: "lb", - 1071: "mk", - 2110: "ms-BN", - 1086: "ms", - 1100: "ml", - 1082: "mt", - 1153: "mi", - 1146: "arn", - 1102: "mr", - 1148: "moh", - 1104: "mn", - 2128: "mn-CN", - 1121: "ne", - 1044: "nb", - 2068: "nn", - 1154: "oc", - 1096: "or", - 1123: "ps", - 1045: "pl", - 1046: "pt", - 2070: "pt-PT", - 1094: "pa", - 1131: "qu-BO", - 2155: "qu-EC", - 3179: "qu", - 1048: "ro", - 1047: "rm", - 1049: "ru", - 9275: "smn", - 4155: "smj-NO", - 5179: "smj", - 3131: "se-FI", - 1083: "se", - 2107: "se-SE", - 8251: "sms", - 6203: "sma-NO", - 7227: "sms", - 1103: "sa", - 7194: "sr-Cyrl-BA", - 3098: "sr", - 6170: "sr-Latn-BA", - 2074: "sr-Latn", - 1132: "nso", - 1074: "tn", - 1115: "si", - 1051: "sk", - 1060: "sl", - 11274: "es-AR", - 16394: "es-BO", - 13322: "es-CL", - 9226: "es-CO", - 5130: "es-CR", - 7178: "es-DO", - 12298: "es-EC", - 17418: "es-SV", - 4106: "es-GT", - 18442: "es-HN", - 2058: "es-MX", - 19466: "es-NI", - 6154: "es-PA", - 15370: "es-PY", - 10250: "es-PE", - 20490: "es-PR", - // Microsoft has defined two different language codes for - // “Spanish with modern sorting” and “Spanish with traditional - // sorting”. This makes sense for collation APIs, and it would be - // possible to express this in BCP 47 language tags via Unicode - // extensions (eg., es-u-co-trad is Spanish with traditional - // sorting). However, for storing names in fonts, the distinction - // does not make sense, so we give “es” in both cases. - 3082: "es", - 1034: "es", - 21514: "es-US", - 14346: "es-UY", - 8202: "es-VE", - 2077: "sv-FI", - 1053: "sv", - 1114: "syr", - 1064: "tg", - 2143: "tzm", - 1097: "ta", - 1092: "tt", - 1098: "te", - 1054: "th", - 1105: "bo", - 1055: "tr", - 1090: "tk", - 1152: "ug", - 1058: "uk", - 1070: "hsb", - 1056: "ur", - 2115: "uz-Cyrl", - 1091: "uz", - 1066: "vi", - 1106: "cy", - 1160: "wo", - 1157: "sah", - 1144: "ii", - 1130: "yo" -}; -function getLanguageCode(platformID, languageID, ltag2) { - switch (platformID) { - case 0: - if (languageID === 65535) { - return "und"; - } else if (ltag2) { - return ltag2[languageID]; - } - break; - case 1: - return macLanguages[languageID]; - case 3: - return windowsLanguages[languageID]; - } - return void 0; -} -var utf16 = "utf-16"; -var macScriptEncodings = { - 0: "macintosh", - // smRoman - 1: "x-mac-japanese", - // smJapanese - 2: "x-mac-chinesetrad", - // smTradChinese - 3: "x-mac-korean", - // smKorean - 6: "x-mac-greek", - // smGreek - 7: "x-mac-cyrillic", - // smCyrillic - 9: "x-mac-devanagai", - // smDevanagari - 10: "x-mac-gurmukhi", - // smGurmukhi - 11: "x-mac-gujarati", - // smGujarati - 12: "x-mac-oriya", - // smOriya - 13: "x-mac-bengali", - // smBengali - 14: "x-mac-tamil", - // smTamil - 15: "x-mac-telugu", - // smTelugu - 16: "x-mac-kannada", - // smKannada - 17: "x-mac-malayalam", - // smMalayalam - 18: "x-mac-sinhalese", - // smSinhalese - 19: "x-mac-burmese", - // smBurmese - 20: "x-mac-khmer", - // smKhmer - 21: "x-mac-thai", - // smThai - 22: "x-mac-lao", - // smLao - 23: "x-mac-georgian", - // smGeorgian - 24: "x-mac-armenian", - // smArmenian - 25: "x-mac-chinesesimp", - // smSimpChinese - 26: "x-mac-tibetan", - // smTibetan - 27: "x-mac-mongolian", - // smMongolian - 28: "x-mac-ethiopic", - // smEthiopic - 29: "x-mac-ce", - // smCentralEuroRoman - 30: "x-mac-vietnamese", - // smVietnamese - 31: "x-mac-extarabic" - // smExtArabic -}; -var macLanguageEncodings = { - 15: "x-mac-icelandic", - // langIcelandic - 17: "x-mac-turkish", - // langTurkish - 18: "x-mac-croatian", - // langCroatian - 24: "x-mac-ce", - // langLithuanian - 25: "x-mac-ce", - // langPolish - 26: "x-mac-ce", - // langHungarian - 27: "x-mac-ce", - // langEstonian - 28: "x-mac-ce", - // langLatvian - 30: "x-mac-icelandic", - // langFaroese - 37: "x-mac-romanian", - // langRomanian - 38: "x-mac-ce", - // langCzech - 39: "x-mac-ce", - // langSlovak - 40: "x-mac-ce", - // langSlovenian - 143: "x-mac-inuit", - // langInuktitut - 146: "x-mac-gaelic" - // langIrishGaelicScript -}; -function getEncoding(platformID, encodingID, languageID) { - switch (platformID) { - case 0: - return utf16; - case 1: - return macLanguageEncodings[languageID] || macScriptEncodings[encodingID]; - case 3: - if (encodingID === 1 || encodingID === 10) { - return utf16; - } - break; - } - return void 0; -} -function parseNameTable(data2, start, ltag2) { - var name2 = {}; - var p2 = new parse.Parser(data2, start); - var format = p2.parseUShort(); - var count = p2.parseUShort(); - var stringOffset2 = p2.offset + p2.parseUShort(); - for (var i = 0; i < count; i++) { - var platformID = p2.parseUShort(); - var encodingID = p2.parseUShort(); - var languageID = p2.parseUShort(); - var nameID = p2.parseUShort(); - var property2 = nameTableNames[nameID] || nameID; - var byteLength = p2.parseUShort(); - var offset = p2.parseUShort(); - var language = getLanguageCode(platformID, languageID, ltag2); - var encoding = getEncoding(platformID, encodingID, languageID); - if (encoding !== void 0 && language !== void 0) { - var text2 = void 0; - if (encoding === utf16) { - text2 = decode.UTF16(data2, stringOffset2 + offset, byteLength); - } else { - text2 = decode.MACSTRING(data2, stringOffset2 + offset, byteLength, encoding); - } - if (text2) { - var translations = name2[property2]; - if (translations === void 0) { - translations = name2[property2] = {}; - } - translations[language] = text2; - } - } - } - var langTagCount = 0; - if (format === 1) { - langTagCount = p2.parseUShort(); - } - return name2; -} -function reverseDict(dict) { - var result = {}; - for (var key2 in dict) { - result[dict[key2]] = parseInt(key2); - } - return result; -} -function makeNameRecord(platformID, encodingID, languageID, nameID, length2, offset) { - return new table.Record("NameRecord", [ - { name: "platformID", type: "USHORT", value: platformID }, - { name: "encodingID", type: "USHORT", value: encodingID }, - { name: "languageID", type: "USHORT", value: languageID }, - { name: "nameID", type: "USHORT", value: nameID }, - { name: "length", type: "USHORT", value: length2 }, - { name: "offset", type: "USHORT", value: offset } - ]); -} -function findSubArray(needle, haystack) { - var needleLength = needle.length; - var limit = haystack.length - needleLength + 1; - loop: - for (var pos = 0; pos < limit; pos++) { - for (; pos < limit; pos++) { - for (var k2 = 0; k2 < needleLength; k2++) { - if (haystack[pos + k2] !== needle[k2]) { - continue loop; - } - } - return pos; - } - } - return -1; -} -function addStringToPool(s, pool) { - var offset = findSubArray(s, pool); - if (offset < 0) { - offset = pool.length; - var i = 0; - var len = s.length; - for (; i < len; ++i) { - pool.push(s[i]); - } - } - return offset; -} -function makeNameTable(names, ltag2) { - var nameID; - var nameIDs = []; - var namesWithNumericKeys = {}; - var nameTableIds = reverseDict(nameTableNames); - for (var key2 in names) { - var id = nameTableIds[key2]; - if (id === void 0) { - id = key2; - } - nameID = parseInt(id); - if (isNaN(nameID)) { - throw new Error('Name table entry "' + key2 + '" does not exist, see nameTableNames for complete list.'); - } - namesWithNumericKeys[nameID] = names[key2]; - nameIDs.push(nameID); - } - var macLanguageIds = reverseDict(macLanguages); - var windowsLanguageIds = reverseDict(windowsLanguages); - var nameRecords = []; - var stringPool = []; - for (var i = 0; i < nameIDs.length; i++) { - nameID = nameIDs[i]; - var translations = namesWithNumericKeys[nameID]; - for (var lang in translations) { - var text2 = translations[lang]; - var macPlatform = 1; - var macLanguage = macLanguageIds[lang]; - var macScript = macLanguageToScript[macLanguage]; - var macEncoding = getEncoding(macPlatform, macScript, macLanguage); - var macName = encode.MACSTRING(text2, macEncoding); - if (macName === void 0) { - macPlatform = 0; - macLanguage = ltag2.indexOf(lang); - if (macLanguage < 0) { - macLanguage = ltag2.length; - ltag2.push(lang); - } - macScript = 4; - macName = encode.UTF16(text2); - } - var macNameOffset = addStringToPool(macName, stringPool); - nameRecords.push(makeNameRecord( - macPlatform, - macScript, - macLanguage, - nameID, - macName.length, - macNameOffset - )); - var winLanguage = windowsLanguageIds[lang]; - if (winLanguage !== void 0) { - var winName = encode.UTF16(text2); - var winNameOffset = addStringToPool(winName, stringPool); - nameRecords.push(makeNameRecord( - 3, - 1, - winLanguage, - nameID, - winName.length, - winNameOffset - )); - } - } - } - nameRecords.sort(function(a2, b3) { - return a2.platformID - b3.platformID || a2.encodingID - b3.encodingID || a2.languageID - b3.languageID || a2.nameID - b3.nameID; - }); - var t3 = new table.Table("name", [ - { name: "format", type: "USHORT", value: 0 }, - { name: "count", type: "USHORT", value: nameRecords.length }, - { name: "stringOffset", type: "USHORT", value: 6 + nameRecords.length * 12 } - ]); - for (var r = 0; r < nameRecords.length; r++) { - t3.fields.push({ name: "record_" + r, type: "RECORD", value: nameRecords[r] }); - } - t3.fields.push({ name: "strings", type: "LITERAL", value: stringPool }); - return t3; -} -var _name = { parse: parseNameTable, make: makeNameTable }; -var unicodeRanges = [ - { begin: 0, end: 127 }, - // Basic Latin - { begin: 128, end: 255 }, - // Latin-1 Supplement - { begin: 256, end: 383 }, - // Latin Extended-A - { begin: 384, end: 591 }, - // Latin Extended-B - { begin: 592, end: 687 }, - // IPA Extensions - { begin: 688, end: 767 }, - // Spacing Modifier Letters - { begin: 768, end: 879 }, - // Combining Diacritical Marks - { begin: 880, end: 1023 }, - // Greek and Coptic - { begin: 11392, end: 11519 }, - // Coptic - { begin: 1024, end: 1279 }, - // Cyrillic - { begin: 1328, end: 1423 }, - // Armenian - { begin: 1424, end: 1535 }, - // Hebrew - { begin: 42240, end: 42559 }, - // Vai - { begin: 1536, end: 1791 }, - // Arabic - { begin: 1984, end: 2047 }, - // NKo - { begin: 2304, end: 2431 }, - // Devanagari - { begin: 2432, end: 2559 }, - // Bengali - { begin: 2560, end: 2687 }, - // Gurmukhi - { begin: 2688, end: 2815 }, - // Gujarati - { begin: 2816, end: 2943 }, - // Oriya - { begin: 2944, end: 3071 }, - // Tamil - { begin: 3072, end: 3199 }, - // Telugu - { begin: 3200, end: 3327 }, - // Kannada - { begin: 3328, end: 3455 }, - // Malayalam - { begin: 3584, end: 3711 }, - // Thai - { begin: 3712, end: 3839 }, - // Lao - { begin: 4256, end: 4351 }, - // Georgian - { begin: 6912, end: 7039 }, - // Balinese - { begin: 4352, end: 4607 }, - // Hangul Jamo - { begin: 7680, end: 7935 }, - // Latin Extended Additional - { begin: 7936, end: 8191 }, - // Greek Extended - { begin: 8192, end: 8303 }, - // General Punctuation - { begin: 8304, end: 8351 }, - // Superscripts And Subscripts - { begin: 8352, end: 8399 }, - // Currency Symbol - { begin: 8400, end: 8447 }, - // Combining Diacritical Marks For Symbols - { begin: 8448, end: 8527 }, - // Letterlike Symbols - { begin: 8528, end: 8591 }, - // Number Forms - { begin: 8592, end: 8703 }, - // Arrows - { begin: 8704, end: 8959 }, - // Mathematical Operators - { begin: 8960, end: 9215 }, - // Miscellaneous Technical - { begin: 9216, end: 9279 }, - // Control Pictures - { begin: 9280, end: 9311 }, - // Optical Character Recognition - { begin: 9312, end: 9471 }, - // Enclosed Alphanumerics - { begin: 9472, end: 9599 }, - // Box Drawing - { begin: 9600, end: 9631 }, - // Block Elements - { begin: 9632, end: 9727 }, - // Geometric Shapes - { begin: 9728, end: 9983 }, - // Miscellaneous Symbols - { begin: 9984, end: 10175 }, - // Dingbats - { begin: 12288, end: 12351 }, - // CJK Symbols And Punctuation - { begin: 12352, end: 12447 }, - // Hiragana - { begin: 12448, end: 12543 }, - // Katakana - { begin: 12544, end: 12591 }, - // Bopomofo - { begin: 12592, end: 12687 }, - // Hangul Compatibility Jamo - { begin: 43072, end: 43135 }, - // Phags-pa - { begin: 12800, end: 13055 }, - // Enclosed CJK Letters And Months - { begin: 13056, end: 13311 }, - // CJK Compatibility - { begin: 44032, end: 55215 }, - // Hangul Syllables - { begin: 55296, end: 57343 }, - // Non-Plane 0 * - { begin: 67840, end: 67871 }, - // Phoenicia - { begin: 19968, end: 40959 }, - // CJK Unified Ideographs - { begin: 57344, end: 63743 }, - // Private Use Area (plane 0) - { begin: 12736, end: 12783 }, - // CJK Strokes - { begin: 64256, end: 64335 }, - // Alphabetic Presentation Forms - { begin: 64336, end: 65023 }, - // Arabic Presentation Forms-A - { begin: 65056, end: 65071 }, - // Combining Half Marks - { begin: 65040, end: 65055 }, - // Vertical Forms - { begin: 65104, end: 65135 }, - // Small Form Variants - { begin: 65136, end: 65279 }, - // Arabic Presentation Forms-B - { begin: 65280, end: 65519 }, - // Halfwidth And Fullwidth Forms - { begin: 65520, end: 65535 }, - // Specials - { begin: 3840, end: 4095 }, - // Tibetan - { begin: 1792, end: 1871 }, - // Syriac - { begin: 1920, end: 1983 }, - // Thaana - { begin: 3456, end: 3583 }, - // Sinhala - { begin: 4096, end: 4255 }, - // Myanmar - { begin: 4608, end: 4991 }, - // Ethiopic - { begin: 5024, end: 5119 }, - // Cherokee - { begin: 5120, end: 5759 }, - // Unified Canadian Aboriginal Syllabics - { begin: 5760, end: 5791 }, - // Ogham - { begin: 5792, end: 5887 }, - // Runic - { begin: 6016, end: 6143 }, - // Khmer - { begin: 6144, end: 6319 }, - // Mongolian - { begin: 10240, end: 10495 }, - // Braille Patterns - { begin: 40960, end: 42127 }, - // Yi Syllables - { begin: 5888, end: 5919 }, - // Tagalog - { begin: 66304, end: 66351 }, - // Old Italic - { begin: 66352, end: 66383 }, - // Gothic - { begin: 66560, end: 66639 }, - // Deseret - { begin: 118784, end: 119039 }, - // Byzantine Musical Symbols - { begin: 119808, end: 120831 }, - // Mathematical Alphanumeric Symbols - { begin: 1044480, end: 1048573 }, - // Private Use (plane 15) - { begin: 65024, end: 65039 }, - // Variation Selectors - { begin: 917504, end: 917631 }, - // Tags - { begin: 6400, end: 6479 }, - // Limbu - { begin: 6480, end: 6527 }, - // Tai Le - { begin: 6528, end: 6623 }, - // New Tai Lue - { begin: 6656, end: 6687 }, - // Buginese - { begin: 11264, end: 11359 }, - // Glagolitic - { begin: 11568, end: 11647 }, - // Tifinagh - { begin: 19904, end: 19967 }, - // Yijing Hexagram Symbols - { begin: 43008, end: 43055 }, - // Syloti Nagri - { begin: 65536, end: 65663 }, - // Linear B Syllabary - { begin: 65856, end: 65935 }, - // Ancient Greek Numbers - { begin: 66432, end: 66463 }, - // Ugaritic - { begin: 66464, end: 66527 }, - // Old Persian - { begin: 66640, end: 66687 }, - // Shavian - { begin: 66688, end: 66735 }, - // Osmanya - { begin: 67584, end: 67647 }, - // Cypriot Syllabary - { begin: 68096, end: 68191 }, - // Kharoshthi - { begin: 119552, end: 119647 }, - // Tai Xuan Jing Symbols - { begin: 73728, end: 74751 }, - // Cuneiform - { begin: 119648, end: 119679 }, - // Counting Rod Numerals - { begin: 7040, end: 7103 }, - // Sundanese - { begin: 7168, end: 7247 }, - // Lepcha - { begin: 7248, end: 7295 }, - // Ol Chiki - { begin: 43136, end: 43231 }, - // Saurashtra - { begin: 43264, end: 43311 }, - // Kayah Li - { begin: 43312, end: 43359 }, - // Rejang - { begin: 43520, end: 43615 }, - // Cham - { begin: 65936, end: 65999 }, - // Ancient Symbols - { begin: 66e3, end: 66047 }, - // Phaistos Disc - { begin: 66208, end: 66271 }, - // Carian - { begin: 127024, end: 127135 } - // Domino Tiles -]; -function getUnicodeRange(unicode) { - for (var i = 0; i < unicodeRanges.length; i += 1) { - var range = unicodeRanges[i]; - if (unicode >= range.begin && unicode < range.end) { - return i; - } - } - return -1; -} -function parseOS2Table(data2, start) { - var os22 = {}; - var p2 = new parse.Parser(data2, start); - os22.version = p2.parseUShort(); - os22.xAvgCharWidth = p2.parseShort(); - os22.usWeightClass = p2.parseUShort(); - os22.usWidthClass = p2.parseUShort(); - os22.fsType = p2.parseUShort(); - os22.ySubscriptXSize = p2.parseShort(); - os22.ySubscriptYSize = p2.parseShort(); - os22.ySubscriptXOffset = p2.parseShort(); - os22.ySubscriptYOffset = p2.parseShort(); - os22.ySuperscriptXSize = p2.parseShort(); - os22.ySuperscriptYSize = p2.parseShort(); - os22.ySuperscriptXOffset = p2.parseShort(); - os22.ySuperscriptYOffset = p2.parseShort(); - os22.yStrikeoutSize = p2.parseShort(); - os22.yStrikeoutPosition = p2.parseShort(); - os22.sFamilyClass = p2.parseShort(); - os22.panose = []; - for (var i = 0; i < 10; i++) { - os22.panose[i] = p2.parseByte(); - } - os22.ulUnicodeRange1 = p2.parseULong(); - os22.ulUnicodeRange2 = p2.parseULong(); - os22.ulUnicodeRange3 = p2.parseULong(); - os22.ulUnicodeRange4 = p2.parseULong(); - os22.achVendID = String.fromCharCode(p2.parseByte(), p2.parseByte(), p2.parseByte(), p2.parseByte()); - os22.fsSelection = p2.parseUShort(); - os22.usFirstCharIndex = p2.parseUShort(); - os22.usLastCharIndex = p2.parseUShort(); - os22.sTypoAscender = p2.parseShort(); - os22.sTypoDescender = p2.parseShort(); - os22.sTypoLineGap = p2.parseShort(); - os22.usWinAscent = p2.parseUShort(); - os22.usWinDescent = p2.parseUShort(); - if (os22.version >= 1) { - os22.ulCodePageRange1 = p2.parseULong(); - os22.ulCodePageRange2 = p2.parseULong(); - } - if (os22.version >= 2) { - os22.sxHeight = p2.parseShort(); - os22.sCapHeight = p2.parseShort(); - os22.usDefaultChar = p2.parseUShort(); - os22.usBreakChar = p2.parseUShort(); - os22.usMaxContent = p2.parseUShort(); - } - return os22; -} -function makeOS2Table(options) { - return new table.Table("OS/2", [ - { name: "version", type: "USHORT", value: 3 }, - { name: "xAvgCharWidth", type: "SHORT", value: 0 }, - { name: "usWeightClass", type: "USHORT", value: 0 }, - { name: "usWidthClass", type: "USHORT", value: 0 }, - { name: "fsType", type: "USHORT", value: 0 }, - { name: "ySubscriptXSize", type: "SHORT", value: 650 }, - { name: "ySubscriptYSize", type: "SHORT", value: 699 }, - { name: "ySubscriptXOffset", type: "SHORT", value: 0 }, - { name: "ySubscriptYOffset", type: "SHORT", value: 140 }, - { name: "ySuperscriptXSize", type: "SHORT", value: 650 }, - { name: "ySuperscriptYSize", type: "SHORT", value: 699 }, - { name: "ySuperscriptXOffset", type: "SHORT", value: 0 }, - { name: "ySuperscriptYOffset", type: "SHORT", value: 479 }, - { name: "yStrikeoutSize", type: "SHORT", value: 49 }, - { name: "yStrikeoutPosition", type: "SHORT", value: 258 }, - { name: "sFamilyClass", type: "SHORT", value: 0 }, - { name: "bFamilyType", type: "BYTE", value: 0 }, - { name: "bSerifStyle", type: "BYTE", value: 0 }, - { name: "bWeight", type: "BYTE", value: 0 }, - { name: "bProportion", type: "BYTE", value: 0 }, - { name: "bContrast", type: "BYTE", value: 0 }, - { name: "bStrokeVariation", type: "BYTE", value: 0 }, - { name: "bArmStyle", type: "BYTE", value: 0 }, - { name: "bLetterform", type: "BYTE", value: 0 }, - { name: "bMidline", type: "BYTE", value: 0 }, - { name: "bXHeight", type: "BYTE", value: 0 }, - { name: "ulUnicodeRange1", type: "ULONG", value: 0 }, - { name: "ulUnicodeRange2", type: "ULONG", value: 0 }, - { name: "ulUnicodeRange3", type: "ULONG", value: 0 }, - { name: "ulUnicodeRange4", type: "ULONG", value: 0 }, - { name: "achVendID", type: "CHARARRAY", value: "XXXX" }, - { name: "fsSelection", type: "USHORT", value: 0 }, - { name: "usFirstCharIndex", type: "USHORT", value: 0 }, - { name: "usLastCharIndex", type: "USHORT", value: 0 }, - { name: "sTypoAscender", type: "SHORT", value: 0 }, - { name: "sTypoDescender", type: "SHORT", value: 0 }, - { name: "sTypoLineGap", type: "SHORT", value: 0 }, - { name: "usWinAscent", type: "USHORT", value: 0 }, - { name: "usWinDescent", type: "USHORT", value: 0 }, - { name: "ulCodePageRange1", type: "ULONG", value: 0 }, - { name: "ulCodePageRange2", type: "ULONG", value: 0 }, - { name: "sxHeight", type: "SHORT", value: 0 }, - { name: "sCapHeight", type: "SHORT", value: 0 }, - { name: "usDefaultChar", type: "USHORT", value: 0 }, - { name: "usBreakChar", type: "USHORT", value: 0 }, - { name: "usMaxContext", type: "USHORT", value: 0 } - ], options); -} -var os2 = { parse: parseOS2Table, make: makeOS2Table, unicodeRanges, getUnicodeRange }; -function parsePostTable(data2, start) { - var post2 = {}; - var p2 = new parse.Parser(data2, start); - post2.version = p2.parseVersion(); - post2.italicAngle = p2.parseFixed(); - post2.underlinePosition = p2.parseShort(); - post2.underlineThickness = p2.parseShort(); - post2.isFixedPitch = p2.parseULong(); - post2.minMemType42 = p2.parseULong(); - post2.maxMemType42 = p2.parseULong(); - post2.minMemType1 = p2.parseULong(); - post2.maxMemType1 = p2.parseULong(); - switch (post2.version) { - case 1: - post2.names = standardNames.slice(); - break; - case 2: - post2.numberOfGlyphs = p2.parseUShort(); - post2.glyphNameIndex = new Array(post2.numberOfGlyphs); - for (var i = 0; i < post2.numberOfGlyphs; i++) { - post2.glyphNameIndex[i] = p2.parseUShort(); - } - post2.names = []; - for (var i$1 = 0; i$1 < post2.numberOfGlyphs; i$1++) { - if (post2.glyphNameIndex[i$1] >= standardNames.length) { - var nameLength = p2.parseChar(); - post2.names.push(p2.parseString(nameLength)); - } - } - break; - case 2.5: - post2.numberOfGlyphs = p2.parseUShort(); - post2.offset = new Array(post2.numberOfGlyphs); - for (var i$2 = 0; i$2 < post2.numberOfGlyphs; i$2++) { - post2.offset[i$2] = p2.parseChar(); - } - break; - } - return post2; -} -function makePostTable() { - return new table.Table("post", [ - { name: "version", type: "FIXED", value: 196608 }, - { name: "italicAngle", type: "FIXED", value: 0 }, - { name: "underlinePosition", type: "FWORD", value: 0 }, - { name: "underlineThickness", type: "FWORD", value: 0 }, - { name: "isFixedPitch", type: "ULONG", value: 0 }, - { name: "minMemType42", type: "ULONG", value: 0 }, - { name: "maxMemType42", type: "ULONG", value: 0 }, - { name: "minMemType1", type: "ULONG", value: 0 }, - { name: "maxMemType1", type: "ULONG", value: 0 } - ]); -} -var post = { parse: parsePostTable, make: makePostTable }; -var subtableParsers = new Array(9); -subtableParsers[1] = function parseLookup1() { - var start = this.offset + this.relativeOffset; - var substFormat = this.parseUShort(); - if (substFormat === 1) { - return { - substFormat: 1, - coverage: this.parsePointer(Parser2.coverage), - deltaGlyphId: this.parseUShort() - }; - } else if (substFormat === 2) { - return { - substFormat: 2, - coverage: this.parsePointer(Parser2.coverage), - substitute: this.parseOffset16List() - }; - } - check.assert(false, "0x" + start.toString(16) + ": lookup type 1 format must be 1 or 2."); -}; -subtableParsers[2] = function parseLookup2() { - var substFormat = this.parseUShort(); - check.argument(substFormat === 1, "GSUB Multiple Substitution Subtable identifier-format must be 1"); - return { - substFormat, - coverage: this.parsePointer(Parser2.coverage), - sequences: this.parseListOfLists() - }; -}; -subtableParsers[3] = function parseLookup3() { - var substFormat = this.parseUShort(); - check.argument(substFormat === 1, "GSUB Alternate Substitution Subtable identifier-format must be 1"); - return { - substFormat, - coverage: this.parsePointer(Parser2.coverage), - alternateSets: this.parseListOfLists() - }; -}; -subtableParsers[4] = function parseLookup4() { - var substFormat = this.parseUShort(); - check.argument(substFormat === 1, "GSUB ligature table identifier-format must be 1"); - return { - substFormat, - coverage: this.parsePointer(Parser2.coverage), - ligatureSets: this.parseListOfLists(function() { - return { - ligGlyph: this.parseUShort(), - components: this.parseUShortList(this.parseUShort() - 1) - }; - }) - }; -}; -var lookupRecordDesc = { - sequenceIndex: Parser2.uShort, - lookupListIndex: Parser2.uShort -}; -subtableParsers[5] = function parseLookup5() { - var start = this.offset + this.relativeOffset; - var substFormat = this.parseUShort(); - if (substFormat === 1) { - return { - substFormat, - coverage: this.parsePointer(Parser2.coverage), - ruleSets: this.parseListOfLists(function() { - var glyphCount2 = this.parseUShort(); - var substCount2 = this.parseUShort(); - return { - input: this.parseUShortList(glyphCount2 - 1), - lookupRecords: this.parseRecordList(substCount2, lookupRecordDesc) - }; - }) - }; - } else if (substFormat === 2) { - return { - substFormat, - coverage: this.parsePointer(Parser2.coverage), - classDef: this.parsePointer(Parser2.classDef), - classSets: this.parseListOfLists(function() { - var glyphCount2 = this.parseUShort(); - var substCount2 = this.parseUShort(); - return { - classes: this.parseUShortList(glyphCount2 - 1), - lookupRecords: this.parseRecordList(substCount2, lookupRecordDesc) - }; - }) - }; - } else if (substFormat === 3) { - var glyphCount = this.parseUShort(); - var substCount = this.parseUShort(); - return { - substFormat, - coverages: this.parseList(glyphCount, Parser2.pointer(Parser2.coverage)), - lookupRecords: this.parseRecordList(substCount, lookupRecordDesc) - }; - } - check.assert(false, "0x" + start.toString(16) + ": lookup type 5 format must be 1, 2 or 3."); -}; -subtableParsers[6] = function parseLookup6() { - var start = this.offset + this.relativeOffset; - var substFormat = this.parseUShort(); - if (substFormat === 1) { - return { - substFormat: 1, - coverage: this.parsePointer(Parser2.coverage), - chainRuleSets: this.parseListOfLists(function() { - return { - backtrack: this.parseUShortList(), - input: this.parseUShortList(this.parseShort() - 1), - lookahead: this.parseUShortList(), - lookupRecords: this.parseRecordList(lookupRecordDesc) - }; - }) - }; - } else if (substFormat === 2) { - return { - substFormat: 2, - coverage: this.parsePointer(Parser2.coverage), - backtrackClassDef: this.parsePointer(Parser2.classDef), - inputClassDef: this.parsePointer(Parser2.classDef), - lookaheadClassDef: this.parsePointer(Parser2.classDef), - chainClassSet: this.parseListOfLists(function() { - return { - backtrack: this.parseUShortList(), - input: this.parseUShortList(this.parseShort() - 1), - lookahead: this.parseUShortList(), - lookupRecords: this.parseRecordList(lookupRecordDesc) - }; - }) - }; - } else if (substFormat === 3) { - return { - substFormat: 3, - backtrackCoverage: this.parseList(Parser2.pointer(Parser2.coverage)), - inputCoverage: this.parseList(Parser2.pointer(Parser2.coverage)), - lookaheadCoverage: this.parseList(Parser2.pointer(Parser2.coverage)), - lookupRecords: this.parseRecordList(lookupRecordDesc) - }; - } - check.assert(false, "0x" + start.toString(16) + ": lookup type 6 format must be 1, 2 or 3."); -}; -subtableParsers[7] = function parseLookup7() { - var substFormat = this.parseUShort(); - check.argument(substFormat === 1, "GSUB Extension Substitution subtable identifier-format must be 1"); - var extensionLookupType = this.parseUShort(); - var extensionParser = new Parser2(this.data, this.offset + this.parseULong()); - return { - substFormat: 1, - lookupType: extensionLookupType, - extension: subtableParsers[extensionLookupType].call(extensionParser) - }; -}; -subtableParsers[8] = function parseLookup8() { - var substFormat = this.parseUShort(); - check.argument(substFormat === 1, "GSUB Reverse Chaining Contextual Single Substitution Subtable identifier-format must be 1"); - return { - substFormat, - coverage: this.parsePointer(Parser2.coverage), - backtrackCoverage: this.parseList(Parser2.pointer(Parser2.coverage)), - lookaheadCoverage: this.parseList(Parser2.pointer(Parser2.coverage)), - substitutes: this.parseUShortList() - }; -}; -function parseGsubTable(data2, start) { - start = start || 0; - var p2 = new Parser2(data2, start); - var tableVersion = p2.parseVersion(1); - check.argument(tableVersion === 1 || tableVersion === 1.1, "Unsupported GSUB table version."); - if (tableVersion === 1) { - return { - version: tableVersion, - scripts: p2.parseScriptList(), - features: p2.parseFeatureList(), - lookups: p2.parseLookupList(subtableParsers) - }; - } else { - return { - version: tableVersion, - scripts: p2.parseScriptList(), - features: p2.parseFeatureList(), - lookups: p2.parseLookupList(subtableParsers), - variations: p2.parseFeatureVariationsList() - }; - } -} -var subtableMakers = new Array(9); -subtableMakers[1] = function makeLookup1(subtable) { - if (subtable.substFormat === 1) { - return new table.Table("substitutionTable", [ - { name: "substFormat", type: "USHORT", value: 1 }, - { name: "coverage", type: "TABLE", value: new table.Coverage(subtable.coverage) }, - { name: "deltaGlyphID", type: "USHORT", value: subtable.deltaGlyphId } - ]); - } else { - return new table.Table("substitutionTable", [ - { name: "substFormat", type: "USHORT", value: 2 }, - { name: "coverage", type: "TABLE", value: new table.Coverage(subtable.coverage) } - ].concat(table.ushortList("substitute", subtable.substitute))); - } -}; -subtableMakers[2] = function makeLookup2(subtable) { - check.assert(subtable.substFormat === 1, "Lookup type 2 substFormat must be 1."); - return new table.Table("substitutionTable", [ - { name: "substFormat", type: "USHORT", value: 1 }, - { name: "coverage", type: "TABLE", value: new table.Coverage(subtable.coverage) } - ].concat(table.tableList("seqSet", subtable.sequences, function(sequenceSet) { - return new table.Table("sequenceSetTable", table.ushortList("sequence", sequenceSet)); - }))); -}; -subtableMakers[3] = function makeLookup3(subtable) { - check.assert(subtable.substFormat === 1, "Lookup type 3 substFormat must be 1."); - return new table.Table("substitutionTable", [ - { name: "substFormat", type: "USHORT", value: 1 }, - { name: "coverage", type: "TABLE", value: new table.Coverage(subtable.coverage) } - ].concat(table.tableList("altSet", subtable.alternateSets, function(alternateSet) { - return new table.Table("alternateSetTable", table.ushortList("alternate", alternateSet)); - }))); -}; -subtableMakers[4] = function makeLookup4(subtable) { - check.assert(subtable.substFormat === 1, "Lookup type 4 substFormat must be 1."); - return new table.Table("substitutionTable", [ - { name: "substFormat", type: "USHORT", value: 1 }, - { name: "coverage", type: "TABLE", value: new table.Coverage(subtable.coverage) } - ].concat(table.tableList("ligSet", subtable.ligatureSets, function(ligatureSet) { - return new table.Table("ligatureSetTable", table.tableList("ligature", ligatureSet, function(ligature) { - return new table.Table( - "ligatureTable", - [{ name: "ligGlyph", type: "USHORT", value: ligature.ligGlyph }].concat(table.ushortList("component", ligature.components, ligature.components.length + 1)) - ); - })); - }))); -}; -subtableMakers[6] = function makeLookup6(subtable) { - if (subtable.substFormat === 1) { - var returnTable = new table.Table("chainContextTable", [ - { name: "substFormat", type: "USHORT", value: subtable.substFormat }, - { name: "coverage", type: "TABLE", value: new table.Coverage(subtable.coverage) } - ].concat(table.tableList("chainRuleSet", subtable.chainRuleSets, function(chainRuleSet) { - return new table.Table("chainRuleSetTable", table.tableList("chainRule", chainRuleSet, function(chainRule) { - var tableData2 = table.ushortList("backtrackGlyph", chainRule.backtrack, chainRule.backtrack.length).concat(table.ushortList("inputGlyph", chainRule.input, chainRule.input.length + 1)).concat(table.ushortList("lookaheadGlyph", chainRule.lookahead, chainRule.lookahead.length)).concat(table.ushortList("substitution", [], chainRule.lookupRecords.length)); - chainRule.lookupRecords.forEach(function(record, i) { - tableData2 = tableData2.concat({ name: "sequenceIndex" + i, type: "USHORT", value: record.sequenceIndex }).concat({ name: "lookupListIndex" + i, type: "USHORT", value: record.lookupListIndex }); - }); - return new table.Table("chainRuleTable", tableData2); - })); - }))); - return returnTable; - } else if (subtable.substFormat === 2) { - check.assert(false, "lookup type 6 format 2 is not yet supported."); - } else if (subtable.substFormat === 3) { - var tableData = [ - { name: "substFormat", type: "USHORT", value: subtable.substFormat } - ]; - tableData.push({ name: "backtrackGlyphCount", type: "USHORT", value: subtable.backtrackCoverage.length }); - subtable.backtrackCoverage.forEach(function(coverage, i) { - tableData.push({ name: "backtrackCoverage" + i, type: "TABLE", value: new table.Coverage(coverage) }); - }); - tableData.push({ name: "inputGlyphCount", type: "USHORT", value: subtable.inputCoverage.length }); - subtable.inputCoverage.forEach(function(coverage, i) { - tableData.push({ name: "inputCoverage" + i, type: "TABLE", value: new table.Coverage(coverage) }); - }); - tableData.push({ name: "lookaheadGlyphCount", type: "USHORT", value: subtable.lookaheadCoverage.length }); - subtable.lookaheadCoverage.forEach(function(coverage, i) { - tableData.push({ name: "lookaheadCoverage" + i, type: "TABLE", value: new table.Coverage(coverage) }); - }); - tableData.push({ name: "substitutionCount", type: "USHORT", value: subtable.lookupRecords.length }); - subtable.lookupRecords.forEach(function(record, i) { - tableData = tableData.concat({ name: "sequenceIndex" + i, type: "USHORT", value: record.sequenceIndex }).concat({ name: "lookupListIndex" + i, type: "USHORT", value: record.lookupListIndex }); - }); - var returnTable$1 = new table.Table("chainContextTable", tableData); - return returnTable$1; - } - check.assert(false, "lookup type 6 format must be 1, 2 or 3."); -}; -function makeGsubTable(gsub2) { - return new table.Table("GSUB", [ - { name: "version", type: "ULONG", value: 65536 }, - { name: "scripts", type: "TABLE", value: new table.ScriptList(gsub2.scripts) }, - { name: "features", type: "TABLE", value: new table.FeatureList(gsub2.features) }, - { name: "lookups", type: "TABLE", value: new table.LookupList(gsub2.lookups, subtableMakers) } - ]); -} -var gsub = { parse: parseGsubTable, make: makeGsubTable }; -function parseMetaTable(data2, start) { - var p2 = new parse.Parser(data2, start); - var tableVersion = p2.parseULong(); - check.argument(tableVersion === 1, "Unsupported META table version."); - p2.parseULong(); - p2.parseULong(); - var numDataMaps = p2.parseULong(); - var tags = {}; - for (var i = 0; i < numDataMaps; i++) { - var tag = p2.parseTag(); - var dataOffset = p2.parseULong(); - var dataLength = p2.parseULong(); - var text2 = decode.UTF8(data2, start + dataOffset, dataLength); - tags[tag] = text2; - } - return tags; -} -function makeMetaTable(tags) { - var numTags = Object.keys(tags).length; - var stringPool = ""; - var stringPoolOffset = 16 + numTags * 12; - var result = new table.Table("meta", [ - { name: "version", type: "ULONG", value: 1 }, - { name: "flags", type: "ULONG", value: 0 }, - { name: "offset", type: "ULONG", value: stringPoolOffset }, - { name: "numTags", type: "ULONG", value: numTags } - ]); - for (var tag in tags) { - var pos = stringPool.length; - stringPool += tags[tag]; - result.fields.push({ name: "tag " + tag, type: "TAG", value: tag }); - result.fields.push({ name: "offset " + tag, type: "ULONG", value: stringPoolOffset + pos }); - result.fields.push({ name: "length " + tag, type: "ULONG", value: tags[tag].length }); - } - result.fields.push({ name: "stringPool", type: "CHARARRAY", value: stringPool }); - return result; -} -var meta = { parse: parseMetaTable, make: makeMetaTable }; -function parseColrTable(data2, start) { - var p2 = new Parser2(data2, start); - var version = p2.parseUShort(); - check.argument(version === 0, "Only COLRv0 supported."); - var numBaseGlyphRecords = p2.parseUShort(); - var baseGlyphRecordsOffset = p2.parseOffset32(); - var layerRecordsOffset = p2.parseOffset32(); - var numLayerRecords = p2.parseUShort(); - p2.relativeOffset = baseGlyphRecordsOffset; - var baseGlyphRecords = p2.parseRecordList(numBaseGlyphRecords, { - glyphID: Parser2.uShort, - firstLayerIndex: Parser2.uShort, - numLayers: Parser2.uShort - }); - p2.relativeOffset = layerRecordsOffset; - var layerRecords = p2.parseRecordList(numLayerRecords, { - glyphID: Parser2.uShort, - paletteIndex: Parser2.uShort - }); - return { - version, - baseGlyphRecords, - layerRecords - }; -} -function makeColrTable(ref) { - var version = ref.version; - if (version === void 0) version = 0; - var baseGlyphRecords = ref.baseGlyphRecords; - if (baseGlyphRecords === void 0) baseGlyphRecords = []; - var layerRecords = ref.layerRecords; - if (layerRecords === void 0) layerRecords = []; - check.argument(version === 0, "Only COLRv0 supported."); - var baseGlyphRecordsOffset = 14; - var layerRecordsOffset = baseGlyphRecordsOffset + baseGlyphRecords.length * 6; - return new table.Table("COLR", [ - { name: "version", type: "USHORT", value: version }, - { name: "numBaseGlyphRecords", type: "USHORT", value: baseGlyphRecords.length }, - { name: "baseGlyphRecordsOffset", type: "ULONG", value: baseGlyphRecordsOffset }, - { name: "layerRecordsOffset", type: "ULONG", value: layerRecordsOffset }, - { name: "numLayerRecords", type: "USHORT", value: layerRecords.length } - ].concat( - baseGlyphRecords.map(function(glyph, i) { - return [ - { name: "glyphID_" + i, type: "USHORT", value: glyph.glyphID }, - { name: "firstLayerIndex_" + i, type: "USHORT", value: glyph.firstLayerIndex }, - { name: "numLayers_" + i, type: "USHORT", value: glyph.numLayers } - ]; - }).flat(), - layerRecords.map(function(layer, i) { - return [ - { name: "LayerGlyphID_" + i, type: "USHORT", value: layer.glyphID }, - { name: "paletteIndex_" + i, type: "USHORT", value: layer.paletteIndex } - ]; - }).flat() - )); -} -var colr = { parse: parseColrTable, make: makeColrTable }; -function parseCpalTable(data2, start) { - var p2 = new Parser2(data2, start); - var version = p2.parseShort(); - var numPaletteEntries = p2.parseShort(); - var numPalettes = p2.parseShort(); - var numColorRecords = p2.parseShort(); - var colorRecordsArrayOffset = p2.parseOffset32(); - var colorRecordIndices = p2.parseUShortList(numPalettes); - p2.relativeOffset = colorRecordsArrayOffset; - var colorRecords = p2.parseULongList(numColorRecords); - return { - version, - numPaletteEntries, - colorRecords, - colorRecordIndices - }; -} -function makeCpalTable(ref) { - var version = ref.version; - if (version === void 0) version = 0; - var numPaletteEntries = ref.numPaletteEntries; - if (numPaletteEntries === void 0) numPaletteEntries = 0; - var colorRecords = ref.colorRecords; - if (colorRecords === void 0) colorRecords = []; - var colorRecordIndices = ref.colorRecordIndices; - if (colorRecordIndices === void 0) colorRecordIndices = [0]; - check.argument(version === 0, "Only CPALv0 are supported."); - check.argument(colorRecords.length, "No colorRecords given."); - check.argument(colorRecordIndices.length, "No colorRecordIndices given."); - check.argument(!numPaletteEntries && colorRecordIndices.length == 1, "Can't infer numPaletteEntries on multiple colorRecordIndices"); - return new table.Table("CPAL", [ - { name: "version", type: "USHORT", value: version }, - { name: "numPaletteEntries", type: "USHORT", value: numPaletteEntries || colorRecords.length }, - { name: "numPalettes", type: "USHORT", value: colorRecordIndices.length }, - { name: "numColorRecords", type: "USHORT", value: colorRecords.length }, - { name: "colorRecordsArrayOffset", type: "ULONG", value: 12 + 2 * colorRecordIndices.length } - ].concat( - colorRecordIndices.map(function(palette, i) { - return { name: "colorRecordIndices_" + i, type: "USHORT", value: palette }; - }), - colorRecords.map(function(color, i) { - return { name: "colorRecords_" + i, type: "ULONG", value: color }; - }) - )); -} -var cpal = { parse: parseCpalTable, make: makeCpalTable }; -function log2(v) { - return Math.log(v) / Math.log(2) | 0; -} -function computeCheckSum(bytes) { - while (bytes.length % 4 !== 0) { - bytes.push(0); - } - var sum2 = 0; - for (var i = 0; i < bytes.length; i += 4) { - sum2 += (bytes[i] << 24) + (bytes[i + 1] << 16) + (bytes[i + 2] << 8) + bytes[i + 3]; - } - sum2 %= Math.pow(2, 32); - return sum2; -} -function makeTableRecord(tag, checkSum, offset, length2) { - return new table.Record("Table Record", [ - { name: "tag", type: "TAG", value: tag !== void 0 ? tag : "" }, - { name: "checkSum", type: "ULONG", value: checkSum !== void 0 ? checkSum : 0 }, - { name: "offset", type: "ULONG", value: offset !== void 0 ? offset : 0 }, - { name: "length", type: "ULONG", value: length2 !== void 0 ? length2 : 0 } - ]); -} -function makeSfntTable(tables) { - var sfnt2 = new table.Table("sfnt", [ - { name: "version", type: "TAG", value: "OTTO" }, - { name: "numTables", type: "USHORT", value: 0 }, - { name: "searchRange", type: "USHORT", value: 0 }, - { name: "entrySelector", type: "USHORT", value: 0 }, - { name: "rangeShift", type: "USHORT", value: 0 } - ]); - sfnt2.tables = tables; - sfnt2.numTables = tables.length; - var highestPowerOf2 = Math.pow(2, log2(sfnt2.numTables)); - sfnt2.searchRange = 16 * highestPowerOf2; - sfnt2.entrySelector = log2(highestPowerOf2); - sfnt2.rangeShift = sfnt2.numTables * 16 - sfnt2.searchRange; - var recordFields = []; - var tableFields = []; - var offset = sfnt2.sizeOf() + makeTableRecord().sizeOf() * sfnt2.numTables; - while (offset % 4 !== 0) { - offset += 1; - tableFields.push({ name: "padding", type: "BYTE", value: 0 }); - } - for (var i = 0; i < tables.length; i += 1) { - var t3 = tables[i]; - check.argument(t3.tableName.length === 4, "Table name" + t3.tableName + " is invalid."); - var tableLength = t3.sizeOf(); - var tableRecord = makeTableRecord(t3.tableName, computeCheckSum(t3.encode()), offset, tableLength); - recordFields.push({ name: tableRecord.tag + " Table Record", type: "RECORD", value: tableRecord }); - tableFields.push({ name: t3.tableName + " table", type: "RECORD", value: t3 }); - offset += tableLength; - check.argument(!isNaN(offset), "Something went wrong calculating the offset."); - while (offset % 4 !== 0) { - offset += 1; - tableFields.push({ name: "padding", type: "BYTE", value: 0 }); - } - } - recordFields.sort(function(r1, r2) { - if (r1.value.tag > r2.value.tag) { - return 1; - } else { - return -1; - } - }); - sfnt2.fields = sfnt2.fields.concat(recordFields); - sfnt2.fields = sfnt2.fields.concat(tableFields); - return sfnt2; -} -function metricsForChar(font, chars, notFoundMetrics) { - for (var i = 0; i < chars.length; i += 1) { - var glyphIndex = font.charToGlyphIndex(chars[i]); - if (glyphIndex > 0) { - var glyph = font.glyphs.get(glyphIndex); - return glyph.getMetrics(); - } - } - return notFoundMetrics; -} -function average(vs) { - var sum2 = 0; - for (var i = 0; i < vs.length; i += 1) { - sum2 += vs[i]; - } - return sum2 / vs.length; -} -function fontToSfntTable(font) { - var xMins = []; - var yMins = []; - var xMaxs = []; - var yMaxs = []; - var advanceWidths = []; - var leftSideBearings = []; - var rightSideBearings = []; - var firstCharIndex; - var lastCharIndex = 0; - var ulUnicodeRange1 = 0; - var ulUnicodeRange2 = 0; - var ulUnicodeRange3 = 0; - var ulUnicodeRange4 = 0; - for (var i = 0; i < font.glyphs.length; i += 1) { - var glyph = font.glyphs.get(i); - var unicode = glyph.unicode | 0; - if (isNaN(glyph.advanceWidth)) { - throw new Error("Glyph " + glyph.name + " (" + i + "): advanceWidth is not a number."); - } - if (firstCharIndex > unicode || firstCharIndex === void 0) { - if (unicode > 0) { - firstCharIndex = unicode; - } - } - if (lastCharIndex < unicode) { - lastCharIndex = unicode; - } - var position2 = os2.getUnicodeRange(unicode); - if (position2 < 32) { - ulUnicodeRange1 |= 1 << position2; - } else if (position2 < 64) { - ulUnicodeRange2 |= 1 << position2 - 32; - } else if (position2 < 96) { - ulUnicodeRange3 |= 1 << position2 - 64; - } else if (position2 < 123) { - ulUnicodeRange4 |= 1 << position2 - 96; - } else { - throw new Error("Unicode ranges bits > 123 are reserved for internal usage"); - } - if (glyph.name === ".notdef") { - continue; - } - var metrics = glyph.getMetrics(); - xMins.push(metrics.xMin); - yMins.push(metrics.yMin); - xMaxs.push(metrics.xMax); - yMaxs.push(metrics.yMax); - leftSideBearings.push(metrics.leftSideBearing); - rightSideBearings.push(metrics.rightSideBearing); - advanceWidths.push(glyph.advanceWidth); - } - var globals = { - xMin: Math.min.apply(null, xMins), - yMin: Math.min.apply(null, yMins), - xMax: Math.max.apply(null, xMaxs), - yMax: Math.max.apply(null, yMaxs), - advanceWidthMax: Math.max.apply(null, advanceWidths), - advanceWidthAvg: average(advanceWidths), - minLeftSideBearing: Math.min.apply(null, leftSideBearings), - maxLeftSideBearing: Math.max.apply(null, leftSideBearings), - minRightSideBearing: Math.min.apply(null, rightSideBearings) - }; - globals.ascender = font.ascender; - globals.descender = font.descender; - var headTable = head.make({ - flags: 3, - // 00000011 (baseline for font at y=0; left sidebearing point at x=0) - unitsPerEm: font.unitsPerEm, - xMin: globals.xMin, - yMin: globals.yMin, - xMax: globals.xMax, - yMax: globals.yMax, - lowestRecPPEM: 3, - createdTimestamp: font.createdTimestamp - }); - var hheaTable = hhea.make({ - ascender: globals.ascender, - descender: globals.descender, - advanceWidthMax: globals.advanceWidthMax, - minLeftSideBearing: globals.minLeftSideBearing, - minRightSideBearing: globals.minRightSideBearing, - xMaxExtent: globals.maxLeftSideBearing + (globals.xMax - globals.xMin), - numberOfHMetrics: font.glyphs.length - }); - var maxpTable = maxp.make(font.glyphs.length); - var os2Table = os2.make(Object.assign({ - xAvgCharWidth: Math.round(globals.advanceWidthAvg), - usFirstCharIndex: firstCharIndex, - usLastCharIndex: lastCharIndex, - ulUnicodeRange1, - ulUnicodeRange2, - ulUnicodeRange3, - ulUnicodeRange4, - // See http://typophile.com/node/13081 for more info on vertical metrics. - // We get metrics for typical characters (such as "x" for xHeight). - // We provide some fallback characters if characters are unavailable: their - // ordering was chosen experimentally. - sTypoAscender: globals.ascender, - sTypoDescender: globals.descender, - sTypoLineGap: 0, - usWinAscent: globals.yMax, - usWinDescent: Math.abs(globals.yMin), - ulCodePageRange1: 1, - // FIXME: hard-code Latin 1 support for now - sxHeight: metricsForChar(font, "xyvw", { yMax: Math.round(globals.ascender / 2) }).yMax, - sCapHeight: metricsForChar(font, "HIKLEFJMNTZBDPRAGOQSUVWXY", globals).yMax, - usDefaultChar: font.hasChar(" ") ? 32 : 0, - // Use space as the default character, if available. - usBreakChar: font.hasChar(" ") ? 32 : 0 - // Use space as the break character, if available. - }, font.tables.os2)); - var hmtxTable = hmtx.make(font.glyphs); - var cmapTable = cmap.make(font.glyphs); - var englishFamilyName = font.getEnglishName("fontFamily"); - var englishStyleName = font.getEnglishName("fontSubfamily"); - var englishFullName = englishFamilyName + " " + englishStyleName; - var postScriptName = font.getEnglishName("postScriptName"); - if (!postScriptName) { - postScriptName = englishFamilyName.replace(/\s/g, "") + "-" + englishStyleName; - } - var names = {}; - for (var n2 in font.names) { - names[n2] = font.names[n2]; - } - if (!names.uniqueID) { - names.uniqueID = { en: font.getEnglishName("manufacturer") + ":" + englishFullName }; - } - if (!names.postScriptName) { - names.postScriptName = { en: postScriptName }; - } - if (!names.preferredFamily) { - names.preferredFamily = font.names.fontFamily; - } - if (!names.preferredSubfamily) { - names.preferredSubfamily = font.names.fontSubfamily; - } - var languageTags = []; - var nameTable = _name.make(names, languageTags); - var ltagTable = languageTags.length > 0 ? ltag.make(languageTags) : void 0; - var postTable = post.make(); - var cffTable = cff.make(font.glyphs, { - version: font.getEnglishName("version"), - fullName: englishFullName, - familyName: englishFamilyName, - weightName: englishStyleName, - postScriptName, - unitsPerEm: font.unitsPerEm, - fontBBox: [0, globals.yMin, globals.ascender, globals.advanceWidthMax] - }); - var metaTable = font.metas && Object.keys(font.metas).length > 0 ? meta.make(font.metas) : void 0; - var tables = [headTable, hheaTable, maxpTable, os2Table, nameTable, cmapTable, postTable, cffTable, hmtxTable]; - if (ltagTable) { - tables.push(ltagTable); - } - if (font.tables.gsub) { - tables.push(gsub.make(font.tables.gsub)); - } - if (font.tables.cpal) { - tables.push(cpal.make(font.tables.cpal)); - } - if (font.tables.colr) { - tables.push(colr.make(font.tables.colr)); - } - if (metaTable) { - tables.push(metaTable); - } - var sfntTable = makeSfntTable(tables); - var bytes = sfntTable.encode(); - var checkSum = computeCheckSum(bytes); - var tableFields = sfntTable.fields; - var checkSumAdjusted = false; - for (var i$1 = 0; i$1 < tableFields.length; i$1 += 1) { - if (tableFields[i$1].name === "head table") { - tableFields[i$1].value.checkSumAdjustment = 2981146554 - checkSum; - checkSumAdjusted = true; - break; - } - } - if (!checkSumAdjusted) { - throw new Error("Could not find head table with checkSum to adjust."); - } - return sfntTable; -} -var sfnt = { make: makeSfntTable, fontToTable: fontToSfntTable, computeCheckSum }; -function searchTag(arr, tag) { - var imin = 0; - var imax = arr.length - 1; - while (imin <= imax) { - var imid = imin + imax >>> 1; - var val2 = arr[imid].tag; - if (val2 === tag) { - return imid; - } else if (val2 < tag) { - imin = imid + 1; - } else { - imax = imid - 1; - } - } - return -imin - 1; -} -function binSearch(arr, value2) { - var imin = 0; - var imax = arr.length - 1; - while (imin <= imax) { - var imid = imin + imax >>> 1; - var val2 = arr[imid]; - if (val2 === value2) { - return imid; - } else if (val2 < value2) { - imin = imid + 1; - } else { - imax = imid - 1; - } - } - return -imin - 1; -} -function searchRange(ranges, value2) { - var range; - var imin = 0; - var imax = ranges.length - 1; - while (imin <= imax) { - var imid = imin + imax >>> 1; - range = ranges[imid]; - var start = range.start; - if (start === value2) { - return range; - } else if (start < value2) { - imin = imid + 1; - } else { - imax = imid - 1; - } - } - if (imin > 0) { - range = ranges[imin - 1]; - if (value2 > range.end) { - return 0; - } - return range; - } -} -function Layout(font, tableName) { - this.font = font; - this.tableName = tableName; -} -Layout.prototype = { - /** - * Binary search an object by "tag" property - * @instance - * @function searchTag - * @memberof opentype.Layout - * @param {Array} arr - * @param {string} tag - * @return {number} - */ - searchTag, - /** - * Binary search in a list of numbers - * @instance - * @function binSearch - * @memberof opentype.Layout - * @param {Array} arr - * @param {number} value - * @return {number} - */ - binSearch, - /** - * Get or create the Layout table (GSUB, GPOS etc). - * @param {boolean} create - Whether to create a new one. - * @return {Object} The GSUB or GPOS table. - */ - getTable: function(create) { - var layout = this.font.tables[this.tableName]; - if (!layout && create) { - layout = this.font.tables[this.tableName] = this.createDefaultTable(); - } - return layout; - }, - /** - * Returns all scripts in the substitution table. - * @instance - * @return {Array} - */ - getScriptNames: function() { - var layout = this.getTable(); - if (!layout) { - return []; - } - return layout.scripts.map(function(script) { - return script.tag; - }); - }, - /** - * Returns the best bet for a script name. - * Returns 'DFLT' if it exists. - * If not, returns 'latn' if it exists. - * If neither exist, returns undefined. - */ - getDefaultScriptName: function() { - var layout = this.getTable(); - if (!layout) { - return; - } - var hasLatn = false; - for (var i = 0; i < layout.scripts.length; i++) { - var name2 = layout.scripts[i].tag; - if (name2 === "DFLT") { - return name2; - } - if (name2 === "latn") { - hasLatn = true; - } - } - if (hasLatn) { - return "latn"; - } - }, - /** - * Returns all LangSysRecords in the given script. - * @instance - * @param {string} [script='DFLT'] - * @param {boolean} create - forces the creation of this script table if it doesn't exist. - * @return {Object} An object with tag and script properties. - */ - getScriptTable: function(script, create) { - var layout = this.getTable(create); - if (layout) { - script = script || "DFLT"; - var scripts = layout.scripts; - var pos = searchTag(layout.scripts, script); - if (pos >= 0) { - return scripts[pos].script; - } else if (create) { - var scr = { - tag: script, - script: { - defaultLangSys: { reserved: 0, reqFeatureIndex: 65535, featureIndexes: [] }, - langSysRecords: [] - } - }; - scripts.splice(-1 - pos, 0, scr); - return scr.script; - } - } - }, - /** - * Returns a language system table - * @instance - * @param {string} [script='DFLT'] - * @param {string} [language='dlft'] - * @param {boolean} create - forces the creation of this langSysTable if it doesn't exist. - * @return {Object} - */ - getLangSysTable: function(script, language, create) { - var scriptTable = this.getScriptTable(script, create); - if (scriptTable) { - if (!language || language === "dflt" || language === "DFLT") { - return scriptTable.defaultLangSys; - } - var pos = searchTag(scriptTable.langSysRecords, language); - if (pos >= 0) { - return scriptTable.langSysRecords[pos].langSys; - } else if (create) { - var langSysRecord = { - tag: language, - langSys: { reserved: 0, reqFeatureIndex: 65535, featureIndexes: [] } - }; - scriptTable.langSysRecords.splice(-1 - pos, 0, langSysRecord); - return langSysRecord.langSys; - } - } - }, - /** - * Get a specific feature table. - * @instance - * @param {string} [script='DFLT'] - * @param {string} [language='dlft'] - * @param {string} feature - One of the codes listed at https://www.microsoft.com/typography/OTSPEC/featurelist.htm - * @param {boolean} create - forces the creation of the feature table if it doesn't exist. - * @return {Object} - */ - getFeatureTable: function(script, language, feature, create) { - var langSysTable2 = this.getLangSysTable(script, language, create); - if (langSysTable2) { - var featureRecord; - var featIndexes = langSysTable2.featureIndexes; - var allFeatures = this.font.tables[this.tableName].features; - for (var i = 0; i < featIndexes.length; i++) { - featureRecord = allFeatures[featIndexes[i]]; - if (featureRecord.tag === feature) { - return featureRecord.feature; - } - } - if (create) { - var index2 = allFeatures.length; - check.assert(index2 === 0 || feature >= allFeatures[index2 - 1].tag, "Features must be added in alphabetical order."); - featureRecord = { - tag: feature, - feature: { params: 0, lookupListIndexes: [] } - }; - allFeatures.push(featureRecord); - featIndexes.push(index2); - return featureRecord.feature; - } - } - }, - /** - * Get the lookup tables of a given type for a script/language/feature. - * @instance - * @param {string} [script='DFLT'] - * @param {string} [language='dlft'] - * @param {string} feature - 4-letter feature code - * @param {number} lookupType - 1 to 9 - * @param {boolean} create - forces the creation of the lookup table if it doesn't exist, with no subtables. - * @return {Object[]} - */ - getLookupTables: function(script, language, feature, lookupType, create) { - var featureTable = this.getFeatureTable(script, language, feature, create); - var tables = []; - if (featureTable) { - var lookupTable; - var lookupListIndexes = featureTable.lookupListIndexes; - var allLookups = this.font.tables[this.tableName].lookups; - for (var i = 0; i < lookupListIndexes.length; i++) { - lookupTable = allLookups[lookupListIndexes[i]]; - if (lookupTable.lookupType === lookupType) { - tables.push(lookupTable); - } - } - if (tables.length === 0 && create) { - lookupTable = { - lookupType, - lookupFlag: 0, - subtables: [], - markFilteringSet: void 0 - }; - var index2 = allLookups.length; - allLookups.push(lookupTable); - lookupListIndexes.push(index2); - return [lookupTable]; - } - } - return tables; - }, - /** - * Find a glyph in a class definition table - * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#class-definition-table - * @param {object} classDefTable - an OpenType Layout class definition table - * @param {number} glyphIndex - the index of the glyph to find - * @returns {number} -1 if not found - */ - getGlyphClass: function(classDefTable, glyphIndex) { - switch (classDefTable.format) { - case 1: - if (classDefTable.startGlyph <= glyphIndex && glyphIndex < classDefTable.startGlyph + classDefTable.classes.length) { - return classDefTable.classes[glyphIndex - classDefTable.startGlyph]; - } - return 0; - case 2: - var range = searchRange(classDefTable.ranges, glyphIndex); - return range ? range.classId : 0; - } - }, - /** - * Find a glyph in a coverage table - * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#coverage-table - * @param {object} coverageTable - an OpenType Layout coverage table - * @param {number} glyphIndex - the index of the glyph to find - * @returns {number} -1 if not found - */ - getCoverageIndex: function(coverageTable, glyphIndex) { - switch (coverageTable.format) { - case 1: - var index2 = binSearch(coverageTable.glyphs, glyphIndex); - return index2 >= 0 ? index2 : -1; - case 2: - var range = searchRange(coverageTable.ranges, glyphIndex); - return range ? range.index + glyphIndex - range.start : -1; - } - }, - /** - * Returns the list of glyph indexes of a coverage table. - * Format 1: the list is stored raw - * Format 2: compact list as range records. - * @instance - * @param {Object} coverageTable - * @return {Array} - */ - expandCoverage: function(coverageTable) { - if (coverageTable.format === 1) { - return coverageTable.glyphs; - } else { - var glyphs = []; - var ranges = coverageTable.ranges; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - var start = range.start; - var end = range.end; - for (var j = start; j <= end; j++) { - glyphs.push(j); - } - } - return glyphs; - } - } -}; -function Position(font) { - Layout.call(this, font, "gpos"); -} -Position.prototype = Layout.prototype; -Position.prototype.init = function() { - var script = this.getDefaultScriptName(); - this.defaultKerningTables = this.getKerningTables(script); -}; -Position.prototype.getKerningValue = function(kerningLookups, leftIndex, rightIndex) { - for (var i = 0; i < kerningLookups.length; i++) { - var subtables = kerningLookups[i].subtables; - for (var j = 0; j < subtables.length; j++) { - var subtable = subtables[j]; - var covIndex = this.getCoverageIndex(subtable.coverage, leftIndex); - if (covIndex < 0) { - continue; - } - switch (subtable.posFormat) { - case 1: - var pairSet = subtable.pairSets[covIndex]; - for (var k2 = 0; k2 < pairSet.length; k2++) { - var pair = pairSet[k2]; - if (pair.secondGlyph === rightIndex) { - return pair.value1 && pair.value1.xAdvance || 0; - } - } - break; - case 2: - var class1 = this.getGlyphClass(subtable.classDef1, leftIndex); - var class2 = this.getGlyphClass(subtable.classDef2, rightIndex); - var pair$1 = subtable.classRecords[class1][class2]; - return pair$1.value1 && pair$1.value1.xAdvance || 0; - } - } - } - return 0; -}; -Position.prototype.getKerningTables = function(script, language) { - if (this.font.tables.gpos) { - return this.getLookupTables(script, language, "kern", 2); - } -}; -function Substitution(font) { - Layout.call(this, font, "gsub"); -} -function arraysEqual(ar1, ar2) { - var n2 = ar1.length; - if (n2 !== ar2.length) { - return false; - } - for (var i = 0; i < n2; i++) { - if (ar1[i] !== ar2[i]) { - return false; - } - } - return true; -} -function getSubstFormat(lookupTable, format, defaultSubtable) { - var subtables = lookupTable.subtables; - for (var i = 0; i < subtables.length; i++) { - var subtable = subtables[i]; - if (subtable.substFormat === format) { - return subtable; - } - } - if (defaultSubtable) { - subtables.push(defaultSubtable); - return defaultSubtable; - } - return void 0; -} -Substitution.prototype = Layout.prototype; -Substitution.prototype.createDefaultTable = function() { - return { - version: 1, - scripts: [{ - tag: "DFLT", - script: { - defaultLangSys: { reserved: 0, reqFeatureIndex: 65535, featureIndexes: [] }, - langSysRecords: [] - } - }], - features: [], - lookups: [] - }; -}; -Substitution.prototype.getSingle = function(feature, script, language) { - var substitutions = []; - var lookupTables = this.getLookupTables(script, language, feature, 1); - for (var idx = 0; idx < lookupTables.length; idx++) { - var subtables = lookupTables[idx].subtables; - for (var i = 0; i < subtables.length; i++) { - var subtable = subtables[i]; - var glyphs = this.expandCoverage(subtable.coverage); - var j = void 0; - if (subtable.substFormat === 1) { - var delta = subtable.deltaGlyphId; - for (j = 0; j < glyphs.length; j++) { - var glyph = glyphs[j]; - substitutions.push({ sub: glyph, by: glyph + delta }); - } - } else { - var substitute = subtable.substitute; - for (j = 0; j < glyphs.length; j++) { - substitutions.push({ sub: glyphs[j], by: substitute[j] }); - } - } - } - } - return substitutions; -}; -Substitution.prototype.getMultiple = function(feature, script, language) { - var substitutions = []; - var lookupTables = this.getLookupTables(script, language, feature, 2); - for (var idx = 0; idx < lookupTables.length; idx++) { - var subtables = lookupTables[idx].subtables; - for (var i = 0; i < subtables.length; i++) { - var subtable = subtables[i]; - var glyphs = this.expandCoverage(subtable.coverage); - var j = void 0; - for (j = 0; j < glyphs.length; j++) { - var glyph = glyphs[j]; - var replacements = subtable.sequences[j]; - substitutions.push({ sub: glyph, by: replacements }); - } - } - } - return substitutions; -}; -Substitution.prototype.getAlternates = function(feature, script, language) { - var alternates = []; - var lookupTables = this.getLookupTables(script, language, feature, 3); - for (var idx = 0; idx < lookupTables.length; idx++) { - var subtables = lookupTables[idx].subtables; - for (var i = 0; i < subtables.length; i++) { - var subtable = subtables[i]; - var glyphs = this.expandCoverage(subtable.coverage); - var alternateSets = subtable.alternateSets; - for (var j = 0; j < glyphs.length; j++) { - alternates.push({ sub: glyphs[j], by: alternateSets[j] }); - } - } - } - return alternates; -}; -Substitution.prototype.getLigatures = function(feature, script, language) { - var ligatures = []; - var lookupTables = this.getLookupTables(script, language, feature, 4); - for (var idx = 0; idx < lookupTables.length; idx++) { - var subtables = lookupTables[idx].subtables; - for (var i = 0; i < subtables.length; i++) { - var subtable = subtables[i]; - var glyphs = this.expandCoverage(subtable.coverage); - var ligatureSets = subtable.ligatureSets; - for (var j = 0; j < glyphs.length; j++) { - var startGlyph = glyphs[j]; - var ligSet = ligatureSets[j]; - for (var k2 = 0; k2 < ligSet.length; k2++) { - var lig = ligSet[k2]; - ligatures.push({ - sub: [startGlyph].concat(lig.components), - by: lig.ligGlyph - }); - } - } - } - } - return ligatures; -}; -Substitution.prototype.addSingle = function(feature, substitution, script, language) { - var lookupTable = this.getLookupTables(script, language, feature, 1, true)[0]; - var subtable = getSubstFormat(lookupTable, 2, { - // lookup type 1 subtable, format 2, coverage format 1 - substFormat: 2, - coverage: { format: 1, glyphs: [] }, - substitute: [] - }); - check.assert(subtable.coverage.format === 1, "Single: unable to modify coverage table format " + subtable.coverage.format); - var coverageGlyph = substitution.sub; - var pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph); - if (pos < 0) { - pos = -1 - pos; - subtable.coverage.glyphs.splice(pos, 0, coverageGlyph); - subtable.substitute.splice(pos, 0, 0); - } - subtable.substitute[pos] = substitution.by; -}; -Substitution.prototype.addMultiple = function(feature, substitution, script, language) { - check.assert(substitution.by instanceof Array && substitution.by.length > 1, 'Multiple: "by" must be an array of two or more ids'); - var lookupTable = this.getLookupTables(script, language, feature, 2, true)[0]; - var subtable = getSubstFormat(lookupTable, 1, { - // lookup type 2 subtable, format 1, coverage format 1 - substFormat: 1, - coverage: { format: 1, glyphs: [] }, - sequences: [] - }); - check.assert(subtable.coverage.format === 1, "Multiple: unable to modify coverage table format " + subtable.coverage.format); - var coverageGlyph = substitution.sub; - var pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph); - if (pos < 0) { - pos = -1 - pos; - subtable.coverage.glyphs.splice(pos, 0, coverageGlyph); - subtable.sequences.splice(pos, 0, 0); - } - subtable.sequences[pos] = substitution.by; -}; -Substitution.prototype.addAlternate = function(feature, substitution, script, language) { - var lookupTable = this.getLookupTables(script, language, feature, 3, true)[0]; - var subtable = getSubstFormat(lookupTable, 1, { - // lookup type 3 subtable, format 1, coverage format 1 - substFormat: 1, - coverage: { format: 1, glyphs: [] }, - alternateSets: [] - }); - check.assert(subtable.coverage.format === 1, "Alternate: unable to modify coverage table format " + subtable.coverage.format); - var coverageGlyph = substitution.sub; - var pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph); - if (pos < 0) { - pos = -1 - pos; - subtable.coverage.glyphs.splice(pos, 0, coverageGlyph); - subtable.alternateSets.splice(pos, 0, 0); - } - subtable.alternateSets[pos] = substitution.by; -}; -Substitution.prototype.addLigature = function(feature, ligature, script, language) { - var lookupTable = this.getLookupTables(script, language, feature, 4, true)[0]; - var subtable = lookupTable.subtables[0]; - if (!subtable) { - subtable = { - // lookup type 4 subtable, format 1, coverage format 1 - substFormat: 1, - coverage: { format: 1, glyphs: [] }, - ligatureSets: [] - }; - lookupTable.subtables[0] = subtable; - } - check.assert(subtable.coverage.format === 1, "Ligature: unable to modify coverage table format " + subtable.coverage.format); - var coverageGlyph = ligature.sub[0]; - var ligComponents = ligature.sub.slice(1); - var ligatureTable = { - ligGlyph: ligature.by, - components: ligComponents - }; - var pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph); - if (pos >= 0) { - var ligatureSet = subtable.ligatureSets[pos]; - for (var i = 0; i < ligatureSet.length; i++) { - if (arraysEqual(ligatureSet[i].components, ligComponents)) { - return; - } - } - ligatureSet.push(ligatureTable); - } else { - pos = -1 - pos; - subtable.coverage.glyphs.splice(pos, 0, coverageGlyph); - subtable.ligatureSets.splice(pos, 0, [ligatureTable]); - } -}; -Substitution.prototype.getFeature = function(feature, script, language) { - if (/ss\d\d/.test(feature)) { - return this.getSingle(feature, script, language); - } - switch (feature) { - case "aalt": - case "salt": - return this.getSingle(feature, script, language).concat(this.getAlternates(feature, script, language)); - case "dlig": - case "liga": - case "rlig": - return this.getLigatures(feature, script, language); - case "ccmp": - return this.getMultiple(feature, script, language).concat(this.getLigatures(feature, script, language)); - case "stch": - return this.getMultiple(feature, script, language); - } - return void 0; -}; -Substitution.prototype.add = function(feature, sub2, script, language) { - if (/ss\d\d/.test(feature)) { - return this.addSingle(feature, sub2, script, language); - } - switch (feature) { - case "aalt": - case "salt": - if (typeof sub2.by === "number") { - return this.addSingle(feature, sub2, script, language); - } - return this.addAlternate(feature, sub2, script, language); - case "dlig": - case "liga": - case "rlig": - return this.addLigature(feature, sub2, script, language); - case "ccmp": - if (sub2.by instanceof Array) { - return this.addMultiple(feature, sub2, script, language); - } - return this.addLigature(feature, sub2, script, language); - } - return void 0; -}; -function checkArgument(expression, message) { - if (!expression) { - throw message; - } -} -function parseGlyphCoordinate(p2, flag, previousValue, shortVectorBitMask, sameBitMask) { - var v; - if ((flag & shortVectorBitMask) > 0) { - v = p2.parseByte(); - if ((flag & sameBitMask) === 0) { - v = -v; - } - v = previousValue + v; - } else { - if ((flag & sameBitMask) > 0) { - v = previousValue; - } else { - v = previousValue + p2.parseShort(); - } - } - return v; -} -function parseGlyph(glyph, data2, start) { - var p2 = new parse.Parser(data2, start); - glyph.numberOfContours = p2.parseShort(); - glyph._xMin = p2.parseShort(); - glyph._yMin = p2.parseShort(); - glyph._xMax = p2.parseShort(); - glyph._yMax = p2.parseShort(); - var flags; - var flag; - if (glyph.numberOfContours > 0) { - var endPointIndices = glyph.endPointIndices = []; - for (var i = 0; i < glyph.numberOfContours; i += 1) { - endPointIndices.push(p2.parseUShort()); - } - glyph.instructionLength = p2.parseUShort(); - glyph.instructions = []; - for (var i$1 = 0; i$1 < glyph.instructionLength; i$1 += 1) { - glyph.instructions.push(p2.parseByte()); - } - var numberOfCoordinates = endPointIndices[endPointIndices.length - 1] + 1; - flags = []; - for (var i$2 = 0; i$2 < numberOfCoordinates; i$2 += 1) { - flag = p2.parseByte(); - flags.push(flag); - if ((flag & 8) > 0) { - var repeatCount = p2.parseByte(); - for (var j = 0; j < repeatCount; j += 1) { - flags.push(flag); - i$2 += 1; - } - } - } - check.argument(flags.length === numberOfCoordinates, "Bad flags."); - if (endPointIndices.length > 0) { - var points = []; - var point; - if (numberOfCoordinates > 0) { - for (var i$3 = 0; i$3 < numberOfCoordinates; i$3 += 1) { - flag = flags[i$3]; - point = {}; - point.onCurve = !!(flag & 1); - point.lastPointOfContour = endPointIndices.indexOf(i$3) >= 0; - points.push(point); - } - var px = 0; - for (var i$4 = 0; i$4 < numberOfCoordinates; i$4 += 1) { - flag = flags[i$4]; - point = points[i$4]; - point.x = parseGlyphCoordinate(p2, flag, px, 2, 16); - px = point.x; - } - var py = 0; - for (var i$5 = 0; i$5 < numberOfCoordinates; i$5 += 1) { - flag = flags[i$5]; - point = points[i$5]; - point.y = parseGlyphCoordinate(p2, flag, py, 4, 32); - py = point.y; - } - } - glyph.points = points; - } else { - glyph.points = []; - } - } else if (glyph.numberOfContours === 0) { - glyph.points = []; - } else { - glyph.isComposite = true; - glyph.points = []; - glyph.components = []; - var moreComponents = true; - while (moreComponents) { - flags = p2.parseUShort(); - var component = { - glyphIndex: p2.parseUShort(), - xScale: 1, - scale01: 0, - scale10: 0, - yScale: 1, - dx: 0, - dy: 0 - }; - if ((flags & 1) > 0) { - if ((flags & 2) > 0) { - component.dx = p2.parseShort(); - component.dy = p2.parseShort(); - } else { - component.matchedPoints = [p2.parseUShort(), p2.parseUShort()]; - } - } else { - if ((flags & 2) > 0) { - component.dx = p2.parseChar(); - component.dy = p2.parseChar(); - } else { - component.matchedPoints = [p2.parseByte(), p2.parseByte()]; - } - } - if ((flags & 8) > 0) { - component.xScale = component.yScale = p2.parseF2Dot14(); - } else if ((flags & 64) > 0) { - component.xScale = p2.parseF2Dot14(); - component.yScale = p2.parseF2Dot14(); - } else if ((flags & 128) > 0) { - component.xScale = p2.parseF2Dot14(); - component.scale01 = p2.parseF2Dot14(); - component.scale10 = p2.parseF2Dot14(); - component.yScale = p2.parseF2Dot14(); - } - glyph.components.push(component); - moreComponents = !!(flags & 32); - } - if (flags & 256) { - glyph.instructionLength = p2.parseUShort(); - glyph.instructions = []; - for (var i$6 = 0; i$6 < glyph.instructionLength; i$6 += 1) { - glyph.instructions.push(p2.parseByte()); - } - } - } -} -function transformPoints(points, transform2) { - var newPoints = []; - for (var i = 0; i < points.length; i += 1) { - var pt = points[i]; - var newPt = { - x: transform2.xScale * pt.x + transform2.scale01 * pt.y + transform2.dx, - y: transform2.scale10 * pt.x + transform2.yScale * pt.y + transform2.dy, - onCurve: pt.onCurve, - lastPointOfContour: pt.lastPointOfContour - }; - newPoints.push(newPt); - } - return newPoints; -} -function getContours(points) { - var contours = []; - var currentContour = []; - for (var i = 0; i < points.length; i += 1) { - var pt = points[i]; - currentContour.push(pt); - if (pt.lastPointOfContour) { - contours.push(currentContour); - currentContour = []; - } - } - check.argument(currentContour.length === 0, "There are still points left in the current contour."); - return contours; -} -function getPath(points) { - var p2 = new Path2(); - if (!points) { - return p2; - } - var contours = getContours(points); - for (var contourIndex = 0; contourIndex < contours.length; ++contourIndex) { - var contour = contours[contourIndex]; - var prev = null; - var curr = contour[contour.length - 1]; - var next = contour[0]; - if (curr.onCurve) { - p2.moveTo(curr.x, curr.y); - } else { - if (next.onCurve) { - p2.moveTo(next.x, next.y); - } else { - var start = { x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5 }; - p2.moveTo(start.x, start.y); - } - } - for (var i = 0; i < contour.length; ++i) { - prev = curr; - curr = next; - next = contour[(i + 1) % contour.length]; - if (curr.onCurve) { - p2.lineTo(curr.x, curr.y); - } else { - var prev2 = prev; - var next2 = next; - if (!prev.onCurve) { - prev2 = { x: (curr.x + prev.x) * 0.5, y: (curr.y + prev.y) * 0.5 }; - } - if (!next.onCurve) { - next2 = { x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5 }; - } - p2.quadraticCurveTo(curr.x, curr.y, next2.x, next2.y); - } - } - p2.closePath(); - } - return p2; -} -function buildPath(glyphs, glyph) { - if (glyph.isComposite) { - for (var j = 0; j < glyph.components.length; j += 1) { - var component = glyph.components[j]; - var componentGlyph = glyphs.get(component.glyphIndex); - componentGlyph.getPath(); - if (componentGlyph.points) { - var transformedPoints = void 0; - if (component.matchedPoints === void 0) { - transformedPoints = transformPoints(componentGlyph.points, component); - } else { - if (component.matchedPoints[0] > glyph.points.length - 1 || component.matchedPoints[1] > componentGlyph.points.length - 1) { - throw Error("Matched points out of range in " + glyph.name); - } - var firstPt = glyph.points[component.matchedPoints[0]]; - var secondPt = componentGlyph.points[component.matchedPoints[1]]; - var transform2 = { - xScale: component.xScale, - scale01: component.scale01, - scale10: component.scale10, - yScale: component.yScale, - dx: 0, - dy: 0 - }; - secondPt = transformPoints([secondPt], transform2)[0]; - transform2.dx = firstPt.x - secondPt.x; - transform2.dy = firstPt.y - secondPt.y; - transformedPoints = transformPoints(componentGlyph.points, transform2); - } - glyph.points = glyph.points.concat(transformedPoints); - } - } - } - return getPath(glyph.points); -} -function parseGlyfTableAll(data2, start, loca2, font) { - var glyphs = new glyphset.GlyphSet(font); - for (var i = 0; i < loca2.length - 1; i += 1) { - var offset = loca2[i]; - var nextOffset = loca2[i + 1]; - if (offset !== nextOffset) { - glyphs.push(i, glyphset.ttfGlyphLoader(font, i, parseGlyph, data2, start + offset, buildPath)); - } else { - glyphs.push(i, glyphset.glyphLoader(font, i)); - } - } - return glyphs; -} -function parseGlyfTableOnLowMemory(data2, start, loca2, font) { - var glyphs = new glyphset.GlyphSet(font); - font._push = function(i) { - var offset = loca2[i]; - var nextOffset = loca2[i + 1]; - if (offset !== nextOffset) { - glyphs.push(i, glyphset.ttfGlyphLoader(font, i, parseGlyph, data2, start + offset, buildPath)); - } else { - glyphs.push(i, glyphset.glyphLoader(font, i)); - } - }; - return glyphs; -} -function parseGlyfTable(data2, start, loca2, font, opt) { - if (opt.lowMemory) { - return parseGlyfTableOnLowMemory(data2, start, loca2, font); - } else { - return parseGlyfTableAll(data2, start, loca2, font); - } -} -var glyf = { getPath, parse: parseGlyfTable }; -var instructionTable; -var exec; -var execGlyph; -var execComponent; -function Hinting(font) { - this.font = font; - this.getCommands = function(hPoints) { - return glyf.getPath(hPoints).commands; - }; - this._fpgmState = this._prepState = void 0; - this._errorState = 0; -} -function roundOff(v) { - return v; -} -function roundToGrid(v) { - return Math.sign(v) * Math.round(Math.abs(v)); -} -function roundToDoubleGrid(v) { - return Math.sign(v) * Math.round(Math.abs(v * 2)) / 2; -} -function roundToHalfGrid(v) { - return Math.sign(v) * (Math.round(Math.abs(v) + 0.5) - 0.5); -} -function roundUpToGrid(v) { - return Math.sign(v) * Math.ceil(Math.abs(v)); -} -function roundDownToGrid(v) { - return Math.sign(v) * Math.floor(Math.abs(v)); -} -var roundSuper = function(v) { - var period = this.srPeriod; - var phase = this.srPhase; - var threshold = this.srThreshold; - var sign = 1; - if (v < 0) { - v = -v; - sign = -1; - } - v += threshold - phase; - v = Math.trunc(v / period) * period; - v += phase; - if (v < 0) { - return phase * sign; - } - return v * sign; -}; -var xUnitVector = { - x: 1, - y: 0, - axis: "x", - // Gets the projected distance between two points. - // o1/o2 ... if true, respective original position is used. - distance: function(p1, p2, o1, o2) { - return (o1 ? p1.xo : p1.x) - (o2 ? p2.xo : p2.x); - }, - // Moves point p so the moved position has the same relative - // position to the moved positions of rp1 and rp2 than the - // original positions had. - // - // See APPENDIX on INTERPOLATE at the bottom of this file. - interpolate: function(p2, rp1, rp2, pv) { - var do1; - var do2; - var doa1; - var doa2; - var dm1; - var dm2; - var dt2; - if (!pv || pv === this) { - do1 = p2.xo - rp1.xo; - do2 = p2.xo - rp2.xo; - dm1 = rp1.x - rp1.xo; - dm2 = rp2.x - rp2.xo; - doa1 = Math.abs(do1); - doa2 = Math.abs(do2); - dt2 = doa1 + doa2; - if (dt2 === 0) { - p2.x = p2.xo + (dm1 + dm2) / 2; - return; - } - p2.x = p2.xo + (dm1 * doa2 + dm2 * doa1) / dt2; - return; - } - do1 = pv.distance(p2, rp1, true, true); - do2 = pv.distance(p2, rp2, true, true); - dm1 = pv.distance(rp1, rp1, false, true); - dm2 = pv.distance(rp2, rp2, false, true); - doa1 = Math.abs(do1); - doa2 = Math.abs(do2); - dt2 = doa1 + doa2; - if (dt2 === 0) { - xUnitVector.setRelative(p2, p2, (dm1 + dm2) / 2, pv, true); - return; - } - xUnitVector.setRelative(p2, p2, (dm1 * doa2 + dm2 * doa1) / dt2, pv, true); - }, - // Slope of line normal to this - normalSlope: Number.NEGATIVE_INFINITY, - // Sets the point 'p' relative to point 'rp' - // by the distance 'd'. - // - // See APPENDIX on SETRELATIVE at the bottom of this file. - // - // p ... point to set - // rp ... reference point - // d ... distance on projection vector - // pv ... projection vector (undefined = this) - // org ... if true, uses the original position of rp as reference. - setRelative: function(p2, rp, d, pv, org) { - if (!pv || pv === this) { - p2.x = (org ? rp.xo : rp.x) + d; - return; - } - var rpx = org ? rp.xo : rp.x; - var rpy = org ? rp.yo : rp.y; - var rpdx = rpx + d * pv.x; - var rpdy = rpy + d * pv.y; - p2.x = rpdx + (p2.y - rpdy) / pv.normalSlope; - }, - // Slope of vector line. - slope: 0, - // Touches the point p. - touch: function(p2) { - p2.xTouched = true; - }, - // Tests if a point p is touched. - touched: function(p2) { - return p2.xTouched; - }, - // Untouches the point p. - untouch: function(p2) { - p2.xTouched = false; - } -}; -var yUnitVector = { - x: 0, - y: 1, - axis: "y", - // Gets the projected distance between two points. - // o1/o2 ... if true, respective original position is used. - distance: function(p1, p2, o1, o2) { - return (o1 ? p1.yo : p1.y) - (o2 ? p2.yo : p2.y); - }, - // Moves point p so the moved position has the same relative - // position to the moved positions of rp1 and rp2 than the - // original positions had. - // - // See APPENDIX on INTERPOLATE at the bottom of this file. - interpolate: function(p2, rp1, rp2, pv) { - var do1; - var do2; - var doa1; - var doa2; - var dm1; - var dm2; - var dt2; - if (!pv || pv === this) { - do1 = p2.yo - rp1.yo; - do2 = p2.yo - rp2.yo; - dm1 = rp1.y - rp1.yo; - dm2 = rp2.y - rp2.yo; - doa1 = Math.abs(do1); - doa2 = Math.abs(do2); - dt2 = doa1 + doa2; - if (dt2 === 0) { - p2.y = p2.yo + (dm1 + dm2) / 2; - return; - } - p2.y = p2.yo + (dm1 * doa2 + dm2 * doa1) / dt2; - return; - } - do1 = pv.distance(p2, rp1, true, true); - do2 = pv.distance(p2, rp2, true, true); - dm1 = pv.distance(rp1, rp1, false, true); - dm2 = pv.distance(rp2, rp2, false, true); - doa1 = Math.abs(do1); - doa2 = Math.abs(do2); - dt2 = doa1 + doa2; - if (dt2 === 0) { - yUnitVector.setRelative(p2, p2, (dm1 + dm2) / 2, pv, true); - return; - } - yUnitVector.setRelative(p2, p2, (dm1 * doa2 + dm2 * doa1) / dt2, pv, true); - }, - // Slope of line normal to this. - normalSlope: 0, - // Sets the point 'p' relative to point 'rp' - // by the distance 'd' - // - // See APPENDIX on SETRELATIVE at the bottom of this file. - // - // p ... point to set - // rp ... reference point - // d ... distance on projection vector - // pv ... projection vector (undefined = this) - // org ... if true, uses the original position of rp as reference. - setRelative: function(p2, rp, d, pv, org) { - if (!pv || pv === this) { - p2.y = (org ? rp.yo : rp.y) + d; - return; - } - var rpx = org ? rp.xo : rp.x; - var rpy = org ? rp.yo : rp.y; - var rpdx = rpx + d * pv.x; - var rpdy = rpy + d * pv.y; - p2.y = rpdy + pv.normalSlope * (p2.x - rpdx); - }, - // Slope of vector line. - slope: Number.POSITIVE_INFINITY, - // Touches the point p. - touch: function(p2) { - p2.yTouched = true; - }, - // Tests if a point p is touched. - touched: function(p2) { - return p2.yTouched; - }, - // Untouches the point p. - untouch: function(p2) { - p2.yTouched = false; - } -}; -Object.freeze(xUnitVector); -Object.freeze(yUnitVector); -function UnitVector(x2, y2) { - this.x = x2; - this.y = y2; - this.axis = void 0; - this.slope = y2 / x2; - this.normalSlope = -x2 / y2; - Object.freeze(this); -} -UnitVector.prototype.distance = function(p1, p2, o1, o2) { - return this.x * xUnitVector.distance(p1, p2, o1, o2) + this.y * yUnitVector.distance(p1, p2, o1, o2); -}; -UnitVector.prototype.interpolate = function(p2, rp1, rp2, pv) { - var dm1; - var dm2; - var do1; - var do2; - var doa1; - var doa2; - var dt2; - do1 = pv.distance(p2, rp1, true, true); - do2 = pv.distance(p2, rp2, true, true); - dm1 = pv.distance(rp1, rp1, false, true); - dm2 = pv.distance(rp2, rp2, false, true); - doa1 = Math.abs(do1); - doa2 = Math.abs(do2); - dt2 = doa1 + doa2; - if (dt2 === 0) { - this.setRelative(p2, p2, (dm1 + dm2) / 2, pv, true); - return; - } - this.setRelative(p2, p2, (dm1 * doa2 + dm2 * doa1) / dt2, pv, true); -}; -UnitVector.prototype.setRelative = function(p2, rp, d, pv, org) { - pv = pv || this; - var rpx = org ? rp.xo : rp.x; - var rpy = org ? rp.yo : rp.y; - var rpdx = rpx + d * pv.x; - var rpdy = rpy + d * pv.y; - var pvns = pv.normalSlope; - var fvs = this.slope; - var px = p2.x; - var py = p2.y; - p2.x = (fvs * px - pvns * rpdx + rpdy - py) / (fvs - pvns); - p2.y = fvs * (p2.x - px) + py; -}; -UnitVector.prototype.touch = function(p2) { - p2.xTouched = true; - p2.yTouched = true; -}; -function getUnitVector(x2, y2) { - var d = Math.sqrt(x2 * x2 + y2 * y2); - x2 /= d; - y2 /= d; - if (x2 === 1 && y2 === 0) { - return xUnitVector; - } else if (x2 === 0 && y2 === 1) { - return yUnitVector; - } else { - return new UnitVector(x2, y2); - } -} -function HPoint(x2, y2, lastPointOfContour, onCurve) { - this.x = this.xo = Math.round(x2 * 64) / 64; - this.y = this.yo = Math.round(y2 * 64) / 64; - this.lastPointOfContour = lastPointOfContour; - this.onCurve = onCurve; - this.prevPointOnContour = void 0; - this.nextPointOnContour = void 0; - this.xTouched = false; - this.yTouched = false; - Object.preventExtensions(this); -} -HPoint.prototype.nextTouched = function(v) { - var p2 = this.nextPointOnContour; - while (!v.touched(p2) && p2 !== this) { - p2 = p2.nextPointOnContour; - } - return p2; -}; -HPoint.prototype.prevTouched = function(v) { - var p2 = this.prevPointOnContour; - while (!v.touched(p2) && p2 !== this) { - p2 = p2.prevPointOnContour; - } - return p2; -}; -var HPZero = Object.freeze(new HPoint(0, 0)); -var defaultState = { - cvCutIn: 17 / 16, - // control value cut in - deltaBase: 9, - deltaShift: 0.125, - loop: 1, - // loops some instructions - minDis: 1, - // minimum distance - autoFlip: true -}; -function State(env, prog) { - this.env = env; - this.stack = []; - this.prog = prog; - switch (env) { - case "glyf": - this.zp0 = this.zp1 = this.zp2 = 1; - this.rp0 = this.rp1 = this.rp2 = 0; - case "prep": - this.fv = this.pv = this.dpv = xUnitVector; - this.round = roundToGrid; - } -} -Hinting.prototype.exec = function(glyph, ppem) { - if (typeof ppem !== "number") { - throw new Error("Point size is not a number!"); - } - if (this._errorState > 2) { - return; - } - var font = this.font; - var prepState = this._prepState; - if (!prepState || prepState.ppem !== ppem) { - var fpgmState = this._fpgmState; - if (!fpgmState) { - State.prototype = defaultState; - fpgmState = this._fpgmState = new State("fpgm", font.tables.fpgm); - fpgmState.funcs = []; - fpgmState.font = font; - if (exports.DEBUG) { - console.log("---EXEC FPGM---"); - fpgmState.step = -1; - } - try { - exec(fpgmState); - } catch (e) { - console.log("Hinting error in FPGM:" + e); - this._errorState = 3; - return; - } - } - State.prototype = fpgmState; - prepState = this._prepState = new State("prep", font.tables.prep); - prepState.ppem = ppem; - var oCvt = font.tables.cvt; - if (oCvt) { - var cvt = prepState.cvt = new Array(oCvt.length); - var scale2 = ppem / font.unitsPerEm; - for (var c2 = 0; c2 < oCvt.length; c2++) { - cvt[c2] = oCvt[c2] * scale2; - } - } else { - prepState.cvt = []; - } - if (exports.DEBUG) { - console.log("---EXEC PREP---"); - prepState.step = -1; - } - try { - exec(prepState); - } catch (e) { - if (this._errorState < 2) { - console.log("Hinting error in PREP:" + e); - } - this._errorState = 2; - } - } - if (this._errorState > 1) { - return; - } - try { - return execGlyph(glyph, prepState); - } catch (e) { - if (this._errorState < 1) { - console.log("Hinting error:" + e); - console.log("Note: further hinting errors are silenced"); - } - this._errorState = 1; - return void 0; - } -}; -execGlyph = function(glyph, prepState) { - var xScale = prepState.ppem / prepState.font.unitsPerEm; - var yScale = xScale; - var components = glyph.components; - var contours; - var gZone; - var state; - State.prototype = prepState; - if (!components) { - state = new State("glyf", glyph.instructions); - if (exports.DEBUG) { - console.log("---EXEC GLYPH---"); - state.step = -1; - } - execComponent(glyph, state, xScale, yScale); - gZone = state.gZone; - } else { - var font = prepState.font; - gZone = []; - contours = []; - for (var i = 0; i < components.length; i++) { - var c2 = components[i]; - var cg = font.glyphs.get(c2.glyphIndex); - state = new State("glyf", cg.instructions); - if (exports.DEBUG) { - console.log("---EXEC COMP " + i + "---"); - state.step = -1; - } - execComponent(cg, state, xScale, yScale); - var dx = Math.round(c2.dx * xScale); - var dy = Math.round(c2.dy * yScale); - var gz = state.gZone; - var cc = state.contours; - for (var pi2 = 0; pi2 < gz.length; pi2++) { - var p2 = gz[pi2]; - p2.xTouched = p2.yTouched = false; - p2.xo = p2.x = p2.x + dx; - p2.yo = p2.y = p2.y + dy; - } - var gLen = gZone.length; - gZone.push.apply(gZone, gz); - for (var j = 0; j < cc.length; j++) { - contours.push(cc[j] + gLen); - } - } - if (glyph.instructions && !state.inhibitGridFit) { - state = new State("glyf", glyph.instructions); - state.gZone = state.z0 = state.z1 = state.z2 = gZone; - state.contours = contours; - gZone.push( - new HPoint(0, 0), - new HPoint(Math.round(glyph.advanceWidth * xScale), 0) - ); - if (exports.DEBUG) { - console.log("---EXEC COMPOSITE---"); - state.step = -1; - } - exec(state); - gZone.length -= 2; - } - } - return gZone; -}; -execComponent = function(glyph, state, xScale, yScale) { - var points = glyph.points || []; - var pLen = points.length; - var gZone = state.gZone = state.z0 = state.z1 = state.z2 = []; - var contours = state.contours = []; - var cp; - for (var i = 0; i < pLen; i++) { - cp = points[i]; - gZone[i] = new HPoint( - cp.x * xScale, - cp.y * yScale, - cp.lastPointOfContour, - cp.onCurve - ); - } - var sp; - var np; - for (var i$1 = 0; i$1 < pLen; i$1++) { - cp = gZone[i$1]; - if (!sp) { - sp = cp; - contours.push(i$1); - } - if (cp.lastPointOfContour) { - cp.nextPointOnContour = sp; - sp.prevPointOnContour = cp; - sp = void 0; - } else { - np = gZone[i$1 + 1]; - cp.nextPointOnContour = np; - np.prevPointOnContour = cp; - } - } - if (state.inhibitGridFit) { - return; - } - if (exports.DEBUG) { - console.log("PROCESSING GLYPH", state.stack); - for (var i$2 = 0; i$2 < pLen; i$2++) { - console.log(i$2, gZone[i$2].x, gZone[i$2].y); - } - } - gZone.push( - new HPoint(0, 0), - new HPoint(Math.round(glyph.advanceWidth * xScale), 0) - ); - exec(state); - gZone.length -= 2; - if (exports.DEBUG) { - console.log("FINISHED GLYPH", state.stack); - for (var i$3 = 0; i$3 < pLen; i$3++) { - console.log(i$3, gZone[i$3].x, gZone[i$3].y); - } - } -}; -exec = function(state) { - var prog = state.prog; - if (!prog) { - return; - } - var pLen = prog.length; - var ins; - for (state.ip = 0; state.ip < pLen; state.ip++) { - if (exports.DEBUG) { - state.step++; - } - ins = instructionTable[prog[state.ip]]; - if (!ins) { - throw new Error( - "unknown instruction: 0x" + Number(prog[state.ip]).toString(16) - ); - } - ins(state); - } -}; -function initTZone(state) { - var tZone = state.tZone = new Array(state.gZone.length); - for (var i = 0; i < tZone.length; i++) { - tZone[i] = new HPoint(0, 0); - } -} -function skip(state, handleElse) { - var prog = state.prog; - var ip = state.ip; - var nesting = 1; - var ins; - do { - ins = prog[++ip]; - if (ins === 88) { - nesting++; - } else if (ins === 89) { - nesting--; - } else if (ins === 64) { - ip += prog[ip + 1] + 1; - } else if (ins === 65) { - ip += 2 * prog[ip + 1] + 1; - } else if (ins >= 176 && ins <= 183) { - ip += ins - 176 + 1; - } else if (ins >= 184 && ins <= 191) { - ip += (ins - 184 + 1) * 2; - } else if (handleElse && nesting === 1 && ins === 27) { - break; - } - } while (nesting > 0); - state.ip = ip; -} -function SVTCA(v, state) { - if (exports.DEBUG) { - console.log(state.step, "SVTCA[" + v.axis + "]"); - } - state.fv = state.pv = state.dpv = v; -} -function SPVTCA(v, state) { - if (exports.DEBUG) { - console.log(state.step, "SPVTCA[" + v.axis + "]"); - } - state.pv = state.dpv = v; -} -function SFVTCA(v, state) { - if (exports.DEBUG) { - console.log(state.step, "SFVTCA[" + v.axis + "]"); - } - state.fv = v; -} -function SPVTL(a2, state) { - var stack = state.stack; - var p2i = stack.pop(); - var p1i = stack.pop(); - var p2 = state.z2[p2i]; - var p1 = state.z1[p1i]; - if (exports.DEBUG) { - console.log("SPVTL[" + a2 + "]", p2i, p1i); - } - var dx; - var dy; - if (!a2) { - dx = p1.x - p2.x; - dy = p1.y - p2.y; - } else { - dx = p2.y - p1.y; - dy = p1.x - p2.x; - } - state.pv = state.dpv = getUnitVector(dx, dy); -} -function SFVTL(a2, state) { - var stack = state.stack; - var p2i = stack.pop(); - var p1i = stack.pop(); - var p2 = state.z2[p2i]; - var p1 = state.z1[p1i]; - if (exports.DEBUG) { - console.log("SFVTL[" + a2 + "]", p2i, p1i); - } - var dx; - var dy; - if (!a2) { - dx = p1.x - p2.x; - dy = p1.y - p2.y; - } else { - dx = p2.y - p1.y; - dy = p1.x - p2.x; - } - state.fv = getUnitVector(dx, dy); -} -function SPVFS(state) { - var stack = state.stack; - var y2 = stack.pop(); - var x2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SPVFS[]", y2, x2); - } - state.pv = state.dpv = getUnitVector(x2, y2); -} -function SFVFS(state) { - var stack = state.stack; - var y2 = stack.pop(); - var x2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SPVFS[]", y2, x2); - } - state.fv = getUnitVector(x2, y2); -} -function GPV(state) { - var stack = state.stack; - var pv = state.pv; - if (exports.DEBUG) { - console.log(state.step, "GPV[]"); - } - stack.push(pv.x * 16384); - stack.push(pv.y * 16384); -} -function GFV(state) { - var stack = state.stack; - var fv = state.fv; - if (exports.DEBUG) { - console.log(state.step, "GFV[]"); - } - stack.push(fv.x * 16384); - stack.push(fv.y * 16384); -} -function SFVTPV(state) { - state.fv = state.pv; - if (exports.DEBUG) { - console.log(state.step, "SFVTPV[]"); - } -} -function ISECT(state) { - var stack = state.stack; - var pa0i = stack.pop(); - var pa1i = stack.pop(); - var pb0i = stack.pop(); - var pb1i = stack.pop(); - var pi2 = stack.pop(); - var z0 = state.z0; - var z1 = state.z1; - var pa0 = z0[pa0i]; - var pa1 = z0[pa1i]; - var pb0 = z1[pb0i]; - var pb1 = z1[pb1i]; - var p2 = state.z2[pi2]; - if (exports.DEBUG) { - console.log("ISECT[], ", pa0i, pa1i, pb0i, pb1i, pi2); - } - var x1 = pa0.x; - var y1 = pa0.y; - var x2 = pa1.x; - var y2 = pa1.y; - var x3 = pb0.x; - var y3 = pb0.y; - var x4 = pb1.x; - var y4 = pb1.y; - var div2 = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4); - var f1 = x1 * y2 - y1 * x2; - var f2 = x3 * y4 - y3 * x4; - p2.x = (f1 * (x3 - x4) - f2 * (x1 - x2)) / div2; - p2.y = (f1 * (y3 - y4) - f2 * (y1 - y2)) / div2; -} -function SRP0(state) { - state.rp0 = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SRP0[]", state.rp0); - } -} -function SRP1(state) { - state.rp1 = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SRP1[]", state.rp1); - } -} -function SRP2(state) { - state.rp2 = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SRP2[]", state.rp2); - } -} -function SZP0(state) { - var n2 = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SZP0[]", n2); - } - state.zp0 = n2; - switch (n2) { - case 0: - if (!state.tZone) { - initTZone(state); - } - state.z0 = state.tZone; - break; - case 1: - state.z0 = state.gZone; - break; - default: - throw new Error("Invalid zone pointer"); - } -} -function SZP1(state) { - var n2 = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SZP1[]", n2); - } - state.zp1 = n2; - switch (n2) { - case 0: - if (!state.tZone) { - initTZone(state); - } - state.z1 = state.tZone; - break; - case 1: - state.z1 = state.gZone; - break; - default: - throw new Error("Invalid zone pointer"); - } -} -function SZP2(state) { - var n2 = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SZP2[]", n2); - } - state.zp2 = n2; - switch (n2) { - case 0: - if (!state.tZone) { - initTZone(state); - } - state.z2 = state.tZone; - break; - case 1: - state.z2 = state.gZone; - break; - default: - throw new Error("Invalid zone pointer"); - } -} -function SZPS(state) { - var n2 = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SZPS[]", n2); - } - state.zp0 = state.zp1 = state.zp2 = n2; - switch (n2) { - case 0: - if (!state.tZone) { - initTZone(state); - } - state.z0 = state.z1 = state.z2 = state.tZone; - break; - case 1: - state.z0 = state.z1 = state.z2 = state.gZone; - break; - default: - throw new Error("Invalid zone pointer"); - } -} -function SLOOP(state) { - state.loop = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SLOOP[]", state.loop); - } -} -function RTG(state) { - if (exports.DEBUG) { - console.log(state.step, "RTG[]"); - } - state.round = roundToGrid; -} -function RTHG(state) { - if (exports.DEBUG) { - console.log(state.step, "RTHG[]"); - } - state.round = roundToHalfGrid; -} -function SMD(state) { - var d = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SMD[]", d); - } - state.minDis = d / 64; -} -function ELSE(state) { - if (exports.DEBUG) { - console.log(state.step, "ELSE[]"); - } - skip(state, false); -} -function JMPR(state) { - var o = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "JMPR[]", o); - } - state.ip += o - 1; -} -function SCVTCI(state) { - var n2 = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SCVTCI[]", n2); - } - state.cvCutIn = n2 / 64; -} -function DUP(state) { - var stack = state.stack; - if (exports.DEBUG) { - console.log(state.step, "DUP[]"); - } - stack.push(stack[stack.length - 1]); -} -function POP(state) { - if (exports.DEBUG) { - console.log(state.step, "POP[]"); - } - state.stack.pop(); -} -function CLEAR(state) { - if (exports.DEBUG) { - console.log(state.step, "CLEAR[]"); - } - state.stack.length = 0; -} -function SWAP(state) { - var stack = state.stack; - var a2 = stack.pop(); - var b3 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SWAP[]"); - } - stack.push(a2); - stack.push(b3); -} -function DEPTH(state) { - var stack = state.stack; - if (exports.DEBUG) { - console.log(state.step, "DEPTH[]"); - } - stack.push(stack.length); -} -function LOOPCALL(state) { - var stack = state.stack; - var fn = stack.pop(); - var c2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "LOOPCALL[]", fn, c2); - } - var cip = state.ip; - var cprog = state.prog; - state.prog = state.funcs[fn]; - for (var i = 0; i < c2; i++) { - exec(state); - if (exports.DEBUG) { - console.log( - ++state.step, - i + 1 < c2 ? "next loopcall" : "done loopcall", - i - ); - } - } - state.ip = cip; - state.prog = cprog; -} -function CALL(state) { - var fn = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "CALL[]", fn); - } - var cip = state.ip; - var cprog = state.prog; - state.prog = state.funcs[fn]; - exec(state); - state.ip = cip; - state.prog = cprog; - if (exports.DEBUG) { - console.log(++state.step, "returning from", fn); - } -} -function CINDEX(state) { - var stack = state.stack; - var k2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "CINDEX[]", k2); - } - stack.push(stack[stack.length - k2]); -} -function MINDEX(state) { - var stack = state.stack; - var k2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "MINDEX[]", k2); - } - stack.push(stack.splice(stack.length - k2, 1)[0]); -} -function FDEF(state) { - if (state.env !== "fpgm") { - throw new Error("FDEF not allowed here"); - } - var stack = state.stack; - var prog = state.prog; - var ip = state.ip; - var fn = stack.pop(); - var ipBegin = ip; - if (exports.DEBUG) { - console.log(state.step, "FDEF[]", fn); - } - while (prog[++ip] !== 45) { - } - state.ip = ip; - state.funcs[fn] = prog.slice(ipBegin + 1, ip); -} -function MDAP(round, state) { - var pi2 = state.stack.pop(); - var p2 = state.z0[pi2]; - var fv = state.fv; - var pv = state.pv; - if (exports.DEBUG) { - console.log(state.step, "MDAP[" + round + "]", pi2); - } - var d = pv.distance(p2, HPZero); - if (round) { - d = state.round(d); - } - fv.setRelative(p2, HPZero, d, pv); - fv.touch(p2); - state.rp0 = state.rp1 = pi2; -} -function IUP(v, state) { - var z2 = state.z2; - var pLen = z2.length - 2; - var cp; - var pp; - var np; - if (exports.DEBUG) { - console.log(state.step, "IUP[" + v.axis + "]"); - } - for (var i = 0; i < pLen; i++) { - cp = z2[i]; - if (v.touched(cp)) { - continue; - } - pp = cp.prevTouched(v); - if (pp === cp) { - continue; - } - np = cp.nextTouched(v); - if (pp === np) { - v.setRelative(cp, cp, v.distance(pp, pp, false, true), v, true); - } - v.interpolate(cp, pp, np, v); - } -} -function SHP(a2, state) { - var stack = state.stack; - var rpi = a2 ? state.rp1 : state.rp2; - var rp = (a2 ? state.z0 : state.z1)[rpi]; - var fv = state.fv; - var pv = state.pv; - var loop = state.loop; - var z2 = state.z2; - while (loop--) { - var pi2 = stack.pop(); - var p2 = z2[pi2]; - var d = pv.distance(rp, rp, false, true); - fv.setRelative(p2, p2, d, pv); - fv.touch(p2); - if (exports.DEBUG) { - console.log( - state.step, - (state.loop > 1 ? "loop " + (state.loop - loop) + ": " : "") + "SHP[" + (a2 ? "rp1" : "rp2") + "]", - pi2 - ); - } - } - state.loop = 1; -} -function SHC(a2, state) { - var stack = state.stack; - var rpi = a2 ? state.rp1 : state.rp2; - var rp = (a2 ? state.z0 : state.z1)[rpi]; - var fv = state.fv; - var pv = state.pv; - var ci = stack.pop(); - var sp = state.z2[state.contours[ci]]; - var p2 = sp; - if (exports.DEBUG) { - console.log(state.step, "SHC[" + a2 + "]", ci); - } - var d = pv.distance(rp, rp, false, true); - do { - if (p2 !== rp) { - fv.setRelative(p2, p2, d, pv); - } - p2 = p2.nextPointOnContour; - } while (p2 !== sp); -} -function SHZ(a2, state) { - var stack = state.stack; - var rpi = a2 ? state.rp1 : state.rp2; - var rp = (a2 ? state.z0 : state.z1)[rpi]; - var fv = state.fv; - var pv = state.pv; - var e = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SHZ[" + a2 + "]", e); - } - var z; - switch (e) { - case 0: - z = state.tZone; - break; - case 1: - z = state.gZone; - break; - default: - throw new Error("Invalid zone"); - } - var p2; - var d = pv.distance(rp, rp, false, true); - var pLen = z.length - 2; - for (var i = 0; i < pLen; i++) { - p2 = z[i]; - fv.setRelative(p2, p2, d, pv); - } -} -function SHPIX(state) { - var stack = state.stack; - var loop = state.loop; - var fv = state.fv; - var d = stack.pop() / 64; - var z2 = state.z2; - while (loop--) { - var pi2 = stack.pop(); - var p2 = z2[pi2]; - if (exports.DEBUG) { - console.log( - state.step, - (state.loop > 1 ? "loop " + (state.loop - loop) + ": " : "") + "SHPIX[]", - pi2, - d - ); - } - fv.setRelative(p2, p2, d); - fv.touch(p2); - } - state.loop = 1; -} -function IP(state) { - var stack = state.stack; - var rp1i = state.rp1; - var rp2i = state.rp2; - var loop = state.loop; - var rp1 = state.z0[rp1i]; - var rp2 = state.z1[rp2i]; - var fv = state.fv; - var pv = state.dpv; - var z2 = state.z2; - while (loop--) { - var pi2 = stack.pop(); - var p2 = z2[pi2]; - if (exports.DEBUG) { - console.log( - state.step, - (state.loop > 1 ? "loop " + (state.loop - loop) + ": " : "") + "IP[]", - pi2, - rp1i, - "<->", - rp2i - ); - } - fv.interpolate(p2, rp1, rp2, pv); - fv.touch(p2); - } - state.loop = 1; -} -function MSIRP(a2, state) { - var stack = state.stack; - var d = stack.pop() / 64; - var pi2 = stack.pop(); - var p2 = state.z1[pi2]; - var rp0 = state.z0[state.rp0]; - var fv = state.fv; - var pv = state.pv; - fv.setRelative(p2, rp0, d, pv); - fv.touch(p2); - if (exports.DEBUG) { - console.log(state.step, "MSIRP[" + a2 + "]", d, pi2); - } - state.rp1 = state.rp0; - state.rp2 = pi2; - if (a2) { - state.rp0 = pi2; - } -} -function ALIGNRP(state) { - var stack = state.stack; - var rp0i = state.rp0; - var rp0 = state.z0[rp0i]; - var loop = state.loop; - var fv = state.fv; - var pv = state.pv; - var z1 = state.z1; - while (loop--) { - var pi2 = stack.pop(); - var p2 = z1[pi2]; - if (exports.DEBUG) { - console.log( - state.step, - (state.loop > 1 ? "loop " + (state.loop - loop) + ": " : "") + "ALIGNRP[]", - pi2 - ); - } - fv.setRelative(p2, rp0, 0, pv); - fv.touch(p2); - } - state.loop = 1; -} -function RTDG(state) { - if (exports.DEBUG) { - console.log(state.step, "RTDG[]"); - } - state.round = roundToDoubleGrid; -} -function MIAP(round, state) { - var stack = state.stack; - var n2 = stack.pop(); - var pi2 = stack.pop(); - var p2 = state.z0[pi2]; - var fv = state.fv; - var pv = state.pv; - var cv = state.cvt[n2]; - if (exports.DEBUG) { - console.log( - state.step, - "MIAP[" + round + "]", - n2, - "(", - cv, - ")", - pi2 - ); - } - var d = pv.distance(p2, HPZero); - if (round) { - if (Math.abs(d - cv) < state.cvCutIn) { - d = cv; - } - d = state.round(d); - } - fv.setRelative(p2, HPZero, d, pv); - if (state.zp0 === 0) { - p2.xo = p2.x; - p2.yo = p2.y; - } - fv.touch(p2); - state.rp0 = state.rp1 = pi2; -} -function NPUSHB(state) { - var prog = state.prog; - var ip = state.ip; - var stack = state.stack; - var n2 = prog[++ip]; - if (exports.DEBUG) { - console.log(state.step, "NPUSHB[]", n2); - } - for (var i = 0; i < n2; i++) { - stack.push(prog[++ip]); - } - state.ip = ip; -} -function NPUSHW(state) { - var ip = state.ip; - var prog = state.prog; - var stack = state.stack; - var n2 = prog[++ip]; - if (exports.DEBUG) { - console.log(state.step, "NPUSHW[]", n2); - } - for (var i = 0; i < n2; i++) { - var w = prog[++ip] << 8 | prog[++ip]; - if (w & 32768) { - w = -((w ^ 65535) + 1); - } - stack.push(w); - } - state.ip = ip; -} -function WS(state) { - var stack = state.stack; - var store = state.store; - if (!store) { - store = state.store = []; - } - var v = stack.pop(); - var l2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "WS", v, l2); - } - store[l2] = v; -} -function RS(state) { - var stack = state.stack; - var store = state.store; - var l2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "RS", l2); - } - var v = store && store[l2] || 0; - stack.push(v); -} -function WCVTP(state) { - var stack = state.stack; - var v = stack.pop(); - var l2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "WCVTP", v, l2); - } - state.cvt[l2] = v / 64; -} -function RCVT(state) { - var stack = state.stack; - var cvte = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "RCVT", cvte); - } - stack.push(state.cvt[cvte] * 64); -} -function GC(a2, state) { - var stack = state.stack; - var pi2 = stack.pop(); - var p2 = state.z2[pi2]; - if (exports.DEBUG) { - console.log(state.step, "GC[" + a2 + "]", pi2); - } - stack.push(state.dpv.distance(p2, HPZero, a2, false) * 64); -} -function MD(a2, state) { - var stack = state.stack; - var pi2 = stack.pop(); - var pi1 = stack.pop(); - var p2 = state.z1[pi2]; - var p1 = state.z0[pi1]; - var d = state.dpv.distance(p1, p2, a2, a2); - if (exports.DEBUG) { - console.log(state.step, "MD[" + a2 + "]", pi2, pi1, "->", d); - } - state.stack.push(Math.round(d * 64)); -} -function MPPEM(state) { - if (exports.DEBUG) { - console.log(state.step, "MPPEM[]"); - } - state.stack.push(state.ppem); -} -function FLIPON(state) { - if (exports.DEBUG) { - console.log(state.step, "FLIPON[]"); - } - state.autoFlip = true; -} -function LT(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "LT[]", e2, e1); - } - stack.push(e1 < e2 ? 1 : 0); -} -function LTEQ(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "LTEQ[]", e2, e1); - } - stack.push(e1 <= e2 ? 1 : 0); -} -function GT(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "GT[]", e2, e1); - } - stack.push(e1 > e2 ? 1 : 0); -} -function GTEQ(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "GTEQ[]", e2, e1); - } - stack.push(e1 >= e2 ? 1 : 0); -} -function EQ(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "EQ[]", e2, e1); - } - stack.push(e2 === e1 ? 1 : 0); -} -function NEQ(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "NEQ[]", e2, e1); - } - stack.push(e2 !== e1 ? 1 : 0); -} -function ODD(state) { - var stack = state.stack; - var n2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "ODD[]", n2); - } - stack.push(Math.trunc(n2) % 2 ? 1 : 0); -} -function EVEN(state) { - var stack = state.stack; - var n2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "EVEN[]", n2); - } - stack.push(Math.trunc(n2) % 2 ? 0 : 1); -} -function IF(state) { - var test = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "IF[]", test); - } - if (!test) { - skip(state, true); - if (exports.DEBUG) { - console.log(state.step, "EIF[]"); - } - } -} -function EIF(state) { - if (exports.DEBUG) { - console.log(state.step, "EIF[]"); - } -} -function AND(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "AND[]", e2, e1); - } - stack.push(e2 && e1 ? 1 : 0); -} -function OR(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "OR[]", e2, e1); - } - stack.push(e2 || e1 ? 1 : 0); -} -function NOT(state) { - var stack = state.stack; - var e = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "NOT[]", e); - } - stack.push(e ? 0 : 1); -} -function DELTAP123(b3, state) { - var stack = state.stack; - var n2 = stack.pop(); - var fv = state.fv; - var pv = state.pv; - var ppem = state.ppem; - var base = state.deltaBase + (b3 - 1) * 16; - var ds = state.deltaShift; - var z0 = state.z0; - if (exports.DEBUG) { - console.log(state.step, "DELTAP[" + b3 + "]", n2, stack); - } - for (var i = 0; i < n2; i++) { - var pi2 = stack.pop(); - var arg = stack.pop(); - var appem = base + ((arg & 240) >> 4); - if (appem !== ppem) { - continue; - } - var mag = (arg & 15) - 8; - if (mag >= 0) { - mag++; - } - if (exports.DEBUG) { - console.log(state.step, "DELTAPFIX", pi2, "by", mag * ds); - } - var p2 = z0[pi2]; - fv.setRelative(p2, p2, mag * ds, pv); - } -} -function SDB(state) { - var stack = state.stack; - var n2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SDB[]", n2); - } - state.deltaBase = n2; -} -function SDS(state) { - var stack = state.stack; - var n2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SDS[]", n2); - } - state.deltaShift = Math.pow(0.5, n2); -} -function ADD(state) { - var stack = state.stack; - var n2 = stack.pop(); - var n1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "ADD[]", n2, n1); - } - stack.push(n1 + n2); -} -function SUB(state) { - var stack = state.stack; - var n2 = stack.pop(); - var n1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SUB[]", n2, n1); - } - stack.push(n1 - n2); -} -function DIV(state) { - var stack = state.stack; - var n2 = stack.pop(); - var n1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "DIV[]", n2, n1); - } - stack.push(n1 * 64 / n2); -} -function MUL(state) { - var stack = state.stack; - var n2 = stack.pop(); - var n1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "MUL[]", n2, n1); - } - stack.push(n1 * n2 / 64); -} -function ABS(state) { - var stack = state.stack; - var n2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "ABS[]", n2); - } - stack.push(Math.abs(n2)); -} -function NEG(state) { - var stack = state.stack; - var n2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "NEG[]", n2); - } - stack.push(-n2); -} -function FLOOR(state) { - var stack = state.stack; - var n2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "FLOOR[]", n2); - } - stack.push(Math.floor(n2 / 64) * 64); -} -function CEILING(state) { - var stack = state.stack; - var n2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "CEILING[]", n2); - } - stack.push(Math.ceil(n2 / 64) * 64); -} -function ROUND(dt2, state) { - var stack = state.stack; - var n2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "ROUND[]"); - } - stack.push(state.round(n2 / 64) * 64); -} -function WCVTF(state) { - var stack = state.stack; - var v = stack.pop(); - var l2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "WCVTF[]", v, l2); - } - state.cvt[l2] = v * state.ppem / state.font.unitsPerEm; -} -function DELTAC123(b3, state) { - var stack = state.stack; - var n2 = stack.pop(); - var ppem = state.ppem; - var base = state.deltaBase + (b3 - 1) * 16; - var ds = state.deltaShift; - if (exports.DEBUG) { - console.log(state.step, "DELTAC[" + b3 + "]", n2, stack); - } - for (var i = 0; i < n2; i++) { - var c2 = stack.pop(); - var arg = stack.pop(); - var appem = base + ((arg & 240) >> 4); - if (appem !== ppem) { - continue; - } - var mag = (arg & 15) - 8; - if (mag >= 0) { - mag++; - } - var delta = mag * ds; - if (exports.DEBUG) { - console.log(state.step, "DELTACFIX", c2, "by", delta); - } - state.cvt[c2] += delta; - } -} -function SROUND(state) { - var n2 = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SROUND[]", n2); - } - state.round = roundSuper; - var period; - switch (n2 & 192) { - case 0: - period = 0.5; - break; - case 64: - period = 1; - break; - case 128: - period = 2; - break; - default: - throw new Error("invalid SROUND value"); - } - state.srPeriod = period; - switch (n2 & 48) { - case 0: - state.srPhase = 0; - break; - case 16: - state.srPhase = 0.25 * period; - break; - case 32: - state.srPhase = 0.5 * period; - break; - case 48: - state.srPhase = 0.75 * period; - break; - default: - throw new Error("invalid SROUND value"); - } - n2 &= 15; - if (n2 === 0) { - state.srThreshold = 0; - } else { - state.srThreshold = (n2 / 8 - 0.5) * period; - } -} -function S45ROUND(state) { - var n2 = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "S45ROUND[]", n2); - } - state.round = roundSuper; - var period; - switch (n2 & 192) { - case 0: - period = Math.sqrt(2) / 2; - break; - case 64: - period = Math.sqrt(2); - break; - case 128: - period = 2 * Math.sqrt(2); - break; - default: - throw new Error("invalid S45ROUND value"); - } - state.srPeriod = period; - switch (n2 & 48) { - case 0: - state.srPhase = 0; - break; - case 16: - state.srPhase = 0.25 * period; - break; - case 32: - state.srPhase = 0.5 * period; - break; - case 48: - state.srPhase = 0.75 * period; - break; - default: - throw new Error("invalid S45ROUND value"); - } - n2 &= 15; - if (n2 === 0) { - state.srThreshold = 0; - } else { - state.srThreshold = (n2 / 8 - 0.5) * period; - } -} -function ROFF(state) { - if (exports.DEBUG) { - console.log(state.step, "ROFF[]"); - } - state.round = roundOff; -} -function RUTG(state) { - if (exports.DEBUG) { - console.log(state.step, "RUTG[]"); - } - state.round = roundUpToGrid; -} -function RDTG(state) { - if (exports.DEBUG) { - console.log(state.step, "RDTG[]"); - } - state.round = roundDownToGrid; -} -function SCANCTRL(state) { - var n2 = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SCANCTRL[]", n2); - } -} -function SDPVTL(a2, state) { - var stack = state.stack; - var p2i = stack.pop(); - var p1i = stack.pop(); - var p2 = state.z2[p2i]; - var p1 = state.z1[p1i]; - if (exports.DEBUG) { - console.log(state.step, "SDPVTL[" + a2 + "]", p2i, p1i); - } - var dx; - var dy; - if (!a2) { - dx = p1.x - p2.x; - dy = p1.y - p2.y; - } else { - dx = p2.y - p1.y; - dy = p1.x - p2.x; - } - state.dpv = getUnitVector(dx, dy); -} -function GETINFO(state) { - var stack = state.stack; - var sel = stack.pop(); - var r = 0; - if (exports.DEBUG) { - console.log(state.step, "GETINFO[]", sel); - } - if (sel & 1) { - r = 35; - } - if (sel & 32) { - r |= 4096; - } - stack.push(r); -} -function ROLL(state) { - var stack = state.stack; - var a2 = stack.pop(); - var b3 = stack.pop(); - var c2 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "ROLL[]"); - } - stack.push(b3); - stack.push(a2); - stack.push(c2); -} -function MAX(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "MAX[]", e2, e1); - } - stack.push(Math.max(e1, e2)); -} -function MIN(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "MIN[]", e2, e1); - } - stack.push(Math.min(e1, e2)); -} -function SCANTYPE(state) { - var n2 = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "SCANTYPE[]", n2); - } -} -function INSTCTRL(state) { - var s = state.stack.pop(); - var v = state.stack.pop(); - if (exports.DEBUG) { - console.log(state.step, "INSTCTRL[]", s, v); - } - switch (s) { - case 1: - state.inhibitGridFit = !!v; - return; - case 2: - state.ignoreCvt = !!v; - return; - default: - throw new Error("invalid INSTCTRL[] selector"); - } -} -function PUSHB(n2, state) { - var stack = state.stack; - var prog = state.prog; - var ip = state.ip; - if (exports.DEBUG) { - console.log(state.step, "PUSHB[" + n2 + "]"); - } - for (var i = 0; i < n2; i++) { - stack.push(prog[++ip]); - } - state.ip = ip; -} -function PUSHW(n2, state) { - var ip = state.ip; - var prog = state.prog; - var stack = state.stack; - if (exports.DEBUG) { - console.log(state.ip, "PUSHW[" + n2 + "]"); - } - for (var i = 0; i < n2; i++) { - var w = prog[++ip] << 8 | prog[++ip]; - if (w & 32768) { - w = -((w ^ 65535) + 1); - } - stack.push(w); - } - state.ip = ip; -} -function MDRP_MIRP(indirect, setRp0, keepD, ro, dt2, state) { - var stack = state.stack; - var cvte = indirect && stack.pop(); - var pi2 = stack.pop(); - var rp0i = state.rp0; - var rp = state.z0[rp0i]; - var p2 = state.z1[pi2]; - var md = state.minDis; - var fv = state.fv; - var pv = state.dpv; - var od; - var d; - var sign; - var cv; - d = od = pv.distance(p2, rp, true, true); - sign = d >= 0 ? 1 : -1; - d = Math.abs(d); - if (indirect) { - cv = state.cvt[cvte]; - if (ro && Math.abs(d - cv) < state.cvCutIn) { - d = cv; - } - } - if (keepD && d < md) { - d = md; - } - if (ro) { - d = state.round(d); - } - fv.setRelative(p2, rp, sign * d, pv); - fv.touch(p2); - if (exports.DEBUG) { - console.log( - state.step, - (indirect ? "MIRP[" : "MDRP[") + (setRp0 ? "M" : "m") + (keepD ? ">" : "_") + (ro ? "R" : "_") + (dt2 === 0 ? "Gr" : dt2 === 1 ? "Bl" : dt2 === 2 ? "Wh" : "") + "]", - indirect ? cvte + "(" + state.cvt[cvte] + "," + cv + ")" : "", - pi2, - "(d =", - od, - "->", - sign * d, - ")" - ); - } - state.rp1 = state.rp0; - state.rp2 = pi2; - if (setRp0) { - state.rp0 = pi2; - } -} -instructionTable = [ - /* 0x00 */ - SVTCA.bind(void 0, yUnitVector), - /* 0x01 */ - SVTCA.bind(void 0, xUnitVector), - /* 0x02 */ - SPVTCA.bind(void 0, yUnitVector), - /* 0x03 */ - SPVTCA.bind(void 0, xUnitVector), - /* 0x04 */ - SFVTCA.bind(void 0, yUnitVector), - /* 0x05 */ - SFVTCA.bind(void 0, xUnitVector), - /* 0x06 */ - SPVTL.bind(void 0, 0), - /* 0x07 */ - SPVTL.bind(void 0, 1), - /* 0x08 */ - SFVTL.bind(void 0, 0), - /* 0x09 */ - SFVTL.bind(void 0, 1), - /* 0x0A */ - SPVFS, - /* 0x0B */ - SFVFS, - /* 0x0C */ - GPV, - /* 0x0D */ - GFV, - /* 0x0E */ - SFVTPV, - /* 0x0F */ - ISECT, - /* 0x10 */ - SRP0, - /* 0x11 */ - SRP1, - /* 0x12 */ - SRP2, - /* 0x13 */ - SZP0, - /* 0x14 */ - SZP1, - /* 0x15 */ - SZP2, - /* 0x16 */ - SZPS, - /* 0x17 */ - SLOOP, - /* 0x18 */ - RTG, - /* 0x19 */ - RTHG, - /* 0x1A */ - SMD, - /* 0x1B */ - ELSE, - /* 0x1C */ - JMPR, - /* 0x1D */ - SCVTCI, - /* 0x1E */ - void 0, - // TODO SSWCI - /* 0x1F */ - void 0, - // TODO SSW - /* 0x20 */ - DUP, - /* 0x21 */ - POP, - /* 0x22 */ - CLEAR, - /* 0x23 */ - SWAP, - /* 0x24 */ - DEPTH, - /* 0x25 */ - CINDEX, - /* 0x26 */ - MINDEX, - /* 0x27 */ - void 0, - // TODO ALIGNPTS - /* 0x28 */ - void 0, - /* 0x29 */ - void 0, - // TODO UTP - /* 0x2A */ - LOOPCALL, - /* 0x2B */ - CALL, - /* 0x2C */ - FDEF, - /* 0x2D */ - void 0, - // ENDF (eaten by FDEF) - /* 0x2E */ - MDAP.bind(void 0, 0), - /* 0x2F */ - MDAP.bind(void 0, 1), - /* 0x30 */ - IUP.bind(void 0, yUnitVector), - /* 0x31 */ - IUP.bind(void 0, xUnitVector), - /* 0x32 */ - SHP.bind(void 0, 0), - /* 0x33 */ - SHP.bind(void 0, 1), - /* 0x34 */ - SHC.bind(void 0, 0), - /* 0x35 */ - SHC.bind(void 0, 1), - /* 0x36 */ - SHZ.bind(void 0, 0), - /* 0x37 */ - SHZ.bind(void 0, 1), - /* 0x38 */ - SHPIX, - /* 0x39 */ - IP, - /* 0x3A */ - MSIRP.bind(void 0, 0), - /* 0x3B */ - MSIRP.bind(void 0, 1), - /* 0x3C */ - ALIGNRP, - /* 0x3D */ - RTDG, - /* 0x3E */ - MIAP.bind(void 0, 0), - /* 0x3F */ - MIAP.bind(void 0, 1), - /* 0x40 */ - NPUSHB, - /* 0x41 */ - NPUSHW, - /* 0x42 */ - WS, - /* 0x43 */ - RS, - /* 0x44 */ - WCVTP, - /* 0x45 */ - RCVT, - /* 0x46 */ - GC.bind(void 0, 0), - /* 0x47 */ - GC.bind(void 0, 1), - /* 0x48 */ - void 0, - // TODO SCFS - /* 0x49 */ - MD.bind(void 0, 0), - /* 0x4A */ - MD.bind(void 0, 1), - /* 0x4B */ - MPPEM, - /* 0x4C */ - void 0, - // TODO MPS - /* 0x4D */ - FLIPON, - /* 0x4E */ - void 0, - // TODO FLIPOFF - /* 0x4F */ - void 0, - // TODO DEBUG - /* 0x50 */ - LT, - /* 0x51 */ - LTEQ, - /* 0x52 */ - GT, - /* 0x53 */ - GTEQ, - /* 0x54 */ - EQ, - /* 0x55 */ - NEQ, - /* 0x56 */ - ODD, - /* 0x57 */ - EVEN, - /* 0x58 */ - IF, - /* 0x59 */ - EIF, - /* 0x5A */ - AND, - /* 0x5B */ - OR, - /* 0x5C */ - NOT, - /* 0x5D */ - DELTAP123.bind(void 0, 1), - /* 0x5E */ - SDB, - /* 0x5F */ - SDS, - /* 0x60 */ - ADD, - /* 0x61 */ - SUB, - /* 0x62 */ - DIV, - /* 0x63 */ - MUL, - /* 0x64 */ - ABS, - /* 0x65 */ - NEG, - /* 0x66 */ - FLOOR, - /* 0x67 */ - CEILING, - /* 0x68 */ - ROUND.bind(void 0, 0), - /* 0x69 */ - ROUND.bind(void 0, 1), - /* 0x6A */ - ROUND.bind(void 0, 2), - /* 0x6B */ - ROUND.bind(void 0, 3), - /* 0x6C */ - void 0, - // TODO NROUND[ab] - /* 0x6D */ - void 0, - // TODO NROUND[ab] - /* 0x6E */ - void 0, - // TODO NROUND[ab] - /* 0x6F */ - void 0, - // TODO NROUND[ab] - /* 0x70 */ - WCVTF, - /* 0x71 */ - DELTAP123.bind(void 0, 2), - /* 0x72 */ - DELTAP123.bind(void 0, 3), - /* 0x73 */ - DELTAC123.bind(void 0, 1), - /* 0x74 */ - DELTAC123.bind(void 0, 2), - /* 0x75 */ - DELTAC123.bind(void 0, 3), - /* 0x76 */ - SROUND, - /* 0x77 */ - S45ROUND, - /* 0x78 */ - void 0, - // TODO JROT[] - /* 0x79 */ - void 0, - // TODO JROF[] - /* 0x7A */ - ROFF, - /* 0x7B */ - void 0, - /* 0x7C */ - RUTG, - /* 0x7D */ - RDTG, - /* 0x7E */ - POP, - // actually SANGW, supposed to do only a pop though - /* 0x7F */ - POP, - // actually AA, supposed to do only a pop though - /* 0x80 */ - void 0, - // TODO FLIPPT - /* 0x81 */ - void 0, - // TODO FLIPRGON - /* 0x82 */ - void 0, - // TODO FLIPRGOFF - /* 0x83 */ - void 0, - /* 0x84 */ - void 0, - /* 0x85 */ - SCANCTRL, - /* 0x86 */ - SDPVTL.bind(void 0, 0), - /* 0x87 */ - SDPVTL.bind(void 0, 1), - /* 0x88 */ - GETINFO, - /* 0x89 */ - void 0, - // TODO IDEF - /* 0x8A */ - ROLL, - /* 0x8B */ - MAX, - /* 0x8C */ - MIN, - /* 0x8D */ - SCANTYPE, - /* 0x8E */ - INSTCTRL, - /* 0x8F */ - void 0, - /* 0x90 */ - void 0, - /* 0x91 */ - void 0, - /* 0x92 */ - void 0, - /* 0x93 */ - void 0, - /* 0x94 */ - void 0, - /* 0x95 */ - void 0, - /* 0x96 */ - void 0, - /* 0x97 */ - void 0, - /* 0x98 */ - void 0, - /* 0x99 */ - void 0, - /* 0x9A */ - void 0, - /* 0x9B */ - void 0, - /* 0x9C */ - void 0, - /* 0x9D */ - void 0, - /* 0x9E */ - void 0, - /* 0x9F */ - void 0, - /* 0xA0 */ - void 0, - /* 0xA1 */ - void 0, - /* 0xA2 */ - void 0, - /* 0xA3 */ - void 0, - /* 0xA4 */ - void 0, - /* 0xA5 */ - void 0, - /* 0xA6 */ - void 0, - /* 0xA7 */ - void 0, - /* 0xA8 */ - void 0, - /* 0xA9 */ - void 0, - /* 0xAA */ - void 0, - /* 0xAB */ - void 0, - /* 0xAC */ - void 0, - /* 0xAD */ - void 0, - /* 0xAE */ - void 0, - /* 0xAF */ - void 0, - /* 0xB0 */ - PUSHB.bind(void 0, 1), - /* 0xB1 */ - PUSHB.bind(void 0, 2), - /* 0xB2 */ - PUSHB.bind(void 0, 3), - /* 0xB3 */ - PUSHB.bind(void 0, 4), - /* 0xB4 */ - PUSHB.bind(void 0, 5), - /* 0xB5 */ - PUSHB.bind(void 0, 6), - /* 0xB6 */ - PUSHB.bind(void 0, 7), - /* 0xB7 */ - PUSHB.bind(void 0, 8), - /* 0xB8 */ - PUSHW.bind(void 0, 1), - /* 0xB9 */ - PUSHW.bind(void 0, 2), - /* 0xBA */ - PUSHW.bind(void 0, 3), - /* 0xBB */ - PUSHW.bind(void 0, 4), - /* 0xBC */ - PUSHW.bind(void 0, 5), - /* 0xBD */ - PUSHW.bind(void 0, 6), - /* 0xBE */ - PUSHW.bind(void 0, 7), - /* 0xBF */ - PUSHW.bind(void 0, 8), - /* 0xC0 */ - MDRP_MIRP.bind(void 0, 0, 0, 0, 0, 0), - /* 0xC1 */ - MDRP_MIRP.bind(void 0, 0, 0, 0, 0, 1), - /* 0xC2 */ - MDRP_MIRP.bind(void 0, 0, 0, 0, 0, 2), - /* 0xC3 */ - MDRP_MIRP.bind(void 0, 0, 0, 0, 0, 3), - /* 0xC4 */ - MDRP_MIRP.bind(void 0, 0, 0, 0, 1, 0), - /* 0xC5 */ - MDRP_MIRP.bind(void 0, 0, 0, 0, 1, 1), - /* 0xC6 */ - MDRP_MIRP.bind(void 0, 0, 0, 0, 1, 2), - /* 0xC7 */ - MDRP_MIRP.bind(void 0, 0, 0, 0, 1, 3), - /* 0xC8 */ - MDRP_MIRP.bind(void 0, 0, 0, 1, 0, 0), - /* 0xC9 */ - MDRP_MIRP.bind(void 0, 0, 0, 1, 0, 1), - /* 0xCA */ - MDRP_MIRP.bind(void 0, 0, 0, 1, 0, 2), - /* 0xCB */ - MDRP_MIRP.bind(void 0, 0, 0, 1, 0, 3), - /* 0xCC */ - MDRP_MIRP.bind(void 0, 0, 0, 1, 1, 0), - /* 0xCD */ - MDRP_MIRP.bind(void 0, 0, 0, 1, 1, 1), - /* 0xCE */ - MDRP_MIRP.bind(void 0, 0, 0, 1, 1, 2), - /* 0xCF */ - MDRP_MIRP.bind(void 0, 0, 0, 1, 1, 3), - /* 0xD0 */ - MDRP_MIRP.bind(void 0, 0, 1, 0, 0, 0), - /* 0xD1 */ - MDRP_MIRP.bind(void 0, 0, 1, 0, 0, 1), - /* 0xD2 */ - MDRP_MIRP.bind(void 0, 0, 1, 0, 0, 2), - /* 0xD3 */ - MDRP_MIRP.bind(void 0, 0, 1, 0, 0, 3), - /* 0xD4 */ - MDRP_MIRP.bind(void 0, 0, 1, 0, 1, 0), - /* 0xD5 */ - MDRP_MIRP.bind(void 0, 0, 1, 0, 1, 1), - /* 0xD6 */ - MDRP_MIRP.bind(void 0, 0, 1, 0, 1, 2), - /* 0xD7 */ - MDRP_MIRP.bind(void 0, 0, 1, 0, 1, 3), - /* 0xD8 */ - MDRP_MIRP.bind(void 0, 0, 1, 1, 0, 0), - /* 0xD9 */ - MDRP_MIRP.bind(void 0, 0, 1, 1, 0, 1), - /* 0xDA */ - MDRP_MIRP.bind(void 0, 0, 1, 1, 0, 2), - /* 0xDB */ - MDRP_MIRP.bind(void 0, 0, 1, 1, 0, 3), - /* 0xDC */ - MDRP_MIRP.bind(void 0, 0, 1, 1, 1, 0), - /* 0xDD */ - MDRP_MIRP.bind(void 0, 0, 1, 1, 1, 1), - /* 0xDE */ - MDRP_MIRP.bind(void 0, 0, 1, 1, 1, 2), - /* 0xDF */ - MDRP_MIRP.bind(void 0, 0, 1, 1, 1, 3), - /* 0xE0 */ - MDRP_MIRP.bind(void 0, 1, 0, 0, 0, 0), - /* 0xE1 */ - MDRP_MIRP.bind(void 0, 1, 0, 0, 0, 1), - /* 0xE2 */ - MDRP_MIRP.bind(void 0, 1, 0, 0, 0, 2), - /* 0xE3 */ - MDRP_MIRP.bind(void 0, 1, 0, 0, 0, 3), - /* 0xE4 */ - MDRP_MIRP.bind(void 0, 1, 0, 0, 1, 0), - /* 0xE5 */ - MDRP_MIRP.bind(void 0, 1, 0, 0, 1, 1), - /* 0xE6 */ - MDRP_MIRP.bind(void 0, 1, 0, 0, 1, 2), - /* 0xE7 */ - MDRP_MIRP.bind(void 0, 1, 0, 0, 1, 3), - /* 0xE8 */ - MDRP_MIRP.bind(void 0, 1, 0, 1, 0, 0), - /* 0xE9 */ - MDRP_MIRP.bind(void 0, 1, 0, 1, 0, 1), - /* 0xEA */ - MDRP_MIRP.bind(void 0, 1, 0, 1, 0, 2), - /* 0xEB */ - MDRP_MIRP.bind(void 0, 1, 0, 1, 0, 3), - /* 0xEC */ - MDRP_MIRP.bind(void 0, 1, 0, 1, 1, 0), - /* 0xED */ - MDRP_MIRP.bind(void 0, 1, 0, 1, 1, 1), - /* 0xEE */ - MDRP_MIRP.bind(void 0, 1, 0, 1, 1, 2), - /* 0xEF */ - MDRP_MIRP.bind(void 0, 1, 0, 1, 1, 3), - /* 0xF0 */ - MDRP_MIRP.bind(void 0, 1, 1, 0, 0, 0), - /* 0xF1 */ - MDRP_MIRP.bind(void 0, 1, 1, 0, 0, 1), - /* 0xF2 */ - MDRP_MIRP.bind(void 0, 1, 1, 0, 0, 2), - /* 0xF3 */ - MDRP_MIRP.bind(void 0, 1, 1, 0, 0, 3), - /* 0xF4 */ - MDRP_MIRP.bind(void 0, 1, 1, 0, 1, 0), - /* 0xF5 */ - MDRP_MIRP.bind(void 0, 1, 1, 0, 1, 1), - /* 0xF6 */ - MDRP_MIRP.bind(void 0, 1, 1, 0, 1, 2), - /* 0xF7 */ - MDRP_MIRP.bind(void 0, 1, 1, 0, 1, 3), - /* 0xF8 */ - MDRP_MIRP.bind(void 0, 1, 1, 1, 0, 0), - /* 0xF9 */ - MDRP_MIRP.bind(void 0, 1, 1, 1, 0, 1), - /* 0xFA */ - MDRP_MIRP.bind(void 0, 1, 1, 1, 0, 2), - /* 0xFB */ - MDRP_MIRP.bind(void 0, 1, 1, 1, 0, 3), - /* 0xFC */ - MDRP_MIRP.bind(void 0, 1, 1, 1, 1, 0), - /* 0xFD */ - MDRP_MIRP.bind(void 0, 1, 1, 1, 1, 1), - /* 0xFE */ - MDRP_MIRP.bind(void 0, 1, 1, 1, 1, 2), - /* 0xFF */ - MDRP_MIRP.bind(void 0, 1, 1, 1, 1, 3) -]; -function Token(char) { - this.char = char; - this.state = {}; - this.activeState = null; -} -function ContextRange(startIndex, endOffset, contextName) { - this.contextName = contextName; - this.startIndex = startIndex; - this.endOffset = endOffset; -} -function ContextChecker(contextName, checkStart, checkEnd) { - this.contextName = contextName; - this.openRange = null; - this.ranges = []; - this.checkStart = checkStart; - this.checkEnd = checkEnd; -} -function ContextParams(context, currentIndex) { - this.context = context; - this.index = currentIndex; - this.length = context.length; - this.current = context[currentIndex]; - this.backtrack = context.slice(0, currentIndex); - this.lookahead = context.slice(currentIndex + 1); -} -function Event(eventId) { - this.eventId = eventId; - this.subscribers = []; -} -function initializeCoreEvents(events) { - var this$1 = this; - var coreEvents = [ - "start", - "end", - "next", - "newToken", - "contextStart", - "contextEnd", - "insertToken", - "removeToken", - "removeRange", - "replaceToken", - "replaceRange", - "composeRUD", - "updateContextsRanges" - ]; - coreEvents.forEach(function(eventId) { - Object.defineProperty(this$1.events, eventId, { - value: new Event(eventId) - }); - }); - if (!!events) { - coreEvents.forEach(function(eventId) { - var event = events[eventId]; - if (typeof event === "function") { - this$1.events[eventId].subscribe(event); - } - }); - } - var requiresContextUpdate = [ - "insertToken", - "removeToken", - "removeRange", - "replaceToken", - "replaceRange", - "composeRUD" - ]; - requiresContextUpdate.forEach(function(eventId) { - this$1.events[eventId].subscribe( - this$1.updateContextsRanges - ); - }); -} -function Tokenizer(events) { - this.tokens = []; - this.registeredContexts = {}; - this.contextCheckers = []; - this.events = {}; - this.registeredModifiers = []; - initializeCoreEvents.call(this, events); -} -Token.prototype.setState = function(key2, value2) { - this.state[key2] = value2; - this.activeState = { key: key2, value: this.state[key2] }; - return this.activeState; -}; -Token.prototype.getState = function(stateId) { - return this.state[stateId] || null; -}; -Tokenizer.prototype.inboundIndex = function(index2) { - return index2 >= 0 && index2 < this.tokens.length; -}; -Tokenizer.prototype.composeRUD = function(RUDs) { - var this$1 = this; - var silent = true; - var state = RUDs.map(function(RUD) { - return this$1[RUD[0]].apply(this$1, RUD.slice(1).concat(silent)); - }); - var hasFAILObject = function(obj) { - return typeof obj === "object" && obj.hasOwnProperty("FAIL"); - }; - if (state.every(hasFAILObject)) { - return { - FAIL: "composeRUD: one or more operations hasn't completed successfully", - report: state.filter(hasFAILObject) - }; - } - this.dispatch("composeRUD", [state.filter(function(op) { - return !hasFAILObject(op); - })]); -}; -Tokenizer.prototype.replaceRange = function(startIndex, offset, tokens, silent) { - offset = offset !== null ? offset : this.tokens.length; - var isTokenType = tokens.every(function(token) { - return token instanceof Token; - }); - if (!isNaN(startIndex) && this.inboundIndex(startIndex) && isTokenType) { - var replaced = this.tokens.splice.apply( - this.tokens, - [startIndex, offset].concat(tokens) - ); - if (!silent) { - this.dispatch("replaceToken", [startIndex, offset, tokens]); - } - return [replaced, tokens]; - } else { - return { FAIL: "replaceRange: invalid tokens or startIndex." }; - } -}; -Tokenizer.prototype.replaceToken = function(index2, token, silent) { - if (!isNaN(index2) && this.inboundIndex(index2) && token instanceof Token) { - var replaced = this.tokens.splice(index2, 1, token); - if (!silent) { - this.dispatch("replaceToken", [index2, token]); - } - return [replaced[0], token]; - } else { - return { FAIL: "replaceToken: invalid token or index." }; - } -}; -Tokenizer.prototype.removeRange = function(startIndex, offset, silent) { - offset = !isNaN(offset) ? offset : this.tokens.length; - var tokens = this.tokens.splice(startIndex, offset); - if (!silent) { - this.dispatch("removeRange", [tokens, startIndex, offset]); - } - return tokens; -}; -Tokenizer.prototype.removeToken = function(index2, silent) { - if (!isNaN(index2) && this.inboundIndex(index2)) { - var token = this.tokens.splice(index2, 1); - if (!silent) { - this.dispatch("removeToken", [token, index2]); - } - return token; - } else { - return { FAIL: "removeToken: invalid token index." }; - } -}; -Tokenizer.prototype.insertToken = function(tokens, index2, silent) { - var tokenType = tokens.every( - function(token) { - return token instanceof Token; - } - ); - if (tokenType) { - this.tokens.splice.apply( - this.tokens, - [index2, 0].concat(tokens) - ); - if (!silent) { - this.dispatch("insertToken", [tokens, index2]); - } - return tokens; - } else { - return { FAIL: "insertToken: invalid token(s)." }; - } -}; -Tokenizer.prototype.registerModifier = function(modifierId, condition, modifier) { - this.events.newToken.subscribe(function(token, contextParams) { - var conditionParams = [token, contextParams]; - var canApplyModifier = condition === null || condition.apply(this, conditionParams) === true; - var modifierParams = [token, contextParams]; - if (canApplyModifier) { - var newStateValue = modifier.apply(this, modifierParams); - token.setState(modifierId, newStateValue); - } - }); - this.registeredModifiers.push(modifierId); -}; -Event.prototype.subscribe = function(eventHandler) { - if (typeof eventHandler === "function") { - return this.subscribers.push(eventHandler) - 1; - } else { - return { FAIL: "invalid '" + this.eventId + "' event handler" }; - } -}; -Event.prototype.unsubscribe = function(subsId) { - this.subscribers.splice(subsId, 1); -}; -ContextParams.prototype.setCurrentIndex = function(index2) { - this.index = index2; - this.current = this.context[index2]; - this.backtrack = this.context.slice(0, index2); - this.lookahead = this.context.slice(index2 + 1); -}; -ContextParams.prototype.get = function(offset) { - switch (true) { - case offset === 0: - return this.current; - case (offset < 0 && Math.abs(offset) <= this.backtrack.length): - return this.backtrack.slice(offset)[0]; - case (offset > 0 && offset <= this.lookahead.length): - return this.lookahead[offset - 1]; - default: - return null; - } -}; -Tokenizer.prototype.rangeToText = function(range) { - if (range instanceof ContextRange) { - return this.getRangeTokens(range).map(function(token) { - return token.char; - }).join(""); - } -}; -Tokenizer.prototype.getText = function() { - return this.tokens.map(function(token) { - return token.char; - }).join(""); -}; -Tokenizer.prototype.getContext = function(contextName) { - var context = this.registeredContexts[contextName]; - return !!context ? context : null; -}; -Tokenizer.prototype.on = function(eventName, eventHandler) { - var event = this.events[eventName]; - if (!!event) { - return event.subscribe(eventHandler); - } else { - return null; - } -}; -Tokenizer.prototype.dispatch = function(eventName, args) { - var this$1 = this; - var event = this.events[eventName]; - if (event instanceof Event) { - event.subscribers.forEach(function(subscriber) { - subscriber.apply(this$1, args || []); - }); - } -}; -Tokenizer.prototype.registerContextChecker = function(contextName, contextStartCheck, contextEndCheck) { - if (!!this.getContext(contextName)) { - return { - FAIL: "context name '" + contextName + "' is already registered." - }; - } - if (typeof contextStartCheck !== "function") { - return { - FAIL: "missing context start check." - }; - } - if (typeof contextEndCheck !== "function") { - return { - FAIL: "missing context end check." - }; - } - var contextCheckers = new ContextChecker( - contextName, - contextStartCheck, - contextEndCheck - ); - this.registeredContexts[contextName] = contextCheckers; - this.contextCheckers.push(contextCheckers); - return contextCheckers; -}; -Tokenizer.prototype.getRangeTokens = function(range) { - var endIndex = range.startIndex + range.endOffset; - return [].concat( - this.tokens.slice(range.startIndex, endIndex) - ); -}; -Tokenizer.prototype.getContextRanges = function(contextName) { - var context = this.getContext(contextName); - if (!!context) { - return context.ranges; - } else { - return { FAIL: "context checker '" + contextName + "' is not registered." }; - } -}; -Tokenizer.prototype.resetContextsRanges = function() { - var registeredContexts = this.registeredContexts; - for (var contextName in registeredContexts) { - if (registeredContexts.hasOwnProperty(contextName)) { - var context = registeredContexts[contextName]; - context.ranges = []; - } - } -}; -Tokenizer.prototype.updateContextsRanges = function() { - this.resetContextsRanges(); - var chars = this.tokens.map(function(token) { - return token.char; - }); - for (var i = 0; i < chars.length; i++) { - var contextParams = new ContextParams(chars, i); - this.runContextCheck(contextParams); - } - this.dispatch("updateContextsRanges", [this.registeredContexts]); -}; -Tokenizer.prototype.setEndOffset = function(offset, contextName) { - var startIndex = this.getContext(contextName).openRange.startIndex; - var range = new ContextRange(startIndex, offset, contextName); - var ranges = this.getContext(contextName).ranges; - range.rangeId = contextName + "." + ranges.length; - ranges.push(range); - this.getContext(contextName).openRange = null; - return range; -}; -Tokenizer.prototype.runContextCheck = function(contextParams) { - var this$1 = this; - var index2 = contextParams.index; - this.contextCheckers.forEach(function(contextChecker) { - var contextName = contextChecker.contextName; - var openRange = this$1.getContext(contextName).openRange; - if (!openRange && contextChecker.checkStart(contextParams)) { - openRange = new ContextRange(index2, null, contextName); - this$1.getContext(contextName).openRange = openRange; - this$1.dispatch("contextStart", [contextName, index2]); - } - if (!!openRange && contextChecker.checkEnd(contextParams)) { - var offset = index2 - openRange.startIndex + 1; - var range = this$1.setEndOffset(offset, contextName); - this$1.dispatch("contextEnd", [contextName, range]); - } - }); -}; -Tokenizer.prototype.tokenize = function(text2) { - this.tokens = []; - this.resetContextsRanges(); - var chars = Array.from(text2); - this.dispatch("start"); - for (var i = 0; i < chars.length; i++) { - var char = chars[i]; - var contextParams = new ContextParams(chars, i); - this.dispatch("next", [contextParams]); - this.runContextCheck(contextParams); - var token = new Token(char); - this.tokens.push(token); - this.dispatch("newToken", [token, contextParams]); - } - this.dispatch("end", [this.tokens]); - return this.tokens; -}; -function isArabicChar(c2) { - return /[\u0600-\u065F\u066A-\u06D2\u06FA-\u06FF]/.test(c2); -} -function isIsolatedArabicChar(char) { - return /[\u0630\u0690\u0621\u0631\u0661\u0671\u0622\u0632\u0672\u0692\u06C2\u0623\u0673\u0693\u06C3\u0624\u0694\u06C4\u0625\u0675\u0695\u06C5\u06E5\u0676\u0696\u06C6\u0627\u0677\u0697\u06C7\u0648\u0688\u0698\u06C8\u0689\u0699\u06C9\u068A\u06CA\u066B\u068B\u06CB\u068C\u068D\u06CD\u06FD\u068E\u06EE\u06FE\u062F\u068F\u06CF\u06EF]/.test(char); -} -function isTashkeelArabicChar(char) { - return /[\u0600-\u0605\u060C-\u060E\u0610-\u061B\u061E\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED]/.test(char); -} -function isLatinChar(c2) { - return /[A-z]/.test(c2); -} -function isWhiteSpace(c2) { - return /\s/.test(c2); -} -function FeatureQuery(font) { - this.font = font; - this.features = {}; -} -function SubstitutionAction(action) { - this.id = action.id; - this.tag = action.tag; - this.substitution = action.substitution; -} -function lookupCoverage(glyphIndex, coverage) { - if (!glyphIndex) { - return -1; - } - switch (coverage.format) { - case 1: - return coverage.glyphs.indexOf(glyphIndex); - case 2: - var ranges = coverage.ranges; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (glyphIndex >= range.start && glyphIndex <= range.end) { - var offset = glyphIndex - range.start; - return range.index + offset; - } - } - break; - default: - return -1; - } - return -1; -} -function singleSubstitutionFormat1(glyphIndex, subtable) { - var substituteIndex = lookupCoverage(glyphIndex, subtable.coverage); - if (substituteIndex === -1) { - return null; - } - return glyphIndex + subtable.deltaGlyphId; -} -function singleSubstitutionFormat2(glyphIndex, subtable) { - var substituteIndex = lookupCoverage(glyphIndex, subtable.coverage); - if (substituteIndex === -1) { - return null; - } - return subtable.substitute[substituteIndex]; -} -function lookupCoverageList(coverageList, contextParams) { - var lookupList = []; - for (var i = 0; i < coverageList.length; i++) { - var coverage = coverageList[i]; - var glyphIndex = contextParams.current; - glyphIndex = Array.isArray(glyphIndex) ? glyphIndex[0] : glyphIndex; - var lookupIndex = lookupCoverage(glyphIndex, coverage); - if (lookupIndex !== -1) { - lookupList.push(lookupIndex); - } - } - if (lookupList.length !== coverageList.length) { - return -1; - } - return lookupList; -} -function chainingSubstitutionFormat3(contextParams, subtable) { - var lookupsCount = subtable.inputCoverage.length + subtable.lookaheadCoverage.length + subtable.backtrackCoverage.length; - if (contextParams.context.length < lookupsCount) { - return []; - } - var inputLookups = lookupCoverageList( - subtable.inputCoverage, - contextParams - ); - if (inputLookups === -1) { - return []; - } - var lookaheadOffset = subtable.inputCoverage.length - 1; - if (contextParams.lookahead.length < subtable.lookaheadCoverage.length) { - return []; - } - var lookaheadContext = contextParams.lookahead.slice(lookaheadOffset); - while (lookaheadContext.length && isTashkeelArabicChar(lookaheadContext[0].char)) { - lookaheadContext.shift(); - } - var lookaheadParams = new ContextParams(lookaheadContext, 0); - var lookaheadLookups = lookupCoverageList( - subtable.lookaheadCoverage, - lookaheadParams - ); - var backtrackContext = [].concat(contextParams.backtrack); - backtrackContext.reverse(); - while (backtrackContext.length && isTashkeelArabicChar(backtrackContext[0].char)) { - backtrackContext.shift(); - } - if (backtrackContext.length < subtable.backtrackCoverage.length) { - return []; - } - var backtrackParams = new ContextParams(backtrackContext, 0); - var backtrackLookups = lookupCoverageList( - subtable.backtrackCoverage, - backtrackParams - ); - var contextRulesMatch = inputLookups.length === subtable.inputCoverage.length && lookaheadLookups.length === subtable.lookaheadCoverage.length && backtrackLookups.length === subtable.backtrackCoverage.length; - var substitutions = []; - if (contextRulesMatch) { - for (var i = 0; i < subtable.lookupRecords.length; i++) { - var lookupRecord = subtable.lookupRecords[i]; - var lookupListIndex = lookupRecord.lookupListIndex; - var lookupTable = this.getLookupByIndex(lookupListIndex); - for (var s = 0; s < lookupTable.subtables.length; s++) { - var subtable$1 = lookupTable.subtables[s]; - var lookup = this.getLookupMethod(lookupTable, subtable$1); - var substitutionType = this.getSubstitutionType(lookupTable, subtable$1); - if (substitutionType === "12") { - for (var n2 = 0; n2 < inputLookups.length; n2++) { - var glyphIndex = contextParams.get(n2); - var substitution = lookup(glyphIndex); - if (substitution) { - substitutions.push(substitution); - } - } - } - } - } - } - return substitutions; -} -function ligatureSubstitutionFormat1(contextParams, subtable) { - var glyphIndex = contextParams.current; - var ligSetIndex = lookupCoverage(glyphIndex, subtable.coverage); - if (ligSetIndex === -1) { - return null; - } - var ligature; - var ligatureSet = subtable.ligatureSets[ligSetIndex]; - for (var s = 0; s < ligatureSet.length; s++) { - ligature = ligatureSet[s]; - for (var l2 = 0; l2 < ligature.components.length; l2++) { - var lookaheadItem = contextParams.lookahead[l2]; - var component = ligature.components[l2]; - if (lookaheadItem !== component) { - break; - } - if (l2 === ligature.components.length - 1) { - return ligature; - } - } - } - return null; -} -function decompositionSubstitutionFormat1(glyphIndex, subtable) { - var substituteIndex = lookupCoverage(glyphIndex, subtable.coverage); - if (substituteIndex === -1) { - return null; - } - return subtable.sequences[substituteIndex]; -} -FeatureQuery.prototype.getDefaultScriptFeaturesIndexes = function() { - var scripts = this.font.tables.gsub.scripts; - for (var s = 0; s < scripts.length; s++) { - var script = scripts[s]; - if (script.tag === "DFLT") { - return script.script.defaultLangSys.featureIndexes; - } - } - return []; -}; -FeatureQuery.prototype.getScriptFeaturesIndexes = function(scriptTag) { - var tables = this.font.tables; - if (!tables.gsub) { - return []; - } - if (!scriptTag) { - return this.getDefaultScriptFeaturesIndexes(); - } - var scripts = this.font.tables.gsub.scripts; - for (var i = 0; i < scripts.length; i++) { - var script = scripts[i]; - if (script.tag === scriptTag && script.script.defaultLangSys) { - return script.script.defaultLangSys.featureIndexes; - } else { - var langSysRecords = script.langSysRecords; - if (!!langSysRecords) { - for (var j = 0; j < langSysRecords.length; j++) { - var langSysRecord = langSysRecords[j]; - if (langSysRecord.tag === scriptTag) { - var langSys = langSysRecord.langSys; - return langSys.featureIndexes; - } - } - } - } - } - return this.getDefaultScriptFeaturesIndexes(); -}; -FeatureQuery.prototype.mapTagsToFeatures = function(features, scriptTag) { - var tags = {}; - for (var i = 0; i < features.length; i++) { - var tag = features[i].tag; - var feature = features[i].feature; - tags[tag] = feature; - } - this.features[scriptTag].tags = tags; -}; -FeatureQuery.prototype.getScriptFeatures = function(scriptTag) { - var features = this.features[scriptTag]; - if (this.features.hasOwnProperty(scriptTag)) { - return features; - } - var featuresIndexes = this.getScriptFeaturesIndexes(scriptTag); - if (!featuresIndexes) { - return null; - } - var gsub2 = this.font.tables.gsub; - features = featuresIndexes.map(function(index2) { - return gsub2.features[index2]; - }); - this.features[scriptTag] = features; - this.mapTagsToFeatures(features, scriptTag); - return features; -}; -FeatureQuery.prototype.getSubstitutionType = function(lookupTable, subtable) { - var lookupType = lookupTable.lookupType.toString(); - var substFormat = subtable.substFormat.toString(); - return lookupType + substFormat; -}; -FeatureQuery.prototype.getLookupMethod = function(lookupTable, subtable) { - var this$1 = this; - var substitutionType = this.getSubstitutionType(lookupTable, subtable); - switch (substitutionType) { - case "11": - return function(glyphIndex) { - return singleSubstitutionFormat1.apply( - this$1, - [glyphIndex, subtable] - ); - }; - case "12": - return function(glyphIndex) { - return singleSubstitutionFormat2.apply( - this$1, - [glyphIndex, subtable] - ); - }; - case "63": - return function(contextParams) { - return chainingSubstitutionFormat3.apply( - this$1, - [contextParams, subtable] - ); - }; - case "41": - return function(contextParams) { - return ligatureSubstitutionFormat1.apply( - this$1, - [contextParams, subtable] - ); - }; - case "21": - return function(glyphIndex) { - return decompositionSubstitutionFormat1.apply( - this$1, - [glyphIndex, subtable] - ); - }; - default: - throw new Error( - "lookupType: " + lookupTable.lookupType + " - substFormat: " + subtable.substFormat + " is not yet supported" - ); - } -}; -FeatureQuery.prototype.lookupFeature = function(query) { - var contextParams = query.contextParams; - var currentIndex = contextParams.index; - var feature = this.getFeature({ - tag: query.tag, - script: query.script - }); - if (!feature) { - return new Error( - "font '" + this.font.names.fullName.en + "' doesn't support feature '" + query.tag + "' for script '" + query.script + "'." - ); - } - var lookups = this.getFeatureLookups(feature); - var substitutions = [].concat(contextParams.context); - for (var l2 = 0; l2 < lookups.length; l2++) { - var lookupTable = lookups[l2]; - var subtables = this.getLookupSubtables(lookupTable); - for (var s = 0; s < subtables.length; s++) { - var subtable = subtables[s]; - var substType = this.getSubstitutionType(lookupTable, subtable); - var lookup = this.getLookupMethod(lookupTable, subtable); - var substitution = void 0; - switch (substType) { - case "11": - substitution = lookup(contextParams.current); - if (substitution) { - substitutions.splice(currentIndex, 1, new SubstitutionAction({ - id: 11, - tag: query.tag, - substitution - })); - } - break; - case "12": - substitution = lookup(contextParams.current); - if (substitution) { - substitutions.splice(currentIndex, 1, new SubstitutionAction({ - id: 12, - tag: query.tag, - substitution - })); - } - break; - case "63": - substitution = lookup(contextParams); - if (Array.isArray(substitution) && substitution.length) { - substitutions.splice(currentIndex, 1, new SubstitutionAction({ - id: 63, - tag: query.tag, - substitution - })); - } - break; - case "41": - substitution = lookup(contextParams); - if (substitution) { - substitutions.splice(currentIndex, 1, new SubstitutionAction({ - id: 41, - tag: query.tag, - substitution - })); - } - break; - case "21": - substitution = lookup(contextParams.current); - if (substitution) { - substitutions.splice(currentIndex, 1, new SubstitutionAction({ - id: 21, - tag: query.tag, - substitution - })); - } - break; - } - contextParams = new ContextParams(substitutions, currentIndex); - if (Array.isArray(substitution) && !substitution.length) { - continue; - } - substitution = null; - } - } - return substitutions.length ? substitutions : null; -}; -FeatureQuery.prototype.supports = function(query) { - if (!query.script) { - return false; - } - this.getScriptFeatures(query.script); - var supportedScript = this.features.hasOwnProperty(query.script); - if (!query.tag) { - return supportedScript; - } - var supportedFeature = this.features[query.script].some(function(feature) { - return feature.tag === query.tag; - }); - return supportedScript && supportedFeature; -}; -FeatureQuery.prototype.getLookupSubtables = function(lookupTable) { - return lookupTable.subtables || null; -}; -FeatureQuery.prototype.getLookupByIndex = function(index2) { - var lookups = this.font.tables.gsub.lookups; - return lookups[index2] || null; -}; -FeatureQuery.prototype.getFeatureLookups = function(feature) { - return feature.lookupListIndexes.map(this.getLookupByIndex.bind(this)); -}; -FeatureQuery.prototype.getFeature = function getFeature(query) { - if (!this.font) { - return { FAIL: "No font was found" }; - } - if (!this.features.hasOwnProperty(query.script)) { - this.getScriptFeatures(query.script); - } - var scriptFeatures = this.features[query.script]; - if (!scriptFeatures) { - return { FAIL: "No feature for script " + query.script }; - } - if (!scriptFeatures.tags[query.tag]) { - return null; - } - return this.features[query.script].tags[query.tag]; -}; -function arabicWordStartCheck(contextParams) { - var char = contextParams.current; - var prevChar = contextParams.get(-1); - return ( - // ? arabic first char - prevChar === null && isArabicChar(char) || // ? arabic char preceded with a non arabic char - !isArabicChar(prevChar) && isArabicChar(char) - ); -} -function arabicWordEndCheck(contextParams) { - var nextChar = contextParams.get(1); - return ( - // ? last arabic char - nextChar === null || // ? next char is not arabic - !isArabicChar(nextChar) - ); -} -var arabicWordCheck = { - startCheck: arabicWordStartCheck, - endCheck: arabicWordEndCheck -}; -function arabicSentenceStartCheck(contextParams) { - var char = contextParams.current; - var prevChar = contextParams.get(-1); - return ( - // ? an arabic char preceded with a non arabic char - (isArabicChar(char) || isTashkeelArabicChar(char)) && !isArabicChar(prevChar) - ); -} -function arabicSentenceEndCheck(contextParams) { - var nextChar = contextParams.get(1); - switch (true) { - case nextChar === null: - return true; - case (!isArabicChar(nextChar) && !isTashkeelArabicChar(nextChar)): - var nextIsWhitespace = isWhiteSpace(nextChar); - if (!nextIsWhitespace) { - return true; - } - if (nextIsWhitespace) { - var arabicCharAhead = false; - arabicCharAhead = contextParams.lookahead.some( - function(c2) { - return isArabicChar(c2) || isTashkeelArabicChar(c2); - } - ); - if (!arabicCharAhead) { - return true; - } - } - break; - default: - return false; - } -} -var arabicSentenceCheck = { - startCheck: arabicSentenceStartCheck, - endCheck: arabicSentenceEndCheck -}; -function singleSubstitutionFormat1$1(action, tokens, index2) { - tokens[index2].setState(action.tag, action.substitution); -} -function singleSubstitutionFormat2$1(action, tokens, index2) { - tokens[index2].setState(action.tag, action.substitution); -} -function chainingSubstitutionFormat3$1(action, tokens, index2) { - action.substitution.forEach(function(subst, offset) { - var token = tokens[index2 + offset]; - token.setState(action.tag, subst); - }); -} -function ligatureSubstitutionFormat1$1(action, tokens, index2) { - var token = tokens[index2]; - token.setState(action.tag, action.substitution.ligGlyph); - var compsCount = action.substitution.components.length; - for (var i = 0; i < compsCount; i++) { - token = tokens[index2 + i + 1]; - token.setState("deleted", true); - } -} -var SUBSTITUTIONS = { - 11: singleSubstitutionFormat1$1, - 12: singleSubstitutionFormat2$1, - 63: chainingSubstitutionFormat3$1, - 41: ligatureSubstitutionFormat1$1 -}; -function applySubstitution(action, tokens, index2) { - if (action instanceof SubstitutionAction && SUBSTITUTIONS[action.id]) { - SUBSTITUTIONS[action.id](action, tokens, index2); - } -} -function willConnectPrev(charContextParams) { - var backtrack = [].concat(charContextParams.backtrack); - for (var i = backtrack.length - 1; i >= 0; i--) { - var prevChar = backtrack[i]; - var isolated = isIsolatedArabicChar(prevChar); - var tashkeel = isTashkeelArabicChar(prevChar); - if (!isolated && !tashkeel) { - return true; - } - if (isolated) { - return false; - } - } - return false; -} -function willConnectNext(charContextParams) { - if (isIsolatedArabicChar(charContextParams.current)) { - return false; - } - for (var i = 0; i < charContextParams.lookahead.length; i++) { - var nextChar = charContextParams.lookahead[i]; - var tashkeel = isTashkeelArabicChar(nextChar); - if (!tashkeel) { - return true; - } - } - return false; -} -function arabicPresentationForms(range) { - var this$1 = this; - var script = "arab"; - var tags = this.featuresTags[script]; - var tokens = this.tokenizer.getRangeTokens(range); - if (tokens.length === 1) { - return; - } - var contextParams = new ContextParams( - tokens.map( - function(token) { - return token.getState("glyphIndex"); - } - ), - 0 - ); - var charContextParams = new ContextParams( - tokens.map( - function(token) { - return token.char; - } - ), - 0 - ); - tokens.forEach(function(token, index2) { - if (isTashkeelArabicChar(token.char)) { - return; - } - contextParams.setCurrentIndex(index2); - charContextParams.setCurrentIndex(index2); - var CONNECT = 0; - if (willConnectPrev(charContextParams)) { - CONNECT |= 1; - } - if (willConnectNext(charContextParams)) { - CONNECT |= 2; - } - var tag; - switch (CONNECT) { - case 1: - tag = "fina"; - break; - case 2: - tag = "init"; - break; - case 3: - tag = "medi"; - break; - } - if (tags.indexOf(tag) === -1) { - return; - } - var substitutions = this$1.query.lookupFeature({ - tag, - script, - contextParams - }); - if (substitutions instanceof Error) { - return console.info(substitutions.message); - } - substitutions.forEach(function(action, index3) { - if (action instanceof SubstitutionAction) { - applySubstitution(action, tokens, index3); - contextParams.context[index3] = action.substitution; - } - }); - }); -} -function getContextParams(tokens, index2) { - var context = tokens.map(function(token) { - return token.activeState.value; - }); - return new ContextParams(context, index2 || 0); -} -function arabicRequiredLigatures(range) { - var this$1 = this; - var script = "arab"; - var tokens = this.tokenizer.getRangeTokens(range); - var contextParams = getContextParams(tokens); - contextParams.context.forEach(function(glyphIndex, index2) { - contextParams.setCurrentIndex(index2); - var substitutions = this$1.query.lookupFeature({ - tag: "rlig", - script, - contextParams - }); - if (substitutions.length) { - substitutions.forEach( - function(action) { - return applySubstitution(action, tokens, index2); - } - ); - contextParams = getContextParams(tokens); - } - }); -} -function latinWordStartCheck(contextParams) { - var char = contextParams.current; - var prevChar = contextParams.get(-1); - return ( - // ? latin first char - prevChar === null && isLatinChar(char) || // ? latin char preceded with a non latin char - !isLatinChar(prevChar) && isLatinChar(char) - ); -} -function latinWordEndCheck(contextParams) { - var nextChar = contextParams.get(1); - return ( - // ? last latin char - nextChar === null || // ? next char is not latin - !isLatinChar(nextChar) - ); -} -var latinWordCheck = { - startCheck: latinWordStartCheck, - endCheck: latinWordEndCheck -}; -function getContextParams$1(tokens, index2) { - var context = tokens.map(function(token) { - return token.activeState.value; - }); - return new ContextParams(context, index2 || 0); -} -function latinLigature(range) { - var this$1 = this; - var script = "latn"; - var tokens = this.tokenizer.getRangeTokens(range); - var contextParams = getContextParams$1(tokens); - contextParams.context.forEach(function(glyphIndex, index2) { - contextParams.setCurrentIndex(index2); - var substitutions = this$1.query.lookupFeature({ - tag: "liga", - script, - contextParams - }); - if (substitutions.length) { - substitutions.forEach( - function(action) { - return applySubstitution(action, tokens, index2); - } - ); - contextParams = getContextParams$1(tokens); - } - }); -} -function Bidi(baseDir) { - this.baseDir = baseDir || "ltr"; - this.tokenizer = new Tokenizer(); - this.featuresTags = {}; -} -Bidi.prototype.setText = function(text2) { - this.text = text2; -}; -Bidi.prototype.contextChecks = { - latinWordCheck, - arabicWordCheck, - arabicSentenceCheck -}; -function registerContextChecker(checkId) { - var check2 = this.contextChecks[checkId + "Check"]; - return this.tokenizer.registerContextChecker( - checkId, - check2.startCheck, - check2.endCheck - ); -} -function tokenizeText() { - registerContextChecker.call(this, "latinWord"); - registerContextChecker.call(this, "arabicWord"); - registerContextChecker.call(this, "arabicSentence"); - return this.tokenizer.tokenize(this.text); -} -function reverseArabicSentences() { - var this$1 = this; - var ranges = this.tokenizer.getContextRanges("arabicSentence"); - ranges.forEach(function(range) { - var rangeTokens = this$1.tokenizer.getRangeTokens(range); - this$1.tokenizer.replaceRange( - range.startIndex, - range.endOffset, - rangeTokens.reverse() - ); - }); -} -Bidi.prototype.registerFeatures = function(script, tags) { - var this$1 = this; - var supportedTags = tags.filter( - function(tag) { - return this$1.query.supports({ script, tag }); - } - ); - if (!this.featuresTags.hasOwnProperty(script)) { - this.featuresTags[script] = supportedTags; - } else { - this.featuresTags[script] = this.featuresTags[script].concat(supportedTags); - } -}; -Bidi.prototype.applyFeatures = function(font, features) { - if (!font) { - throw new Error( - "No valid font was provided to apply features" - ); - } - if (!this.query) { - this.query = new FeatureQuery(font); - } - for (var f = 0; f < features.length; f++) { - var feature = features[f]; - if (!this.query.supports({ script: feature.script })) { - continue; - } - this.registerFeatures(feature.script, feature.tags); - } -}; -Bidi.prototype.registerModifier = function(modifierId, condition, modifier) { - this.tokenizer.registerModifier(modifierId, condition, modifier); -}; -function checkGlyphIndexStatus() { - if (this.tokenizer.registeredModifiers.indexOf("glyphIndex") === -1) { - throw new Error( - "glyphIndex modifier is required to apply arabic presentation features." - ); - } -} -function applyArabicPresentationForms() { - var this$1 = this; - var script = "arab"; - if (!this.featuresTags.hasOwnProperty(script)) { - return; - } - checkGlyphIndexStatus.call(this); - var ranges = this.tokenizer.getContextRanges("arabicWord"); - ranges.forEach(function(range) { - arabicPresentationForms.call(this$1, range); - }); -} -function applyArabicRequireLigatures() { - var this$1 = this; - var script = "arab"; - if (!this.featuresTags.hasOwnProperty(script)) { - return; - } - var tags = this.featuresTags[script]; - if (tags.indexOf("rlig") === -1) { - return; - } - checkGlyphIndexStatus.call(this); - var ranges = this.tokenizer.getContextRanges("arabicWord"); - ranges.forEach(function(range) { - arabicRequiredLigatures.call(this$1, range); - }); -} -function applyLatinLigatures() { - var this$1 = this; - var script = "latn"; - if (!this.featuresTags.hasOwnProperty(script)) { - return; - } - var tags = this.featuresTags[script]; - if (tags.indexOf("liga") === -1) { - return; - } - checkGlyphIndexStatus.call(this); - var ranges = this.tokenizer.getContextRanges("latinWord"); - ranges.forEach(function(range) { - latinLigature.call(this$1, range); - }); -} -Bidi.prototype.checkContextReady = function(contextId) { - return !!this.tokenizer.getContext(contextId); -}; -Bidi.prototype.applyFeaturesToContexts = function() { - if (this.checkContextReady("arabicWord")) { - applyArabicPresentationForms.call(this); - applyArabicRequireLigatures.call(this); - } - if (this.checkContextReady("latinWord")) { - applyLatinLigatures.call(this); - } - if (this.checkContextReady("arabicSentence")) { - reverseArabicSentences.call(this); - } -}; -Bidi.prototype.processText = function(text2) { - if (!this.text || this.text !== text2) { - this.setText(text2); - tokenizeText.call(this); - this.applyFeaturesToContexts(); - } -}; -Bidi.prototype.getBidiText = function(text2) { - this.processText(text2); - return this.tokenizer.getText(); -}; -Bidi.prototype.getTextGlyphs = function(text2) { - this.processText(text2); - var indexes = []; - for (var i = 0; i < this.tokenizer.tokens.length; i++) { - var token = this.tokenizer.tokens[i]; - if (token.state.deleted) { - continue; - } - var index2 = token.activeState.value; - indexes.push(Array.isArray(index2) ? index2[0] : index2); - } - return indexes; -}; -function Font2(options) { - options = options || {}; - options.tables = options.tables || {}; - if (!options.empty) { - checkArgument(options.familyName, "When creating a new Font object, familyName is required."); - checkArgument(options.styleName, "When creating a new Font object, styleName is required."); - checkArgument(options.unitsPerEm, "When creating a new Font object, unitsPerEm is required."); - checkArgument(options.ascender, "When creating a new Font object, ascender is required."); - checkArgument(options.descender <= 0, "When creating a new Font object, negative descender value is required."); - this.names = { - fontFamily: { en: options.familyName || " " }, - fontSubfamily: { en: options.styleName || " " }, - fullName: { en: options.fullName || options.familyName + " " + options.styleName }, - // postScriptName may not contain any whitespace - postScriptName: { en: options.postScriptName || (options.familyName + options.styleName).replace(/\s/g, "") }, - designer: { en: options.designer || " " }, - designerURL: { en: options.designerURL || " " }, - manufacturer: { en: options.manufacturer || " " }, - manufacturerURL: { en: options.manufacturerURL || " " }, - license: { en: options.license || " " }, - licenseURL: { en: options.licenseURL || " " }, - version: { en: options.version || "Version 0.1" }, - description: { en: options.description || " " }, - copyright: { en: options.copyright || " " }, - trademark: { en: options.trademark || " " } - }; - this.unitsPerEm = options.unitsPerEm || 1e3; - this.ascender = options.ascender; - this.descender = options.descender; - this.createdTimestamp = options.createdTimestamp; - this.tables = Object.assign(options.tables, { - os2: Object.assign({ - usWeightClass: options.weightClass || this.usWeightClasses.MEDIUM, - usWidthClass: options.widthClass || this.usWidthClasses.MEDIUM, - fsSelection: options.fsSelection || this.fsSelectionValues.REGULAR - }, options.tables.os2) - }); - } - this.supported = true; - this.glyphs = new glyphset.GlyphSet(this, options.glyphs || []); - this.encoding = new DefaultEncoding(this); - this.position = new Position(this); - this.substitution = new Substitution(this); - this.tables = this.tables || {}; - this._push = null; - this._hmtxTableData = {}; - Object.defineProperty(this, "hinting", { - get: function() { - if (this._hinting) { - return this._hinting; - } - if (this.outlinesFormat === "truetype") { - return this._hinting = new Hinting(this); - } - } - }); -} -Font2.prototype.hasChar = function(c2) { - return this.encoding.charToGlyphIndex(c2) !== null; -}; -Font2.prototype.charToGlyphIndex = function(s) { - return this.encoding.charToGlyphIndex(s); -}; -Font2.prototype.charToGlyph = function(c2) { - var glyphIndex = this.charToGlyphIndex(c2); - var glyph = this.glyphs.get(glyphIndex); - if (!glyph) { - glyph = this.glyphs.get(0); - } - return glyph; -}; -Font2.prototype.updateFeatures = function(options) { - return this.defaultRenderOptions.features.map(function(feature) { - if (feature.script === "latn") { - return { - script: "latn", - tags: feature.tags.filter(function(tag) { - return options[tag]; - }) - }; - } else { - return feature; - } - }); -}; -Font2.prototype.stringToGlyphs = function(s, options) { - var this$1 = this; - var bidi = new Bidi(); - var charToGlyphIndexMod = function(token) { - return this$1.charToGlyphIndex(token.char); - }; - bidi.registerModifier("glyphIndex", null, charToGlyphIndexMod); - var features = options ? this.updateFeatures(options.features) : this.defaultRenderOptions.features; - bidi.applyFeatures(this, features); - var indexes = bidi.getTextGlyphs(s); - var length2 = indexes.length; - var glyphs = new Array(length2); - var notdef = this.glyphs.get(0); - for (var i = 0; i < length2; i += 1) { - glyphs[i] = this.glyphs.get(indexes[i]) || notdef; - } - return glyphs; -}; -Font2.prototype.nameToGlyphIndex = function(name2) { - return this.glyphNames.nameToGlyphIndex(name2); -}; -Font2.prototype.nameToGlyph = function(name2) { - var glyphIndex = this.nameToGlyphIndex(name2); - var glyph = this.glyphs.get(glyphIndex); - if (!glyph) { - glyph = this.glyphs.get(0); - } - return glyph; -}; -Font2.prototype.glyphIndexToName = function(gid) { - if (!this.glyphNames.glyphIndexToName) { - return ""; - } - return this.glyphNames.glyphIndexToName(gid); -}; -Font2.prototype.getKerningValue = function(leftGlyph, rightGlyph) { - leftGlyph = leftGlyph.index || leftGlyph; - rightGlyph = rightGlyph.index || rightGlyph; - var gposKerning = this.position.defaultKerningTables; - if (gposKerning) { - return this.position.getKerningValue(gposKerning, leftGlyph, rightGlyph); - } - return this.kerningPairs[leftGlyph + "," + rightGlyph] || 0; -}; -Font2.prototype.defaultRenderOptions = { - kerning: true, - features: [ - /** - * these 4 features are required to render Arabic text properly - * and shouldn't be turned off when rendering arabic text. - */ - { script: "arab", tags: ["init", "medi", "fina", "rlig"] }, - { script: "latn", tags: ["liga", "rlig"] } - ] -}; -Font2.prototype.forEachGlyph = function(text2, x2, y2, fontSize, options, callback) { - x2 = x2 !== void 0 ? x2 : 0; - y2 = y2 !== void 0 ? y2 : 0; - fontSize = fontSize !== void 0 ? fontSize : 72; - options = Object.assign({}, this.defaultRenderOptions, options); - var fontScale = 1 / this.unitsPerEm * fontSize; - var glyphs = this.stringToGlyphs(text2, options); - var kerningLookups; - if (options.kerning) { - var script = options.script || this.position.getDefaultScriptName(); - kerningLookups = this.position.getKerningTables(script, options.language); - } - for (var i = 0; i < glyphs.length; i += 1) { - var glyph = glyphs[i]; - callback.call(this, glyph, x2, y2, fontSize, options); - if (glyph.advanceWidth) { - x2 += glyph.advanceWidth * fontScale; - } - if (options.kerning && i < glyphs.length - 1) { - var kerningValue = kerningLookups ? this.position.getKerningValue(kerningLookups, glyph.index, glyphs[i + 1].index) : this.getKerningValue(glyph, glyphs[i + 1]); - x2 += kerningValue * fontScale; - } - if (options.letterSpacing) { - x2 += options.letterSpacing * fontSize; - } else if (options.tracking) { - x2 += options.tracking / 1e3 * fontSize; - } - } - return x2; -}; -Font2.prototype.getPath = function(text2, x2, y2, fontSize, options) { - var fullPath = new Path2(); - this.forEachGlyph(text2, x2, y2, fontSize, options, function(glyph, gX, gY, gFontSize) { - var glyphPath = glyph.getPath(gX, gY, gFontSize, options, this); - fullPath.extend(glyphPath); - }); - return fullPath; -}; -Font2.prototype.getPaths = function(text2, x2, y2, fontSize, options) { - var glyphPaths = []; - this.forEachGlyph(text2, x2, y2, fontSize, options, function(glyph, gX, gY, gFontSize) { - var glyphPath = glyph.getPath(gX, gY, gFontSize, options, this); - glyphPaths.push(glyphPath); - }); - return glyphPaths; -}; -Font2.prototype.getAdvanceWidth = function(text2, fontSize, options) { - return this.forEachGlyph(text2, 0, 0, fontSize, options, function() { - }); -}; -Font2.prototype.draw = function(ctx, text2, x2, y2, fontSize, options) { - this.getPath(text2, x2, y2, fontSize, options).draw(ctx); -}; -Font2.prototype.drawPoints = function(ctx, text2, x2, y2, fontSize, options) { - this.forEachGlyph(text2, x2, y2, fontSize, options, function(glyph, gX, gY, gFontSize) { - glyph.drawPoints(ctx, gX, gY, gFontSize); - }); -}; -Font2.prototype.drawMetrics = function(ctx, text2, x2, y2, fontSize, options) { - this.forEachGlyph(text2, x2, y2, fontSize, options, function(glyph, gX, gY, gFontSize) { - glyph.drawMetrics(ctx, gX, gY, gFontSize); - }); -}; -Font2.prototype.getEnglishName = function(name2) { - var translations = this.names[name2]; - if (translations) { - return translations.en; - } -}; -Font2.prototype.validate = function() { - var _this = this; - function assert(predicate, message) { - } - function assertNamePresent(name2) { - var englishName = _this.getEnglishName(name2); - assert(englishName && englishName.trim().length > 0); - } - assertNamePresent("fontFamily"); - assertNamePresent("weightName"); - assertNamePresent("manufacturer"); - assertNamePresent("copyright"); - assertNamePresent("version"); - assert(this.unitsPerEm > 0); -}; -Font2.prototype.toTables = function() { - return sfnt.fontToTable(this); -}; -Font2.prototype.toBuffer = function() { - console.warn("Font.toBuffer is deprecated. Use Font.toArrayBuffer instead."); - return this.toArrayBuffer(); -}; -Font2.prototype.toArrayBuffer = function() { - var sfntTable = this.toTables(); - var bytes = sfntTable.encode(); - var buffer = new ArrayBuffer(bytes.length); - var intArray = new Uint8Array(buffer); - for (var i = 0; i < bytes.length; i++) { - intArray[i] = bytes[i]; - } - return buffer; -}; -Font2.prototype.download = function(fileName) { - var familyName = this.getEnglishName("fontFamily"); - var styleName = this.getEnglishName("fontSubfamily"); - fileName = fileName || familyName.replace(/\s/g, "") + "-" + styleName + ".otf"; - var arrayBuffer = this.toArrayBuffer(); - window.URL = window.URL || window.webkitURL; - if (window.URL) { - var dataView = new DataView(arrayBuffer); - var blob = new Blob([dataView], { type: "font/opentype" }); - var link = document.createElement("a"); - link.href = window.URL.createObjectURL(blob); - link.download = fileName; - var event = document.createEvent("MouseEvents"); - event.initEvent("click", true, false); - link.dispatchEvent(event); - } else { - console.warn("Font file could not be downloaded. Try using a different browser."); - } -}; -Font2.prototype.fsSelectionValues = { - ITALIC: 1, - //1 - UNDERSCORE: 2, - //2 - NEGATIVE: 4, - //4 - OUTLINED: 8, - //8 - STRIKEOUT: 16, - //16 - BOLD: 32, - //32 - REGULAR: 64, - //64 - USER_TYPO_METRICS: 128, - //128 - WWS: 256, - //256 - OBLIQUE: 512 - //512 -}; -Font2.prototype.usWidthClasses = { - ULTRA_CONDENSED: 1, - EXTRA_CONDENSED: 2, - CONDENSED: 3, - SEMI_CONDENSED: 4, - MEDIUM: 5, - SEMI_EXPANDED: 6, - EXPANDED: 7, - EXTRA_EXPANDED: 8, - ULTRA_EXPANDED: 9 -}; -Font2.prototype.usWeightClasses = { - THIN: 100, - EXTRA_LIGHT: 200, - LIGHT: 300, - NORMAL: 400, - MEDIUM: 500, - SEMI_BOLD: 600, - BOLD: 700, - EXTRA_BOLD: 800, - BLACK: 900 -}; -function addName(name2, names) { - var nameString = JSON.stringify(name2); - var nameID = 256; - for (var nameKey in names) { - var n2 = parseInt(nameKey); - if (!n2 || n2 < 256) { - continue; - } - if (JSON.stringify(names[nameKey]) === nameString) { - return n2; - } - if (nameID <= n2) { - nameID = n2 + 1; - } - } - names[nameID] = name2; - return nameID; -} -function makeFvarAxis(n2, axis, names) { - var nameID = addName(axis.name, names); - return [ - { name: "tag_" + n2, type: "TAG", value: axis.tag }, - { name: "minValue_" + n2, type: "FIXED", value: axis.minValue << 16 }, - { name: "defaultValue_" + n2, type: "FIXED", value: axis.defaultValue << 16 }, - { name: "maxValue_" + n2, type: "FIXED", value: axis.maxValue << 16 }, - { name: "flags_" + n2, type: "USHORT", value: 0 }, - { name: "nameID_" + n2, type: "USHORT", value: nameID } - ]; -} -function parseFvarAxis(data2, start, names) { - var axis = {}; - var p2 = new parse.Parser(data2, start); - axis.tag = p2.parseTag(); - axis.minValue = p2.parseFixed(); - axis.defaultValue = p2.parseFixed(); - axis.maxValue = p2.parseFixed(); - p2.skip("uShort", 1); - axis.name = names[p2.parseUShort()] || {}; - return axis; -} -function makeFvarInstance(n2, inst, axes, names) { - var nameID = addName(inst.name, names); - var fields = [ - { name: "nameID_" + n2, type: "USHORT", value: nameID }, - { name: "flags_" + n2, type: "USHORT", value: 0 } - ]; - for (var i = 0; i < axes.length; ++i) { - var axisTag = axes[i].tag; - fields.push({ - name: "axis_" + n2 + " " + axisTag, - type: "FIXED", - value: inst.coordinates[axisTag] << 16 - }); - } - return fields; -} -function parseFvarInstance(data2, start, axes, names) { - var inst = {}; - var p2 = new parse.Parser(data2, start); - inst.name = names[p2.parseUShort()] || {}; - p2.skip("uShort", 1); - inst.coordinates = {}; - for (var i = 0; i < axes.length; ++i) { - inst.coordinates[axes[i].tag] = p2.parseFixed(); - } - return inst; -} -function makeFvarTable(fvar2, names) { - var result = new table.Table("fvar", [ - { name: "version", type: "ULONG", value: 65536 }, - { name: "offsetToData", type: "USHORT", value: 0 }, - { name: "countSizePairs", type: "USHORT", value: 2 }, - { name: "axisCount", type: "USHORT", value: fvar2.axes.length }, - { name: "axisSize", type: "USHORT", value: 20 }, - { name: "instanceCount", type: "USHORT", value: fvar2.instances.length }, - { name: "instanceSize", type: "USHORT", value: 4 + fvar2.axes.length * 4 } - ]); - result.offsetToData = result.sizeOf(); - for (var i = 0; i < fvar2.axes.length; i++) { - result.fields = result.fields.concat(makeFvarAxis(i, fvar2.axes[i], names)); - } - for (var j = 0; j < fvar2.instances.length; j++) { - result.fields = result.fields.concat(makeFvarInstance(j, fvar2.instances[j], fvar2.axes, names)); - } - return result; -} -function parseFvarTable(data2, start, names) { - var p2 = new parse.Parser(data2, start); - var tableVersion = p2.parseULong(); - check.argument(tableVersion === 65536, "Unsupported fvar table version."); - var offsetToData = p2.parseOffset16(); - p2.skip("uShort", 1); - var axisCount = p2.parseUShort(); - var axisSize = p2.parseUShort(); - var instanceCount = p2.parseUShort(); - var instanceSize = p2.parseUShort(); - var axes = []; - for (var i = 0; i < axisCount; i++) { - axes.push(parseFvarAxis(data2, start + offsetToData + i * axisSize, names)); - } - var instances = []; - var instanceStart = start + offsetToData + axisCount * axisSize; - for (var j = 0; j < instanceCount; j++) { - instances.push(parseFvarInstance(data2, instanceStart + j * instanceSize, axes, names)); - } - return { axes, instances }; -} -var fvar = { make: makeFvarTable, parse: parseFvarTable }; -var attachList = function() { - return { - coverage: this.parsePointer(Parser2.coverage), - attachPoints: this.parseList(Parser2.pointer(Parser2.uShortList)) - }; -}; -var caretValue = function() { - var format = this.parseUShort(); - check.argument( - format === 1 || format === 2 || format === 3, - "Unsupported CaretValue table version." - ); - if (format === 1) { - return { coordinate: this.parseShort() }; - } else if (format === 2) { - return { pointindex: this.parseShort() }; - } else if (format === 3) { - return { coordinate: this.parseShort() }; - } -}; -var ligGlyph = function() { - return this.parseList(Parser2.pointer(caretValue)); -}; -var ligCaretList = function() { - return { - coverage: this.parsePointer(Parser2.coverage), - ligGlyphs: this.parseList(Parser2.pointer(ligGlyph)) - }; -}; -var markGlyphSets = function() { - this.parseUShort(); - return this.parseList(Parser2.pointer(Parser2.coverage)); -}; -function parseGDEFTable(data2, start) { - start = start || 0; - var p2 = new Parser2(data2, start); - var tableVersion = p2.parseVersion(1); - check.argument( - tableVersion === 1 || tableVersion === 1.2 || tableVersion === 1.3, - "Unsupported GDEF table version." - ); - var gdef2 = { - version: tableVersion, - classDef: p2.parsePointer(Parser2.classDef), - attachList: p2.parsePointer(attachList), - ligCaretList: p2.parsePointer(ligCaretList), - markAttachClassDef: p2.parsePointer(Parser2.classDef) - }; - if (tableVersion >= 1.2) { - gdef2.markGlyphSets = p2.parsePointer(markGlyphSets); - } - return gdef2; -} -var gdef = { parse: parseGDEFTable }; -var subtableParsers$1 = new Array(10); -subtableParsers$1[1] = function parseLookup12() { - var start = this.offset + this.relativeOffset; - var posformat = this.parseUShort(); - if (posformat === 1) { - return { - posFormat: 1, - coverage: this.parsePointer(Parser2.coverage), - value: this.parseValueRecord() - }; - } else if (posformat === 2) { - return { - posFormat: 2, - coverage: this.parsePointer(Parser2.coverage), - values: this.parseValueRecordList() - }; - } - check.assert(false, "0x" + start.toString(16) + ": GPOS lookup type 1 format must be 1 or 2."); -}; -subtableParsers$1[2] = function parseLookup22() { - var start = this.offset + this.relativeOffset; - var posFormat = this.parseUShort(); - check.assert(posFormat === 1 || posFormat === 2, "0x" + start.toString(16) + ": GPOS lookup type 2 format must be 1 or 2."); - var coverage = this.parsePointer(Parser2.coverage); - var valueFormat1 = this.parseUShort(); - var valueFormat2 = this.parseUShort(); - if (posFormat === 1) { - return { - posFormat, - coverage, - valueFormat1, - valueFormat2, - pairSets: this.parseList(Parser2.pointer(Parser2.list(function() { - return { - // pairValueRecord - secondGlyph: this.parseUShort(), - value1: this.parseValueRecord(valueFormat1), - value2: this.parseValueRecord(valueFormat2) - }; - }))) - }; - } else if (posFormat === 2) { - var classDef1 = this.parsePointer(Parser2.classDef); - var classDef2 = this.parsePointer(Parser2.classDef); - var class1Count = this.parseUShort(); - var class2Count = this.parseUShort(); - return { - // Class Pair Adjustment - posFormat, - coverage, - valueFormat1, - valueFormat2, - classDef1, - classDef2, - class1Count, - class2Count, - classRecords: this.parseList(class1Count, Parser2.list(class2Count, function() { - return { - value1: this.parseValueRecord(valueFormat1), - value2: this.parseValueRecord(valueFormat2) - }; - })) - }; - } -}; -subtableParsers$1[3] = function parseLookup32() { - return { error: "GPOS Lookup 3 not supported" }; -}; -subtableParsers$1[4] = function parseLookup42() { - return { error: "GPOS Lookup 4 not supported" }; -}; -subtableParsers$1[5] = function parseLookup52() { - return { error: "GPOS Lookup 5 not supported" }; -}; -subtableParsers$1[6] = function parseLookup62() { - return { error: "GPOS Lookup 6 not supported" }; -}; -subtableParsers$1[7] = function parseLookup72() { - return { error: "GPOS Lookup 7 not supported" }; -}; -subtableParsers$1[8] = function parseLookup82() { - return { error: "GPOS Lookup 8 not supported" }; -}; -subtableParsers$1[9] = function parseLookup9() { - return { error: "GPOS Lookup 9 not supported" }; -}; -function parseGposTable(data2, start) { - start = start || 0; - var p2 = new Parser2(data2, start); - var tableVersion = p2.parseVersion(1); - check.argument(tableVersion === 1 || tableVersion === 1.1, "Unsupported GPOS table version " + tableVersion); - if (tableVersion === 1) { - return { - version: tableVersion, - scripts: p2.parseScriptList(), - features: p2.parseFeatureList(), - lookups: p2.parseLookupList(subtableParsers$1) - }; - } else { - return { - version: tableVersion, - scripts: p2.parseScriptList(), - features: p2.parseFeatureList(), - lookups: p2.parseLookupList(subtableParsers$1), - variations: p2.parseFeatureVariationsList() - }; - } -} -var subtableMakers$1 = new Array(10); -function makeGposTable(gpos2) { - return new table.Table("GPOS", [ - { name: "version", type: "ULONG", value: 65536 }, - { name: "scripts", type: "TABLE", value: new table.ScriptList(gpos2.scripts) }, - { name: "features", type: "TABLE", value: new table.FeatureList(gpos2.features) }, - { name: "lookups", type: "TABLE", value: new table.LookupList(gpos2.lookups, subtableMakers$1) } - ]); -} -var gpos = { parse: parseGposTable, make: makeGposTable }; -function parseWindowsKernTable(p2) { - var pairs = {}; - p2.skip("uShort"); - var subtableVersion = p2.parseUShort(); - check.argument(subtableVersion === 0, "Unsupported kern sub-table version."); - p2.skip("uShort", 2); - var nPairs = p2.parseUShort(); - p2.skip("uShort", 3); - for (var i = 0; i < nPairs; i += 1) { - var leftIndex = p2.parseUShort(); - var rightIndex = p2.parseUShort(); - var value2 = p2.parseShort(); - pairs[leftIndex + "," + rightIndex] = value2; - } - return pairs; -} -function parseMacKernTable(p2) { - var pairs = {}; - p2.skip("uShort"); - var nTables = p2.parseULong(); - if (nTables > 1) { - console.warn("Only the first kern subtable is supported."); - } - p2.skip("uLong"); - var coverage = p2.parseUShort(); - var subtableVersion = coverage & 255; - p2.skip("uShort"); - if (subtableVersion === 0) { - var nPairs = p2.parseUShort(); - p2.skip("uShort", 3); - for (var i = 0; i < nPairs; i += 1) { - var leftIndex = p2.parseUShort(); - var rightIndex = p2.parseUShort(); - var value2 = p2.parseShort(); - pairs[leftIndex + "," + rightIndex] = value2; - } - } - return pairs; -} -function parseKernTable(data2, start) { - var p2 = new parse.Parser(data2, start); - var tableVersion = p2.parseUShort(); - if (tableVersion === 0) { - return parseWindowsKernTable(p2); - } else if (tableVersion === 1) { - return parseMacKernTable(p2); - } else { - throw new Error("Unsupported kern table version (" + tableVersion + ")."); - } -} -var kern = { parse: parseKernTable }; -function parseLocaTable(data2, start, numGlyphs, shortVersion) { - var p2 = new parse.Parser(data2, start); - var parseFn = shortVersion ? p2.parseUShort : p2.parseULong; - var glyphOffsets = []; - for (var i = 0; i < numGlyphs + 1; i += 1) { - var glyphOffset = parseFn.call(p2); - if (shortVersion) { - glyphOffset *= 2; - } - glyphOffsets.push(glyphOffset); - } - return glyphOffsets; -} -var loca = { parse: parseLocaTable }; -function loadFromUrl(url, callback) { - var request = new XMLHttpRequest(); - request.open("get", url, true); - request.responseType = "arraybuffer"; - request.onload = function() { - if (request.response) { - return callback(null, request.response); - } else { - return callback("Font could not be loaded: " + request.statusText); - } - }; - request.onerror = function() { - callback("Font could not be loaded"); - }; - request.send(); -} -function parseOpenTypeTableEntries(data2, numTables) { - var tableEntries = []; - var p2 = 12; - for (var i = 0; i < numTables; i += 1) { - var tag = parse.getTag(data2, p2); - var checksum = parse.getULong(data2, p2 + 4); - var offset = parse.getULong(data2, p2 + 8); - var length2 = parse.getULong(data2, p2 + 12); - tableEntries.push({ tag, checksum, offset, length: length2, compression: false }); - p2 += 16; - } - return tableEntries; -} -function parseWOFFTableEntries(data2, numTables) { - var tableEntries = []; - var p2 = 44; - for (var i = 0; i < numTables; i += 1) { - var tag = parse.getTag(data2, p2); - var offset = parse.getULong(data2, p2 + 4); - var compLength = parse.getULong(data2, p2 + 8); - var origLength = parse.getULong(data2, p2 + 12); - var compression = void 0; - if (compLength < origLength) { - compression = "WOFF"; - } else { - compression = false; - } - tableEntries.push({ - tag, - offset, - compression, - compressedLength: compLength, - length: origLength - }); - p2 += 20; - } - return tableEntries; -} -function uncompressTable(data2, tableEntry) { - if (tableEntry.compression === "WOFF") { - var inBuffer = new Uint8Array(data2.buffer, tableEntry.offset + 2, tableEntry.compressedLength - 2); - var outBuffer = new Uint8Array(tableEntry.length); - tinyInflate(inBuffer, outBuffer); - if (outBuffer.byteLength !== tableEntry.length) { - throw new Error("Decompression error: " + tableEntry.tag + " decompressed length doesn't match recorded length"); - } - var view = new DataView(outBuffer.buffer, 0); - return { data: view, offset: 0 }; - } else { - return { data: data2, offset: tableEntry.offset }; - } -} -function parseBuffer(buffer, opt) { - opt = opt === void 0 || opt === null ? {} : opt; - var indexToLocFormat; - var ltagTable; - var font = new Font2({ empty: true }); - var data2 = new DataView(buffer, 0); - var numTables; - var tableEntries = []; - var signature = parse.getTag(data2, 0); - if (signature === String.fromCharCode(0, 1, 0, 0) || signature === "true" || signature === "typ1") { - font.outlinesFormat = "truetype"; - numTables = parse.getUShort(data2, 4); - tableEntries = parseOpenTypeTableEntries(data2, numTables); - } else if (signature === "OTTO") { - font.outlinesFormat = "cff"; - numTables = parse.getUShort(data2, 4); - tableEntries = parseOpenTypeTableEntries(data2, numTables); - } else if (signature === "wOFF") { - var flavor = parse.getTag(data2, 4); - if (flavor === String.fromCharCode(0, 1, 0, 0)) { - font.outlinesFormat = "truetype"; - } else if (flavor === "OTTO") { - font.outlinesFormat = "cff"; - } else { - throw new Error("Unsupported OpenType flavor " + signature); - } - numTables = parse.getUShort(data2, 12); - tableEntries = parseWOFFTableEntries(data2, numTables); - } else { - throw new Error("Unsupported OpenType signature " + signature); - } - var cffTableEntry; - var fvarTableEntry; - var glyfTableEntry; - var gdefTableEntry; - var gposTableEntry; - var gsubTableEntry; - var hmtxTableEntry; - var kernTableEntry; - var locaTableEntry; - var nameTableEntry; - var metaTableEntry; - var p2; - for (var i = 0; i < numTables; i += 1) { - var tableEntry = tableEntries[i]; - var table2 = void 0; - switch (tableEntry.tag) { - case "cmap": - table2 = uncompressTable(data2, tableEntry); - font.tables.cmap = cmap.parse(table2.data, table2.offset); - font.encoding = new CmapEncoding(font.tables.cmap); - break; - case "cvt ": - table2 = uncompressTable(data2, tableEntry); - p2 = new parse.Parser(table2.data, table2.offset); - font.tables.cvt = p2.parseShortList(tableEntry.length / 2); - break; - case "fvar": - fvarTableEntry = tableEntry; - break; - case "fpgm": - table2 = uncompressTable(data2, tableEntry); - p2 = new parse.Parser(table2.data, table2.offset); - font.tables.fpgm = p2.parseByteList(tableEntry.length); - break; - case "head": - table2 = uncompressTable(data2, tableEntry); - font.tables.head = head.parse(table2.data, table2.offset); - font.unitsPerEm = font.tables.head.unitsPerEm; - indexToLocFormat = font.tables.head.indexToLocFormat; - break; - case "hhea": - table2 = uncompressTable(data2, tableEntry); - font.tables.hhea = hhea.parse(table2.data, table2.offset); - font.ascender = font.tables.hhea.ascender; - font.descender = font.tables.hhea.descender; - font.numberOfHMetrics = font.tables.hhea.numberOfHMetrics; - break; - case "hmtx": - hmtxTableEntry = tableEntry; - break; - case "ltag": - table2 = uncompressTable(data2, tableEntry); - ltagTable = ltag.parse(table2.data, table2.offset); - break; - case "COLR": - table2 = uncompressTable(data2, tableEntry); - font.tables.colr = colr.parse(table2.data, table2.offset); - break; - case "CPAL": - table2 = uncompressTable(data2, tableEntry); - font.tables.cpal = cpal.parse(table2.data, table2.offset); - break; - case "maxp": - table2 = uncompressTable(data2, tableEntry); - font.tables.maxp = maxp.parse(table2.data, table2.offset); - font.numGlyphs = font.tables.maxp.numGlyphs; - break; - case "name": - nameTableEntry = tableEntry; - break; - case "OS/2": - table2 = uncompressTable(data2, tableEntry); - font.tables.os2 = os2.parse(table2.data, table2.offset); - break; - case "post": - table2 = uncompressTable(data2, tableEntry); - font.tables.post = post.parse(table2.data, table2.offset); - font.glyphNames = new GlyphNames(font.tables.post); - break; - case "prep": - table2 = uncompressTable(data2, tableEntry); - p2 = new parse.Parser(table2.data, table2.offset); - font.tables.prep = p2.parseByteList(tableEntry.length); - break; - case "glyf": - glyfTableEntry = tableEntry; - break; - case "loca": - locaTableEntry = tableEntry; - break; - case "CFF ": - cffTableEntry = tableEntry; - break; - case "kern": - kernTableEntry = tableEntry; - break; - case "GDEF": - gdefTableEntry = tableEntry; - break; - case "GPOS": - gposTableEntry = tableEntry; - break; - case "GSUB": - gsubTableEntry = tableEntry; - break; - case "meta": - metaTableEntry = tableEntry; - break; - } - } - var nameTable = uncompressTable(data2, nameTableEntry); - font.tables.name = _name.parse(nameTable.data, nameTable.offset, ltagTable); - font.names = font.tables.name; - if (glyfTableEntry && locaTableEntry) { - var shortVersion = indexToLocFormat === 0; - var locaTable = uncompressTable(data2, locaTableEntry); - var locaOffsets = loca.parse(locaTable.data, locaTable.offset, font.numGlyphs, shortVersion); - var glyfTable = uncompressTable(data2, glyfTableEntry); - font.glyphs = glyf.parse(glyfTable.data, glyfTable.offset, locaOffsets, font, opt); - } else if (cffTableEntry) { - var cffTable = uncompressTable(data2, cffTableEntry); - cff.parse(cffTable.data, cffTable.offset, font, opt); - } else { - throw new Error("Font doesn't contain TrueType or CFF outlines."); - } - var hmtxTable = uncompressTable(data2, hmtxTableEntry); - hmtx.parse(font, hmtxTable.data, hmtxTable.offset, font.numberOfHMetrics, font.numGlyphs, font.glyphs, opt); - addGlyphNames(font, opt); - if (kernTableEntry) { - var kernTable = uncompressTable(data2, kernTableEntry); - font.kerningPairs = kern.parse(kernTable.data, kernTable.offset); - } else { - font.kerningPairs = {}; - } - if (gdefTableEntry) { - var gdefTable = uncompressTable(data2, gdefTableEntry); - font.tables.gdef = gdef.parse(gdefTable.data, gdefTable.offset); - } - if (gposTableEntry) { - var gposTable = uncompressTable(data2, gposTableEntry); - font.tables.gpos = gpos.parse(gposTable.data, gposTable.offset); - font.position.init(); - } - if (gsubTableEntry) { - var gsubTable = uncompressTable(data2, gsubTableEntry); - font.tables.gsub = gsub.parse(gsubTable.data, gsubTable.offset); - } - if (fvarTableEntry) { - var fvarTable = uncompressTable(data2, fvarTableEntry); - font.tables.fvar = fvar.parse(fvarTable.data, fvarTable.offset, font.names); - } - if (metaTableEntry) { - var metaTable = uncompressTable(data2, metaTableEntry); - font.tables.meta = meta.parse(metaTable.data, metaTable.offset); - font.metas = font.tables.meta; - } - return font; -} -function load(url, callback, opt) { - opt = opt === void 0 || opt === null ? {} : opt; - return new Promise(function(resolve, reject2) { - loadFromUrl(url, function(err2, arrayBuffer) { - if (err2) { - if (callback) { - return callback(err2); - } else { - reject2(err2); - } - } - var font; - try { - font = parseBuffer(arrayBuffer, opt); - } catch (e) { - if (callback) { - return callback(e, null); - } else { - reject2(e); - } - } - if (callback) { - return callback(null, font); - } else { - resolve(font); - } - }); - }); -} -var opentype = Object.freeze({ - __proto__: null, - Font: Font2, - Glyph, - Path: Path2, - BoundingBox, - _parse: parse, - parse: parseBuffer, - load -}); -var opentype_module_default = opentype; - -// node_modules/three/examples/jsm/loaders/TTFLoader.js -var TTFLoader = class extends Loader { - constructor(manager) { - super(manager); - this.reversed = false; - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(this.requestHeader); - loader.setWithCredentials(this.withCredentials); - loader.load(url, function(buffer) { - try { - onLoad(scope.parse(buffer)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(arraybuffer) { - function convert(font, reversed) { - const round = Math.round; - const glyphs = {}; - const scale2 = 1e5 / ((font.unitsPerEm || 2048) * 72); - const glyphIndexMap = font.encoding.cmap.glyphIndexMap; - const unicodes = Object.keys(glyphIndexMap); - for (let i = 0; i < unicodes.length; i++) { - const unicode = unicodes[i]; - const glyph = font.glyphs.glyphs[glyphIndexMap[unicode]]; - if (unicode !== void 0) { - const token = { - ha: round(glyph.advanceWidth * scale2), - x_min: round(glyph.xMin * scale2), - x_max: round(glyph.xMax * scale2), - o: "" - }; - if (reversed) { - glyph.path.commands = reverseCommands(glyph.path.commands); - } - glyph.path.commands.forEach(function(command) { - if (command.type.toLowerCase() === "c") { - command.type = "b"; - } - token.o += command.type.toLowerCase() + " "; - if (command.x !== void 0 && command.y !== void 0) { - token.o += round(command.x * scale2) + " " + round(command.y * scale2) + " "; - } - if (command.x1 !== void 0 && command.y1 !== void 0) { - token.o += round(command.x1 * scale2) + " " + round(command.y1 * scale2) + " "; - } - if (command.x2 !== void 0 && command.y2 !== void 0) { - token.o += round(command.x2 * scale2) + " " + round(command.y2 * scale2) + " "; - } - }); - glyphs[String.fromCodePoint(glyph.unicode)] = token; - } - } - return { - glyphs, - familyName: font.getEnglishName("fullName"), - ascender: round(font.ascender * scale2), - descender: round(font.descender * scale2), - underlinePosition: font.tables.post.underlinePosition, - underlineThickness: font.tables.post.underlineThickness, - boundingBox: { - xMin: font.tables.head.xMin, - xMax: font.tables.head.xMax, - yMin: font.tables.head.yMin, - yMax: font.tables.head.yMax - }, - resolution: 1e3, - original_font_information: font.tables.name - }; - } - function reverseCommands(commands) { - const paths = []; - let path; - commands.forEach(function(c2) { - if (c2.type.toLowerCase() === "m") { - path = [c2]; - paths.push(path); - } else if (c2.type.toLowerCase() !== "z") { - path.push(c2); - } - }); - const reversed = []; - paths.forEach(function(p2) { - const result = { - type: "m", - x: p2[p2.length - 1].x, - y: p2[p2.length - 1].y - }; - reversed.push(result); - for (let i = p2.length - 1; i > 0; i--) { - const command = p2[i]; - const result2 = { type: command.type }; - if (command.x2 !== void 0 && command.y2 !== void 0) { - result2.x1 = command.x2; - result2.y1 = command.y2; - result2.x2 = command.x1; - result2.y2 = command.y1; - } else if (command.x1 !== void 0 && command.y1 !== void 0) { - result2.x1 = command.x1; - result2.y1 = command.y1; - } - result2.x = p2[i - 1].x; - result2.y = p2[i - 1].y; - reversed.push(result2); - } - }); - return reversed; - } - return convert(opentype_module_default.parse(arraybuffer), this.reversed); - } -}; - -// node_modules/three/examples/jsm/loaders/TiltLoader.js -var TiltLoader = class extends Loader { - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(this.manager); - loader.setPath(this.path); - loader.setResponseType("arraybuffer"); - loader.setWithCredentials(this.withCredentials); - loader.load(url, function(buffer) { - try { - onLoad(scope.parse(buffer)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(buffer) { - const group = new Group(); - const zip = unzipSync(new Uint8Array(buffer.slice(16))); - const metadata = JSON.parse(strFromU8(zip["metadata.json"])); - const data2 = new DataView(zip["data.sketch"].buffer); - const num_strokes = data2.getInt32(16, true); - const brushes = {}; - let offset = 20; - for (let i = 0; i < num_strokes; i++) { - const brush_index = data2.getInt32(offset, true); - const brush_color = [ - data2.getFloat32(offset + 4, true), - data2.getFloat32(offset + 8, true), - data2.getFloat32(offset + 12, true), - data2.getFloat32(offset + 16, true) - ]; - const brush_size = data2.getFloat32(offset + 20, true); - const stroke_mask = data2.getUint32(offset + 24, true); - const controlpoint_mask = data2.getUint32(offset + 28, true); - let offset_stroke_mask = 0; - let offset_controlpoint_mask = 0; - for (let j = 0; j < 4; j++) { - const byte = 1 << j; - if ((stroke_mask & byte) > 0) offset_stroke_mask += 4; - if ((controlpoint_mask & byte) > 0) offset_controlpoint_mask += 4; - } - offset = offset + 28 + offset_stroke_mask + 4; - const num_control_points = data2.getInt32(offset, true); - const positions = new Float32Array(num_control_points * 3); - const quaternions = new Float32Array(num_control_points * 4); - offset = offset + 4; - for (let j = 0, k2 = 0; j < positions.length; j += 3, k2 += 4) { - positions[j + 0] = data2.getFloat32(offset + 0, true); - positions[j + 1] = data2.getFloat32(offset + 4, true); - positions[j + 2] = data2.getFloat32(offset + 8, true); - quaternions[k2 + 0] = data2.getFloat32(offset + 12, true); - quaternions[k2 + 1] = data2.getFloat32(offset + 16, true); - quaternions[k2 + 2] = data2.getFloat32(offset + 20, true); - quaternions[k2 + 3] = data2.getFloat32(offset + 24, true); - offset = offset + 28 + offset_controlpoint_mask; - } - if (brush_index in brushes === false) { - brushes[brush_index] = []; - } - brushes[brush_index].push([positions, quaternions, brush_size, brush_color]); - } - for (const brush_index in brushes) { - const geometry = new StrokeGeometry(brushes[brush_index]); - const material = getMaterial(metadata.BrushIndex[brush_index]); - group.add(new Mesh(geometry, material)); - } - return group; - } -}; -var StrokeGeometry = class extends BufferGeometry { - constructor(strokes) { - super(); - const vertices = []; - const colors = []; - const uvs = []; - const position2 = new Vector3(); - const prevPosition = new Vector3(); - const quaternion = new Quaternion(); - const prevQuaternion = new Quaternion(); - const vector1 = new Vector3(); - const vector2 = new Vector3(); - const vector3 = new Vector3(); - const vector4 = new Vector3(); - const color = new Color(); - for (const k2 in strokes) { - const stroke = strokes[k2]; - const positions = stroke[0]; - const quaternions = stroke[1]; - const size2 = stroke[2]; - const rgba = stroke[3]; - const alpha = stroke[3][3]; - color.fromArray(rgba).convertSRGBToLinear(); - prevPosition.fromArray(positions, 0); - prevQuaternion.fromArray(quaternions, 0); - for (let i = 3, j = 4, l2 = positions.length; i < l2; i += 3, j += 4) { - position2.fromArray(positions, i); - quaternion.fromArray(quaternions, j); - vector1.set(-size2, 0, 0); - vector1.applyQuaternion(quaternion); - vector1.add(position2); - vector2.set(size2, 0, 0); - vector2.applyQuaternion(quaternion); - vector2.add(position2); - vector3.set(size2, 0, 0); - vector3.applyQuaternion(prevQuaternion); - vector3.add(prevPosition); - vector4.set(-size2, 0, 0); - vector4.applyQuaternion(prevQuaternion); - vector4.add(prevPosition); - vertices.push(vector1.x, vector1.y, -vector1.z); - vertices.push(vector2.x, vector2.y, -vector2.z); - vertices.push(vector4.x, vector4.y, -vector4.z); - vertices.push(vector2.x, vector2.y, -vector2.z); - vertices.push(vector3.x, vector3.y, -vector3.z); - vertices.push(vector4.x, vector4.y, -vector4.z); - prevPosition.copy(position2); - prevQuaternion.copy(quaternion); - colors.push(...color, alpha); - colors.push(...color, alpha); - colors.push(...color, alpha); - colors.push(...color, alpha); - colors.push(...color, alpha); - colors.push(...color, alpha); - const p1 = i / l2; - const p2 = (i - 3) / l2; - uvs.push(p1, 0); - uvs.push(p1, 1); - uvs.push(p2, 0); - uvs.push(p1, 1); - uvs.push(p2, 1); - uvs.push(p2, 0); - } - } - this.setAttribute("position", new BufferAttribute(new Float32Array(vertices), 3)); - this.setAttribute("color", new BufferAttribute(new Float32Array(colors), 4)); - this.setAttribute("uv", new BufferAttribute(new Float32Array(uvs), 2)); - } -}; -var BRUSH_LIST_ARRAY = { - "89d104cd-d012-426b-b5b3-bbaee63ac43c": "Bubbles", - "700f3aa8-9a7c-2384-8b8a-ea028905dd8c": "CelVinyl", - "0f0ff7b2-a677-45eb-a7d6-0cd7206f4816": "ChromaticWave", - "1161af82-50cf-47db-9706-0c3576d43c43": "CoarseBristles", - "79168f10-6961-464a-8be1-57ed364c5600": "CoarseBristlesSingleSided", - "1caa6d7d-f015-3f54-3a4b-8b5354d39f81": "Comet", - "c8313697-2563-47fc-832e-290f4c04b901": "DiamondHull", - "4391aaaa-df73-4396-9e33-31e4e4930b27": "Disco", - "d1d991f2-e7a0-4cf1-b328-f57e915e6260": "DotMarker", - "6a1cf9f9-032c-45ec-9b1d-a6680bee30f7": "Dots", - "0d3889f3-3ede-470c-8af4-f44813306126": "DoubleTaperedFlat", - "0d3889f3-3ede-470c-8af4-de4813306126": "DoubleTaperedMarker", - "d0262945-853c-4481-9cbd-88586bed93cb": "DuctTape", - "3ca16e2f-bdcd-4da2-8631-dcef342f40f1": "DuctTapeSingleSided", - "f6e85de3-6dcc-4e7f-87fd-cee8c3d25d51": "Electricity", - "02ffb866-7fb2-4d15-b761-1012cefb1360": "Embers", - "cb92b597-94ca-4255-b017-0e3f42f12f9e": "Fire", - "2d35bcf0-e4d8-452c-97b1-3311be063130": "Flat", - "55303bc4-c749-4a72-98d9-d23e68e76e18": "FlatDeprecated", - "280c0a7a-aad8-416c-a7d2-df63d129ca70": "FlatSingleSided", - "cf019139-d41c-4eb0-a1d0-5cf54b0a42f3": "Highlighter", - "6a1cf9f9-032c-45ec-9b6e-a6680bee32e9": "HyperGrid", - "dce872c2-7b49-4684-b59b-c45387949c5c": "Hypercolor", - "e8ef32b1-baa8-460a-9c2c-9cf8506794f5": "HypercolorSingleSided", - "2f212815-f4d3-c1a4-681a-feeaf9c6dc37": "Icing", - "f5c336cf-5108-4b40-ade9-c687504385ab": "Ink", - "c0012095-3ffd-4040-8ee1-fc180d346eaa": "InkSingleSided", - "4a76a27a-44d8-4bfe-9a8c-713749a499b0": "Leaves", - "ea19de07-d0c0-4484-9198-18489a3c1487": "LeavesSingleSided", - "2241cd32-8ba2-48a5-9ee7-2caef7e9ed62": "Light", - "4391aaaa-df81-4396-9e33-31e4e4930b27": "LightWire", - "d381e0f5-3def-4a0d-8853-31e9200bcbda": "Lofted", - "429ed64a-4e97-4466-84d3-145a861ef684": "Marker", - "79348357-432d-4746-8e29-0e25c112e3aa": "MatteHull", - "b2ffef01-eaaa-4ab5-aa64-95a2c4f5dbc6": "NeonPulse", - "f72ec0e7-a844-4e38-82e3-140c44772699": "OilPaint", - "c515dad7-4393-4681-81ad-162ef052241b": "OilPaintSingleSided", - "f1114e2e-eb8d-4fde-915a-6e653b54e9f5": "Paper", - "759f1ebd-20cd-4720-8d41-234e0da63716": "PaperSingleSided", - "e0abbc80-0f80-e854-4970-8924a0863dcc": "Petal", - "c33714d1-b2f9-412e-bd50-1884c9d46336": "Plasma", - "ad1ad437-76e2-450d-a23a-e17f8310b960": "Rainbow", - "faaa4d44-fcfb-4177-96be-753ac0421ba3": "ShinyHull", - "70d79cca-b159-4f35-990c-f02193947fe8": "Smoke", - "d902ed8b-d0d1-476c-a8de-878a79e3a34c": "Snow", - "accb32f5-4509-454f-93f8-1df3fd31df1b": "SoftHighlighter", - "cf7f0059-7aeb-53a4-2b67-c83d863a9ffa": "Spikes", - "8dc4a70c-d558-4efd-a5ed-d4e860f40dc3": "Splatter", - "7a1c8107-50c5-4b70-9a39-421576d6617e": "SplatterSingleSided", - "0eb4db27-3f82-408d-b5a1-19ebd7d5b711": "Stars", - "44bb800a-fbc3-4592-8426-94ecb05ddec3": "Streamers", - "0077f88c-d93a-42f3-b59b-b31c50cdb414": "Taffy", - "b468c1fb-f254-41ed-8ec9-57030bc5660c": "TaperedFlat", - "c8ccb53d-ae13-45ef-8afb-b730d81394eb": "TaperedFlatSingleSided", - "d90c6ad8-af0f-4b54-b422-e0f92abe1b3c": "TaperedMarker", - "1a26b8c0-8a07-4f8a-9fac-d2ef36e0cad0": "TaperedMarker_Flat", - "75b32cf0-fdd6-4d89-a64b-e2a00b247b0f": "ThickPaint", - "fdf0326a-c0d1-4fed-b101-9db0ff6d071f": "ThickPaintSingleSided", - "4391385a-df73-4396-9e33-31e4e4930b27": "Toon", - "a8fea537-da7c-4d4b-817f-24f074725d6d": "UnlitHull", - "d229d335-c334-495a-a801-660ac8a87360": "VelvetInk", - "10201aa3-ebc2-42d8-84b7-2e63f6eeb8ab": "Waveform", - "b67c0e81-ce6d-40a8-aeb0-ef036b081aa3": "WetPaint", - "dea67637-cd1a-27e4-c9b1-52f4bbcb84e5": "WetPaintSingleSided", - "5347acf0-a8e2-47b6-8346-30c70719d763": "WigglyGraphite", - "e814fef1-97fd-7194-4a2f-50c2bb918be2": "WigglyGraphiteSingleSided", - "4391385a-cf83-4396-9e33-31e4e4930b27": "Wire" -}; -var common = { - "colors": { - "BloomColor": ` - vec3 BloomColor(vec3 color, float gain) { - // Guarantee that there's at least a little bit of all 3 channels. - // This makes fully-saturated strokes (which only have 2 non-zero - // color channels) eventually clip to white rather than to a secondary. - float cmin = length(color.rgb) * .05; - color.rgb = max(color.rgb, vec3(cmin, cmin, cmin)); - // If we try to remove this pow() from .a, it brightens up - // pressure-sensitive strokes; looks better as-is. - color = pow(color, vec3(2.2)); - color.rgb *= 2. * exp(gain * 10.); - return color; - } - `, - "LinearToSrgb": ` - vec3 LinearToSrgb(vec3 color) { - // Approximation http://chilliant.blogspot.com/2012/08/srgb-approximations-for-hlsl.html - vec3 linearColor = color.rgb; - vec3 S1 = sqrt(linearColor); - vec3 S2 = sqrt(S1); - vec3 S3 = sqrt(S2); - color.rgb = 0.662002687 * S1 + 0.684122060 * S2 - 0.323583601 * S3 - 0.0225411470 * linearColor; - return color; - } - `, - "hsv": ` - // uniform sampler2D lookupTex; - vec4 lookup(vec4 textureColor) { - return textureColor; - } - - vec3 lookup(vec3 textureColor) { - return textureColor; - } - - vec3 hsv2rgb( vec3 hsv ) { - vec3 rgb = clamp( abs(mod(hsv.x*6.0+vec3(0.0,4.0,2.0),6.0)-3.0)-1.0, 0.0, 1.0 ); - return hsv.z * mix( vec3(1.0), rgb, hsv.y); - } - - vec3 rgb2hsv( vec3 rgb ) { - vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); - vec4 p = mix(vec4(rgb.bg, K.wz), vec4(rgb.gb, K.xy), step(rgb.b, rgb.g)); - vec4 q = mix(vec4(p.xyw, rgb.r), vec4(rgb.r, p.yzx), step(p.x, rgb.r)); - - float d = q.x - min(q.w, q.y); - float e = 1.0e-10; - - return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); - } - `, - "SrgbToLinear": ` - vec3 SrgbToLinear(vec3 color) { - // Approximation http://chilliant.blogspot.com/2012/08/srgb-approximations-for-hlsl.html - vec3 sRGB = color.rgb; - color.rgb = sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); - return color; - } - ` - } -}; -var shaders = null; -function getShaders() { - if (shaders === null) { - const loader = new TextureLoader().setPath("./textures/tiltbrush/"); - shaders = { - "Light": { - uniforms: { - mainTex: { value: loader.load("Light.webp") }, - alphaTest: { value: 0.067 }, - emission_gain: { value: 0.45 }, - alpha: { value: 1 } - }, - vertexShader: ` - precision highp float; - precision highp int; - - attribute vec2 uv; - attribute vec4 color; - attribute vec3 position; - - uniform mat4 modelMatrix; - uniform mat4 modelViewMatrix; - uniform mat4 projectionMatrix; - uniform mat4 viewMatrix; - uniform mat3 normalMatrix; - uniform vec3 cameraPosition; - - varying vec2 vUv; - varying vec3 vColor; - - ${common.colors.LinearToSrgb} - ${common.colors.hsv} - - void main() { - - vUv = uv; - - vColor = lookup(color.rgb); - - vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 ); - - gl_Position = projectionMatrix * mvPosition; - - } - `, - fragmentShader: ` - precision highp float; - precision highp int; - - uniform float emission_gain; - - uniform sampler2D mainTex; - uniform float alphaTest; - - varying vec2 vUv; - varying vec3 vColor; - - ${common.colors.BloomColor} - ${common.colors.SrgbToLinear} - - void main(){ - vec4 col = texture2D(mainTex, vUv); - vec3 color = vColor; - color = BloomColor(color, emission_gain); - color = color * col.rgb; - color = color * col.a; - color = SrgbToLinear(color); - gl_FragColor = vec4(color, 1.0); - } - `, - side: 2, - transparent: true, - depthFunc: 2, - depthWrite: true, - depthTest: false, - blending: 5, - blendDst: 201, - blendDstAlpha: 201, - blendEquation: 100, - blendEquationAlpha: 100, - blendSrc: 201, - blendSrcAlpha: 201 - } - }; - } - return shaders; -} -function getMaterial(GUID) { - const name2 = BRUSH_LIST_ARRAY[GUID]; - switch (name2) { - case "Light": - return new RawShaderMaterial(getShaders().Light); - default: - return new MeshBasicMaterial({ vertexColors: true, side: DoubleSide }); - } -} - -// node_modules/three/examples/jsm/loaders/USDZLoader.js -var USDAParser = class { - parse(text2) { - const data2 = {}; - const lines = text2.split("\n"); - let string = null; - let target = data2; - const stack = [data2]; - for (const line2 of lines) { - if (line2.includes("=")) { - const assignment = line2.split("="); - const lhs = assignment[0].trim(); - const rhs = assignment[1].trim(); - if (rhs.endsWith("{")) { - const group = {}; - stack.push(group); - target[lhs] = group; - target = group; - } else if (rhs.endsWith("(")) { - const values2 = rhs.slice(0, -1); - target[lhs] = values2; - const meta2 = {}; - stack.push(meta2); - target = meta2; - } else { - target[lhs] = rhs; - } - } else if (line2.endsWith("{")) { - const group = target[string] || {}; - stack.push(group); - target[string] = group; - target = group; - } else if (line2.endsWith("}")) { - stack.pop(); - if (stack.length === 0) continue; - target = stack[stack.length - 1]; - } else if (line2.endsWith("(")) { - const meta2 = {}; - stack.push(meta2); - string = line2.split("(")[0].trim() || string; - target[string] = meta2; - target = meta2; - } else if (line2.endsWith(")")) { - stack.pop(); - target = stack[stack.length - 1]; - } else { - string = line2.trim(); - } - } - return data2; - } -}; -var USDZLoader = class extends Loader { - constructor(manager) { - super(manager); - } - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(scope.manager); - loader.setPath(scope.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(scope.requestHeader); - loader.setWithCredentials(scope.withCredentials); - loader.load(url, function(text2) { - try { - onLoad(scope.parse(text2)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(buffer) { - const parser = new USDAParser(); - function parseAssets(zip2) { - const data2 = {}; - const loader = new FileLoader(); - loader.setResponseType("arraybuffer"); - for (const filename in zip2) { - if (filename.endsWith("png")) { - const blob = new Blob([zip2[filename]], { type: { type: "image/png" } }); - data2[filename] = URL.createObjectURL(blob); - } - if (filename.endsWith("usd") || filename.endsWith("usda")) { - if (isCrateFile(zip2[filename])) { - throw Error("THREE.USDZLoader: Crate files (.usdc or binary .usd) are not supported."); - } - const text3 = strFromU8(zip2[filename]); - data2[filename] = parser.parse(text3); - } - } - return data2; - } - function isCrateFile(buffer2) { - const fileHeader = buffer2.slice(0, 7); - const crateHeader = new Uint8Array([80, 88, 82, 45, 85, 83, 68, 67]); - return fileHeader.every((value2, index2) => value2 === crateHeader[index2]); - } - function findUSD(zip2) { - if (zip2.length < 1) return void 0; - const firstFileName = Object.keys(zip2)[0]; - let isCrate = false; - if (firstFileName.endsWith("usda")) return zip2[firstFileName]; - if (firstFileName.endsWith("usdc")) { - isCrate = true; - } else if (firstFileName.endsWith("usd")) { - if (!isCrateFile(zip2[firstFileName])) { - return zip2[firstFileName]; - } else { - isCrate = true; - } - } - if (isCrate) { - throw Error("THREE.USDZLoader: Crate files (.usdc or binary .usd) are not supported."); - } - } - const zip = unzipSync(new Uint8Array(buffer)); - const assets = parseAssets(zip); - const file = findUSD(zip); - const text2 = strFromU8(file); - const root = parser.parse(text2); - function findMeshGeometry(data2) { - if (!data2) return void 0; - if ("prepend references" in data2) { - const reference = data2["prepend references"]; - const parts = reference.split("@"); - const path = parts[1].replace(/^.\//, ""); - const id = parts[2].replace(/^<\//, "").replace(/>$/, ""); - return findGeometry(assets[path], id); - } - return findGeometry(data2); - } - function findGeometry(data2, id) { - if (!data2) return void 0; - if (id !== void 0) { - const def = `def Mesh "${id}"`; - if (def in data2) { - return data2[def]; - } - } - for (const name2 in data2) { - const object = data2[name2]; - if (name2.startsWith("def Mesh")) { - return object; - } - if (typeof object === "object") { - const geometry = findGeometry(object); - if (geometry) return geometry; - } - } - } - function buildGeometry(data2) { - if (!data2) return void 0; - const geometry = new BufferGeometry(); - let indices = null; - let counts = null; - let uvs = null; - let positionsLength = -1; - if ("int[] faceVertexIndices" in data2) { - indices = JSON.parse(data2["int[] faceVertexIndices"]); - } - if ("int[] faceVertexCounts" in data2) { - counts = JSON.parse(data2["int[] faceVertexCounts"]); - indices = toTriangleIndices(indices, counts); - } - if ("point3f[] points" in data2) { - const positions = JSON.parse(data2["point3f[] points"].replace(/[()]*/g, "")); - positionsLength = positions.length; - let attribute = new BufferAttribute(new Float32Array(positions), 3); - if (indices !== null) attribute = toFlatBufferAttribute(attribute, indices); - geometry.setAttribute("position", attribute); - } - if ("float2[] primvars:st" in data2) { - data2["texCoord2f[] primvars:st"] = data2["float2[] primvars:st"]; - } - if ("texCoord2f[] primvars:st" in data2) { - uvs = JSON.parse(data2["texCoord2f[] primvars:st"].replace(/[()]*/g, "")); - let attribute = new BufferAttribute(new Float32Array(uvs), 2); - if (indices !== null) attribute = toFlatBufferAttribute(attribute, indices); - geometry.setAttribute("uv", attribute); - } - if ("int[] primvars:st:indices" in data2 && uvs !== null) { - const attribute = new BufferAttribute(new Float32Array(uvs), 2); - let indices2 = JSON.parse(data2["int[] primvars:st:indices"]); - indices2 = toTriangleIndices(indices2, counts); - geometry.setAttribute("uv", toFlatBufferAttribute(attribute, indices2)); - } - if ("normal3f[] normals" in data2) { - const normals = JSON.parse(data2["normal3f[] normals"].replace(/[()]*/g, "")); - let attribute = new BufferAttribute(new Float32Array(normals), 3); - if (normals.length === positionsLength) { - if (indices !== null) attribute = toFlatBufferAttribute(attribute, indices); - } else { - let indices2 = Array.from(Array(normals.length / 3).keys()); - indices2 = toTriangleIndices(indices2, counts); - attribute = toFlatBufferAttribute(attribute, indices2); - } - geometry.setAttribute("normal", attribute); - } else { - geometry.computeVertexNormals(); - } - return geometry; - } - function toTriangleIndices(rawIndices, counts) { - const indices = []; - for (let i = 0; i < counts.length; i++) { - const count = counts[i]; - const stride = i * count; - if (count === 3) { - const a2 = rawIndices[stride + 0]; - const b3 = rawIndices[stride + 1]; - const c2 = rawIndices[stride + 2]; - indices.push(a2, b3, c2); - } else if (count === 4) { - const a2 = rawIndices[stride + 0]; - const b3 = rawIndices[stride + 1]; - const c2 = rawIndices[stride + 2]; - const d = rawIndices[stride + 3]; - indices.push(a2, b3, c2); - indices.push(a2, c2, d); - } else { - console.warn("THREE.USDZLoader: Face vertex count of %s unsupported.", count); - } - } - return indices; - } - function toFlatBufferAttribute(attribute, indices) { - const array = attribute.array; - const itemSize = attribute.itemSize; - const array2 = new array.constructor(indices.length * itemSize); - let index2 = 0, index22 = 0; - for (let i = 0, l2 = indices.length; i < l2; i++) { - index2 = indices[i] * itemSize; - for (let j = 0; j < itemSize; j++) { - array2[index22++] = array[index2++]; - } - } - return new BufferAttribute(array2, itemSize); - } - function findMeshMaterial(data2) { - if (!data2) return void 0; - if ("rel material:binding" in data2) { - const reference = data2["rel material:binding"]; - const id = reference.replace(/^<\//, "").replace(/>$/, ""); - const parts = id.split("/"); - return findMaterial(root, ` "${parts[1]}"`); - } - return findMaterial(data2); - } - function findMaterial(data2, id = "") { - for (const name2 in data2) { - const object = data2[name2]; - if (name2.startsWith("def Material" + id)) { - return object; - } - if (typeof object === "object") { - const material = findMaterial(object, id); - if (material) return material; - } - } - } - function setTextureParams(map2, data_value) { - if (data_value["float inputs:rotation"]) { - map2.rotation = parseFloat(data_value["float inputs:rotation"]); - } - if (data_value["float2 inputs:scale"]) { - map2.repeat = new Vector2().fromArray(JSON.parse("[" + data_value["float2 inputs:scale"].replace(/[()]*/g, "") + "]")); - } - if (data_value["float2 inputs:translation"]) { - map2.offset = new Vector2().fromArray(JSON.parse("[" + data_value["float2 inputs:translation"].replace(/[()]*/g, "") + "]")); - } - } - function buildMaterial2(data2) { - const material = new MeshPhysicalMaterial(); - if (data2 !== void 0) { - const surfaceConnection = data2["token outputs:surface.connect"]; - const surfaceName = /(\w+).output/.exec(surfaceConnection)[1]; - const surface = data2[`def Shader "${surfaceName}"`]; - if (surface !== void 0) { - if ("color3f inputs:diffuseColor.connect" in surface) { - const path = surface["color3f inputs:diffuseColor.connect"]; - const sampler = findTexture(root, /(\w+).output/.exec(path)[1]); - material.map = buildTexture(sampler); - material.map.colorSpace = SRGBColorSpace; - if ('def Shader "Transform2d_diffuse"' in data2) { - setTextureParams(material.map, data2['def Shader "Transform2d_diffuse"']); - } - } else if ("color3f inputs:diffuseColor" in surface) { - const color = surface["color3f inputs:diffuseColor"].replace(/[()]*/g, ""); - material.color.fromArray(JSON.parse("[" + color + "]")); - } - if ("color3f inputs:emissiveColor.connect" in surface) { - const path = surface["color3f inputs:emissiveColor.connect"]; - const sampler = findTexture(root, /(\w+).output/.exec(path)[1]); - material.emissiveMap = buildTexture(sampler); - material.emissiveMap.colorSpace = SRGBColorSpace; - material.emissive.set(16777215); - if ('def Shader "Transform2d_emissive"' in data2) { - setTextureParams(material.emissiveMap, data2['def Shader "Transform2d_emissive"']); - } - } else if ("color3f inputs:emissiveColor" in surface) { - const color = surface["color3f inputs:emissiveColor"].replace(/[()]*/g, ""); - material.emissive.fromArray(JSON.parse("[" + color + "]")); - } - if ("normal3f inputs:normal.connect" in surface) { - const path = surface["normal3f inputs:normal.connect"]; - const sampler = findTexture(root, /(\w+).output/.exec(path)[1]); - material.normalMap = buildTexture(sampler); - material.normalMap.colorSpace = NoColorSpace; - if ('def Shader "Transform2d_normal"' in data2) { - setTextureParams(material.normalMap, data2['def Shader "Transform2d_normal"']); - } - } - if ("float inputs:roughness.connect" in surface) { - const path = surface["float inputs:roughness.connect"]; - const sampler = findTexture(root, /(\w+).output/.exec(path)[1]); - material.roughness = 1; - material.roughnessMap = buildTexture(sampler); - material.roughnessMap.colorSpace = NoColorSpace; - if ('def Shader "Transform2d_roughness"' in data2) { - setTextureParams(material.roughnessMap, data2['def Shader "Transform2d_roughness"']); - } - } else if ("float inputs:roughness" in surface) { - material.roughness = parseFloat(surface["float inputs:roughness"]); - } - if ("float inputs:metallic.connect" in surface) { - const path = surface["float inputs:metallic.connect"]; - const sampler = findTexture(root, /(\w+).output/.exec(path)[1]); - material.metalness = 1; - material.metalnessMap = buildTexture(sampler); - material.metalnessMap.colorSpace = NoColorSpace; - if ('def Shader "Transform2d_metallic"' in data2) { - setTextureParams(material.metalnessMap, data2['def Shader "Transform2d_metallic"']); - } - } else if ("float inputs:metallic" in surface) { - material.metalness = parseFloat(surface["float inputs:metallic"]); - } - if ("float inputs:clearcoat.connect" in surface) { - const path = surface["float inputs:clearcoat.connect"]; - const sampler = findTexture(root, /(\w+).output/.exec(path)[1]); - material.clearcoat = 1; - material.clearcoatMap = buildTexture(sampler); - material.clearcoatMap.colorSpace = NoColorSpace; - if ('def Shader "Transform2d_clearcoat"' in data2) { - setTextureParams(material.clearcoatMap, data2['def Shader "Transform2d_clearcoat"']); - } - } else if ("float inputs:clearcoat" in surface) { - material.clearcoat = parseFloat(surface["float inputs:clearcoat"]); - } - if ("float inputs:clearcoatRoughness.connect" in surface) { - const path = surface["float inputs:clearcoatRoughness.connect"]; - const sampler = findTexture(root, /(\w+).output/.exec(path)[1]); - material.clearcoatRoughness = 1; - material.clearcoatRoughnessMap = buildTexture(sampler); - material.clearcoatRoughnessMap.colorSpace = NoColorSpace; - if ('def Shader "Transform2d_clearcoatRoughness"' in data2) { - setTextureParams(material.clearcoatRoughnessMap, data2['def Shader "Transform2d_clearcoatRoughness"']); - } - } else if ("float inputs:clearcoatRoughness" in surface) { - material.clearcoatRoughness = parseFloat(surface["float inputs:clearcoatRoughness"]); - } - if ("float inputs:ior" in surface) { - material.ior = parseFloat(surface["float inputs:ior"]); - } - if ("float inputs:occlusion.connect" in surface) { - const path = surface["float inputs:occlusion.connect"]; - const sampler = findTexture(root, /(\w+).output/.exec(path)[1]); - material.aoMap = buildTexture(sampler); - material.aoMap.colorSpace = NoColorSpace; - if ('def Shader "Transform2d_occlusion"' in data2) { - setTextureParams(material.aoMap, data2['def Shader "Transform2d_occlusion"']); - } - } - } - } - return material; - } - function findTexture(data2, id) { - for (const name2 in data2) { - const object = data2[name2]; - if (name2.startsWith(`def Shader "${id}"`)) { - return object; - } - if (typeof object === "object") { - const texture = findTexture(object, id); - if (texture) return texture; - } - } - } - function buildTexture(data2) { - if ("asset inputs:file" in data2) { - const path = data2["asset inputs:file"].replace(/@*/g, "").trim(); - const loader = new TextureLoader(); - const texture = loader.load(assets[path]); - const map2 = { - '"clamp"': ClampToEdgeWrapping, - '"mirror"': MirroredRepeatWrapping, - '"repeat"': RepeatWrapping - }; - if ("token inputs:wrapS" in data2) { - texture.wrapS = map2[data2["token inputs:wrapS"]]; - } - if ("token inputs:wrapT" in data2) { - texture.wrapT = map2[data2["token inputs:wrapT"]]; - } - return texture; - } - return null; - } - function buildObject(data2) { - const geometry = buildGeometry(findMeshGeometry(data2)); - const material = buildMaterial2(findMeshMaterial(data2)); - const mesh = geometry ? new Mesh(geometry, material) : new Object3D(); - if ("matrix4d xformOp:transform" in data2) { - const array = JSON.parse("[" + data2["matrix4d xformOp:transform"].replace(/[()]*/g, "") + "]"); - mesh.matrix.fromArray(array); - mesh.matrix.decompose(mesh.position, mesh.quaternion, mesh.scale); - } - return mesh; - } - function buildHierarchy(data2, group2) { - for (const name2 in data2) { - if (name2.startsWith("def Scope")) { - buildHierarchy(data2[name2], group2); - } else if (name2.startsWith("def Xform")) { - const mesh = buildObject(data2[name2]); - if (/def Xform "(\w+)"/.test(name2)) { - mesh.name = /def Xform "(\w+)"/.exec(name2)[1]; - } - group2.add(mesh); - buildHierarchy(data2[name2], mesh); - } - } - } - const group = new Group(); - buildHierarchy(root, group); - return group; - } -}; - -// node_modules/three/examples/jsm/loaders/VOXLoader.js -var VOXLoader = class extends Loader { - load(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new FileLoader(scope.manager); - loader.setPath(scope.path); - loader.setResponseType("arraybuffer"); - loader.setRequestHeader(scope.requestHeader); - loader.load(url, function(buffer) { - try { - onLoad(scope.parse(buffer)); - } catch (e) { - if (onError) { - onError(e); - } else { - console.error(e); - } - scope.manager.itemError(url); - } - }, onProgress, onError); - } - parse(buffer) { - const data2 = new DataView(buffer); - const id = data2.getUint32(0, true); - const version = data2.getUint32(4, true); - if (id !== 542658390) { - console.error("THREE.VOXLoader: Invalid VOX file."); - return; - } - if (version !== 150) { - console.error("THREE.VOXLoader: Invalid VOX file. Unsupported version:", version); - return; - } - const DEFAULT_PALETTE = [ - 0, - 4294967295, - 4291624959, - 4288282623, - 4284940287, - 4281597951, - 4278255615, - 4294954239, - 4291611903, - 4288269567, - 4284927231, - 4281584895, - 4278242559, - 4294941183, - 4291598847, - 4288256511, - 4284914175, - 4281571839, - 4278229503, - 4294928127, - 4291585791, - 4288243455, - 4284901119, - 4281558783, - 4278216447, - 4294915071, - 4291572735, - 4288230399, - 4284888063, - 4281545727, - 4278203391, - 4294902015, - 4291559679, - 4288217343, - 4284875007, - 4281532671, - 4278190335, - 4294967244, - 4291624908, - 4288282572, - 4284940236, - 4281597900, - 4278255564, - 4294954188, - 4291611852, - 4288269516, - 4284927180, - 4281584844, - 4278242508, - 4294941132, - 4291598796, - 4288256460, - 4284914124, - 4281571788, - 4278229452, - 4294928076, - 4291585740, - 4288243404, - 4284901068, - 4281558732, - 4278216396, - 4294915020, - 4291572684, - 4288230348, - 4284888012, - 4281545676, - 4278203340, - 4294901964, - 4291559628, - 4288217292, - 4284874956, - 4281532620, - 4278190284, - 4294967193, - 4291624857, - 4288282521, - 4284940185, - 4281597849, - 4278255513, - 4294954137, - 4291611801, - 4288269465, - 4284927129, - 4281584793, - 4278242457, - 4294941081, - 4291598745, - 4288256409, - 4284914073, - 4281571737, - 4278229401, - 4294928025, - 4291585689, - 4288243353, - 4284901017, - 4281558681, - 4278216345, - 4294914969, - 4291572633, - 4288230297, - 4284887961, - 4281545625, - 4278203289, - 4294901913, - 4291559577, - 4288217241, - 4284874905, - 4281532569, - 4278190233, - 4294967142, - 4291624806, - 4288282470, - 4284940134, - 4281597798, - 4278255462, - 4294954086, - 4291611750, - 4288269414, - 4284927078, - 4281584742, - 4278242406, - 4294941030, - 4291598694, - 4288256358, - 4284914022, - 4281571686, - 4278229350, - 4294927974, - 4291585638, - 4288243302, - 4284900966, - 4281558630, - 4278216294, - 4294914918, - 4291572582, - 4288230246, - 4284887910, - 4281545574, - 4278203238, - 4294901862, - 4291559526, - 4288217190, - 4284874854, - 4281532518, - 4278190182, - 4294967091, - 4291624755, - 4288282419, - 4284940083, - 4281597747, - 4278255411, - 4294954035, - 4291611699, - 4288269363, - 4284927027, - 4281584691, - 4278242355, - 4294940979, - 4291598643, - 4288256307, - 4284913971, - 4281571635, - 4278229299, - 4294927923, - 4291585587, - 4288243251, - 4284900915, - 4281558579, - 4278216243, - 4294914867, - 4291572531, - 4288230195, - 4284887859, - 4281545523, - 4278203187, - 4294901811, - 4291559475, - 4288217139, - 4284874803, - 4281532467, - 4278190131, - 4294967040, - 4291624704, - 4288282368, - 4284940032, - 4281597696, - 4278255360, - 4294953984, - 4291611648, - 4288269312, - 4284926976, - 4281584640, - 4278242304, - 4294940928, - 4291598592, - 4288256256, - 4284913920, - 4281571584, - 4278229248, - 4294927872, - 4291585536, - 4288243200, - 4284900864, - 4281558528, - 4278216192, - 4294914816, - 4291572480, - 4288230144, - 4284887808, - 4281545472, - 4278203136, - 4294901760, - 4291559424, - 4288217088, - 4284874752, - 4281532416, - 4278190318, - 4278190301, - 4278190267, - 4278190250, - 4278190216, - 4278190199, - 4278190165, - 4278190148, - 4278190114, - 4278190097, - 4278251008, - 4278246656, - 4278237952, - 4278233600, - 4278224896, - 4278220544, - 4278211840, - 4278207488, - 4278198784, - 4278194432, - 4293787648, - 4292673536, - 4290445312, - 4289331200, - 4287102976, - 4285988864, - 4283760640, - 4282646528, - 4280418304, - 4279304192, - 4293848814, - 4292730333, - 4290493371, - 4289374890, - 4287137928, - 4286019447, - 4283782485, - 4282664004, - 4280427042, - 4279308561 - ]; - let i = 8; - let chunk; - const chunks = []; - while (i < data2.byteLength) { - let id2 = ""; - for (let j = 0; j < 4; j++) { - id2 += String.fromCharCode(data2.getUint8(i++)); - } - const chunkSize = data2.getUint32(i, true); - i += 4; - i += 4; - if (id2 === "SIZE") { - const x2 = data2.getUint32(i, true); - i += 4; - const y2 = data2.getUint32(i, true); - i += 4; - const z = data2.getUint32(i, true); - i += 4; - chunk = { - palette: DEFAULT_PALETTE, - size: { x: x2, y: y2, z } - }; - chunks.push(chunk); - i += chunkSize - 3 * 4; - } else if (id2 === "XYZI") { - const numVoxels = data2.getUint32(i, true); - i += 4; - chunk.data = new Uint8Array(buffer, i, numVoxels * 4); - i += numVoxels * 4; - } else if (id2 === "RGBA") { - const palette = [0]; - for (let j = 0; j < 256; j++) { - palette[j + 1] = data2.getUint32(i, true); - i += 4; - } - chunk.palette = palette; - } else { - i += chunkSize; - } - } - return chunks; - } -}; -var VOXMesh = class extends Mesh { - constructor(chunk) { - const data2 = chunk.data; - const size2 = chunk.size; - const palette = chunk.palette; - const vertices = []; - const colors = []; - const nx = [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1]; - const px = [1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0]; - const py = [0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1]; - const ny = [0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0]; - const nz = [0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0]; - const pz = [0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1]; - const _color5 = new Color(); - function add2(tile, x2, y2, z, r, g2, b3) { - x2 -= size2.x / 2; - y2 -= size2.z / 2; - z += size2.y / 2; - for (let i = 0; i < 18; i += 3) { - _color5.setRGB(r, g2, b3, SRGBColorSpace); - vertices.push(tile[i + 0] + x2, tile[i + 1] + y2, tile[i + 2] + z); - colors.push(_color5.r, _color5.g, _color5.b); - } - } - const offsety = size2.x; - const offsetz = size2.x * size2.y; - const array = new Uint8Array(size2.x * size2.y * size2.z); - for (let j = 0; j < data2.length; j += 4) { - const x2 = data2[j + 0]; - const y2 = data2[j + 1]; - const z = data2[j + 2]; - const index2 = x2 + y2 * offsety + z * offsetz; - array[index2] = 255; - } - let hasColors = false; - for (let j = 0; j < data2.length; j += 4) { - const x2 = data2[j + 0]; - const y2 = data2[j + 1]; - const z = data2[j + 2]; - const c2 = data2[j + 3]; - const hex = palette[c2]; - const r = (hex >> 0 & 255) / 255; - const g2 = (hex >> 8 & 255) / 255; - const b3 = (hex >> 16 & 255) / 255; - if (r > 0 || g2 > 0 || b3 > 0) hasColors = true; - const index2 = x2 + y2 * offsety + z * offsetz; - if (array[index2 + 1] === 0 || x2 === size2.x - 1) add2(px, x2, z, -y2, r, g2, b3); - if (array[index2 - 1] === 0 || x2 === 0) add2(nx, x2, z, -y2, r, g2, b3); - if (array[index2 + offsety] === 0 || y2 === size2.y - 1) add2(ny, x2, z, -y2, r, g2, b3); - if (array[index2 - offsety] === 0 || y2 === 0) add2(py, x2, z, -y2, r, g2, b3); - if (array[index2 + offsetz] === 0 || z === size2.z - 1) add2(pz, x2, z, -y2, r, g2, b3); - if (array[index2 - offsetz] === 0 || z === 0) add2(nz, x2, z, -y2, r, g2, b3); - } - const geometry = new BufferGeometry(); - geometry.setAttribute("position", new Float32BufferAttribute(vertices, 3)); - geometry.computeVertexNormals(); - const material = new MeshStandardMaterial(); - if (hasColors) { - geometry.setAttribute("color", new Float32BufferAttribute(colors, 3)); - material.vertexColors = true; - } - super(geometry, material); - } -}; -var VOXData3DTexture = class extends Data3DTexture { - constructor(chunk) { - const data2 = chunk.data; - const size2 = chunk.size; - const offsety = size2.x; - const offsetz = size2.x * size2.y; - const array = new Uint8Array(size2.x * size2.y * size2.z); - for (let j = 0; j < data2.length; j += 4) { - const x2 = data2[j + 0]; - const y2 = data2[j + 1]; - const z = data2[j + 2]; - const index2 = x2 + y2 * offsety + z * offsetz; - array[index2] = 255; - } - super(array, size2.x, size2.y, size2.z); - this.format = RedFormat; - this.minFilter = NearestFilter; - this.magFilter = LinearFilter; - this.unpackAlignment = 1; - this.needsUpdate = true; - } -}; - -// node_modules/three/examples/jsm/libs/chevrotain.module.min.js -var R2 = (t3, e) => () => (e || (e = { exports: {} }, t3(e.exports, e)), e.exports); -var Er = R2((Pt) => { - "use strict"; - Object.defineProperty(Pt, "__esModule", { value: true }); - Pt.VERSION = void 0; - Pt.VERSION = "9.0.1"; -}); -var k = R2((exports, module) => { - "use strict"; - var __spreadArray = exports && exports.__spreadArray || function(t3, e) { - for (var r = 0, n2 = e.length, i = t3.length; r < n2; r++, i++) t3[i] = e[r]; - return t3; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.toFastProperties = exports.timer = exports.peek = exports.isES2015MapSupported = exports.PRINT_WARNING = exports.PRINT_ERROR = exports.packArray = exports.IDENTITY = exports.NOOP = exports.merge = exports.groupBy = exports.defaults = exports.assignNoOverwrite = exports.assign = exports.zipObject = exports.sortBy = exports.indexOf = exports.some = exports.difference = exports.every = exports.isObject = exports.isRegExp = exports.isArray = exports.partial = exports.uniq = exports.compact = exports.reduce = exports.findAll = exports.find = exports.cloneObj = exports.cloneArr = exports.contains = exports.has = exports.pick = exports.reject = exports.filter = exports.dropRight = exports.drop = exports.isFunction = exports.isUndefined = exports.isString = exports.forEach = exports.last = exports.first = exports.flatten = exports.map = exports.mapValues = exports.values = exports.keys = exports.isEmpty = void 0; - function isEmpty(t3) { - return t3 && t3.length === 0; - } - exports.isEmpty = isEmpty; - function keys(t3) { - return t3 == null ? [] : Object.keys(t3); - } - exports.keys = keys; - function values(t3) { - for (var e = [], r = Object.keys(t3), n2 = 0; n2 < r.length; n2++) e.push(t3[r[n2]]); - return e; - } - exports.values = values; - function mapValues(t3, e) { - for (var r = [], n2 = keys(t3), i = 0; i < n2.length; i++) { - var a2 = n2[i]; - r.push(e.call(null, t3[a2], a2)); - } - return r; - } - exports.mapValues = mapValues; - function map(t3, e) { - for (var r = [], n2 = 0; n2 < t3.length; n2++) r.push(e.call(null, t3[n2], n2)); - return r; - } - exports.map = map; - function flatten(t3) { - for (var e = [], r = 0; r < t3.length; r++) { - var n2 = t3[r]; - Array.isArray(n2) ? e = e.concat(flatten(n2)) : e.push(n2); - } - return e; - } - exports.flatten = flatten; - function first(t3) { - return isEmpty(t3) ? void 0 : t3[0]; - } - exports.first = first; - function last(t3) { - var e = t3 && t3.length; - return e ? t3[e - 1] : void 0; - } - exports.last = last; - function forEach(t3, e) { - if (Array.isArray(t3)) for (var r = 0; r < t3.length; r++) e.call(null, t3[r], r); - else if (isObject(t3)) for (var n2 = keys(t3), r = 0; r < n2.length; r++) { - var i = n2[r], a2 = t3[i]; - e.call(null, a2, i); - } - else throw Error("non exhaustive match"); - } - exports.forEach = forEach; - function isString(t3) { - return typeof t3 == "string"; - } - exports.isString = isString; - function isUndefined(t3) { - return t3 === void 0; - } - exports.isUndefined = isUndefined; - function isFunction(t3) { - return t3 instanceof Function; - } - exports.isFunction = isFunction; - function drop(t3, e) { - return e === void 0 && (e = 1), t3.slice(e, t3.length); - } - exports.drop = drop; - function dropRight(t3, e) { - return e === void 0 && (e = 1), t3.slice(0, t3.length - e); - } - exports.dropRight = dropRight; - function filter(t3, e) { - var r = []; - if (Array.isArray(t3)) for (var n2 = 0; n2 < t3.length; n2++) { - var i = t3[n2]; - e.call(null, i) && r.push(i); - } - return r; - } - exports.filter = filter; - function reject(t3, e) { - return filter(t3, function(r) { - return !e(r); - }); - } - exports.reject = reject; - function pick(t3, e) { - for (var r = Object.keys(t3), n2 = {}, i = 0; i < r.length; i++) { - var a2 = r[i], o = t3[a2]; - e(o) && (n2[a2] = o); - } - return n2; - } - exports.pick = pick; - function has(t3, e) { - return isObject(t3) ? t3.hasOwnProperty(e) : false; - } - exports.has = has; - function contains(t3, e) { - return find(t3, function(r) { - return r === e; - }) !== void 0; - } - exports.contains = contains; - function cloneArr(t3) { - for (var e = [], r = 0; r < t3.length; r++) e.push(t3[r]); - return e; - } - exports.cloneArr = cloneArr; - function cloneObj(t3) { - var e = {}; - for (var r in t3) Object.prototype.hasOwnProperty.call(t3, r) && (e[r] = t3[r]); - return e; - } - exports.cloneObj = cloneObj; - function find(t3, e) { - for (var r = 0; r < t3.length; r++) { - var n2 = t3[r]; - if (e.call(null, n2)) return n2; - } - } - exports.find = find; - function findAll(t3, e) { - for (var r = [], n2 = 0; n2 < t3.length; n2++) { - var i = t3[n2]; - e.call(null, i) && r.push(i); - } - return r; - } - exports.findAll = findAll; - function reduce(t3, e, r) { - for (var n2 = Array.isArray(t3), i = n2 ? t3 : values(t3), a2 = n2 ? [] : keys(t3), o = r, s = 0; s < i.length; s++) o = e.call(null, o, i[s], n2 ? s : a2[s]); - return o; - } - exports.reduce = reduce; - function compact(t3) { - return reject(t3, function(e) { - return e == null; - }); - } - exports.compact = compact; - function uniq(t3, e) { - e === void 0 && (e = function(n2) { - return n2; - }); - var r = []; - return reduce(t3, function(n2, i) { - var a2 = e(i); - return contains(r, a2) ? n2 : (r.push(a2), n2.concat(i)); - }, []); - } - exports.uniq = uniq; - function partial(t3) { - for (var e = [], r = 1; r < arguments.length; r++) e[r - 1] = arguments[r]; - var n2 = [null], i = n2.concat(e); - return Function.bind.apply(t3, i); - } - exports.partial = partial; - function isArray(t3) { - return Array.isArray(t3); - } - exports.isArray = isArray; - function isRegExp(t3) { - return t3 instanceof RegExp; - } - exports.isRegExp = isRegExp; - function isObject(t3) { - return t3 instanceof Object; - } - exports.isObject = isObject; - function every(t3, e) { - for (var r = 0; r < t3.length; r++) if (!e(t3[r], r)) return false; - return true; - } - exports.every = every; - function difference(t3, e) { - return reject(t3, function(r) { - return contains(e, r); - }); - } - exports.difference = difference; - function some(t3, e) { - for (var r = 0; r < t3.length; r++) if (e(t3[r])) return true; - return false; - } - exports.some = some; - function indexOf(t3, e) { - for (var r = 0; r < t3.length; r++) if (t3[r] === e) return r; - return -1; - } - exports.indexOf = indexOf; - function sortBy(t3, e) { - var r = cloneArr(t3); - return r.sort(function(n2, i) { - return e(n2) - e(i); - }), r; - } - exports.sortBy = sortBy; - function zipObject(t3, e) { - if (t3.length !== e.length) throw Error("can't zipObject with different number of keys and values!"); - for (var r = {}, n2 = 0; n2 < t3.length; n2++) r[t3[n2]] = e[n2]; - return r; - } - exports.zipObject = zipObject; - function assign(t3) { - for (var e = [], r = 1; r < arguments.length; r++) e[r - 1] = arguments[r]; - for (var n2 = 0; n2 < e.length; n2++) for (var i = e[n2], a2 = keys(i), o = 0; o < a2.length; o++) { - var s = a2[o]; - t3[s] = i[s]; - } - return t3; - } - exports.assign = assign; - function assignNoOverwrite(t3) { - for (var e = [], r = 1; r < arguments.length; r++) e[r - 1] = arguments[r]; - for (var n2 = 0; n2 < e.length; n2++) for (var i = e[n2], a2 = keys(i), o = 0; o < a2.length; o++) { - var s = a2[o]; - has(t3, s) || (t3[s] = i[s]); - } - return t3; - } - exports.assignNoOverwrite = assignNoOverwrite; - function defaults() { - for (var t3 = [], e = 0; e < arguments.length; e++) t3[e] = arguments[e]; - return assignNoOverwrite.apply(void 0, __spreadArray([{}], t3)); - } - exports.defaults = defaults; - function groupBy(t3, e) { - var r = {}; - return forEach(t3, function(n2) { - var i = e(n2), a2 = r[i]; - a2 ? a2.push(n2) : r[i] = [n2]; - }), r; - } - exports.groupBy = groupBy; - function merge(t3, e) { - for (var r = cloneObj(t3), n2 = keys(e), i = 0; i < n2.length; i++) { - var a2 = n2[i], o = e[a2]; - r[a2] = o; - } - return r; - } - exports.merge = merge; - function NOOP() { - } - exports.NOOP = NOOP; - function IDENTITY(t3) { - return t3; - } - exports.IDENTITY = IDENTITY; - function packArray(t3) { - for (var e = [], r = 0; r < t3.length; r++) { - var n2 = t3[r]; - e.push(n2 !== void 0 ? n2 : void 0); - } - return e; - } - exports.packArray = packArray; - function PRINT_ERROR(t3) { - console && console.error && console.error("Error: " + t3); - } - exports.PRINT_ERROR = PRINT_ERROR; - function PRINT_WARNING(t3) { - console && console.warn && console.warn("Warning: " + t3); - } - exports.PRINT_WARNING = PRINT_WARNING; - function isES2015MapSupported() { - return typeof Map == "function"; - } - exports.isES2015MapSupported = isES2015MapSupported; - function peek(t3) { - return t3[t3.length - 1]; - } - exports.peek = peek; - function timer(t3) { - var e = (/* @__PURE__ */ new Date()).getTime(), r = t3(), n2 = (/* @__PURE__ */ new Date()).getTime(), i = n2 - e; - return { time: i, value: r }; - } - exports.timer = timer; - function toFastProperties(toBecomeFast) { - function FakeConstructor() { - } - FakeConstructor.prototype = toBecomeFast; - var fakeInstance = new FakeConstructor(); - function fakeAccess() { - return typeof fakeInstance.bar; - } - return fakeAccess(), fakeAccess(), toBecomeFast; - eval(toBecomeFast); - } - exports.toFastProperties = toFastProperties; -}); -var xt = R2((sn, St) => { - (function(t3, e) { - typeof define == "function" && define.amd ? define([], e) : typeof St == "object" && St.exports ? St.exports = e() : t3.regexpToAst = e(); - })(typeof self != "undefined" ? self : sn, function() { - function t3() { - } - t3.prototype.saveState = function() { - return { idx: this.idx, input: this.input, groupIdx: this.groupIdx }; - }, t3.prototype.restoreState = function(u) { - this.idx = u.idx, this.input = u.input, this.groupIdx = u.groupIdx; - }, t3.prototype.pattern = function(u) { - this.idx = 0, this.input = u, this.groupIdx = 0, this.consumeChar("/"); - var d = this.disjunction(); - this.consumeChar("/"); - for (var A2 = { type: "Flags", loc: { begin: this.idx, end: u.length }, global: false, ignoreCase: false, multiLine: false, unicode: false, sticky: false }; this.isRegExpFlag(); ) switch (this.popChar()) { - case "g": - o(A2, "global"); - break; - case "i": - o(A2, "ignoreCase"); - break; - case "m": - o(A2, "multiLine"); - break; - case "u": - o(A2, "unicode"); - break; - case "y": - o(A2, "sticky"); - break; - } - if (this.idx !== this.input.length) throw Error("Redundant input: " + this.input.substring(this.idx)); - return { type: "Pattern", flags: A2, value: d, loc: this.loc(0) }; - }, t3.prototype.disjunction = function() { - var u = [], d = this.idx; - for (u.push(this.alternative()); this.peekChar() === "|"; ) this.consumeChar("|"), u.push(this.alternative()); - return { type: "Disjunction", value: u, loc: this.loc(d) }; - }, t3.prototype.alternative = function() { - for (var u = [], d = this.idx; this.isTerm(); ) u.push(this.term()); - return { type: "Alternative", value: u, loc: this.loc(d) }; - }, t3.prototype.term = function() { - return this.isAssertion() ? this.assertion() : this.atom(); - }, t3.prototype.assertion = function() { - var u = this.idx; - switch (this.popChar()) { - case "^": - return { type: "StartAnchor", loc: this.loc(u) }; - case "$": - return { type: "EndAnchor", loc: this.loc(u) }; - case "\\": - switch (this.popChar()) { - case "b": - return { type: "WordBoundary", loc: this.loc(u) }; - case "B": - return { type: "NonWordBoundary", loc: this.loc(u) }; - } - throw Error("Invalid Assertion Escape"); - case "(": - this.consumeChar("?"); - var d; - switch (this.popChar()) { - case "=": - d = "Lookahead"; - break; - case "!": - d = "NegativeLookahead"; - break; - } - s(d); - var A2 = this.disjunction(); - return this.consumeChar(")"), { type: d, value: A2, loc: this.loc(u) }; - } - c2(); - }, t3.prototype.quantifier = function(u) { - var d, A2 = this.idx; - switch (this.popChar()) { - case "*": - d = { atLeast: 0, atMost: Infinity }; - break; - case "+": - d = { atLeast: 1, atMost: Infinity }; - break; - case "?": - d = { atLeast: 0, atMost: 1 }; - break; - case "{": - var _ = this.integerIncludingZero(); - switch (this.popChar()) { - case "}": - d = { atLeast: _, atMost: _ }; - break; - case ",": - var g2; - this.isDigit() ? (g2 = this.integerIncludingZero(), d = { atLeast: _, atMost: g2 }) : d = { atLeast: _, atMost: Infinity }, this.consumeChar("}"); - break; - } - if (u === true && d === void 0) return; - s(d); - break; - } - if (!(u === true && d === void 0)) return s(d), this.peekChar(0) === "?" ? (this.consumeChar("?"), d.greedy = false) : d.greedy = true, d.type = "Quantifier", d.loc = this.loc(A2), d; - }, t3.prototype.atom = function() { - var u, d = this.idx; - switch (this.peekChar()) { - case ".": - u = this.dotAll(); - break; - case "\\": - u = this.atomEscape(); - break; - case "[": - u = this.characterClass(); - break; - case "(": - u = this.group(); - break; - } - return u === void 0 && this.isPatternCharacter() && (u = this.patternCharacter()), s(u), u.loc = this.loc(d), this.isQuantifier() && (u.quantifier = this.quantifier()), u; - }, t3.prototype.dotAll = function() { - return this.consumeChar("."), { type: "Set", complement: true, value: [i(` -`), i("\r"), i("\u2028"), i("\u2029")] }; - }, t3.prototype.atomEscape = function() { - switch (this.consumeChar("\\"), this.peekChar()) { - case "1": - case "2": - case "3": - case "4": - case "5": - case "6": - case "7": - case "8": - case "9": - return this.decimalEscapeAtom(); - case "d": - case "D": - case "s": - case "S": - case "w": - case "W": - return this.characterClassEscape(); - case "f": - case "n": - case "r": - case "t": - case "v": - return this.controlEscapeAtom(); - case "c": - return this.controlLetterEscapeAtom(); - case "0": - return this.nulCharacterAtom(); - case "x": - return this.hexEscapeSequenceAtom(); - case "u": - return this.regExpUnicodeEscapeSequenceAtom(); - default: - return this.identityEscapeAtom(); - } - }, t3.prototype.decimalEscapeAtom = function() { - var u = this.positiveInteger(); - return { type: "GroupBackReference", value: u }; - }, t3.prototype.characterClassEscape = function() { - var u, d = false; - switch (this.popChar()) { - case "d": - u = p2; - break; - case "D": - u = p2, d = true; - break; - case "s": - u = m; - break; - case "S": - u = m, d = true; - break; - case "w": - u = l2; - break; - case "W": - u = l2, d = true; - break; - } - return s(u), { type: "Set", value: u, complement: d }; - }, t3.prototype.controlEscapeAtom = function() { - var u; - switch (this.popChar()) { - case "f": - u = i("\f"); - break; - case "n": - u = i(` -`); - break; - case "r": - u = i("\r"); - break; - case "t": - u = i(" "); - break; - case "v": - u = i("\v"); - break; - } - return s(u), { type: "Character", value: u }; - }, t3.prototype.controlLetterEscapeAtom = function() { - this.consumeChar("c"); - var u = this.popChar(); - if (/[a-zA-Z]/.test(u) === false) throw Error("Invalid "); - var d = u.toUpperCase().charCodeAt(0) - 64; - return { type: "Character", value: d }; - }, t3.prototype.nulCharacterAtom = function() { - return this.consumeChar("0"), { type: "Character", value: i("\0") }; - }, t3.prototype.hexEscapeSequenceAtom = function() { - return this.consumeChar("x"), this.parseHexDigits(2); - }, t3.prototype.regExpUnicodeEscapeSequenceAtom = function() { - return this.consumeChar("u"), this.parseHexDigits(4); - }, t3.prototype.identityEscapeAtom = function() { - var u = this.popChar(); - return { type: "Character", value: i(u) }; - }, t3.prototype.classPatternCharacterAtom = function() { - switch (this.peekChar()) { - case ` -`: - case "\r": - case "\u2028": - case "\u2029": - case "\\": - case "]": - throw Error("TBD"); - default: - var u = this.popChar(); - return { type: "Character", value: i(u) }; - } - }, t3.prototype.characterClass = function() { - var u = [], d = false; - for (this.consumeChar("["), this.peekChar(0) === "^" && (this.consumeChar("^"), d = true); this.isClassAtom(); ) { - var A2 = this.classAtom(), _ = A2.type === "Character"; - if (_ && this.isRangeDash()) { - this.consumeChar("-"); - var g2 = this.classAtom(), y2 = g2.type === "Character"; - if (y2) { - if (g2.value < A2.value) throw Error("Range out of order in character class"); - u.push({ from: A2.value, to: g2.value }); - } else a2(A2.value, u), u.push(i("-")), a2(g2.value, u); - } else a2(A2.value, u); - } - return this.consumeChar("]"), { type: "Set", complement: d, value: u }; - }, t3.prototype.classAtom = function() { - switch (this.peekChar()) { - case "]": - case ` -`: - case "\r": - case "\u2028": - case "\u2029": - throw Error("TBD"); - case "\\": - return this.classEscape(); - default: - return this.classPatternCharacterAtom(); - } - }, t3.prototype.classEscape = function() { - switch (this.consumeChar("\\"), this.peekChar()) { - case "b": - return this.consumeChar("b"), { type: "Character", value: i("\b") }; - case "d": - case "D": - case "s": - case "S": - case "w": - case "W": - return this.characterClassEscape(); - case "f": - case "n": - case "r": - case "t": - case "v": - return this.controlEscapeAtom(); - case "c": - return this.controlLetterEscapeAtom(); - case "0": - return this.nulCharacterAtom(); - case "x": - return this.hexEscapeSequenceAtom(); - case "u": - return this.regExpUnicodeEscapeSequenceAtom(); - default: - return this.identityEscapeAtom(); - } - }, t3.prototype.group = function() { - var u = true; - switch (this.consumeChar("("), this.peekChar(0)) { - case "?": - this.consumeChar("?"), this.consumeChar(":"), u = false; - break; - default: - this.groupIdx++; - break; - } - var d = this.disjunction(); - this.consumeChar(")"); - var A2 = { type: "Group", capturing: u, value: d }; - return u && (A2.idx = this.groupIdx), A2; - }, t3.prototype.positiveInteger = function() { - var u = this.popChar(); - if (n2.test(u) === false) throw Error("Expecting a positive integer"); - for (; r.test(this.peekChar(0)); ) u += this.popChar(); - return parseInt(u, 10); - }, t3.prototype.integerIncludingZero = function() { - var u = this.popChar(); - if (r.test(u) === false) throw Error("Expecting an integer"); - for (; r.test(this.peekChar(0)); ) u += this.popChar(); - return parseInt(u, 10); - }, t3.prototype.patternCharacter = function() { - var u = this.popChar(); - switch (u) { - case ` -`: - case "\r": - case "\u2028": - case "\u2029": - case "^": - case "$": - case "\\": - case ".": - case "*": - case "+": - case "?": - case "(": - case ")": - case "[": - case "|": - throw Error("TBD"); - default: - return { type: "Character", value: i(u) }; - } - }, t3.prototype.isRegExpFlag = function() { - switch (this.peekChar(0)) { - case "g": - case "i": - case "m": - case "u": - case "y": - return true; - default: - return false; - } - }, t3.prototype.isRangeDash = function() { - return this.peekChar() === "-" && this.isClassAtom(1); - }, t3.prototype.isDigit = function() { - return r.test(this.peekChar(0)); - }, t3.prototype.isClassAtom = function(u) { - switch (u === void 0 && (u = 0), this.peekChar(u)) { - case "]": - case ` -`: - case "\r": - case "\u2028": - case "\u2029": - return false; - default: - return true; - } - }, t3.prototype.isTerm = function() { - return this.isAtom() || this.isAssertion(); - }, t3.prototype.isAtom = function() { - if (this.isPatternCharacter()) return true; - switch (this.peekChar(0)) { - case ".": - case "\\": - case "[": - case "(": - return true; - default: - return false; - } - }, t3.prototype.isAssertion = function() { - switch (this.peekChar(0)) { - case "^": - case "$": - return true; - case "\\": - switch (this.peekChar(1)) { - case "b": - case "B": - return true; - default: - return false; - } - case "(": - return this.peekChar(1) === "?" && (this.peekChar(2) === "=" || this.peekChar(2) === "!"); - default: - return false; - } - }, t3.prototype.isQuantifier = function() { - var u = this.saveState(); - try { - return this.quantifier(true) !== void 0; - } catch (d) { - return false; - } finally { - this.restoreState(u); - } - }, t3.prototype.isPatternCharacter = function() { - switch (this.peekChar()) { - case "^": - case "$": - case "\\": - case ".": - case "*": - case "+": - case "?": - case "(": - case ")": - case "[": - case "|": - case "/": - case ` -`: - case "\r": - case "\u2028": - case "\u2029": - return false; - default: - return true; - } - }, t3.prototype.parseHexDigits = function(u) { - for (var d = "", A2 = 0; A2 < u; A2++) { - var _ = this.popChar(); - if (e.test(_) === false) throw Error("Expecting a HexDecimal digits"); - d += _; - } - var g2 = parseInt(d, 16); - return { type: "Character", value: g2 }; - }, t3.prototype.peekChar = function(u) { - return u === void 0 && (u = 0), this.input[this.idx + u]; - }, t3.prototype.popChar = function() { - var u = this.peekChar(0); - return this.consumeChar(), u; - }, t3.prototype.consumeChar = function(u) { - if (u !== void 0 && this.input[this.idx] !== u) throw Error("Expected: '" + u + "' but found: '" + this.input[this.idx] + "' at offset: " + this.idx); - if (this.idx >= this.input.length) throw Error("Unexpected end of input"); - this.idx++; - }, t3.prototype.loc = function(u) { - return { begin: u, end: this.idx }; - }; - var e = /[0-9a-fA-F]/, r = /[0-9]/, n2 = /[1-9]/; - function i(u) { - return u.charCodeAt(0); - } - function a2(u, d) { - u.length !== void 0 ? u.forEach(function(A2) { - d.push(A2); - }) : d.push(u); - } - function o(u, d) { - if (u[d] === true) throw "duplicate flag " + d; - u[d] = true; - } - function s(u) { - if (u === void 0) throw Error("Internal Error - Should never get here!"); - } - function c2() { - throw Error("Internal Error - Should never get here!"); - } - var f, p2 = []; - for (f = i("0"); f <= i("9"); f++) p2.push(f); - var l2 = [i("_")].concat(p2); - for (f = i("a"); f <= i("z"); f++) l2.push(f); - for (f = i("A"); f <= i("Z"); f++) l2.push(f); - var m = [i(" "), i("\f"), i(` -`), i("\r"), i(" "), i("\v"), i(" "), i(" "), i(" "), i(" "), i(" "), i(" "), i(" "), i(" "), i(" "), i(" "), i(" "), i(" "), i(" "), i(" "), i("\u2028"), i("\u2029"), i(" "), i(" "), i(" "), i("\uFEFF")]; - function v() { - } - return v.prototype.visitChildren = function(u) { - for (var d in u) { - var A2 = u[d]; - u.hasOwnProperty(d) && (A2.type !== void 0 ? this.visit(A2) : Array.isArray(A2) && A2.forEach(function(_) { - this.visit(_); - }, this)); - } - }, v.prototype.visit = function(u) { - switch (u.type) { - case "Pattern": - this.visitPattern(u); - break; - case "Flags": - this.visitFlags(u); - break; - case "Disjunction": - this.visitDisjunction(u); - break; - case "Alternative": - this.visitAlternative(u); - break; - case "StartAnchor": - this.visitStartAnchor(u); - break; - case "EndAnchor": - this.visitEndAnchor(u); - break; - case "WordBoundary": - this.visitWordBoundary(u); - break; - case "NonWordBoundary": - this.visitNonWordBoundary(u); - break; - case "Lookahead": - this.visitLookahead(u); - break; - case "NegativeLookahead": - this.visitNegativeLookahead(u); - break; - case "Character": - this.visitCharacter(u); - break; - case "Set": - this.visitSet(u); - break; - case "Group": - this.visitGroup(u); - break; - case "GroupBackReference": - this.visitGroupBackReference(u); - break; - case "Quantifier": - this.visitQuantifier(u); - break; - } - this.visitChildren(u); - }, v.prototype.visitPattern = function(u) { - }, v.prototype.visitFlags = function(u) { - }, v.prototype.visitDisjunction = function(u) { - }, v.prototype.visitAlternative = function(u) { - }, v.prototype.visitStartAnchor = function(u) { - }, v.prototype.visitEndAnchor = function(u) { - }, v.prototype.visitWordBoundary = function(u) { - }, v.prototype.visitNonWordBoundary = function(u) { - }, v.prototype.visitLookahead = function(u) { - }, v.prototype.visitNegativeLookahead = function(u) { - }, v.prototype.visitCharacter = function(u) { - }, v.prototype.visitSet = function(u) { - }, v.prototype.visitGroup = function(u) { - }, v.prototype.visitGroupBackReference = function(u) { - }, v.prototype.visitQuantifier = function(u) { - }, { RegExpParser: t3, BaseRegExpVisitor: v, VERSION: "0.5.0" }; - }); -}); -var Lt = R2((He) => { - "use strict"; - Object.defineProperty(He, "__esModule", { value: true }); - He.clearRegExpParserCache = He.getRegExpAst = void 0; - var Ga = xt(), Ct = {}, Wa = new Ga.RegExpParser(); - function Ba(t3) { - var e = t3.toString(); - if (Ct.hasOwnProperty(e)) return Ct[e]; - var r = Wa.pattern(e); - return Ct[e] = r, r; - } - He.getRegExpAst = Ba; - function qa() { - Ct = {}; - } - He.clearRegExpParserCache = qa; -}); -var pn = R2((re) => { - "use strict"; - var ja = re && re.__extends || /* @__PURE__ */ function() { - var t3 = function(e, r) { - return t3 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n2, i) { - n2.__proto__ = i; - } || function(n2, i) { - for (var a2 in i) Object.prototype.hasOwnProperty.call(i, a2) && (n2[a2] = i[a2]); - }, t3(e, r); - }; - return function(e, r) { - if (typeof r != "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null"); - t3(e, r); - function n2() { - this.constructor = e; - } - e.prototype = r === null ? Object.create(r) : (n2.prototype = r.prototype, new n2()); - }; - }(); - Object.defineProperty(re, "__esModule", { value: true }); - re.canMatchCharCode = re.firstCharOptimizedIndices = re.getOptimizedStartCodesIndices = re.failedOptimizationPrefixMsg = void 0; - var un = xt(), pe2 = k(), cn = Lt(), Ce = Tr(), ln2 = "Complement Sets are not supported for first char optimization"; - re.failedOptimizationPrefixMsg = `Unable to use "first char" lexer optimizations: -`; - function Va(t3, e) { - e === void 0 && (e = false); - try { - var r = cn.getRegExpAst(t3), n2 = Mt(r.value, {}, r.flags.ignoreCase); - return n2; - } catch (a2) { - if (a2.message === ln2) e && pe2.PRINT_WARNING("" + re.failedOptimizationPrefixMsg + (" Unable to optimize: < " + t3.toString() + ` > -`) + ` Complement Sets cannot be automatically optimized. - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`); - else { - var i = ""; - e && (i = ` - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`), pe2.PRINT_ERROR(re.failedOptimizationPrefixMsg + ` -` + (" Failed parsing: < " + t3.toString() + ` > -`) + (" Using the regexp-to-ast library version: " + un.VERSION + ` -`) + " Please open an issue at: https://github.com/bd82/regexp-to-ast/issues" + i); - } - } - return []; - } - re.getOptimizedStartCodesIndices = Va; - function Mt(t3, e, r) { - switch (t3.type) { - case "Disjunction": - for (var n2 = 0; n2 < t3.value.length; n2++) Mt(t3.value[n2], e, r); - break; - case "Alternative": - for (var i = t3.value, n2 = 0; n2 < i.length; n2++) { - var a2 = i[n2]; - switch (a2.type) { - case "EndAnchor": - case "GroupBackReference": - case "Lookahead": - case "NegativeLookahead": - case "StartAnchor": - case "WordBoundary": - case "NonWordBoundary": - continue; - } - var o = a2; - switch (o.type) { - case "Character": - bt(o.value, e, r); - break; - case "Set": - if (o.complement === true) throw Error(ln2); - pe2.forEach(o.value, function(f) { - if (typeof f == "number") bt(f, e, r); - else { - var p2 = f; - if (r === true) for (var l2 = p2.from; l2 <= p2.to; l2++) bt(l2, e, r); - else { - for (var l2 = p2.from; l2 <= p2.to && l2 < Ce.minOptimizationVal; l2++) bt(l2, e, r); - if (p2.to >= Ce.minOptimizationVal) for (var m = p2.from >= Ce.minOptimizationVal ? p2.from : Ce.minOptimizationVal, v = p2.to, u = Ce.charCodeToOptimizedIndex(m), d = Ce.charCodeToOptimizedIndex(v), A2 = u; A2 <= d; A2++) e[A2] = A2; - } - } - }); - break; - case "Group": - Mt(o.value, e, r); - break; - default: - throw Error("Non Exhaustive Match"); - } - var s = o.quantifier !== void 0 && o.quantifier.atLeast === 0; - if (o.type === "Group" && yr(o) === false || o.type !== "Group" && s === false) break; - } - break; - default: - throw Error("non exhaustive match!"); - } - return pe2.values(e); - } - re.firstCharOptimizedIndices = Mt; - function bt(t3, e, r) { - var n2 = Ce.charCodeToOptimizedIndex(t3); - e[n2] = n2, r === true && Ka(t3, e); - } - function Ka(t3, e) { - var r = String.fromCharCode(t3), n2 = r.toUpperCase(); - if (n2 !== r) { - var i = Ce.charCodeToOptimizedIndex(n2.charCodeAt(0)); - e[i] = i; - } else { - var a2 = r.toLowerCase(); - if (a2 !== r) { - var i = Ce.charCodeToOptimizedIndex(a2.charCodeAt(0)); - e[i] = i; - } - } - } - function fn(t3, e) { - return pe2.find(t3.value, function(r) { - if (typeof r == "number") return pe2.contains(e, r); - var n2 = r; - return pe2.find(e, function(i) { - return n2.from <= i && i <= n2.to; - }) !== void 0; - }); - } - function yr(t3) { - return t3.quantifier && t3.quantifier.atLeast === 0 ? true : t3.value ? pe2.isArray(t3.value) ? pe2.every(t3.value, yr) : yr(t3.value) : false; - } - var za = function(t3) { - ja(e, t3); - function e(r) { - var n2 = t3.call(this) || this; - return n2.targetCharCodes = r, n2.found = false, n2; - } - return e.prototype.visitChildren = function(r) { - if (this.found !== true) { - switch (r.type) { - case "Lookahead": - this.visitLookahead(r); - return; - case "NegativeLookahead": - this.visitNegativeLookahead(r); - return; - } - t3.prototype.visitChildren.call(this, r); - } - }, e.prototype.visitCharacter = function(r) { - pe2.contains(this.targetCharCodes, r.value) && (this.found = true); - }, e.prototype.visitSet = function(r) { - r.complement ? fn(r, this.targetCharCodes) === void 0 && (this.found = true) : fn(r, this.targetCharCodes) !== void 0 && (this.found = true); - }, e; - }(un.BaseRegExpVisitor); - function Ha(t3, e) { - if (e instanceof RegExp) { - var r = cn.getRegExpAst(e), n2 = new za(t3); - return n2.visit(r), n2.found; - } else return pe2.find(e, function(i) { - return pe2.contains(t3, i.charCodeAt(0)); - }) !== void 0; - } - re.canMatchCharCode = Ha; -}); -var Tr = R2((T) => { - "use strict"; - var hn = T && T.__extends || /* @__PURE__ */ function() { - var t3 = function(e, r) { - return t3 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n2, i) { - n2.__proto__ = i; - } || function(n2, i) { - for (var a2 in i) Object.prototype.hasOwnProperty.call(i, a2) && (n2[a2] = i[a2]); - }, t3(e, r); - }; - return function(e, r) { - if (typeof r != "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null"); - t3(e, r); - function n2() { - this.constructor = e; - } - e.prototype = r === null ? Object.create(r) : (n2.prototype = r.prototype, new n2()); - }; - }(); - Object.defineProperty(T, "__esModule", { value: true }); - T.charCodeToOptimizedIndex = T.minOptimizationVal = T.buildLineBreakIssueMessage = T.LineTerminatorOptimizedTester = T.isShortPattern = T.isCustomPattern = T.cloneEmptyGroups = T.performWarningRuntimeChecks = T.performRuntimeChecks = T.addStickyFlag = T.addStartOfInput = T.findUnreachablePatterns = T.findModesThatDoNotExist = T.findInvalidGroupType = T.findDuplicatePatterns = T.findUnsupportedFlags = T.findStartOfInputAnchor = T.findEmptyMatchRegExps = T.findEndOfInputAnchor = T.findInvalidPatterns = T.findMissingPatterns = T.validatePatterns = T.analyzeTokenTypes = T.enableSticky = T.disableSticky = T.SUPPORT_STICKY = T.MODES = T.DEFAULT_MODE = void 0; - var dn = xt(), F2 = ft(), h = k(), Ye = pn(), vn = Lt(), Ae2 = "PATTERN"; - T.DEFAULT_MODE = "defaultMode"; - T.MODES = "modes"; - T.SUPPORT_STICKY = typeof new RegExp("(?:)").sticky == "boolean"; - function Ya() { - T.SUPPORT_STICKY = false; - } - T.disableSticky = Ya; - function Xa() { - T.SUPPORT_STICKY = true; - } - T.enableSticky = Xa; - function Za(t3, e) { - e = h.defaults(e, { useSticky: T.SUPPORT_STICKY, debug: false, safeMode: false, positionTracking: "full", lineTerminatorCharacters: ["\r", ` -`], tracer: function(g2, y2) { - return y2(); - } }); - var r = e.tracer; - r("initCharCodeToOptimizedIndexMap", function() { - $a(); - }); - var n2; - r("Reject Lexer.NA", function() { - n2 = h.reject(t3, function(g2) { - return g2[Ae2] === F2.Lexer.NA; - }); - }); - var i = false, a2; - r("Transform Patterns", function() { - i = false, a2 = h.map(n2, function(g2) { - var y2 = g2[Ae2]; - if (h.isRegExp(y2)) { - var b3 = y2.source; - return b3.length === 1 && b3 !== "^" && b3 !== "$" && b3 !== "." && !y2.ignoreCase ? b3 : b3.length === 2 && b3[0] === "\\" && !h.contains(["d", "D", "s", "S", "t", "r", "n", "t", "0", "c", "b", "B", "f", "v", "w", "W"], b3[1]) ? b3[1] : e.useSticky ? gr(y2) : _r(y2); - } else { - if (h.isFunction(y2)) return i = true, { exec: y2 }; - if (h.has(y2, "exec")) return i = true, y2; - if (typeof y2 == "string") { - if (y2.length === 1) return y2; - var L = y2.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&"), se2 = new RegExp(L); - return e.useSticky ? gr(se2) : _r(se2); - } else throw Error("non exhaustive match"); - } - }); - }); - var o, s, c2, f, p2; - r("misc mapping", function() { - o = h.map(n2, function(g2) { - return g2.tokenTypeIdx; - }), s = h.map(n2, function(g2) { - var y2 = g2.GROUP; - if (y2 !== F2.Lexer.SKIPPED) { - if (h.isString(y2)) return y2; - if (h.isUndefined(y2)) return false; - throw Error("non exhaustive match"); - } - }), c2 = h.map(n2, function(g2) { - var y2 = g2.LONGER_ALT; - if (y2) { - var b3 = h.indexOf(n2, y2); - return b3; - } - }), f = h.map(n2, function(g2) { - return g2.PUSH_MODE; - }), p2 = h.map(n2, function(g2) { - return h.has(g2, "POP_MODE"); - }); - }); - var l2; - r("Line Terminator Handling", function() { - var g2 = Tn(e.lineTerminatorCharacters); - l2 = h.map(n2, function(y2) { - return false; - }), e.positionTracking !== "onlyOffset" && (l2 = h.map(n2, function(y2) { - if (h.has(y2, "LINE_BREAKS")) return y2.LINE_BREAKS; - if (En(y2, g2) === false) return Ye.canMatchCharCode(g2, y2.PATTERN); - })); - }); - var m, v, u, d; - r("Misc Mapping #2", function() { - m = h.map(n2, Ar), v = h.map(a2, mn), u = h.reduce(n2, function(g2, y2) { - var b3 = y2.GROUP; - return h.isString(b3) && b3 !== F2.Lexer.SKIPPED && (g2[b3] = []), g2; - }, {}), d = h.map(a2, function(g2, y2) { - return { pattern: a2[y2], longerAlt: c2[y2], canLineTerminator: l2[y2], isCustom: m[y2], short: v[y2], group: s[y2], push: f[y2], pop: p2[y2], tokenTypeIdx: o[y2], tokenType: n2[y2] }; - }); - }); - var A2 = true, _ = []; - return e.safeMode || r("First Char Optimization", function() { - _ = h.reduce(n2, function(g2, y2, b3) { - if (typeof y2.PATTERN == "string") { - var L = y2.PATTERN.charCodeAt(0), se2 = Or(L); - Rr(g2, se2, d[b3]); - } else if (h.isArray(y2.START_CHARS_HINT)) { - var fe; - h.forEach(y2.START_CHARS_HINT, function(ue) { - var Q3 = typeof ue == "string" ? ue.charCodeAt(0) : ue, te2 = Or(Q3); - fe !== te2 && (fe = te2, Rr(g2, te2, d[b3])); - }); - } else if (h.isRegExp(y2.PATTERN)) if (y2.PATTERN.unicode) A2 = false, e.ensureOptimizations && h.PRINT_ERROR("" + Ye.failedOptimizationPrefixMsg + (" Unable to analyze < " + y2.PATTERN.toString() + ` > pattern. -`) + ` The regexp unicode flag is not currently supported by the regexp-to-ast library. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`); - else { - var Z2 = Ye.getOptimizedStartCodesIndices(y2.PATTERN, e.ensureOptimizations); - h.isEmpty(Z2) && (A2 = false), h.forEach(Z2, function(ue) { - Rr(g2, ue, d[b3]); - }); - } - else e.ensureOptimizations && h.PRINT_ERROR("" + Ye.failedOptimizationPrefixMsg + (" TokenType: <" + y2.name + `> is using a custom token pattern without providing parameter. -`) + ` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`), A2 = false; - return g2; - }, []); - }), r("ArrayPacking", function() { - _ = h.packArray(_); - }), { emptyGroups: u, patternIdxToConfig: d, charCodeToPatternIdxToConfig: _, hasCustom: i, canBeOptimized: A2 }; - } - T.analyzeTokenTypes = Za; - function Ja(t3, e) { - var r = [], n2 = yn(t3); - r = r.concat(n2.errors); - var i = _n(n2.valid), a2 = i.valid; - return r = r.concat(i.errors), r = r.concat(Qa(a2)), r = r.concat(gn(a2)), r = r.concat(An(a2, e)), r = r.concat(Rn(a2)), r; - } - T.validatePatterns = Ja; - function Qa(t3) { - var e = [], r = h.filter(t3, function(n2) { - return h.isRegExp(n2[Ae2]); - }); - return e = e.concat(On(r)), e = e.concat(In2(r)), e = e.concat(kn(r)), e = e.concat(Pn(r)), e = e.concat(Nn(r)), e; - } - function yn(t3) { - var e = h.filter(t3, function(i) { - return !h.has(i, Ae2); - }), r = h.map(e, function(i) { - return { message: "Token Type: ->" + i.name + "<- missing static 'PATTERN' property", type: F2.LexerDefinitionErrorType.MISSING_PATTERN, tokenTypes: [i] }; - }), n2 = h.difference(t3, e); - return { errors: r, valid: n2 }; - } - T.findMissingPatterns = yn; - function _n(t3) { - var e = h.filter(t3, function(i) { - var a2 = i[Ae2]; - return !h.isRegExp(a2) && !h.isFunction(a2) && !h.has(a2, "exec") && !h.isString(a2); - }), r = h.map(e, function(i) { - return { message: "Token Type: ->" + i.name + "<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.", type: F2.LexerDefinitionErrorType.INVALID_PATTERN, tokenTypes: [i] }; - }), n2 = h.difference(t3, e); - return { errors: r, valid: n2 }; - } - T.findInvalidPatterns = _n; - var eo = /[^\\][\$]/; - function On(t3) { - var e = function(i) { - hn(a2, i); - function a2() { - var o = i !== null && i.apply(this, arguments) || this; - return o.found = false, o; - } - return a2.prototype.visitEndAnchor = function(o) { - this.found = true; - }, a2; - }(dn.BaseRegExpVisitor), r = h.filter(t3, function(i) { - var a2 = i[Ae2]; - try { - var o = vn.getRegExpAst(a2), s = new e(); - return s.visit(o), s.found; - } catch (c2) { - return eo.test(a2.source); - } - }), n2 = h.map(r, function(i) { - return { message: `Unexpected RegExp Anchor Error: - Token Type: ->` + i.name + `<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`, type: F2.LexerDefinitionErrorType.EOI_ANCHOR_FOUND, tokenTypes: [i] }; - }); - return n2; - } - T.findEndOfInputAnchor = On; - function Nn(t3) { - var e = h.filter(t3, function(n2) { - var i = n2[Ae2]; - return i.test(""); - }), r = h.map(e, function(n2) { - return { message: "Token Type: ->" + n2.name + "<- static 'PATTERN' must not match an empty string", type: F2.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN, tokenTypes: [n2] }; - }); - return r; - } - T.findEmptyMatchRegExps = Nn; - var to = /[^\\[][\^]|^\^/; - function In2(t3) { - var e = function(i) { - hn(a2, i); - function a2() { - var o = i !== null && i.apply(this, arguments) || this; - return o.found = false, o; - } - return a2.prototype.visitStartAnchor = function(o) { - this.found = true; - }, a2; - }(dn.BaseRegExpVisitor), r = h.filter(t3, function(i) { - var a2 = i[Ae2]; - try { - var o = vn.getRegExpAst(a2), s = new e(); - return s.visit(o), s.found; - } catch (c2) { - return to.test(a2.source); - } - }), n2 = h.map(r, function(i) { - return { message: `Unexpected RegExp Anchor Error: - Token Type: ->` + i.name + `<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`, type: F2.LexerDefinitionErrorType.SOI_ANCHOR_FOUND, tokenTypes: [i] }; - }); - return n2; - } - T.findStartOfInputAnchor = In2; - function kn(t3) { - var e = h.filter(t3, function(n2) { - var i = n2[Ae2]; - return i instanceof RegExp && (i.multiline || i.global); - }), r = h.map(e, function(n2) { - return { message: "Token Type: ->" + n2.name + "<- static 'PATTERN' may NOT contain global('g') or multiline('m')", type: F2.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND, tokenTypes: [n2] }; - }); - return r; - } - T.findUnsupportedFlags = kn; - function Pn(t3) { - var e = [], r = h.map(t3, function(a2) { - return h.reduce(t3, function(o, s) { - return a2.PATTERN.source === s.PATTERN.source && !h.contains(e, s) && s.PATTERN !== F2.Lexer.NA && (e.push(s), o.push(s)), o; - }, []); - }); - r = h.compact(r); - var n2 = h.filter(r, function(a2) { - return a2.length > 1; - }), i = h.map(n2, function(a2) { - var o = h.map(a2, function(c2) { - return c2.name; - }), s = h.first(a2).PATTERN; - return { message: "The same RegExp pattern ->" + s + "<-" + ("has been used in all of the following Token Types: " + o.join(", ") + " <-"), type: F2.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND, tokenTypes: a2 }; - }); - return i; - } - T.findDuplicatePatterns = Pn; - function gn(t3) { - var e = h.filter(t3, function(n2) { - if (!h.has(n2, "GROUP")) return false; - var i = n2.GROUP; - return i !== F2.Lexer.SKIPPED && i !== F2.Lexer.NA && !h.isString(i); - }), r = h.map(e, function(n2) { - return { message: "Token Type: ->" + n2.name + "<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String", type: F2.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND, tokenTypes: [n2] }; - }); - return r; - } - T.findInvalidGroupType = gn; - function An(t3, e) { - var r = h.filter(t3, function(i) { - return i.PUSH_MODE !== void 0 && !h.contains(e, i.PUSH_MODE); - }), n2 = h.map(r, function(i) { - var a2 = "Token Type: ->" + i.name + "<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->" + i.PUSH_MODE + "<-which does not exist"; - return { message: a2, type: F2.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST, tokenTypes: [i] }; - }); - return n2; - } - T.findModesThatDoNotExist = An; - function Rn(t3) { - var e = [], r = h.reduce(t3, function(n2, i, a2) { - var o = i.PATTERN; - return o === F2.Lexer.NA || (h.isString(o) ? n2.push({ str: o, idx: a2, tokenType: i }) : h.isRegExp(o) && no(o) && n2.push({ str: o.source, idx: a2, tokenType: i })), n2; - }, []); - return h.forEach(t3, function(n2, i) { - h.forEach(r, function(a2) { - var o = a2.str, s = a2.idx, c2 = a2.tokenType; - if (i < s && ro(o, n2.PATTERN)) { - var f = "Token: ->" + c2.name + `<- can never be matched. -` + ("Because it appears AFTER the Token Type ->" + n2.name + "<-") + `in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`; - e.push({ message: f, type: F2.LexerDefinitionErrorType.UNREACHABLE_PATTERN, tokenTypes: [n2, c2] }); - } - }); - }), e; - } - T.findUnreachablePatterns = Rn; - function ro(t3, e) { - if (h.isRegExp(e)) { - var r = e.exec(t3); - return r !== null && r.index === 0; - } else { - if (h.isFunction(e)) return e(t3, 0, [], {}); - if (h.has(e, "exec")) return e.exec(t3, 0, [], {}); - if (typeof e == "string") return e === t3; - throw Error("non exhaustive match"); - } - } - function no(t3) { - var e = [".", "\\", "[", "]", "|", "^", "$", "(", ")", "?", "*", "+", "{"]; - return h.find(e, function(r) { - return t3.source.indexOf(r) !== -1; - }) === void 0; - } - function _r(t3) { - var e = t3.ignoreCase ? "i" : ""; - return new RegExp("^(?:" + t3.source + ")", e); - } - T.addStartOfInput = _r; - function gr(t3) { - var e = t3.ignoreCase ? "iy" : "y"; - return new RegExp("" + t3.source, e); - } - T.addStickyFlag = gr; - function io(t3, e, r) { - var n2 = []; - return h.has(t3, T.DEFAULT_MODE) || n2.push({ message: "A MultiMode Lexer cannot be initialized without a <" + T.DEFAULT_MODE + `> property in its definition -`, type: F2.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE }), h.has(t3, T.MODES) || n2.push({ message: "A MultiMode Lexer cannot be initialized without a <" + T.MODES + `> property in its definition -`, type: F2.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY }), h.has(t3, T.MODES) && h.has(t3, T.DEFAULT_MODE) && !h.has(t3.modes, t3.defaultMode) && n2.push({ message: "A MultiMode Lexer cannot be initialized with a " + T.DEFAULT_MODE + ": <" + t3.defaultMode + `>which does not exist -`, type: F2.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST }), h.has(t3, T.MODES) && h.forEach(t3.modes, function(i, a2) { - h.forEach(i, function(o, s) { - h.isUndefined(o) && n2.push({ message: "A Lexer cannot be initialized using an undefined Token Type. Mode:" + ("<" + a2 + "> at index: <" + s + `> -`), type: F2.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED }); - }); - }), n2; - } - T.performRuntimeChecks = io; - function ao(t3, e, r) { - var n2 = [], i = false, a2 = h.compact(h.flatten(h.mapValues(t3.modes, function(c2) { - return c2; - }))), o = h.reject(a2, function(c2) { - return c2[Ae2] === F2.Lexer.NA; - }), s = Tn(r); - return e && h.forEach(o, function(c2) { - var f = En(c2, s); - if (f !== false) { - var p2 = Sn2(c2, f), l2 = { message: p2, type: f.issue, tokenType: c2 }; - n2.push(l2); - } else h.has(c2, "LINE_BREAKS") ? c2.LINE_BREAKS === true && (i = true) : Ye.canMatchCharCode(s, c2.PATTERN) && (i = true); - }), e && !i && n2.push({ message: `Warning: No LINE_BREAKS Found. - This Lexer has been defined to track line and column information, - But none of the Token Types can be identified as matching a line terminator. - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`, type: F2.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS }), n2; - } - T.performWarningRuntimeChecks = ao; - function oo(t3) { - var e = {}, r = h.keys(t3); - return h.forEach(r, function(n2) { - var i = t3[n2]; - if (h.isArray(i)) e[n2] = []; - else throw Error("non exhaustive match"); - }), e; - } - T.cloneEmptyGroups = oo; - function Ar(t3) { - var e = t3.PATTERN; - if (h.isRegExp(e)) return false; - if (h.isFunction(e)) return true; - if (h.has(e, "exec")) return true; - if (h.isString(e)) return false; - throw Error("non exhaustive match"); - } - T.isCustomPattern = Ar; - function mn(t3) { - return h.isString(t3) && t3.length === 1 ? t3.charCodeAt(0) : false; - } - T.isShortPattern = mn; - T.LineTerminatorOptimizedTester = { test: function(t3) { - for (var e = t3.length, r = this.lastIndex; r < e; r++) { - var n2 = t3.charCodeAt(r); - if (n2 === 10) return this.lastIndex = r + 1, true; - if (n2 === 13) return t3.charCodeAt(r + 1) === 10 ? this.lastIndex = r + 2 : this.lastIndex = r + 1, true; - } - return false; - }, lastIndex: 0 }; - function En(t3, e) { - if (h.has(t3, "LINE_BREAKS")) return false; - if (h.isRegExp(t3.PATTERN)) { - try { - Ye.canMatchCharCode(e, t3.PATTERN); - } catch (r) { - return { issue: F2.LexerDefinitionErrorType.IDENTIFY_TERMINATOR, errMsg: r.message }; - } - return false; - } else { - if (h.isString(t3.PATTERN)) return false; - if (Ar(t3)) return { issue: F2.LexerDefinitionErrorType.CUSTOM_LINE_BREAK }; - throw Error("non exhaustive match"); - } - } - function Sn2(t3, e) { - if (e.issue === F2.LexerDefinitionErrorType.IDENTIFY_TERMINATOR) return `Warning: unable to identify line terminator usage in pattern. -` + (" The problem is in the <" + t3.name + `> Token Type -`) + (" Root cause: " + e.errMsg + `. -`) + " For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR"; - if (e.issue === F2.LexerDefinitionErrorType.CUSTOM_LINE_BREAK) return `Warning: A Custom Token Pattern should specify the option. -` + (" The problem is in the <" + t3.name + `> Token Type -`) + " For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK"; - throw Error("non exhaustive match"); - } - T.buildLineBreakIssueMessage = Sn2; - function Tn(t3) { - var e = h.map(t3, function(r) { - return h.isString(r) && r.length > 0 ? r.charCodeAt(0) : r; - }); - return e; - } - function Rr(t3, e, r) { - t3[e] === void 0 ? t3[e] = [r] : t3[e].push(r); - } - T.minOptimizationVal = 256; - var Ft2 = []; - function Or(t3) { - return t3 < T.minOptimizationVal ? t3 : Ft2[t3]; - } - T.charCodeToOptimizedIndex = Or; - function $a() { - if (h.isEmpty(Ft2)) { - Ft2 = new Array(65536); - for (var t3 = 0; t3 < 65536; t3++) Ft2[t3] = t3 > 255 ? 255 + ~~(t3 / 255) : t3; - } - } -}); -var Xe = R2((N) => { - "use strict"; - Object.defineProperty(N, "__esModule", { value: true }); - N.isTokenType = N.hasExtendingTokensTypesMapProperty = N.hasExtendingTokensTypesProperty = N.hasCategoriesProperty = N.hasShortKeyProperty = N.singleAssignCategoriesToksMap = N.assignCategoriesMapProp = N.assignCategoriesTokensProp = N.assignTokenDefaultProps = N.expandCategories = N.augmentTokenTypes = N.tokenIdxToClass = N.tokenShortNameIdx = N.tokenStructuredMatcherNoCategories = N.tokenStructuredMatcher = void 0; - var V = k(); - function so(t3, e) { - var r = t3.tokenTypeIdx; - return r === e.tokenTypeIdx ? true : e.isParent === true && e.categoryMatchesMap[r] === true; - } - N.tokenStructuredMatcher = so; - function uo(t3, e) { - return t3.tokenTypeIdx === e.tokenTypeIdx; - } - N.tokenStructuredMatcherNoCategories = uo; - N.tokenShortNameIdx = 1; - N.tokenIdxToClass = {}; - function co(t3) { - var e = xn(t3); - Cn(e), Mn(e), Ln(e), V.forEach(e, function(r) { - r.isParent = r.categoryMatches.length > 0; - }); - } - N.augmentTokenTypes = co; - function xn(t3) { - for (var e = V.cloneArr(t3), r = t3, n2 = true; n2; ) { - r = V.compact(V.flatten(V.map(r, function(a2) { - return a2.CATEGORIES; - }))); - var i = V.difference(r, e); - e = e.concat(i), V.isEmpty(i) ? n2 = false : r = i; - } - return e; - } - N.expandCategories = xn; - function Cn(t3) { - V.forEach(t3, function(e) { - bn(e) || (N.tokenIdxToClass[N.tokenShortNameIdx] = e, e.tokenTypeIdx = N.tokenShortNameIdx++), Nr(e) && !V.isArray(e.CATEGORIES) && (e.CATEGORIES = [e.CATEGORIES]), Nr(e) || (e.CATEGORIES = []), Fn(e) || (e.categoryMatches = []), wn(e) || (e.categoryMatchesMap = {}); - }); - } - N.assignTokenDefaultProps = Cn; - function Ln(t3) { - V.forEach(t3, function(e) { - e.categoryMatches = [], V.forEach(e.categoryMatchesMap, function(r, n2) { - e.categoryMatches.push(N.tokenIdxToClass[n2].tokenTypeIdx); - }); - }); - } - N.assignCategoriesTokensProp = Ln; - function Mn(t3) { - V.forEach(t3, function(e) { - Ir([], e); - }); - } - N.assignCategoriesMapProp = Mn; - function Ir(t3, e) { - V.forEach(t3, function(r) { - e.categoryMatchesMap[r.tokenTypeIdx] = true; - }), V.forEach(e.CATEGORIES, function(r) { - var n2 = t3.concat(e); - V.contains(n2, r) || Ir(n2, r); - }); - } - N.singleAssignCategoriesToksMap = Ir; - function bn(t3) { - return V.has(t3, "tokenTypeIdx"); - } - N.hasShortKeyProperty = bn; - function Nr(t3) { - return V.has(t3, "CATEGORIES"); - } - N.hasCategoriesProperty = Nr; - function Fn(t3) { - return V.has(t3, "categoryMatches"); - } - N.hasExtendingTokensTypesProperty = Fn; - function wn(t3) { - return V.has(t3, "categoryMatchesMap"); - } - N.hasExtendingTokensTypesMapProperty = wn; - function lo(t3) { - return V.has(t3, "tokenTypeIdx"); - } - N.isTokenType = lo; -}); -var kr = R2((wt) => { - "use strict"; - Object.defineProperty(wt, "__esModule", { value: true }); - wt.defaultLexerErrorProvider = void 0; - wt.defaultLexerErrorProvider = { buildUnableToPopLexerModeMessage: function(t3) { - return "Unable to pop Lexer Mode after encountering Token ->" + t3.image + "<- The Mode Stack is empty"; - }, buildUnexpectedCharactersMessage: function(t3, e, r, n2, i) { - return "unexpected character: ->" + t3.charAt(e) + "<- at offset: " + e + "," + (" skipped " + r + " characters."); - } }; -}); -var ft = R2((qe) => { - "use strict"; - Object.defineProperty(qe, "__esModule", { value: true }); - qe.Lexer = qe.LexerDefinitionErrorType = void 0; - var Ee = Tr(), w = k(), fo = Xe(), po = kr(), ho = Lt(), vo; - (function(t3) { - t3[t3.MISSING_PATTERN = 0] = "MISSING_PATTERN", t3[t3.INVALID_PATTERN = 1] = "INVALID_PATTERN", t3[t3.EOI_ANCHOR_FOUND = 2] = "EOI_ANCHOR_FOUND", t3[t3.UNSUPPORTED_FLAGS_FOUND = 3] = "UNSUPPORTED_FLAGS_FOUND", t3[t3.DUPLICATE_PATTERNS_FOUND = 4] = "DUPLICATE_PATTERNS_FOUND", t3[t3.INVALID_GROUP_TYPE_FOUND = 5] = "INVALID_GROUP_TYPE_FOUND", t3[t3.PUSH_MODE_DOES_NOT_EXIST = 6] = "PUSH_MODE_DOES_NOT_EXIST", t3[t3.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE = 7] = "MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE", t3[t3.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY = 8] = "MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY", t3[t3.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST = 9] = "MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST", t3[t3.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED = 10] = "LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED", t3[t3.SOI_ANCHOR_FOUND = 11] = "SOI_ANCHOR_FOUND", t3[t3.EMPTY_MATCH_PATTERN = 12] = "EMPTY_MATCH_PATTERN", t3[t3.NO_LINE_BREAKS_FLAGS = 13] = "NO_LINE_BREAKS_FLAGS", t3[t3.UNREACHABLE_PATTERN = 14] = "UNREACHABLE_PATTERN", t3[t3.IDENTIFY_TERMINATOR = 15] = "IDENTIFY_TERMINATOR", t3[t3.CUSTOM_LINE_BREAK = 16] = "CUSTOM_LINE_BREAK"; - })(vo = qe.LexerDefinitionErrorType || (qe.LexerDefinitionErrorType = {})); - var pt = { deferDefinitionErrorsHandling: false, positionTracking: "full", lineTerminatorsPattern: /\n|\r\n?/g, lineTerminatorCharacters: [` -`, "\r"], ensureOptimizations: false, safeMode: false, errorMessageProvider: po.defaultLexerErrorProvider, traceInitPerf: false, skipValidations: false }; - Object.freeze(pt); - var mo = function() { - function t3(e, r) { - var n2 = this; - if (r === void 0 && (r = pt), this.lexerDefinition = e, this.lexerDefinitionErrors = [], this.lexerDefinitionWarning = [], this.patternIdxToConfig = {}, this.charCodeToPatternIdxToConfig = {}, this.modes = [], this.emptyGroups = {}, this.config = void 0, this.trackStartLines = true, this.trackEndLines = true, this.hasCustom = false, this.canModeBeOptimized = {}, typeof r == "boolean") throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`); - this.config = w.merge(pt, r); - var i = this.config.traceInitPerf; - i === true ? (this.traceInitMaxIdent = Infinity, this.traceInitPerf = true) : typeof i == "number" && (this.traceInitMaxIdent = i, this.traceInitPerf = true), this.traceInitIndent = -1, this.TRACE_INIT("Lexer Constructor", function() { - var a2, o = true; - n2.TRACE_INIT("Lexer Config handling", function() { - if (n2.config.lineTerminatorsPattern === pt.lineTerminatorsPattern) n2.config.lineTerminatorsPattern = Ee.LineTerminatorOptimizedTester; - else if (n2.config.lineTerminatorCharacters === pt.lineTerminatorCharacters) throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`); - if (r.safeMode && r.ensureOptimizations) throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.'); - n2.trackStartLines = /full|onlyStart/i.test(n2.config.positionTracking), n2.trackEndLines = /full/i.test(n2.config.positionTracking), w.isArray(e) ? (a2 = { modes: {} }, a2.modes[Ee.DEFAULT_MODE] = w.cloneArr(e), a2[Ee.DEFAULT_MODE] = Ee.DEFAULT_MODE) : (o = false, a2 = w.cloneObj(e)); - }), n2.config.skipValidations === false && (n2.TRACE_INIT("performRuntimeChecks", function() { - n2.lexerDefinitionErrors = n2.lexerDefinitionErrors.concat(Ee.performRuntimeChecks(a2, n2.trackStartLines, n2.config.lineTerminatorCharacters)); - }), n2.TRACE_INIT("performWarningRuntimeChecks", function() { - n2.lexerDefinitionWarning = n2.lexerDefinitionWarning.concat(Ee.performWarningRuntimeChecks(a2, n2.trackStartLines, n2.config.lineTerminatorCharacters)); - })), a2.modes = a2.modes ? a2.modes : {}, w.forEach(a2.modes, function(p2, l2) { - a2.modes[l2] = w.reject(p2, function(m) { - return w.isUndefined(m); - }); - }); - var s = w.keys(a2.modes); - if (w.forEach(a2.modes, function(p2, l2) { - n2.TRACE_INIT("Mode: <" + l2 + "> processing", function() { - if (n2.modes.push(l2), n2.config.skipValidations === false && n2.TRACE_INIT("validatePatterns", function() { - n2.lexerDefinitionErrors = n2.lexerDefinitionErrors.concat(Ee.validatePatterns(p2, s)); - }), w.isEmpty(n2.lexerDefinitionErrors)) { - fo.augmentTokenTypes(p2); - var m; - n2.TRACE_INIT("analyzeTokenTypes", function() { - m = Ee.analyzeTokenTypes(p2, { lineTerminatorCharacters: n2.config.lineTerminatorCharacters, positionTracking: r.positionTracking, ensureOptimizations: r.ensureOptimizations, safeMode: r.safeMode, tracer: n2.TRACE_INIT.bind(n2) }); - }), n2.patternIdxToConfig[l2] = m.patternIdxToConfig, n2.charCodeToPatternIdxToConfig[l2] = m.charCodeToPatternIdxToConfig, n2.emptyGroups = w.merge(n2.emptyGroups, m.emptyGroups), n2.hasCustom = m.hasCustom || n2.hasCustom, n2.canModeBeOptimized[l2] = m.canBeOptimized; - } - }); - }), n2.defaultMode = a2.defaultMode, !w.isEmpty(n2.lexerDefinitionErrors) && !n2.config.deferDefinitionErrorsHandling) { - var c2 = w.map(n2.lexerDefinitionErrors, function(p2) { - return p2.message; - }), f = c2.join(`----------------------- -`); - throw new Error(`Errors detected in definition of Lexer: -` + f); - } - w.forEach(n2.lexerDefinitionWarning, function(p2) { - w.PRINT_WARNING(p2.message); - }), n2.TRACE_INIT("Choosing sub-methods implementations", function() { - if (Ee.SUPPORT_STICKY ? (n2.chopInput = w.IDENTITY, n2.match = n2.matchWithTest) : (n2.updateLastIndex = w.NOOP, n2.match = n2.matchWithExec), o && (n2.handleModes = w.NOOP), n2.trackStartLines === false && (n2.computeNewColumn = w.IDENTITY), n2.trackEndLines === false && (n2.updateTokenEndLineColumnLocation = w.NOOP), /full/i.test(n2.config.positionTracking)) n2.createTokenInstance = n2.createFullToken; - else if (/onlyStart/i.test(n2.config.positionTracking)) n2.createTokenInstance = n2.createStartOnlyToken; - else if (/onlyOffset/i.test(n2.config.positionTracking)) n2.createTokenInstance = n2.createOffsetOnlyToken; - else throw Error('Invalid config option: "' + n2.config.positionTracking + '"'); - n2.hasCustom ? (n2.addToken = n2.addTokenUsingPush, n2.handlePayload = n2.handlePayloadWithCustom) : (n2.addToken = n2.addTokenUsingMemberAccess, n2.handlePayload = n2.handlePayloadNoCustom); - }), n2.TRACE_INIT("Failed Optimization Warnings", function() { - var p2 = w.reduce(n2.canModeBeOptimized, function(l2, m, v) { - return m === false && l2.push(v), l2; - }, []); - if (r.ensureOptimizations && !w.isEmpty(p2)) throw Error("Lexer Modes: < " + p2.join(", ") + ` > cannot be optimized. - Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`); - }), n2.TRACE_INIT("clearRegExpParserCache", function() { - ho.clearRegExpParserCache(); - }), n2.TRACE_INIT("toFastProperties", function() { - w.toFastProperties(n2); - }); - }); - } - return t3.prototype.tokenize = function(e, r) { - if (r === void 0 && (r = this.defaultMode), !w.isEmpty(this.lexerDefinitionErrors)) { - var n2 = w.map(this.lexerDefinitionErrors, function(o) { - return o.message; - }), i = n2.join(`----------------------- -`); - throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -` + i); - } - var a2 = this.tokenizeInternal(e, r); - return a2; - }, t3.prototype.tokenizeInternal = function(e, r) { - var n2 = this, i, a2, o, s, c2, f, p2, l2, m, v, u, d, A2, _, g2, y2 = e, b3 = y2.length, L = 0, se2 = 0, fe = this.hasCustom ? 0 : Math.floor(e.length / 10), Z2 = new Array(fe), ue = [], Q3 = this.trackStartLines ? 1 : void 0, te2 = this.trackStartLines ? 1 : void 0, xe2 = Ee.cloneEmptyGroups(this.emptyGroups), it = this.trackStartLines, at = this.config.lineTerminatorsPattern, Ke = 0, we = [], ot = [], It = [], Qr = []; - Object.freeze(Qr); - var st = void 0; - function Jr() { - return we; - } - function en(J) { - var lt = Ee.charCodeToOptimizedIndex(J), ze = ot[lt]; - return ze === void 0 ? Qr : ze; - } - var wa = function(J) { - if (It.length === 1 && J.tokenType.PUSH_MODE === void 0) { - var lt = n2.config.errorMessageProvider.buildUnableToPopLexerModeMessage(J); - ue.push({ offset: J.startOffset, line: J.startLine !== void 0 ? J.startLine : void 0, column: J.startColumn !== void 0 ? J.startColumn : void 0, length: J.image.length, message: lt }); - } else { - It.pop(); - var ze = w.last(It); - we = n2.patternIdxToConfig[ze], ot = n2.charCodeToPatternIdxToConfig[ze], Ke = we.length; - var Ua = n2.canModeBeOptimized[ze] && n2.config.safeMode === false; - ot && Ua ? st = en : st = Jr; - } - }; - function tn(J) { - It.push(J), ot = this.charCodeToPatternIdxToConfig[J], we = this.patternIdxToConfig[J], Ke = we.length, Ke = we.length; - var lt = this.canModeBeOptimized[J] && this.config.safeMode === false; - ot && lt ? st = en : st = Jr; - } - tn.call(this, r); - for (var me; L < b3; ) { - c2 = null; - var rn = y2.charCodeAt(L), nn = st(rn), Da = nn.length; - for (i = 0; i < Da; i++) { - me = nn[i]; - var De = me.pattern; - f = null; - var ut = me.short; - if (ut !== false ? rn === ut && (c2 = De) : me.isCustom === true ? (g2 = De.exec(y2, L, Z2, xe2), g2 !== null ? (c2 = g2[0], g2.payload !== void 0 && (f = g2.payload)) : c2 = null) : (this.updateLastIndex(De, L), c2 = this.match(De, e, L)), c2 !== null) { - if (s = me.longerAlt, s !== void 0) { - var fr = we[s], pr = fr.pattern; - p2 = null, fr.isCustom === true ? (g2 = pr.exec(y2, L, Z2, xe2), g2 !== null ? (o = g2[0], g2.payload !== void 0 && (p2 = g2.payload)) : o = null) : (this.updateLastIndex(pr, L), o = this.match(pr, e, L)), o && o.length > c2.length && (c2 = o, f = p2, me = fr); - } - break; - } - } - if (c2 !== null) { - if (l2 = c2.length, m = me.group, m !== void 0 && (v = me.tokenTypeIdx, u = this.createTokenInstance(c2, L, v, me.tokenType, Q3, te2, l2), this.handlePayload(u, f), m === false ? se2 = this.addToken(Z2, se2, u) : xe2[m].push(u)), e = this.chopInput(e, l2), L = L + l2, te2 = this.computeNewColumn(te2, l2), it === true && me.canLineTerminator === true) { - var kt = 0, hr = void 0, dr = void 0; - at.lastIndex = 0; - do - hr = at.test(c2), hr === true && (dr = at.lastIndex - 1, kt++); - while (hr === true); - kt !== 0 && (Q3 = Q3 + kt, te2 = l2 - dr, this.updateTokenEndLineColumnLocation(u, m, dr, kt, Q3, te2, l2)); - } - this.handleModes(me, wa, tn, u); - } else { - for (var vr = L, an = Q3, on = te2, ct2 = false; !ct2 && L < b3; ) for (A2 = y2.charCodeAt(L), e = this.chopInput(e, 1), L++, a2 = 0; a2 < Ke; a2++) { - var mr = we[a2], De = mr.pattern, ut = mr.short; - if (ut !== false ? y2.charCodeAt(L) === ut && (ct2 = true) : mr.isCustom === true ? ct2 = De.exec(y2, L, Z2, xe2) !== null : (this.updateLastIndex(De, L), ct2 = De.exec(e) !== null), ct2 === true) break; - } - d = L - vr, _ = this.config.errorMessageProvider.buildUnexpectedCharactersMessage(y2, vr, d, an, on), ue.push({ offset: vr, line: an, column: on, length: d, message: _ }); - } - } - return this.hasCustom || (Z2.length = se2), { tokens: Z2, groups: xe2, errors: ue }; - }, t3.prototype.handleModes = function(e, r, n2, i) { - if (e.pop === true) { - var a2 = e.push; - r(i), a2 !== void 0 && n2.call(this, a2); - } else e.push !== void 0 && n2.call(this, e.push); - }, t3.prototype.chopInput = function(e, r) { - return e.substring(r); - }, t3.prototype.updateLastIndex = function(e, r) { - e.lastIndex = r; - }, t3.prototype.updateTokenEndLineColumnLocation = function(e, r, n2, i, a2, o, s) { - var c2, f; - r !== void 0 && (c2 = n2 === s - 1, f = c2 ? -1 : 0, i === 1 && c2 === true || (e.endLine = a2 + f, e.endColumn = o - 1 + -f)); - }, t3.prototype.computeNewColumn = function(e, r) { - return e + r; - }, t3.prototype.createTokenInstance = function() { - for (var e = [], r = 0; r < arguments.length; r++) e[r] = arguments[r]; - return null; - }, t3.prototype.createOffsetOnlyToken = function(e, r, n2, i) { - return { image: e, startOffset: r, tokenTypeIdx: n2, tokenType: i }; - }, t3.prototype.createStartOnlyToken = function(e, r, n2, i, a2, o) { - return { image: e, startOffset: r, startLine: a2, startColumn: o, tokenTypeIdx: n2, tokenType: i }; - }, t3.prototype.createFullToken = function(e, r, n2, i, a2, o, s) { - return { image: e, startOffset: r, endOffset: r + s - 1, startLine: a2, endLine: a2, startColumn: o, endColumn: o + s - 1, tokenTypeIdx: n2, tokenType: i }; - }, t3.prototype.addToken = function(e, r, n2) { - return 666; - }, t3.prototype.addTokenUsingPush = function(e, r, n2) { - return e.push(n2), r; - }, t3.prototype.addTokenUsingMemberAccess = function(e, r, n2) { - return e[r] = n2, r++, r; - }, t3.prototype.handlePayload = function(e, r) { - }, t3.prototype.handlePayloadNoCustom = function(e, r) { - }, t3.prototype.handlePayloadWithCustom = function(e, r) { - r !== null && (e.payload = r); - }, t3.prototype.match = function(e, r, n2) { - return null; - }, t3.prototype.matchWithTest = function(e, r, n2) { - var i = e.test(r); - return i === true ? r.substring(n2, e.lastIndex) : null; - }, t3.prototype.matchWithExec = function(e, r) { - var n2 = e.exec(r); - return n2 !== null ? n2[0] : n2; - }, t3.prototype.TRACE_INIT = function(e, r) { - if (this.traceInitPerf === true) { - this.traceInitIndent++; - var n2 = new Array(this.traceInitIndent + 1).join(" "); - this.traceInitIndent < this.traceInitMaxIdent && console.log(n2 + "--> <" + e + ">"); - var i = w.timer(r), a2 = i.time, o = i.value, s = a2 > 10 ? console.warn : console.log; - return this.traceInitIndent < this.traceInitMaxIdent && s(n2 + "<-- <" + e + "> time: " + a2 + "ms"), this.traceInitIndent--, o; - } else return r(); - }, t3.SKIPPED = "This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.", t3.NA = /NOT_APPLICABLE/, t3; - }(); - qe.Lexer = mo; -}); -var Ue = R2((H) => { - "use strict"; - Object.defineProperty(H, "__esModule", { value: true }); - H.tokenMatcher = H.createTokenInstance = H.EOF = H.createToken = H.hasTokenLabel = H.tokenName = H.tokenLabel = void 0; - var Te = k(), Eo = ft(), Pr = Xe(); - function To(t3) { - return Dn(t3) ? t3.LABEL : t3.name; - } - H.tokenLabel = To; - function yo(t3) { - return t3.name; - } - H.tokenName = yo; - function Dn(t3) { - return Te.isString(t3.LABEL) && t3.LABEL !== ""; - } - H.hasTokenLabel = Dn; - var _o = "parent", Un = "categories", Gn = "label", Wn = "group", Bn = "push_mode", qn = "pop_mode", jn = "longer_alt", Vn = "line_breaks", Kn = "start_chars_hint"; - function zn(t3) { - return go(t3); - } - H.createToken = zn; - function go(t3) { - var e = t3.pattern, r = {}; - if (r.name = t3.name, Te.isUndefined(e) || (r.PATTERN = e), Te.has(t3, _o)) throw `The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`; - return Te.has(t3, Un) && (r.CATEGORIES = t3[Un]), Pr.augmentTokenTypes([r]), Te.has(t3, Gn) && (r.LABEL = t3[Gn]), Te.has(t3, Wn) && (r.GROUP = t3[Wn]), Te.has(t3, qn) && (r.POP_MODE = t3[qn]), Te.has(t3, Bn) && (r.PUSH_MODE = t3[Bn]), Te.has(t3, jn) && (r.LONGER_ALT = t3[jn]), Te.has(t3, Vn) && (r.LINE_BREAKS = t3[Vn]), Te.has(t3, Kn) && (r.START_CHARS_HINT = t3[Kn]), r; - } - H.EOF = zn({ name: "EOF", pattern: Eo.Lexer.NA }); - Pr.augmentTokenTypes([H.EOF]); - function Ao(t3, e, r, n2, i, a2, o, s) { - return { image: e, startOffset: r, endOffset: n2, startLine: i, endLine: a2, startColumn: o, endColumn: s, tokenTypeIdx: t3.tokenTypeIdx, tokenType: t3 }; - } - H.createTokenInstance = Ao; - function Ro(t3, e) { - return Pr.tokenStructuredMatcher(t3, e); - } - H.tokenMatcher = Ro; -}); -var ne = R2((S) => { - "use strict"; - var Le = S && S.__extends || /* @__PURE__ */ function() { - var t3 = function(e, r) { - return t3 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n2, i) { - n2.__proto__ = i; - } || function(n2, i) { - for (var a2 in i) Object.prototype.hasOwnProperty.call(i, a2) && (n2[a2] = i[a2]); - }, t3(e, r); - }; - return function(e, r) { - if (typeof r != "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null"); - t3(e, r); - function n2() { - this.constructor = e; - } - e.prototype = r === null ? Object.create(r) : (n2.prototype = r.prototype, new n2()); - }; - }(); - Object.defineProperty(S, "__esModule", { value: true }); - S.serializeProduction = S.serializeGrammar = S.Terminal = S.Alternation = S.RepetitionWithSeparator = S.Repetition = S.RepetitionMandatoryWithSeparator = S.RepetitionMandatory = S.Option = S.Alternative = S.Rule = S.NonTerminal = S.AbstractProduction = void 0; - var G = k(), Oo = Ue(), Re = function() { - function t3(e) { - this._definition = e; - } - return Object.defineProperty(t3.prototype, "definition", { get: function() { - return this._definition; - }, set: function(e) { - this._definition = e; - }, enumerable: false, configurable: true }), t3.prototype.accept = function(e) { - e.visit(this), G.forEach(this.definition, function(r) { - r.accept(e); - }); - }, t3; - }(); - S.AbstractProduction = Re; - var Hn = function(t3) { - Le(e, t3); - function e(r) { - var n2 = t3.call(this, []) || this; - return n2.idx = 1, G.assign(n2, G.pick(r, function(i) { - return i !== void 0; - })), n2; - } - return Object.defineProperty(e.prototype, "definition", { get: function() { - return this.referencedRule !== void 0 ? this.referencedRule.definition : []; - }, set: function(r) { - }, enumerable: false, configurable: true }), e.prototype.accept = function(r) { - r.visit(this); - }, e; - }(Re); - S.NonTerminal = Hn; - var Yn = function(t3) { - Le(e, t3); - function e(r) { - var n2 = t3.call(this, r.definition) || this; - return n2.orgText = "", G.assign(n2, G.pick(r, function(i) { - return i !== void 0; - })), n2; - } - return e; - }(Re); - S.Rule = Yn; - var Xn = function(t3) { - Le(e, t3); - function e(r) { - var n2 = t3.call(this, r.definition) || this; - return n2.ignoreAmbiguities = false, G.assign(n2, G.pick(r, function(i) { - return i !== void 0; - })), n2; - } - return e; - }(Re); - S.Alternative = Xn; - var $n = function(t3) { - Le(e, t3); - function e(r) { - var n2 = t3.call(this, r.definition) || this; - return n2.idx = 1, G.assign(n2, G.pick(r, function(i) { - return i !== void 0; - })), n2; - } - return e; - }(Re); - S.Option = $n; - var Zn = function(t3) { - Le(e, t3); - function e(r) { - var n2 = t3.call(this, r.definition) || this; - return n2.idx = 1, G.assign(n2, G.pick(r, function(i) { - return i !== void 0; - })), n2; - } - return e; - }(Re); - S.RepetitionMandatory = Zn; - var Qn = function(t3) { - Le(e, t3); - function e(r) { - var n2 = t3.call(this, r.definition) || this; - return n2.idx = 1, G.assign(n2, G.pick(r, function(i) { - return i !== void 0; - })), n2; - } - return e; - }(Re); - S.RepetitionMandatoryWithSeparator = Qn; - var Jn = function(t3) { - Le(e, t3); - function e(r) { - var n2 = t3.call(this, r.definition) || this; - return n2.idx = 1, G.assign(n2, G.pick(r, function(i) { - return i !== void 0; - })), n2; - } - return e; - }(Re); - S.Repetition = Jn; - var ei = function(t3) { - Le(e, t3); - function e(r) { - var n2 = t3.call(this, r.definition) || this; - return n2.idx = 1, G.assign(n2, G.pick(r, function(i) { - return i !== void 0; - })), n2; - } - return e; - }(Re); - S.RepetitionWithSeparator = ei; - var ti = function(t3) { - Le(e, t3); - function e(r) { - var n2 = t3.call(this, r.definition) || this; - return n2.idx = 1, n2.ignoreAmbiguities = false, n2.hasPredicates = false, G.assign(n2, G.pick(r, function(i) { - return i !== void 0; - })), n2; - } - return Object.defineProperty(e.prototype, "definition", { get: function() { - return this._definition; - }, set: function(r) { - this._definition = r; - }, enumerable: false, configurable: true }), e; - }(Re); - S.Alternation = ti; - var Dt = function() { - function t3(e) { - this.idx = 1, G.assign(this, G.pick(e, function(r) { - return r !== void 0; - })); - } - return t3.prototype.accept = function(e) { - e.visit(this); - }, t3; - }(); - S.Terminal = Dt; - function No(t3) { - return G.map(t3, ht); - } - S.serializeGrammar = No; - function ht(t3) { - function e(i) { - return G.map(i, ht); - } - if (t3 instanceof Hn) return { type: "NonTerminal", name: t3.nonTerminalName, idx: t3.idx }; - if (t3 instanceof Xn) return { type: "Alternative", definition: e(t3.definition) }; - if (t3 instanceof $n) return { type: "Option", idx: t3.idx, definition: e(t3.definition) }; - if (t3 instanceof Zn) return { type: "RepetitionMandatory", idx: t3.idx, definition: e(t3.definition) }; - if (t3 instanceof Qn) return { type: "RepetitionMandatoryWithSeparator", idx: t3.idx, separator: ht(new Dt({ terminalType: t3.separator })), definition: e(t3.definition) }; - if (t3 instanceof ei) return { type: "RepetitionWithSeparator", idx: t3.idx, separator: ht(new Dt({ terminalType: t3.separator })), definition: e(t3.definition) }; - if (t3 instanceof Jn) return { type: "Repetition", idx: t3.idx, definition: e(t3.definition) }; - if (t3 instanceof ti) return { type: "Alternation", idx: t3.idx, definition: e(t3.definition) }; - if (t3 instanceof Dt) { - var r = { type: "Terminal", name: t3.terminalType.name, label: Oo.tokenLabel(t3.terminalType), idx: t3.idx }, n2 = t3.terminalType.PATTERN; - return t3.terminalType.PATTERN && (r.pattern = G.isRegExp(n2) ? n2.source : n2), r; - } else { - if (t3 instanceof Yn) return { type: "Rule", name: t3.name, orgText: t3.orgText, definition: e(t3.definition) }; - throw Error("non exhaustive match"); - } - } - S.serializeProduction = ht; -}); -var Gt = R2((Ut) => { - "use strict"; - Object.defineProperty(Ut, "__esModule", { value: true }); - Ut.RestWalker = void 0; - var Sr = k(), ie = ne(), Io = function() { - function t3() { - } - return t3.prototype.walk = function(e, r) { - var n2 = this; - r === void 0 && (r = []), Sr.forEach(e.definition, function(i, a2) { - var o = Sr.drop(e.definition, a2 + 1); - if (i instanceof ie.NonTerminal) n2.walkProdRef(i, o, r); - else if (i instanceof ie.Terminal) n2.walkTerminal(i, o, r); - else if (i instanceof ie.Alternative) n2.walkFlat(i, o, r); - else if (i instanceof ie.Option) n2.walkOption(i, o, r); - else if (i instanceof ie.RepetitionMandatory) n2.walkAtLeastOne(i, o, r); - else if (i instanceof ie.RepetitionMandatoryWithSeparator) n2.walkAtLeastOneSep(i, o, r); - else if (i instanceof ie.RepetitionWithSeparator) n2.walkManySep(i, o, r); - else if (i instanceof ie.Repetition) n2.walkMany(i, o, r); - else if (i instanceof ie.Alternation) n2.walkOr(i, o, r); - else throw Error("non exhaustive match"); - }); - }, t3.prototype.walkTerminal = function(e, r, n2) { - }, t3.prototype.walkProdRef = function(e, r, n2) { - }, t3.prototype.walkFlat = function(e, r, n2) { - var i = r.concat(n2); - this.walk(e, i); - }, t3.prototype.walkOption = function(e, r, n2) { - var i = r.concat(n2); - this.walk(e, i); - }, t3.prototype.walkAtLeastOne = function(e, r, n2) { - var i = [new ie.Option({ definition: e.definition })].concat(r, n2); - this.walk(e, i); - }, t3.prototype.walkAtLeastOneSep = function(e, r, n2) { - var i = ri(e, r, n2); - this.walk(e, i); - }, t3.prototype.walkMany = function(e, r, n2) { - var i = [new ie.Option({ definition: e.definition })].concat(r, n2); - this.walk(e, i); - }, t3.prototype.walkManySep = function(e, r, n2) { - var i = ri(e, r, n2); - this.walk(e, i); - }, t3.prototype.walkOr = function(e, r, n2) { - var i = this, a2 = r.concat(n2); - Sr.forEach(e.definition, function(o) { - var s = new ie.Alternative({ definition: [o] }); - i.walk(s, a2); - }); - }, t3; - }(); - Ut.RestWalker = Io; - function ri(t3, e, r) { - var n2 = [new ie.Option({ definition: [new ie.Terminal({ terminalType: t3.separator })].concat(t3.definition) })], i = n2.concat(e, r); - return i; - } -}); -var $e = R2((Wt) => { - "use strict"; - Object.defineProperty(Wt, "__esModule", { value: true }); - Wt.GAstVisitor = void 0; - var Oe = ne(), ko = function() { - function t3() { - } - return t3.prototype.visit = function(e) { - var r = e; - switch (r.constructor) { - case Oe.NonTerminal: - return this.visitNonTerminal(r); - case Oe.Alternative: - return this.visitAlternative(r); - case Oe.Option: - return this.visitOption(r); - case Oe.RepetitionMandatory: - return this.visitRepetitionMandatory(r); - case Oe.RepetitionMandatoryWithSeparator: - return this.visitRepetitionMandatoryWithSeparator(r); - case Oe.RepetitionWithSeparator: - return this.visitRepetitionWithSeparator(r); - case Oe.Repetition: - return this.visitRepetition(r); - case Oe.Alternation: - return this.visitAlternation(r); - case Oe.Terminal: - return this.visitTerminal(r); - case Oe.Rule: - return this.visitRule(r); - default: - throw Error("non exhaustive match"); - } - }, t3.prototype.visitNonTerminal = function(e) { - }, t3.prototype.visitAlternative = function(e) { - }, t3.prototype.visitOption = function(e) { - }, t3.prototype.visitRepetition = function(e) { - }, t3.prototype.visitRepetitionMandatory = function(e) { - }, t3.prototype.visitRepetitionMandatoryWithSeparator = function(e) { - }, t3.prototype.visitRepetitionWithSeparator = function(e) { - }, t3.prototype.visitAlternation = function(e) { - }, t3.prototype.visitTerminal = function(e) { - }, t3.prototype.visitRule = function(e) { - }, t3; - }(); - Wt.GAstVisitor = ko; -}); -var vt = R2((X2) => { - "use strict"; - var Po = X2 && X2.__extends || /* @__PURE__ */ function() { - var t3 = function(e, r) { - return t3 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n2, i) { - n2.__proto__ = i; - } || function(n2, i) { - for (var a2 in i) Object.prototype.hasOwnProperty.call(i, a2) && (n2[a2] = i[a2]); - }, t3(e, r); - }; - return function(e, r) { - if (typeof r != "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null"); - t3(e, r); - function n2() { - this.constructor = e; - } - e.prototype = r === null ? Object.create(r) : (n2.prototype = r.prototype, new n2()); - }; - }(); - Object.defineProperty(X2, "__esModule", { value: true }); - X2.collectMethods = X2.DslMethodsCollectorVisitor = X2.getProductionDslName = X2.isBranchingProd = X2.isOptionalProd = X2.isSequenceProd = void 0; - var dt2 = k(), W = ne(), So = $e(); - function xo(t3) { - return t3 instanceof W.Alternative || t3 instanceof W.Option || t3 instanceof W.Repetition || t3 instanceof W.RepetitionMandatory || t3 instanceof W.RepetitionMandatoryWithSeparator || t3 instanceof W.RepetitionWithSeparator || t3 instanceof W.Terminal || t3 instanceof W.Rule; - } - X2.isSequenceProd = xo; - function xr(t3, e) { - e === void 0 && (e = []); - var r = t3 instanceof W.Option || t3 instanceof W.Repetition || t3 instanceof W.RepetitionWithSeparator; - return r ? true : t3 instanceof W.Alternation ? dt2.some(t3.definition, function(n2) { - return xr(n2, e); - }) : t3 instanceof W.NonTerminal && dt2.contains(e, t3) ? false : t3 instanceof W.AbstractProduction ? (t3 instanceof W.NonTerminal && e.push(t3), dt2.every(t3.definition, function(n2) { - return xr(n2, e); - })) : false; - } - X2.isOptionalProd = xr; - function Co(t3) { - return t3 instanceof W.Alternation; - } - X2.isBranchingProd = Co; - function Lo(t3) { - if (t3 instanceof W.NonTerminal) return "SUBRULE"; - if (t3 instanceof W.Option) return "OPTION"; - if (t3 instanceof W.Alternation) return "OR"; - if (t3 instanceof W.RepetitionMandatory) return "AT_LEAST_ONE"; - if (t3 instanceof W.RepetitionMandatoryWithSeparator) return "AT_LEAST_ONE_SEP"; - if (t3 instanceof W.RepetitionWithSeparator) return "MANY_SEP"; - if (t3 instanceof W.Repetition) return "MANY"; - if (t3 instanceof W.Terminal) return "CONSUME"; - throw Error("non exhaustive match"); - } - X2.getProductionDslName = Lo; - var ni = function(t3) { - Po(e, t3); - function e() { - var r = t3 !== null && t3.apply(this, arguments) || this; - return r.separator = "-", r.dslMethods = { option: [], alternation: [], repetition: [], repetitionWithSeparator: [], repetitionMandatory: [], repetitionMandatoryWithSeparator: [] }, r; - } - return e.prototype.reset = function() { - this.dslMethods = { option: [], alternation: [], repetition: [], repetitionWithSeparator: [], repetitionMandatory: [], repetitionMandatoryWithSeparator: [] }; - }, e.prototype.visitTerminal = function(r) { - var n2 = r.terminalType.name + this.separator + "Terminal"; - dt2.has(this.dslMethods, n2) || (this.dslMethods[n2] = []), this.dslMethods[n2].push(r); - }, e.prototype.visitNonTerminal = function(r) { - var n2 = r.nonTerminalName + this.separator + "Terminal"; - dt2.has(this.dslMethods, n2) || (this.dslMethods[n2] = []), this.dslMethods[n2].push(r); - }, e.prototype.visitOption = function(r) { - this.dslMethods.option.push(r); - }, e.prototype.visitRepetitionWithSeparator = function(r) { - this.dslMethods.repetitionWithSeparator.push(r); - }, e.prototype.visitRepetitionMandatory = function(r) { - this.dslMethods.repetitionMandatory.push(r); - }, e.prototype.visitRepetitionMandatoryWithSeparator = function(r) { - this.dslMethods.repetitionMandatoryWithSeparator.push(r); - }, e.prototype.visitRepetition = function(r) { - this.dslMethods.repetition.push(r); - }, e.prototype.visitAlternation = function(r) { - this.dslMethods.alternation.push(r); - }, e; - }(So.GAstVisitor); - X2.DslMethodsCollectorVisitor = ni; - var Bt = new ni(); - function Mo(t3) { - Bt.reset(), t3.accept(Bt); - var e = Bt.dslMethods; - return Bt.reset(), e; - } - X2.collectMethods = Mo; -}); -var Lr = R2((Ne) => { - "use strict"; - Object.defineProperty(Ne, "__esModule", { value: true }); - Ne.firstForTerminal = Ne.firstForBranching = Ne.firstForSequence = Ne.first = void 0; - var qt = k(), ii = ne(), Cr = vt(); - function jt(t3) { - if (t3 instanceof ii.NonTerminal) return jt(t3.referencedRule); - if (t3 instanceof ii.Terminal) return si(t3); - if (Cr.isSequenceProd(t3)) return ai(t3); - if (Cr.isBranchingProd(t3)) return oi(t3); - throw Error("non exhaustive match"); - } - Ne.first = jt; - function ai(t3) { - for (var e = [], r = t3.definition, n2 = 0, i = r.length > n2, a2, o = true; i && o; ) a2 = r[n2], o = Cr.isOptionalProd(a2), e = e.concat(jt(a2)), n2 = n2 + 1, i = r.length > n2; - return qt.uniq(e); - } - Ne.firstForSequence = ai; - function oi(t3) { - var e = qt.map(t3.definition, function(r) { - return jt(r); - }); - return qt.uniq(qt.flatten(e)); - } - Ne.firstForBranching = oi; - function si(t3) { - return [t3.terminalType]; - } - Ne.firstForTerminal = si; -}); -var Mr = R2((Vt) => { - "use strict"; - Object.defineProperty(Vt, "__esModule", { value: true }); - Vt.IN = void 0; - Vt.IN = "_~IN~_"; -}); -var pi = R2((he) => { - "use strict"; - var bo = he && he.__extends || /* @__PURE__ */ function() { - var t3 = function(e, r) { - return t3 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n2, i) { - n2.__proto__ = i; - } || function(n2, i) { - for (var a2 in i) Object.prototype.hasOwnProperty.call(i, a2) && (n2[a2] = i[a2]); - }, t3(e, r); - }; - return function(e, r) { - if (typeof r != "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null"); - t3(e, r); - function n2() { - this.constructor = e; - } - e.prototype = r === null ? Object.create(r) : (n2.prototype = r.prototype, new n2()); - }; - }(); - Object.defineProperty(he, "__esModule", { value: true }); - he.buildInProdFollowPrefix = he.buildBetweenProdsFollowPrefix = he.computeAllProdsFollows = he.ResyncFollowsWalker = void 0; - var Fo = Gt(), wo = Lr(), ui = k(), ci = Mr(), Do = ne(), fi = function(t3) { - bo(e, t3); - function e(r) { - var n2 = t3.call(this) || this; - return n2.topProd = r, n2.follows = {}, n2; - } - return e.prototype.startWalking = function() { - return this.walk(this.topProd), this.follows; - }, e.prototype.walkTerminal = function(r, n2, i) { - }, e.prototype.walkProdRef = function(r, n2, i) { - var a2 = li(r.referencedRule, r.idx) + this.topProd.name, o = n2.concat(i), s = new Do.Alternative({ definition: o }), c2 = wo.first(s); - this.follows[a2] = c2; - }, e; - }(Fo.RestWalker); - he.ResyncFollowsWalker = fi; - function Uo(t3) { - var e = {}; - return ui.forEach(t3, function(r) { - var n2 = new fi(r).startWalking(); - ui.assign(e, n2); - }), e; - } - he.computeAllProdsFollows = Uo; - function li(t3, e) { - return t3.name + e + ci.IN; - } - he.buildBetweenProdsFollowPrefix = li; - function Go(t3) { - var e = t3.terminalType.name; - return e + t3.idx + ci.IN; - } - he.buildInProdFollowPrefix = Go; -}); -var mt = R2((Me) => { - "use strict"; - Object.defineProperty(Me, "__esModule", { value: true }); - Me.defaultGrammarValidatorErrorProvider = Me.defaultGrammarResolverErrorProvider = Me.defaultParserErrorProvider = void 0; - var Ze = Ue(), Wo = k(), ye = k(), br = ne(), hi = vt(); - Me.defaultParserErrorProvider = { buildMismatchTokenMessage: function(t3) { - var e = t3.expected, r = t3.actual, n2 = t3.previous, i = t3.ruleName, a2 = Ze.hasTokenLabel(e), o = a2 ? "--> " + Ze.tokenLabel(e) + " <--" : "token of type --> " + e.name + " <--", s = "Expecting " + o + " but found --> '" + r.image + "' <--"; - return s; - }, buildNotAllInputParsedMessage: function(t3) { - var e = t3.firstRedundant, r = t3.ruleName; - return "Redundant input, expecting EOF but found: " + e.image; - }, buildNoViableAltMessage: function(t3) { - var e = t3.expectedPathsPerAlt, r = t3.actual, n2 = t3.previous, i = t3.customUserDescription, a2 = t3.ruleName, o = "Expecting: ", s = ye.first(r).image, c2 = ` -but found: '` + s + "'"; - if (i) return o + i + c2; - var f = ye.reduce(e, function(v, u) { - return v.concat(u); - }, []), p2 = ye.map(f, function(v) { - return "[" + ye.map(v, function(u) { - return Ze.tokenLabel(u); - }).join(", ") + "]"; - }), l2 = ye.map(p2, function(v, u) { - return " " + (u + 1) + ". " + v; - }), m = `one of these possible Token sequences: -` + l2.join(` -`); - return o + m + c2; - }, buildEarlyExitMessage: function(t3) { - var e = t3.expectedIterationPaths, r = t3.actual, n2 = t3.customUserDescription, i = t3.ruleName, a2 = "Expecting: ", o = ye.first(r).image, s = ` -but found: '` + o + "'"; - if (n2) return a2 + n2 + s; - var c2 = ye.map(e, function(p2) { - return "[" + ye.map(p2, function(l2) { - return Ze.tokenLabel(l2); - }).join(",") + "]"; - }), f = `expecting at least one iteration which starts with one of these possible Token sequences:: - ` + ("<" + c2.join(" ,") + ">"); - return a2 + f + s; - } }; - Object.freeze(Me.defaultParserErrorProvider); - Me.defaultGrammarResolverErrorProvider = { buildRuleNotFoundError: function(t3, e) { - var r = "Invalid grammar, reference to a rule which is not defined: ->" + e.nonTerminalName + `<- -inside top level rule: ->` + t3.name + "<-"; - return r; - } }; - Me.defaultGrammarValidatorErrorProvider = { buildDuplicateFoundError: function(t3, e) { - function r(p2) { - return p2 instanceof br.Terminal ? p2.terminalType.name : p2 instanceof br.NonTerminal ? p2.nonTerminalName : ""; - } - var n2 = t3.name, i = ye.first(e), a2 = i.idx, o = hi.getProductionDslName(i), s = r(i), c2 = a2 > 0, f = "->" + o + (c2 ? a2 : "") + "<- " + (s ? "with argument: ->" + s + "<-" : "") + ` - appears more than once (` + e.length + " times) in the top level rule: ->" + n2 + `<-. - For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `; - return f = f.replace(/[ \t]+/g, " "), f = f.replace(/\s\s+/g, ` -`), f; - }, buildNamespaceConflictError: function(t3) { - var e = `Namespace conflict found in grammar. -` + ("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <" + t3.name + `>. -`) + `To resolve this make sure each Terminal and Non-Terminal names are unique -This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`; - return e; - }, buildAlternationPrefixAmbiguityError: function(t3) { - var e = ye.map(t3.prefixPath, function(i) { - return Ze.tokenLabel(i); - }).join(", "), r = t3.alternation.idx === 0 ? "" : t3.alternation.idx, n2 = "Ambiguous alternatives: <" + t3.ambiguityIndices.join(" ,") + `> due to common lookahead prefix -` + ("in inside <" + t3.topLevelRule.name + `> Rule, -`) + ("<" + e + `> may appears as a prefix path in all these alternatives. -`) + `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`; - return n2; - }, buildAlternationAmbiguityError: function(t3) { - var e = ye.map(t3.prefixPath, function(i) { - return Ze.tokenLabel(i); - }).join(", "), r = t3.alternation.idx === 0 ? "" : t3.alternation.idx, n2 = "Ambiguous Alternatives Detected: <" + t3.ambiguityIndices.join(" ,") + "> in " + (" inside <" + t3.topLevelRule.name + `> Rule, -`) + ("<" + e + `> may appears as a prefix path in all these alternatives. -`); - return n2 = n2 + `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`, n2; - }, buildEmptyRepetitionError: function(t3) { - var e = hi.getProductionDslName(t3.repetition); - t3.repetition.idx !== 0 && (e += t3.repetition.idx); - var r = "The repetition <" + e + "> within Rule <" + t3.topLevelRule.name + `> can never consume any tokens. -This could lead to an infinite loop.`; - return r; - }, buildTokenNameError: function(t3) { - return "deprecated"; - }, buildEmptyAlternationError: function(t3) { - var e = "Ambiguous empty alternative: <" + (t3.emptyChoiceIdx + 1) + ">" + (" in inside <" + t3.topLevelRule.name + `> Rule. -`) + "Only the last alternative may be an empty alternative."; - return e; - }, buildTooManyAlternativesError: function(t3) { - var e = `An Alternation cannot have more than 256 alternatives: -` + (" inside <" + t3.topLevelRule.name + `> Rule. - has ` + (t3.alternation.definition.length + 1) + " alternatives."); - return e; - }, buildLeftRecursionError: function(t3) { - var e = t3.topLevelRule.name, r = Wo.map(t3.leftRecursionPath, function(a2) { - return a2.name; - }), n2 = e + " --> " + r.concat([e]).join(" --> "), i = `Left Recursion found in grammar. -` + ("rule: <" + e + `> can be invoked from itself (directly or indirectly) -`) + (`without consuming any Tokens. The grammar path that causes this is: - ` + n2 + ` -`) + ` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`; - return i; - }, buildInvalidRuleNameError: function(t3) { - return "deprecated"; - }, buildDuplicateRuleNameError: function(t3) { - var e; - t3.topLevelRule instanceof br.Rule ? e = t3.topLevelRule.name : e = t3.topLevelRule; - var r = "Duplicate definition, rule: ->" + e + "<- is already defined in the grammar: ->" + t3.grammarName + "<-"; - return r; - } }; -}); -var mi = R2((Ge) => { - "use strict"; - var Bo = Ge && Ge.__extends || /* @__PURE__ */ function() { - var t3 = function(e, r) { - return t3 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n2, i) { - n2.__proto__ = i; - } || function(n2, i) { - for (var a2 in i) Object.prototype.hasOwnProperty.call(i, a2) && (n2[a2] = i[a2]); - }, t3(e, r); - }; - return function(e, r) { - if (typeof r != "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null"); - t3(e, r); - function n2() { - this.constructor = e; - } - e.prototype = r === null ? Object.create(r) : (n2.prototype = r.prototype, new n2()); - }; - }(); - Object.defineProperty(Ge, "__esModule", { value: true }); - Ge.GastRefResolverVisitor = Ge.resolveGrammar = void 0; - var qo = ce(), di = k(), jo = $e(); - function Vo(t3, e) { - var r = new vi(t3, e); - return r.resolveRefs(), r.errors; - } - Ge.resolveGrammar = Vo; - var vi = function(t3) { - Bo(e, t3); - function e(r, n2) { - var i = t3.call(this) || this; - return i.nameToTopRule = r, i.errMsgProvider = n2, i.errors = [], i; - } - return e.prototype.resolveRefs = function() { - var r = this; - di.forEach(di.values(this.nameToTopRule), function(n2) { - r.currTopLevel = n2, n2.accept(r); - }); - }, e.prototype.visitNonTerminal = function(r) { - var n2 = this.nameToTopRule[r.nonTerminalName]; - if (n2) r.referencedRule = n2; - else { - var i = this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel, r); - this.errors.push({ message: i, type: qo.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF, ruleName: this.currTopLevel.name, unresolvedRefName: r.nonTerminalName }); - } - }, e; - }(jo.GAstVisitor); - Ge.GastRefResolverVisitor = vi; -}); -var Tt = R2((j) => { - "use strict"; - var je = j && j.__extends || /* @__PURE__ */ function() { - var t3 = function(e, r) { - return t3 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n2, i) { - n2.__proto__ = i; - } || function(n2, i) { - for (var a2 in i) Object.prototype.hasOwnProperty.call(i, a2) && (n2[a2] = i[a2]); - }, t3(e, r); - }; - return function(e, r) { - if (typeof r != "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null"); - t3(e, r); - function n2() { - this.constructor = e; - } - e.prototype = r === null ? Object.create(r) : (n2.prototype = r.prototype, new n2()); - }; - }(); - Object.defineProperty(j, "__esModule", { value: true }); - j.nextPossibleTokensAfter = j.possiblePathsFrom = j.NextTerminalAfterAtLeastOneSepWalker = j.NextTerminalAfterAtLeastOneWalker = j.NextTerminalAfterManySepWalker = j.NextTerminalAfterManyWalker = j.AbstractNextTerminalAfterProductionWalker = j.NextAfterTokenWalker = j.AbstractNextPossibleTokensWalker = void 0; - var Ei2 = Gt(), I2 = k(), Ko = Lr(), O = ne(), Ti2 = function(t3) { - je(e, t3); - function e(r, n2) { - var i = t3.call(this) || this; - return i.topProd = r, i.path = n2, i.possibleTokTypes = [], i.nextProductionName = "", i.nextProductionOccurrence = 0, i.found = false, i.isAtEndOfPath = false, i; - } - return e.prototype.startWalking = function() { - if (this.found = false, this.path.ruleStack[0] !== this.topProd.name) throw Error("The path does not start with the walker's top Rule!"); - return this.ruleStack = I2.cloneArr(this.path.ruleStack).reverse(), this.occurrenceStack = I2.cloneArr(this.path.occurrenceStack).reverse(), this.ruleStack.pop(), this.occurrenceStack.pop(), this.updateExpectedNext(), this.walk(this.topProd), this.possibleTokTypes; - }, e.prototype.walk = function(r, n2) { - n2 === void 0 && (n2 = []), this.found || t3.prototype.walk.call(this, r, n2); - }, e.prototype.walkProdRef = function(r, n2, i) { - if (r.referencedRule.name === this.nextProductionName && r.idx === this.nextProductionOccurrence) { - var a2 = n2.concat(i); - this.updateExpectedNext(), this.walk(r.referencedRule, a2); - } - }, e.prototype.updateExpectedNext = function() { - I2.isEmpty(this.ruleStack) ? (this.nextProductionName = "", this.nextProductionOccurrence = 0, this.isAtEndOfPath = true) : (this.nextProductionName = this.ruleStack.pop(), this.nextProductionOccurrence = this.occurrenceStack.pop()); - }, e; - }(Ei2.RestWalker); - j.AbstractNextPossibleTokensWalker = Ti2; - var zo = function(t3) { - je(e, t3); - function e(r, n2) { - var i = t3.call(this, r, n2) || this; - return i.path = n2, i.nextTerminalName = "", i.nextTerminalOccurrence = 0, i.nextTerminalName = i.path.lastTok.name, i.nextTerminalOccurrence = i.path.lastTokOccurrence, i; - } - return e.prototype.walkTerminal = function(r, n2, i) { - if (this.isAtEndOfPath && r.terminalType.name === this.nextTerminalName && r.idx === this.nextTerminalOccurrence && !this.found) { - var a2 = n2.concat(i), o = new O.Alternative({ definition: a2 }); - this.possibleTokTypes = Ko.first(o), this.found = true; - } - }, e; - }(Ti2); - j.NextAfterTokenWalker = zo; - var Et = function(t3) { - je(e, t3); - function e(r, n2) { - var i = t3.call(this) || this; - return i.topRule = r, i.occurrence = n2, i.result = { token: void 0, occurrence: void 0, isEndOfRule: void 0 }, i; - } - return e.prototype.startWalking = function() { - return this.walk(this.topRule), this.result; - }, e; - }(Ei2.RestWalker); - j.AbstractNextTerminalAfterProductionWalker = Et; - var Ho = function(t3) { - je(e, t3); - function e() { - return t3 !== null && t3.apply(this, arguments) || this; - } - return e.prototype.walkMany = function(r, n2, i) { - if (r.idx === this.occurrence) { - var a2 = I2.first(n2.concat(i)); - this.result.isEndOfRule = a2 === void 0, a2 instanceof O.Terminal && (this.result.token = a2.terminalType, this.result.occurrence = a2.idx); - } else t3.prototype.walkMany.call(this, r, n2, i); - }, e; - }(Et); - j.NextTerminalAfterManyWalker = Ho; - var Yo = function(t3) { - je(e, t3); - function e() { - return t3 !== null && t3.apply(this, arguments) || this; - } - return e.prototype.walkManySep = function(r, n2, i) { - if (r.idx === this.occurrence) { - var a2 = I2.first(n2.concat(i)); - this.result.isEndOfRule = a2 === void 0, a2 instanceof O.Terminal && (this.result.token = a2.terminalType, this.result.occurrence = a2.idx); - } else t3.prototype.walkManySep.call(this, r, n2, i); - }, e; - }(Et); - j.NextTerminalAfterManySepWalker = Yo; - var Xo = function(t3) { - je(e, t3); - function e() { - return t3 !== null && t3.apply(this, arguments) || this; - } - return e.prototype.walkAtLeastOne = function(r, n2, i) { - if (r.idx === this.occurrence) { - var a2 = I2.first(n2.concat(i)); - this.result.isEndOfRule = a2 === void 0, a2 instanceof O.Terminal && (this.result.token = a2.terminalType, this.result.occurrence = a2.idx); - } else t3.prototype.walkAtLeastOne.call(this, r, n2, i); - }, e; - }(Et); - j.NextTerminalAfterAtLeastOneWalker = Xo; - var $o = function(t3) { - je(e, t3); - function e() { - return t3 !== null && t3.apply(this, arguments) || this; - } - return e.prototype.walkAtLeastOneSep = function(r, n2, i) { - if (r.idx === this.occurrence) { - var a2 = I2.first(n2.concat(i)); - this.result.isEndOfRule = a2 === void 0, a2 instanceof O.Terminal && (this.result.token = a2.terminalType, this.result.occurrence = a2.idx); - } else t3.prototype.walkAtLeastOneSep.call(this, r, n2, i); - }, e; - }(Et); - j.NextTerminalAfterAtLeastOneSepWalker = $o; - function yi(t3, e, r) { - r === void 0 && (r = []), r = I2.cloneArr(r); - var n2 = [], i = 0; - function a2(f) { - return f.concat(I2.drop(t3, i + 1)); - } - function o(f) { - var p2 = yi(a2(f), e, r); - return n2.concat(p2); - } - for (; r.length < e && i < t3.length; ) { - var s = t3[i]; - if (s instanceof O.Alternative) return o(s.definition); - if (s instanceof O.NonTerminal) return o(s.definition); - if (s instanceof O.Option) n2 = o(s.definition); - else if (s instanceof O.RepetitionMandatory) { - var c2 = s.definition.concat([new O.Repetition({ definition: s.definition })]); - return o(c2); - } else if (s instanceof O.RepetitionMandatoryWithSeparator) { - var c2 = [new O.Alternative({ definition: s.definition }), new O.Repetition({ definition: [new O.Terminal({ terminalType: s.separator })].concat(s.definition) })]; - return o(c2); - } else if (s instanceof O.RepetitionWithSeparator) { - var c2 = s.definition.concat([new O.Repetition({ definition: [new O.Terminal({ terminalType: s.separator })].concat(s.definition) })]); - n2 = o(c2); - } else if (s instanceof O.Repetition) { - var c2 = s.definition.concat([new O.Repetition({ definition: s.definition })]); - n2 = o(c2); - } else { - if (s instanceof O.Alternation) return I2.forEach(s.definition, function(f) { - I2.isEmpty(f.definition) === false && (n2 = o(f.definition)); - }), n2; - if (s instanceof O.Terminal) r.push(s.terminalType); - else throw Error("non exhaustive match"); - } - i++; - } - return n2.push({ partialPath: r, suffixDef: I2.drop(t3, i) }), n2; - } - j.possiblePathsFrom = yi; - function Qo(t3, e, r, n2) { - var i = "EXIT_NONE_TERMINAL", a2 = [i], o = "EXIT_ALTERNATIVE", s = false, c2 = e.length, f = c2 - n2 - 1, p2 = [], l2 = []; - for (l2.push({ idx: -1, def: t3, ruleStack: [], occurrenceStack: [] }); !I2.isEmpty(l2); ) { - var m = l2.pop(); - if (m === o) { - s && I2.last(l2).idx <= f && l2.pop(); - continue; - } - var v = m.def, u = m.idx, d = m.ruleStack, A2 = m.occurrenceStack; - if (!I2.isEmpty(v)) { - var _ = v[0]; - if (_ === i) { - var g2 = { idx: u, def: I2.drop(v), ruleStack: I2.dropRight(d), occurrenceStack: I2.dropRight(A2) }; - l2.push(g2); - } else if (_ instanceof O.Terminal) if (u < c2 - 1) { - var y2 = u + 1, b3 = e[y2]; - if (r(b3, _.terminalType)) { - var g2 = { idx: y2, def: I2.drop(v), ruleStack: d, occurrenceStack: A2 }; - l2.push(g2); - } - } else if (u === c2 - 1) p2.push({ nextTokenType: _.terminalType, nextTokenOccurrence: _.idx, ruleStack: d, occurrenceStack: A2 }), s = true; - else throw Error("non exhaustive match"); - else if (_ instanceof O.NonTerminal) { - var L = I2.cloneArr(d); - L.push(_.nonTerminalName); - var se2 = I2.cloneArr(A2); - se2.push(_.idx); - var g2 = { idx: u, def: _.definition.concat(a2, I2.drop(v)), ruleStack: L, occurrenceStack: se2 }; - l2.push(g2); - } else if (_ instanceof O.Option) { - var fe = { idx: u, def: I2.drop(v), ruleStack: d, occurrenceStack: A2 }; - l2.push(fe), l2.push(o); - var Z2 = { idx: u, def: _.definition.concat(I2.drop(v)), ruleStack: d, occurrenceStack: A2 }; - l2.push(Z2); - } else if (_ instanceof O.RepetitionMandatory) { - var ue = new O.Repetition({ definition: _.definition, idx: _.idx }), Q3 = _.definition.concat([ue], I2.drop(v)), g2 = { idx: u, def: Q3, ruleStack: d, occurrenceStack: A2 }; - l2.push(g2); - } else if (_ instanceof O.RepetitionMandatoryWithSeparator) { - var te2 = new O.Terminal({ terminalType: _.separator }), ue = new O.Repetition({ definition: [te2].concat(_.definition), idx: _.idx }), Q3 = _.definition.concat([ue], I2.drop(v)), g2 = { idx: u, def: Q3, ruleStack: d, occurrenceStack: A2 }; - l2.push(g2); - } else if (_ instanceof O.RepetitionWithSeparator) { - var fe = { idx: u, def: I2.drop(v), ruleStack: d, occurrenceStack: A2 }; - l2.push(fe), l2.push(o); - var te2 = new O.Terminal({ terminalType: _.separator }), xe2 = new O.Repetition({ definition: [te2].concat(_.definition), idx: _.idx }), Q3 = _.definition.concat([xe2], I2.drop(v)), Z2 = { idx: u, def: Q3, ruleStack: d, occurrenceStack: A2 }; - l2.push(Z2); - } else if (_ instanceof O.Repetition) { - var fe = { idx: u, def: I2.drop(v), ruleStack: d, occurrenceStack: A2 }; - l2.push(fe), l2.push(o); - var xe2 = new O.Repetition({ definition: _.definition, idx: _.idx }), Q3 = _.definition.concat([xe2], I2.drop(v)), Z2 = { idx: u, def: Q3, ruleStack: d, occurrenceStack: A2 }; - l2.push(Z2); - } else if (_ instanceof O.Alternation) for (var it = _.definition.length - 1; it >= 0; it--) { - var at = _.definition[it], Ke = { idx: u, def: at.definition.concat(I2.drop(v)), ruleStack: d, occurrenceStack: A2 }; - l2.push(Ke), l2.push(o); - } - else if (_ instanceof O.Alternative) l2.push({ idx: u, def: _.definition.concat(I2.drop(v)), ruleStack: d, occurrenceStack: A2 }); - else if (_ instanceof O.Rule) l2.push(Zo(_, u, d, A2)); - else throw Error("non exhaustive match"); - } - } - return p2; - } - j.nextPossibleTokensAfter = Qo; - function Zo(t3, e, r, n2) { - var i = I2.cloneArr(r); - i.push(t3.name); - var a2 = I2.cloneArr(n2); - return a2.push(1), { idx: e, def: t3.definition, ruleStack: i, occurrenceStack: a2 }; - } -}); -var yt2 = R2((C2) => { - "use strict"; - var _i = C2 && C2.__extends || /* @__PURE__ */ function() { - var t3 = function(e, r) { - return t3 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n2, i) { - n2.__proto__ = i; - } || function(n2, i) { - for (var a2 in i) Object.prototype.hasOwnProperty.call(i, a2) && (n2[a2] = i[a2]); - }, t3(e, r); - }; - return function(e, r) { - if (typeof r != "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null"); - t3(e, r); - function n2() { - this.constructor = e; - } - e.prototype = r === null ? Object.create(r) : (n2.prototype = r.prototype, new n2()); - }; - }(); - Object.defineProperty(C2, "__esModule", { value: true }); - C2.areTokenCategoriesNotUsed = C2.isStrictPrefixOfPath = C2.containsPath = C2.getLookaheadPathsForOptionalProd = C2.getLookaheadPathsForOr = C2.lookAheadSequenceFromAlternatives = C2.buildSingleAlternativeLookaheadFunction = C2.buildAlternativesLookAheadFunc = C2.buildLookaheadFuncForOptionalProd = C2.buildLookaheadFuncForOr = C2.getProdType = C2.PROD_TYPE = void 0; - var D = k(), gi = Tt(), Jo = Gt(), Kt = Xe(), We = ne(), es = $e(), z; - (function(t3) { - t3[t3.OPTION = 0] = "OPTION", t3[t3.REPETITION = 1] = "REPETITION", t3[t3.REPETITION_MANDATORY = 2] = "REPETITION_MANDATORY", t3[t3.REPETITION_MANDATORY_WITH_SEPARATOR = 3] = "REPETITION_MANDATORY_WITH_SEPARATOR", t3[t3.REPETITION_WITH_SEPARATOR = 4] = "REPETITION_WITH_SEPARATOR", t3[t3.ALTERNATION = 5] = "ALTERNATION"; - })(z = C2.PROD_TYPE || (C2.PROD_TYPE = {})); - function ts(t3) { - if (t3 instanceof We.Option) return z.OPTION; - if (t3 instanceof We.Repetition) return z.REPETITION; - if (t3 instanceof We.RepetitionMandatory) return z.REPETITION_MANDATORY; - if (t3 instanceof We.RepetitionMandatoryWithSeparator) return z.REPETITION_MANDATORY_WITH_SEPARATOR; - if (t3 instanceof We.RepetitionWithSeparator) return z.REPETITION_WITH_SEPARATOR; - if (t3 instanceof We.Alternation) return z.ALTERNATION; - throw Error("non exhaustive match"); - } - C2.getProdType = ts; - function rs(t3, e, r, n2, i, a2) { - var o = Ai(t3, e, r), s = Fr(o) ? Kt.tokenStructuredMatcherNoCategories : Kt.tokenStructuredMatcher; - return a2(o, n2, s, i); - } - C2.buildLookaheadFuncForOr = rs; - function ns(t3, e, r, n2, i, a2) { - var o = Ri(t3, e, i, r), s = Fr(o) ? Kt.tokenStructuredMatcherNoCategories : Kt.tokenStructuredMatcher; - return a2(o[0], s, n2); - } - C2.buildLookaheadFuncForOptionalProd = ns; - function is(t3, e, r, n2) { - var i = t3.length, a2 = D.every(t3, function(c2) { - return D.every(c2, function(f) { - return f.length === 1; - }); - }); - if (e) return function(c2) { - for (var f = D.map(c2, function(y2) { - return y2.GATE; - }), p2 = 0; p2 < i; p2++) { - var l2 = t3[p2], m = l2.length, v = f[p2]; - if (v !== void 0 && v.call(this) === false) continue; - e: for (var u = 0; u < m; u++) { - for (var d = l2[u], A2 = d.length, _ = 0; _ < A2; _++) { - var g2 = this.LA(_ + 1); - if (r(g2, d[_]) === false) continue e; - } - return p2; - } - } - }; - if (a2 && !n2) { - var o = D.map(t3, function(c2) { - return D.flatten(c2); - }), s = D.reduce(o, function(c2, f, p2) { - return D.forEach(f, function(l2) { - D.has(c2, l2.tokenTypeIdx) || (c2[l2.tokenTypeIdx] = p2), D.forEach(l2.categoryMatches, function(m) { - D.has(c2, m) || (c2[m] = p2); - }); - }), c2; - }, []); - return function() { - var c2 = this.LA(1); - return s[c2.tokenTypeIdx]; - }; - } else return function() { - for (var c2 = 0; c2 < i; c2++) { - var f = t3[c2], p2 = f.length; - e: for (var l2 = 0; l2 < p2; l2++) { - for (var m = f[l2], v = m.length, u = 0; u < v; u++) { - var d = this.LA(u + 1); - if (r(d, m[u]) === false) continue e; - } - return c2; - } - } - }; - } - C2.buildAlternativesLookAheadFunc = is; - function as(t3, e, r) { - var n2 = D.every(t3, function(f) { - return f.length === 1; - }), i = t3.length; - if (n2 && !r) { - var a2 = D.flatten(t3); - if (a2.length === 1 && D.isEmpty(a2[0].categoryMatches)) { - var o = a2[0], s = o.tokenTypeIdx; - return function() { - return this.LA(1).tokenTypeIdx === s; - }; - } else { - var c2 = D.reduce(a2, function(f, p2, l2) { - return f[p2.tokenTypeIdx] = true, D.forEach(p2.categoryMatches, function(m) { - f[m] = true; - }), f; - }, []); - return function() { - var f = this.LA(1); - return c2[f.tokenTypeIdx] === true; - }; - } - } else return function() { - e: for (var f = 0; f < i; f++) { - for (var p2 = t3[f], l2 = p2.length, m = 0; m < l2; m++) { - var v = this.LA(m + 1); - if (e(v, p2[m]) === false) continue e; - } - return true; - } - return false; - }; - } - C2.buildSingleAlternativeLookaheadFunction = as; - var os = function(t3) { - _i(e, t3); - function e(r, n2, i) { - var a2 = t3.call(this) || this; - return a2.topProd = r, a2.targetOccurrence = n2, a2.targetProdType = i, a2; - } - return e.prototype.startWalking = function() { - return this.walk(this.topProd), this.restDef; - }, e.prototype.checkIsTarget = function(r, n2, i, a2) { - return r.idx === this.targetOccurrence && this.targetProdType === n2 ? (this.restDef = i.concat(a2), true) : false; - }, e.prototype.walkOption = function(r, n2, i) { - this.checkIsTarget(r, z.OPTION, n2, i) || t3.prototype.walkOption.call(this, r, n2, i); - }, e.prototype.walkAtLeastOne = function(r, n2, i) { - this.checkIsTarget(r, z.REPETITION_MANDATORY, n2, i) || t3.prototype.walkOption.call(this, r, n2, i); - }, e.prototype.walkAtLeastOneSep = function(r, n2, i) { - this.checkIsTarget(r, z.REPETITION_MANDATORY_WITH_SEPARATOR, n2, i) || t3.prototype.walkOption.call(this, r, n2, i); - }, e.prototype.walkMany = function(r, n2, i) { - this.checkIsTarget(r, z.REPETITION, n2, i) || t3.prototype.walkOption.call(this, r, n2, i); - }, e.prototype.walkManySep = function(r, n2, i) { - this.checkIsTarget(r, z.REPETITION_WITH_SEPARATOR, n2, i) || t3.prototype.walkOption.call(this, r, n2, i); - }, e; - }(Jo.RestWalker), Oi2 = function(t3) { - _i(e, t3); - function e(r, n2, i) { - var a2 = t3.call(this) || this; - return a2.targetOccurrence = r, a2.targetProdType = n2, a2.targetRef = i, a2.result = [], a2; - } - return e.prototype.checkIsTarget = function(r, n2) { - r.idx === this.targetOccurrence && this.targetProdType === n2 && (this.targetRef === void 0 || r === this.targetRef) && (this.result = r.definition); - }, e.prototype.visitOption = function(r) { - this.checkIsTarget(r, z.OPTION); - }, e.prototype.visitRepetition = function(r) { - this.checkIsTarget(r, z.REPETITION); - }, e.prototype.visitRepetitionMandatory = function(r) { - this.checkIsTarget(r, z.REPETITION_MANDATORY); - }, e.prototype.visitRepetitionMandatoryWithSeparator = function(r) { - this.checkIsTarget(r, z.REPETITION_MANDATORY_WITH_SEPARATOR); - }, e.prototype.visitRepetitionWithSeparator = function(r) { - this.checkIsTarget(r, z.REPETITION_WITH_SEPARATOR); - }, e.prototype.visitAlternation = function(r) { - this.checkIsTarget(r, z.ALTERNATION); - }, e; - }(es.GAstVisitor); - function Ni(t3) { - for (var e = new Array(t3), r = 0; r < t3; r++) e[r] = []; - return e; - } - function wr(t3) { - for (var e = [""], r = 0; r < t3.length; r++) { - for (var n2 = t3[r], i = [], a2 = 0; a2 < e.length; a2++) { - var o = e[a2]; - i.push(o + "_" + n2.tokenTypeIdx); - for (var s = 0; s < n2.categoryMatches.length; s++) { - var c2 = "_" + n2.categoryMatches[s]; - i.push(o + c2); - } - } - e = i; - } - return e; - } - function ss(t3, e, r) { - for (var n2 = 0; n2 < t3.length; n2++) if (n2 !== r) for (var i = t3[n2], a2 = 0; a2 < e.length; a2++) { - var o = e[a2]; - if (i[o] === true) return false; - } - return true; - } - function Dr(t3, e) { - for (var r = D.map(t3, function(p2) { - return gi.possiblePathsFrom([p2], 1); - }), n2 = Ni(r.length), i = D.map(r, function(p2) { - var l2 = {}; - return D.forEach(p2, function(m) { - var v = wr(m.partialPath); - D.forEach(v, function(u) { - l2[u] = true; - }); - }), l2; - }), a2 = r, o = 1; o <= e; o++) { - var s = a2; - a2 = Ni(s.length); - for (var c2 = function(p2) { - for (var l2 = s[p2], m = 0; m < l2.length; m++) { - var v = l2[m].partialPath, u = l2[m].suffixDef, d = wr(v), A2 = ss(i, d, p2); - if (A2 || D.isEmpty(u) || v.length === e) { - var _ = n2[p2]; - if (Ii2(_, v) === false) { - _.push(v); - for (var g2 = 0; g2 < d.length; g2++) { - var y2 = d[g2]; - i[p2][y2] = true; - } - } - } else { - var b3 = gi.possiblePathsFrom(u, o + 1, v); - a2[p2] = a2[p2].concat(b3), D.forEach(b3, function(L) { - var se2 = wr(L.partialPath); - D.forEach(se2, function(fe) { - i[p2][fe] = true; - }); - }); - } - } - }, f = 0; f < s.length; f++) c2(f); - } - return n2; - } - C2.lookAheadSequenceFromAlternatives = Dr; - function Ai(t3, e, r, n2) { - var i = new Oi2(t3, z.ALTERNATION, n2); - return e.accept(i), Dr(i.result, r); - } - C2.getLookaheadPathsForOr = Ai; - function Ri(t3, e, r, n2) { - var i = new Oi2(t3, r); - e.accept(i); - var a2 = i.result, o = new os(e, t3, r), s = o.startWalking(), c2 = new We.Alternative({ definition: a2 }), f = new We.Alternative({ definition: s }); - return Dr([c2, f], n2); - } - C2.getLookaheadPathsForOptionalProd = Ri; - function Ii2(t3, e) { - e: for (var r = 0; r < t3.length; r++) { - var n2 = t3[r]; - if (n2.length === e.length) { - for (var i = 0; i < n2.length; i++) { - var a2 = e[i], o = n2[i], s = a2 === o || o.categoryMatchesMap[a2.tokenTypeIdx] !== void 0; - if (s === false) continue e; - } - return true; - } - } - return false; - } - C2.containsPath = Ii2; - function us(t3, e) { - return t3.length < e.length && D.every(t3, function(r, n2) { - var i = e[n2]; - return r === i || i.categoryMatchesMap[r.tokenTypeIdx]; - }); - } - C2.isStrictPrefixOfPath = us; - function Fr(t3) { - return D.every(t3, function(e) { - return D.every(e, function(r) { - return D.every(r, function(n2) { - return D.isEmpty(n2.categoryMatches); - }); - }); - }); - } - C2.areTokenCategoriesNotUsed = Fr; -}); -var jr = R2((x2) => { - "use strict"; - var Ur = x2 && x2.__extends || /* @__PURE__ */ function() { - var t3 = function(e, r) { - return t3 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n2, i) { - n2.__proto__ = i; - } || function(n2, i) { - for (var a2 in i) Object.prototype.hasOwnProperty.call(i, a2) && (n2[a2] = i[a2]); - }, t3(e, r); - }; - return function(e, r) { - if (typeof r != "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null"); - t3(e, r); - function n2() { - this.constructor = e; - } - e.prototype = r === null ? Object.create(r) : (n2.prototype = r.prototype, new n2()); - }; - }(); - Object.defineProperty(x2, "__esModule", { value: true }); - x2.checkPrefixAlternativesAmbiguities = x2.validateSomeNonEmptyLookaheadPath = x2.validateTooManyAlts = x2.RepetionCollector = x2.validateAmbiguousAlternationAlternatives = x2.validateEmptyOrAlternative = x2.getFirstNoneTerminal = x2.validateNoLeftRecursion = x2.validateRuleIsOverridden = x2.validateRuleDoesNotAlreadyExist = x2.OccurrenceValidationCollector = x2.identifyProductionForDuplicates = x2.validateGrammar = void 0; - var M = k(), B2 = k(), Ie = ce(), Gr = vt(), Qe = yt2(), cs = Tt(), _e = ne(), Wr = $e(); - function ps(t3, e, r, n2, i) { - var a2 = M.map(t3, function(v) { - return ls(v, n2); - }), o = M.map(t3, function(v) { - return Br(v, v, n2); - }), s = [], c2 = [], f = []; - B2.every(o, B2.isEmpty) && (s = B2.map(t3, function(v) { - return Pi2(v, n2); - }), c2 = B2.map(t3, function(v) { - return Si2(v, e, n2); - }), f = Ci2(t3, e, n2)); - var p2 = fs(t3, r, n2), l2 = B2.map(t3, function(v) { - return xi(v, n2); - }), m = B2.map(t3, function(v) { - return ki(v, t3, i, n2); - }); - return M.flatten(a2.concat(f, o, s, c2, p2, l2, m)); - } - x2.validateGrammar = ps; - function ls(t3, e) { - var r = new bi(); - t3.accept(r); - var n2 = r.allProductions, i = M.groupBy(n2, Li), a2 = M.pick(i, function(s) { - return s.length > 1; - }), o = M.map(M.values(a2), function(s) { - var c2 = M.first(s), f = e.buildDuplicateFoundError(t3, s), p2 = Gr.getProductionDslName(c2), l2 = { message: f, type: Ie.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS, ruleName: t3.name, dslName: p2, occurrence: c2.idx }, m = Mi2(c2); - return m && (l2.parameter = m), l2; - }); - return o; - } - function Li(t3) { - return Gr.getProductionDslName(t3) + "_#_" + t3.idx + "_#_" + Mi2(t3); - } - x2.identifyProductionForDuplicates = Li; - function Mi2(t3) { - return t3 instanceof _e.Terminal ? t3.terminalType.name : t3 instanceof _e.NonTerminal ? t3.nonTerminalName : ""; - } - var bi = function(t3) { - Ur(e, t3); - function e() { - var r = t3 !== null && t3.apply(this, arguments) || this; - return r.allProductions = [], r; - } - return e.prototype.visitNonTerminal = function(r) { - this.allProductions.push(r); - }, e.prototype.visitOption = function(r) { - this.allProductions.push(r); - }, e.prototype.visitRepetitionWithSeparator = function(r) { - this.allProductions.push(r); - }, e.prototype.visitRepetitionMandatory = function(r) { - this.allProductions.push(r); - }, e.prototype.visitRepetitionMandatoryWithSeparator = function(r) { - this.allProductions.push(r); - }, e.prototype.visitRepetition = function(r) { - this.allProductions.push(r); - }, e.prototype.visitAlternation = function(r) { - this.allProductions.push(r); - }, e.prototype.visitTerminal = function(r) { - this.allProductions.push(r); - }, e; - }(Wr.GAstVisitor); - x2.OccurrenceValidationCollector = bi; - function ki(t3, e, r, n2) { - var i = [], a2 = B2.reduce(e, function(s, c2) { - return c2.name === t3.name ? s + 1 : s; - }, 0); - if (a2 > 1) { - var o = n2.buildDuplicateRuleNameError({ topLevelRule: t3, grammarName: r }); - i.push({ message: o, type: Ie.ParserDefinitionErrorType.DUPLICATE_RULE_NAME, ruleName: t3.name }); - } - return i; - } - x2.validateRuleDoesNotAlreadyExist = ki; - function hs(t3, e, r) { - var n2 = [], i; - return M.contains(e, t3) || (i = "Invalid rule override, rule: ->" + t3 + "<- cannot be overridden in the grammar: ->" + r + "<-as it is not defined in any of the super grammars ", n2.push({ message: i, type: Ie.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE, ruleName: t3 })), n2; - } - x2.validateRuleIsOverridden = hs; - function Br(t3, e, r, n2) { - n2 === void 0 && (n2 = []); - var i = [], a2 = _t(e.definition); - if (M.isEmpty(a2)) return []; - var o = t3.name, s = M.contains(a2, t3); - s && i.push({ message: r.buildLeftRecursionError({ topLevelRule: t3, leftRecursionPath: n2 }), type: Ie.ParserDefinitionErrorType.LEFT_RECURSION, ruleName: o }); - var c2 = M.difference(a2, n2.concat([t3])), f = M.map(c2, function(p2) { - var l2 = M.cloneArr(n2); - return l2.push(p2), Br(t3, p2, r, l2); - }); - return i.concat(M.flatten(f)); - } - x2.validateNoLeftRecursion = Br; - function _t(t3) { - var e = []; - if (M.isEmpty(t3)) return e; - var r = M.first(t3); - if (r instanceof _e.NonTerminal) e.push(r.referencedRule); - else if (r instanceof _e.Alternative || r instanceof _e.Option || r instanceof _e.RepetitionMandatory || r instanceof _e.RepetitionMandatoryWithSeparator || r instanceof _e.RepetitionWithSeparator || r instanceof _e.Repetition) e = e.concat(_t(r.definition)); - else if (r instanceof _e.Alternation) e = M.flatten(M.map(r.definition, function(o) { - return _t(o.definition); - })); - else if (!(r instanceof _e.Terminal)) throw Error("non exhaustive match"); - var n2 = Gr.isOptionalProd(r), i = t3.length > 1; - if (n2 && i) { - var a2 = M.drop(t3); - return e.concat(_t(a2)); - } else return e; - } - x2.getFirstNoneTerminal = _t; - var qr = function(t3) { - Ur(e, t3); - function e() { - var r = t3 !== null && t3.apply(this, arguments) || this; - return r.alternations = [], r; - } - return e.prototype.visitAlternation = function(r) { - this.alternations.push(r); - }, e; - }(Wr.GAstVisitor); - function Pi2(t3, e) { - var r = new qr(); - t3.accept(r); - var n2 = r.alternations, i = M.reduce(n2, function(a2, o) { - var s = M.dropRight(o.definition), c2 = M.map(s, function(f, p2) { - var l2 = cs.nextPossibleTokensAfter([f], [], null, 1); - return M.isEmpty(l2) ? { message: e.buildEmptyAlternationError({ topLevelRule: t3, alternation: o, emptyChoiceIdx: p2 }), type: Ie.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT, ruleName: t3.name, occurrence: o.idx, alternative: p2 + 1 } : null; - }); - return a2.concat(M.compact(c2)); - }, []); - return i; - } - x2.validateEmptyOrAlternative = Pi2; - function Si2(t3, e, r) { - var n2 = new qr(); - t3.accept(n2); - var i = n2.alternations; - i = B2.reject(i, function(o) { - return o.ignoreAmbiguities === true; - }); - var a2 = M.reduce(i, function(o, s) { - var c2 = s.idx, f = s.maxLookahead || e, p2 = Qe.getLookaheadPathsForOr(c2, t3, f, s), l2 = ds(p2, s, t3, r), m = Fi2(p2, s, t3, r); - return o.concat(l2, m); - }, []); - return a2; - } - x2.validateAmbiguousAlternationAlternatives = Si2; - var wi = function(t3) { - Ur(e, t3); - function e() { - var r = t3 !== null && t3.apply(this, arguments) || this; - return r.allProductions = [], r; - } - return e.prototype.visitRepetitionWithSeparator = function(r) { - this.allProductions.push(r); - }, e.prototype.visitRepetitionMandatory = function(r) { - this.allProductions.push(r); - }, e.prototype.visitRepetitionMandatoryWithSeparator = function(r) { - this.allProductions.push(r); - }, e.prototype.visitRepetition = function(r) { - this.allProductions.push(r); - }, e; - }(Wr.GAstVisitor); - x2.RepetionCollector = wi; - function xi(t3, e) { - var r = new qr(); - t3.accept(r); - var n2 = r.alternations, i = M.reduce(n2, function(a2, o) { - return o.definition.length > 255 && a2.push({ message: e.buildTooManyAlternativesError({ topLevelRule: t3, alternation: o }), type: Ie.ParserDefinitionErrorType.TOO_MANY_ALTS, ruleName: t3.name, occurrence: o.idx }), a2; - }, []); - return i; - } - x2.validateTooManyAlts = xi; - function Ci2(t3, e, r) { - var n2 = []; - return B2.forEach(t3, function(i) { - var a2 = new wi(); - i.accept(a2); - var o = a2.allProductions; - B2.forEach(o, function(s) { - var c2 = Qe.getProdType(s), f = s.maxLookahead || e, p2 = s.idx, l2 = Qe.getLookaheadPathsForOptionalProd(p2, i, c2, f), m = l2[0]; - if (B2.isEmpty(B2.flatten(m))) { - var v = r.buildEmptyRepetitionError({ topLevelRule: i, repetition: s }); - n2.push({ message: v, type: Ie.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD, ruleName: i.name }); - } - }); - }), n2; - } - x2.validateSomeNonEmptyLookaheadPath = Ci2; - function ds(t3, e, r, n2) { - var i = [], a2 = B2.reduce(t3, function(s, c2, f) { - return e.definition[f].ignoreAmbiguities === true || B2.forEach(c2, function(p2) { - var l2 = [f]; - B2.forEach(t3, function(m, v) { - f !== v && Qe.containsPath(m, p2) && e.definition[v].ignoreAmbiguities !== true && l2.push(v); - }), l2.length > 1 && !Qe.containsPath(i, p2) && (i.push(p2), s.push({ alts: l2, path: p2 })); - }), s; - }, []), o = M.map(a2, function(s) { - var c2 = B2.map(s.alts, function(p2) { - return p2 + 1; - }), f = n2.buildAlternationAmbiguityError({ topLevelRule: r, alternation: e, ambiguityIndices: c2, prefixPath: s.path }); - return { message: f, type: Ie.ParserDefinitionErrorType.AMBIGUOUS_ALTS, ruleName: r.name, occurrence: e.idx, alternatives: [s.alts] }; - }); - return o; - } - function Fi2(t3, e, r, n2) { - var i = [], a2 = B2.reduce(t3, function(o, s, c2) { - var f = B2.map(s, function(p2) { - return { idx: c2, path: p2 }; - }); - return o.concat(f); - }, []); - return B2.forEach(a2, function(o) { - var s = e.definition[o.idx]; - if (s.ignoreAmbiguities !== true) { - var c2 = o.idx, f = o.path, p2 = B2.findAll(a2, function(m) { - return e.definition[m.idx].ignoreAmbiguities !== true && m.idx < c2 && Qe.isStrictPrefixOfPath(m.path, f); - }), l2 = B2.map(p2, function(m) { - var v = [m.idx + 1, c2 + 1], u = e.idx === 0 ? "" : e.idx, d = n2.buildAlternationPrefixAmbiguityError({ topLevelRule: r, alternation: e, ambiguityIndices: v, prefixPath: m.path }); - return { message: d, type: Ie.ParserDefinitionErrorType.AMBIGUOUS_PREFIX_ALTS, ruleName: r.name, occurrence: u, alternatives: v }; - }); - i = i.concat(l2); - } - }), i; - } - x2.checkPrefixAlternativesAmbiguities = Fi2; - function fs(t3, e, r) { - var n2 = [], i = B2.map(e, function(a2) { - return a2.name; - }); - return B2.forEach(t3, function(a2) { - var o = a2.name; - if (B2.contains(i, o)) { - var s = r.buildNamespaceConflictError(a2); - n2.push({ message: s, type: Ie.ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE, ruleName: o }); - } - }), n2; - } -}); -var Ui = R2((Je) => { - "use strict"; - Object.defineProperty(Je, "__esModule", { value: true }); - Je.validateGrammar = Je.resolveGrammar = void 0; - var Vr = k(), vs = mi(), ms = jr(), Di = mt(); - function Es(t3) { - t3 = Vr.defaults(t3, { errMsgProvider: Di.defaultGrammarResolverErrorProvider }); - var e = {}; - return Vr.forEach(t3.rules, function(r) { - e[r.name] = r; - }), vs.resolveGrammar(e, t3.errMsgProvider); - } - Je.resolveGrammar = Es; - function Ts(t3) { - return t3 = Vr.defaults(t3, { errMsgProvider: Di.defaultGrammarValidatorErrorProvider }), ms.validateGrammar(t3.rules, t3.maxLookahead, t3.tokenTypes, t3.errMsgProvider, t3.grammarName); - } - Je.validateGrammar = Ts; -}); -var et3 = R2((ae) => { - "use strict"; - var gt2 = ae && ae.__extends || /* @__PURE__ */ function() { - var t3 = function(e, r) { - return t3 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n2, i) { - n2.__proto__ = i; - } || function(n2, i) { - for (var a2 in i) Object.prototype.hasOwnProperty.call(i, a2) && (n2[a2] = i[a2]); - }, t3(e, r); - }; - return function(e, r) { - if (typeof r != "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null"); - t3(e, r); - function n2() { - this.constructor = e; - } - e.prototype = r === null ? Object.create(r) : (n2.prototype = r.prototype, new n2()); - }; - }(); - Object.defineProperty(ae, "__esModule", { value: true }); - ae.EarlyExitException = ae.NotAllInputParsedException = ae.NoViableAltException = ae.MismatchedTokenException = ae.isRecognitionException = void 0; - var ys = k(), Gi = "MismatchedTokenException", Wi = "NoViableAltException", Bi = "EarlyExitException", qi = "NotAllInputParsedException", ji = [Gi, Wi, Bi, qi]; - Object.freeze(ji); - function _s(t3) { - return ys.contains(ji, t3.name); - } - ae.isRecognitionException = _s; - var zt = function(t3) { - gt2(e, t3); - function e(r, n2) { - var i = this.constructor, a2 = t3.call(this, r) || this; - return a2.token = n2, a2.resyncedTokens = [], Object.setPrototypeOf(a2, i.prototype), Error.captureStackTrace && Error.captureStackTrace(a2, a2.constructor), a2; - } - return e; - }(Error), gs = function(t3) { - gt2(e, t3); - function e(r, n2, i) { - var a2 = t3.call(this, r, n2) || this; - return a2.previousToken = i, a2.name = Gi, a2; - } - return e; - }(zt); - ae.MismatchedTokenException = gs; - var As = function(t3) { - gt2(e, t3); - function e(r, n2, i) { - var a2 = t3.call(this, r, n2) || this; - return a2.previousToken = i, a2.name = Wi, a2; - } - return e; - }(zt); - ae.NoViableAltException = As; - var Rs = function(t3) { - gt2(e, t3); - function e(r, n2) { - var i = t3.call(this, r, n2) || this; - return i.name = qi, i; - } - return e; - }(zt); - ae.NotAllInputParsedException = Rs; - var Os = function(t3) { - gt2(e, t3); - function e(r, n2, i) { - var a2 = t3.call(this, r, n2) || this; - return a2.previousToken = i, a2.name = Bi, a2; - } - return e; - }(zt); - ae.EarlyExitException = Os; -}); -var zr = R2(($2) => { - "use strict"; - Object.defineProperty($2, "__esModule", { value: true }); - $2.attemptInRepetitionRecovery = $2.Recoverable = $2.InRuleRecoveryException = $2.IN_RULE_RECOVERY_EXCEPTION = $2.EOF_FOLLOW_KEY = void 0; - var Ht = Ue(), de2 = k(), Ns = et3(), Is = Mr(), ks = ce(); - $2.EOF_FOLLOW_KEY = {}; - $2.IN_RULE_RECOVERY_EXCEPTION = "InRuleRecoveryException"; - function Kr(t3) { - this.name = $2.IN_RULE_RECOVERY_EXCEPTION, this.message = t3; - } - $2.InRuleRecoveryException = Kr; - Kr.prototype = Error.prototype; - var Ps = function() { - function t3() { - } - return t3.prototype.initRecoverable = function(e) { - this.firstAfterRepMap = {}, this.resyncFollows = {}, this.recoveryEnabled = de2.has(e, "recoveryEnabled") ? e.recoveryEnabled : ks.DEFAULT_PARSER_CONFIG.recoveryEnabled, this.recoveryEnabled && (this.attemptInRepetitionRecovery = Vi2); - }, t3.prototype.getTokenToInsert = function(e) { - var r = Ht.createTokenInstance(e, "", NaN, NaN, NaN, NaN, NaN, NaN); - return r.isInsertedInRecovery = true, r; - }, t3.prototype.canTokenTypeBeInsertedInRecovery = function(e) { - return true; - }, t3.prototype.tryInRepetitionRecovery = function(e, r, n2, i) { - for (var a2 = this, o = this.findReSyncTokenType(), s = this.exportLexerState(), c2 = [], f = false, p2 = this.LA(1), l2 = this.LA(1), m = function() { - var v = a2.LA(0), u = a2.errorMessageProvider.buildMismatchTokenMessage({ expected: i, actual: p2, previous: v, ruleName: a2.getCurrRuleFullName() }), d = new Ns.MismatchedTokenException(u, p2, a2.LA(0)); - d.resyncedTokens = de2.dropRight(c2), a2.SAVE_ERROR(d); - }; !f; ) if (this.tokenMatcher(l2, i)) { - m(); - return; - } else if (n2.call(this)) { - m(), e.apply(this, r); - return; - } else this.tokenMatcher(l2, o) ? f = true : (l2 = this.SKIP_TOKEN(), this.addToResyncTokens(l2, c2)); - this.importLexerState(s); - }, t3.prototype.shouldInRepetitionRecoveryBeTried = function(e, r, n2) { - return !(n2 === false || e === void 0 || r === void 0 || this.tokenMatcher(this.LA(1), e) || this.isBackTracking() || this.canPerformInRuleRecovery(e, this.getFollowsForInRuleRecovery(e, r))); - }, t3.prototype.getFollowsForInRuleRecovery = function(e, r) { - var n2 = this.getCurrentGrammarPath(e, r), i = this.getNextPossibleTokenTypes(n2); - return i; - }, t3.prototype.tryInRuleRecovery = function(e, r) { - if (this.canRecoverWithSingleTokenInsertion(e, r)) { - var n2 = this.getTokenToInsert(e); - return n2; - } - if (this.canRecoverWithSingleTokenDeletion(e)) { - var i = this.SKIP_TOKEN(); - return this.consumeToken(), i; - } - throw new Kr("sad sad panda"); - }, t3.prototype.canPerformInRuleRecovery = function(e, r) { - return this.canRecoverWithSingleTokenInsertion(e, r) || this.canRecoverWithSingleTokenDeletion(e); - }, t3.prototype.canRecoverWithSingleTokenInsertion = function(e, r) { - var n2 = this; - if (!this.canTokenTypeBeInsertedInRecovery(e) || de2.isEmpty(r)) return false; - var i = this.LA(1), a2 = de2.find(r, function(o) { - return n2.tokenMatcher(i, o); - }) !== void 0; - return a2; - }, t3.prototype.canRecoverWithSingleTokenDeletion = function(e) { - var r = this.tokenMatcher(this.LA(2), e); - return r; - }, t3.prototype.isInCurrentRuleReSyncSet = function(e) { - var r = this.getCurrFollowKey(), n2 = this.getFollowSetFromFollowKey(r); - return de2.contains(n2, e); - }, t3.prototype.findReSyncTokenType = function() { - for (var e = this.flattenFollowSet(), r = this.LA(1), n2 = 2; ; ) { - var i = r.tokenType; - if (de2.contains(e, i)) return i; - r = this.LA(n2), n2++; - } - }, t3.prototype.getCurrFollowKey = function() { - if (this.RULE_STACK.length === 1) return $2.EOF_FOLLOW_KEY; - var e = this.getLastExplicitRuleShortName(), r = this.getLastExplicitRuleOccurrenceIndex(), n2 = this.getPreviousExplicitRuleShortName(); - return { ruleName: this.shortRuleNameToFullName(e), idxInCallingRule: r, inRule: this.shortRuleNameToFullName(n2) }; - }, t3.prototype.buildFullFollowKeyStack = function() { - var e = this, r = this.RULE_STACK, n2 = this.RULE_OCCURRENCE_STACK; - return de2.map(r, function(i, a2) { - return a2 === 0 ? $2.EOF_FOLLOW_KEY : { ruleName: e.shortRuleNameToFullName(i), idxInCallingRule: n2[a2], inRule: e.shortRuleNameToFullName(r[a2 - 1]) }; - }); - }, t3.prototype.flattenFollowSet = function() { - var e = this, r = de2.map(this.buildFullFollowKeyStack(), function(n2) { - return e.getFollowSetFromFollowKey(n2); - }); - return de2.flatten(r); - }, t3.prototype.getFollowSetFromFollowKey = function(e) { - if (e === $2.EOF_FOLLOW_KEY) return [Ht.EOF]; - var r = e.ruleName + e.idxInCallingRule + Is.IN + e.inRule; - return this.resyncFollows[r]; - }, t3.prototype.addToResyncTokens = function(e, r) { - return this.tokenMatcher(e, Ht.EOF) || r.push(e), r; - }, t3.prototype.reSyncTo = function(e) { - for (var r = [], n2 = this.LA(1); this.tokenMatcher(n2, e) === false; ) n2 = this.SKIP_TOKEN(), this.addToResyncTokens(n2, r); - return de2.dropRight(r); - }, t3.prototype.attemptInRepetitionRecovery = function(e, r, n2, i, a2, o, s) { - }, t3.prototype.getCurrentGrammarPath = function(e, r) { - var n2 = this.getHumanReadableRuleStack(), i = de2.cloneArr(this.RULE_OCCURRENCE_STACK), a2 = { ruleStack: n2, occurrenceStack: i, lastTok: e, lastTokOccurrence: r }; - return a2; - }, t3.prototype.getHumanReadableRuleStack = function() { - var e = this; - return de2.map(this.RULE_STACK, function(r) { - return e.shortRuleNameToFullName(r); - }); - }, t3; - }(); - $2.Recoverable = Ps; - function Vi2(t3, e, r, n2, i, a2, o) { - var s = this.getKeyForAutomaticLookahead(n2, i), c2 = this.firstAfterRepMap[s]; - if (c2 === void 0) { - var f = this.getCurrRuleFullName(), p2 = this.getGAstProductions()[f], l2 = new a2(p2, i); - c2 = l2.startWalking(), this.firstAfterRepMap[s] = c2; - } - var m = c2.token, v = c2.occurrence, u = c2.isEndOfRule; - this.RULE_STACK.length === 1 && u && m === void 0 && (m = Ht.EOF, v = 1), this.shouldInRepetitionRecoveryBeTried(m, v, o) && this.tryInRepetitionRecovery(t3, e, r, m); - } - $2.attemptInRepetitionRecovery = Vi2; -}); -var Yt = R2((P) => { - "use strict"; - Object.defineProperty(P, "__esModule", { value: true }); - P.getKeyForAutomaticLookahead = P.AT_LEAST_ONE_SEP_IDX = P.MANY_SEP_IDX = P.AT_LEAST_ONE_IDX = P.MANY_IDX = P.OPTION_IDX = P.OR_IDX = P.BITS_FOR_ALT_IDX = P.BITS_FOR_RULE_IDX = P.BITS_FOR_OCCURRENCE_IDX = P.BITS_FOR_METHOD_TYPE = void 0; - P.BITS_FOR_METHOD_TYPE = 4; - P.BITS_FOR_OCCURRENCE_IDX = 8; - P.BITS_FOR_RULE_IDX = 12; - P.BITS_FOR_ALT_IDX = 8; - P.OR_IDX = 1 << P.BITS_FOR_OCCURRENCE_IDX; - P.OPTION_IDX = 2 << P.BITS_FOR_OCCURRENCE_IDX; - P.MANY_IDX = 3 << P.BITS_FOR_OCCURRENCE_IDX; - P.AT_LEAST_ONE_IDX = 4 << P.BITS_FOR_OCCURRENCE_IDX; - P.MANY_SEP_IDX = 5 << P.BITS_FOR_OCCURRENCE_IDX; - P.AT_LEAST_ONE_SEP_IDX = 6 << P.BITS_FOR_OCCURRENCE_IDX; - function Ss(t3, e, r) { - return r | e | t3; - } - P.getKeyForAutomaticLookahead = Ss; - var ic = 32 - P.BITS_FOR_ALT_IDX; -}); -var zi2 = R2((Xt) => { - "use strict"; - Object.defineProperty(Xt, "__esModule", { value: true }); - Xt.LooksAhead = void 0; - var be = yt2(), ge = k(), Ki = ce(), Fe = Yt(), Ve = vt(), xs = function() { - function t3() { - } - return t3.prototype.initLooksAhead = function(e) { - this.dynamicTokensEnabled = ge.has(e, "dynamicTokensEnabled") ? e.dynamicTokensEnabled : Ki.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled, this.maxLookahead = ge.has(e, "maxLookahead") ? e.maxLookahead : Ki.DEFAULT_PARSER_CONFIG.maxLookahead, this.lookAheadFuncsCache = ge.isES2015MapSupported() ? /* @__PURE__ */ new Map() : [], ge.isES2015MapSupported() ? (this.getLaFuncFromCache = this.getLaFuncFromMap, this.setLaFuncCache = this.setLaFuncCacheUsingMap) : (this.getLaFuncFromCache = this.getLaFuncFromObj, this.setLaFuncCache = this.setLaFuncUsingObj); - }, t3.prototype.preComputeLookaheadFunctions = function(e) { - var r = this; - ge.forEach(e, function(n2) { - r.TRACE_INIT(n2.name + " Rule Lookahead", function() { - var i = Ve.collectMethods(n2), a2 = i.alternation, o = i.repetition, s = i.option, c2 = i.repetitionMandatory, f = i.repetitionMandatoryWithSeparator, p2 = i.repetitionWithSeparator; - ge.forEach(a2, function(l2) { - var m = l2.idx === 0 ? "" : l2.idx; - r.TRACE_INIT("" + Ve.getProductionDslName(l2) + m, function() { - var v = be.buildLookaheadFuncForOr(l2.idx, n2, l2.maxLookahead || r.maxLookahead, l2.hasPredicates, r.dynamicTokensEnabled, r.lookAheadBuilderForAlternatives), u = Fe.getKeyForAutomaticLookahead(r.fullRuleNameToShort[n2.name], Fe.OR_IDX, l2.idx); - r.setLaFuncCache(u, v); - }); - }), ge.forEach(o, function(l2) { - r.computeLookaheadFunc(n2, l2.idx, Fe.MANY_IDX, be.PROD_TYPE.REPETITION, l2.maxLookahead, Ve.getProductionDslName(l2)); - }), ge.forEach(s, function(l2) { - r.computeLookaheadFunc(n2, l2.idx, Fe.OPTION_IDX, be.PROD_TYPE.OPTION, l2.maxLookahead, Ve.getProductionDslName(l2)); - }), ge.forEach(c2, function(l2) { - r.computeLookaheadFunc(n2, l2.idx, Fe.AT_LEAST_ONE_IDX, be.PROD_TYPE.REPETITION_MANDATORY, l2.maxLookahead, Ve.getProductionDslName(l2)); - }), ge.forEach(f, function(l2) { - r.computeLookaheadFunc(n2, l2.idx, Fe.AT_LEAST_ONE_SEP_IDX, be.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, l2.maxLookahead, Ve.getProductionDslName(l2)); - }), ge.forEach(p2, function(l2) { - r.computeLookaheadFunc(n2, l2.idx, Fe.MANY_SEP_IDX, be.PROD_TYPE.REPETITION_WITH_SEPARATOR, l2.maxLookahead, Ve.getProductionDslName(l2)); - }); - }); - }); - }, t3.prototype.computeLookaheadFunc = function(e, r, n2, i, a2, o) { - var s = this; - this.TRACE_INIT("" + o + (r === 0 ? "" : r), function() { - var c2 = be.buildLookaheadFuncForOptionalProd(r, e, a2 || s.maxLookahead, s.dynamicTokensEnabled, i, s.lookAheadBuilderForOptional), f = Fe.getKeyForAutomaticLookahead(s.fullRuleNameToShort[e.name], n2, r); - s.setLaFuncCache(f, c2); - }); - }, t3.prototype.lookAheadBuilderForOptional = function(e, r, n2) { - return be.buildSingleAlternativeLookaheadFunction(e, r, n2); - }, t3.prototype.lookAheadBuilderForAlternatives = function(e, r, n2, i) { - return be.buildAlternativesLookAheadFunc(e, r, n2, i); - }, t3.prototype.getKeyForAutomaticLookahead = function(e, r) { - var n2 = this.getLastExplicitRuleShortName(); - return Fe.getKeyForAutomaticLookahead(n2, e, r); - }, t3.prototype.getLaFuncFromCache = function(e) { - }, t3.prototype.getLaFuncFromMap = function(e) { - return this.lookAheadFuncsCache.get(e); - }, t3.prototype.getLaFuncFromObj = function(e) { - return this.lookAheadFuncsCache[e]; - }, t3.prototype.setLaFuncCache = function(e, r) { - }, t3.prototype.setLaFuncCacheUsingMap = function(e, r) { - this.lookAheadFuncsCache.set(e, r); - }, t3.prototype.setLaFuncUsingObj = function(e, r) { - this.lookAheadFuncsCache[e] = r; - }, t3; - }(); - Xt.LooksAhead = xs; -}); -var Hi = R2((ke) => { - "use strict"; - Object.defineProperty(ke, "__esModule", { value: true }); - ke.addNoneTerminalToCst = ke.addTerminalToCst = ke.setNodeLocationFull = ke.setNodeLocationOnlyOffset = void 0; - function Cs(t3, e) { - isNaN(t3.startOffset) === true ? (t3.startOffset = e.startOffset, t3.endOffset = e.endOffset) : t3.endOffset < e.endOffset && (t3.endOffset = e.endOffset); - } - ke.setNodeLocationOnlyOffset = Cs; - function Ls(t3, e) { - isNaN(t3.startOffset) === true ? (t3.startOffset = e.startOffset, t3.startColumn = e.startColumn, t3.startLine = e.startLine, t3.endOffset = e.endOffset, t3.endColumn = e.endColumn, t3.endLine = e.endLine) : t3.endOffset < e.endOffset && (t3.endOffset = e.endOffset, t3.endColumn = e.endColumn, t3.endLine = e.endLine); - } - ke.setNodeLocationFull = Ls; - function Ms(t3, e, r) { - t3.children[r] === void 0 ? t3.children[r] = [e] : t3.children[r].push(e); - } - ke.addTerminalToCst = Ms; - function bs(t3, e, r) { - t3.children[e] === void 0 ? t3.children[e] = [r] : t3.children[e].push(r); - } - ke.addNoneTerminalToCst = bs; -}); -var Hr = R2((Be) => { - "use strict"; - Object.defineProperty(Be, "__esModule", { value: true }); - Be.defineNameProp = Be.functionName = Be.classNameFromInstance = void 0; - var Fs = k(); - function ws(t3) { - return Yi(t3.constructor); - } - Be.classNameFromInstance = ws; - var Xi = "name"; - function Yi(t3) { - var e = t3.name; - return e || "anonymous"; - } - Be.functionName = Yi; - function Ds(t3, e) { - var r = Object.getOwnPropertyDescriptor(t3, Xi); - return Fs.isUndefined(r) || r.configurable ? (Object.defineProperty(t3, Xi, { enumerable: false, configurable: true, writable: false, value: e }), true) : false; - } - Be.defineNameProp = Ds; -}); -var ea = R2((Y2) => { - "use strict"; - Object.defineProperty(Y2, "__esModule", { value: true }); - Y2.validateRedundantMethods = Y2.validateMissingCstMethods = Y2.validateVisitor = Y2.CstVisitorDefinitionError = Y2.createBaseVisitorConstructorWithDefaults = Y2.createBaseSemanticVisitorConstructor = Y2.defaultVisit = void 0; - var ve = k(), At = Hr(); - function $i(t3, e) { - for (var r = ve.keys(t3), n2 = r.length, i = 0; i < n2; i++) for (var a2 = r[i], o = t3[a2], s = o.length, c2 = 0; c2 < s; c2++) { - var f = o[c2]; - f.tokenTypeIdx === void 0 && this[f.name](f.children, e); - } - } - Y2.defaultVisit = $i; - function Us(t3, e) { - var r = function() { - }; - At.defineNameProp(r, t3 + "BaseSemantics"); - var n2 = { visit: function(i, a2) { - if (ve.isArray(i) && (i = i[0]), !ve.isUndefined(i)) return this[i.name](i.children, a2); - }, validateVisitor: function() { - var i = Zi(this, e); - if (!ve.isEmpty(i)) { - var a2 = ve.map(i, function(o) { - return o.msg; - }); - throw Error("Errors Detected in CST Visitor <" + At.functionName(this.constructor) + `>: - ` + ("" + a2.join(` - -`).replace(/\n/g, ` - `))); - } - } }; - return r.prototype = n2, r.prototype.constructor = r, r._RULE_NAMES = e, r; - } - Y2.createBaseSemanticVisitorConstructor = Us; - function Gs(t3, e, r) { - var n2 = function() { - }; - At.defineNameProp(n2, t3 + "BaseSemanticsWithDefaults"); - var i = Object.create(r.prototype); - return ve.forEach(e, function(a2) { - i[a2] = $i; - }), n2.prototype = i, n2.prototype.constructor = n2, n2; - } - Y2.createBaseVisitorConstructorWithDefaults = Gs; - var Yr; - (function(t3) { - t3[t3.REDUNDANT_METHOD = 0] = "REDUNDANT_METHOD", t3[t3.MISSING_METHOD = 1] = "MISSING_METHOD"; - })(Yr = Y2.CstVisitorDefinitionError || (Y2.CstVisitorDefinitionError = {})); - function Zi(t3, e) { - var r = Qi(t3, e), n2 = Ji(t3, e); - return r.concat(n2); - } - Y2.validateVisitor = Zi; - function Qi(t3, e) { - var r = ve.map(e, function(n2) { - if (!ve.isFunction(t3[n2])) return { msg: "Missing visitor method: <" + n2 + "> on " + At.functionName(t3.constructor) + " CST Visitor.", type: Yr.MISSING_METHOD, methodName: n2 }; - }); - return ve.compact(r); - } - Y2.validateMissingCstMethods = Qi; - var Ws = ["constructor", "visit", "validateVisitor"]; - function Ji(t3, e) { - var r = []; - for (var n2 in t3) ve.isFunction(t3[n2]) && !ve.contains(Ws, n2) && !ve.contains(e, n2) && r.push({ msg: "Redundant visitor method: <" + n2 + "> on " + At.functionName(t3.constructor) + ` CST Visitor -There is no Grammar Rule corresponding to this method's name. -`, type: Yr.REDUNDANT_METHOD, methodName: n2 }); - return r; - } - Y2.validateRedundantMethods = Ji; -}); -var ra = R2(($t2) => { - "use strict"; - Object.defineProperty($t2, "__esModule", { value: true }); - $t2.TreeBuilder = void 0; - var tt = Hi(), K = k(), ta = ea(), Bs = ce(), qs = function() { - function t3() { - } - return t3.prototype.initTreeBuilder = function(e) { - if (this.CST_STACK = [], this.outputCst = e.outputCst, this.nodeLocationTracking = K.has(e, "nodeLocationTracking") ? e.nodeLocationTracking : Bs.DEFAULT_PARSER_CONFIG.nodeLocationTracking, !this.outputCst) this.cstInvocationStateUpdate = K.NOOP, this.cstFinallyStateUpdate = K.NOOP, this.cstPostTerminal = K.NOOP, this.cstPostNonTerminal = K.NOOP, this.cstPostRule = K.NOOP; - else if (/full/i.test(this.nodeLocationTracking)) this.recoveryEnabled ? (this.setNodeLocationFromToken = tt.setNodeLocationFull, this.setNodeLocationFromNode = tt.setNodeLocationFull, this.cstPostRule = K.NOOP, this.setInitialNodeLocation = this.setInitialNodeLocationFullRecovery) : (this.setNodeLocationFromToken = K.NOOP, this.setNodeLocationFromNode = K.NOOP, this.cstPostRule = this.cstPostRuleFull, this.setInitialNodeLocation = this.setInitialNodeLocationFullRegular); - else if (/onlyOffset/i.test(this.nodeLocationTracking)) this.recoveryEnabled ? (this.setNodeLocationFromToken = tt.setNodeLocationOnlyOffset, this.setNodeLocationFromNode = tt.setNodeLocationOnlyOffset, this.cstPostRule = K.NOOP, this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRecovery) : (this.setNodeLocationFromToken = K.NOOP, this.setNodeLocationFromNode = K.NOOP, this.cstPostRule = this.cstPostRuleOnlyOffset, this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRegular); - else if (/none/i.test(this.nodeLocationTracking)) this.setNodeLocationFromToken = K.NOOP, this.setNodeLocationFromNode = K.NOOP, this.cstPostRule = K.NOOP, this.setInitialNodeLocation = K.NOOP; - else throw Error('Invalid config option: "' + e.nodeLocationTracking + '"'); - }, t3.prototype.setInitialNodeLocationOnlyOffsetRecovery = function(e) { - e.location = { startOffset: NaN, endOffset: NaN }; - }, t3.prototype.setInitialNodeLocationOnlyOffsetRegular = function(e) { - e.location = { startOffset: this.LA(1).startOffset, endOffset: NaN }; - }, t3.prototype.setInitialNodeLocationFullRecovery = function(e) { - e.location = { startOffset: NaN, startLine: NaN, startColumn: NaN, endOffset: NaN, endLine: NaN, endColumn: NaN }; - }, t3.prototype.setInitialNodeLocationFullRegular = function(e) { - var r = this.LA(1); - e.location = { startOffset: r.startOffset, startLine: r.startLine, startColumn: r.startColumn, endOffset: NaN, endLine: NaN, endColumn: NaN }; - }, t3.prototype.cstInvocationStateUpdate = function(e, r) { - var n2 = { name: e, children: {} }; - this.setInitialNodeLocation(n2), this.CST_STACK.push(n2); - }, t3.prototype.cstFinallyStateUpdate = function() { - this.CST_STACK.pop(); - }, t3.prototype.cstPostRuleFull = function(e) { - var r = this.LA(0), n2 = e.location; - n2.startOffset <= r.startOffset ? (n2.endOffset = r.endOffset, n2.endLine = r.endLine, n2.endColumn = r.endColumn) : (n2.startOffset = NaN, n2.startLine = NaN, n2.startColumn = NaN); - }, t3.prototype.cstPostRuleOnlyOffset = function(e) { - var r = this.LA(0), n2 = e.location; - n2.startOffset <= r.startOffset ? n2.endOffset = r.endOffset : n2.startOffset = NaN; - }, t3.prototype.cstPostTerminal = function(e, r) { - var n2 = this.CST_STACK[this.CST_STACK.length - 1]; - tt.addTerminalToCst(n2, r, e), this.setNodeLocationFromToken(n2.location, r); - }, t3.prototype.cstPostNonTerminal = function(e, r) { - var n2 = this.CST_STACK[this.CST_STACK.length - 1]; - tt.addNoneTerminalToCst(n2, r, e), this.setNodeLocationFromNode(n2.location, e.location); - }, t3.prototype.getBaseCstVisitorConstructor = function() { - if (K.isUndefined(this.baseCstVisitorConstructor)) { - var e = ta.createBaseSemanticVisitorConstructor(this.className, K.keys(this.gastProductionsCache)); - return this.baseCstVisitorConstructor = e, e; - } - return this.baseCstVisitorConstructor; - }, t3.prototype.getBaseCstVisitorConstructorWithDefaults = function() { - if (K.isUndefined(this.baseCstVisitorWithDefaultsConstructor)) { - var e = ta.createBaseVisitorConstructorWithDefaults(this.className, K.keys(this.gastProductionsCache), this.getBaseCstVisitorConstructor()); - return this.baseCstVisitorWithDefaultsConstructor = e, e; - } - return this.baseCstVisitorWithDefaultsConstructor; - }, t3.prototype.getLastExplicitRuleShortName = function() { - var e = this.RULE_STACK; - return e[e.length - 1]; - }, t3.prototype.getPreviousExplicitRuleShortName = function() { - var e = this.RULE_STACK; - return e[e.length - 2]; - }, t3.prototype.getLastExplicitRuleOccurrenceIndex = function() { - var e = this.RULE_OCCURRENCE_STACK; - return e[e.length - 1]; - }, t3; - }(); - $t2.TreeBuilder = qs; -}); -var ia = R2((Zt) => { - "use strict"; - Object.defineProperty(Zt, "__esModule", { value: true }); - Zt.LexerAdapter = void 0; - var na = ce(), js = function() { - function t3() { - } - return t3.prototype.initLexerAdapter = function() { - this.tokVector = [], this.tokVectorLength = 0, this.currIdx = -1; - }, Object.defineProperty(t3.prototype, "input", { get: function() { - return this.tokVector; - }, set: function(e) { - if (this.selfAnalysisDone !== true) throw Error("Missing invocation at the end of the Parser's constructor."); - this.reset(), this.tokVector = e, this.tokVectorLength = e.length; - }, enumerable: false, configurable: true }), t3.prototype.SKIP_TOKEN = function() { - return this.currIdx <= this.tokVector.length - 2 ? (this.consumeToken(), this.LA(1)) : na.END_OF_FILE; - }, t3.prototype.LA = function(e) { - var r = this.currIdx + e; - return r < 0 || this.tokVectorLength <= r ? na.END_OF_FILE : this.tokVector[r]; - }, t3.prototype.consumeToken = function() { - this.currIdx++; - }, t3.prototype.exportLexerState = function() { - return this.currIdx; - }, t3.prototype.importLexerState = function(e) { - this.currIdx = e; - }, t3.prototype.resetLexerState = function() { - this.currIdx = -1; - }, t3.prototype.moveToTerminatedState = function() { - this.currIdx = this.tokVector.length - 1; - }, t3.prototype.getLexerPosition = function() { - return this.exportLexerState(); - }, t3; - }(); - Zt.LexerAdapter = js; -}); -var oa = R2((Qt) => { - "use strict"; - Object.defineProperty(Qt, "__esModule", { value: true }); - Qt.RecognizerApi = void 0; - var aa = k(), Vs = et3(), Xr = ce(), Ks = mt(), zs = jr(), Hs = ne(), Ys = function() { - function t3() { - } - return t3.prototype.ACTION = function(e) { - return e.call(this); - }, t3.prototype.consume = function(e, r, n2) { - return this.consumeInternal(r, e, n2); - }, t3.prototype.subrule = function(e, r, n2) { - return this.subruleInternal(r, e, n2); - }, t3.prototype.option = function(e, r) { - return this.optionInternal(r, e); - }, t3.prototype.or = function(e, r) { - return this.orInternal(r, e); - }, t3.prototype.many = function(e, r) { - return this.manyInternal(e, r); - }, t3.prototype.atLeastOne = function(e, r) { - return this.atLeastOneInternal(e, r); - }, t3.prototype.CONSUME = function(e, r) { - return this.consumeInternal(e, 0, r); - }, t3.prototype.CONSUME1 = function(e, r) { - return this.consumeInternal(e, 1, r); - }, t3.prototype.CONSUME2 = function(e, r) { - return this.consumeInternal(e, 2, r); - }, t3.prototype.CONSUME3 = function(e, r) { - return this.consumeInternal(e, 3, r); - }, t3.prototype.CONSUME4 = function(e, r) { - return this.consumeInternal(e, 4, r); - }, t3.prototype.CONSUME5 = function(e, r) { - return this.consumeInternal(e, 5, r); - }, t3.prototype.CONSUME6 = function(e, r) { - return this.consumeInternal(e, 6, r); - }, t3.prototype.CONSUME7 = function(e, r) { - return this.consumeInternal(e, 7, r); - }, t3.prototype.CONSUME8 = function(e, r) { - return this.consumeInternal(e, 8, r); - }, t3.prototype.CONSUME9 = function(e, r) { - return this.consumeInternal(e, 9, r); - }, t3.prototype.SUBRULE = function(e, r) { - return this.subruleInternal(e, 0, r); - }, t3.prototype.SUBRULE1 = function(e, r) { - return this.subruleInternal(e, 1, r); - }, t3.prototype.SUBRULE2 = function(e, r) { - return this.subruleInternal(e, 2, r); - }, t3.prototype.SUBRULE3 = function(e, r) { - return this.subruleInternal(e, 3, r); - }, t3.prototype.SUBRULE4 = function(e, r) { - return this.subruleInternal(e, 4, r); - }, t3.prototype.SUBRULE5 = function(e, r) { - return this.subruleInternal(e, 5, r); - }, t3.prototype.SUBRULE6 = function(e, r) { - return this.subruleInternal(e, 6, r); - }, t3.prototype.SUBRULE7 = function(e, r) { - return this.subruleInternal(e, 7, r); - }, t3.prototype.SUBRULE8 = function(e, r) { - return this.subruleInternal(e, 8, r); - }, t3.prototype.SUBRULE9 = function(e, r) { - return this.subruleInternal(e, 9, r); - }, t3.prototype.OPTION = function(e) { - return this.optionInternal(e, 0); - }, t3.prototype.OPTION1 = function(e) { - return this.optionInternal(e, 1); - }, t3.prototype.OPTION2 = function(e) { - return this.optionInternal(e, 2); - }, t3.prototype.OPTION3 = function(e) { - return this.optionInternal(e, 3); - }, t3.prototype.OPTION4 = function(e) { - return this.optionInternal(e, 4); - }, t3.prototype.OPTION5 = function(e) { - return this.optionInternal(e, 5); - }, t3.prototype.OPTION6 = function(e) { - return this.optionInternal(e, 6); - }, t3.prototype.OPTION7 = function(e) { - return this.optionInternal(e, 7); - }, t3.prototype.OPTION8 = function(e) { - return this.optionInternal(e, 8); - }, t3.prototype.OPTION9 = function(e) { - return this.optionInternal(e, 9); - }, t3.prototype.OR = function(e) { - return this.orInternal(e, 0); - }, t3.prototype.OR1 = function(e) { - return this.orInternal(e, 1); - }, t3.prototype.OR2 = function(e) { - return this.orInternal(e, 2); - }, t3.prototype.OR3 = function(e) { - return this.orInternal(e, 3); - }, t3.prototype.OR4 = function(e) { - return this.orInternal(e, 4); - }, t3.prototype.OR5 = function(e) { - return this.orInternal(e, 5); - }, t3.prototype.OR6 = function(e) { - return this.orInternal(e, 6); - }, t3.prototype.OR7 = function(e) { - return this.orInternal(e, 7); - }, t3.prototype.OR8 = function(e) { - return this.orInternal(e, 8); - }, t3.prototype.OR9 = function(e) { - return this.orInternal(e, 9); - }, t3.prototype.MANY = function(e) { - this.manyInternal(0, e); - }, t3.prototype.MANY1 = function(e) { - this.manyInternal(1, e); - }, t3.prototype.MANY2 = function(e) { - this.manyInternal(2, e); - }, t3.prototype.MANY3 = function(e) { - this.manyInternal(3, e); - }, t3.prototype.MANY4 = function(e) { - this.manyInternal(4, e); - }, t3.prototype.MANY5 = function(e) { - this.manyInternal(5, e); - }, t3.prototype.MANY6 = function(e) { - this.manyInternal(6, e); - }, t3.prototype.MANY7 = function(e) { - this.manyInternal(7, e); - }, t3.prototype.MANY8 = function(e) { - this.manyInternal(8, e); - }, t3.prototype.MANY9 = function(e) { - this.manyInternal(9, e); - }, t3.prototype.MANY_SEP = function(e) { - this.manySepFirstInternal(0, e); - }, t3.prototype.MANY_SEP1 = function(e) { - this.manySepFirstInternal(1, e); - }, t3.prototype.MANY_SEP2 = function(e) { - this.manySepFirstInternal(2, e); - }, t3.prototype.MANY_SEP3 = function(e) { - this.manySepFirstInternal(3, e); - }, t3.prototype.MANY_SEP4 = function(e) { - this.manySepFirstInternal(4, e); - }, t3.prototype.MANY_SEP5 = function(e) { - this.manySepFirstInternal(5, e); - }, t3.prototype.MANY_SEP6 = function(e) { - this.manySepFirstInternal(6, e); - }, t3.prototype.MANY_SEP7 = function(e) { - this.manySepFirstInternal(7, e); - }, t3.prototype.MANY_SEP8 = function(e) { - this.manySepFirstInternal(8, e); - }, t3.prototype.MANY_SEP9 = function(e) { - this.manySepFirstInternal(9, e); - }, t3.prototype.AT_LEAST_ONE = function(e) { - this.atLeastOneInternal(0, e); - }, t3.prototype.AT_LEAST_ONE1 = function(e) { - return this.atLeastOneInternal(1, e); - }, t3.prototype.AT_LEAST_ONE2 = function(e) { - this.atLeastOneInternal(2, e); - }, t3.prototype.AT_LEAST_ONE3 = function(e) { - this.atLeastOneInternal(3, e); - }, t3.prototype.AT_LEAST_ONE4 = function(e) { - this.atLeastOneInternal(4, e); - }, t3.prototype.AT_LEAST_ONE5 = function(e) { - this.atLeastOneInternal(5, e); - }, t3.prototype.AT_LEAST_ONE6 = function(e) { - this.atLeastOneInternal(6, e); - }, t3.prototype.AT_LEAST_ONE7 = function(e) { - this.atLeastOneInternal(7, e); - }, t3.prototype.AT_LEAST_ONE8 = function(e) { - this.atLeastOneInternal(8, e); - }, t3.prototype.AT_LEAST_ONE9 = function(e) { - this.atLeastOneInternal(9, e); - }, t3.prototype.AT_LEAST_ONE_SEP = function(e) { - this.atLeastOneSepFirstInternal(0, e); - }, t3.prototype.AT_LEAST_ONE_SEP1 = function(e) { - this.atLeastOneSepFirstInternal(1, e); - }, t3.prototype.AT_LEAST_ONE_SEP2 = function(e) { - this.atLeastOneSepFirstInternal(2, e); - }, t3.prototype.AT_LEAST_ONE_SEP3 = function(e) { - this.atLeastOneSepFirstInternal(3, e); - }, t3.prototype.AT_LEAST_ONE_SEP4 = function(e) { - this.atLeastOneSepFirstInternal(4, e); - }, t3.prototype.AT_LEAST_ONE_SEP5 = function(e) { - this.atLeastOneSepFirstInternal(5, e); - }, t3.prototype.AT_LEAST_ONE_SEP6 = function(e) { - this.atLeastOneSepFirstInternal(6, e); - }, t3.prototype.AT_LEAST_ONE_SEP7 = function(e) { - this.atLeastOneSepFirstInternal(7, e); - }, t3.prototype.AT_LEAST_ONE_SEP8 = function(e) { - this.atLeastOneSepFirstInternal(8, e); - }, t3.prototype.AT_LEAST_ONE_SEP9 = function(e) { - this.atLeastOneSepFirstInternal(9, e); - }, t3.prototype.RULE = function(e, r, n2) { - if (n2 === void 0 && (n2 = Xr.DEFAULT_RULE_CONFIG), aa.contains(this.definedRulesNames, e)) { - var i = Ks.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({ topLevelRule: e, grammarName: this.className }), a2 = { message: i, type: Xr.ParserDefinitionErrorType.DUPLICATE_RULE_NAME, ruleName: e }; - this.definitionErrors.push(a2); - } - this.definedRulesNames.push(e); - var o = this.defineRule(e, r, n2); - return this[e] = o, o; - }, t3.prototype.OVERRIDE_RULE = function(e, r, n2) { - n2 === void 0 && (n2 = Xr.DEFAULT_RULE_CONFIG); - var i = []; - i = i.concat(zs.validateRuleIsOverridden(e, this.definedRulesNames, this.className)), this.definitionErrors = this.definitionErrors.concat(i); - var a2 = this.defineRule(e, r, n2); - return this[e] = a2, a2; - }, t3.prototype.BACKTRACK = function(e, r) { - return function() { - this.isBackTrackingStack.push(1); - var n2 = this.saveRecogState(); - try { - return e.apply(this, r), true; - } catch (i) { - if (Vs.isRecognitionException(i)) return false; - throw i; - } finally { - this.reloadRecogState(n2), this.isBackTrackingStack.pop(); - } - }; - }, t3.prototype.getGAstProductions = function() { - return this.gastProductionsCache; - }, t3.prototype.getSerializedGastProductions = function() { - return Hs.serializeGrammar(aa.values(this.gastProductionsCache)); - }, t3; - }(); - Qt.RecognizerApi = Ys; -}); -var la = R2((Jt) => { - "use strict"; - Object.defineProperty(Jt, "__esModule", { value: true }); - Jt.RecognizerEngine = void 0; - var q2 = k(), le = Yt(), er = et3(), sa = yt2(), rt = Tt(), ua = ce(), Xs = zr(), ca = Ue(), Rt = Xe(), $s = Hr(), Zs = function() { - function t3() { - } - return t3.prototype.initRecognizerEngine = function(e, r) { - if (this.className = $s.classNameFromInstance(this), this.shortRuleNameToFull = {}, this.fullRuleNameToShort = {}, this.ruleShortNameIdx = 256, this.tokenMatcher = Rt.tokenStructuredMatcherNoCategories, this.definedRulesNames = [], this.tokensMap = {}, this.isBackTrackingStack = [], this.RULE_STACK = [], this.RULE_OCCURRENCE_STACK = [], this.gastProductionsCache = {}, q2.has(r, "serializedGrammar")) throw Error(`The Parser's configuration can no longer contain a property. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`); - if (q2.isArray(e)) { - if (q2.isEmpty(e)) throw Error(`A Token Vocabulary cannot be empty. - Note that the first argument for the parser constructor - is no longer a Token vector (since v4.0).`); - if (typeof e[0].startOffset == "number") throw Error(`The Parser constructor no longer accepts a token vector as the first argument. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`); - } - if (q2.isArray(e)) this.tokensMap = q2.reduce(e, function(o, s) { - return o[s.name] = s, o; - }, {}); - else if (q2.has(e, "modes") && q2.every(q2.flatten(q2.values(e.modes)), Rt.isTokenType)) { - var n2 = q2.flatten(q2.values(e.modes)), i = q2.uniq(n2); - this.tokensMap = q2.reduce(i, function(o, s) { - return o[s.name] = s, o; - }, {}); - } else if (q2.isObject(e)) this.tokensMap = q2.cloneObj(e); - else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition"); - this.tokensMap.EOF = ca.EOF; - var a2 = q2.every(q2.values(e), function(o) { - return q2.isEmpty(o.categoryMatches); - }); - this.tokenMatcher = a2 ? Rt.tokenStructuredMatcherNoCategories : Rt.tokenStructuredMatcher, Rt.augmentTokenTypes(q2.values(this.tokensMap)); - }, t3.prototype.defineRule = function(e, r, n2) { - if (this.selfAnalysisDone) throw Error("Grammar rule <" + e + `> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`); - var i = q2.has(n2, "resyncEnabled") ? n2.resyncEnabled : ua.DEFAULT_RULE_CONFIG.resyncEnabled, a2 = q2.has(n2, "recoveryValueFunc") ? n2.recoveryValueFunc : ua.DEFAULT_RULE_CONFIG.recoveryValueFunc, o = this.ruleShortNameIdx << le.BITS_FOR_METHOD_TYPE + le.BITS_FOR_OCCURRENCE_IDX; - this.ruleShortNameIdx++, this.shortRuleNameToFull[o] = e, this.fullRuleNameToShort[e] = o; - function s(p2) { - try { - if (this.outputCst === true) { - r.apply(this, p2); - var l2 = this.CST_STACK[this.CST_STACK.length - 1]; - return this.cstPostRule(l2), l2; - } else return r.apply(this, p2); - } catch (m) { - return this.invokeRuleCatch(m, i, a2); - } finally { - this.ruleFinallyStateUpdate(); - } - } - var c2 = function(p2, l2) { - return p2 === void 0 && (p2 = 0), this.ruleInvocationStateUpdate(o, e, p2), s.call(this, l2); - }, f = "ruleName"; - return c2[f] = e, c2.originalGrammarAction = r, c2; - }, t3.prototype.invokeRuleCatch = function(e, r, n2) { - var i = this.RULE_STACK.length === 1, a2 = r && !this.isBackTracking() && this.recoveryEnabled; - if (er.isRecognitionException(e)) { - var o = e; - if (a2) { - var s = this.findReSyncTokenType(); - if (this.isInCurrentRuleReSyncSet(s)) if (o.resyncedTokens = this.reSyncTo(s), this.outputCst) { - var c2 = this.CST_STACK[this.CST_STACK.length - 1]; - return c2.recoveredNode = true, c2; - } else return n2(); - else { - if (this.outputCst) { - var c2 = this.CST_STACK[this.CST_STACK.length - 1]; - c2.recoveredNode = true, o.partialCstResult = c2; - } - throw o; - } - } else { - if (i) return this.moveToTerminatedState(), n2(); - throw o; - } - } else throw e; - }, t3.prototype.optionInternal = function(e, r) { - var n2 = this.getKeyForAutomaticLookahead(le.OPTION_IDX, r); - return this.optionInternalLogic(e, r, n2); - }, t3.prototype.optionInternalLogic = function(e, r, n2) { - var i = this, a2 = this.getLaFuncFromCache(n2), o, s; - if (e.DEF !== void 0) { - if (o = e.DEF, s = e.GATE, s !== void 0) { - var c2 = a2; - a2 = function() { - return s.call(i) && c2.call(i); - }; - } - } else o = e; - if (a2.call(this) === true) return o.call(this); - }, t3.prototype.atLeastOneInternal = function(e, r) { - var n2 = this.getKeyForAutomaticLookahead(le.AT_LEAST_ONE_IDX, e); - return this.atLeastOneInternalLogic(e, r, n2); - }, t3.prototype.atLeastOneInternalLogic = function(e, r, n2) { - var i = this, a2 = this.getLaFuncFromCache(n2), o, s; - if (r.DEF !== void 0) { - if (o = r.DEF, s = r.GATE, s !== void 0) { - var c2 = a2; - a2 = function() { - return s.call(i) && c2.call(i); - }; - } - } else o = r; - if (a2.call(this) === true) for (var f = this.doSingleRepetition(o); a2.call(this) === true && f === true; ) f = this.doSingleRepetition(o); - else throw this.raiseEarlyExitException(e, sa.PROD_TYPE.REPETITION_MANDATORY, r.ERR_MSG); - this.attemptInRepetitionRecovery(this.atLeastOneInternal, [e, r], a2, le.AT_LEAST_ONE_IDX, e, rt.NextTerminalAfterAtLeastOneWalker); - }, t3.prototype.atLeastOneSepFirstInternal = function(e, r) { - var n2 = this.getKeyForAutomaticLookahead(le.AT_LEAST_ONE_SEP_IDX, e); - this.atLeastOneSepFirstInternalLogic(e, r, n2); - }, t3.prototype.atLeastOneSepFirstInternalLogic = function(e, r, n2) { - var i = this, a2 = r.DEF, o = r.SEP, s = this.getLaFuncFromCache(n2); - if (s.call(this) === true) { - a2.call(this); - for (var c2 = function() { - return i.tokenMatcher(i.LA(1), o); - }; this.tokenMatcher(this.LA(1), o) === true; ) this.CONSUME(o), a2.call(this); - this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [e, o, c2, a2, rt.NextTerminalAfterAtLeastOneSepWalker], c2, le.AT_LEAST_ONE_SEP_IDX, e, rt.NextTerminalAfterAtLeastOneSepWalker); - } else throw this.raiseEarlyExitException(e, sa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, r.ERR_MSG); - }, t3.prototype.manyInternal = function(e, r) { - var n2 = this.getKeyForAutomaticLookahead(le.MANY_IDX, e); - return this.manyInternalLogic(e, r, n2); - }, t3.prototype.manyInternalLogic = function(e, r, n2) { - var i = this, a2 = this.getLaFuncFromCache(n2), o, s; - if (r.DEF !== void 0) { - if (o = r.DEF, s = r.GATE, s !== void 0) { - var c2 = a2; - a2 = function() { - return s.call(i) && c2.call(i); - }; - } - } else o = r; - for (var f = true; a2.call(this) === true && f === true; ) f = this.doSingleRepetition(o); - this.attemptInRepetitionRecovery(this.manyInternal, [e, r], a2, le.MANY_IDX, e, rt.NextTerminalAfterManyWalker, f); - }, t3.prototype.manySepFirstInternal = function(e, r) { - var n2 = this.getKeyForAutomaticLookahead(le.MANY_SEP_IDX, e); - this.manySepFirstInternalLogic(e, r, n2); - }, t3.prototype.manySepFirstInternalLogic = function(e, r, n2) { - var i = this, a2 = r.DEF, o = r.SEP, s = this.getLaFuncFromCache(n2); - if (s.call(this) === true) { - a2.call(this); - for (var c2 = function() { - return i.tokenMatcher(i.LA(1), o); - }; this.tokenMatcher(this.LA(1), o) === true; ) this.CONSUME(o), a2.call(this); - this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [e, o, c2, a2, rt.NextTerminalAfterManySepWalker], c2, le.MANY_SEP_IDX, e, rt.NextTerminalAfterManySepWalker); - } - }, t3.prototype.repetitionSepSecondInternal = function(e, r, n2, i, a2) { - for (; n2(); ) this.CONSUME(r), i.call(this); - this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [e, r, n2, i, a2], n2, le.AT_LEAST_ONE_SEP_IDX, e, a2); - }, t3.prototype.doSingleRepetition = function(e) { - var r = this.getLexerPosition(); - e.call(this); - var n2 = this.getLexerPosition(); - return n2 > r; - }, t3.prototype.orInternal = function(e, r) { - var n2 = this.getKeyForAutomaticLookahead(le.OR_IDX, r), i = q2.isArray(e) ? e : e.DEF, a2 = this.getLaFuncFromCache(n2), o = a2.call(this, i); - if (o !== void 0) { - var s = i[o]; - return s.ALT.call(this); - } - this.raiseNoAltException(r, e.ERR_MSG); - }, t3.prototype.ruleFinallyStateUpdate = function() { - if (this.RULE_STACK.pop(), this.RULE_OCCURRENCE_STACK.pop(), this.cstFinallyStateUpdate(), this.RULE_STACK.length === 0 && this.isAtEndOfInput() === false) { - var e = this.LA(1), r = this.errorMessageProvider.buildNotAllInputParsedMessage({ firstRedundant: e, ruleName: this.getCurrRuleFullName() }); - this.SAVE_ERROR(new er.NotAllInputParsedException(r, e)); - } - }, t3.prototype.subruleInternal = function(e, r, n2) { - var i; - try { - var a2 = n2 !== void 0 ? n2.ARGS : void 0; - return i = e.call(this, r, a2), this.cstPostNonTerminal(i, n2 !== void 0 && n2.LABEL !== void 0 ? n2.LABEL : e.ruleName), i; - } catch (o) { - this.subruleInternalError(o, n2, e.ruleName); - } - }, t3.prototype.subruleInternalError = function(e, r, n2) { - throw er.isRecognitionException(e) && e.partialCstResult !== void 0 && (this.cstPostNonTerminal(e.partialCstResult, r !== void 0 && r.LABEL !== void 0 ? r.LABEL : n2), delete e.partialCstResult), e; - }, t3.prototype.consumeInternal = function(e, r, n2) { - var i; - try { - var a2 = this.LA(1); - this.tokenMatcher(a2, e) === true ? (this.consumeToken(), i = a2) : this.consumeInternalError(e, a2, n2); - } catch (o) { - i = this.consumeInternalRecovery(e, r, o); - } - return this.cstPostTerminal(n2 !== void 0 && n2.LABEL !== void 0 ? n2.LABEL : e.name, i), i; - }, t3.prototype.consumeInternalError = function(e, r, n2) { - var i, a2 = this.LA(0); - throw n2 !== void 0 && n2.ERR_MSG ? i = n2.ERR_MSG : i = this.errorMessageProvider.buildMismatchTokenMessage({ expected: e, actual: r, previous: a2, ruleName: this.getCurrRuleFullName() }), this.SAVE_ERROR(new er.MismatchedTokenException(i, r, a2)); - }, t3.prototype.consumeInternalRecovery = function(e, r, n2) { - if (this.recoveryEnabled && n2.name === "MismatchedTokenException" && !this.isBackTracking()) { - var i = this.getFollowsForInRuleRecovery(e, r); - try { - return this.tryInRuleRecovery(e, i); - } catch (a2) { - throw a2.name === Xs.IN_RULE_RECOVERY_EXCEPTION ? n2 : a2; - } - } else throw n2; - }, t3.prototype.saveRecogState = function() { - var e = this.errors, r = q2.cloneArr(this.RULE_STACK); - return { errors: e, lexerState: this.exportLexerState(), RULE_STACK: r, CST_STACK: this.CST_STACK }; - }, t3.prototype.reloadRecogState = function(e) { - this.errors = e.errors, this.importLexerState(e.lexerState), this.RULE_STACK = e.RULE_STACK; - }, t3.prototype.ruleInvocationStateUpdate = function(e, r, n2) { - this.RULE_OCCURRENCE_STACK.push(n2), this.RULE_STACK.push(e), this.cstInvocationStateUpdate(r, e); - }, t3.prototype.isBackTracking = function() { - return this.isBackTrackingStack.length !== 0; - }, t3.prototype.getCurrRuleFullName = function() { - var e = this.getLastExplicitRuleShortName(); - return this.shortRuleNameToFull[e]; - }, t3.prototype.shortRuleNameToFullName = function(e) { - return this.shortRuleNameToFull[e]; - }, t3.prototype.isAtEndOfInput = function() { - return this.tokenMatcher(this.LA(1), ca.EOF); - }, t3.prototype.reset = function() { - this.resetLexerState(), this.isBackTrackingStack = [], this.errors = [], this.RULE_STACK = [], this.CST_STACK = [], this.RULE_OCCURRENCE_STACK = []; - }, t3; - }(); - Jt.RecognizerEngine = Zs; -}); -var pa = R2((tr) => { - "use strict"; - Object.defineProperty(tr, "__esModule", { value: true }); - tr.ErrorHandler = void 0; - var $r = et3(), Zr = k(), fa = yt2(), Qs = ce(), Js = function() { - function t3() { - } - return t3.prototype.initErrorHandler = function(e) { - this._errors = [], this.errorMessageProvider = Zr.has(e, "errorMessageProvider") ? e.errorMessageProvider : Qs.DEFAULT_PARSER_CONFIG.errorMessageProvider; - }, t3.prototype.SAVE_ERROR = function(e) { - if ($r.isRecognitionException(e)) return e.context = { ruleStack: this.getHumanReadableRuleStack(), ruleOccurrenceStack: Zr.cloneArr(this.RULE_OCCURRENCE_STACK) }, this._errors.push(e), e; - throw Error("Trying to save an Error which is not a RecognitionException"); - }, Object.defineProperty(t3.prototype, "errors", { get: function() { - return Zr.cloneArr(this._errors); - }, set: function(e) { - this._errors = e; - }, enumerable: false, configurable: true }), t3.prototype.raiseEarlyExitException = function(e, r, n2) { - for (var i = this.getCurrRuleFullName(), a2 = this.getGAstProductions()[i], o = fa.getLookaheadPathsForOptionalProd(e, a2, r, this.maxLookahead), s = o[0], c2 = [], f = 1; f <= this.maxLookahead; f++) c2.push(this.LA(f)); - var p2 = this.errorMessageProvider.buildEarlyExitMessage({ expectedIterationPaths: s, actual: c2, previous: this.LA(0), customUserDescription: n2, ruleName: i }); - throw this.SAVE_ERROR(new $r.EarlyExitException(p2, this.LA(1), this.LA(0))); - }, t3.prototype.raiseNoAltException = function(e, r) { - for (var n2 = this.getCurrRuleFullName(), i = this.getGAstProductions()[n2], a2 = fa.getLookaheadPathsForOr(e, i, this.maxLookahead), o = [], s = 1; s <= this.maxLookahead; s++) o.push(this.LA(s)); - var c2 = this.LA(0), f = this.errorMessageProvider.buildNoViableAltMessage({ expectedPathsPerAlt: a2, actual: o, previous: c2, customUserDescription: r, ruleName: this.getCurrRuleFullName() }); - throw this.SAVE_ERROR(new $r.NoViableAltException(f, this.LA(1), c2)); - }, t3; - }(); - tr.ErrorHandler = Js; -}); -var va = R2((rr) => { - "use strict"; - Object.defineProperty(rr, "__esModule", { value: true }); - rr.ContentAssist = void 0; - var ha = Tt(), da = k(), eu = function() { - function t3() { - } - return t3.prototype.initContentAssist = function() { - }, t3.prototype.computeContentAssist = function(e, r) { - var n2 = this.gastProductionsCache[e]; - if (da.isUndefined(n2)) throw Error("Rule ->" + e + "<- does not exist in this grammar."); - return ha.nextPossibleTokensAfter([n2], r, this.tokenMatcher, this.maxLookahead); - }, t3.prototype.getNextPossibleTokenTypes = function(e) { - var r = da.first(e.ruleStack), n2 = this.getGAstProductions(), i = n2[r], a2 = new ha.NextAfterTokenWalker(i, e).startWalking(); - return a2; - }, t3; - }(); - rr.ContentAssist = eu; -}); -var Ra = R2((nr) => { - "use strict"; - Object.defineProperty(nr, "__esModule", { value: true }); - nr.GastRecorder = void 0; - var oe = k(), Pe = ne(), tu = ft(), ma = Xe(), Ea = Ue(), ru = ce(), nu = Yt(), ir = { description: "This Object indicates the Parser is during Recording Phase" }; - Object.freeze(ir); - var Ta = true, ya = Math.pow(2, nu.BITS_FOR_OCCURRENCE_IDX) - 1, _a3 = Ea.createToken({ name: "RECORDING_PHASE_TOKEN", pattern: tu.Lexer.NA }); - ma.augmentTokenTypes([_a3]); - var ga = Ea.createTokenInstance(_a3, `This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`, -1, -1, -1, -1, -1, -1); - Object.freeze(ga); - var iu = { name: `This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`, children: {} }, ou = function() { - function t3() { - } - return t3.prototype.initGastRecorder = function(e) { - this.recordingProdStack = [], this.RECORDING_PHASE = false; - }, t3.prototype.enableRecording = function() { - var e = this; - this.RECORDING_PHASE = true, this.TRACE_INIT("Enable Recording", function() { - for (var r = function(i) { - var a2 = i > 0 ? i : ""; - e["CONSUME" + a2] = function(o, s) { - return this.consumeInternalRecord(o, i, s); - }, e["SUBRULE" + a2] = function(o, s) { - return this.subruleInternalRecord(o, i, s); - }, e["OPTION" + a2] = function(o) { - return this.optionInternalRecord(o, i); - }, e["OR" + a2] = function(o) { - return this.orInternalRecord(o, i); - }, e["MANY" + a2] = function(o) { - this.manyInternalRecord(i, o); - }, e["MANY_SEP" + a2] = function(o) { - this.manySepFirstInternalRecord(i, o); - }, e["AT_LEAST_ONE" + a2] = function(o) { - this.atLeastOneInternalRecord(i, o); - }, e["AT_LEAST_ONE_SEP" + a2] = function(o) { - this.atLeastOneSepFirstInternalRecord(i, o); - }; - }, n2 = 0; n2 < 10; n2++) r(n2); - e.consume = function(i, a2, o) { - return this.consumeInternalRecord(a2, i, o); - }, e.subrule = function(i, a2, o) { - return this.subruleInternalRecord(a2, i, o); - }, e.option = function(i, a2) { - return this.optionInternalRecord(a2, i); - }, e.or = function(i, a2) { - return this.orInternalRecord(a2, i); - }, e.many = function(i, a2) { - this.manyInternalRecord(i, a2); - }, e.atLeastOne = function(i, a2) { - this.atLeastOneInternalRecord(i, a2); - }, e.ACTION = e.ACTION_RECORD, e.BACKTRACK = e.BACKTRACK_RECORD, e.LA = e.LA_RECORD; - }); - }, t3.prototype.disableRecording = function() { - var e = this; - this.RECORDING_PHASE = false, this.TRACE_INIT("Deleting Recording methods", function() { - for (var r = 0; r < 10; r++) { - var n2 = r > 0 ? r : ""; - delete e["CONSUME" + n2], delete e["SUBRULE" + n2], delete e["OPTION" + n2], delete e["OR" + n2], delete e["MANY" + n2], delete e["MANY_SEP" + n2], delete e["AT_LEAST_ONE" + n2], delete e["AT_LEAST_ONE_SEP" + n2]; - } - delete e.consume, delete e.subrule, delete e.option, delete e.or, delete e.many, delete e.atLeastOne, delete e.ACTION, delete e.BACKTRACK, delete e.LA; - }); - }, t3.prototype.ACTION_RECORD = function(e) { - }, t3.prototype.BACKTRACK_RECORD = function(e, r) { - return function() { - return true; - }; - }, t3.prototype.LA_RECORD = function(e) { - return ru.END_OF_FILE; - }, t3.prototype.topLevelRuleRecord = function(e, r) { - try { - var n2 = new Pe.Rule({ definition: [], name: e }); - return n2.name = e, this.recordingProdStack.push(n2), r.call(this), this.recordingProdStack.pop(), n2; - } catch (i) { - if (i.KNOWN_RECORDER_ERROR !== true) try { - i.message = i.message + ` - This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`; - } catch (a2) { - throw i; - } - throw i; - } - }, t3.prototype.optionInternalRecord = function(e, r) { - return Ot2.call(this, Pe.Option, e, r); - }, t3.prototype.atLeastOneInternalRecord = function(e, r) { - Ot2.call(this, Pe.RepetitionMandatory, r, e); - }, t3.prototype.atLeastOneSepFirstInternalRecord = function(e, r) { - Ot2.call(this, Pe.RepetitionMandatoryWithSeparator, r, e, Ta); - }, t3.prototype.manyInternalRecord = function(e, r) { - Ot2.call(this, Pe.Repetition, r, e); - }, t3.prototype.manySepFirstInternalRecord = function(e, r) { - Ot2.call(this, Pe.RepetitionWithSeparator, r, e, Ta); - }, t3.prototype.orInternalRecord = function(e, r) { - return au.call(this, e, r); - }, t3.prototype.subruleInternalRecord = function(e, r, n2) { - if (ar(r), !e || oe.has(e, "ruleName") === false) { - var i = new Error(" argument is invalid" + (" expecting a Parser method reference but got: <" + JSON.stringify(e) + ">") + (` - inside top level rule: <` + this.recordingProdStack[0].name + ">")); - throw i.KNOWN_RECORDER_ERROR = true, i; - } - var a2 = oe.peek(this.recordingProdStack), o = e.ruleName, s = new Pe.NonTerminal({ idx: r, nonTerminalName: o, referencedRule: void 0 }); - return a2.definition.push(s), this.outputCst ? iu : ir; - }, t3.prototype.consumeInternalRecord = function(e, r, n2) { - if (ar(r), !ma.hasShortKeyProperty(e)) { - var i = new Error(" argument is invalid" + (" expecting a TokenType reference but got: <" + JSON.stringify(e) + ">") + (` - inside top level rule: <` + this.recordingProdStack[0].name + ">")); - throw i.KNOWN_RECORDER_ERROR = true, i; - } - var a2 = oe.peek(this.recordingProdStack), o = new Pe.Terminal({ idx: r, terminalType: e }); - return a2.definition.push(o), ga; - }, t3; - }(); - nr.GastRecorder = ou; - function Ot2(t3, e, r, n2) { - n2 === void 0 && (n2 = false), ar(r); - var i = oe.peek(this.recordingProdStack), a2 = oe.isFunction(e) ? e : e.DEF, o = new t3({ definition: [], idx: r }); - return n2 && (o.separator = e.SEP), oe.has(e, "MAX_LOOKAHEAD") && (o.maxLookahead = e.MAX_LOOKAHEAD), this.recordingProdStack.push(o), a2.call(this), i.definition.push(o), this.recordingProdStack.pop(), ir; - } - function au(t3, e) { - var r = this; - ar(e); - var n2 = oe.peek(this.recordingProdStack), i = oe.isArray(t3) === false, a2 = i === false ? t3 : t3.DEF, o = new Pe.Alternation({ definition: [], idx: e, ignoreAmbiguities: i && t3.IGNORE_AMBIGUITIES === true }); - oe.has(t3, "MAX_LOOKAHEAD") && (o.maxLookahead = t3.MAX_LOOKAHEAD); - var s = oe.some(a2, function(c2) { - return oe.isFunction(c2.GATE); - }); - return o.hasPredicates = s, n2.definition.push(o), oe.forEach(a2, function(c2) { - var f = new Pe.Alternative({ definition: [] }); - o.definition.push(f), oe.has(c2, "IGNORE_AMBIGUITIES") ? f.ignoreAmbiguities = c2.IGNORE_AMBIGUITIES : oe.has(c2, "GATE") && (f.ignoreAmbiguities = true), r.recordingProdStack.push(f), c2.ALT.call(r), r.recordingProdStack.pop(); - }), ir; - } - function Aa(t3) { - return t3 === 0 ? "" : "" + t3; - } - function ar(t3) { - if (t3 < 0 || t3 > ya) { - var e = new Error("Invalid DSL Method idx value: <" + t3 + `> - ` + ("Idx value must be a none negative value smaller than " + (ya + 1))); - throw e.KNOWN_RECORDER_ERROR = true, e; - } - } -}); -var Na = R2((or) => { - "use strict"; - Object.defineProperty(or, "__esModule", { value: true }); - or.PerformanceTracer = void 0; - var Oa = k(), su = ce(), uu = function() { - function t3() { - } - return t3.prototype.initPerformanceTracer = function(e) { - if (Oa.has(e, "traceInitPerf")) { - var r = e.traceInitPerf, n2 = typeof r == "number"; - this.traceInitMaxIdent = n2 ? r : Infinity, this.traceInitPerf = n2 ? r > 0 : r; - } else this.traceInitMaxIdent = 0, this.traceInitPerf = su.DEFAULT_PARSER_CONFIG.traceInitPerf; - this.traceInitIndent = -1; - }, t3.prototype.TRACE_INIT = function(e, r) { - if (this.traceInitPerf === true) { - this.traceInitIndent++; - var n2 = new Array(this.traceInitIndent + 1).join(" "); - this.traceInitIndent < this.traceInitMaxIdent && console.log(n2 + "--> <" + e + ">"); - var i = Oa.timer(r), a2 = i.time, o = i.value, s = a2 > 10 ? console.warn : console.log; - return this.traceInitIndent < this.traceInitMaxIdent && s(n2 + "<-- <" + e + "> time: " + a2 + "ms"), this.traceInitIndent--, o; - } else return r(); - }, t3; - }(); - or.PerformanceTracer = uu; -}); -var Ia = R2((sr) => { - "use strict"; - Object.defineProperty(sr, "__esModule", { value: true }); - sr.applyMixins = void 0; - function cu(t3, e) { - e.forEach(function(r) { - var n2 = r.prototype; - Object.getOwnPropertyNames(n2).forEach(function(i) { - if (i !== "constructor") { - var a2 = Object.getOwnPropertyDescriptor(n2, i); - a2 && (a2.get || a2.set) ? Object.defineProperty(t3.prototype, i, a2) : t3.prototype[i] = r.prototype[i]; - } - }); - }); - } - sr.applyMixins = cu; -}); -var ce = R2((U) => { - "use strict"; - var ka = U && U.__extends || /* @__PURE__ */ function() { - var t3 = function(e, r) { - return t3 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n2, i) { - n2.__proto__ = i; - } || function(n2, i) { - for (var a2 in i) Object.prototype.hasOwnProperty.call(i, a2) && (n2[a2] = i[a2]); - }, t3(e, r); - }; - return function(e, r) { - if (typeof r != "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null"); - t3(e, r); - function n2() { - this.constructor = e; - } - e.prototype = r === null ? Object.create(r) : (n2.prototype = r.prototype, new n2()); - }; - }(); - Object.defineProperty(U, "__esModule", { value: true }); - U.EmbeddedActionsParser = U.CstParser = U.Parser = U.EMPTY_ALT = U.ParserDefinitionErrorType = U.DEFAULT_RULE_CONFIG = U.DEFAULT_PARSER_CONFIG = U.END_OF_FILE = void 0; - var ee = k(), lu = pi(), Pa = Ue(), Sa = mt(), xa = Ui(), fu = zr(), pu = zi2(), hu = ra(), du = ia(), vu = oa(), mu = la(), Eu = pa(), Tu = va(), yu = Ra(), _u = Na(), gu = Ia(); - U.END_OF_FILE = Pa.createTokenInstance(Pa.EOF, "", NaN, NaN, NaN, NaN, NaN, NaN); - Object.freeze(U.END_OF_FILE); - U.DEFAULT_PARSER_CONFIG = Object.freeze({ recoveryEnabled: false, maxLookahead: 3, dynamicTokensEnabled: false, outputCst: true, errorMessageProvider: Sa.defaultParserErrorProvider, nodeLocationTracking: "none", traceInitPerf: false, skipValidations: false }); - U.DEFAULT_RULE_CONFIG = Object.freeze({ recoveryValueFunc: function() { - }, resyncEnabled: true }); - var Au; - (function(t3) { - t3[t3.INVALID_RULE_NAME = 0] = "INVALID_RULE_NAME", t3[t3.DUPLICATE_RULE_NAME = 1] = "DUPLICATE_RULE_NAME", t3[t3.INVALID_RULE_OVERRIDE = 2] = "INVALID_RULE_OVERRIDE", t3[t3.DUPLICATE_PRODUCTIONS = 3] = "DUPLICATE_PRODUCTIONS", t3[t3.UNRESOLVED_SUBRULE_REF = 4] = "UNRESOLVED_SUBRULE_REF", t3[t3.LEFT_RECURSION = 5] = "LEFT_RECURSION", t3[t3.NONE_LAST_EMPTY_ALT = 6] = "NONE_LAST_EMPTY_ALT", t3[t3.AMBIGUOUS_ALTS = 7] = "AMBIGUOUS_ALTS", t3[t3.CONFLICT_TOKENS_RULES_NAMESPACE = 8] = "CONFLICT_TOKENS_RULES_NAMESPACE", t3[t3.INVALID_TOKEN_NAME = 9] = "INVALID_TOKEN_NAME", t3[t3.NO_NON_EMPTY_LOOKAHEAD = 10] = "NO_NON_EMPTY_LOOKAHEAD", t3[t3.AMBIGUOUS_PREFIX_ALTS = 11] = "AMBIGUOUS_PREFIX_ALTS", t3[t3.TOO_MANY_ALTS = 12] = "TOO_MANY_ALTS"; - })(Au = U.ParserDefinitionErrorType || (U.ParserDefinitionErrorType = {})); - function Ru(t3) { - return t3 === void 0 && (t3 = void 0), function() { - return t3; - }; - } - U.EMPTY_ALT = Ru; - var ur = function() { - function t3(e, r) { - this.definitionErrors = [], this.selfAnalysisDone = false; - var n2 = this; - if (n2.initErrorHandler(r), n2.initLexerAdapter(), n2.initLooksAhead(r), n2.initRecognizerEngine(e, r), n2.initRecoverable(r), n2.initTreeBuilder(r), n2.initContentAssist(), n2.initGastRecorder(r), n2.initPerformanceTracer(r), ee.has(r, "ignoredIssues")) throw new Error(`The IParserConfig property has been deprecated. - Please use the flag on the relevant DSL method instead. - See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`); - this.skipValidations = ee.has(r, "skipValidations") ? r.skipValidations : U.DEFAULT_PARSER_CONFIG.skipValidations; - } - return t3.performSelfAnalysis = function(e) { - throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead."); - }, t3.prototype.performSelfAnalysis = function() { - var e = this; - this.TRACE_INIT("performSelfAnalysis", function() { - var r; - e.selfAnalysisDone = true; - var n2 = e.className; - e.TRACE_INIT("toFastProps", function() { - ee.toFastProperties(e); - }), e.TRACE_INIT("Grammar Recording", function() { - try { - e.enableRecording(), ee.forEach(e.definedRulesNames, function(a2) { - var o = e[a2], s = o.originalGrammarAction, c2 = void 0; - e.TRACE_INIT(a2 + " Rule", function() { - c2 = e.topLevelRuleRecord(a2, s); - }), e.gastProductionsCache[a2] = c2; - }); - } finally { - e.disableRecording(); - } - }); - var i = []; - if (e.TRACE_INIT("Grammar Resolving", function() { - i = xa.resolveGrammar({ rules: ee.values(e.gastProductionsCache) }), e.definitionErrors = e.definitionErrors.concat(i); - }), e.TRACE_INIT("Grammar Validations", function() { - if (ee.isEmpty(i) && e.skipValidations === false) { - var a2 = xa.validateGrammar({ rules: ee.values(e.gastProductionsCache), maxLookahead: e.maxLookahead, tokenTypes: ee.values(e.tokensMap), errMsgProvider: Sa.defaultGrammarValidatorErrorProvider, grammarName: n2 }); - e.definitionErrors = e.definitionErrors.concat(a2); - } - }), ee.isEmpty(e.definitionErrors) && (e.recoveryEnabled && e.TRACE_INIT("computeAllProdsFollows", function() { - var a2 = lu.computeAllProdsFollows(ee.values(e.gastProductionsCache)); - e.resyncFollows = a2; - }), e.TRACE_INIT("ComputeLookaheadFunctions", function() { - e.preComputeLookaheadFunctions(ee.values(e.gastProductionsCache)); - })), !t3.DEFER_DEFINITION_ERRORS_HANDLING && !ee.isEmpty(e.definitionErrors)) throw r = ee.map(e.definitionErrors, function(a2) { - return a2.message; - }), new Error(`Parser Definition Errors detected: - ` + r.join(` -------------------------------- -`)); - }); - }, t3.DEFER_DEFINITION_ERRORS_HANDLING = false, t3; - }(); - U.Parser = ur; - gu.applyMixins(ur, [fu.Recoverable, pu.LooksAhead, hu.TreeBuilder, du.LexerAdapter, mu.RecognizerEngine, vu.RecognizerApi, Eu.ErrorHandler, Tu.ContentAssist, yu.GastRecorder, _u.PerformanceTracer]); - var Ou = function(t3) { - ka(e, t3); - function e(r, n2) { - n2 === void 0 && (n2 = U.DEFAULT_PARSER_CONFIG); - var i = this, a2 = ee.cloneObj(n2); - return a2.outputCst = true, i = t3.call(this, r, a2) || this, i; - } - return e; - }(ur); - U.CstParser = Ou; - var Nu = function(t3) { - ka(e, t3); - function e(r, n2) { - n2 === void 0 && (n2 = U.DEFAULT_PARSER_CONFIG); - var i = this, a2 = ee.cloneObj(n2); - return a2.outputCst = false, i = t3.call(this, r, a2) || this, i; - } - return e; - }(ur); - U.EmbeddedActionsParser = Nu; -}); -var La = R2((cr) => { - "use strict"; - Object.defineProperty(cr, "__esModule", { value: true }); - cr.createSyntaxDiagramsCode = void 0; - var Ca = Er(); - function Iu(t3, e) { - var r = e === void 0 ? {} : e, n2 = r.resourceBase, i = n2 === void 0 ? "https://unpkg.com/chevrotain@" + Ca.VERSION + "/diagrams/" : n2, a2 = r.css, o = a2 === void 0 ? "https://unpkg.com/chevrotain@" + Ca.VERSION + "/diagrams/diagrams.css" : a2, s = ` - - - - - -`, c2 = ` - -`, f = ` -\n\n\n\n`,p=`\n
\n`,l=`\n\n`,m=`\n\n`;return s+c+f+p+l+m}cr.createSyntaxDiagramsCode=Iu});var Fa=R(E=>{\"use strict\";Object.defineProperty(E,\"__esModule\",{value:!0});E.Parser=E.createSyntaxDiagramsCode=E.clearCache=E.GAstVisitor=E.serializeProduction=E.serializeGrammar=E.Terminal=E.Rule=E.RepetitionWithSeparator=E.RepetitionMandatoryWithSeparator=E.RepetitionMandatory=E.Repetition=E.Option=E.NonTerminal=E.Alternative=E.Alternation=E.defaultLexerErrorProvider=E.NoViableAltException=E.NotAllInputParsedException=E.MismatchedTokenException=E.isRecognitionException=E.EarlyExitException=E.defaultParserErrorProvider=E.tokenName=E.tokenMatcher=E.tokenLabel=E.EOF=E.createTokenInstance=E.createToken=E.LexerDefinitionErrorType=E.Lexer=E.EMPTY_ALT=E.ParserDefinitionErrorType=E.EmbeddedActionsParser=E.CstParser=E.VERSION=void 0;var ku=Er();Object.defineProperty(E,\"VERSION\",{enumerable:!0,get:function(){return ku.VERSION}});var lr=ce();Object.defineProperty(E,\"CstParser\",{enumerable:!0,get:function(){return lr.CstParser}});Object.defineProperty(E,\"EmbeddedActionsParser\",{enumerable:!0,get:function(){return lr.EmbeddedActionsParser}});Object.defineProperty(E,\"ParserDefinitionErrorType\",{enumerable:!0,get:function(){return lr.ParserDefinitionErrorType}});Object.defineProperty(E,\"EMPTY_ALT\",{enumerable:!0,get:function(){return lr.EMPTY_ALT}});var Ma=ft();Object.defineProperty(E,\"Lexer\",{enumerable:!0,get:function(){return Ma.Lexer}});Object.defineProperty(E,\"LexerDefinitionErrorType\",{enumerable:!0,get:function(){return Ma.LexerDefinitionErrorType}});var nt=Ue();Object.defineProperty(E,\"createToken\",{enumerable:!0,get:function(){return nt.createToken}});Object.defineProperty(E,\"createTokenInstance\",{enumerable:!0,get:function(){return nt.createTokenInstance}});Object.defineProperty(E,\"EOF\",{enumerable:!0,get:function(){return nt.EOF}});Object.defineProperty(E,\"tokenLabel\",{enumerable:!0,get:function(){return nt.tokenLabel}});Object.defineProperty(E,\"tokenMatcher\",{enumerable:!0,get:function(){return nt.tokenMatcher}});Object.defineProperty(E,\"tokenName\",{enumerable:!0,get:function(){return nt.tokenName}});var Pu=mt();Object.defineProperty(E,\"defaultParserErrorProvider\",{enumerable:!0,get:function(){return Pu.defaultParserErrorProvider}});var Nt=et();Object.defineProperty(E,\"EarlyExitException\",{enumerable:!0,get:function(){return Nt.EarlyExitException}});Object.defineProperty(E,\"isRecognitionException\",{enumerable:!0,get:function(){return Nt.isRecognitionException}});Object.defineProperty(E,\"MismatchedTokenException\",{enumerable:!0,get:function(){return Nt.MismatchedTokenException}});Object.defineProperty(E,\"NotAllInputParsedException\",{enumerable:!0,get:function(){return Nt.NotAllInputParsedException}});Object.defineProperty(E,\"NoViableAltException\",{enumerable:!0,get:function(){return Nt.NoViableAltException}});var Su=kr();Object.defineProperty(E,\"defaultLexerErrorProvider\",{enumerable:!0,get:function(){return Su.defaultLexerErrorProvider}});var Se=ne();Object.defineProperty(E,\"Alternation\",{enumerable:!0,get:function(){return Se.Alternation}});Object.defineProperty(E,\"Alternative\",{enumerable:!0,get:function(){return Se.Alternative}});Object.defineProperty(E,\"NonTerminal\",{enumerable:!0,get:function(){return Se.NonTerminal}});Object.defineProperty(E,\"Option\",{enumerable:!0,get:function(){return Se.Option}});Object.defineProperty(E,\"Repetition\",{enumerable:!0,get:function(){return Se.Repetition}});Object.defineProperty(E,\"RepetitionMandatory\",{enumerable:!0,get:function(){return Se.RepetitionMandatory}});Object.defineProperty(E,\"RepetitionMandatoryWithSeparator\",{enumerable:!0,get:function(){return Se.RepetitionMandatoryWithSeparator}});Object.defineProperty(E,\"RepetitionWithSeparator\",{enumerable:!0,get:function(){return Se.RepetitionWithSeparator}});Object.defineProperty(E,\"Rule\",{enumerable:!0,get:function(){return Se.Rule}});Object.defineProperty(E,\"Terminal\",{enumerable:!0,get:function(){return Se.Terminal}});var ba=ne();Object.defineProperty(E,\"serializeGrammar\",{enumerable:!0,get:function(){return ba.serializeGrammar}});Object.defineProperty(E,\"serializeProduction\",{enumerable:!0,get:function(){return ba.serializeProduction}});var xu=$e();Object.defineProperty(E,\"GAstVisitor\",{enumerable:!0,get:function(){return xu.GAstVisitor}});function Cu(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API.\n\t It performs no action other than printing this message.\n\t Please avoid using it as it will be completely removed in the future`)}E.clearCache=Cu;var Lu=La();Object.defineProperty(E,\"createSyntaxDiagramsCode\",{enumerable:!0,get:function(){return Lu.createSyntaxDiagramsCode}});var Mu=function(){function t(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead.\nSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return t}();E.Parser=Mu});export default Fa();\n", "import {\n\tBackSide,\n\tBoxGeometry,\n\tBufferAttribute,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tConeGeometry,\n\tCylinderGeometry,\n\tDataTexture,\n\tDoubleSide,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tFrontSide,\n\tGroup,\n\tLineBasicMaterial,\n\tLineSegments,\n\tLoader,\n\tLoaderUtils,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshPhongMaterial,\n\tObject3D,\n\tPoints,\n\tPointsMaterial,\n\tQuaternion,\n\tRepeatWrapping,\n\tScene,\n\tShapeUtils,\n\tSphereGeometry,\n\tSRGBColorSpace,\n\tTextureLoader,\n\tVector2,\n\tVector3\n} from 'three';\nimport chevrotain from '../libs/chevrotain.module.min.js';\n\n\nclass VRMLLoader 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 = ( scope.path === '' ) ? LoaderUtils.extractUrlBase( url ) : scope.path;\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( text, path ) );\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( data, path ) {\n\n\t\tconst nodeMap = {};\n\n\t\tfunction generateVRMLTree( data ) {\n\n\t\t\t// create lexer, parser and visitor\n\n\t\t\tconst tokenData = createTokens();\n\n\t\t\tconst lexer = new VRMLLexer( tokenData.tokens );\n\t\t\tconst parser = new VRMLParser( tokenData.tokenVocabulary );\n\t\t\tconst visitor = createVisitor( parser.getBaseCstVisitorConstructor() );\n\n\t\t\t// lexing\n\n\t\t\tconst lexingResult = lexer.lex( data );\n\t\t\tparser.input = lexingResult.tokens;\n\n\t\t\t// parsing\n\n\t\t\tconst cstOutput = parser.vrml();\n\n\t\t\tif ( parser.errors.length > 0 ) {\n\n\t\t\t\tconsole.error( parser.errors );\n\n\t\t\t\tthrow Error( 'THREE.VRMLLoader: Parsing errors detected.' );\n\n\t\t\t}\n\n\t\t\t// actions\n\n\t\t\tconst ast = visitor.visit( cstOutput );\n\n\t\t\treturn ast;\n\n\t\t}\n\n\t\tfunction createTokens() {\n\n\t\t\tconst createToken = chevrotain.createToken;\n\n\t\t\t// from http://gun.teipir.gr/VRML-amgem/spec/part1/concepts.html#SyntaxBasics\n\n\t\t\tconst RouteIdentifier = createToken( { name: 'RouteIdentifier', pattern: /[^\\x30-\\x39\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d][^\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d]*[\\.][^\\x30-\\x39\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d][^\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d]*/ } );\n\t\t\tconst Identifier = createToken( { name: 'Identifier', pattern: /[^\\x30-\\x39\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d]([^\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d])*/, longer_alt: RouteIdentifier } );\n\n\t\t\t// from http://gun.teipir.gr/VRML-amgem/spec/part1/nodesRef.html\n\n\t\t\tconst nodeTypes = [\n\t\t\t\t'Anchor', 'Billboard', 'Collision', 'Group', 'Transform', // grouping nodes\n\t\t\t\t'Inline', 'LOD', 'Switch', // special groups\n\t\t\t\t'AudioClip', 'DirectionalLight', 'PointLight', 'Script', 'Shape', 'Sound', 'SpotLight', 'WorldInfo', // common nodes\n\t\t\t\t'CylinderSensor', 'PlaneSensor', 'ProximitySensor', 'SphereSensor', 'TimeSensor', 'TouchSensor', 'VisibilitySensor', // sensors\n\t\t\t\t'Box', 'Cone', 'Cylinder', 'ElevationGrid', 'Extrusion', 'IndexedFaceSet', 'IndexedLineSet', 'PointSet', 'Sphere', // geometries\n\t\t\t\t'Color', 'Coordinate', 'Normal', 'TextureCoordinate', // geometric properties\n\t\t\t\t'Appearance', 'FontStyle', 'ImageTexture', 'Material', 'MovieTexture', 'PixelTexture', 'TextureTransform', // appearance\n\t\t\t\t'ColorInterpolator', 'CoordinateInterpolator', 'NormalInterpolator', 'OrientationInterpolator', 'PositionInterpolator', 'ScalarInterpolator', // interpolators\n\t\t\t\t'Background', 'Fog', 'NavigationInfo', 'Viewpoint', // bindable nodes\n\t\t\t\t'Text' // Text must be placed at the end of the regex so there are no matches for TextureTransform and TextureCoordinate\n\t\t\t];\n\n\t\t\t//\n\n\t\t\tconst Version = createToken( {\n\t\t\t\tname: 'Version',\n\t\t\t\tpattern: /#VRML.*/,\n\t\t\t\tlonger_alt: Identifier\n\t\t\t} );\n\n\t\t\tconst NodeName = createToken( {\n\t\t\t\tname: 'NodeName',\n\t\t\t\tpattern: new RegExp( nodeTypes.join( '|' ) ),\n\t\t\t\tlonger_alt: Identifier\n\t\t\t} );\n\n\t\t\tconst DEF = createToken( {\n\t\t\t\tname: 'DEF',\n\t\t\t\tpattern: /DEF/,\n\t\t\t\tlonger_alt: Identifier\n\t\t\t} );\n\n\t\t\tconst USE = createToken( {\n\t\t\t\tname: 'USE',\n\t\t\t\tpattern: /USE/,\n\t\t\t\tlonger_alt: Identifier\n\t\t\t} );\n\n\t\t\tconst ROUTE = createToken( {\n\t\t\t\tname: 'ROUTE',\n\t\t\t\tpattern: /ROUTE/,\n\t\t\t\tlonger_alt: Identifier\n\t\t\t} );\n\n\t\t\tconst TO = createToken( {\n\t\t\t\tname: 'TO',\n\t\t\t\tpattern: /TO/,\n\t\t\t\tlonger_alt: Identifier\n\t\t\t} );\n\n\t\t\t//\n\n\t\t\tconst StringLiteral = createToken( { name: 'StringLiteral', pattern: /\"(?:[^\\\\\"\\n\\r]|\\\\[bfnrtv\"\\\\/]|\\\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])*\"/ } );\n\t\t\tconst HexLiteral = createToken( { name: 'HexLiteral', pattern: /0[xX][0-9a-fA-F]+/ } );\n\t\t\tconst NumberLiteral = createToken( { name: 'NumberLiteral', pattern: /[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?/ } );\n\t\t\tconst TrueLiteral = createToken( { name: 'TrueLiteral', pattern: /TRUE/ } );\n\t\t\tconst FalseLiteral = createToken( { name: 'FalseLiteral', pattern: /FALSE/ } );\n\t\t\tconst NullLiteral = createToken( { name: 'NullLiteral', pattern: /NULL/ } );\n\t\t\tconst LSquare = createToken( { name: 'LSquare', pattern: /\\[/ } );\n\t\t\tconst RSquare = createToken( { name: 'RSquare', pattern: /]/ } );\n\t\t\tconst LCurly = createToken( { name: 'LCurly', pattern: /{/ } );\n\t\t\tconst RCurly = createToken( { name: 'RCurly', pattern: /}/ } );\n\t\t\tconst Comment = createToken( {\n\t\t\t\tname: 'Comment',\n\t\t\t\tpattern: /#.*/,\n\t\t\t\tgroup: chevrotain.Lexer.SKIPPED\n\t\t\t} );\n\n\t\t\t// commas, blanks, tabs, newlines and carriage returns are whitespace characters wherever they appear outside of string fields\n\n\t\t\tconst WhiteSpace = createToken( {\n\t\t\t\tname: 'WhiteSpace',\n\t\t\t\tpattern: /[ ,\\s]/,\n\t\t\t\tgroup: chevrotain.Lexer.SKIPPED\n\t\t\t} );\n\n\t\t\tconst tokens = [\n\t\t\t\tWhiteSpace,\n\t\t\t\t// keywords appear before the Identifier\n\t\t\t\tNodeName,\n\t\t\t\tDEF,\n\t\t\t\tUSE,\n\t\t\t\tROUTE,\n\t\t\t\tTO,\n\t\t\t\tTrueLiteral,\n\t\t\t\tFalseLiteral,\n\t\t\t\tNullLiteral,\n\t\t\t\t// the Identifier must appear after the keywords because all keywords are valid identifiers\n\t\t\t\tVersion,\n\t\t\t\tIdentifier,\n\t\t\t\tRouteIdentifier,\n\t\t\t\tStringLiteral,\n\t\t\t\tHexLiteral,\n\t\t\t\tNumberLiteral,\n\t\t\t\tLSquare,\n\t\t\t\tRSquare,\n\t\t\t\tLCurly,\n\t\t\t\tRCurly,\n\t\t\t\tComment\n\t\t\t];\n\n\t\t\tconst tokenVocabulary = {};\n\n\t\t\tfor ( let i = 0, l = tokens.length; i < l; i ++ ) {\n\n\t\t\t\tconst token = tokens[ i ];\n\n\t\t\t\ttokenVocabulary[ token.name ] = token;\n\n\t\t\t}\n\n\t\t\treturn { tokens: tokens, tokenVocabulary: tokenVocabulary };\n\n\t\t}\n\n\n\t\tfunction createVisitor( BaseVRMLVisitor ) {\n\n\t\t\t// the visitor is created dynmaically based on the given base class\n\n\t\t\tclass VRMLToASTVisitor extends BaseVRMLVisitor {\n\n\t\t\t\tconstructor() {\n\n\t\t\t\t\tsuper();\n\n\t\t\t\t\tthis.validateVisitor();\n\n\t\t\t\t}\n\n\t\t\t\tvrml( ctx ) {\n\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\tversion: this.visit( ctx.version ),\n\t\t\t\t\t\tnodes: [],\n\t\t\t\t\t\troutes: []\n\t\t\t\t\t};\n\n\t\t\t\t\tfor ( let i = 0, l = ctx.node.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst node = ctx.node[ i ];\n\n\t\t\t\t\t\tdata.nodes.push( this.visit( node ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ctx.route ) {\n\n\t\t\t\t\t\tfor ( let i = 0, l = ctx.route.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst route = ctx.route[ i ];\n\n\t\t\t\t\t\t\tdata.routes.push( this.visit( route ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn data;\n\n\t\t\t\t}\n\n\t\t\t\tversion( ctx ) {\n\n\t\t\t\t\treturn ctx.Version[ 0 ].image;\n\n\t\t\t\t}\n\n\t\t\t\tnode( ctx ) {\n\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\tname: ctx.NodeName[ 0 ].image,\n\t\t\t\t\t\tfields: []\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( ctx.field ) {\n\n\t\t\t\t\t\tfor ( let i = 0, l = ctx.field.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst field = ctx.field[ i ];\n\n\t\t\t\t\t\t\tdata.fields.push( this.visit( field ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// DEF\n\n\t\t\t\t\tif ( ctx.def ) {\n\n\t\t\t\t\t\tdata.DEF = this.visit( ctx.def[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn data;\n\n\t\t\t\t}\n\n\t\t\t\tfield( ctx ) {\n\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\tname: ctx.Identifier[ 0 ].image,\n\t\t\t\t\t\ttype: null,\n\t\t\t\t\t\tvalues: null\n\t\t\t\t\t};\n\n\t\t\t\t\tlet result;\n\n\t\t\t\t\t// SFValue\n\n\t\t\t\t\tif ( ctx.singleFieldValue ) {\n\n\t\t\t\t\t\tresult = this.visit( ctx.singleFieldValue[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// MFValue\n\n\t\t\t\t\tif ( ctx.multiFieldValue ) {\n\n\t\t\t\t\t\tresult = this.visit( ctx.multiFieldValue[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdata.type = result.type;\n\t\t\t\t\tdata.values = result.values;\n\n\t\t\t\t\treturn data;\n\n\t\t\t\t}\n\n\t\t\t\tdef( ctx ) {\n\n\t\t\t\t\treturn ( ctx.Identifier || ctx.NodeName )[ 0 ].image;\n\n\t\t\t\t}\n\n\t\t\t\tuse( ctx ) {\n\n\t\t\t\t\treturn { USE: ( ctx.Identifier || ctx.NodeName )[ 0 ].image };\n\n\t\t\t\t}\n\n\t\t\t\tsingleFieldValue( ctx ) {\n\n\t\t\t\t\treturn processField( this, ctx );\n\n\t\t\t\t}\n\n\t\t\t\tmultiFieldValue( ctx ) {\n\n\t\t\t\t\treturn processField( this, ctx );\n\n\t\t\t\t}\n\n\t\t\t\troute( ctx ) {\n\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\tFROM: ctx.RouteIdentifier[ 0 ].image,\n\t\t\t\t\t\tTO: ctx.RouteIdentifier[ 1 ].image\n\t\t\t\t\t};\n\n\t\t\t\t\treturn data;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction processField( scope, ctx ) {\n\n\t\t\t\tconst field = {\n\t\t\t\t\ttype: null,\n\t\t\t\t\tvalues: []\n\t\t\t\t};\n\n\t\t\t\tif ( ctx.node ) {\n\n\t\t\t\t\tfield.type = 'node';\n\n\t\t\t\t\tfor ( let i = 0, l = ctx.node.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst node = ctx.node[ i ];\n\n\t\t\t\t\t\tfield.values.push( scope.visit( node ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ctx.use ) {\n\n\t\t\t\t\tfield.type = 'use';\n\n\t\t\t\t\tfor ( let i = 0, l = ctx.use.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst use = ctx.use[ i ];\n\n\t\t\t\t\t\tfield.values.push( scope.visit( use ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ctx.StringLiteral ) {\n\n\t\t\t\t\tfield.type = 'string';\n\n\t\t\t\t\tfor ( let i = 0, l = ctx.StringLiteral.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst stringLiteral = ctx.StringLiteral[ i ];\n\n\t\t\t\t\t\tfield.values.push( stringLiteral.image.replace( /'|\"/g, '' ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ctx.NumberLiteral ) {\n\n\t\t\t\t\tfield.type = 'number';\n\n\t\t\t\t\tfor ( let i = 0, l = ctx.NumberLiteral.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst numberLiteral = ctx.NumberLiteral[ i ];\n\n\t\t\t\t\t\tfield.values.push( parseFloat( numberLiteral.image ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ctx.HexLiteral ) {\n\n\t\t\t\t\tfield.type = 'hex';\n\n\t\t\t\t\tfor ( let i = 0, l = ctx.HexLiteral.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst hexLiteral = ctx.HexLiteral[ i ];\n\n\t\t\t\t\t\tfield.values.push( hexLiteral.image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ctx.TrueLiteral ) {\n\n\t\t\t\t\tfield.type = 'boolean';\n\n\t\t\t\t\tfor ( let i = 0, l = ctx.TrueLiteral.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst trueLiteral = ctx.TrueLiteral[ i ];\n\n\t\t\t\t\t\tif ( trueLiteral.image === 'TRUE' ) field.values.push( true );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ctx.FalseLiteral ) {\n\n\t\t\t\t\tfield.type = 'boolean';\n\n\t\t\t\t\tfor ( let i = 0, l = ctx.FalseLiteral.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst falseLiteral = ctx.FalseLiteral[ i ];\n\n\t\t\t\t\t\tif ( falseLiteral.image === 'FALSE' ) field.values.push( false );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ctx.NullLiteral ) {\n\n\t\t\t\t\tfield.type = 'null';\n\n\t\t\t\t\tctx.NullLiteral.forEach( function () {\n\n\t\t\t\t\t\tfield.values.push( null );\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t\treturn field;\n\n\t\t\t}\n\n\t\t\treturn new VRMLToASTVisitor();\n\n\t\t}\n\n\t\tfunction parseTree( tree ) {\n\n\t\t\t// console.log( JSON.stringify( tree, null, 2 ) );\n\n\t\t\tconst nodes = tree.nodes;\n\t\t\tconst scene = new Scene();\n\n\t\t\t// first iteration: build nodemap based on DEF statements\n\n\t\t\tfor ( let i = 0, l = nodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst node = nodes[ i ];\n\n\t\t\t\tbuildNodeMap( node );\n\n\t\t\t}\n\n\t\t\t// second iteration: build nodes\n\n\t\t\tfor ( let i = 0, l = nodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst node = nodes[ i ];\n\t\t\t\tconst object = getNode( node );\n\n\t\t\t\tif ( object instanceof Object3D ) scene.add( object );\n\n\t\t\t\tif ( node.name === 'WorldInfo' ) scene.userData.worldInfo = object;\n\n\t\t\t}\n\n\t\t\treturn scene;\n\n\t\t}\n\n\t\tfunction buildNodeMap( node ) {\n\n\t\t\tif ( node.DEF ) {\n\n\t\t\t\tnodeMap[ node.DEF ] = node;\n\n\t\t\t}\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\n\t\t\t\tif ( field.type === 'node' ) {\n\n\t\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\t\tfor ( let j = 0, jl = fieldValues.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tbuildNodeMap( fieldValues[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tfunction getNode( node ) {\n\n\t\t\t// handle case where a node refers to a different one\n\n\t\t\tif ( node.USE ) {\n\n\t\t\t\treturn resolveUSE( node.USE );\n\n\t\t\t}\n\n\t\t\tif ( node.build !== undefined ) return node.build;\n\n\t\t\tnode.build = buildNode( node );\n\n\t\t\treturn node.build;\n\n\t\t}\n\n\t\t// node builder\n\n\t\tfunction buildNode( node ) {\n\n\t\t\tconst nodeName = node.name;\n\t\t\tlet build;\n\n\t\t\tswitch ( nodeName ) {\n\n\t\t\t\tcase 'Anchor':\n\t\t\t\tcase 'Group':\n\t\t\t\tcase 'Transform':\n\t\t\t\tcase 'Collision':\n\t\t\t\t\tbuild = buildGroupingNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Background':\n\t\t\t\t\tbuild = buildBackgroundNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Shape':\n\t\t\t\t\tbuild = buildShapeNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Appearance':\n\t\t\t\t\tbuild = buildAppearanceNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Material':\n\t\t\t\t\tbuild = buildMaterialNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ImageTexture':\n\t\t\t\t\tbuild = buildImageTextureNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PixelTexture':\n\t\t\t\t\tbuild = buildPixelTextureNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'TextureTransform':\n\t\t\t\t\tbuild = buildTextureTransformNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'IndexedFaceSet':\n\t\t\t\t\tbuild = buildIndexedFaceSetNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'IndexedLineSet':\n\t\t\t\t\tbuild = buildIndexedLineSetNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointSet':\n\t\t\t\t\tbuild = buildPointSetNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Box':\n\t\t\t\t\tbuild = buildBoxNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Cone':\n\t\t\t\t\tbuild = buildConeNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Cylinder':\n\t\t\t\t\tbuild = buildCylinderNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Sphere':\n\t\t\t\t\tbuild = buildSphereNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ElevationGrid':\n\t\t\t\t\tbuild = buildElevationGridNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Extrusion':\n\t\t\t\t\tbuild = buildExtrusionNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Color':\n\t\t\t\tcase 'Coordinate':\n\t\t\t\tcase 'Normal':\n\t\t\t\tcase 'TextureCoordinate':\n\t\t\t\t\tbuild = buildGeometricNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WorldInfo':\n\t\t\t\t\tbuild = buildWorldInfoNode( node );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Billboard':\n\n\t\t\t\tcase 'Inline':\n\t\t\t\tcase 'LOD':\n\t\t\t\tcase 'Switch':\n\n\t\t\t\tcase 'AudioClip':\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\tcase 'PointLight':\n\t\t\t\tcase 'Script':\n\t\t\t\tcase 'Sound':\n\t\t\t\tcase 'SpotLight':\n\n\t\t\t\tcase 'CylinderSensor':\n\t\t\t\tcase 'PlaneSensor':\n\t\t\t\tcase 'ProximitySensor':\n\t\t\t\tcase 'SphereSensor':\n\t\t\t\tcase 'TimeSensor':\n\t\t\t\tcase 'TouchSensor':\n\t\t\t\tcase 'VisibilitySensor':\n\n\t\t\t\tcase 'Text':\n\n\t\t\t\tcase 'FontStyle':\n\t\t\t\tcase 'MovieTexture':\n\n\t\t\t\tcase 'ColorInterpolator':\n\t\t\t\tcase 'CoordinateInterpolator':\n\t\t\t\tcase 'NormalInterpolator':\n\t\t\t\tcase 'OrientationInterpolator':\n\t\t\t\tcase 'PositionInterpolator':\n\t\t\t\tcase 'ScalarInterpolator':\n\n\t\t\t\tcase 'Fog':\n\t\t\t\tcase 'NavigationInfo':\n\t\t\t\tcase 'Viewpoint':\n\t\t\t\t\t// node not supported yet\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown node:', nodeName );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( build !== undefined && node.DEF !== undefined && build.hasOwnProperty( 'name' ) === true ) {\n\n\t\t\t\tbuild.name = node.DEF;\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildGroupingNode( node ) {\n\n\t\t\tconst object = new Group();\n\n\t\t\t//\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'bboxCenter':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'bboxSize':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'center':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'children':\n\t\t\t\t\t\tparseFieldChildren( fieldValues, object );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'description':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'collide':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'parameter':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rotation':\n\t\t\t\t\t\tconst axis = new Vector3( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ] ).normalize();\n\t\t\t\t\t\tconst angle = fieldValues[ 3 ];\n\t\t\t\t\t\tobject.quaternion.setFromAxisAngle( axis, angle );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tobject.scale.set( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ] );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'scaleOrientation':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'translation':\n\t\t\t\t\t\tobject.position.set( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ] );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'proxy':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'url':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn object;\n\n\t\t}\n\n\t\tfunction buildBackgroundNode( node ) {\n\n\t\t\tconst group = new Group();\n\n\t\t\tlet groundAngle, groundColor;\n\t\t\tlet skyAngle, skyColor;\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'groundAngle':\n\t\t\t\t\t\tgroundAngle = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'groundColor':\n\t\t\t\t\t\tgroundColor = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'backUrl':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'bottomUrl':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'frontUrl':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'leftUrl':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rightUrl':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'topUrl':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'skyAngle':\n\t\t\t\t\t\tskyAngle = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'skyColor':\n\t\t\t\t\t\tskyColor = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst radius = 10000;\n\n\t\t\t// sky\n\n\t\t\tif ( skyColor ) {\n\n\t\t\t\tconst skyGeometry = new SphereGeometry( radius, 32, 16 );\n\t\t\t\tconst skyMaterial = new MeshBasicMaterial( { fog: false, side: BackSide, depthWrite: false, depthTest: false } );\n\n\t\t\t\tif ( skyColor.length > 3 ) {\n\n\t\t\t\t\tpaintFaces( skyGeometry, radius, skyAngle, toColorArray( skyColor ), true );\n\t\t\t\t\tskyMaterial.vertexColors = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tskyMaterial.color.setRGB( skyColor[ 0 ], skyColor[ 1 ], skyColor[ 2 ] );\n\t\t\t\t\tskyMaterial.color.convertSRGBToLinear();\n\n\t\t\t\t}\n\n\t\t\t\tconst sky = new Mesh( skyGeometry, skyMaterial );\n\t\t\t\tgroup.add( sky );\n\n\t\t\t}\n\n\t\t\t// ground\n\n\t\t\tif ( groundColor ) {\n\n\t\t\t\tif ( groundColor.length > 0 ) {\n\n\t\t\t\t\tconst groundGeometry = new SphereGeometry( radius, 32, 16, 0, 2 * Math.PI, 0.5 * Math.PI, 1.5 * Math.PI );\n\t\t\t\t\tconst groundMaterial = new MeshBasicMaterial( { fog: false, side: BackSide, vertexColors: true, depthWrite: false, depthTest: false } );\n\n\t\t\t\t\tpaintFaces( groundGeometry, radius, groundAngle, toColorArray( groundColor ), false );\n\n\t\t\t\t\tconst ground = new Mesh( groundGeometry, groundMaterial );\n\t\t\t\t\tgroup.add( ground );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// render background group first\n\n\t\t\tgroup.renderOrder = - Infinity;\n\n\t\t\treturn group;\n\n\t\t}\n\n\t\tfunction buildShapeNode( node ) {\n\n\t\t\tconst fields = node.fields;\n\n\t\t\t// if the appearance field is NULL or unspecified, lighting is off and the unlit object color is (0, 0, 0)\n\n\t\t\tlet material = new MeshBasicMaterial( {\n\t\t\t\tname: Loader.DEFAULT_MATERIAL_NAME,\n\t\t\t\tcolor: 0x000000\n\t\t\t} );\n\t\t\tlet geometry;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'appearance':\n\t\t\t\t\t\tif ( fieldValues[ 0 ] !== null ) {\n\n\t\t\t\t\t\t\tmaterial = getNode( fieldValues[ 0 ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'geometry':\n\t\t\t\t\t\tif ( fieldValues[ 0 ] !== null ) {\n\n\t\t\t\t\t\t\tgeometry = getNode( fieldValues[ 0 ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build 3D object\n\n\t\t\tlet object;\n\n\t\t\tif ( geometry && geometry.attributes.position ) {\n\n\t\t\t\tconst type = geometry._type;\n\n\t\t\t\tif ( type === 'points' ) { // points\n\n\t\t\t\t\tconst pointsMaterial = new PointsMaterial( {\n\t\t\t\t\t\tname: Loader.DEFAULT_MATERIAL_NAME,\n\t\t\t\t\t\tcolor: 0xffffff,\n\t\t\t\t\t\topacity: material.opacity,\n\t\t\t\t\t\ttransparent: material.transparent\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( geometry.attributes.color !== undefined ) {\n\n\t\t\t\t\t\tpointsMaterial.vertexColors = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// if the color field is NULL and there is a material defined for the appearance affecting this PointSet, then use the emissiveColor of the material to draw the points\n\n\t\t\t\t\t\tif ( material.isMeshPhongMaterial ) {\n\n\t\t\t\t\t\t\tpointsMaterial.color.copy( material.emissive );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobject = new Points( geometry, pointsMaterial );\n\n\t\t\t\t} else if ( type === 'line' ) { // lines\n\n\t\t\t\t\tconst lineMaterial = new LineBasicMaterial( {\n\t\t\t\t\t\tname: Loader.DEFAULT_MATERIAL_NAME,\n\t\t\t\t\t\tcolor: 0xffffff,\n\t\t\t\t\t\topacity: material.opacity,\n\t\t\t\t\t\ttransparent: material.transparent\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( geometry.attributes.color !== undefined ) {\n\n\t\t\t\t\t\tlineMaterial.vertexColors = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// if the color field is NULL and there is a material defined for the appearance affecting this IndexedLineSet, then use the emissiveColor of the material to draw the lines\n\n\t\t\t\t\t\tif ( material.isMeshPhongMaterial ) {\n\n\t\t\t\t\t\t\tlineMaterial.color.copy( material.emissive );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobject = new LineSegments( geometry, lineMaterial );\n\n\t\t\t\t} else { // consider meshes\n\n\t\t\t\t\t// check \"solid\" hint (it's placed in the geometry but affects the material)\n\n\t\t\t\t\tif ( geometry._solid !== undefined ) {\n\n\t\t\t\t\t\tmaterial.side = ( geometry._solid ) ? FrontSide : DoubleSide;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// check for vertex colors\n\n\t\t\t\t\tif ( geometry.attributes.color !== undefined ) {\n\n\t\t\t\t\t\tmaterial.vertexColors = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tobject = new Object3D();\n\n\t\t\t\t// if the geometry field is NULL or no vertices are defined the object is not drawn\n\n\t\t\t\tobject.visible = false;\n\n\t\t\t}\n\n\t\t\treturn object;\n\n\t\t}\n\n\t\tfunction buildAppearanceNode( node ) {\n\n\t\t\tlet material = new MeshPhongMaterial();\n\t\t\tlet transformData;\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'material':\n\t\t\t\t\t\tif ( fieldValues[ 0 ] !== null ) {\n\n\t\t\t\t\t\t\tconst materialData = getNode( fieldValues[ 0 ] );\n\n\t\t\t\t\t\t\tif ( materialData.diffuseColor ) material.color.copy( materialData.diffuseColor );\n\t\t\t\t\t\t\tif ( materialData.emissiveColor ) material.emissive.copy( materialData.emissiveColor );\n\t\t\t\t\t\t\tif ( materialData.shininess ) material.shininess = materialData.shininess;\n\t\t\t\t\t\t\tif ( materialData.specularColor ) material.specular.copy( materialData.specularColor );\n\t\t\t\t\t\t\tif ( materialData.transparency ) material.opacity = 1 - materialData.transparency;\n\t\t\t\t\t\t\tif ( materialData.transparency > 0 ) material.transparent = true;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// if the material field is NULL or unspecified, lighting is off and the unlit object color is (0, 0, 0)\n\n\t\t\t\t\t\t\tmaterial = new MeshBasicMaterial( {\n\t\t\t\t\t\t\t\tname: Loader.DEFAULT_MATERIAL_NAME,\n\t\t\t\t\t\t\t\tcolor: 0x000000\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'texture':\n\t\t\t\t\t\tconst textureNode = fieldValues[ 0 ];\n\t\t\t\t\t\tif ( textureNode !== null ) {\n\n\t\t\t\t\t\t\tif ( textureNode.name === 'ImageTexture' || textureNode.name === 'PixelTexture' ) {\n\n\t\t\t\t\t\t\t\tmaterial.map = getNode( textureNode );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// MovieTexture not supported yet\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'textureTransform':\n\t\t\t\t\t\tif ( fieldValues[ 0 ] !== null ) {\n\n\t\t\t\t\t\t\ttransformData = getNode( fieldValues[ 0 ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// only apply texture transform data if a texture was defined\n\n\t\t\tif ( material.map ) {\n\n\t\t\t\t// respect VRML lighting model\n\n\t\t\t\tif ( material.map.__type ) {\n\n\t\t\t\t\tswitch ( material.map.__type ) {\n\n\t\t\t\t\t\tcase TEXTURE_TYPE.INTENSITY_ALPHA:\n\t\t\t\t\t\t\tmaterial.opacity = 1; // ignore transparency\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TEXTURE_TYPE.RGB:\n\t\t\t\t\t\t\tmaterial.color.set( 0xffffff ); // ignore material color\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TEXTURE_TYPE.RGBA:\n\t\t\t\t\t\t\tmaterial.color.set( 0xffffff ); // ignore material color\n\t\t\t\t\t\t\tmaterial.opacity = 1; // ignore transparency\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdelete material.map.__type;\n\n\t\t\t\t}\n\n\t\t\t\t// apply texture transform\n\n\t\t\t\tif ( transformData ) {\n\n\t\t\t\t\tmaterial.map.center.copy( transformData.center );\n\t\t\t\t\tmaterial.map.rotation = transformData.rotation;\n\t\t\t\t\tmaterial.map.repeat.copy( transformData.scale );\n\t\t\t\t\tmaterial.map.offset.copy( transformData.translation );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn material;\n\n\t\t}\n\n\t\tfunction buildMaterialNode( node ) {\n\n\t\t\tconst materialData = {};\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'ambientIntensity':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'diffuseColor':\n\t\t\t\t\t\tmaterialData.diffuseColor = new Color( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ] );\n\t\t\t\t\t\tmaterialData.diffuseColor.convertSRGBToLinear();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'emissiveColor':\n\t\t\t\t\t\tmaterialData.emissiveColor = new Color( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ] );\n\t\t\t\t\t\tmaterialData.emissiveColor.convertSRGBToLinear();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'shininess':\n\t\t\t\t\t\tmaterialData.shininess = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'specularColor':\n\t\t\t\t\t\tmaterialData.specularColor = new Color( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ] );\n\t\t\t\t\t\tmaterialData.specularColor.convertSRGBToLinear();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tmaterialData.transparency = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn materialData;\n\n\t\t}\n\n\t\tfunction parseHexColor( hex, textureType, color ) {\n\n\t\t\tlet value;\n\n\t\t\tswitch ( textureType ) {\n\n\t\t\t\tcase TEXTURE_TYPE.INTENSITY:\n\t\t\t\t\t// Intensity texture: A one-component image specifies one-byte hexadecimal or integer values representing the intensity of the image\n\t\t\t\t\tvalue = parseInt( hex );\n\t\t\t\t\tcolor.r = value;\n\t\t\t\t\tcolor.g = value;\n\t\t\t\t\tcolor.b = value;\n\t\t\t\t\tcolor.a = 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TEXTURE_TYPE.INTENSITY_ALPHA:\n\t\t\t\t\t// Intensity+Alpha texture: A two-component image specifies the intensity in the first (high) byte and the alpha opacity in the second (low) byte.\n\t\t\t\t\tvalue = parseInt( '0x' + hex.substring( 2, 4 ) );\n\t\t\t\t\tcolor.r = value;\n\t\t\t\t\tcolor.g = value;\n\t\t\t\t\tcolor.b = value;\n\t\t\t\t\tcolor.a = parseInt( '0x' + hex.substring( 4, 6 ) );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TEXTURE_TYPE.RGB:\n\t\t\t\t\t// RGB texture: Pixels in a three-component image specify the red component in the first (high) byte, followed by the green and blue components\n\t\t\t\t\tcolor.r = parseInt( '0x' + hex.substring( 2, 4 ) );\n\t\t\t\t\tcolor.g = parseInt( '0x' + hex.substring( 4, 6 ) );\n\t\t\t\t\tcolor.b = parseInt( '0x' + hex.substring( 6, 8 ) );\n\t\t\t\t\tcolor.a = 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TEXTURE_TYPE.RGBA:\n\t\t\t\t\t// RGBA texture: Four-component images specify the alpha opacity byte after red/green/blue\n\t\t\t\t\tcolor.r = parseInt( '0x' + hex.substring( 2, 4 ) );\n\t\t\t\t\tcolor.g = parseInt( '0x' + hex.substring( 4, 6 ) );\n\t\t\t\t\tcolor.b = parseInt( '0x' + hex.substring( 6, 8 ) );\n\t\t\t\t\tcolor.a = parseInt( '0x' + hex.substring( 8, 10 ) );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getTextureType( num_components ) {\n\n\t\t\tlet type;\n\n\t\t\tswitch ( num_components ) {\n\n\t\t\t\tcase 1:\n\t\t\t\t\ttype = TEXTURE_TYPE.INTENSITY;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\t\t\t\t\ttype = TEXTURE_TYPE.INTENSITY_ALPHA;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 3:\n\t\t\t\t\ttype = TEXTURE_TYPE.RGB;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 4:\n\t\t\t\t\ttype = TEXTURE_TYPE.RGBA;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t}\n\n\t\t\treturn type;\n\n\t\t}\n\n\t\tfunction buildPixelTextureNode( node ) {\n\n\t\t\tlet texture;\n\t\t\tlet wrapS = RepeatWrapping;\n\t\t\tlet wrapT = RepeatWrapping;\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'image':\n\t\t\t\t\t\tconst width = fieldValues[ 0 ];\n\t\t\t\t\t\tconst height = fieldValues[ 1 ];\n\t\t\t\t\t\tconst num_components = fieldValues[ 2 ];\n\n\t\t\t\t\t\tconst textureType = getTextureType( num_components );\n\n\t\t\t\t\t\tconst data = new Uint8Array( 4 * width * height );\n\n\t\t\t\t\t\tconst color = { r: 0, g: 0, b: 0, a: 0 };\n\n\t\t\t\t\t\tfor ( let j = 3, k = 0, jl = fieldValues.length; j < jl; j ++, k ++ ) {\n\n\t\t\t\t\t\t\tparseHexColor( fieldValues[ j ], textureType, color );\n\n\t\t\t\t\t\t\tconst stride = k * 4;\n\n\t\t\t\t\t\t\tdata[ stride + 0 ] = color.r;\n\t\t\t\t\t\t\tdata[ stride + 1 ] = color.g;\n\t\t\t\t\t\t\tdata[ stride + 2 ] = color.b;\n\t\t\t\t\t\t\tdata[ stride + 3 ] = color.a;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttexture = new DataTexture( data, width, height );\n\t\t\t\t\t\ttexture.colorSpace = SRGBColorSpace;\n\t\t\t\t\t\ttexture.needsUpdate = true;\n\t\t\t\t\t\ttexture.__type = textureType; // needed for material modifications\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'repeatS':\n\t\t\t\t\t\tif ( fieldValues[ 0 ] === false ) wrapS = ClampToEdgeWrapping;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'repeatT':\n\t\t\t\t\t\tif ( fieldValues[ 0 ] === false ) wrapT = ClampToEdgeWrapping;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture ) {\n\n\t\t\t\ttexture.wrapS = wrapS;\n\t\t\t\ttexture.wrapT = wrapT;\n\n\t\t\t}\n\n\t\t\treturn texture;\n\n\t\t}\n\n\t\tfunction buildImageTextureNode( node ) {\n\n\t\t\tlet texture;\n\t\t\tlet wrapS = RepeatWrapping;\n\t\t\tlet wrapT = RepeatWrapping;\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'url':\n\t\t\t\t\t\tconst url = fieldValues[ 0 ];\n\t\t\t\t\t\tif ( url ) texture = textureLoader.load( url );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'repeatS':\n\t\t\t\t\t\tif ( fieldValues[ 0 ] === false ) wrapS = ClampToEdgeWrapping;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'repeatT':\n\t\t\t\t\t\tif ( fieldValues[ 0 ] === false ) wrapT = ClampToEdgeWrapping;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture ) {\n\n\t\t\t\ttexture.wrapS = wrapS;\n\t\t\t\ttexture.wrapT = wrapT;\n\t\t\t\ttexture.colorSpace = SRGBColorSpace;\n\n\t\t\t}\n\n\t\t\treturn texture;\n\n\t\t}\n\n\t\tfunction buildTextureTransformNode( node ) {\n\n\t\t\tconst transformData = {\n\t\t\t\tcenter: new Vector2(),\n\t\t\t\trotation: new Vector2(),\n\t\t\t\tscale: new Vector2(),\n\t\t\t\ttranslation: new Vector2()\n\t\t\t};\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'center':\n\t\t\t\t\t\ttransformData.center.set( fieldValues[ 0 ], fieldValues[ 1 ] );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rotation':\n\t\t\t\t\t\ttransformData.rotation = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\ttransformData.scale.set( fieldValues[ 0 ], fieldValues[ 1 ] );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'translation':\n\t\t\t\t\t\ttransformData.translation.set( fieldValues[ 0 ], fieldValues[ 1 ] );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn transformData;\n\n\t\t}\n\n\t\tfunction buildGeometricNode( node ) {\n\n\t\t\treturn node.fields[ 0 ].values;\n\n\t\t}\n\n\t\tfunction buildWorldInfoNode( node ) {\n\n\t\t\tconst worldInfo = {};\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'title':\n\t\t\t\t\t\tworldInfo.title = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'info':\n\t\t\t\t\t\tworldInfo.info = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn worldInfo;\n\n\t\t}\n\n\t\tfunction buildIndexedFaceSetNode( node ) {\n\n\t\t\tlet color, coord, normal, texCoord;\n\t\t\tlet ccw = true, solid = true, creaseAngle = 0;\n\t\t\tlet colorIndex, coordIndex, normalIndex, texCoordIndex;\n\t\t\tlet colorPerVertex = true, normalPerVertex = true;\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tconst colorNode = fieldValues[ 0 ];\n\n\t\t\t\t\t\tif ( colorNode !== null ) {\n\n\t\t\t\t\t\t\tcolor = getNode( colorNode );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'coord':\n\t\t\t\t\t\tconst coordNode = fieldValues[ 0 ];\n\n\t\t\t\t\t\tif ( coordNode !== null ) {\n\n\t\t\t\t\t\t\tcoord = getNode( coordNode );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'normal':\n\t\t\t\t\t\tconst normalNode = fieldValues[ 0 ];\n\n\t\t\t\t\t\tif ( normalNode !== null ) {\n\n\t\t\t\t\t\t\tnormal = getNode( normalNode );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'texCoord':\n\t\t\t\t\t\tconst texCoordNode = fieldValues[ 0 ];\n\n\t\t\t\t\t\tif ( texCoordNode !== null ) {\n\n\t\t\t\t\t\t\ttexCoord = getNode( texCoordNode );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ccw':\n\t\t\t\t\t\tccw = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'colorIndex':\n\t\t\t\t\t\tcolorIndex = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'colorPerVertex':\n\t\t\t\t\t\tcolorPerVertex = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'convex':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'coordIndex':\n\t\t\t\t\t\tcoordIndex = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'creaseAngle':\n\t\t\t\t\t\tcreaseAngle = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'normalIndex':\n\t\t\t\t\t\tnormalIndex = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'normalPerVertex':\n\t\t\t\t\t\tnormalPerVertex = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'solid':\n\t\t\t\t\t\tsolid = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'texCoordIndex':\n\t\t\t\t\t\ttexCoordIndex = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( coordIndex === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Missing coordIndex.' );\n\n\t\t\t\treturn new BufferGeometry(); // handle VRML files with incomplete geometry definition\n\n\t\t\t}\n\n\t\t\tconst triangulatedCoordIndex = triangulateFaceIndex( coordIndex, ccw );\n\n\t\t\tlet colorAttribute;\n\t\t\tlet normalAttribute;\n\t\t\tlet uvAttribute;\n\n\t\t\tif ( color ) {\n\n\t\t\t\tif ( colorPerVertex === true ) {\n\n\t\t\t\t\tif ( colorIndex && colorIndex.length > 0 ) {\n\n\t\t\t\t\t\t// if the colorIndex field is not empty, then it is used to choose colors for each vertex of the IndexedFaceSet.\n\n\t\t\t\t\t\tconst triangulatedColorIndex = triangulateFaceIndex( colorIndex, ccw );\n\t\t\t\t\t\tcolorAttribute = computeAttributeFromIndexedData( triangulatedCoordIndex, triangulatedColorIndex, color, 3 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// if the colorIndex field is empty, then the coordIndex field is used to choose colors from the Color node\n\n\t\t\t\t\t\tcolorAttribute = toNonIndexedAttribute( triangulatedCoordIndex, new Float32BufferAttribute( color, 3 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( colorIndex && colorIndex.length > 0 ) {\n\n\t\t\t\t\t\t// if the colorIndex field is not empty, then they are used to choose one color for each face of the IndexedFaceSet\n\n\t\t\t\t\t\tconst flattenFaceColors = flattenData( color, colorIndex );\n\t\t\t\t\t\tconst triangulatedFaceColors = triangulateFaceData( flattenFaceColors, coordIndex );\n\t\t\t\t\t\tcolorAttribute = computeAttributeFromFaceData( triangulatedCoordIndex, triangulatedFaceColors );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// if the colorIndex field is empty, then the color are applied to each face of the IndexedFaceSet in order\n\n\t\t\t\t\t\tconst triangulatedFaceColors = triangulateFaceData( color, coordIndex );\n\t\t\t\t\t\tcolorAttribute = computeAttributeFromFaceData( triangulatedCoordIndex, triangulatedFaceColors );\n\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconvertColorsToLinearSRGB( colorAttribute );\n\n\t\t\t}\n\n\t\t\tif ( normal ) {\n\n\t\t\t\tif ( normalPerVertex === true ) {\n\n\t\t\t\t\t// consider vertex normals\n\n\t\t\t\t\tif ( normalIndex && normalIndex.length > 0 ) {\n\n\t\t\t\t\t\t// if the normalIndex field is not empty, then it is used to choose normals for each vertex of the IndexedFaceSet.\n\n\t\t\t\t\t\tconst triangulatedNormalIndex = triangulateFaceIndex( normalIndex, ccw );\n\t\t\t\t\t\tnormalAttribute = computeAttributeFromIndexedData( triangulatedCoordIndex, triangulatedNormalIndex, normal, 3 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// if the normalIndex field is empty, then the coordIndex field is used to choose normals from the Normal node\n\n\t\t\t\t\t\tnormalAttribute = toNonIndexedAttribute( triangulatedCoordIndex, new Float32BufferAttribute( normal, 3 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// consider face normals\n\n\t\t\t\t\tif ( normalIndex && normalIndex.length > 0 ) {\n\n\t\t\t\t\t\t// if the normalIndex field is not empty, then they are used to choose one normal for each face of the IndexedFaceSet\n\n\t\t\t\t\t\tconst flattenFaceNormals = flattenData( normal, normalIndex );\n\t\t\t\t\t\tconst triangulatedFaceNormals = triangulateFaceData( flattenFaceNormals, coordIndex );\n\t\t\t\t\t\tnormalAttribute = computeAttributeFromFaceData( triangulatedCoordIndex, triangulatedFaceNormals );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// if the normalIndex field is empty, then the normals are applied to each face of the IndexedFaceSet in order\n\n\t\t\t\t\t\tconst triangulatedFaceNormals = triangulateFaceData( normal, coordIndex );\n\t\t\t\t\t\tnormalAttribute = computeAttributeFromFaceData( triangulatedCoordIndex, triangulatedFaceNormals );\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// if the normal field is NULL, then the loader should automatically generate normals, using creaseAngle to determine if and how normals are smoothed across shared vertices\n\n\t\t\t\tnormalAttribute = computeNormalAttribute( triangulatedCoordIndex, coord, creaseAngle );\n\n\t\t\t}\n\n\t\t\tif ( texCoord ) {\n\n\t\t\t\t// texture coordinates are always defined on vertex level\n\n\t\t\t\tif ( texCoordIndex && texCoordIndex.length > 0 ) {\n\n\t\t\t\t\t// if the texCoordIndex field is not empty, then it is used to choose texture coordinates for each vertex of the IndexedFaceSet.\n\n\t\t\t\t\tconst triangulatedTexCoordIndex = triangulateFaceIndex( texCoordIndex, ccw );\n\t\t\t\t\tuvAttribute = computeAttributeFromIndexedData( triangulatedCoordIndex, triangulatedTexCoordIndex, texCoord, 2 );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// if the texCoordIndex field is empty, then the coordIndex array is used to choose texture coordinates from the TextureCoordinate node\n\n\t\t\t\t\tuvAttribute = toNonIndexedAttribute( triangulatedCoordIndex, new Float32BufferAttribute( texCoord, 2 ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tconst positionAttribute = toNonIndexedAttribute( triangulatedCoordIndex, new Float32BufferAttribute( coord, 3 ) );\n\n\t\t\tgeometry.setAttribute( 'position', positionAttribute );\n\t\t\tgeometry.setAttribute( 'normal', normalAttribute );\n\n\t\t\t// optional attributes\n\n\t\t\tif ( colorAttribute ) geometry.setAttribute( 'color', colorAttribute );\n\t\t\tif ( uvAttribute ) geometry.setAttribute( 'uv', uvAttribute );\n\n\t\t\t// \"solid\" influences the material so let's store it for later use\n\n\t\t\tgeometry._solid = solid;\n\t\t\tgeometry._type = 'mesh';\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction buildIndexedLineSetNode( node ) {\n\n\t\t\tlet color, coord;\n\t\t\tlet colorIndex, coordIndex;\n\t\t\tlet colorPerVertex = true;\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tconst colorNode = fieldValues[ 0 ];\n\n\t\t\t\t\t\tif ( colorNode !== null ) {\n\n\t\t\t\t\t\t\tcolor = getNode( colorNode );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'coord':\n\t\t\t\t\t\tconst coordNode = fieldValues[ 0 ];\n\n\t\t\t\t\t\tif ( coordNode !== null ) {\n\n\t\t\t\t\t\t\tcoord = getNode( coordNode );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'colorIndex':\n\t\t\t\t\t\tcolorIndex = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'colorPerVertex':\n\t\t\t\t\t\tcolorPerVertex = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'coordIndex':\n\t\t\t\t\t\tcoordIndex = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build lines\n\n\t\t\tlet colorAttribute;\n\n\t\t\tconst expandedLineIndex = expandLineIndex( coordIndex ); // create an index for three.js's linesegment primitive\n\n\t\t\tif ( color ) {\n\n\t\t\t\tif ( colorPerVertex === true ) {\n\n\t\t\t\t\tif ( colorIndex.length > 0 ) {\n\n\t\t\t\t\t\t// if the colorIndex field is not empty, then one color is used for each polyline of the IndexedLineSet.\n\n\t\t\t\t\t\tconst expandedColorIndex = expandLineIndex( colorIndex ); // compute colors for each line segment (rendering primitve)\n\t\t\t\t\t\tcolorAttribute = computeAttributeFromIndexedData( expandedLineIndex, expandedColorIndex, color, 3 ); // compute data on vertex level\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// if the colorIndex field is empty, then the colors are applied to each polyline of the IndexedLineSet in order.\n\n\t\t\t\t\t\tcolorAttribute = toNonIndexedAttribute( expandedLineIndex, new Float32BufferAttribute( color, 3 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( colorIndex.length > 0 ) {\n\n\t\t\t\t\t\t// if the colorIndex field is not empty, then colors are applied to each vertex of the IndexedLineSet\n\n\t\t\t\t\t\tconst flattenLineColors = flattenData( color, colorIndex ); // compute colors for each VRML primitve\n\t\t\t\t\t\tconst expandedLineColors = expandLineData( flattenLineColors, coordIndex ); // compute colors for each line segment (rendering primitve)\n\t\t\t\t\t\tcolorAttribute = computeAttributeFromLineData( expandedLineIndex, expandedLineColors ); // compute data on vertex level\n\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// if the colorIndex field is empty, then the coordIndex field is used to choose colors from the Color node\n\n\t\t\t\t\t\tconst expandedLineColors = expandLineData( color, coordIndex ); // compute colors for each line segment (rendering primitve)\n\t\t\t\t\t\tcolorAttribute = computeAttributeFromLineData( expandedLineIndex, expandedLineColors ); // compute data on vertex level\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconvertColorsToLinearSRGB( colorAttribute );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst geometry = new BufferGeometry();\n\n\t\t\tconst positionAttribute = toNonIndexedAttribute( expandedLineIndex, new Float32BufferAttribute( coord, 3 ) );\n\t\t\tgeometry.setAttribute( 'position', positionAttribute );\n\n\t\t\tif ( colorAttribute ) geometry.setAttribute( 'color', colorAttribute );\n\n\t\t\tgeometry._type = 'line';\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction buildPointSetNode( node ) {\n\n\t\t\tlet color, coord;\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tconst colorNode = fieldValues[ 0 ];\n\n\t\t\t\t\t\tif ( colorNode !== null ) {\n\n\t\t\t\t\t\t\tcolor = getNode( colorNode );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'coord':\n\t\t\t\t\t\tconst coordNode = fieldValues[ 0 ];\n\n\t\t\t\t\t\tif ( coordNode !== null ) {\n\n\t\t\t\t\t\t\tcoord = getNode( coordNode );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst geometry = new BufferGeometry();\n\n\t\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( coord, 3 ) );\n\n\t\t\tif ( color ) {\n\n\t\t\t\tconst colorAttribute = new Float32BufferAttribute( color, 3 );\n\t\t\t\tconvertColorsToLinearSRGB( colorAttribute );\n\n\t\t\t\tgeometry.setAttribute( 'color', colorAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry._type = 'points';\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction buildBoxNode( node ) {\n\n\t\t\tconst size = new Vector3( 2, 2, 2 );\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'size':\n\t\t\t\t\t\tsize.x = fieldValues[ 0 ];\n\t\t\t\t\t\tsize.y = fieldValues[ 1 ];\n\t\t\t\t\t\tsize.z = fieldValues[ 2 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst geometry = new BoxGeometry( size.x, size.y, size.z );\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction buildConeNode( node ) {\n\n\t\t\tlet radius = 1, height = 2, openEnded = false;\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\topenEnded = ! fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'bottomRadius':\n\t\t\t\t\t\tradius = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'height':\n\t\t\t\t\t\theight = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'side':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst geometry = new ConeGeometry( radius, height, 16, 1, openEnded );\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction buildCylinderNode( node ) {\n\n\t\t\tlet radius = 1, height = 2;\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'radius':\n\t\t\t\t\t\tradius = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'height':\n\t\t\t\t\t\theight = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'side':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'top':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst geometry = new CylinderGeometry( radius, radius, height, 16, 1 );\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction buildSphereNode( node ) {\n\n\t\t\tlet radius = 1;\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'radius':\n\t\t\t\t\t\tradius = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst geometry = new SphereGeometry( radius, 16, 16 );\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction buildElevationGridNode( node ) {\n\n\t\t\tlet color;\n\t\t\tlet normal;\n\t\t\tlet texCoord;\n\t\t\tlet height;\n\n\t\t\tlet colorPerVertex = true;\n\t\t\tlet normalPerVertex = true;\n\t\t\tlet solid = true;\n\t\t\tlet ccw = true;\n\t\t\tlet creaseAngle = 0;\n\t\t\tlet xDimension = 2;\n\t\t\tlet zDimension = 2;\n\t\t\tlet xSpacing = 1;\n\t\t\tlet zSpacing = 1;\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tconst colorNode = fieldValues[ 0 ];\n\n\t\t\t\t\t\tif ( colorNode !== null ) {\n\n\t\t\t\t\t\t\tcolor = getNode( colorNode );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'normal':\n\t\t\t\t\t\tconst normalNode = fieldValues[ 0 ];\n\n\t\t\t\t\t\tif ( normalNode !== null ) {\n\n\t\t\t\t\t\t\tnormal = getNode( normalNode );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'texCoord':\n\t\t\t\t\t\tconst texCoordNode = fieldValues[ 0 ];\n\n\t\t\t\t\t\tif ( texCoordNode !== null ) {\n\n\t\t\t\t\t\t\ttexCoord = getNode( texCoordNode );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'height':\n\t\t\t\t\t\theight = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ccw':\n\t\t\t\t\t\tccw = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'colorPerVertex':\n\t\t\t\t\t\tcolorPerVertex = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'creaseAngle':\n\t\t\t\t\t\tcreaseAngle = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'normalPerVertex':\n\t\t\t\t\t\tnormalPerVertex = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'solid':\n\t\t\t\t\t\tsolid = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'xDimension':\n\t\t\t\t\t\txDimension = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'xSpacing':\n\t\t\t\t\t\txSpacing = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'zDimension':\n\t\t\t\t\t\tzDimension = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'zSpacing':\n\t\t\t\t\t\tzSpacing = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// vertex data\n\n\t\t\tconst vertices = [];\n\t\t\tconst normals = [];\n\t\t\tconst colors = [];\n\t\t\tconst uvs = [];\n\n\t\t\tfor ( let i = 0; i < zDimension; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < xDimension; j ++ ) {\n\n\t\t\t\t\t// compute a row major index\n\n\t\t\t\t\tconst index = ( i * xDimension ) + j;\n\n\t\t\t\t\t// vertices\n\n\t\t\t\t\tconst x = xSpacing * i;\n\t\t\t\t\tconst y = height[ index ];\n\t\t\t\t\tconst z = zSpacing * j;\n\n\t\t\t\t\tvertices.push( x, y, z );\n\n\t\t\t\t\t// colors\n\n\t\t\t\t\tif ( color && colorPerVertex === true ) {\n\n\t\t\t\t\t\tconst r = color[ index * 3 + 0 ];\n\t\t\t\t\t\tconst g = color[ index * 3 + 1 ];\n\t\t\t\t\t\tconst b = color[ index * 3 + 2 ];\n\n\t\t\t\t\t\tcolors.push( r, g, b );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// normals\n\n\t\t\t\t\tif ( normal && normalPerVertex === true ) {\n\n\t\t\t\t\t\tconst xn = normal[ index * 3 + 0 ];\n\t\t\t\t\t\tconst yn = normal[ index * 3 + 1 ];\n\t\t\t\t\t\tconst zn = normal[ index * 3 + 2 ];\n\n\t\t\t\t\t\tnormals.push( xn, yn, zn );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tif ( texCoord ) {\n\n\t\t\t\t\t\tconst s = texCoord[ index * 2 + 0 ];\n\t\t\t\t\t\tconst t = texCoord[ index * 2 + 1 ];\n\n\t\t\t\t\t\tuvs.push( s, t );\n\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuvs.push( i / ( xDimension - 1 ), j / ( zDimension - 1 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\tconst indices = [];\n\n\t\t\tfor ( let i = 0; i < xDimension - 1; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < zDimension - 1; j ++ ) {\n\n\t\t\t\t\t// from https://tecfa.unige.ch/guides/vrml/vrml97/spec/part1/nodesRef.html#ElevationGrid\n\n\t\t\t\t\tconst a = i + j * xDimension;\n\t\t\t\t\tconst b = i + ( j + 1 ) * xDimension;\n\t\t\t\t\tconst c = ( i + 1 ) + ( j + 1 ) * xDimension;\n\t\t\t\t\tconst d = ( i + 1 ) + j * xDimension;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tif ( ccw === true ) {\n\n\t\t\t\t\t\tindices.push( a, c, b );\n\t\t\t\t\t\tindices.push( c, a, d );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tindices.push( a, b, c );\n\t\t\t\t\t\tindices.push( c, d, a );\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 positionAttribute = toNonIndexedAttribute( indices, new Float32BufferAttribute( vertices, 3 ) );\n\t\t\tconst uvAttribute = toNonIndexedAttribute( indices, new Float32BufferAttribute( uvs, 2 ) );\n\t\t\tlet colorAttribute;\n\t\t\tlet normalAttribute;\n\n\t\t\t// color attribute\n\n\t\t\tif ( color ) {\n\n\t\t\t\tif ( colorPerVertex === false ) {\n\n\t\t\t\t\tfor ( let i = 0; i < xDimension - 1; i ++ ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < zDimension - 1; j ++ ) {\n\n\t\t\t\t\t\t\tconst index = i + j * ( xDimension - 1 );\n\n\t\t\t\t\t\t\tconst r = color[ index * 3 + 0 ];\n\t\t\t\t\t\t\tconst g = color[ index * 3 + 1 ];\n\t\t\t\t\t\t\tconst b = color[ index * 3 + 2 ];\n\n\t\t\t\t\t\t\t// one color per quad\n\n\t\t\t\t\t\t\tcolors.push( r, g, b ); colors.push( r, g, b ); colors.push( r, g, b );\n\t\t\t\t\t\t\tcolors.push( r, g, b ); colors.push( r, g, b ); colors.push( r, g, b );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcolorAttribute = new Float32BufferAttribute( colors, 3 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcolorAttribute = toNonIndexedAttribute( indices, new Float32BufferAttribute( colors, 3 ) );\n\n\t\t\t\t}\n\n\t\t\t\tconvertColorsToLinearSRGB( colorAttribute );\n\n\t\t\t}\n\n\t\t\t// normal attribute\n\n\t\t\tif ( normal ) {\n\n\t\t\t\tif ( normalPerVertex === false ) {\n\n\t\t\t\t\tfor ( let i = 0; i < xDimension - 1; i ++ ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < zDimension - 1; j ++ ) {\n\n\t\t\t\t\t\t\tconst index = i + j * ( xDimension - 1 );\n\n\t\t\t\t\t\t\tconst xn = normal[ index * 3 + 0 ];\n\t\t\t\t\t\t\tconst yn = normal[ index * 3 + 1 ];\n\t\t\t\t\t\t\tconst zn = normal[ index * 3 + 2 ];\n\n\t\t\t\t\t\t\t// one normal per quad\n\n\t\t\t\t\t\t\tnormals.push( xn, yn, zn ); normals.push( xn, yn, zn ); normals.push( xn, yn, zn );\n\t\t\t\t\t\t\tnormals.push( xn, yn, zn ); normals.push( xn, yn, zn ); normals.push( xn, yn, zn );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tnormalAttribute = new Float32BufferAttribute( normals, 3 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnormalAttribute = toNonIndexedAttribute( indices, new Float32BufferAttribute( normals, 3 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tnormalAttribute = computeNormalAttribute( indices, vertices, creaseAngle );\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tgeometry.setAttribute( 'position', positionAttribute );\n\t\t\tgeometry.setAttribute( 'normal', normalAttribute );\n\t\t\tgeometry.setAttribute( 'uv', uvAttribute );\n\n\t\t\tif ( colorAttribute ) geometry.setAttribute( 'color', colorAttribute );\n\n\t\t\t// \"solid\" influences the material so let's store it for later use\n\n\t\t\tgeometry._solid = solid;\n\t\t\tgeometry._type = 'mesh';\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction buildExtrusionNode( node ) {\n\n\t\t\tlet crossSection = [ 1, 1, 1, - 1, - 1, - 1, - 1, 1, 1, 1 ];\n\t\t\tlet spine = [ 0, 0, 0, 0, 1, 0 ];\n\t\t\tlet scale;\n\t\t\tlet orientation;\n\n\t\t\tlet beginCap = true;\n\t\t\tlet ccw = true;\n\t\t\tlet creaseAngle = 0;\n\t\t\tlet endCap = true;\n\t\t\tlet solid = true;\n\n\t\t\tconst fields = node.fields;\n\n\t\t\tfor ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n\t\t\t\tconst field = fields[ i ];\n\t\t\t\tconst fieldName = field.name;\n\t\t\t\tconst fieldValues = field.values;\n\n\t\t\t\tswitch ( fieldName ) {\n\n\t\t\t\t\tcase 'beginCap':\n\t\t\t\t\t\tbeginCap = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ccw':\n\t\t\t\t\t\tccw = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'convex':\n\t\t\t\t\t\t// field not supported\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'creaseAngle':\n\t\t\t\t\t\tcreaseAngle = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'crossSection':\n\t\t\t\t\t\tcrossSection = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'endCap':\n\t\t\t\t\t\tendCap = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'orientation':\n\t\t\t\t\t\torientation = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tscale = fieldValues;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'solid':\n\t\t\t\t\t\tsolid = fieldValues[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'spine':\n\t\t\t\t\t\tspine = fieldValues; // only extrusion along the Y-axis are supported so far\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst crossSectionClosed = ( crossSection[ 0 ] === crossSection[ crossSection.length - 2 ] && crossSection[ 1 ] === crossSection[ crossSection.length - 1 ] );\n\n\t\t\t// vertices\n\n\t\t\tconst vertices = [];\n\t\t\tconst spineVector = new Vector3();\n\t\t\tconst scaling = new Vector3();\n\n\t\t\tconst axis = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\t\t\tconst quaternion = new Quaternion();\n\n\t\t\tfor ( let i = 0, j = 0, o = 0, il = spine.length; i < il; i += 3, j += 2, o += 4 ) {\n\n\t\t\t\tspineVector.fromArray( spine, i );\n\n\t\t\t\tscaling.x = scale ? scale[ j + 0 ] : 1;\n\t\t\t\tscaling.y = 1;\n\t\t\t\tscaling.z = scale ? scale[ j + 1 ] : 1;\n\n\t\t\t\taxis.x = orientation ? orientation[ o + 0 ] : 0;\n\t\t\t\taxis.y = orientation ? orientation[ o + 1 ] : 0;\n\t\t\t\taxis.z = orientation ? orientation[ o + 2 ] : 1;\n\t\t\t\tconst angle = orientation ? orientation[ o + 3 ] : 0;\n\n\t\t\t\tfor ( let k = 0, kl = crossSection.length; k < kl; k += 2 ) {\n\n\t\t\t\t\tvertex.x = crossSection[ k + 0 ];\n\t\t\t\t\tvertex.y = 0;\n\t\t\t\t\tvertex.z = crossSection[ k + 1 ];\n\n\t\t\t\t\t// scale\n\n\t\t\t\t\tvertex.multiply( scaling );\n\n\t\t\t\t\t// rotate\n\n\t\t\t\t\tquaternion.setFromAxisAngle( axis, angle );\n\t\t\t\t\tvertex.applyQuaternion( quaternion );\n\n\t\t\t\t\t// translate\n\n\t\t\t\t\tvertex.add( spineVector );\n\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\tconst indices = [];\n\n\t\t\tconst spineCount = spine.length / 3;\n\t\t\tconst crossSectionCount = crossSection.length / 2;\n\n\t\t\tfor ( let i = 0; i < spineCount - 1; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < crossSectionCount - 1; j ++ ) {\n\n\t\t\t\t\tconst a = j + i * crossSectionCount;\n\t\t\t\t\tlet b = ( j + 1 ) + i * crossSectionCount;\n\t\t\t\t\tconst c = j + ( i + 1 ) * crossSectionCount;\n\t\t\t\t\tlet d = ( j + 1 ) + ( i + 1 ) * crossSectionCount;\n\n\t\t\t\t\tif ( ( j === crossSectionCount - 2 ) && ( crossSectionClosed === true ) ) {\n\n\t\t\t\t\t\tb = i * crossSectionCount;\n\t\t\t\t\t\td = ( i + 1 ) * crossSectionCount;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ccw === true ) {\n\n\t\t\t\t\t\tindices.push( a, b, c );\n\t\t\t\t\t\tindices.push( c, b, d );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tindices.push( a, c, b );\n\t\t\t\t\t\tindices.push( c, d, b );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// triangulate cap\n\n\t\t\tif ( beginCap === true || endCap === true ) {\n\n\t\t\t\tconst contour = [];\n\n\t\t\t\tfor ( let i = 0, l = crossSection.length; i < l; i += 2 ) {\n\n\t\t\t\t\tcontour.push( new Vector2( crossSection[ i ], crossSection[ i + 1 ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tconst faces = ShapeUtils.triangulateShape( contour, [] );\n\t\t\t\tconst capIndices = [];\n\n\t\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\t\tcapIndices.push( face[ 0 ], face[ 1 ], face[ 2 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// begin cap\n\n\t\t\t\tif ( beginCap === true ) {\n\n\t\t\t\t\tfor ( let i = 0, l = capIndices.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\tif ( ccw === true ) {\n\n\t\t\t\t\t\t\tindices.push( capIndices[ i + 0 ], capIndices[ i + 1 ], capIndices[ i + 2 ] );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tindices.push( capIndices[ i + 0 ], capIndices[ i + 2 ], capIndices[ i + 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// end cap\n\n\t\t\t\tif ( endCap === true ) {\n\n\t\t\t\t\tconst indexOffset = crossSectionCount * ( spineCount - 1 ); // references to the first vertex of the last cross section\n\n\t\t\t\t\tfor ( let i = 0, l = capIndices.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\tif ( ccw === true ) {\n\n\t\t\t\t\t\t\tindices.push( indexOffset + capIndices[ i + 0 ], indexOffset + capIndices[ i + 2 ], indexOffset + capIndices[ i + 1 ] );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tindices.push( indexOffset + capIndices[ i + 0 ], indexOffset + capIndices[ i + 1 ], indexOffset + capIndices[ i + 2 ] );\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\tconst positionAttribute = toNonIndexedAttribute( indices, new Float32BufferAttribute( vertices, 3 ) );\n\t\t\tconst normalAttribute = computeNormalAttribute( indices, vertices, creaseAngle );\n\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tgeometry.setAttribute( 'position', positionAttribute );\n\t\t\tgeometry.setAttribute( 'normal', normalAttribute );\n\t\t\t// no uvs yet\n\n\t\t\t// \"solid\" influences the material so let's store it for later use\n\n\t\t\tgeometry._solid = solid;\n\t\t\tgeometry._type = 'mesh';\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction resolveUSE( identifier ) {\n\n\t\t\tconst node = nodeMap[ identifier ];\n\t\t\tconst build = getNode( node );\n\n\t\t\t// because the same 3D objects can have different transformations, it's necessary to clone them.\n\t\t\t// materials can be influenced by the geometry (e.g. vertex normals). cloning is necessary to avoid\n\t\t\t// any side effects\n\n\t\t\treturn ( build.isObject3D || build.isMaterial ) ? build.clone() : build;\n\n\t\t}\n\n\t\tfunction parseFieldChildren( children, owner ) {\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst object = getNode( children[ i ] );\n\n\t\t\t\tif ( object instanceof Object3D ) owner.add( object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction triangulateFaceIndex( index, ccw ) {\n\n\t\t\tconst indices = [];\n\n\t\t\t// since face defintions can have more than three vertices, it's necessary to\n\t\t\t// perform a simple triangulation\n\n\t\t\tlet start = 0;\n\n\t\t\tfor ( let i = 0, l = index.length; i < l; i ++ ) {\n\n\t\t\t\tconst i1 = index[ start ];\n\t\t\t\tconst i2 = index[ i + ( ccw ? 1 : 2 ) ];\n\t\t\t\tconst i3 = index[ i + ( ccw ? 2 : 1 ) ];\n\n\t\t\t\tindices.push( i1, i2, i3 );\n\n\t\t\t\t// an index of -1 indicates that the current face has ended and the next one begins\n\n\t\t\t\tif ( index[ i + 3 ] === - 1 || i + 3 >= l ) {\n\n\t\t\t\t\ti += 3;\n\t\t\t\t\tstart = i + 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn indices;\n\n\t\t}\n\n\t\tfunction triangulateFaceData( data, index ) {\n\n\t\t\tconst triangulatedData = [];\n\n\t\t\tlet start = 0;\n\n\t\t\tfor ( let i = 0, l = index.length; i < l; i ++ ) {\n\n\t\t\t\tconst stride = start * 3;\n\n\t\t\t\tconst x = data[ stride ];\n\t\t\t\tconst y = data[ stride + 1 ];\n\t\t\t\tconst z = data[ stride + 2 ];\n\n\t\t\t\ttriangulatedData.push( x, y, z );\n\n\t\t\t\t// an index of -1 indicates that the current face has ended and the next one begins\n\n\t\t\t\tif ( index[ i + 3 ] === - 1 || i + 3 >= l ) {\n\n\t\t\t\t\ti += 3;\n\t\t\t\t\tstart ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn triangulatedData;\n\n\t\t}\n\n\t\tfunction flattenData( data, index ) {\n\n\t\t\tconst flattenData = [];\n\n\t\t\tfor ( let i = 0, l = index.length; i < l; i ++ ) {\n\n\t\t\t\tconst i1 = index[ i ];\n\n\t\t\t\tconst stride = i1 * 3;\n\n\t\t\t\tconst x = data[ stride ];\n\t\t\t\tconst y = data[ stride + 1 ];\n\t\t\t\tconst z = data[ stride + 2 ];\n\n\t\t\t\tflattenData.push( x, y, z );\n\n\t\t\t}\n\n\t\t\treturn flattenData;\n\n\t\t}\n\n\t\tfunction expandLineIndex( index ) {\n\n\t\t\tconst indices = [];\n\n\t\t\tfor ( let i = 0, l = index.length; i < l; i ++ ) {\n\n\t\t\t\tconst i1 = index[ i ];\n\t\t\t\tconst i2 = index[ i + 1 ];\n\n\t\t\t\tindices.push( i1, i2 );\n\n\t\t\t\t// an index of -1 indicates that the current line has ended and the next one begins\n\n\t\t\t\tif ( index[ i + 2 ] === - 1 || i + 2 >= l ) {\n\n\t\t\t\t\ti += 2;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn indices;\n\n\t\t}\n\n\t\tfunction expandLineData( data, index ) {\n\n\t\t\tconst triangulatedData = [];\n\n\t\t\tlet start = 0;\n\n\t\t\tfor ( let i = 0, l = index.length; i < l; i ++ ) {\n\n\t\t\t\tconst stride = start * 3;\n\n\t\t\t\tconst x = data[ stride ];\n\t\t\t\tconst y = data[ stride + 1 ];\n\t\t\t\tconst z = data[ stride + 2 ];\n\n\t\t\t\ttriangulatedData.push( x, y, z );\n\n\t\t\t\t// an index of -1 indicates that the current line has ended and the next one begins\n\n\t\t\t\tif ( index[ i + 2 ] === - 1 || i + 2 >= l ) {\n\n\t\t\t\t\ti += 2;\n\t\t\t\t\tstart ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn triangulatedData;\n\n\t\t}\n\n\t\tconst vA = new Vector3();\n\t\tconst vB = new Vector3();\n\t\tconst vC = new Vector3();\n\n\t\tconst uvA = new Vector2();\n\t\tconst uvB = new Vector2();\n\t\tconst uvC = new Vector2();\n\n\t\tfunction computeAttributeFromIndexedData( coordIndex, index, data, itemSize ) {\n\n\t\t\tconst array = [];\n\n\t\t\t// we use the coordIndex.length as delimiter since normalIndex must contain at least as many indices\n\n\t\t\tfor ( let i = 0, l = coordIndex.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = index[ i ];\n\t\t\t\tconst b = index[ i + 1 ];\n\t\t\t\tconst c = index[ i + 2 ];\n\n\t\t\t\tif ( itemSize === 2 ) {\n\n\t\t\t\t\tuvA.fromArray( data, a * itemSize );\n\t\t\t\t\tuvB.fromArray( data, b * itemSize );\n\t\t\t\t\tuvC.fromArray( data, c * itemSize );\n\n\t\t\t\t\tarray.push( uvA.x, uvA.y );\n\t\t\t\t\tarray.push( uvB.x, uvB.y );\n\t\t\t\t\tarray.push( uvC.x, uvC.y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvA.fromArray( data, a * itemSize );\n\t\t\t\t\tvB.fromArray( data, b * itemSize );\n\t\t\t\t\tvC.fromArray( data, c * itemSize );\n\n\t\t\t\t\tarray.push( vA.x, vA.y, vA.z );\n\t\t\t\t\tarray.push( vB.x, vB.y, vB.z );\n\t\t\t\t\tarray.push( vC.x, vC.y, vC.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Float32BufferAttribute( array, itemSize );\n\n\t\t}\n\n\t\tfunction computeAttributeFromFaceData( index, faceData ) {\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, j = 0, l = index.length; i < l; i += 3, j ++ ) {\n\n\t\t\t\tvA.fromArray( faceData, j * 3 );\n\n\t\t\t\tarray.push( vA.x, vA.y, vA.z );\n\t\t\t\tarray.push( vA.x, vA.y, vA.z );\n\t\t\t\tarray.push( vA.x, vA.y, vA.z );\n\n\t\t\t}\n\n\t\t\treturn new Float32BufferAttribute( array, 3 );\n\n\t\t}\n\n\t\tfunction computeAttributeFromLineData( index, lineData ) {\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, j = 0, l = index.length; i < l; i += 2, j ++ ) {\n\n\t\t\t\tvA.fromArray( lineData, j * 3 );\n\n\t\t\t\tarray.push( vA.x, vA.y, vA.z );\n\t\t\t\tarray.push( vA.x, vA.y, vA.z );\n\n\t\t\t}\n\n\t\t\treturn new Float32BufferAttribute( array, 3 );\n\n\t\t}\n\n\t\tfunction toNonIndexedAttribute( indices, attribute ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Float32BufferAttribute( array2, itemSize );\n\n\t\t}\n\n\t\tconst ab = new Vector3();\n\t\tconst cb = new Vector3();\n\n\t\tfunction computeNormalAttribute( index, coord, creaseAngle ) {\n\n\t\t\tconst faces = [];\n\t\t\tconst vertexNormals = {};\n\n\t\t\t// prepare face and raw vertex normals\n\n\t\t\tfor ( let i = 0, l = index.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = index[ i ];\n\t\t\t\tconst b = index[ i + 1 ];\n\t\t\t\tconst c = index[ i + 2 ];\n\n\t\t\t\tconst face = new Face( a, b, c );\n\n\t\t\t\tvA.fromArray( coord, a * 3 );\n\t\t\t\tvB.fromArray( coord, b * 3 );\n\t\t\t\tvC.fromArray( coord, c * 3 );\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tcb.normalize();\n\n\t\t\t\tface.normal.copy( cb );\n\n\t\t\t\tif ( vertexNormals[ a ] === undefined ) vertexNormals[ a ] = [];\n\t\t\t\tif ( vertexNormals[ b ] === undefined ) vertexNormals[ b ] = [];\n\t\t\t\tif ( vertexNormals[ c ] === undefined ) vertexNormals[ c ] = [];\n\n\t\t\t\tvertexNormals[ a ].push( face.normal );\n\t\t\t\tvertexNormals[ b ].push( face.normal );\n\t\t\t\tvertexNormals[ c ].push( face.normal );\n\n\t\t\t\tfaces.push( face );\n\n\t\t\t}\n\n\t\t\t// compute vertex normals and build final geometry\n\n\t\t\tconst normals = [];\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 nA = weightedNormal( vertexNormals[ face.a ], face.normal, creaseAngle );\n\t\t\t\tconst nB = weightedNormal( vertexNormals[ face.b ], face.normal, creaseAngle );\n\t\t\t\tconst nC = weightedNormal( vertexNormals[ face.c ], face.normal, creaseAngle );\n\n\t\t\t\tvA.fromArray( coord, face.a * 3 );\n\t\t\t\tvB.fromArray( coord, face.b * 3 );\n\t\t\t\tvC.fromArray( coord, face.c * 3 );\n\n\t\t\t\tnormals.push( nA.x, nA.y, nA.z );\n\t\t\t\tnormals.push( nB.x, nB.y, nB.z );\n\t\t\t\tnormals.push( nC.x, nC.y, nC.z );\n\n\t\t\t}\n\n\t\t\treturn new Float32BufferAttribute( normals, 3 );\n\n\t\t}\n\n\t\tfunction weightedNormal( normals, vector, creaseAngle ) {\n\n\t\t\tconst normal = new Vector3();\n\n\t\t\tif ( creaseAngle === 0 ) {\n\n\t\t\t\tnormal.copy( vector );\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = normals.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( normals[ i ].angleTo( vector ) < creaseAngle ) {\n\n\t\t\t\t\t\tnormal.add( normals[ i ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn normal.normalize();\n\n\t\t}\n\n\t\tfunction toColorArray( colors ) {\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, l = colors.length; i < l; i += 3 ) {\n\n\t\t\t\tarray.push( new Color( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] ) );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction convertColorsToLinearSRGB( attribute ) {\n\n\t\t\tconst color = new Color();\n\n\t\t\tfor ( let i = 0; i < attribute.count; i ++ ) {\n\n\t\t\t\tcolor.fromBufferAttribute( attribute, i );\n\t\t\t\tcolor.convertSRGBToLinear();\n\n\t\t\t\tattribute.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t/**\n\t\t * Vertically paints the faces interpolating between the\n\t\t * specified colors at the specified angels. This is used for the Background\n\t\t * node, but could be applied to other nodes with multiple faces as well.\n\t\t *\n\t\t * When used with the Background node, default is directionIsDown is true if\n\t\t * interpolating the skyColor down from the Zenith. When interpolationg up from\n\t\t * the Nadir i.e. interpolating the groundColor, the directionIsDown is false.\n\t\t *\n\t\t * The first angle is never specified, it is the Zenith (0 rad). Angles are specified\n\t\t * in radians. The geometry is thought a sphere, but could be anything. The color interpolation\n\t\t * is linear along the Y axis in any case.\n\t\t *\n\t\t * You must specify one more color than you have angles at the beginning of the colors array.\n\t\t * This is the color of the Zenith (the top of the shape).\n\t\t *\n\t\t * @param {BufferGeometry} geometry\n\t\t * @param {number} radius\n\t\t * @param {array} angles\n\t\t * @param {array} colors\n\t\t * @param {boolean} topDown - Whether to work top down or bottom up.\n\t\t */\n\t\tfunction paintFaces( geometry, radius, angles, colors, topDown ) {\n\n\t\t\t// compute threshold values\n\n\t\t\tconst thresholds = [];\n\t\t\tconst startAngle = ( topDown === true ) ? 0 : Math.PI;\n\n\t\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\t\tlet angle = ( i === 0 ) ? 0 : angles[ i - 1 ];\n\t\t\t\tangle = ( topDown === true ) ? angle : ( startAngle - angle );\n\n\t\t\t\tconst point = new Vector3();\n\t\t\t\tpoint.setFromSphericalCoords( radius, angle, 0 );\n\n\t\t\t\tthresholds.push( point );\n\n\t\t\t}\n\n\t\t\t// generate vertex colors\n\n\t\t\tconst indices = geometry.index;\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst colorAttribute = new BufferAttribute( new Float32Array( geometry.attributes.position.count * 3 ), 3 );\n\n\t\t\tconst position = new Vector3();\n\t\t\tconst color = new Color();\n\n\t\t\tfor ( let i = 0; i < indices.count; i ++ ) {\n\n\t\t\t\tconst index = indices.getX( i );\n\t\t\t\tposition.fromBufferAttribute( positionAttribute, index );\n\n\t\t\t\tlet thresholdIndexA, thresholdIndexB;\n\t\t\t\tlet t = 1;\n\n\t\t\t\tfor ( let j = 1; j < thresholds.length; j ++ ) {\n\n\t\t\t\t\tthresholdIndexA = j - 1;\n\t\t\t\t\tthresholdIndexB = j;\n\n\t\t\t\t\tconst thresholdA = thresholds[ thresholdIndexA ];\n\t\t\t\t\tconst thresholdB = thresholds[ thresholdIndexB ];\n\n\t\t\t\t\tif ( topDown === true ) {\n\n\t\t\t\t\t\t// interpolation for sky color\n\n\t\t\t\t\t\tif ( position.y <= thresholdA.y && position.y > thresholdB.y ) {\n\n\t\t\t\t\t\t\tt = Math.abs( thresholdA.y - position.y ) / Math.abs( thresholdA.y - thresholdB.y );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// interpolation for ground color\n\n\t\t\t\t\t\tif ( position.y >= thresholdA.y && position.y < thresholdB.y ) {\n\n\t\t\t\t\t\t\tt = Math.abs( thresholdA.y - position.y ) / Math.abs( thresholdA.y - thresholdB.y );\n\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}\n\n\t\t\t\tconst colorA = colors[ thresholdIndexA ];\n\t\t\t\tconst colorB = colors[ thresholdIndexB ];\n\n\t\t\t\tcolor.copy( colorA ).lerp( colorB, t ).convertSRGBToLinear();\n\n\t\t\t\tcolorAttribute.setXYZ( index, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'color', colorAttribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst textureLoader = new TextureLoader( this.manager );\n\t\ttextureLoader.setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );\n\n\t\t// check version (only 2.0 is supported)\n\n\t\tif ( data.indexOf( '#VRML V2.0' ) === - 1 ) {\n\n\t\t\tthrow Error( 'THREE.VRMLLexer: Version of VRML asset not supported.' );\n\n\t\t}\n\n\t\t// create JSON representing the tree structure of the VRML asset\n\n\t\tconst tree = generateVRMLTree( data );\n\n\t\t// parse the tree structure to a three.js scene\n\n\t\tconst scene = parseTree( tree );\n\n\t\treturn scene;\n\n\t}\n\n}\n\nclass VRMLLexer {\n\n\tconstructor( tokens ) {\n\n\t\tthis.lexer = new chevrotain.Lexer( tokens );\n\n\t}\n\n\tlex( inputText ) {\n\n\t\tconst lexingResult = this.lexer.tokenize( inputText );\n\n\t\tif ( lexingResult.errors.length > 0 ) {\n\n\t\t\tconsole.error( lexingResult.errors );\n\n\t\t\tthrow Error( 'THREE.VRMLLexer: Lexing errors detected.' );\n\n\t\t}\n\n\t\treturn lexingResult;\n\n\t}\n\n}\n\nconst CstParser = chevrotain.CstParser;\n\nclass VRMLParser extends CstParser {\n\n\tconstructor( tokenVocabulary ) {\n\n\t\tsuper( tokenVocabulary );\n\n\t\tconst $ = this;\n\n\t\tconst Version = tokenVocabulary[ 'Version' ];\n\t\tconst LCurly = tokenVocabulary[ 'LCurly' ];\n\t\tconst RCurly = tokenVocabulary[ 'RCurly' ];\n\t\tconst LSquare = tokenVocabulary[ 'LSquare' ];\n\t\tconst RSquare = tokenVocabulary[ 'RSquare' ];\n\t\tconst Identifier = tokenVocabulary[ 'Identifier' ];\n\t\tconst RouteIdentifier = tokenVocabulary[ 'RouteIdentifier' ];\n\t\tconst StringLiteral = tokenVocabulary[ 'StringLiteral' ];\n\t\tconst HexLiteral = tokenVocabulary[ 'HexLiteral' ];\n\t\tconst NumberLiteral = tokenVocabulary[ 'NumberLiteral' ];\n\t\tconst TrueLiteral = tokenVocabulary[ 'TrueLiteral' ];\n\t\tconst FalseLiteral = tokenVocabulary[ 'FalseLiteral' ];\n\t\tconst NullLiteral = tokenVocabulary[ 'NullLiteral' ];\n\t\tconst DEF = tokenVocabulary[ 'DEF' ];\n\t\tconst USE = tokenVocabulary[ 'USE' ];\n\t\tconst ROUTE = tokenVocabulary[ 'ROUTE' ];\n\t\tconst TO = tokenVocabulary[ 'TO' ];\n\t\tconst NodeName = tokenVocabulary[ 'NodeName' ];\n\n\t\t$.RULE( 'vrml', function () {\n\n\t\t\t$.SUBRULE( $.version );\n\t\t\t$.AT_LEAST_ONE( function () {\n\n\t\t\t\t$.SUBRULE( $.node );\n\n\t\t\t} );\n\t\t\t$.MANY( function () {\n\n\t\t\t\t$.SUBRULE( $.route );\n\n\t\t\t} );\n\n\t\t} );\n\n\t\t$.RULE( 'version', function () {\n\n\t\t\t$.CONSUME( Version );\n\n\t\t} );\n\n\t\t$.RULE( 'node', function () {\n\n\t\t\t$.OPTION( function () {\n\n\t\t\t\t$.SUBRULE( $.def );\n\n\t\t\t} );\n\n\t\t\t$.CONSUME( NodeName );\n\t\t\t$.CONSUME( LCurly );\n\t\t\t$.MANY( function () {\n\n\t\t\t\t$.SUBRULE( $.field );\n\n\t\t\t} );\n\t\t\t$.CONSUME( RCurly );\n\n\t\t} );\n\n\t\t$.RULE( 'field', function () {\n\n\t\t\t$.CONSUME( Identifier );\n\n\t\t\t$.OR2( [\n\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t$.SUBRULE( $.singleFieldValue );\n\n\t\t\t\t} },\n\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t$.SUBRULE( $.multiFieldValue );\n\n\t\t\t\t} }\n\t\t\t] );\n\n\t\t} );\n\n\t\t$.RULE( 'def', function () {\n\n\t\t\t$.CONSUME( DEF );\n\t\t\t$.OR( [\n\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t$.CONSUME( Identifier );\n\n\t\t\t\t} },\n\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t$.CONSUME( NodeName );\n\n\t\t\t\t} }\n\t\t\t] );\n\n\t\t} );\n\n\t\t$.RULE( 'use', function () {\n\n\t\t\t$.CONSUME( USE );\n\t\t\t$.OR( [\n\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t$.CONSUME( Identifier );\n\n\t\t\t\t} },\n\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t$.CONSUME( NodeName );\n\n\t\t\t\t} }\n\t\t\t] );\n\n\t\t} );\n\n\t\t$.RULE( 'singleFieldValue', function () {\n\n\t\t\t$.AT_LEAST_ONE( function () {\n\n\t\t\t\t$.OR( [\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.SUBRULE( $.node );\n\n\t\t\t\t\t} },\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.SUBRULE( $.use );\n\n\t\t\t\t\t} },\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.CONSUME( StringLiteral );\n\n\t\t\t\t\t} },\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.CONSUME( HexLiteral );\n\n\t\t\t\t\t} },\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.CONSUME( NumberLiteral );\n\n\t\t\t\t\t} },\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.CONSUME( TrueLiteral );\n\n\t\t\t\t\t} },\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.CONSUME( FalseLiteral );\n\n\t\t\t\t\t} },\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.CONSUME( NullLiteral );\n\n\t\t\t\t\t} }\n\t\t\t\t] );\n\n\n\t\t\t} );\n\n\t\t} );\n\n\t\t$.RULE( 'multiFieldValue', function () {\n\n\t\t\t$.CONSUME( LSquare );\n\t\t\t$.MANY( function () {\n\n\t\t\t\t$.OR( [\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.SUBRULE( $.node );\n\n\t\t\t\t\t} },\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.SUBRULE( $.use );\n\n\t\t\t\t\t} },\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.CONSUME( StringLiteral );\n\n\t\t\t\t\t} },\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.CONSUME( HexLiteral );\n\n\t\t\t\t\t} },\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.CONSUME( NumberLiteral );\n\n\t\t\t\t\t} },\n\t\t\t\t\t{ ALT: function () {\n\n\t\t\t\t\t\t$.CONSUME( NullLiteral );\n\n\t\t\t\t\t} }\n\t\t\t\t] );\n\n\t\t\t} );\n\t\t\t$.CONSUME( RSquare );\n\n\t\t} );\n\n\t\t$.RULE( 'route', function () {\n\n\t\t\t$.CONSUME( ROUTE );\n\t\t\t$.CONSUME( RouteIdentifier );\n\t\t\t$.CONSUME( TO );\n\t\t\t$.CONSUME2( RouteIdentifier );\n\n\t\t} );\n\n\t\tthis.performSelfAnalysis();\n\n\t}\n\n}\n\nclass Face {\n\n\tconstructor( a, b, c ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\t\tthis.normal = new Vector3();\n\n\t}\n\n}\n\nconst TEXTURE_TYPE = {\n\tINTENSITY: 1,\n\tINTENSITY_ALPHA: 2,\n\tRGB: 3,\n\tRGBA: 4\n};\n\nexport { VRMLLoader };\n", "import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tColor,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tLoader\n} from 'three';\nimport * as fflate from '../libs/fflate.module.js';\n\nclass VTKLoader 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.setResponseType( 'arraybuffer' );\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( 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( data ) {\n\n\t\tfunction parseASCII( data ) {\n\n\t\t\t// connectivity of the triangles\n\t\t\tconst indices = [];\n\n\t\t\t// triangles vertices\n\t\t\tconst positions = [];\n\n\t\t\t// red, green, blue colors in the range 0 to 1\n\t\t\tconst colors = [];\n\n\t\t\t// normal vector, one per vertex\n\t\t\tconst normals = [];\n\n\t\t\tlet result;\n\n\t\t\t// pattern for detecting the end of a number sequence\n\t\t\tconst patWord = /^[^\\d.\\s-]+/;\n\n\t\t\t// pattern for reading vertices, 3 floats or integers\n\t\t\tconst pat3Floats = /(\\-?\\d+\\.?[\\d\\-\\+e]*)\\s+(\\-?\\d+\\.?[\\d\\-\\+e]*)\\s+(\\-?\\d+\\.?[\\d\\-\\+e]*)/g;\n\n\t\t\t// pattern for connectivity, an integer followed by any number of ints\n\t\t\t// the first integer is the number of polygon nodes\n\t\t\tconst patConnectivity = /^(\\d+)\\s+([\\s\\d]*)/;\n\n\t\t\t// indicates start of vertex data section\n\t\t\tconst patPOINTS = /^POINTS /;\n\n\t\t\t// indicates start of polygon connectivity section\n\t\t\tconst patPOLYGONS = /^POLYGONS /;\n\n\t\t\t// indicates start of triangle strips section\n\t\t\tconst patTRIANGLE_STRIPS = /^TRIANGLE_STRIPS /;\n\n\t\t\t// POINT_DATA number_of_values\n\t\t\tconst patPOINT_DATA = /^POINT_DATA[ ]+(\\d+)/;\n\n\t\t\t// CELL_DATA number_of_polys\n\t\t\tconst patCELL_DATA = /^CELL_DATA[ ]+(\\d+)/;\n\n\t\t\t// Start of color section\n\t\t\tconst patCOLOR_SCALARS = /^COLOR_SCALARS[ ]+(\\w+)[ ]+3/;\n\n\t\t\t// NORMALS Normals float\n\t\t\tconst patNORMALS = /^NORMALS[ ]+(\\w+)[ ]+(\\w+)/;\n\n\t\t\tlet inPointsSection = false;\n\t\t\tlet inPolygonsSection = false;\n\t\t\tlet inTriangleStripSection = false;\n\t\t\tlet inPointDataSection = false;\n\t\t\tlet inCellDataSection = false;\n\t\t\tlet inColorSection = false;\n\t\t\tlet inNormalsSection = false;\n\n\t\t\tconst color = new Color();\n\n\t\t\tconst lines = data.split( '\\n' );\n\n\t\t\tfor ( const i in lines ) {\n\n\t\t\t\tconst line = lines[ i ].trim();\n\n\t\t\t\tif ( line.indexOf( 'DATASET' ) === 0 ) {\n\n\t\t\t\t\tconst dataset = line.split( ' ' )[ 1 ];\n\n\t\t\t\t\tif ( dataset !== 'POLYDATA' ) throw new Error( 'Unsupported DATASET type: ' + dataset );\n\n\t\t\t\t} else if ( inPointsSection ) {\n\n\t\t\t\t\t// get the vertices\n\t\t\t\t\twhile ( ( result = pat3Floats.exec( line ) ) !== null ) {\n\n\t\t\t\t\t\tif ( patWord.exec( line ) !== null ) break;\n\n\t\t\t\t\t\tconst x = parseFloat( result[ 1 ] );\n\t\t\t\t\t\tconst y = parseFloat( result[ 2 ] );\n\t\t\t\t\t\tconst z = parseFloat( result[ 3 ] );\n\t\t\t\t\t\tpositions.push( x, y, z );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( inPolygonsSection ) {\n\n\t\t\t\t\tif ( ( result = patConnectivity.exec( line ) ) !== null ) {\n\n\t\t\t\t\t\t// numVertices i0 i1 i2 ...\n\t\t\t\t\t\tconst numVertices = parseInt( result[ 1 ] );\n\t\t\t\t\t\tconst inds = result[ 2 ].split( /\\s+/ );\n\n\t\t\t\t\t\tif ( numVertices >= 3 ) {\n\n\t\t\t\t\t\t\tconst i0 = parseInt( inds[ 0 ] );\n\t\t\t\t\t\t\tlet k = 1;\n\t\t\t\t\t\t\t// split the polygon in numVertices - 2 triangles\n\t\t\t\t\t\t\tfor ( let j = 0; j < numVertices - 2; ++ j ) {\n\n\t\t\t\t\t\t\t\tconst i1 = parseInt( inds[ k ] );\n\t\t\t\t\t\t\t\tconst i2 = parseInt( inds[ k + 1 ] );\n\t\t\t\t\t\t\t\tindices.push( i0, i1, i2 );\n\t\t\t\t\t\t\t\tk ++;\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 if ( inTriangleStripSection ) {\n\n\t\t\t\t\tif ( ( result = patConnectivity.exec( line ) ) !== null ) {\n\n\t\t\t\t\t\t// numVertices i0 i1 i2 ...\n\t\t\t\t\t\tconst numVertices = parseInt( result[ 1 ] );\n\t\t\t\t\t\tconst inds = result[ 2 ].split( /\\s+/ );\n\n\t\t\t\t\t\tif ( numVertices >= 3 ) {\n\n\t\t\t\t\t\t\t// split the polygon in numVertices - 2 triangles\n\t\t\t\t\t\t\tfor ( let j = 0; j < numVertices - 2; j ++ ) {\n\n\t\t\t\t\t\t\t\tif ( j % 2 === 1 ) {\n\n\t\t\t\t\t\t\t\t\tconst i0 = parseInt( inds[ j ] );\n\t\t\t\t\t\t\t\t\tconst i1 = parseInt( inds[ j + 2 ] );\n\t\t\t\t\t\t\t\t\tconst i2 = parseInt( inds[ j + 1 ] );\n\t\t\t\t\t\t\t\t\tindices.push( i0, i1, i2 );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tconst i0 = parseInt( inds[ j ] );\n\t\t\t\t\t\t\t\t\tconst i1 = parseInt( inds[ j + 1 ] );\n\t\t\t\t\t\t\t\t\tconst i2 = parseInt( inds[ j + 2 ] );\n\t\t\t\t\t\t\t\t\tindices.push( i0, i1, i2 );\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} else if ( inPointDataSection || inCellDataSection ) {\n\n\t\t\t\t\tif ( inColorSection ) {\n\n\t\t\t\t\t\t// Get the colors\n\n\t\t\t\t\t\twhile ( ( result = pat3Floats.exec( line ) ) !== null ) {\n\n\t\t\t\t\t\t\tif ( patWord.exec( line ) !== null ) break;\n\n\t\t\t\t\t\t\tconst r = parseFloat( result[ 1 ] );\n\t\t\t\t\t\t\tconst g = parseFloat( result[ 2 ] );\n\t\t\t\t\t\t\tconst b = parseFloat( result[ 3 ] );\n\n\t\t\t\t\t\t\tcolor.set( r, g, b ).convertSRGBToLinear();\n\n\t\t\t\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inNormalsSection ) {\n\n\t\t\t\t\t\t// Get the normal vectors\n\n\t\t\t\t\t\twhile ( ( result = pat3Floats.exec( line ) ) !== null ) {\n\n\t\t\t\t\t\t\tif ( patWord.exec( line ) !== null ) break;\n\n\t\t\t\t\t\t\tconst nx = parseFloat( result[ 1 ] );\n\t\t\t\t\t\t\tconst ny = parseFloat( result[ 2 ] );\n\t\t\t\t\t\t\tconst nz = parseFloat( result[ 3 ] );\n\t\t\t\t\t\t\tnormals.push( nx, ny, nz );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( patPOLYGONS.exec( line ) !== null ) {\n\n\t\t\t\t\tinPolygonsSection = true;\n\t\t\t\t\tinPointsSection = false;\n\t\t\t\t\tinTriangleStripSection = false;\n\n\t\t\t\t} else if ( patPOINTS.exec( line ) !== null ) {\n\n\t\t\t\t\tinPolygonsSection = false;\n\t\t\t\t\tinPointsSection = true;\n\t\t\t\t\tinTriangleStripSection = false;\n\n\t\t\t\t} else if ( patTRIANGLE_STRIPS.exec( line ) !== null ) {\n\n\t\t\t\t\tinPolygonsSection = false;\n\t\t\t\t\tinPointsSection = false;\n\t\t\t\t\tinTriangleStripSection = true;\n\n\t\t\t\t} else if ( patPOINT_DATA.exec( line ) !== null ) {\n\n\t\t\t\t\tinPointDataSection = true;\n\t\t\t\t\tinPointsSection = false;\n\t\t\t\t\tinPolygonsSection = false;\n\t\t\t\t\tinTriangleStripSection = false;\n\n\t\t\t\t} else if ( patCELL_DATA.exec( line ) !== null ) {\n\n\t\t\t\t\tinCellDataSection = true;\n\t\t\t\t\tinPointsSection = false;\n\t\t\t\t\tinPolygonsSection = false;\n\t\t\t\t\tinTriangleStripSection = false;\n\n\t\t\t\t} else if ( patCOLOR_SCALARS.exec( line ) !== null ) {\n\n\t\t\t\t\tinColorSection = true;\n\t\t\t\t\tinNormalsSection = false;\n\t\t\t\t\tinPointsSection = false;\n\t\t\t\t\tinPolygonsSection = false;\n\t\t\t\t\tinTriangleStripSection = false;\n\n\t\t\t\t} else if ( patNORMALS.exec( line ) !== null ) {\n\n\t\t\t\t\tinNormalsSection = true;\n\t\t\t\t\tinColorSection = false;\n\t\t\t\t\tinPointsSection = false;\n\t\t\t\t\tinPolygonsSection = false;\n\t\t\t\t\tinTriangleStripSection = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlet geometry = new BufferGeometry();\n\t\t\tgeometry.setIndex( indices );\n\t\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\t\tif ( normals.length === positions.length ) {\n\n\t\t\t\tgeometry.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t\t\t}\n\n\t\t\tif ( colors.length !== indices.length ) {\n\n\t\t\t\t// stagger\n\n\t\t\t\tif ( colors.length === positions.length ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// cell\n\n\t\t\t\tgeometry = geometry.toNonIndexed();\n\t\t\t\tconst numTriangles = geometry.attributes.position.count / 3;\n\n\t\t\t\tif ( colors.length === ( numTriangles * 3 ) ) {\n\n\t\t\t\t\tconst newColors = [];\n\n\t\t\t\t\tfor ( let i = 0; i < numTriangles; i ++ ) {\n\n\t\t\t\t\t\tconst r = colors[ 3 * i + 0 ];\n\t\t\t\t\t\tconst g = colors[ 3 * i + 1 ];\n\t\t\t\t\t\tconst b = colors[ 3 * i + 2 ];\n\n\t\t\t\t\t\tcolor.set( r, g, b ).convertSRGBToLinear();\n\n\t\t\t\t\t\tnewColors.push( color.r, color.g, color.b );\n\t\t\t\t\t\tnewColors.push( color.r, color.g, color.b );\n\t\t\t\t\t\tnewColors.push( color.r, color.g, color.b );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( newColors, 3 ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction parseBinary( data ) {\n\n\t\t\tconst buffer = new Uint8Array( data );\n\t\t\tconst dataView = new DataView( data );\n\n\t\t\t// Points and normals, by default, are empty\n\t\t\tlet points = [];\n\t\t\tlet normals = [];\n\t\t\tlet indices = [];\n\n\t\t\tlet index = 0;\n\n\t\t\tfunction findString( buffer, start ) {\n\n\t\t\t\tlet index = start;\n\t\t\t\tlet c = buffer[ index ];\n\t\t\t\tconst s = [];\n\t\t\t\twhile ( c !== 10 ) {\n\n\t\t\t\t\ts.push( String.fromCharCode( c ) );\n\t\t\t\t\tindex ++;\n\t\t\t\t\tc = buffer[ index ];\n\n\t\t\t\t}\n\n\t\t\t\treturn { start: start,\n\t\t\t\t\tend: index,\n\t\t\t\t\tnext: index + 1,\n\t\t\t\t\tparsedString: s.join( '' ) };\n\n\t\t\t}\n\n\t\t\tlet state, line;\n\n\t\t\twhile ( true ) {\n\n\t\t\t\t// Get a string\n\t\t\t\tstate = findString( buffer, index );\n\t\t\t\tline = state.parsedString;\n\n\t\t\t\tif ( line.indexOf( 'DATASET' ) === 0 ) {\n\n\t\t\t\t\tconst dataset = line.split( ' ' )[ 1 ];\n\n\t\t\t\t\tif ( dataset !== 'POLYDATA' ) throw new Error( 'Unsupported DATASET type: ' + dataset );\n\n\t\t\t\t} else if ( line.indexOf( 'POINTS' ) === 0 ) {\n\n\t\t\t\t\t// Add the points\n\t\t\t\t\tconst numberOfPoints = parseInt( line.split( ' ' )[ 1 ], 10 );\n\n\t\t\t\t\t// Each point is 3 4-byte floats\n\t\t\t\t\tconst count = numberOfPoints * 4 * 3;\n\n\t\t\t\t\tpoints = new Float32Array( numberOfPoints * 3 );\n\n\t\t\t\t\tlet pointIndex = state.next;\n\t\t\t\t\tfor ( let i = 0; i < numberOfPoints; i ++ ) {\n\n\t\t\t\t\t\tpoints[ 3 * i ] = dataView.getFloat32( pointIndex, false );\n\t\t\t\t\t\tpoints[ 3 * i + 1 ] = dataView.getFloat32( pointIndex + 4, false );\n\t\t\t\t\t\tpoints[ 3 * i + 2 ] = dataView.getFloat32( pointIndex + 8, false );\n\t\t\t\t\t\tpointIndex = pointIndex + 12;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// increment our next pointer\n\t\t\t\t\tstate.next = state.next + count + 1;\n\n\t\t\t\t} else if ( line.indexOf( 'TRIANGLE_STRIPS' ) === 0 ) {\n\n\t\t\t\t\tconst numberOfStrips = parseInt( line.split( ' ' )[ 1 ], 10 );\n\t\t\t\t\tconst size = parseInt( line.split( ' ' )[ 2 ], 10 );\n\t\t\t\t\t// 4 byte integers\n\t\t\t\t\tconst count = size * 4;\n\n\t\t\t\t\tindices = new Uint32Array( 3 * size - 9 * numberOfStrips );\n\t\t\t\t\tlet indicesIndex = 0;\n\n\t\t\t\t\tlet pointIndex = state.next;\n\t\t\t\t\tfor ( let i = 0; i < numberOfStrips; i ++ ) {\n\n\t\t\t\t\t\t// For each strip, read the first value, then record that many more points\n\t\t\t\t\t\tconst indexCount = dataView.getInt32( pointIndex, false );\n\t\t\t\t\t\tconst strip = [];\n\t\t\t\t\t\tpointIndex += 4;\n\t\t\t\t\t\tfor ( let s = 0; s < indexCount; s ++ ) {\n\n\t\t\t\t\t\t\tstrip.push( dataView.getInt32( pointIndex, false ) );\n\t\t\t\t\t\t\tpointIndex += 4;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// retrieves the n-2 triangles from the triangle strip\n\t\t\t\t\t\tfor ( let j = 0; j < indexCount - 2; j ++ ) {\n\n\t\t\t\t\t\t\tif ( j % 2 ) {\n\n\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j ];\n\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j + 2 ];\n\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j + 1 ];\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j ];\n\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j + 1 ];\n\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j + 2 ];\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\t// increment our next pointer\n\t\t\t\t\tstate.next = state.next + count + 1;\n\n\t\t\t\t} else if ( line.indexOf( 'POLYGONS' ) === 0 ) {\n\n\t\t\t\t\tconst numberOfStrips = parseInt( line.split( ' ' )[ 1 ], 10 );\n\t\t\t\t\tconst size = parseInt( line.split( ' ' )[ 2 ], 10 );\n\t\t\t\t\t// 4 byte integers\n\t\t\t\t\tconst count = size * 4;\n\n\t\t\t\t\tindices = new Uint32Array( 3 * size - 9 * numberOfStrips );\n\t\t\t\t\tlet indicesIndex = 0;\n\n\t\t\t\t\tlet pointIndex = state.next;\n\t\t\t\t\tfor ( let i = 0; i < numberOfStrips; i ++ ) {\n\n\t\t\t\t\t\t// For each strip, read the first value, then record that many more points\n\t\t\t\t\t\tconst indexCount = dataView.getInt32( pointIndex, false );\n\t\t\t\t\t\tconst strip = [];\n\t\t\t\t\t\tpointIndex += 4;\n\t\t\t\t\t\tfor ( let s = 0; s < indexCount; s ++ ) {\n\n\t\t\t\t\t\t\tstrip.push( dataView.getInt32( pointIndex, false ) );\n\t\t\t\t\t\t\tpointIndex += 4;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// divide the polygon in n-2 triangle\n\t\t\t\t\t\tfor ( let j = 1; j < indexCount - 1; j ++ ) {\n\n\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ 0 ];\n\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j ];\n\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j + 1 ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// increment our next pointer\n\t\t\t\t\tstate.next = state.next + count + 1;\n\n\t\t\t\t} else if ( line.indexOf( 'POINT_DATA' ) === 0 ) {\n\n\t\t\t\t\tconst numberOfPoints = parseInt( line.split( ' ' )[ 1 ], 10 );\n\n\t\t\t\t\t// Grab the next line\n\t\t\t\t\tstate = findString( buffer, state.next );\n\n\t\t\t\t\t// Now grab the binary data\n\t\t\t\t\tconst count = numberOfPoints * 4 * 3;\n\n\t\t\t\t\tnormals = new Float32Array( numberOfPoints * 3 );\n\t\t\t\t\tlet pointIndex = state.next;\n\t\t\t\t\tfor ( let i = 0; i < numberOfPoints; i ++ ) {\n\n\t\t\t\t\t\tnormals[ 3 * i ] = dataView.getFloat32( pointIndex, false );\n\t\t\t\t\t\tnormals[ 3 * i + 1 ] = dataView.getFloat32( pointIndex + 4, false );\n\t\t\t\t\t\tnormals[ 3 * i + 2 ] = dataView.getFloat32( pointIndex + 8, false );\n\t\t\t\t\t\tpointIndex += 12;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Increment past our data\n\t\t\t\t\tstate.next = state.next + count;\n\n\t\t\t\t}\n\n\t\t\t\t// Increment index\n\t\t\t\tindex = state.next;\n\n\t\t\t\tif ( index >= buffer.byteLength ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\t\tgeometry.setAttribute( 'position', new BufferAttribute( points, 3 ) );\n\n\t\t\tif ( normals.length === points.length ) {\n\n\t\t\t\tgeometry.setAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\n\t\t\t}\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction Float32Concat( first, second ) {\n\n\t\t\tconst firstLength = first.length, result = new Float32Array( firstLength + second.length );\n\n\t\t\tresult.set( first );\n\t\t\tresult.set( second, firstLength );\n\n\t\t\treturn result;\n\n\t\t}\n\n\t\tfunction Int32Concat( first, second ) {\n\n\t\t\tconst firstLength = first.length, result = new Int32Array( firstLength + second.length );\n\n\t\t\tresult.set( first );\n\t\t\tresult.set( second, firstLength );\n\n\t\t\treturn result;\n\n\t\t}\n\n\t\tfunction parseXML( stringFile ) {\n\n\t\t\t// Changes XML to JSON, based on https://davidwalsh.name/convert-xml-json\n\n\t\t\tfunction xmlToJson( xml ) {\n\n\t\t\t\t// Create the return object\n\t\t\t\tlet obj = {};\n\n\t\t\t\tif ( xml.nodeType === 1 ) { // element\n\n\t\t\t\t\t// do attributes\n\n\t\t\t\t\tif ( xml.attributes ) {\n\n\t\t\t\t\t\tif ( xml.attributes.length > 0 ) {\n\n\t\t\t\t\t\t\tobj[ 'attributes' ] = {};\n\n\t\t\t\t\t\t\tfor ( let j = 0; j < xml.attributes.length; j ++ ) {\n\n\t\t\t\t\t\t\t\tconst attribute = xml.attributes.item( j );\n\t\t\t\t\t\t\t\tobj[ 'attributes' ][ attribute.nodeName ] = attribute.nodeValue.trim();\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 if ( xml.nodeType === 3 ) { // text\n\n\t\t\t\t\tobj = xml.nodeValue.trim();\n\n\t\t\t\t}\n\n\t\t\t\t// do children\n\t\t\t\tif ( xml.hasChildNodes() ) {\n\n\t\t\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\t\t\tconst item = xml.childNodes.item( i );\n\t\t\t\t\t\tconst nodeName = item.nodeName;\n\n\t\t\t\t\t\tif ( typeof obj[ nodeName ] === 'undefined' ) {\n\n\t\t\t\t\t\t\tconst tmp = xmlToJson( item );\n\n\t\t\t\t\t\t\tif ( tmp !== '' ) {\n\n\t\t\t\t\t\t\t\tif ( Array.isArray( tmp[ '#text' ] ) ) {\n\n\t\t\t\t\t\t\t\t\ttmp[ '#text' ] = tmp[ '#text' ][ 0 ];\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tobj[ nodeName ] = tmp;\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 ( typeof obj[ nodeName ].push === 'undefined' ) {\n\n\t\t\t\t\t\t\t\tconst old = obj[ nodeName ];\n\t\t\t\t\t\t\t\tobj[ nodeName ] = [ old ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst tmp = xmlToJson( item );\n\n\t\t\t\t\t\t\tif ( tmp !== '' ) {\n\n\t\t\t\t\t\t\t\tif ( Array.isArray( tmp[ '#text' ] ) ) {\n\n\t\t\t\t\t\t\t\t\ttmp[ '#text' ] = tmp[ '#text' ][ 0 ];\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tobj[ nodeName ].push( tmp );\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\treturn obj;\n\n\t\t\t}\n\n\t\t\t// Taken from Base64-js\n\t\t\tfunction Base64toByteArray( b64 ) {\n\n\t\t\t\tconst Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\t\t\t\tconst revLookup = [];\n\t\t\t\tconst code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n\t\t\t\tfor ( let i = 0, l = code.length; i < l; ++ i ) {\n\n\t\t\t\t\trevLookup[ code.charCodeAt( i ) ] = i;\n\n\t\t\t\t}\n\n\t\t\t\trevLookup[ '-'.charCodeAt( 0 ) ] = 62;\n\t\t\t\trevLookup[ '_'.charCodeAt( 0 ) ] = 63;\n\n\t\t\t\tconst len = b64.length;\n\n\t\t\t\tif ( len % 4 > 0 ) {\n\n\t\t\t\t\tthrow new Error( 'Invalid string. Length must be a multiple of 4' );\n\n\t\t\t\t}\n\n\t\t\t\tconst placeHolders = b64[ len - 2 ] === '=' ? 2 : b64[ len - 1 ] === '=' ? 1 : 0;\n\t\t\t\tconst arr = new Arr( len * 3 / 4 - placeHolders );\n\t\t\t\tconst l = placeHolders > 0 ? len - 4 : len;\n\n\t\t\t\tlet L = 0;\n\t\t\t\tlet i, j;\n\n\t\t\t\tfor ( i = 0, j = 0; i < l; i += 4, j += 3 ) {\n\n\t\t\t\t\tconst tmp = ( revLookup[ b64.charCodeAt( i ) ] << 18 ) | ( revLookup[ b64.charCodeAt( i + 1 ) ] << 12 ) | ( revLookup[ b64.charCodeAt( i + 2 ) ] << 6 ) | revLookup[ b64.charCodeAt( i + 3 ) ];\n\t\t\t\t\tarr[ L ++ ] = ( tmp & 0xFF0000 ) >> 16;\n\t\t\t\t\tarr[ L ++ ] = ( tmp & 0xFF00 ) >> 8;\n\t\t\t\t\tarr[ L ++ ] = tmp & 0xFF;\n\n\t\t\t\t}\n\n\t\t\t\tif ( placeHolders === 2 ) {\n\n\t\t\t\t\tconst tmp = ( revLookup[ b64.charCodeAt( i ) ] << 2 ) | ( revLookup[ b64.charCodeAt( i + 1 ) ] >> 4 );\n\t\t\t\t\tarr[ L ++ ] = tmp & 0xFF;\n\n\t\t\t\t} else if ( placeHolders === 1 ) {\n\n\t\t\t\t\tconst tmp = ( revLookup[ b64.charCodeAt( i ) ] << 10 ) | ( revLookup[ b64.charCodeAt( i + 1 ) ] << 4 ) | ( revLookup[ b64.charCodeAt( i + 2 ) ] >> 2 );\n\t\t\t\t\tarr[ L ++ ] = ( tmp >> 8 ) & 0xFF;\n\t\t\t\t\tarr[ L ++ ] = tmp & 0xFF;\n\n\t\t\t\t}\n\n\t\t\t\treturn arr;\n\n\t\t\t}\n\n\t\t\tfunction parseDataArray( ele, compressed ) {\n\n\t\t\t\tlet numBytes = 0;\n\n\t\t\t\tif ( json.attributes.header_type === 'UInt64' ) {\n\n\t\t\t\t\tnumBytes = 8;\n\n\t\t\t\t}\telse if ( json.attributes.header_type === 'UInt32' ) {\n\n\t\t\t\t\tnumBytes = 4;\n\n\t\t\t\t}\n\n\t\t\t\tlet txt, content;\n\n\t\t\t\t// Check the format\n\t\t\t\tif ( ele.attributes.format === 'binary' && compressed ) {\n\n\t\t\t\t\tif ( ele.attributes.type === 'Float32' ) {\n\n\t\t\t\t\t\ttxt = new Float32Array( );\n\n\t\t\t\t\t} else if ( ele.attributes.type === 'Int32' || ele.attributes.type === 'Int64' ) {\n\n\t\t\t\t\t\ttxt = new Int32Array( );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// VTP data with the header has the following structure:\n\t\t\t\t\t// [#blocks][#u-size][#p-size][#c-size-1][#c-size-2]...[#c-size-#blocks][DATA]\n\t\t\t\t\t//\n\t\t\t\t\t// Each token is an integer value whose type is specified by \"header_type\" at the top of the file (UInt32 if no type specified). The token meanings are:\n\t\t\t\t\t// [#blocks] = Number of blocks\n\t\t\t\t\t// [#u-size] = Block size before compression\n\t\t\t\t\t// [#p-size] = Size of last partial block (zero if it not needed)\n\t\t\t\t\t// [#c-size-i] = Size in bytes of block i after compression\n\t\t\t\t\t//\n\t\t\t\t\t// The [DATA] portion stores contiguously every block appended together. The offset from the beginning of the data section to the beginning of a block is\n\t\t\t\t\t// computed by summing the compressed block sizes from preceding blocks according to the header.\n\n\t\t\t\t\tconst textNode = ele[ '#text' ];\n\t\t\t\t\tconst rawData = Array.isArray( textNode ) ? textNode[ 0 ] : textNode;\n\n\t\t\t\t\tconst byteData = Base64toByteArray( rawData );\n\n\t\t\t\t\t// Each data point consists of 8 bits regardless of the header type\n\t\t\t\t\tconst dataPointSize = 8;\n\n\t\t\t\t\tlet blocks = byteData[ 0 ];\n\t\t\t\t\tfor ( let i = 1; i < numBytes - 1; i ++ ) {\n\n\t\t\t\t\t\tblocks = blocks | ( byteData[ i ] << ( i * dataPointSize ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet headerSize = ( blocks + 3 ) * numBytes;\n\t\t\t\t\tconst padding = ( ( headerSize % 3 ) > 0 ) ? 3 - ( headerSize % 3 ) : 0;\n\t\t\t\t\theaderSize = headerSize + padding;\n\n\t\t\t\t\tconst dataOffsets = [];\n\t\t\t\t\tlet currentOffset = headerSize;\n\t\t\t\t\tdataOffsets.push( currentOffset );\n\n\t\t\t\t\t// Get the blocks sizes after the compression.\n\t\t\t\t\t// There are three blocks before c-size-i, so we skip 3*numBytes\n\t\t\t\t\tconst cSizeStart = 3 * numBytes;\n\n\t\t\t\t\tfor ( let i = 0; i < blocks; i ++ ) {\n\n\t\t\t\t\t\tlet currentBlockSize = byteData[ i * numBytes + cSizeStart ];\n\n\t\t\t\t\t\tfor ( let j = 1; j < numBytes - 1; j ++ ) {\n\n\t\t\t\t\t\t\tcurrentBlockSize = currentBlockSize | ( byteData[ i * numBytes + cSizeStart + j ] << ( j * dataPointSize ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcurrentOffset = currentOffset + currentBlockSize;\n\t\t\t\t\t\tdataOffsets.push( currentOffset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0; i < dataOffsets.length - 1; i ++ ) {\n\n\t\t\t\t\t\tconst data = fflate.unzlibSync( byteData.slice( dataOffsets[ i ], dataOffsets[ i + 1 ] ) );\n\t\t\t\t\t\tcontent = data.buffer;\n\n\t\t\t\t\t\tif ( ele.attributes.type === 'Float32' ) {\n\n\t\t\t\t\t\t\tcontent = new Float32Array( content );\n\t\t\t\t\t\t\ttxt = Float32Concat( txt, content );\n\n\t\t\t\t\t\t} else if ( ele.attributes.type === 'Int32' || ele.attributes.type === 'Int64' ) {\n\n\t\t\t\t\t\t\tcontent = new Int32Array( content );\n\t\t\t\t\t\t\ttxt = Int32Concat( txt, content );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdelete ele[ '#text' ];\n\n\t\t\t\t\tif ( ele.attributes.type === 'Int64' ) {\n\n\t\t\t\t\t\tif ( ele.attributes.format === 'binary' ) {\n\n\t\t\t\t\t\t\ttxt = txt.filter( function ( el, idx ) {\n\n\t\t\t\t\t\t\t\tif ( idx % 2 !== 1 ) return 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} else {\n\n\t\t\t\t\tif ( ele.attributes.format === 'binary' && ! compressed ) {\n\n\t\t\t\t\t\tcontent = Base64toByteArray( ele[ '#text' ] );\n\n\t\t\t\t\t\t// VTP data for the uncompressed case has the following structure:\n\t\t\t\t\t\t// [#bytes][DATA]\n\t\t\t\t\t\t// where \"[#bytes]\" is an integer value specifying the number of bytes in the block of data following it.\n\t\t\t\t\t\tcontent = content.slice( numBytes ).buffer;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( ele[ '#text' ] ) {\n\n\t\t\t\t\t\t\tcontent = ele[ '#text' ].split( /\\s+/ ).filter( function ( el ) {\n\n\t\t\t\t\t\t\t\tif ( el !== '' ) return el;\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\tcontent = new Int32Array( 0 ).buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdelete ele[ '#text' ];\n\n\t\t\t\t\t// Get the content and optimize it\n\t\t\t\t\tif ( ele.attributes.type === 'Float32' ) {\n\n\t\t\t\t\t\ttxt = new Float32Array( content );\n\n\t\t\t\t\t} else if ( ele.attributes.type === 'Int32' ) {\n\n\t\t\t\t\t\ttxt = new Int32Array( content );\n\n\t\t\t\t\t} else if ( ele.attributes.type === 'Int64' ) {\n\n\t\t\t\t\t\ttxt = new Int32Array( content );\n\n\t\t\t\t\t\tif ( ele.attributes.format === 'binary' ) {\n\n\t\t\t\t\t\t\ttxt = txt.filter( function ( el, idx ) {\n\n\t\t\t\t\t\t\t\tif ( idx % 2 !== 1 ) return 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} // endif ( ele.attributes.format === 'binary' && compressed )\n\n\t\t\t\treturn txt;\n\n\t\t\t}\n\n\t\t\t// Main part\n\t\t\t// Get Dom\n\t\t\tconst dom = new DOMParser().parseFromString( stringFile, 'application/xml' );\n\n\t\t\t// Get the doc\n\t\t\tconst doc = dom.documentElement;\n\t\t\t// Convert to json\n\t\t\tconst json = xmlToJson( doc );\n\t\t\tlet points = [];\n\t\t\tlet normals = [];\n\t\t\tlet indices = [];\n\n\t\t\tif ( json.AppendedData ) {\n\n\t\t\t\tconst appendedData = json.AppendedData[ '#text' ].slice( 1 );\n\t\t\t\tconst piece = json.PolyData.Piece;\n\n\t\t\t\tconst sections = [ 'PointData', 'CellData', 'Points', 'Verts', 'Lines', 'Strips', 'Polys' ];\n\t\t\t\tlet sectionIndex = 0;\n\n\t\t\t\tconst offsets = sections.map( s => {\n\n\t\t\t\t\tconst sect = piece[ s ];\n\n\t\t\t\t\tif ( sect && sect.DataArray ) {\n\n\t\t\t\t\t\tconst arr = Array.isArray( sect.DataArray ) ? sect.DataArray : [ sect.DataArray ];\n\n\t\t\t\t\t\treturn arr.map( a => a.attributes.offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [];\n\n\t\t\t\t} ).flat();\n\n\t\t\t\tfor ( const sect of sections ) {\n\n\t\t\t\t\tconst section = piece[ sect ];\n\n\t\t\t\t\tif ( section && section.DataArray ) {\n\n\t\t\t\t\t\tif ( Array.isArray( section.DataArray ) ) {\n\n\t\t\t\t\t\t\tfor ( const sectionEle of section.DataArray ) {\n\n\t\t\t\t\t\t\t\tsectionEle[ '#text' ] = appendedData.slice( offsets[ sectionIndex ], offsets[ sectionIndex + 1 ] );\n\t\t\t\t\t\t\t\tsectionEle.attributes.format = 'binary';\n\t\t\t\t\t\t\t\tsectionIndex ++;\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\tsection.DataArray[ '#text' ] = appendedData.slice( offsets[ sectionIndex ], offsets[ sectionIndex + 1 ] );\n\t\t\t\t\t\t\tsection.DataArray.attributes.format = 'binary';\n\t\t\t\t\t\t\tsectionIndex ++;\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 ( json.PolyData ) {\n\n\t\t\t\tconst piece = json.PolyData.Piece;\n\t\t\t\tconst compressed = json.attributes.hasOwnProperty( 'compressor' );\n\n\t\t\t\t// Can be optimized\n\t\t\t\t// Loop through the sections\n\t\t\t\tconst sections = [ 'PointData', 'Points', 'Strips', 'Polys' ];// +['CellData', 'Verts', 'Lines'];\n\t\t\t\tlet sectionIndex = 0;\n\t\t\t\tconst numberOfSections = sections.length;\n\n\t\t\t\twhile ( sectionIndex < numberOfSections ) {\n\n\t\t\t\t\tconst section = piece[ sections[ sectionIndex ] ];\n\n\t\t\t\t\t// If it has a DataArray in it\n\n\t\t\t\t\tif ( section && section.DataArray ) {\n\n\t\t\t\t\t\t// Depending on the number of DataArrays\n\n\t\t\t\t\t\tlet arr;\n\n\t\t\t\t\t\tif ( Array.isArray( section.DataArray ) ) {\n\n\t\t\t\t\t\t\tarr = section.DataArray;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tarr = [ section.DataArray ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet dataArrayIndex = 0;\n\t\t\t\t\t\tconst numberOfDataArrays = arr.length;\n\n\t\t\t\t\t\twhile ( dataArrayIndex < numberOfDataArrays ) {\n\n\t\t\t\t\t\t\t// Parse the DataArray\n\t\t\t\t\t\t\tif ( ( '#text' in arr[ dataArrayIndex ] ) && ( arr[ dataArrayIndex ][ '#text' ].length > 0 ) ) {\n\n\t\t\t\t\t\t\t\tarr[ dataArrayIndex ].text = parseDataArray( arr[ dataArrayIndex ], compressed );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdataArrayIndex ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tswitch ( sections[ sectionIndex ] ) {\n\n\t\t\t\t\t\t\t// if iti is point data\n\t\t\t\t\t\t\tcase 'PointData':\n\n\t\t\t\t\t\t\t\t{\n\n\t\t\t\t\t\t\t\t\tconst numberOfPoints = parseInt( piece.attributes.NumberOfPoints );\n\t\t\t\t\t\t\t\t\tconst normalsName = section.attributes.Normals;\n\n\t\t\t\t\t\t\t\t\tif ( numberOfPoints > 0 ) {\n\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, len = arr.length; i < len; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( normalsName === arr[ i ].attributes.Name ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\tconst components = arr[ i ].attributes.NumberOfComponents;\n\t\t\t\t\t\t\t\t\t\t\t\tnormals = new Float32Array( numberOfPoints * components );\n\t\t\t\t\t\t\t\t\t\t\t\tnormals.set( arr[ i ].text, 0 );\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t}\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\tbreak;\n\n\t\t\t\t\t\t\t// if it is points\n\t\t\t\t\t\t\tcase 'Points':\n\n\t\t\t\t\t\t\t\t{\n\n\t\t\t\t\t\t\t\t\tconst numberOfPoints = parseInt( piece.attributes.NumberOfPoints );\n\n\t\t\t\t\t\t\t\t\tif ( numberOfPoints > 0 ) {\n\n\t\t\t\t\t\t\t\t\t\tconst components = section.DataArray.attributes.NumberOfComponents;\n\t\t\t\t\t\t\t\t\t\tpoints = new Float32Array( numberOfPoints * components );\n\t\t\t\t\t\t\t\t\t\tpoints.set( section.DataArray.text, 0 );\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\tbreak;\n\n\t\t\t\t\t\t\t// if it is strips\n\t\t\t\t\t\t\tcase 'Strips':\n\n\t\t\t\t\t\t\t\t{\n\n\t\t\t\t\t\t\t\t\tconst numberOfStrips = parseInt( piece.attributes.NumberOfStrips );\n\n\t\t\t\t\t\t\t\t\tif ( numberOfStrips > 0 ) {\n\n\t\t\t\t\t\t\t\t\t\tconst connectivity = new Int32Array( section.DataArray[ 0 ].text.length );\n\t\t\t\t\t\t\t\t\t\tconst offset = new Int32Array( section.DataArray[ 1 ].text.length );\n\t\t\t\t\t\t\t\t\t\tconnectivity.set( section.DataArray[ 0 ].text, 0 );\n\t\t\t\t\t\t\t\t\t\toffset.set( section.DataArray[ 1 ].text, 0 );\n\n\t\t\t\t\t\t\t\t\t\tconst size = numberOfStrips + connectivity.length;\n\t\t\t\t\t\t\t\t\t\tindices = new Uint32Array( 3 * size - 9 * numberOfStrips );\n\n\t\t\t\t\t\t\t\t\t\tlet indicesIndex = 0;\n\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, len = numberOfStrips; i < len; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst strip = [];\n\n\t\t\t\t\t\t\t\t\t\t\tfor ( let s = 0, len1 = offset[ i ], len0 = 0; s < len1 - len0; s ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\tstrip.push( connectivity[ s ] );\n\n\t\t\t\t\t\t\t\t\t\t\t\tif ( i > 0 ) len0 = offset[ i - 1 ];\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tfor ( let j = 0, len1 = offset[ i ], len0 = 0; j < len1 - len0 - 2; j ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\tif ( j % 2 ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j ];\n\t\t\t\t\t\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j + 2 ];\n\t\t\t\t\t\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j + 1 ];\n\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j ];\n\t\t\t\t\t\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j + 1 ];\n\t\t\t\t\t\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = strip[ j + 2 ];\n\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tif ( i > 0 ) len0 = offset[ i - 1 ];\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t}\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\tbreak;\n\n\t\t\t\t\t\t\t// if it is polys\n\t\t\t\t\t\t\tcase 'Polys':\n\n\t\t\t\t\t\t\t\t{\n\n\t\t\t\t\t\t\t\t\tconst numberOfPolys = parseInt( piece.attributes.NumberOfPolys );\n\n\t\t\t\t\t\t\t\t\tif ( numberOfPolys > 0 ) {\n\n\t\t\t\t\t\t\t\t\t\tconst connectivity = new Int32Array( section.DataArray[ 0 ].text.length );\n\t\t\t\t\t\t\t\t\t\tconst offset = new Int32Array( section.DataArray[ 1 ].text.length );\n\t\t\t\t\t\t\t\t\t\tconnectivity.set( section.DataArray[ 0 ].text, 0 );\n\t\t\t\t\t\t\t\t\t\toffset.set( section.DataArray[ 1 ].text, 0 );\n\n\t\t\t\t\t\t\t\t\t\tconst size = numberOfPolys + connectivity.length;\n\t\t\t\t\t\t\t\t\t\tindices = new Uint32Array( 3 * size - 9 * numberOfPolys );\n\t\t\t\t\t\t\t\t\t\tlet indicesIndex = 0, connectivityIndex = 0;\n\t\t\t\t\t\t\t\t\t\tlet i = 0, len0 = 0;\n\t\t\t\t\t\t\t\t\t\tconst len = numberOfPolys;\n\n\t\t\t\t\t\t\t\t\t\twhile ( i < len ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst poly = [];\n\t\t\t\t\t\t\t\t\t\t\tlet s = 0;\n\t\t\t\t\t\t\t\t\t\t\tconst len1 = offset[ i ];\n\n\t\t\t\t\t\t\t\t\t\t\twhile ( s < len1 - len0 ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\tpoly.push( connectivity[ connectivityIndex ++ ] );\n\t\t\t\t\t\t\t\t\t\t\t\ts ++;\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tlet j = 1;\n\n\t\t\t\t\t\t\t\t\t\t\twhile ( j < len1 - len0 - 1 ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = poly[ 0 ];\n\t\t\t\t\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = poly[ j ];\n\t\t\t\t\t\t\t\t\t\t\t\tindices[ indicesIndex ++ ] = poly[ j + 1 ];\n\t\t\t\t\t\t\t\t\t\t\t\tj ++;\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\ti ++;\n\t\t\t\t\t\t\t\t\t\t\tlen0 = offset[ i - 1 ];\n\n\t\t\t\t\t\t\t\t\t\t}\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\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\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\tsectionIndex ++;\n\n\t\t\t\t}\n\n\t\t\t\tconst geometry = new BufferGeometry();\n\t\t\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\t\t\tgeometry.setAttribute( 'position', new BufferAttribute( points, 3 ) );\n\n\t\t\t\tif ( normals.length === points.length ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\n\t\t\t\t}\n\n\t\t\t\treturn geometry;\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'Unsupported DATASET type' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst textDecoder = new TextDecoder();\n\n\t\t// get the 5 first lines of the files to check if there is the key word binary\n\t\tconst meta = textDecoder.decode( new Uint8Array( data, 0, 250 ) ).split( '\\n' );\n\n\t\tif ( meta[ 0 ].indexOf( 'xml' ) !== - 1 ) {\n\n\t\t\treturn parseXML( textDecoder.decode( data ) );\n\n\t\t} else if ( meta[ 2 ].includes( 'ASCII' ) ) {\n\n\t\t\treturn parseASCII( textDecoder.decode( data ) );\n\n\t\t} else {\n\n\t\t\treturn parseBinary( data );\n\n\t\t}\n\n\t}\n\n}\n\nexport { VTKLoader };\n", "import {\n\tBufferGeometry,\n\tColor,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tLoader\n} from 'three';\n\nclass XYZLoader extends Loader {\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( 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( text ) {\n\n\t\tconst lines = text.split( '\\n' );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\t\tconst color = new Color();\n\n\t\tfor ( let line of lines ) {\n\n\t\t\tline = line.trim();\n\n\t\t\tif ( line.charAt( 0 ) === '#' ) continue; // skip comments\n\n\t\t\tconst lineValues = line.split( /\\s+/ );\n\n\t\t\tif ( lineValues.length === 3 ) {\n\n\t\t\t\t// XYZ\n\n\t\t\t\tvertices.push( parseFloat( lineValues[ 0 ] ) );\n\t\t\t\tvertices.push( parseFloat( lineValues[ 1 ] ) );\n\t\t\t\tvertices.push( parseFloat( lineValues[ 2 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( lineValues.length === 6 ) {\n\n\t\t\t\t// XYZRGB\n\n\t\t\t\tvertices.push( parseFloat( lineValues[ 0 ] ) );\n\t\t\t\tvertices.push( parseFloat( lineValues[ 1 ] ) );\n\t\t\t\tvertices.push( parseFloat( lineValues[ 2 ] ) );\n\n\t\t\t\tconst r = parseFloat( lineValues[ 3 ] ) / 255;\n\t\t\t\tconst g = parseFloat( lineValues[ 4 ] ) / 255;\n\t\t\t\tconst b = parseFloat( lineValues[ 5 ] ) / 255;\n\n\t\t\t\tcolor.set( r, g, b ).convertSRGBToLinear();\n\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\n\t\tif ( colors.length > 0 ) {\n\n\t\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nexport { XYZLoader };\n", "/**\n * MeshGouraudMaterial\n *\n * Lambert illumination model with Gouraud (per-vertex) shading\n *\n */\n\nimport { UniformsUtils, UniformsLib, ShaderMaterial, Color, MultiplyOperation } from 'three';\n\nconst GouraudShader = {\n\n\tname: 'GouraudShader',\n\n\tuniforms: UniformsUtils.merge( [\n\t\tUniformsLib.common,\n\t\tUniformsLib.specularmap,\n\t\tUniformsLib.envmap,\n\t\tUniformsLib.aomap,\n\t\tUniformsLib.lightmap,\n\t\tUniformsLib.emissivemap,\n\t\tUniformsLib.fog,\n\t\tUniformsLib.lights,\n\t\t{\n\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t}\n\t] ),\n\n\tvertexShader: /* glsl */`\n\n\t\t#define GOURAUD\n\n\t\tvarying vec3 vLightFront;\n\t\tvarying vec3 vIndirectFront;\n\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvarying vec3 vLightBack;\n\t\t\tvarying vec3 vIndirectBack;\n\t\t#endif\n\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\n\t\tvoid main() {\n\n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\n\t\t\t#include \n\t\t\t#include \n\n\t\t\t// inlining legacy \n\n\t\t\tvec3 diffuse = vec3( 1.0 );\n\n\t\t\tvec3 geometryPosition = mvPosition.xyz;\n\t\t\tvec3 geometryNormal = normalize( transformedNormal );\n\t\t\tvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\n\n\t\t\tvec3 backGeometryNormal = - geometryNormal;\n\n\t\t\tvLightFront = vec3( 0.0 );\n\t\t\tvIndirectFront = vec3( 0.0 );\n\t\t\t#ifdef DOUBLE_SIDED\n\t\t\t\tvLightBack = vec3( 0.0 );\n\t\t\t\tvIndirectBack = vec3( 0.0 );\n\t\t\t#endif\n\n\t\t\tIncidentLight directLight;\n\t\t\tfloat dotNL;\n\t\t\tvec3 directLightColor_Diffuse;\n\n\t\t\tvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\n\n\t\t\t#if defined( USE_LIGHT_PROBES )\n\n\t\t\t\tvIndirectFront += getLightProbeIrradiance( lightProbe, geometryNormal );\n\n\t\t\t#endif\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\n\n\t\t\t\t#if defined( USE_LIGHT_PROBES )\n\n\t\t\t\t\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometryNormal );\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\t#if NUM_POINT_LIGHTS > 0\n\n\t\t\t\t#pragma unroll_loop_start\n\t\t\t\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\n\t\t\t\t\tgetPointLightInfo( pointLights[ i ], geometryPosition, directLight );\n\n\t\t\t\t\tdotNL = dot( geometryNormal, directLight.direction );\n\t\t\t\t\tdirectLightColor_Diffuse = directLight.color;\n\n\t\t\t\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\n\t\t\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\n\t\t\t\t\t#endif\n\n\t\t\t\t}\n\t\t\t\t#pragma unroll_loop_end\n\n\t\t\t#endif\n\n\t\t\t#if NUM_SPOT_LIGHTS > 0\n\n\t\t\t\t#pragma unroll_loop_start\n\t\t\t\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\n\t\t\t\t\tgetSpotLightInfo( spotLights[ i ], geometryPosition, directLight );\n\n\t\t\t\t\tdotNL = dot( geometryNormal, directLight.direction );\n\t\t\t\t\tdirectLightColor_Diffuse = directLight.color;\n\n\t\t\t\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\n\t\t\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\n\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t\t#pragma unroll_loop_end\n\n\t\t\t#endif\n\n\t\t\t#if NUM_DIR_LIGHTS > 0\n\n\t\t\t\t#pragma unroll_loop_start\n\t\t\t\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\n\t\t\t\t\tgetDirectionalLightInfo( directionalLights[ i ], directLight );\n\n\t\t\t\t\tdotNL = dot( geometryNormal, directLight.direction );\n\t\t\t\t\tdirectLightColor_Diffuse = directLight.color;\n\n\t\t\t\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\n\t\t\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\n\t\t\t\t\t#endif\n\n\t\t\t\t}\n\t\t\t\t#pragma unroll_loop_end\n\n\t\t\t#endif\n\n\t\t\t#if NUM_HEMI_LIGHTS > 0\n\n\t\t\t\t#pragma unroll_loop_start\n\t\t\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\n\t\t\t\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n\n\t\t\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometryNormal );\n\n\t\t\t\t\t#endif\n\n\t\t\t\t}\n\t\t\t\t#pragma unroll_loop_end\n\n\t\t\t#endif\n\n\t\t\t#include \n\t\t\t#include \n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\t#define GOURAUD\n\n\t\tuniform vec3 diffuse;\n\t\tuniform vec3 emissive;\n\t\tuniform float opacity;\n\n\t\tvarying vec3 vLightFront;\n\t\tvarying vec3 vIndirectFront;\n\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvarying vec3 vLightBack;\n\t\t\tvarying vec3 vIndirectBack;\n\t\t#endif\n\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\n\t\tvoid main() {\n\n\t\t\t#include \n\n\t\t\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t\t\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t\t\tvec3 totalEmissiveRadiance = emissive;\n\n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\n\t\t\t// accumulation\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\n\t\t\t#else\n\n\t\t\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\n\t\t\t#endif\n\n\t\t\t#ifdef USE_LIGHTMAP\n\n\t\t\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\t\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\t\t\treflectedLight.indirectDiffuse += lightMapIrradiance;\n\n\t\t\t#endif\n\n\t\t\treflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\n\t\t\t#else\n\n\t\t\t\treflectedLight.directDiffuse = vLightFront;\n\n\t\t\t#endif\n\n\t\t\treflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();\n\n\t\t\t// modulation\n\n\t\t\t#include \n\n\t\t\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\n\t\t\t#include \n\n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\n\t\t}`\n\n};\n\n//\n\nclass MeshGouraudMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshGouraudMaterial = true;\n\n\t\tthis.type = 'MeshGouraudMaterial';\n\n\t\t//this.color = new THREE.Color( 0xffffff ); // diffuse\n\n\t\t//this.map = null;\n\n\t\t//this.lightMap = null;\n\t\t//this.lightMapIntensity = 1.0;\n\n\t\t//this.aoMap = null;\n\t\t//this.aoMapIntensity = 1.0;\n\n\t\t//this.emissive = new THREE.Color( 0x000000 );\n\t\t//this.emissiveIntensity = 1.0;\n\t\t//this.emissiveMap = null;\n\n\t\t//this.specularMap = null;\n\n\t\t//this.alphaMap = null;\n\n\t\t//this.envMap = null;\n\t\tthis.combine = MultiplyOperation; // combine has no uniform\n\t\t//this.reflectivity = 1;\n\t\t//this.refractionRatio = 0.98;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = true; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tconst shader = GouraudShader;\n\n\t\tthis.defines = Object.assign( {}, shader.defines );\n\t\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\t\tthis.vertexShader = shader.vertexShader;\n\t\tthis.fragmentShader = shader.fragmentShader;\n\n\t\tconst exposePropertyNames = [\n\t\t\t'map', 'lightMap', 'lightMapIntensity', 'aoMap', 'aoMapIntensity',\n\t\t\t'emissive', 'emissiveIntensity', 'emissiveMap', 'specularMap', 'alphaMap',\n\t\t\t'envMap', 'reflectivity', 'refractionRatio', 'opacity', 'diffuse'\n\t\t];\n\n\t\tfor ( const propertyName of exposePropertyNames ) {\n\n\t\t\tObject.defineProperty( this, propertyName, {\n\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn this.uniforms[ propertyName ].value;\n\n\t\t\t\t},\n\n\t\t\t\tset: function ( value ) {\n\n\t\t\t\t\tthis.uniforms[ propertyName ].value = value;\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t\tObject.defineProperty( this, 'color', Object.getOwnPropertyDescriptor( this, 'diffuse' ) );\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\nexport { MeshGouraudMaterial };\n", "import {\n\tVector3\n} from 'three';\n\nclass Capsule {\n\n\tconstructor( start = new Vector3( 0, 0, 0 ), end = new Vector3( 0, 1, 0 ), radius = 1 ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.radius = radius;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Capsule( this.start.clone(), this.end.clone(), this.radius );\n\n\t}\n\n\tset( start, end, radius ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\t\tthis.radius = radius;\n\n\t}\n\n\tcopy( capsule ) {\n\n\t\tthis.start.copy( capsule.start );\n\t\tthis.end.copy( capsule.end );\n\t\tthis.radius = capsule.radius;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.copy( this.end ).add( this.start ).multiplyScalar( 0.5 );\n\n\t}\n\n\ttranslate( v ) {\n\n\t\tthis.start.add( v );\n\t\tthis.end.add( v );\n\n\t}\n\n\tcheckAABBAxis( p1x, p1y, p2x, p2y, minx, maxx, miny, maxy, radius ) {\n\n\t\treturn (\n\t\t\t( minx - p1x < radius || minx - p2x < radius ) &&\n\t\t\t( p1x - maxx < radius || p2x - maxx < radius ) &&\n\t\t\t( miny - p1y < radius || miny - p2y < radius ) &&\n\t\t\t( p1y - maxy < radius || p2y - maxy < radius )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn (\n\t\t\tthis.checkAABBAxis(\n\t\t\t\tthis.start.x, this.start.y, this.end.x, this.end.y,\n\t\t\t\tbox.min.x, box.max.x, box.min.y, box.max.y,\n\t\t\t\tthis.radius ) &&\n\t\t\tthis.checkAABBAxis(\n\t\t\t\tthis.start.x, this.start.z, this.end.x, this.end.z,\n\t\t\t\tbox.min.x, box.max.x, box.min.z, box.max.z,\n\t\t\t\tthis.radius ) &&\n\t\t\tthis.checkAABBAxis(\n\t\t\t\tthis.start.y, this.start.z, this.end.y, this.end.z,\n\t\t\t\tbox.min.y, box.max.y, box.min.z, box.max.z,\n\t\t\t\tthis.radius )\n\t\t);\n\n\t}\n\n}\n\nexport { Capsule };\n", "import { MathUtils } from 'three';\n\nconst _hsl = {};\n\nclass ColorConverter {\n\n\tstatic setHSV( color, h, s, v ) {\n\n\t\t// https://gist.github.com/xpansive/1337890#file-index-js\n\n\t\th = MathUtils.euclideanModulo( h, 1 );\n\t\ts = MathUtils.clamp( s, 0, 1 );\n\t\tv = MathUtils.clamp( v, 0, 1 );\n\n\t\treturn color.setHSL( h, ( s * v ) / ( ( h = ( 2 - s ) * v ) < 1 ? h : ( 2 - h ) ), h * 0.5 );\n\n\t}\n\n\tstatic getHSV( color, target ) {\n\n\t\tcolor.getHSL( _hsl );\n\n\t\t// based on https://gist.github.com/xpansive/1337890#file-index-js\n\t\t_hsl.s *= ( _hsl.l < 0.5 ) ? _hsl.l : ( 1 - _hsl.l );\n\n\t\ttarget.h = _hsl.h;\n\t\ttarget.s = 2 * _hsl.s / ( _hsl.l + _hsl.s );\n\t\ttarget.v = _hsl.l + _hsl.s;\n\n\t\treturn target;\n\n\t}\n\n}\n\nexport { ColorConverter };\n", "// https://cs.nyu.edu/~perlin/noise/\n\nconst _p = [ 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10,\n\t 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87,\n\t 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211,\n\t 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208,\n\t 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5,\n\t 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119,\n\t 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232,\n\t 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249,\n\t 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205,\n\t 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180 ];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_p[ 256 + i ] = _p[ i ];\n\n}\n\nfunction fade( t ) {\n\n\treturn t * t * t * ( t * ( t * 6 - 15 ) + 10 );\n\n}\n\nfunction lerp( t, a, b ) {\n\n\treturn a + t * ( b - a );\n\n}\n\nfunction grad( hash, x, y, z ) {\n\n\tconst h = hash & 15;\n\tconst u = h < 8 ? x : y, v = h < 4 ? y : h == 12 || h == 14 ? x : z;\n\treturn ( ( h & 1 ) == 0 ? u : - u ) + ( ( h & 2 ) == 0 ? v : - v );\n\n}\n\nclass ImprovedNoise {\n\n\tnoise( x, y, z ) {\n\n\t\tconst floorX = Math.floor( x ), floorY = Math.floor( y ), floorZ = Math.floor( z );\n\n\t\tconst X = floorX & 255, Y = floorY & 255, Z = floorZ & 255;\n\n\t\tx -= floorX;\n\t\ty -= floorY;\n\t\tz -= floorZ;\n\n\t\tconst xMinus1 = x - 1, yMinus1 = y - 1, zMinus1 = z - 1;\n\n\t\tconst u = fade( x ), v = fade( y ), w = fade( z );\n\n\t\tconst A = _p[ X ] + Y, AA = _p[ A ] + Z, AB = _p[ A + 1 ] + Z, B = _p[ X + 1 ] + Y, BA = _p[ B ] + Z, BB = _p[ B + 1 ] + Z;\n\n\t\treturn lerp( w, lerp( v, lerp( u, grad( _p[ AA ], x, y, z ),\n\t\t\tgrad( _p[ BA ], xMinus1, y, z ) ),\n\t\tlerp( u, grad( _p[ AB ], x, yMinus1, z ),\n\t\t\tgrad( _p[ BB ], xMinus1, yMinus1, z ) ) ),\n\t\tlerp( v, lerp( u, grad( _p[ AA + 1 ], x, y, zMinus1 ),\n\t\t\tgrad( _p[ BA + 1 ], xMinus1, y, zMinus1 ) ),\n\t\tlerp( u, grad( _p[ AB + 1 ], x, yMinus1, zMinus1 ),\n\t\t\tgrad( _p[ BB + 1 ], xMinus1, yMinus1, zMinus1 ) ) ) );\n\n\t}\n\n}\n\nexport { ImprovedNoise };\n", "import {\n\tColor,\n\tLinearSRGBColorSpace,\n\tMathUtils\n} from 'three';\n\nclass Lut {\n\n \tconstructor( colormap, count = 32 ) {\n\n\t\tthis.isLut = true;\n\n\t\tthis.lut = [];\n\t\tthis.map = [];\n\t\tthis.n = 0;\n\t\tthis.minV = 0;\n\t\tthis.maxV = 1;\n\n\t\tthis.setColorMap( colormap, count );\n\n\t}\n\n\tset( value ) {\n\n\t\tif ( value.isLut === true ) {\n\n\t\t\tthis.copy( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetMin( min ) {\n\n\t\tthis.minV = min;\n\n\t\treturn this;\n\n\t}\n\n\tsetMax( max ) {\n\n\t\tthis.maxV = max;\n\n\t\treturn this;\n\n\t}\n\n\tsetColorMap( colormap, count = 32 ) {\n\n\t\tthis.map = ColorMapKeywords[ colormap ] || ColorMapKeywords.rainbow;\n\t\tthis.n = count;\n\n\t\tconst step = 1.0 / this.n;\n\t\tconst minColor = new Color();\n\t\tconst maxColor = new Color();\n\n\t\tthis.lut.length = 0;\n\n\t\t// sample at 0\n\n\t\tthis.lut.push( new Color( this.map[ 0 ][ 1 ] ) );\n\n\t\t// sample at 1/n, ..., (n-1)/n\n\n\t\tfor ( let i = 1; i < count; i ++ ) {\n\n\t\t\tconst alpha = i * step;\n\n\t\t\tfor ( let j = 0; j < this.map.length - 1; j ++ ) {\n\n\t\t\t\tif ( alpha > this.map[ j ][ 0 ] && alpha <= this.map[ j + 1 ][ 0 ] ) {\n\n\t\t\t\t\tconst min = this.map[ j ][ 0 ];\n\t\t\t\t\tconst max = this.map[ j + 1 ][ 0 ];\n\n\t\t\t\t\tminColor.setHex( this.map[ j ][ 1 ], LinearSRGBColorSpace );\n\t\t\t\t\tmaxColor.setHex( this.map[ j + 1 ][ 1 ], LinearSRGBColorSpace );\n\n\t\t\t\t\tconst color = new Color().lerpColors( minColor, maxColor, ( alpha - min ) / ( max - min ) );\n\n\t\t\t\t\tthis.lut.push( color );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// sample at 1\n\n\t\tthis.lut.push( new Color( this.map[ this.map.length - 1 ][ 1 ] ) );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( lut ) {\n\n\t\tthis.lut = lut.lut;\n\t\tthis.map = lut.map;\n\t\tthis.n = lut.n;\n\t\tthis.minV = lut.minV;\n\t\tthis.maxV = lut.maxV;\n\n\t\treturn this;\n\n\t}\n\n\tgetColor( alpha ) {\n\n\t\talpha = MathUtils.clamp( alpha, this.minV, this.maxV );\n\n\t\talpha = ( alpha - this.minV ) / ( this.maxV - this.minV );\n\n\t\tconst colorPosition = Math.round( alpha * this.n );\n\n\t\treturn this.lut[ colorPosition ];\n\n\t}\n\n\taddColorMap( name, arrayOfColors ) {\n\n\t\tColorMapKeywords[ name ] = arrayOfColors;\n\n\t\treturn this;\n\n\t}\n\n\tcreateCanvas() {\n\n\t\tconst canvas = document.createElement( 'canvas' );\n\t\tcanvas.width = 1;\n\t\tcanvas.height = this.n;\n\n\t\tthis.updateCanvas( canvas );\n\n\t\treturn canvas;\n\n\t}\n\n\tupdateCanvas( canvas ) {\n\n\t\tconst ctx = canvas.getContext( '2d', { alpha: false } );\n\n\t\tconst imageData = ctx.getImageData( 0, 0, 1, this.n );\n\n\t\tconst data = imageData.data;\n\n\t\tlet k = 0;\n\n\t\tconst step = 1.0 / this.n;\n\n\t\tconst minColor = new Color();\n\t\tconst maxColor = new Color();\n\t\tconst finalColor = new Color();\n\n\t\tfor ( let i = 1; i >= 0; i -= step ) {\n\n\t\t\tfor ( let j = this.map.length - 1; j >= 0; j -- ) {\n\n\t\t\t\tif ( i < this.map[ j ][ 0 ] && i >= this.map[ j - 1 ][ 0 ] ) {\n\n\t\t\t\t\tconst min = this.map[ j - 1 ][ 0 ];\n\t\t\t\t\tconst max = this.map[ j ][ 0 ];\n\n\t\t\t\t\tminColor.setHex( this.map[ j - 1 ][ 1 ], LinearSRGBColorSpace );\n\t\t\t\t\tmaxColor.setHex( this.map[ j ][ 1 ], LinearSRGBColorSpace );\n\n\t\t\t\t\tfinalColor.lerpColors( minColor, maxColor, ( i - min ) / ( max - min ) );\n\n\t\t\t\t\tdata[ k * 4 ] = Math.round( finalColor.r * 255 );\n\t\t\t\t\tdata[ k * 4 + 1 ] = Math.round( finalColor.g * 255 );\n\t\t\t\t\tdata[ k * 4 + 2 ] = Math.round( finalColor.b * 255 );\n\t\t\t\t\tdata[ k * 4 + 3 ] = 255;\n\n\t\t\t\t\tk += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tctx.putImageData( imageData, 0, 0 );\n\n\t\treturn canvas;\n\n\t}\n\n}\n\nconst ColorMapKeywords = {\n\n\t'rainbow': [[ 0.0, 0x0000FF ], [ 0.2, 0x00FFFF ], [ 0.5, 0x00FF00 ], [ 0.8, 0xFFFF00 ], [ 1.0, 0xFF0000 ]],\n\t'cooltowarm': [[ 0.0, 0x3C4EC2 ], [ 0.2, 0x9BBCFF ], [ 0.5, 0xDCDCDC ], [ 0.8, 0xF6A385 ], [ 1.0, 0xB40426 ]],\n\t'blackbody': [[ 0.0, 0x000000 ], [ 0.2, 0x780000 ], [ 0.5, 0xE63200 ], [ 0.8, 0xFFFF00 ], [ 1.0, 0xFFFFFF ]],\n\t'grayscale': [[ 0.0, 0x000000 ], [ 0.2, 0x404040 ], [ 0.5, 0x7F7F80 ], [ 0.8, 0xBFBFBF ], [ 1.0, 0xFFFFFF ]]\n\n};\n\nexport { Lut, ColorMapKeywords };\n", "import {\n\tTriangle,\n\tVector2,\n\tVector3\n} from 'three';\n\n/**\n * Utility class for sampling weighted random points on the surface of a mesh.\n *\n * Building the sampler is a one-time O(n) operation. Once built, any number of\n * random samples may be selected in O(logn) time. Memory usage is O(n).\n *\n * References:\n * - http://www.joesfer.com/?p=84\n * - https://stackoverflow.com/a/4322940/1314762\n */\n\nconst _face = new Triangle();\nconst _color = new Vector3();\nconst _uva = new Vector2(), _uvb = new Vector2(), _uvc = new Vector2();\n\nclass MeshSurfaceSampler {\n\n\tconstructor( mesh ) {\n\n\t\tthis.geometry = mesh.geometry;\n\t\tthis.randomFunction = Math.random;\n\n\t\tthis.indexAttribute = this.geometry.index;\n\t\tthis.positionAttribute = this.geometry.getAttribute( 'position' );\n\t\tthis.normalAttribute = this.geometry.getAttribute( 'normal' );\n\t\tthis.colorAttribute = this.geometry.getAttribute( 'color' );\n\t\tthis.uvAttribute = this.geometry.getAttribute( 'uv' );\n\t\tthis.weightAttribute = null;\n\n\t\tthis.distribution = null;\n\n\t}\n\n\tsetWeightAttribute( name ) {\n\n\t\tthis.weightAttribute = name ? this.geometry.getAttribute( name ) : null;\n\n\t\treturn this;\n\n\t}\n\n\tbuild() {\n\n\t\tconst indexAttribute = this.indexAttribute;\n\t\tconst positionAttribute = this.positionAttribute;\n\t\tconst weightAttribute = this.weightAttribute;\n\n\t\tconst totalFaces = indexAttribute ? ( indexAttribute.count / 3 ) : ( positionAttribute.count / 3 );\n\t\tconst faceWeights = new Float32Array( totalFaces );\n\n\t\t// Accumulate weights for each mesh face.\n\n\t\tfor ( let i = 0; i < totalFaces; i ++ ) {\n\n\t\t\tlet faceWeight = 1;\n\n\t\t\tlet i0 = 3 * i;\n\t\t\tlet i1 = 3 * i + 1;\n\t\t\tlet i2 = 3 * i + 2;\n\n\t\t\tif ( indexAttribute ) {\n\n\t\t\t\ti0 = indexAttribute.getX( i0 );\n\t\t\t\ti1 = indexAttribute.getX( i1 );\n\t\t\t\ti2 = indexAttribute.getX( i2 );\n\n\t\t\t}\n\n\t\t\tif ( weightAttribute ) {\n\n\t\t\t\tfaceWeight = weightAttribute.getX( i0 )\n\t\t\t\t\t+ weightAttribute.getX( i1 )\n\t\t\t\t\t+ weightAttribute.getX( i2 );\n\n\t\t\t}\n\n\t\t\t_face.a.fromBufferAttribute( positionAttribute, i0 );\n\t\t\t_face.b.fromBufferAttribute( positionAttribute, i1 );\n\t\t\t_face.c.fromBufferAttribute( positionAttribute, i2 );\n\t\t\tfaceWeight *= _face.getArea();\n\n\t\t\tfaceWeights[ i ] = faceWeight;\n\n\t\t}\n\n\t\t// Store cumulative total face weights in an array, where weight index\n\t\t// corresponds to face index.\n\n\t\tconst distribution = new Float32Array( totalFaces );\n\t\tlet cumulativeTotal = 0;\n\n\t\tfor ( let i = 0; i < totalFaces; i ++ ) {\n\n\t\t\tcumulativeTotal += faceWeights[ i ];\n\t\t\tdistribution[ i ] = cumulativeTotal;\n\n\t\t}\n\n\t\tthis.distribution = distribution;\n\t\treturn this;\n\n\t}\n\n\tsetRandomGenerator( randomFunction ) {\n\n\t\tthis.randomFunction = randomFunction;\n\t\treturn this;\n\n\t}\n\n\tsample( targetPosition, targetNormal, targetColor, targetUV ) {\n\n\t\tconst faceIndex = this.sampleFaceIndex();\n\t\treturn this.sampleFace( faceIndex, targetPosition, targetNormal, targetColor, targetUV );\n\n\t}\n\n\tsampleFaceIndex() {\n\n\t\tconst cumulativeTotal = this.distribution[ this.distribution.length - 1 ];\n\t\treturn this.binarySearch( this.randomFunction() * cumulativeTotal );\n\n\t}\n\n\tbinarySearch( x ) {\n\n\t\tconst dist = this.distribution;\n\t\tlet start = 0;\n\t\tlet end = dist.length - 1;\n\n\t\tlet index = - 1;\n\n\t\twhile ( start <= end ) {\n\n\t\t\tconst mid = Math.ceil( ( start + end ) / 2 );\n\n\t\t\tif ( mid === 0 || dist[ mid - 1 ] <= x && dist[ mid ] > x ) {\n\n\t\t\t\tindex = mid;\n\n\t\t\t\tbreak;\n\n\t\t\t} else if ( x < dist[ mid ] ) {\n\n\t\t\t\tend = mid - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstart = mid + 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn index;\n\n\t}\n\n\tsampleFace( faceIndex, targetPosition, targetNormal, targetColor, targetUV ) {\n\n\t\tlet u = this.randomFunction();\n\t\tlet v = this.randomFunction();\n\n\t\tif ( u + v > 1 ) {\n\n\t\t\tu = 1 - u;\n\t\t\tv = 1 - v;\n\n\t\t}\n\n\t\t// get the vertex attribute indices\n\t\tconst indexAttribute = this.indexAttribute;\n\t\tlet i0 = faceIndex * 3;\n\t\tlet i1 = faceIndex * 3 + 1;\n\t\tlet i2 = faceIndex * 3 + 2;\n\t\tif ( indexAttribute ) {\n\n\t\t\ti0 = indexAttribute.getX( i0 );\n\t\t\ti1 = indexAttribute.getX( i1 );\n\t\t\ti2 = indexAttribute.getX( i2 );\n\n\t\t}\n\n\t\t_face.a.fromBufferAttribute( this.positionAttribute, i0 );\n\t\t_face.b.fromBufferAttribute( this.positionAttribute, i1 );\n\t\t_face.c.fromBufferAttribute( this.positionAttribute, i2 );\n\n\t\ttargetPosition\n\t\t\t.set( 0, 0, 0 )\n\t\t\t.addScaledVector( _face.a, u )\n\t\t\t.addScaledVector( _face.b, v )\n\t\t\t.addScaledVector( _face.c, 1 - ( u + v ) );\n\n\t\tif ( targetNormal !== undefined ) {\n\n\t\t\tif ( this.normalAttribute !== undefined ) {\n\n\t\t\t\t_face.a.fromBufferAttribute( this.normalAttribute, i0 );\n\t\t\t\t_face.b.fromBufferAttribute( this.normalAttribute, i1 );\n\t\t\t\t_face.c.fromBufferAttribute( this.normalAttribute, i2 );\n\t\t\t\ttargetNormal.set( 0, 0, 0 ).addScaledVector( _face.a, u ).addScaledVector( _face.b, v ).addScaledVector( _face.c, 1 - ( u + v ) ).normalize();\n\n\t\t\t} else {\n\n\t\t\t\t_face.getNormal( targetNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetColor !== undefined && this.colorAttribute !== undefined ) {\n\n\t\t\t_face.a.fromBufferAttribute( this.colorAttribute, i0 );\n\t\t\t_face.b.fromBufferAttribute( this.colorAttribute, i1 );\n\t\t\t_face.c.fromBufferAttribute( this.colorAttribute, i2 );\n\n\t\t\t_color\n\t\t\t\t.set( 0, 0, 0 )\n\t\t\t\t.addScaledVector( _face.a, u )\n\t\t\t\t.addScaledVector( _face.b, v )\n\t\t\t\t.addScaledVector( _face.c, 1 - ( u + v ) );\n\n\t\t\ttargetColor.r = _color.x;\n\t\t\ttargetColor.g = _color.y;\n\t\t\ttargetColor.b = _color.z;\n\n\t\t}\n\n\t\tif ( targetUV !== undefined && this.uvAttribute !== undefined ) {\n\n\t\t\t_uva.fromBufferAttribute( this.uvAttribute, i0 );\n\t\t\t_uvb.fromBufferAttribute( this.uvAttribute, i1 );\n\t\t\t_uvc.fromBufferAttribute( this.uvAttribute, i2 );\n\t\t\ttargetUV.set( 0, 0 ).addScaledVector( _uva, u ).addScaledVector( _uvb, v ).addScaledVector( _uvc, 1 - ( u + v ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { MeshSurfaceSampler };\n", "import {\n\tBox3,\n\tMathUtils,\n\tMatrix4,\n\tMatrix3,\n\tRay,\n\tVector3\n} from 'three';\n\n// module scope helper variables\n\nconst a = {\n\tc: null, // center\n\tu: [ new Vector3(), new Vector3(), new Vector3() ], // basis vectors\n\te: [] // half width\n};\n\nconst b = {\n\tc: null, // center\n\tu: [ new Vector3(), new Vector3(), new Vector3() ], // basis vectors\n\te: [] // half width\n};\n\nconst R = [[], [], []];\nconst AbsR = [[], [], []];\nconst t = [];\n\nconst xAxis = new Vector3();\nconst yAxis = new Vector3();\nconst zAxis = new Vector3();\nconst v1 = new Vector3();\nconst size = new Vector3();\nconst closestPoint = new Vector3();\nconst rotationMatrix = new Matrix3();\nconst aabb = new Box3();\nconst matrix = new Matrix4();\nconst inverse = new Matrix4();\nconst localRay = new Ray();\n\n// OBB\n\nclass OBB {\n\n\tconstructor( center = new Vector3(), halfSize = new Vector3(), rotation = new Matrix3() ) {\n\n\t\tthis.center = center;\n\t\tthis.halfSize = halfSize;\n\t\tthis.rotation = rotation;\n\n\t}\n\n\tset( center, halfSize, rotation ) {\n\n\t\tthis.center = center;\n\t\tthis.halfSize = halfSize;\n\t\tthis.rotation = rotation;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( obb ) {\n\n\t\tthis.center.copy( obb.center );\n\t\tthis.halfSize.copy( obb.halfSize );\n\t\tthis.rotation.copy( obb.rotation );\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\tgetSize( result ) {\n\n\t\treturn result.copy( this.halfSize ).multiplyScalar( 2 );\n\n\t}\n\n\t/**\n\t* Reference: Closest Point on OBB to Point in Real-Time Collision Detection\n\t* by Christer Ericson (chapter 5.1.4)\n\t*/\n\tclampPoint( point, result ) {\n\n\t\tconst halfSize = this.halfSize;\n\n\t\tv1.subVectors( point, this.center );\n\t\tthis.rotation.extractBasis( xAxis, yAxis, zAxis );\n\n\t\t// start at the center position of the OBB\n\n\t\tresult.copy( this.center );\n\n\t\t// project the target onto the OBB axes and walk towards that point\n\n\t\tconst x = MathUtils.clamp( v1.dot( xAxis ), - halfSize.x, halfSize.x );\n\t\tresult.add( xAxis.multiplyScalar( x ) );\n\n\t\tconst y = MathUtils.clamp( v1.dot( yAxis ), - halfSize.y, halfSize.y );\n\t\tresult.add( yAxis.multiplyScalar( y ) );\n\n\t\tconst z = MathUtils.clamp( v1.dot( zAxis ), - halfSize.z, halfSize.z );\n\t\tresult.add( zAxis.multiplyScalar( z ) );\n\n\t\treturn result;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tv1.subVectors( point, this.center );\n\t\tthis.rotation.extractBasis( xAxis, yAxis, zAxis );\n\n\t\t// project v1 onto each axis and check if these points lie inside the OBB\n\n\t\treturn Math.abs( v1.dot( xAxis ) ) <= this.halfSize.x &&\n\t\t\t\tMath.abs( v1.dot( yAxis ) ) <= this.halfSize.y &&\n\t\t\t\tMath.abs( v1.dot( zAxis ) ) <= this.halfSize.z;\n\n\t}\n\n\tintersectsBox3( box3 ) {\n\n\t\treturn this.intersectsOBB( obb.fromBox3( box3 ) );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// find the point on the OBB closest to the sphere center\n\n\t\tthis.clampPoint( sphere.center, closestPoint );\n\n\t\t// if that point is inside the sphere, the OBB and sphere intersect\n\n\t\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\t/**\n\t* Reference: OBB-OBB Intersection in Real-Time Collision Detection\n\t* by Christer Ericson (chapter 4.4.1)\n\t*\n\t*/\n\tintersectsOBB( obb, epsilon = Number.EPSILON ) {\n\n\t\t// prepare data structures (the code uses the same nomenclature like the reference)\n\n\t\ta.c = this.center;\n\t\ta.e[ 0 ] = this.halfSize.x;\n\t\ta.e[ 1 ] = this.halfSize.y;\n\t\ta.e[ 2 ] = this.halfSize.z;\n\t\tthis.rotation.extractBasis( a.u[ 0 ], a.u[ 1 ], a.u[ 2 ] );\n\n\t\tb.c = obb.center;\n\t\tb.e[ 0 ] = obb.halfSize.x;\n\t\tb.e[ 1 ] = obb.halfSize.y;\n\t\tb.e[ 2 ] = obb.halfSize.z;\n\t\tobb.rotation.extractBasis( b.u[ 0 ], b.u[ 1 ], b.u[ 2 ] );\n\n\t\t// compute rotation matrix expressing b in a's coordinate frame\n\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\tR[ i ][ j ] = a.u[ i ].dot( b.u[ j ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute translation vector\n\n\t\tv1.subVectors( b.c, a.c );\n\n\t\t// bring translation into a's coordinate frame\n\n\t\tt[ 0 ] = v1.dot( a.u[ 0 ] );\n\t\tt[ 1 ] = v1.dot( a.u[ 1 ] );\n\t\tt[ 2 ] = v1.dot( a.u[ 2 ] );\n\n\t\t// compute common subexpressions. Add in an epsilon term to\n\t\t// counteract arithmetic errors when two edges are parallel and\n\t\t// their cross product is (near) null\n\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\tAbsR[ i ][ j ] = Math.abs( R[ i ][ j ] ) + epsilon;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet ra, rb;\n\n\t\t// test axes L = A0, L = A1, L = A2\n\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tra = a.e[ i ];\n\t\t\trb = b.e[ 0 ] * AbsR[ i ][ 0 ] + b.e[ 1 ] * AbsR[ i ][ 1 ] + b.e[ 2 ] * AbsR[ i ][ 2 ];\n\t\t\tif ( Math.abs( t[ i ] ) > ra + rb ) return false;\n\n\n\t\t}\n\n\t\t// test axes L = B0, L = B1, L = B2\n\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tra = a.e[ 0 ] * AbsR[ 0 ][ i ] + a.e[ 1 ] * AbsR[ 1 ][ i ] + a.e[ 2 ] * AbsR[ 2 ][ i ];\n\t\t\trb = b.e[ i ];\n\t\t\tif ( Math.abs( t[ 0 ] * R[ 0 ][ i ] + t[ 1 ] * R[ 1 ][ i ] + t[ 2 ] * R[ 2 ][ i ] ) > ra + rb ) return false;\n\n\t\t}\n\n\t\t// test axis L = A0 x B0\n\n\t\tra = a.e[ 1 ] * AbsR[ 2 ][ 0 ] + a.e[ 2 ] * AbsR[ 1 ][ 0 ];\n\t\trb = b.e[ 1 ] * AbsR[ 0 ][ 2 ] + b.e[ 2 ] * AbsR[ 0 ][ 1 ];\n\t\tif ( Math.abs( t[ 2 ] * R[ 1 ][ 0 ] - t[ 1 ] * R[ 2 ][ 0 ] ) > ra + rb ) return false;\n\n\t\t// test axis L = A0 x B1\n\n\t\tra = a.e[ 1 ] * AbsR[ 2 ][ 1 ] + a.e[ 2 ] * AbsR[ 1 ][ 1 ];\n\t\trb = b.e[ 0 ] * AbsR[ 0 ][ 2 ] + b.e[ 2 ] * AbsR[ 0 ][ 0 ];\n\t\tif ( Math.abs( t[ 2 ] * R[ 1 ][ 1 ] - t[ 1 ] * R[ 2 ][ 1 ] ) > ra + rb ) return false;\n\n\t\t// test axis L = A0 x B2\n\n\t\tra = a.e[ 1 ] * AbsR[ 2 ][ 2 ] + a.e[ 2 ] * AbsR[ 1 ][ 2 ];\n\t\trb = b.e[ 0 ] * AbsR[ 0 ][ 1 ] + b.e[ 1 ] * AbsR[ 0 ][ 0 ];\n\t\tif ( Math.abs( t[ 2 ] * R[ 1 ][ 2 ] - t[ 1 ] * R[ 2 ][ 2 ] ) > ra + rb ) return false;\n\n\t\t// test axis L = A1 x B0\n\n\t\tra = a.e[ 0 ] * AbsR[ 2 ][ 0 ] + a.e[ 2 ] * AbsR[ 0 ][ 0 ];\n\t\trb = b.e[ 1 ] * AbsR[ 1 ][ 2 ] + b.e[ 2 ] * AbsR[ 1 ][ 1 ];\n\t\tif ( Math.abs( t[ 0 ] * R[ 2 ][ 0 ] - t[ 2 ] * R[ 0 ][ 0 ] ) > ra + rb ) return false;\n\n\t\t// test axis L = A1 x B1\n\n\t\tra = a.e[ 0 ] * AbsR[ 2 ][ 1 ] + a.e[ 2 ] * AbsR[ 0 ][ 1 ];\n\t\trb = b.e[ 0 ] * AbsR[ 1 ][ 2 ] + b.e[ 2 ] * AbsR[ 1 ][ 0 ];\n\t\tif ( Math.abs( t[ 0 ] * R[ 2 ][ 1 ] - t[ 2 ] * R[ 0 ][ 1 ] ) > ra + rb ) return false;\n\n\t\t// test axis L = A1 x B2\n\n\t\tra = a.e[ 0 ] * AbsR[ 2 ][ 2 ] + a.e[ 2 ] * AbsR[ 0 ][ 2 ];\n\t\trb = b.e[ 0 ] * AbsR[ 1 ][ 1 ] + b.e[ 1 ] * AbsR[ 1 ][ 0 ];\n\t\tif ( Math.abs( t[ 0 ] * R[ 2 ][ 2 ] - t[ 2 ] * R[ 0 ][ 2 ] ) > ra + rb ) return false;\n\n\t\t// test axis L = A2 x B0\n\n\t\tra = a.e[ 0 ] * AbsR[ 1 ][ 0 ] + a.e[ 1 ] * AbsR[ 0 ][ 0 ];\n\t\trb = b.e[ 1 ] * AbsR[ 2 ][ 2 ] + b.e[ 2 ] * AbsR[ 2 ][ 1 ];\n\t\tif ( Math.abs( t[ 1 ] * R[ 0 ][ 0 ] - t[ 0 ] * R[ 1 ][ 0 ] ) > ra + rb ) return false;\n\n\t\t// test axis L = A2 x B1\n\n\t\tra = a.e[ 0 ] * AbsR[ 1 ][ 1 ] + a.e[ 1 ] * AbsR[ 0 ][ 1 ];\n\t\trb = b.e[ 0 ] * AbsR[ 2 ][ 2 ] + b.e[ 2 ] * AbsR[ 2 ][ 0 ];\n\t\tif ( Math.abs( t[ 1 ] * R[ 0 ][ 1 ] - t[ 0 ] * R[ 1 ][ 1 ] ) > ra + rb ) return false;\n\n\t\t// test axis L = A2 x B2\n\n\t\tra = a.e[ 0 ] * AbsR[ 1 ][ 2 ] + a.e[ 1 ] * AbsR[ 0 ][ 2 ];\n\t\trb = b.e[ 0 ] * AbsR[ 2 ][ 1 ] + b.e[ 1 ] * AbsR[ 2 ][ 0 ];\n\t\tif ( Math.abs( t[ 1 ] * R[ 0 ][ 2 ] - t[ 0 ] * R[ 1 ][ 2 ] ) > ra + rb ) return false;\n\n\t\t// since no separating axis is found, the OBBs must be intersecting\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t* Reference: Testing Box Against Plane in Real-Time Collision Detection\n\t* by Christer Ericson (chapter 5.2.3)\n\t*/\n\tintersectsPlane( plane ) {\n\n\t\tthis.rotation.extractBasis( xAxis, yAxis, zAxis );\n\n\t\t// compute the projection interval radius of this OBB onto L(t) = this->center + t * p.normal;\n\n\t\tconst r = this.halfSize.x * Math.abs( plane.normal.dot( xAxis ) ) +\n\t\t\t\tthis.halfSize.y * Math.abs( plane.normal.dot( yAxis ) ) +\n\t\t\t\tthis.halfSize.z * Math.abs( plane.normal.dot( zAxis ) );\n\n\t\t// compute distance of the OBB's center from the plane\n\n\t\tconst d = plane.normal.dot( this.center ) - plane.constant;\n\n\t\t// Intersection occurs when distance d falls within [-r,+r] interval\n\n\t\treturn Math.abs( d ) <= r;\n\n\t}\n\n\t/**\n\t* Performs a ray/OBB intersection test and stores the intersection point\n\t* to the given 3D vector. If no intersection is detected, *null* is returned.\n\t*/\n\tintersectRay( ray, result ) {\n\n\t\t// the idea is to perform the intersection test in the local space\n\t\t// of the OBB.\n\n\t\tthis.getSize( size );\n\t\taabb.setFromCenterAndSize( v1.set( 0, 0, 0 ), size );\n\n\t\t// create a 4x4 transformation matrix\n\n\t\tmatrix.setFromMatrix3( this.rotation );\n\t\tmatrix.setPosition( this.center );\n\n\t\t// transform ray to the local space of the OBB\n\n\t\tinverse.copy( matrix ).invert();\n\t\tlocalRay.copy( ray ).applyMatrix4( inverse );\n\n\t\t// perform ray <-> AABB intersection test\n\n\t\tif ( localRay.intersectBox( aabb, result ) ) {\n\n\t\t\t// transform the intersection point back to world space\n\n\t\t\treturn result.applyMatrix4( matrix );\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t}\n\n\t/**\n\t* Performs a ray/OBB intersection test. Returns either true or false if\n\t* there is a intersection or not.\n\t*/\n\tintersectsRay( ray ) {\n\n\t\treturn this.intersectRay( ray, v1 ) !== null;\n\n\t}\n\n\tfromBox3( box3 ) {\n\n\t\tbox3.getCenter( this.center );\n\n\t\tbox3.getSize( this.halfSize ).multiplyScalar( 0.5 );\n\n\t\tthis.rotation.identity();\n\n\t\treturn this;\n\n\t}\n\n\tequals( obb ) {\n\n\t\treturn obb.center.equals( this.center ) &&\n\t\t\tobb.halfSize.equals( this.halfSize ) &&\n\t\t\tobb.rotation.equals( this.rotation );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst e = matrix.elements;\n\n\t\tlet sx = v1.set( e[ 0 ], e[ 1 ], e[ 2 ] ).length();\n\t\tconst sy = v1.set( e[ 4 ], e[ 5 ], e[ 6 ] ).length();\n\t\tconst sz = v1.set( e[ 8 ], e[ 9 ], e[ 10 ] ).length();\n\n\t\tconst det = matrix.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\trotationMatrix.setFromMatrix4( matrix );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\trotationMatrix.elements[ 0 ] *= invSX;\n\t\trotationMatrix.elements[ 1 ] *= invSX;\n\t\trotationMatrix.elements[ 2 ] *= invSX;\n\n\t\trotationMatrix.elements[ 3 ] *= invSY;\n\t\trotationMatrix.elements[ 4 ] *= invSY;\n\t\trotationMatrix.elements[ 5 ] *= invSY;\n\n\t\trotationMatrix.elements[ 6 ] *= invSZ;\n\t\trotationMatrix.elements[ 7 ] *= invSZ;\n\t\trotationMatrix.elements[ 8 ] *= invSZ;\n\n\t\tthis.rotation.multiply( rotationMatrix );\n\n\t\tthis.halfSize.x *= sx;\n\t\tthis.halfSize.y *= sy;\n\t\tthis.halfSize.z *= sz;\n\n\t\tv1.setFromMatrixPosition( matrix );\n\t\tthis.center.add( v1 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst obb = new OBB();\n\nexport { OBB };\n", "import {\n\tBox3,\n\tLine3,\n\tPlane,\n\tSphere,\n\tTriangle,\n\tVector3,\n\tLayers\n} from 'three';\nimport { Capsule } from '../math/Capsule.js';\n\n\nconst _v1 = new Vector3();\nconst _v2 = new Vector3();\nconst _point1 = new Vector3();\nconst _point2 = new Vector3();\nconst _plane = new Plane();\nconst _line1 = new Line3();\nconst _line2 = new Line3();\nconst _sphere = new Sphere();\nconst _capsule = new Capsule();\n\nconst _temp1 = new Vector3();\nconst _temp2 = new Vector3();\nconst _temp3 = new Vector3();\nconst EPS = 1e-10;\n\nfunction lineToLineClosestPoints( line1, line2, target1 = null, target2 = null ) {\n\n\tconst r = _temp1.copy( line1.end ).sub( line1.start );\n\tconst s = _temp2.copy( line2.end ).sub( line2.start );\n\tconst w = _temp3.copy( line2.start ).sub( line1.start );\n\n\tconst a = r.dot( s ),\n\t\tb = r.dot( r ),\n\t\tc = s.dot( s ),\n\t\td = s.dot( w ),\n\t\te = r.dot( w );\n\n\tlet t1, t2;\n\tconst divisor = b * c - a * a;\n\n\tif ( Math.abs( divisor ) < EPS ) {\n\n\t\tconst d1 = - d / c;\n\t\tconst d2 = ( a - d ) / c;\n\n\t\tif ( Math.abs( d1 - 0.5 ) < Math.abs( d2 - 0.5 ) ) {\n\n\t\t\tt1 = 0;\n\t\t\tt2 = d1;\n\n\t\t} else {\n\n\t\t\tt1 = 1;\n\t\t\tt2 = d2;\n\n\t\t}\n\n\t} else {\n\n\t\tt1 = ( d * a + e * c ) / divisor;\n\t\tt2 = ( t1 * a - d ) / c;\n\n\t}\n\n\tt2 = Math.max( 0, Math.min( 1, t2 ) );\n\tt1 = Math.max( 0, Math.min( 1, t1 ) );\n\n\tif ( target1 ) {\n\n\t\ttarget1.copy( r ).multiplyScalar( t1 ).add( line1.start );\n\n\t}\n\n\tif ( target2 ) {\n\n\t\ttarget2.copy( s ).multiplyScalar( t2 ).add( line2.start );\n\n\t}\n\n}\n\nclass Octree {\n\n\tconstructor( box ) {\n\n\t\tthis.box = box;\n\t\tthis.bounds = new Box3();\n\n\t\tthis.subTrees = [];\n\t\tthis.triangles = [];\n\t\tthis.layers = new Layers();\n\n\t}\n\n\taddTriangle( triangle ) {\n\n\t\tthis.bounds.min.x = Math.min( this.bounds.min.x, triangle.a.x, triangle.b.x, triangle.c.x );\n\t\tthis.bounds.min.y = Math.min( this.bounds.min.y, triangle.a.y, triangle.b.y, triangle.c.y );\n\t\tthis.bounds.min.z = Math.min( this.bounds.min.z, triangle.a.z, triangle.b.z, triangle.c.z );\n\t\tthis.bounds.max.x = Math.max( this.bounds.max.x, triangle.a.x, triangle.b.x, triangle.c.x );\n\t\tthis.bounds.max.y = Math.max( this.bounds.max.y, triangle.a.y, triangle.b.y, triangle.c.y );\n\t\tthis.bounds.max.z = Math.max( this.bounds.max.z, triangle.a.z, triangle.b.z, triangle.c.z );\n\n\t\tthis.triangles.push( triangle );\n\n\t\treturn this;\n\n\t}\n\n\tcalcBox() {\n\n\t\tthis.box = this.bounds.clone();\n\n\t\t// offset small amount to account for regular grid\n\t\tthis.box.min.x -= 0.01;\n\t\tthis.box.min.y -= 0.01;\n\t\tthis.box.min.z -= 0.01;\n\n\t\treturn this;\n\n\t}\n\n\tsplit( level ) {\n\n\t\tif ( ! this.box ) return;\n\n\t\tconst subTrees = [];\n\t\tconst halfsize = _v2.copy( this.box.max ).sub( this.box.min ).multiplyScalar( 0.5 );\n\n\t\tfor ( let x = 0; x < 2; x ++ ) {\n\n\t\t\tfor ( let y = 0; y < 2; y ++ ) {\n\n\t\t\t\tfor ( let z = 0; z < 2; z ++ ) {\n\n\t\t\t\t\tconst box = new Box3();\n\t\t\t\t\tconst v = _v1.set( x, y, z );\n\n\t\t\t\t\tbox.min.copy( this.box.min ).add( v.multiply( halfsize ) );\n\t\t\t\t\tbox.max.copy( box.min ).add( halfsize );\n\n\t\t\t\t\tsubTrees.push( new Octree( box ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet triangle;\n\n\t\twhile ( triangle = this.triangles.pop() ) {\n\n\t\t\tfor ( let i = 0; i < subTrees.length; i ++ ) {\n\n\t\t\t\tif ( subTrees[ i ].box.intersectsTriangle( triangle ) ) {\n\n\t\t\t\t\tsubTrees[ i ].triangles.push( triangle );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < subTrees.length; i ++ ) {\n\n\t\t\tconst len = subTrees[ i ].triangles.length;\n\n\t\t\tif ( len > 8 && level < 16 ) {\n\n\t\t\t\tsubTrees[ i ].split( level + 1 );\n\n\t\t\t}\n\n\t\t\tif ( len !== 0 ) {\n\n\t\t\t\tthis.subTrees.push( subTrees[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tbuild() {\n\n\t\tthis.calcBox();\n\t\tthis.split( 0 );\n\n\t\treturn this;\n\n\t}\n\n\tgetRayTriangles( ray, triangles ) {\n\n\t\tfor ( let i = 0; i < this.subTrees.length; i ++ ) {\n\n\t\t\tconst subTree = this.subTrees[ i ];\n\t\t\tif ( ! ray.intersectsBox( subTree.box ) ) continue;\n\n\t\t\tif ( subTree.triangles.length > 0 ) {\n\n\t\t\t\tfor ( let j = 0; j < subTree.triangles.length; j ++ ) {\n\n\t\t\t\t\tif ( triangles.indexOf( subTree.triangles[ j ] ) === - 1 ) triangles.push( subTree.triangles[ j ] );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tsubTree.getRayTriangles( ray, triangles );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn triangles;\n\n\t}\n\n\ttriangleCapsuleIntersect( capsule, triangle ) {\n\n\t\ttriangle.getPlane( _plane );\n\n\t\tconst d1 = _plane.distanceToPoint( capsule.start ) - capsule.radius;\n\t\tconst d2 = _plane.distanceToPoint( capsule.end ) - capsule.radius;\n\n\t\tif ( ( d1 > 0 && d2 > 0 ) || ( d1 < - capsule.radius && d2 < - capsule.radius ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tconst delta = Math.abs( d1 / ( Math.abs( d1 ) + Math.abs( d2 ) ) );\n\t\tconst intersectPoint = _v1.copy( capsule.start ).lerp( capsule.end, delta );\n\n\t\tif ( triangle.containsPoint( intersectPoint ) ) {\n\n\t\t\treturn { normal: _plane.normal.clone(), point: intersectPoint.clone(), depth: Math.abs( Math.min( d1, d2 ) ) };\n\n\t\t}\n\n\t\tconst r2 = capsule.radius * capsule.radius;\n\n\t\tconst line1 = _line1.set( capsule.start, capsule.end );\n\n\t\tconst lines = [\n\t\t\t[ triangle.a, triangle.b ],\n\t\t\t[ triangle.b, triangle.c ],\n\t\t\t[ triangle.c, triangle.a ]\n\t\t];\n\n\t\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\t\tconst line2 = _line2.set( lines[ i ][ 0 ], lines[ i ][ 1 ] );\n\n\t\t\tlineToLineClosestPoints( line1, line2, _point1, _point2 );\n\n\t\t\tif ( _point1.distanceToSquared( _point2 ) < r2 ) {\n\n\t\t\t\treturn {\n\t\t\t\t\tnormal: _point1.clone().sub( _point2 ).normalize(),\n\t\t\t\t\tpoint: _point2.clone(),\n\t\t\t\t\tdepth: capsule.radius - _point1.distanceTo( _point2 )\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\ttriangleSphereIntersect( sphere, triangle ) {\n\n\t\ttriangle.getPlane( _plane );\n\n\t\tif ( ! sphere.intersectsPlane( _plane ) ) return false;\n\n\t\tconst depth = Math.abs( _plane.distanceToSphere( sphere ) );\n\t\tconst r2 = sphere.radius * sphere.radius - depth * depth;\n\n\t\tconst plainPoint = _plane.projectPoint( sphere.center, _v1 );\n\n\t\tif ( triangle.containsPoint( sphere.center ) ) {\n\n\t\t\treturn { normal: _plane.normal.clone(), point: plainPoint.clone(), depth: Math.abs( _plane.distanceToSphere( sphere ) ) };\n\n\t\t}\n\n\t\tconst lines = [\n\t\t\t[ triangle.a, triangle.b ],\n\t\t\t[ triangle.b, triangle.c ],\n\t\t\t[ triangle.c, triangle.a ]\n\t\t];\n\n\t\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\t\t_line1.set( lines[ i ][ 0 ], lines[ i ][ 1 ] );\n\t\t\t_line1.closestPointToPoint( plainPoint, true, _v2 );\n\n\t\t\tconst d = _v2.distanceToSquared( sphere.center );\n\n\t\t\tif ( d < r2 ) {\n\n\t\t\t\treturn { normal: sphere.center.clone().sub( _v2 ).normalize(), point: _v2.clone(), depth: sphere.radius - Math.sqrt( d ) };\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tgetSphereTriangles( sphere, triangles ) {\n\n\t\tfor ( let i = 0; i < this.subTrees.length; i ++ ) {\n\n\t\t\tconst subTree = this.subTrees[ i ];\n\n\t\t\tif ( ! sphere.intersectsBox( subTree.box ) ) continue;\n\n\t\t\tif ( subTree.triangles.length > 0 ) {\n\n\t\t\t\tfor ( let j = 0; j < subTree.triangles.length; j ++ ) {\n\n\t\t\t\t\tif ( triangles.indexOf( subTree.triangles[ j ] ) === - 1 ) triangles.push( subTree.triangles[ j ] );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tsubTree.getSphereTriangles( sphere, triangles );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tgetCapsuleTriangles( capsule, triangles ) {\n\n\t\tfor ( let i = 0; i < this.subTrees.length; i ++ ) {\n\n\t\t\tconst subTree = this.subTrees[ i ];\n\n\t\t\tif ( ! capsule.intersectsBox( subTree.box ) ) continue;\n\n\t\t\tif ( subTree.triangles.length > 0 ) {\n\n\t\t\t\tfor ( let j = 0; j < subTree.triangles.length; j ++ ) {\n\n\t\t\t\t\tif ( triangles.indexOf( subTree.triangles[ j ] ) === - 1 ) triangles.push( subTree.triangles[ j ] );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tsubTree.getCapsuleTriangles( capsule, triangles );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tsphereIntersect( sphere ) {\n\n\t\t_sphere.copy( sphere );\n\n\t\tconst triangles = [];\n\t\tlet result, hit = false;\n\n\t\tthis.getSphereTriangles( sphere, triangles );\n\n\t\tfor ( let i = 0; i < triangles.length; i ++ ) {\n\n\t\t\tif ( result = this.triangleSphereIntersect( _sphere, triangles[ i ] ) ) {\n\n\t\t\t\thit = true;\n\n\t\t\t\t_sphere.center.add( result.normal.multiplyScalar( result.depth ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hit ) {\n\n\t\t\tconst collisionVector = _sphere.center.clone().sub( sphere.center );\n\t\t\tconst depth = collisionVector.length();\n\n\t\t\treturn { normal: collisionVector.normalize(), depth: depth };\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tcapsuleIntersect( capsule ) {\n\n\t\t_capsule.copy( capsule );\n\n\t\tconst triangles = [];\n\t\tlet result, hit = false;\n\n\t\tthis.getCapsuleTriangles( _capsule, triangles );\n\n\t\tfor ( let i = 0; i < triangles.length; i ++ ) {\n\n\t\t\tif ( result = this.triangleCapsuleIntersect( _capsule, triangles[ i ] ) ) {\n\n\t\t\t\thit = true;\n\n\t\t\t\t_capsule.translate( result.normal.multiplyScalar( result.depth ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hit ) {\n\n\t\t\tconst collisionVector = _capsule.getCenter( new Vector3() ).sub( capsule.getCenter( _v1 ) );\n\t\t\tconst depth = collisionVector.length();\n\n\t\t\treturn { normal: collisionVector.normalize(), depth: depth };\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\trayIntersect( ray ) {\n\n\t\tif ( ray.direction.length() === 0 ) return;\n\n\t\tconst triangles = [];\n\t\tlet triangle, position, distance = 1e100;\n\n\t\tthis.getRayTriangles( ray, triangles );\n\n\t\tfor ( let i = 0; i < triangles.length; i ++ ) {\n\n\t\t\tconst result = ray.intersectTriangle( triangles[ i ].a, triangles[ i ].b, triangles[ i ].c, true, _v1 );\n\n\t\t\tif ( result ) {\n\n\t\t\t\tconst newdistance = result.sub( ray.origin ).length();\n\n\t\t\t\tif ( distance > newdistance ) {\n\n\t\t\t\t\tposition = result.clone().add( ray.origin );\n\t\t\t\t\tdistance = newdistance;\n\t\t\t\t\ttriangle = triangles[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn distance < 1e100 ? { distance: distance, triangle: triangle, position: position } : false;\n\n\t}\n\n\tfromGraphNode( group ) {\n\n\t\tgroup.updateWorldMatrix( true, true );\n\n\t\tgroup.traverse( ( obj ) => {\n\n\t\t\tif ( obj.isMesh === true ) {\n\n\t\t\t\tif ( this.layers.test( obj.layers ) ) {\n\n\t\t\t\t\tlet geometry, isTemp = false;\n\n\t\t\t\t\tif ( obj.geometry.index !== null ) {\n\n\t\t\t\t\t\tisTemp = true;\n\t\t\t\t\t\tgeometry = obj.geometry.toNonIndexed();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgeometry = obj.geometry;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\t\t\t\tfor ( let i = 0; i < positionAttribute.count; i += 3 ) {\n\n\t\t\t\t\t\tconst v1 = new Vector3().fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t\tconst v2 = new Vector3().fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\t\tconst v3 = new Vector3().fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\t\tv1.applyMatrix4( obj.matrixWorld );\n\t\t\t\t\t\tv2.applyMatrix4( obj.matrixWorld );\n\t\t\t\t\t\tv3.applyMatrix4( obj.matrixWorld );\n\n\t\t\t\t\t\tthis.addTriangle( new Triangle( v1, v2, v3 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( isTemp ) {\n\n\t\t\t\t\t\tgeometry.dispose();\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.build();\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\tthis.box = null;\n\t\tthis.bounds.makeEmpty();\n\n\t\tthis.subTrees.length = 0;\n\t\tthis.triangles.length = 0;\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { Octree };\n", "// Ported from Stefan Gustavson's java implementation\n// http://staffwww.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf\n// Read Stefan's excellent paper for details on how this code works.\n//\n// Sean McCullough banksean@gmail.com\n//\n// Added 4D noise\n\n/**\n * You can pass in a random number generator object if you like.\n * It is assumed to have a random() method.\n */\nclass SimplexNoise {\n\n\tconstructor( r = Math ) {\n\n\t\tthis.grad3 = [[ 1, 1, 0 ], [ - 1, 1, 0 ], [ 1, - 1, 0 ], [ - 1, - 1, 0 ],\n\t\t\t[ 1, 0, 1 ], [ - 1, 0, 1 ], [ 1, 0, - 1 ], [ - 1, 0, - 1 ],\n\t\t\t[ 0, 1, 1 ], [ 0, - 1, 1 ], [ 0, 1, - 1 ], [ 0, - 1, - 1 ]];\n\n\t\tthis.grad4 = [[ 0, 1, 1, 1 ], [ 0, 1, 1, - 1 ], [ 0, 1, - 1, 1 ], [ 0, 1, - 1, - 1 ],\n\t\t\t[ 0, - 1, 1, 1 ], [ 0, - 1, 1, - 1 ], [ 0, - 1, - 1, 1 ], [ 0, - 1, - 1, - 1 ],\n\t\t\t[ 1, 0, 1, 1 ], [ 1, 0, 1, - 1 ], [ 1, 0, - 1, 1 ], [ 1, 0, - 1, - 1 ],\n\t\t\t[ - 1, 0, 1, 1 ], [ - 1, 0, 1, - 1 ], [ - 1, 0, - 1, 1 ], [ - 1, 0, - 1, - 1 ],\n\t\t\t[ 1, 1, 0, 1 ], [ 1, 1, 0, - 1 ], [ 1, - 1, 0, 1 ], [ 1, - 1, 0, - 1 ],\n\t\t\t[ - 1, 1, 0, 1 ], [ - 1, 1, 0, - 1 ], [ - 1, - 1, 0, 1 ], [ - 1, - 1, 0, - 1 ],\n\t\t\t[ 1, 1, 1, 0 ], [ 1, 1, - 1, 0 ], [ 1, - 1, 1, 0 ], [ 1, - 1, - 1, 0 ],\n\t\t\t[ - 1, 1, 1, 0 ], [ - 1, 1, - 1, 0 ], [ - 1, - 1, 1, 0 ], [ - 1, - 1, - 1, 0 ]];\n\n\t\tthis.p = [];\n\n\t\tfor ( let i = 0; i < 256; i ++ ) {\n\n\t\t\tthis.p[ i ] = Math.floor( r.random() * 256 );\n\n\t\t}\n\n\t\t// To remove the need for index wrapping, double the permutation table length\n\t\tthis.perm = [];\n\n\t\tfor ( let i = 0; i < 512; i ++ ) {\n\n\t\t\tthis.perm[ i ] = this.p[ i & 255 ];\n\n\t\t}\n\n\t\t// A lookup table to traverse the simplex around a given point in 4D.\n\t\t// Details can be found where this table is used, in the 4D noise method.\n\t\tthis.simplex = [\n\t\t\t[ 0, 1, 2, 3 ], [ 0, 1, 3, 2 ], [ 0, 0, 0, 0 ], [ 0, 2, 3, 1 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 1, 2, 3, 0 ],\n\t\t\t[ 0, 2, 1, 3 ], [ 0, 0, 0, 0 ], [ 0, 3, 1, 2 ], [ 0, 3, 2, 1 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 1, 3, 2, 0 ],\n\t\t\t[ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ],\n\t\t\t[ 1, 2, 0, 3 ], [ 0, 0, 0, 0 ], [ 1, 3, 0, 2 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 2, 3, 0, 1 ], [ 2, 3, 1, 0 ],\n\t\t\t[ 1, 0, 2, 3 ], [ 1, 0, 3, 2 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 2, 0, 3, 1 ], [ 0, 0, 0, 0 ], [ 2, 1, 3, 0 ],\n\t\t\t[ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ],\n\t\t\t[ 2, 0, 1, 3 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 3, 0, 1, 2 ], [ 3, 0, 2, 1 ], [ 0, 0, 0, 0 ], [ 3, 1, 2, 0 ],\n\t\t\t[ 2, 1, 0, 3 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 3, 1, 0, 2 ], [ 0, 0, 0, 0 ], [ 3, 2, 0, 1 ], [ 3, 2, 1, 0 ]];\n\n\t}\n\n\tdot( g, x, y ) {\n\n\t\treturn g[ 0 ] * x + g[ 1 ] * y;\n\n\t}\n\n\tdot3( g, x, y, z ) {\n\n\t\treturn g[ 0 ] * x + g[ 1 ] * y + g[ 2 ] * z;\n\n\t}\n\n\tdot4( g, x, y, z, w ) {\n\n\t\treturn g[ 0 ] * x + g[ 1 ] * y + g[ 2 ] * z + g[ 3 ] * w;\n\n\t}\n\n\tnoise( xin, yin ) {\n\n\t\tlet n0; // Noise contributions from the three corners\n\t\tlet n1;\n\t\tlet n2;\n\t\t// Skew the input space to determine which simplex cell we're in\n\t\tconst F2 = 0.5 * ( Math.sqrt( 3.0 ) - 1.0 );\n\t\tconst s = ( xin + yin ) * F2; // Hairy factor for 2D\n\t\tconst i = Math.floor( xin + s );\n\t\tconst j = Math.floor( yin + s );\n\t\tconst G2 = ( 3.0 - Math.sqrt( 3.0 ) ) / 6.0;\n\t\tconst t = ( i + j ) * G2;\n\t\tconst X0 = i - t; // Unskew the cell origin back to (x,y) space\n\t\tconst Y0 = j - t;\n\t\tconst x0 = xin - X0; // The x,y distances from the cell origin\n\t\tconst y0 = yin - Y0;\n\n\t\t// For the 2D case, the simplex shape is an equilateral triangle.\n\t\t// Determine which simplex we are in.\n\t\tlet i1; // Offsets for second (middle) corner of simplex in (i,j) coords\n\n\t\tlet j1;\n\t\tif ( x0 > y0 ) {\n\n\t\t\ti1 = 1; j1 = 0;\n\n\t\t\t// lower triangle, XY order: (0,0)->(1,0)->(1,1)\n\n\t\t}\telse {\n\n\t\t\ti1 = 0; j1 = 1;\n\n\t\t} // upper triangle, YX order: (0,0)->(0,1)->(1,1)\n\n\t\t// A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and\n\t\t// a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where\n\t\t// c = (3-sqrt(3))/6\n\t\tconst x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords\n\t\tconst y1 = y0 - j1 + G2;\n\t\tconst x2 = x0 - 1.0 + 2.0 * G2; // Offsets for last corner in (x,y) unskewed coords\n\t\tconst y2 = y0 - 1.0 + 2.0 * G2;\n\t\t// Work out the hashed gradient indices of the three simplex corners\n\t\tconst ii = i & 255;\n\t\tconst jj = j & 255;\n\t\tconst gi0 = this.perm[ ii + this.perm[ jj ] ] % 12;\n\t\tconst gi1 = this.perm[ ii + i1 + this.perm[ jj + j1 ] ] % 12;\n\t\tconst gi2 = this.perm[ ii + 1 + this.perm[ jj + 1 ] ] % 12;\n\t\t// Calculate the contribution from the three corners\n\t\tlet t0 = 0.5 - x0 * x0 - y0 * y0;\n\t\tif ( t0 < 0 ) n0 = 0.0;\n\t\telse {\n\n\t\t\tt0 *= t0;\n\t\t\tn0 = t0 * t0 * this.dot( this.grad3[ gi0 ], x0, y0 ); // (x,y) of grad3 used for 2D gradient\n\n\t\t}\n\n\t\tlet t1 = 0.5 - x1 * x1 - y1 * y1;\n\t\tif ( t1 < 0 ) n1 = 0.0;\n\t\telse {\n\n\t\t\tt1 *= t1;\n\t\t\tn1 = t1 * t1 * this.dot( this.grad3[ gi1 ], x1, y1 );\n\n\t\t}\n\n\t\tlet t2 = 0.5 - x2 * x2 - y2 * y2;\n\t\tif ( t2 < 0 ) n2 = 0.0;\n\t\telse {\n\n\t\t\tt2 *= t2;\n\t\t\tn2 = t2 * t2 * this.dot( this.grad3[ gi2 ], x2, y2 );\n\n\t\t}\n\n\t\t// Add contributions from each corner to get the final noise value.\n\t\t// The result is scaled to return values in the interval [-1,1].\n\t\treturn 70.0 * ( n0 + n1 + n2 );\n\n\t}\n\n\t// 3D simplex noise\n\tnoise3d( xin, yin, zin ) {\n\n\t\tlet n0; // Noise contributions from the four corners\n\t\tlet n1;\n\t\tlet n2;\n\t\tlet n3;\n\t\t// Skew the input space to determine which simplex cell we're in\n\t\tconst F3 = 1.0 / 3.0;\n\t\tconst s = ( xin + yin + zin ) * F3; // Very nice and simple skew factor for 3D\n\t\tconst i = Math.floor( xin + s );\n\t\tconst j = Math.floor( yin + s );\n\t\tconst k = Math.floor( zin + s );\n\t\tconst G3 = 1.0 / 6.0; // Very nice and simple unskew factor, too\n\t\tconst t = ( i + j + k ) * G3;\n\t\tconst X0 = i - t; // Unskew the cell origin back to (x,y,z) space\n\t\tconst Y0 = j - t;\n\t\tconst Z0 = k - t;\n\t\tconst x0 = xin - X0; // The x,y,z distances from the cell origin\n\t\tconst y0 = yin - Y0;\n\t\tconst z0 = zin - Z0;\n\n\t\t// For the 3D case, the simplex shape is a slightly irregular tetrahedron.\n\t\t// Determine which simplex we are in.\n\t\tlet i1; // Offsets for second corner of simplex in (i,j,k) coords\n\n\t\tlet j1;\n\t\tlet k1;\n\t\tlet i2; // Offsets for third corner of simplex in (i,j,k) coords\n\t\tlet j2;\n\t\tlet k2;\n\t\tif ( x0 >= y0 ) {\n\n\t\t\tif ( y0 >= z0 ) {\n\n\t\t\t\ti1 = 1; j1 = 0; k1 = 0; i2 = 1; j2 = 1; k2 = 0;\n\n\t\t\t\t// X Y Z order\n\n\t\t\t} else if ( x0 >= z0 ) {\n\n\t\t\t\ti1 = 1; j1 = 0; k1 = 0; i2 = 1; j2 = 0; k2 = 1;\n\n\t\t\t\t// X Z Y order\n\n\t\t\t} else {\n\n\t\t\t\ti1 = 0; j1 = 0; k1 = 1; i2 = 1; j2 = 0; k2 = 1;\n\n\t\t\t} // Z X Y order\n\n\t\t} else { // x0 y0 ) ? 32 : 0;\n\t\tconst c2 = ( x0 > z0 ) ? 16 : 0;\n\t\tconst c3 = ( y0 > z0 ) ? 8 : 0;\n\t\tconst c4 = ( x0 > w0 ) ? 4 : 0;\n\t\tconst c5 = ( y0 > w0 ) ? 2 : 0;\n\t\tconst c6 = ( z0 > w0 ) ? 1 : 0;\n\t\tconst c = c1 + c2 + c3 + c4 + c5 + c6;\n\n\t\t// simplex[c] is a 4-vector with the numbers 0, 1, 2 and 3 in some order.\n\t\t// Many values of c will never occur, since e.g. x>y>z>w makes x= 3 ? 1 : 0;\n\t\tconst j1 = simplex[ c ][ 1 ] >= 3 ? 1 : 0;\n\t\tconst k1 = simplex[ c ][ 2 ] >= 3 ? 1 : 0;\n\t\tconst l1 = simplex[ c ][ 3 ] >= 3 ? 1 : 0;\n\t\t// The number 2 in the \"simplex\" array is at the second largest coordinate.\n\t\tconst i2 = simplex[ c ][ 0 ] >= 2 ? 1 : 0;\n\t\tconst j2 = simplex[ c ][ 1 ] >= 2 ? 1 : 0;\n\t\tconst k2 = simplex[ c ][ 2 ] >= 2 ? 1 : 0;\n\t\tconst l2 = simplex[ c ][ 3 ] >= 2 ? 1 : 0;\n\t\t// The number 1 in the \"simplex\" array is at the second smallest coordinate.\n\t\tconst i3 = simplex[ c ][ 0 ] >= 1 ? 1 : 0;\n\t\tconst j3 = simplex[ c ][ 1 ] >= 1 ? 1 : 0;\n\t\tconst k3 = simplex[ c ][ 2 ] >= 1 ? 1 : 0;\n\t\tconst l3 = simplex[ c ][ 3 ] >= 1 ? 1 : 0;\n\t\t// The fifth corner has all coordinate offsets = 1, so no need to look that up.\n\t\tconst x1 = x0 - i1 + G4; // Offsets for second corner in (x,y,z,w) coords\n\t\tconst y1 = y0 - j1 + G4;\n\t\tconst z1 = z0 - k1 + G4;\n\t\tconst w1 = w0 - l1 + G4;\n\t\tconst x2 = x0 - i2 + 2.0 * G4; // Offsets for third corner in (x,y,z,w) coords\n\t\tconst y2 = y0 - j2 + 2.0 * G4;\n\t\tconst z2 = z0 - k2 + 2.0 * G4;\n\t\tconst w2 = w0 - l2 + 2.0 * G4;\n\t\tconst x3 = x0 - i3 + 3.0 * G4; // Offsets for fourth corner in (x,y,z,w) coords\n\t\tconst y3 = y0 - j3 + 3.0 * G4;\n\t\tconst z3 = z0 - k3 + 3.0 * G4;\n\t\tconst w3 = w0 - l3 + 3.0 * G4;\n\t\tconst x4 = x0 - 1.0 + 4.0 * G4; // Offsets for last corner in (x,y,z,w) coords\n\t\tconst y4 = y0 - 1.0 + 4.0 * G4;\n\t\tconst z4 = z0 - 1.0 + 4.0 * G4;\n\t\tconst w4 = w0 - 1.0 + 4.0 * G4;\n\t\t// Work out the hashed gradient indices of the five simplex corners\n\t\tconst ii = i & 255;\n\t\tconst jj = j & 255;\n\t\tconst kk = k & 255;\n\t\tconst ll = l & 255;\n\t\tconst gi0 = perm[ ii + perm[ jj + perm[ kk + perm[ ll ] ] ] ] % 32;\n\t\tconst gi1 = perm[ ii + i1 + perm[ jj + j1 + perm[ kk + k1 + perm[ ll + l1 ] ] ] ] % 32;\n\t\tconst gi2 = perm[ ii + i2 + perm[ jj + j2 + perm[ kk + k2 + perm[ ll + l2 ] ] ] ] % 32;\n\t\tconst gi3 = perm[ ii + i3 + perm[ jj + j3 + perm[ kk + k3 + perm[ ll + l3 ] ] ] ] % 32;\n\t\tconst gi4 = perm[ ii + 1 + perm[ jj + 1 + perm[ kk + 1 + perm[ ll + 1 ] ] ] ] % 32;\n\t\t// Calculate the contribution from the five corners\n\t\tlet t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0 - w0 * w0;\n\t\tif ( t0 < 0 ) n0 = 0.0;\n\t\telse {\n\n\t\t\tt0 *= t0;\n\t\t\tn0 = t0 * t0 * this.dot4( grad4[ gi0 ], x0, y0, z0, w0 );\n\n\t\t}\n\n\t\tlet t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1 - w1 * w1;\n\t\tif ( t1 < 0 ) n1 = 0.0;\n\t\telse {\n\n\t\t\tt1 *= t1;\n\t\t\tn1 = t1 * t1 * this.dot4( grad4[ gi1 ], x1, y1, z1, w1 );\n\n\t\t}\n\n\t\tlet t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2 - w2 * w2;\n\t\tif ( t2 < 0 ) n2 = 0.0;\n\t\telse {\n\n\t\t\tt2 *= t2;\n\t\t\tn2 = t2 * t2 * this.dot4( grad4[ gi2 ], x2, y2, z2, w2 );\n\n\t\t}\n\n\t\tlet t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3 - w3 * w3;\n\t\tif ( t3 < 0 ) n3 = 0.0;\n\t\telse {\n\n\t\t\tt3 *= t3;\n\t\t\tn3 = t3 * t3 * this.dot4( grad4[ gi3 ], x3, y3, z3, w3 );\n\n\t\t}\n\n\t\tlet t4 = 0.6 - x4 * x4 - y4 * y4 - z4 * z4 - w4 * w4;\n\t\tif ( t4 < 0 ) n4 = 0.0;\n\t\telse {\n\n\t\t\tt4 *= t4;\n\t\t\tn4 = t4 * t4 * this.dot4( grad4[ gi4 ], x4, y4, z4, w4 );\n\n\t\t}\n\n\t\t// Sum up and scale the result to cover the range [-1,1]\n\t\treturn 27.0 * ( n0 + n1 + n2 + n3 + n4 );\n\n\t}\n\n}\n\nexport { SimplexNoise };\n", "import {\n\tLine3,\n\tMesh,\n\tPlane,\n\tVector3\n} from 'three';\nimport { ConvexGeometry } from '../geometries/ConvexGeometry.js';\n\n/**\n * @fileoverview This class can be used to subdivide a convex Geometry object into pieces.\n *\n * Usage:\n *\n * Use the function prepareBreakableObject to prepare a Mesh object to be broken.\n *\n * Then, call the various functions to subdivide the object (subdivideByImpact, cutByPlane)\n *\n * Sub-objects that are product of subdivision don't need prepareBreakableObject to be called on them.\n *\n * Requisites for the object:\n *\n * - Mesh object must have a buffer geometry and a material\n *\n * - Vertex normals must be planar (not smoothed)\n *\n * - The geometry must be convex (this is not checked in the library). You can create convex\n * geometries with ConvexGeometry. The BoxGeometry, SphereGeometry and other convex primitives\n * can also be used.\n *\n * Note: This lib adds member variables to object's userData member (see prepareBreakableObject function)\n * Use with caution and read the code when using with other libs.\n *\n * @param {double} minSizeForBreak Min size a debris can have to break.\n * @param {double} smallDelta Max distance to consider that a point belongs to a plane.\n *\n*/\n\nconst _v1 = new Vector3();\n\nclass ConvexObjectBreaker {\n\n\tconstructor( minSizeForBreak = 1.4, smallDelta = 0.0001 ) {\n\n\t\tthis.minSizeForBreak = minSizeForBreak;\n\t\tthis.smallDelta = smallDelta;\n\n\t\tthis.tempLine1 = new Line3();\n\t\tthis.tempPlane1 = new Plane();\n\t\tthis.tempPlane2 = new Plane();\n\t\tthis.tempPlane_Cut = new Plane();\n\t\tthis.tempCM1 = new Vector3();\n\t\tthis.tempCM2 = new Vector3();\n\t\tthis.tempVector3 = new Vector3();\n\t\tthis.tempVector3_2 = new Vector3();\n\t\tthis.tempVector3_3 = new Vector3();\n\t\tthis.tempVector3_P0 = new Vector3();\n\t\tthis.tempVector3_P1 = new Vector3();\n\t\tthis.tempVector3_P2 = new Vector3();\n\t\tthis.tempVector3_N0 = new Vector3();\n\t\tthis.tempVector3_N1 = new Vector3();\n\t\tthis.tempVector3_AB = new Vector3();\n\t\tthis.tempVector3_CB = new Vector3();\n\t\tthis.tempResultObjects = { object1: null, object2: null };\n\n\t\tthis.segments = [];\n\t\tconst n = 30 * 30;\n\t\tfor ( let i = 0; i < n; i ++ ) this.segments[ i ] = false;\n\n\t}\n\n\tprepareBreakableObject( object, mass, velocity, angularVelocity, breakable ) {\n\n\t\t// object is a Object3d (normally a Mesh), must have a buffer geometry, and it must be convex.\n\t\t// Its material property is propagated to its children (sub-pieces)\n\t\t// mass must be > 0\n\n\t\tconst userData = object.userData;\n\t\tuserData.mass = mass;\n\t\tuserData.velocity = velocity.clone();\n\t\tuserData.angularVelocity = angularVelocity.clone();\n\t\tuserData.breakable = breakable;\n\n\t}\n\n\t/*\n\t * @param {int} maxRadialIterations Iterations for radial cuts.\n\t * @param {int} maxRandomIterations Max random iterations for not-radial cuts\n\t *\n\t * Returns the array of pieces\n\t */\n\tsubdivideByImpact( object, pointOfImpact, normal, maxRadialIterations, maxRandomIterations ) {\n\n\t\tconst debris = [];\n\n\t\tconst tempPlane1 = this.tempPlane1;\n\t\tconst tempPlane2 = this.tempPlane2;\n\n\t\tthis.tempVector3.addVectors( pointOfImpact, normal );\n\t\ttempPlane1.setFromCoplanarPoints( pointOfImpact, object.position, this.tempVector3 );\n\n\t\tconst maxTotalIterations = maxRandomIterations + maxRadialIterations;\n\n\t\tconst scope = this;\n\n\t\tfunction subdivideRadial( subObject, startAngle, endAngle, numIterations ) {\n\n\t\t\tif ( Math.random() < numIterations * 0.05 || numIterations > maxTotalIterations ) {\n\n\t\t\t\tdebris.push( subObject );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tlet angle = Math.PI;\n\n\t\t\tif ( numIterations === 0 ) {\n\n\t\t\t\ttempPlane2.normal.copy( tempPlane1.normal );\n\t\t\t\ttempPlane2.constant = tempPlane1.constant;\n\n\t\t\t} else {\n\n\t\t\t\tif ( numIterations <= maxRadialIterations ) {\n\n\t\t\t\t\tangle = ( endAngle - startAngle ) * ( 0.2 + 0.6 * Math.random() ) + startAngle;\n\n\t\t\t\t\t// Rotate tempPlane2 at impact point around normal axis and the angle\n\t\t\t\t\tscope.tempVector3_2.copy( object.position ).sub( pointOfImpact ).applyAxisAngle( normal, angle ).add( pointOfImpact );\n\t\t\t\t\ttempPlane2.setFromCoplanarPoints( pointOfImpact, scope.tempVector3, scope.tempVector3_2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tangle = ( ( 0.5 * ( numIterations & 1 ) ) + 0.2 * ( 2 - Math.random() ) ) * Math.PI;\n\n\t\t\t\t\t// Rotate tempPlane2 at object position around normal axis and the angle\n\t\t\t\t\tscope.tempVector3_2.copy( pointOfImpact ).sub( subObject.position ).applyAxisAngle( normal, angle ).add( subObject.position );\n\t\t\t\t\tscope.tempVector3_3.copy( normal ).add( subObject.position );\n\t\t\t\t\ttempPlane2.setFromCoplanarPoints( subObject.position, scope.tempVector3_3, scope.tempVector3_2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Perform the cut\n\t\t\tscope.cutByPlane( subObject, tempPlane2, scope.tempResultObjects );\n\n\t\t\tconst obj1 = scope.tempResultObjects.object1;\n\t\t\tconst obj2 = scope.tempResultObjects.object2;\n\n\t\t\tif ( obj1 ) {\n\n\t\t\t\tsubdivideRadial( obj1, startAngle, angle, numIterations + 1 );\n\n\t\t\t}\n\n\t\t\tif ( obj2 ) {\n\n\t\t\t\tsubdivideRadial( obj2, angle, endAngle, numIterations + 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tsubdivideRadial( object, 0, 2 * Math.PI, 0 );\n\n\t\treturn debris;\n\n\t}\n\n\tcutByPlane( object, plane, output ) {\n\n\t\t// Returns breakable objects in output.object1 and output.object2 members, the resulting 2 pieces of the cut.\n\t\t// object2 can be null if the plane doesn't cut the object.\n\t\t// object1 can be null only in case of internal error\n\t\t// Returned value is number of pieces, 0 for error.\n\n\t\tconst geometry = object.geometry;\n\t\tconst coords = geometry.attributes.position.array;\n\t\tconst normals = geometry.attributes.normal.array;\n\n\t\tconst numPoints = coords.length / 3;\n\t\tlet numFaces = numPoints / 3;\n\n\t\tlet indices = geometry.getIndex();\n\n\t\tif ( indices ) {\n\n\t\t\tindices = indices.array;\n\t\t\tnumFaces = indices.length / 3;\n\n\t\t}\n\n\t\tfunction getVertexIndex( faceIdx, vert ) {\n\n\t\t\t// vert = 0, 1 or 2.\n\n\t\t\tconst idx = faceIdx * 3 + vert;\n\n\t\t\treturn indices ? indices[ idx ] : idx;\n\n\t\t}\n\n\t\tconst points1 = [];\n\t\tconst points2 = [];\n\n\t\tconst delta = this.smallDelta;\n\n\t\t// Reset segments mark\n\t\tconst numPointPairs = numPoints * numPoints;\n\t\tfor ( let i = 0; i < numPointPairs; i ++ ) this.segments[ i ] = false;\n\n\t\tconst p0 = this.tempVector3_P0;\n\t\tconst p1 = this.tempVector3_P1;\n\t\tconst n0 = this.tempVector3_N0;\n\t\tconst n1 = this.tempVector3_N1;\n\n\t\t// Iterate through the faces to mark edges shared by coplanar faces\n\t\tfor ( let i = 0; i < numFaces - 1; i ++ ) {\n\n\t\t\tconst a1 = getVertexIndex( i, 0 );\n\t\t\tconst b1 = getVertexIndex( i, 1 );\n\t\t\tconst c1 = getVertexIndex( i, 2 );\n\n\t\t\t// Assuming all 3 vertices have the same normal\n\t\t\tn0.set( normals[ a1 ], normals[ a1 ] + 1, normals[ a1 ] + 2 );\n\n\t\t\tfor ( let j = i + 1; j < numFaces; j ++ ) {\n\n\t\t\t\tconst a2 = getVertexIndex( j, 0 );\n\t\t\t\tconst b2 = getVertexIndex( j, 1 );\n\t\t\t\tconst c2 = getVertexIndex( j, 2 );\n\n\t\t\t\t// Assuming all 3 vertices have the same normal\n\t\t\t\tn1.set( normals[ a2 ], normals[ a2 ] + 1, normals[ a2 ] + 2 );\n\n\t\t\t\tconst coplanar = 1 - n0.dot( n1 ) < delta;\n\n\t\t\t\tif ( coplanar ) {\n\n\t\t\t\t\tif ( a1 === a2 || a1 === b2 || a1 === c2 ) {\n\n\t\t\t\t\t\tif ( b1 === a2 || b1 === b2 || b1 === c2 ) {\n\n\t\t\t\t\t\t\tthis.segments[ a1 * numPoints + b1 ] = true;\n\t\t\t\t\t\t\tthis.segments[ b1 * numPoints + a1 ] = true;\n\n\t\t\t\t\t\t}\telse {\n\n\t\t\t\t\t\t\tthis.segments[ c1 * numPoints + a1 ] = true;\n\t\t\t\t\t\t\tthis.segments[ a1 * numPoints + c1 ] = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\telse if ( b1 === a2 || b1 === b2 || b1 === c2 ) {\n\n\t\t\t\t\t\tthis.segments[ c1 * numPoints + b1 ] = true;\n\t\t\t\t\t\tthis.segments[ b1 * numPoints + c1 ] = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Transform the plane to object local space\n\t\tconst localPlane = this.tempPlane_Cut;\n\t\tobject.updateMatrix();\n\t\tConvexObjectBreaker.transformPlaneToLocalSpace( plane, object.matrix, localPlane );\n\n\t\t// Iterate through the faces adding points to both pieces\n\t\tfor ( let i = 0; i < numFaces; i ++ ) {\n\n\t\t\tconst va = getVertexIndex( i, 0 );\n\t\t\tconst vb = getVertexIndex( i, 1 );\n\t\t\tconst vc = getVertexIndex( i, 2 );\n\n\t\t\tfor ( let segment = 0; segment < 3; segment ++ ) {\n\n\t\t\t\tconst i0 = segment === 0 ? va : ( segment === 1 ? vb : vc );\n\t\t\t\tconst i1 = segment === 0 ? vb : ( segment === 1 ? vc : va );\n\n\t\t\t\tconst segmentState = this.segments[ i0 * numPoints + i1 ];\n\n\t\t\t\tif ( segmentState ) continue; // The segment already has been processed in another face\n\n\t\t\t\t// Mark segment as processed (also inverted segment)\n\t\t\t\tthis.segments[ i0 * numPoints + i1 ] = true;\n\t\t\t\tthis.segments[ i1 * numPoints + i0 ] = true;\n\n\t\t\t\tp0.set( coords[ 3 * i0 ], coords[ 3 * i0 + 1 ], coords[ 3 * i0 + 2 ] );\n\t\t\t\tp1.set( coords[ 3 * i1 ], coords[ 3 * i1 + 1 ], coords[ 3 * i1 + 2 ] );\n\n\t\t\t\t// mark: 1 for negative side, 2 for positive side, 3 for coplanar point\n\t\t\t\tlet mark0 = 0;\n\n\t\t\t\tlet d = localPlane.distanceToPoint( p0 );\n\n\t\t\t\tif ( d > delta ) {\n\n\t\t\t\t\tmark0 = 2;\n\t\t\t\t\tpoints2.push( p0.clone() );\n\n\t\t\t\t} else if ( d < - delta ) {\n\n\t\t\t\t\tmark0 = 1;\n\t\t\t\t\tpoints1.push( p0.clone() );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmark0 = 3;\n\t\t\t\t\tpoints1.push( p0.clone() );\n\t\t\t\t\tpoints2.push( p0.clone() );\n\n\t\t\t\t}\n\n\t\t\t\t// mark: 1 for negative side, 2 for positive side, 3 for coplanar point\n\t\t\t\tlet mark1 = 0;\n\n\t\t\t\td = localPlane.distanceToPoint( p1 );\n\n\t\t\t\tif ( d > delta ) {\n\n\t\t\t\t\tmark1 = 2;\n\t\t\t\t\tpoints2.push( p1.clone() );\n\n\t\t\t\t} else if ( d < - delta ) {\n\n\t\t\t\t\tmark1 = 1;\n\t\t\t\t\tpoints1.push( p1.clone() );\n\n\t\t\t\t}\telse {\n\n\t\t\t\t\tmark1 = 3;\n\t\t\t\t\tpoints1.push( p1.clone() );\n\t\t\t\t\tpoints2.push( p1.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ( mark0 === 1 && mark1 === 2 ) || ( mark0 === 2 && mark1 === 1 ) ) {\n\n\t\t\t\t\t// Intersection of segment with the plane\n\n\t\t\t\t\tthis.tempLine1.start.copy( p0 );\n\t\t\t\t\tthis.tempLine1.end.copy( p1 );\n\n\t\t\t\t\tlet intersection = new Vector3();\n\t\t\t\t\tintersection = localPlane.intersectLine( this.tempLine1, intersection );\n\n\t\t\t\t\tif ( intersection === null ) {\n\n\t\t\t\t\t\t// Shouldn't happen\n\t\t\t\t\t\tconsole.error( 'Internal error: segment does not intersect plane.' );\n\t\t\t\t\t\toutput.segmentedObject1 = null;\n\t\t\t\t\t\toutput.segmentedObject2 = null;\n\t\t\t\t\t\treturn 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tpoints1.push( intersection );\n\t\t\t\t\tpoints2.push( intersection.clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Calculate debris mass (very fast and imprecise):\n\t\tconst newMass = object.userData.mass * 0.5;\n\n\t\t// Calculate debris Center of Mass (again fast and imprecise)\n\t\tthis.tempCM1.set( 0, 0, 0 );\n\t\tlet radius1 = 0;\n\t\tconst numPoints1 = points1.length;\n\n\t\tif ( numPoints1 > 0 ) {\n\n\t\t\tfor ( let i = 0; i < numPoints1; i ++ ) this.tempCM1.add( points1[ i ] );\n\n\t\t\tthis.tempCM1.divideScalar( numPoints1 );\n\t\t\tfor ( let i = 0; i < numPoints1; i ++ ) {\n\n\t\t\t\tconst p = points1[ i ];\n\t\t\t\tp.sub( this.tempCM1 );\n\t\t\t\tradius1 = Math.max( radius1, p.x, p.y, p.z );\n\n\t\t\t}\n\n\t\t\tthis.tempCM1.add( object.position );\n\n\t\t}\n\n\t\tthis.tempCM2.set( 0, 0, 0 );\n\t\tlet radius2 = 0;\n\t\tconst numPoints2 = points2.length;\n\t\tif ( numPoints2 > 0 ) {\n\n\t\t\tfor ( let i = 0; i < numPoints2; i ++ ) this.tempCM2.add( points2[ i ] );\n\n\t\t\tthis.tempCM2.divideScalar( numPoints2 );\n\t\t\tfor ( let i = 0; i < numPoints2; i ++ ) {\n\n\t\t\t\tconst p = points2[ i ];\n\t\t\t\tp.sub( this.tempCM2 );\n\t\t\t\tradius2 = Math.max( radius2, p.x, p.y, p.z );\n\n\t\t\t}\n\n\t\t\tthis.tempCM2.add( object.position );\n\n\t\t}\n\n\t\tlet object1 = null;\n\t\tlet object2 = null;\n\n\t\tlet numObjects = 0;\n\n\t\tif ( numPoints1 > 4 ) {\n\n\t\t\tobject1 = new Mesh( new ConvexGeometry( points1 ), object.material );\n\t\t\tobject1.position.copy( this.tempCM1 );\n\t\t\tobject1.quaternion.copy( object.quaternion );\n\n\t\t\tthis.prepareBreakableObject( object1, newMass, object.userData.velocity, object.userData.angularVelocity, 2 * radius1 > this.minSizeForBreak );\n\n\t\t\tnumObjects ++;\n\n\t\t}\n\n\t\tif ( numPoints2 > 4 ) {\n\n\t\t\tobject2 = new Mesh( new ConvexGeometry( points2 ), object.material );\n\t\t\tobject2.position.copy( this.tempCM2 );\n\t\t\tobject2.quaternion.copy( object.quaternion );\n\n\t\t\tthis.prepareBreakableObject( object2, newMass, object.userData.velocity, object.userData.angularVelocity, 2 * radius2 > this.minSizeForBreak );\n\n\t\t\tnumObjects ++;\n\n\t\t}\n\n\t\toutput.object1 = object1;\n\t\toutput.object2 = object2;\n\n\t\treturn numObjects;\n\n\t}\n\n\tstatic transformFreeVector( v, m ) {\n\n\t\t// input:\n\t\t// vector interpreted as a free vector\n\t\t// THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n\t\tconst x = v.x, y = v.y, z = v.z;\n\t\tconst e = m.elements;\n\n\t\tv.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tv.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tv.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn v;\n\n\t}\n\n\tstatic transformFreeVectorInverse( v, m ) {\n\n\t\t// input:\n\t\t// vector interpreted as a free vector\n\t\t// THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n\t\tconst x = v.x, y = v.y, z = v.z;\n\t\tconst e = m.elements;\n\n\t\tv.x = e[ 0 ] * x + e[ 1 ] * y + e[ 2 ] * z;\n\t\tv.y = e[ 4 ] * x + e[ 5 ] * y + e[ 6 ] * z;\n\t\tv.z = e[ 8 ] * x + e[ 9 ] * y + e[ 10 ] * z;\n\n\t\treturn v;\n\n\t}\n\n\tstatic transformTiedVectorInverse( v, m ) {\n\n\t\t// input:\n\t\t// vector interpreted as a tied (ordinary) vector\n\t\t// THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n\t\tconst x = v.x, y = v.y, z = v.z;\n\t\tconst e = m.elements;\n\n\t\tv.x = e[ 0 ] * x + e[ 1 ] * y + e[ 2 ] * z - e[ 12 ];\n\t\tv.y = e[ 4 ] * x + e[ 5 ] * y + e[ 6 ] * z - e[ 13 ];\n\t\tv.z = e[ 8 ] * x + e[ 9 ] * y + e[ 10 ] * z - e[ 14 ];\n\n\t\treturn v;\n\n\t}\n\n\tstatic transformPlaneToLocalSpace( plane, m, resultPlane ) {\n\n\t\tresultPlane.normal.copy( plane.normal );\n\t\tresultPlane.constant = plane.constant;\n\n\t\tconst referencePoint = ConvexObjectBreaker.transformTiedVectorInverse( plane.coplanarPoint( _v1 ), m );\n\n\t\tConvexObjectBreaker.transformFreeVectorInverse( resultPlane.normal, m );\n\n\t\t// recalculate constant (like in setFromNormalAndCoplanarPoint)\n\t\tresultPlane.constant = - referencePoint.dot( resultPlane.normal );\n\n\t}\n\n}\n\nexport { ConvexObjectBreaker };\n", "import {\n\tBufferGeometry,\n\tFloat32BufferAttribute,\n\tOrthographicCamera,\n\tMesh\n} from 'three';\n\nclass Pass {\n\n\tconstructor() {\n\n\t\tthis.isPass = true;\n\n\t\t// if set to true, the pass is processed by the composer\n\t\tthis.enabled = true;\n\n\t\t// if set to true, the pass indicates to swap read and write buffer after rendering\n\t\tthis.needsSwap = true;\n\n\t\t// if set to true, the pass clears its buffer before rendering\n\t\tthis.clear = false;\n\n\t\t// if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n\t\tthis.renderToScreen = false;\n\n\t}\n\n\tsetSize( /* width, height */ ) {}\n\n\trender( /* renderer, writeBuffer, readBuffer, deltaTime, maskActive */ ) {\n\n\t\tconsole.error( 'THREE.Pass: .render() must be implemented in derived pass.' );\n\n\t}\n\n\tdispose() {}\n\n}\n\n// Helper for passes that need to fill the viewport with a single quad.\n\nconst _camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\n\n// https://github.com/mrdoob/three.js/pull/21358\n\nclass FullscreenTriangleGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( [ - 1, 3, 0, - 1, - 1, 0, 3, - 1, 0 ], 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( [ 0, 2, 0, 0, 2, 0 ], 2 ) );\n\n\t}\n\n}\n\nconst _geometry = new FullscreenTriangleGeometry();\n\nclass FullScreenQuad {\n\n\tconstructor( material ) {\n\n\t\tthis._mesh = new Mesh( _geometry, material );\n\n\t}\n\n\tdispose() {\n\n\t\tthis._mesh.geometry.dispose();\n\n\t}\n\n\trender( renderer ) {\n\n\t\trenderer.render( this._mesh, _camera );\n\n\t}\n\n\tget material() {\n\n\t\treturn this._mesh.material;\n\n\t}\n\n\tset material( value ) {\n\n\t\tthis._mesh.material = value;\n\n\t}\n\n}\n\nexport { Pass, FullScreenQuad };\n", "import {\n\tClampToEdgeWrapping,\n\tDataTexture,\n\tFloatType,\n\tNearestFilter,\n\tRGBAFormat,\n\tShaderMaterial,\n\tWebGLRenderTarget\n} from 'three';\n\nimport { FullScreenQuad } from '../postprocessing/Pass.js';\n\n/**\n * GPUComputationRenderer, based on SimulationRenderer by zz85\n *\n * The GPUComputationRenderer uses the concept of variables. These variables are RGBA float textures that hold 4 floats\n * for each compute element (texel)\n *\n * Each variable has a fragment shader that defines the computation made to obtain the variable in question.\n * You can use as many variables you need, and make dependencies so you can use textures of other variables in the shader\n * (the sampler uniforms are added automatically) Most of the variables will need themselves as dependency.\n *\n * The renderer has actually two render targets per variable, to make ping-pong. Textures from the current frame are used\n * as inputs to render the textures of the next frame.\n *\n * The render targets of the variables can be used as input textures for your visualization shaders.\n *\n * Variable names should be valid identifiers and should not collide with THREE GLSL used identifiers.\n * a common approach could be to use 'texture' prefixing the variable name; i.e texturePosition, textureVelocity...\n *\n * The size of the computation (sizeX * sizeY) is defined as 'resolution' automatically in the shader. For example:\n * #DEFINE resolution vec2( 1024.0, 1024.0 )\n *\n * -------------\n *\n * Basic use:\n *\n * // Initialization...\n *\n * // Create computation renderer\n * const gpuCompute = new GPUComputationRenderer( 1024, 1024, renderer );\n *\n * // Create initial state float textures\n * const pos0 = gpuCompute.createTexture();\n * const vel0 = gpuCompute.createTexture();\n * // and fill in here the texture data...\n *\n * // Add texture variables\n * const velVar = gpuCompute.addVariable( \"textureVelocity\", fragmentShaderVel, vel0 );\n * const posVar = gpuCompute.addVariable( \"texturePosition\", fragmentShaderPos, pos0 );\n *\n * // Add variable dependencies\n * gpuCompute.setVariableDependencies( velVar, [ velVar, posVar ] );\n * gpuCompute.setVariableDependencies( posVar, [ velVar, posVar ] );\n *\n * // Add custom uniforms\n * velVar.material.uniforms.time = { value: 0.0 };\n *\n * // Check for completeness\n * const error = gpuCompute.init();\n * if ( error !== null ) {\n *\t\tconsole.error( error );\n * }\n *\n *\n * // In each frame...\n *\n * // Compute!\n * gpuCompute.compute();\n *\n * // Update texture uniforms in your visualization materials with the gpu renderer output\n * myMaterial.uniforms.myTexture.value = gpuCompute.getCurrentRenderTarget( posVar ).texture;\n *\n * // Do your rendering\n * renderer.render( myScene, myCamera );\n *\n * -------------\n *\n * Also, you can use utility functions to create ShaderMaterial and perform computations (rendering between textures)\n * Note that the shaders can have multiple input textures.\n *\n * const myFilter1 = gpuCompute.createShaderMaterial( myFilterFragmentShader1, { theTexture: { value: null } } );\n * const myFilter2 = gpuCompute.createShaderMaterial( myFilterFragmentShader2, { theTexture: { value: null } } );\n *\n * const inputTexture = gpuCompute.createTexture();\n *\n * // Fill in here inputTexture...\n *\n * myFilter1.uniforms.theTexture.value = inputTexture;\n *\n * const myRenderTarget = gpuCompute.createRenderTarget();\n * myFilter2.uniforms.theTexture.value = myRenderTarget.texture;\n *\n * const outputRenderTarget = gpuCompute.createRenderTarget();\n *\n * // Now use the output texture where you want:\n * myMaterial.uniforms.map.value = outputRenderTarget.texture;\n *\n * // And compute each frame, before rendering to screen:\n * gpuCompute.doRenderTarget( myFilter1, myRenderTarget );\n * gpuCompute.doRenderTarget( myFilter2, outputRenderTarget );\n *\n *\n *\n * @param {int} sizeX Computation problem size is always 2d: sizeX * sizeY elements.\n * @param {int} sizeY Computation problem size is always 2d: sizeX * sizeY elements.\n * @param {WebGLRenderer} renderer The renderer\n */\n\nclass GPUComputationRenderer {\n\n\tconstructor( sizeX, sizeY, renderer ) {\n\n\t\tthis.variables = [];\n\n\t\tthis.currentTextureIndex = 0;\n\n\t\tlet dataType = FloatType;\n\n\t\tconst passThruUniforms = {\n\t\t\tpassThruTexture: { value: null }\n\t\t};\n\n\t\tconst passThruShader = createShaderMaterial( getPassThroughFragmentShader(), passThruUniforms );\n\n\t\tconst quad = new FullScreenQuad( passThruShader );\n\n\t\tthis.setDataType = function ( type ) {\n\n\t\t\tdataType = type;\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addVariable = function ( variableName, computeFragmentShader, initialValueTexture ) {\n\n\t\t\tconst material = this.createShaderMaterial( computeFragmentShader );\n\n\t\t\tconst variable = {\n\t\t\t\tname: variableName,\n\t\t\t\tinitialValueTexture: initialValueTexture,\n\t\t\t\tmaterial: material,\n\t\t\t\tdependencies: null,\n\t\t\t\trenderTargets: [],\n\t\t\t\twrapS: null,\n\t\t\t\twrapT: null,\n\t\t\t\tminFilter: NearestFilter,\n\t\t\t\tmagFilter: NearestFilter\n\t\t\t};\n\n\t\t\tthis.variables.push( variable );\n\n\t\t\treturn variable;\n\n\t\t};\n\n\t\tthis.setVariableDependencies = function ( variable, dependencies ) {\n\n\t\t\tvariable.dependencies = dependencies;\n\n\t\t};\n\n\t\tthis.init = function () {\n\n\t\t\tif ( renderer.capabilities.maxVertexTextures === 0 ) {\n\n\t\t\t\treturn 'No support for vertex shader textures.';\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < this.variables.length; i ++ ) {\n\n\t\t\t\tconst variable = this.variables[ i ];\n\n\t\t\t\t// Creates rendertargets and initialize them with input texture\n\t\t\t\tvariable.renderTargets[ 0 ] = this.createRenderTarget( sizeX, sizeY, variable.wrapS, variable.wrapT, variable.minFilter, variable.magFilter );\n\t\t\t\tvariable.renderTargets[ 1 ] = this.createRenderTarget( sizeX, sizeY, variable.wrapS, variable.wrapT, variable.minFilter, variable.magFilter );\n\t\t\t\tthis.renderTexture( variable.initialValueTexture, variable.renderTargets[ 0 ] );\n\t\t\t\tthis.renderTexture( variable.initialValueTexture, variable.renderTargets[ 1 ] );\n\n\t\t\t\t// Adds dependencies uniforms to the ShaderMaterial\n\t\t\t\tconst material = variable.material;\n\t\t\t\tconst uniforms = material.uniforms;\n\n\t\t\t\tif ( variable.dependencies !== null ) {\n\n\t\t\t\t\tfor ( let d = 0; d < variable.dependencies.length; d ++ ) {\n\n\t\t\t\t\t\tconst depVar = variable.dependencies[ d ];\n\n\t\t\t\t\t\tif ( depVar.name !== variable.name ) {\n\n\t\t\t\t\t\t\t// Checks if variable exists\n\t\t\t\t\t\t\tlet found = false;\n\n\t\t\t\t\t\t\tfor ( let j = 0; j < this.variables.length; j ++ ) {\n\n\t\t\t\t\t\t\t\tif ( depVar.name === this.variables[ j ].name ) {\n\n\t\t\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\t\t\tbreak;\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\tif ( ! found ) {\n\n\t\t\t\t\t\t\t\treturn 'Variable dependency not found. Variable=' + variable.name + ', dependency=' + depVar.name;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tuniforms[ depVar.name ] = { value: null };\n\n\t\t\t\t\t\tmaterial.fragmentShader = '\\nuniform sampler2D ' + depVar.name + ';\\n' + material.fragmentShader;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.currentTextureIndex = 0;\n\n\t\t\treturn null;\n\n\t\t};\n\n\t\tthis.compute = function () {\n\n\t\t\tconst currentTextureIndex = this.currentTextureIndex;\n\t\t\tconst nextTextureIndex = this.currentTextureIndex === 0 ? 1 : 0;\n\n\t\t\tfor ( let i = 0, il = this.variables.length; i < il; i ++ ) {\n\n\t\t\t\tconst variable = this.variables[ i ];\n\n\t\t\t\t// Sets texture dependencies uniforms\n\t\t\t\tif ( variable.dependencies !== null ) {\n\n\t\t\t\t\tconst uniforms = variable.material.uniforms;\n\n\t\t\t\t\tfor ( let d = 0, dl = variable.dependencies.length; d < dl; d ++ ) {\n\n\t\t\t\t\t\tconst depVar = variable.dependencies[ d ];\n\n\t\t\t\t\t\tuniforms[ depVar.name ].value = depVar.renderTargets[ currentTextureIndex ].texture;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// Performs the computation for this variable\n\t\t\t\tthis.doRenderTarget( variable.material, variable.renderTargets[ nextTextureIndex ] );\n\n\t\t\t}\n\n\t\t\tthis.currentTextureIndex = nextTextureIndex;\n\n\t\t};\n\n\t\tthis.getCurrentRenderTarget = function ( variable ) {\n\n\t\t\treturn variable.renderTargets[ this.currentTextureIndex ];\n\n\t\t};\n\n\t\tthis.getAlternateRenderTarget = function ( variable ) {\n\n\t\t\treturn variable.renderTargets[ this.currentTextureIndex === 0 ? 1 : 0 ];\n\n\t\t};\n\n\t\tthis.dispose = function () {\n\n\t\t\tquad.dispose();\n\n\t\t\tconst variables = this.variables;\n\n\t\t\tfor ( let i = 0; i < variables.length; i ++ ) {\n\n\t\t\t\tconst variable = variables[ i ];\n\n\t\t\t\tif ( variable.initialValueTexture ) variable.initialValueTexture.dispose();\n\n\t\t\t\tconst renderTargets = variable.renderTargets;\n\n\t\t\t\tfor ( let j = 0; j < renderTargets.length; j ++ ) {\n\n\t\t\t\t\tconst renderTarget = renderTargets[ j ];\n\t\t\t\t\trenderTarget.dispose();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction addResolutionDefine( materialShader ) {\n\n\t\t\tmaterialShader.defines.resolution = 'vec2( ' + sizeX.toFixed( 1 ) + ', ' + sizeY.toFixed( 1 ) + ' )';\n\n\t\t}\n\n\t\tthis.addResolutionDefine = addResolutionDefine;\n\n\n\t\t// The following functions can be used to compute things manually\n\n\t\tfunction createShaderMaterial( computeFragmentShader, uniforms ) {\n\n\t\t\tuniforms = uniforms || {};\n\n\t\t\tconst material = new ShaderMaterial( {\n\t\t\t\tname: 'GPUComputationShader',\n\t\t\t\tuniforms: uniforms,\n\t\t\t\tvertexShader: getPassThroughVertexShader(),\n\t\t\t\tfragmentShader: computeFragmentShader\n\t\t\t} );\n\n\t\t\taddResolutionDefine( material );\n\n\t\t\treturn material;\n\n\t\t}\n\n\t\tthis.createShaderMaterial = createShaderMaterial;\n\n\t\tthis.createRenderTarget = function ( sizeXTexture, sizeYTexture, wrapS, wrapT, minFilter, magFilter ) {\n\n\t\t\tsizeXTexture = sizeXTexture || sizeX;\n\t\t\tsizeYTexture = sizeYTexture || sizeY;\n\n\t\t\twrapS = wrapS || ClampToEdgeWrapping;\n\t\t\twrapT = wrapT || ClampToEdgeWrapping;\n\n\t\t\tminFilter = minFilter || NearestFilter;\n\t\t\tmagFilter = magFilter || NearestFilter;\n\n\t\t\tconst renderTarget = new WebGLRenderTarget( sizeXTexture, sizeYTexture, {\n\t\t\t\twrapS: wrapS,\n\t\t\t\twrapT: wrapT,\n\t\t\t\tminFilter: minFilter,\n\t\t\t\tmagFilter: magFilter,\n\t\t\t\tformat: RGBAFormat,\n\t\t\t\ttype: dataType,\n\t\t\t\tdepthBuffer: false\n\t\t\t} );\n\n\t\t\treturn renderTarget;\n\n\t\t};\n\n\t\tthis.createTexture = function () {\n\n\t\t\tconst data = new Float32Array( sizeX * sizeY * 4 );\n\t\t\tconst texture = new DataTexture( data, sizeX, sizeY, RGBAFormat, FloatType );\n\t\t\ttexture.needsUpdate = true;\n\t\t\treturn texture;\n\n\t\t};\n\n\t\tthis.renderTexture = function ( input, output ) {\n\n\t\t\t// Takes a texture, and render out in rendertarget\n\t\t\t// input = Texture\n\t\t\t// output = RenderTarget\n\n\t\t\tpassThruUniforms.passThruTexture.value = input;\n\n\t\t\tthis.doRenderTarget( passThruShader, output );\n\n\t\t\tpassThruUniforms.passThruTexture.value = null;\n\n\t\t};\n\n\t\tthis.doRenderTarget = function ( material, output ) {\n\n\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\t\tconst currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;\n\n\t\t\trenderer.xr.enabled = false; // Avoid camera modification\n\t\t\trenderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows\n\t\t\tquad.material = material;\n\t\t\trenderer.setRenderTarget( output );\n\t\t\tquad.render( renderer );\n\t\t\tquad.material = passThruShader;\n\n\t\t\trenderer.xr.enabled = currentXrEnabled;\n\t\t\trenderer.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\n\t\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\t};\n\n\t\t// Shaders\n\n\t\tfunction getPassThroughVertexShader() {\n\n\t\t\treturn\t'void main()\t{\\n' +\n\t\t\t\t\t'\\n' +\n\t\t\t\t\t'\tgl_Position = vec4( position, 1.0 );\\n' +\n\t\t\t\t\t'\\n' +\n\t\t\t\t\t'}\\n';\n\n\t\t}\n\n\t\tfunction getPassThroughFragmentShader() {\n\n\t\t\treturn\t'uniform sampler2D passThruTexture;\\n' +\n\t\t\t\t\t'\\n' +\n\t\t\t\t\t'void main() {\\n' +\n\t\t\t\t\t'\\n' +\n\t\t\t\t\t'\tvec2 uv = gl_FragCoord.xy / resolution.xy;\\n' +\n\t\t\t\t\t'\\n' +\n\t\t\t\t\t'\tgl_FragColor = texture2D( passThruTexture, uv );\\n' +\n\t\t\t\t\t'\\n' +\n\t\t\t\t\t'}\\n';\n\n\t\t}\n\n\t}\n\n}\n\nexport { GPUComputationRenderer };\n", "import {\n\tObject3D,\n\tQuaternion,\n\tVector3\n} from 'three';\n\nconst _translationObject = new Vector3();\nconst _quaternionObject = new Quaternion();\nconst _scaleObject = new Vector3();\n\nconst _translationWorld = new Vector3();\nconst _quaternionWorld = new Quaternion();\nconst _scaleWorld = new Vector3();\n\nclass Gyroscope extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.matrixAutoUpdate && this.updateMatrix();\n\n\t\t// update matrixWorld\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent !== null ) {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t\tthis.matrixWorld.decompose( _translationWorld, _quaternionWorld, _scaleWorld );\n\t\t\t\tthis.matrix.decompose( _translationObject, _quaternionObject, _scaleObject );\n\n\t\t\t\tthis.matrixWorld.compose( _translationWorld, _quaternionObject, _scaleWorld );\n\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t}\n\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\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tthis.children[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t}\n\n}\n\nexport { Gyroscope };\n", "import {\n\tAnimationMixer,\n\tBox3,\n\tMesh,\n\tMeshLambertMaterial,\n\tObject3D,\n\tTextureLoader,\n\tUVMapping,\n\tSRGBColorSpace\n} from 'three';\nimport { MD2Loader } from '../loaders/MD2Loader.js';\n\nclass MD2Character {\n\n\tconstructor() {\n\n\t\tthis.scale = 1;\n\t\tthis.animationFPS = 6;\n\n\t\tthis.root = new Object3D();\n\n\t\tthis.meshBody = null;\n\t\tthis.meshWeapon = null;\n\n\t\tthis.skinsBody = [];\n\t\tthis.skinsWeapon = [];\n\n\t\tthis.weapons = [];\n\n\t\tthis.activeAnimation = null;\n\n\t\tthis.mixer = null;\n\n\t\tthis.onLoadComplete = function () {};\n\n\t\tthis.loadCounter = 0;\n\n\t}\n\n\tloadParts( config ) {\n\n\t\tconst scope = this;\n\n\t\tfunction createPart( geometry, skinMap ) {\n\n\t\t\tconst materialWireframe = new MeshLambertMaterial( { color: 0xffaa00, wireframe: true } );\n\t\t\tconst materialTexture = new MeshLambertMaterial( { color: 0xffffff, wireframe: false, map: skinMap } );\n\n\t\t\t//\n\n\t\t\tconst mesh = new Mesh( geometry, materialTexture );\n\t\t\tmesh.rotation.y = - Math.PI / 2;\n\n\t\t\tmesh.castShadow = true;\n\t\t\tmesh.receiveShadow = true;\n\n\t\t\t//\n\n\t\t\tmesh.materialTexture = materialTexture;\n\t\t\tmesh.materialWireframe = materialWireframe;\n\n\t\t\treturn mesh;\n\n\t\t}\n\n\t\tfunction loadTextures( baseUrl, textureUrls ) {\n\n\t\t\tconst textureLoader = new TextureLoader();\n\t\t\tconst textures = [];\n\n\t\t\tfor ( let i = 0; i < textureUrls.length; i ++ ) {\n\n\t\t\t\ttextures[ i ] = textureLoader.load( baseUrl + textureUrls[ i ], checkLoadingComplete );\n\t\t\t\ttextures[ i ].mapping = UVMapping;\n\t\t\t\ttextures[ i ].name = textureUrls[ i ];\n\t\t\t\ttextures[ i ].colorSpace = SRGBColorSpace;\n\n\t\t\t}\n\n\t\t\treturn textures;\n\n\t\t}\n\n\t\tfunction checkLoadingComplete() {\n\n\t\t\tscope.loadCounter -= 1;\n\n\t\t\tif ( scope.loadCounter === 0 ) scope.onLoadComplete();\n\n\t\t}\n\n\t\tthis.loadCounter = config.weapons.length * 2 + config.skins.length + 1;\n\n\t\tconst weaponsTextures = [];\n\t\tfor ( let i = 0; i < config.weapons.length; i ++ ) weaponsTextures[ i ] = config.weapons[ i ][ 1 ];\n\t\t// SKINS\n\n\t\tthis.skinsBody = loadTextures( config.baseUrl + 'skins/', config.skins );\n\t\tthis.skinsWeapon = loadTextures( config.baseUrl + 'skins/', weaponsTextures );\n\n\t\t// BODY\n\n\t\tconst loader = new MD2Loader();\n\n\t\tloader.load( config.baseUrl + config.body, function ( geo ) {\n\n\t\t\tconst boundingBox = new Box3();\n\t\t\tboundingBox.setFromBufferAttribute( geo.attributes.position );\n\n\t\t\tscope.root.position.y = - scope.scale * boundingBox.min.y;\n\n\t\t\tconst mesh = createPart( geo, scope.skinsBody[ 0 ] );\n\t\t\tmesh.scale.set( scope.scale, scope.scale, scope.scale );\n\n\t\t\tscope.root.add( mesh );\n\n\t\t\tscope.meshBody = mesh;\n\n\t\t\tscope.meshBody.clipOffset = 0;\n\t\t\tscope.activeAnimationClipName = mesh.geometry.animations[ 0 ].name;\n\n\t\t\tscope.mixer = new AnimationMixer( mesh );\n\n\t\t\tcheckLoadingComplete();\n\n\t\t} );\n\n\t\t// WEAPONS\n\n\t\tconst generateCallback = function ( index, name ) {\n\n\t\t\treturn function ( geo ) {\n\n\t\t\t\tconst mesh = createPart( geo, scope.skinsWeapon[ index ] );\n\t\t\t\tmesh.scale.set( scope.scale, scope.scale, scope.scale );\n\t\t\t\tmesh.visible = false;\n\n\t\t\t\tmesh.name = name;\n\n\t\t\t\tscope.root.add( mesh );\n\n\t\t\t\tscope.weapons[ index ] = mesh;\n\t\t\t\tscope.meshWeapon = mesh;\n\n\t\t\t\tcheckLoadingComplete();\n\n\t\t\t};\n\n\t\t};\n\n\t\tfor ( let i = 0; i < config.weapons.length; i ++ ) {\n\n\t\t\tloader.load( config.baseUrl + config.weapons[ i ][ 0 ], generateCallback( i, config.weapons[ i ][ 0 ] ) );\n\n\t\t}\n\n\t}\n\n\tsetPlaybackRate( rate ) {\n\n\t\tif ( rate !== 0 ) {\n\n\t\t\tthis.mixer.timeScale = 1 / rate;\n\n\t\t} else {\n\n\t\t\tthis.mixer.timeScale = 0;\n\n\t\t}\n\n\t}\n\n\tsetWireframe( wireframeEnabled ) {\n\n\t\tif ( wireframeEnabled ) {\n\n\t\t\tif ( this.meshBody ) this.meshBody.material = this.meshBody.materialWireframe;\n\t\t\tif ( this.meshWeapon ) this.meshWeapon.material = this.meshWeapon.materialWireframe;\n\n\t\t} else {\n\n\t\t\tif ( this.meshBody ) this.meshBody.material = this.meshBody.materialTexture;\n\t\t\tif ( this.meshWeapon ) this.meshWeapon.material = this.meshWeapon.materialTexture;\n\n\t\t}\n\n\t}\n\n\tsetSkin( index ) {\n\n\t\tif ( this.meshBody && this.meshBody.material.wireframe === false ) {\n\n\t\t\tthis.meshBody.material.map = this.skinsBody[ index ];\n\n\t\t}\n\n\t}\n\n\tsetWeapon( index ) {\n\n\t\tfor ( let i = 0; i < this.weapons.length; i ++ ) this.weapons[ i ].visible = false;\n\n\t\tconst activeWeapon = this.weapons[ index ];\n\n\t\tif ( activeWeapon ) {\n\n\t\t\tactiveWeapon.visible = true;\n\t\t\tthis.meshWeapon = activeWeapon;\n\n\t\t\tthis.syncWeaponAnimation();\n\n\t\t}\n\n\t}\n\n\tsetAnimation( clipName ) {\n\n\t\tif ( this.meshBody ) {\n\n\t\t\tif ( this.meshBody.activeAction ) {\n\n\t\t\t\tthis.meshBody.activeAction.stop();\n\t\t\t\tthis.meshBody.activeAction = null;\n\n\t\t\t}\n\n\t\t\tconst action = this.mixer.clipAction( clipName, this.meshBody );\n\n\t\t\tif ( action ) {\n\n\t\t\t\tthis.meshBody.activeAction = action.play();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.activeClipName = clipName;\n\n\t\tthis.syncWeaponAnimation();\n\n\t}\n\n\tsyncWeaponAnimation() {\n\n\t\tconst clipName = this.activeClipName;\n\n\t\tif ( this.meshWeapon ) {\n\n\t\t\tif ( this.meshWeapon.activeAction ) {\n\n\t\t\t\tthis.meshWeapon.activeAction.stop();\n\t\t\t\tthis.meshWeapon.activeAction = null;\n\n\t\t\t}\n\n\t\t\tconst action = this.mixer.clipAction( clipName, this.meshWeapon );\n\n\t\t\tif ( action ) {\n\n\t\t\t\tthis.meshWeapon.activeAction = action.syncWith( this.meshBody.activeAction ).play();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate( delta ) {\n\n\t\tif ( this.mixer ) this.mixer.update( delta );\n\n\t}\n\n}\n\nexport { MD2Character };\n", "import {\n\tMathUtils,\n\tMesh\n} from 'three';\n\nclass MorphBlendMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.animationsMap = {};\n\t\tthis.animationsList = [];\n\n\t\t// prepare default animation\n\t\t// (all frames played together in 1 second)\n\n\t\tconst numFrames = Object.keys( this.morphTargetDictionary ).length;\n\n\t\tconst name = '__default';\n\n\t\tconst startFrame = 0;\n\t\tconst endFrame = numFrames - 1;\n\n\t\tconst fps = numFrames / 1;\n\n\t\tthis.createAnimation( name, startFrame, endFrame, fps );\n\t\tthis.setAnimationWeight( name, 1 );\n\n\t}\n\n\tcreateAnimation( name, start, end, fps ) {\n\n\t\tconst animation = {\n\n\t\t\tstart: start,\n\t\t\tend: end,\n\n\t\t\tlength: end - start + 1,\n\n\t\t\tfps: fps,\n\t\t\tduration: ( end - start ) / fps,\n\n\t\t\tlastFrame: 0,\n\t\t\tcurrentFrame: 0,\n\n\t\t\tactive: false,\n\n\t\t\ttime: 0,\n\t\t\tdirection: 1,\n\t\t\tweight: 1,\n\n\t\t\tdirectionBackwards: false,\n\t\t\tmirroredLoop: false\n\n\t\t};\n\n\t\tthis.animationsMap[ name ] = animation;\n\t\tthis.animationsList.push( animation );\n\n\t}\n\n\tautoCreateAnimations( fps ) {\n\n\t\tconst pattern = /([a-z]+)_?(\\d+)/i;\n\n\t\tlet firstAnimation;\n\n\t\tconst frameRanges = {};\n\n\t\tlet i = 0;\n\n\t\tfor ( const key in this.morphTargetDictionary ) {\n\n\t\t\tconst chunks = key.match( pattern );\n\n\t\t\tif ( chunks && chunks.length > 1 ) {\n\n\t\t\t\tconst name = chunks[ 1 ];\n\n\t\t\t\tif ( ! frameRanges[ name ] ) frameRanges[ name ] = { start: Infinity, end: - Infinity };\n\n\t\t\t\tconst range = frameRanges[ name ];\n\n\t\t\t\tif ( i < range.start ) range.start = i;\n\t\t\t\tif ( i > range.end ) range.end = i;\n\n\t\t\t\tif ( ! firstAnimation ) firstAnimation = name;\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\tfor ( const name in frameRanges ) {\n\n\t\t\tconst range = frameRanges[ name ];\n\t\t\tthis.createAnimation( name, range.start, range.end, fps );\n\n\t\t}\n\n\t\tthis.firstAnimation = firstAnimation;\n\n\t}\n\n\tsetAnimationDirectionForward( name ) {\n\n\t\tconst animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.direction = 1;\n\t\t\tanimation.directionBackwards = false;\n\n\t\t}\n\n\t}\n\n\tsetAnimationDirectionBackward( name ) {\n\n\t\tconst animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.direction = - 1;\n\t\t\tanimation.directionBackwards = true;\n\n\t\t}\n\n\t}\n\n\tsetAnimationFPS( name, fps ) {\n\n\t\tconst animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.fps = fps;\n\t\t\tanimation.duration = ( animation.end - animation.start ) / animation.fps;\n\n\t\t}\n\n\t}\n\n\tsetAnimationDuration( name, duration ) {\n\n\t\tconst animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.duration = duration;\n\t\t\tanimation.fps = ( animation.end - animation.start ) / animation.duration;\n\n\t\t}\n\n\t}\n\n\tsetAnimationWeight( name, weight ) {\n\n\t\tconst animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.weight = weight;\n\n\t\t}\n\n\t}\n\n\tsetAnimationTime( name, time ) {\n\n\t\tconst animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.time = time;\n\n\t\t}\n\n\t}\n\n\tgetAnimationTime( name ) {\n\n\t\tlet time = 0;\n\n\t\tconst animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\ttime = animation.time;\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\tgetAnimationDuration( name ) {\n\n\t\tlet duration = - 1;\n\n\t\tconst animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tduration = animation.duration;\n\n\t\t}\n\n\t\treturn duration;\n\n\t}\n\n\tplayAnimation( name ) {\n\n\t\tconst animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.time = 0;\n\t\t\tanimation.active = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.MorphBlendMesh: animation[' + name + '] undefined in .playAnimation()' );\n\n\t\t}\n\n\t}\n\n\tstopAnimation( name ) {\n\n\t\tconst animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.active = false;\n\n\t\t}\n\n\t}\n\n\tupdate( delta ) {\n\n\t\tfor ( let i = 0, il = this.animationsList.length; i < il; i ++ ) {\n\n\t\t\tconst animation = this.animationsList[ i ];\n\n\t\t\tif ( ! animation.active ) continue;\n\n\t\t\tconst frameTime = animation.duration / animation.length;\n\n\t\t\tanimation.time += animation.direction * delta;\n\n\t\t\tif ( animation.mirroredLoop ) {\n\n\t\t\t\tif ( animation.time > animation.duration || animation.time < 0 ) {\n\n\t\t\t\t\tanimation.direction *= - 1;\n\n\t\t\t\t\tif ( animation.time > animation.duration ) {\n\n\t\t\t\t\t\tanimation.time = animation.duration;\n\t\t\t\t\t\tanimation.directionBackwards = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( animation.time < 0 ) {\n\n\t\t\t\t\t\tanimation.time = 0;\n\t\t\t\t\t\tanimation.directionBackwards = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tanimation.time = animation.time % animation.duration;\n\n\t\t\t\tif ( animation.time < 0 ) animation.time += animation.duration;\n\n\t\t\t}\n\n\t\t\tconst keyframe = animation.start + MathUtils.clamp( Math.floor( animation.time / frameTime ), 0, animation.length - 1 );\n\t\t\tconst weight = animation.weight;\n\n\t\t\tif ( keyframe !== animation.currentFrame ) {\n\n\t\t\t\tthis.morphTargetInfluences[ animation.lastFrame ] = 0;\n\t\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = 1 * weight;\n\n\t\t\t\tthis.morphTargetInfluences[ keyframe ] = 0;\n\n\t\t\t\tanimation.lastFrame = animation.currentFrame;\n\t\t\t\tanimation.currentFrame = keyframe;\n\n\t\t\t}\n\n\t\t\tlet mix = ( animation.time % frameTime ) / frameTime;\n\n\t\t\tif ( animation.directionBackwards ) mix = 1 - mix;\n\n\t\t\tif ( animation.currentFrame !== animation.lastFrame ) {\n\n\t\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = mix * weight;\n\t\t\t\tthis.morphTargetInfluences[ animation.lastFrame ] = ( 1 - mix ) * weight;\n\n\t\t\t} else {\n\n\t\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = weight;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nexport { MorphBlendMesh };\n", "import {\n\tBox3,\n\tMathUtils,\n\tMeshLambertMaterial,\n\tObject3D,\n\tTextureLoader,\n\tUVMapping,\n\tSRGBColorSpace\n} from 'three';\nimport { MD2Loader } from '../loaders/MD2Loader.js';\nimport { MorphBlendMesh } from '../misc/MorphBlendMesh.js';\n\nclass MD2CharacterComplex {\n\n\tconstructor() {\n\n\t\tthis.scale = 1;\n\n\t\t// animation parameters\n\n\t\tthis.animationFPS = 6;\n\t\tthis.transitionFrames = 15;\n\n\t\t// movement model parameters\n\n\t\tthis.maxSpeed = 275;\n\t\tthis.maxReverseSpeed = - 275;\n\n\t\tthis.frontAcceleration = 600;\n\t\tthis.backAcceleration = 600;\n\n\t\tthis.frontDecceleration = 600;\n\n\t\tthis.angularSpeed = 2.5;\n\n\t\t// rig\n\n\t\tthis.root = new Object3D();\n\n\t\tthis.meshBody = null;\n\t\tthis.meshWeapon = null;\n\n\t\tthis.controls = null;\n\n\t\t// skins\n\n\t\tthis.skinsBody = [];\n\t\tthis.skinsWeapon = [];\n\n\t\tthis.weapons = [];\n\n\t\tthis.currentSkin = undefined;\n\n\t\t//\n\n\t\tthis.onLoadComplete = function () {};\n\n\t\t// internals\n\n\t\tthis.meshes = [];\n\t\tthis.animations = {};\n\n\t\tthis.loadCounter = 0;\n\n\t\t// internal movement control variables\n\n\t\tthis.speed = 0;\n\t\tthis.bodyOrientation = 0;\n\n\t\tthis.walkSpeed = this.maxSpeed;\n\t\tthis.crouchSpeed = this.maxSpeed * 0.5;\n\n\t\t// internal animation parameters\n\n\t\tthis.activeAnimation = null;\n\t\tthis.oldAnimation = null;\n\n\t\t// API\n\n\t}\n\n\tenableShadows( enable ) {\n\n\t\tfor ( let i = 0; i < this.meshes.length; i ++ ) {\n\n\t\t\tthis.meshes[ i ].castShadow = enable;\n\t\t\tthis.meshes[ i ].receiveShadow = enable;\n\n\t\t}\n\n\t}\n\n\tsetVisible( enable ) {\n\n\t\tfor ( let i = 0; i < this.meshes.length; i ++ ) {\n\n\t\t\tthis.meshes[ i ].visible = enable;\n\t\t\tthis.meshes[ i ].visible = enable;\n\n\t\t}\n\n\t}\n\n\tshareParts( original ) {\n\n\t\tthis.animations = original.animations;\n\t\tthis.walkSpeed = original.walkSpeed;\n\t\tthis.crouchSpeed = original.crouchSpeed;\n\n\t\tthis.skinsBody = original.skinsBody;\n\t\tthis.skinsWeapon = original.skinsWeapon;\n\n\t\t// BODY\n\n\t\tconst mesh = this._createPart( original.meshBody.geometry, this.skinsBody[ 0 ] );\n\t\tmesh.scale.set( this.scale, this.scale, this.scale );\n\n\t\tthis.root.position.y = original.root.position.y;\n\t\tthis.root.add( mesh );\n\n\t\tthis.meshBody = mesh;\n\n\t\tthis.meshes.push( mesh );\n\n\t\t// WEAPONS\n\n\t\tfor ( let i = 0; i < original.weapons.length; i ++ ) {\n\n\t\t\tconst meshWeapon = this._createPart( original.weapons[ i ].geometry, this.skinsWeapon[ i ] );\n\t\t\tmeshWeapon.scale.set( this.scale, this.scale, this.scale );\n\t\t\tmeshWeapon.visible = false;\n\n\t\t\tmeshWeapon.name = original.weapons[ i ].name;\n\n\t\t\tthis.root.add( meshWeapon );\n\n\t\t\tthis.weapons[ i ] = meshWeapon;\n\t\t\tthis.meshWeapon = meshWeapon;\n\n\t\t\tthis.meshes.push( meshWeapon );\n\n\t\t}\n\n\t}\n\n\tloadParts( config ) {\n\n\t\tconst scope = this;\n\n\t\tfunction loadTextures( baseUrl, textureUrls ) {\n\n\t\t\tconst textureLoader = new TextureLoader();\n\t\t\tconst textures = [];\n\n\t\t\tfor ( let i = 0; i < textureUrls.length; i ++ ) {\n\n\t\t\t\ttextures[ i ] = textureLoader.load( baseUrl + textureUrls[ i ], checkLoadingComplete );\n\t\t\t\ttextures[ i ].mapping = UVMapping;\n\t\t\t\ttextures[ i ].name = textureUrls[ i ];\n\t\t\t\ttextures[ i ].colorSpace = SRGBColorSpace;\n\n\t\t\t}\n\n\t\t\treturn textures;\n\n\t\t}\n\n\t\tfunction checkLoadingComplete() {\n\n\t\t\tscope.loadCounter -= 1;\n\t\t\tif ( scope.loadCounter === 0 ) \tscope.onLoadComplete();\n\n\t\t}\n\n\t\tthis.animations = config.animations;\n\t\tthis.walkSpeed = config.walkSpeed;\n\t\tthis.crouchSpeed = config.crouchSpeed;\n\n\t\tthis.loadCounter = config.weapons.length * 2 + config.skins.length + 1;\n\n\t\tconst weaponsTextures = [];\n\t\tfor ( let i = 0; i < config.weapons.length; i ++ ) weaponsTextures[ i ] = config.weapons[ i ][ 1 ];\n\n\t\t// SKINS\n\n\t\tthis.skinsBody = loadTextures( config.baseUrl + 'skins/', config.skins );\n\t\tthis.skinsWeapon = loadTextures( config.baseUrl + 'skins/', weaponsTextures );\n\n\t\t// BODY\n\n\t\tconst loader = new MD2Loader();\n\n\t\tloader.load( config.baseUrl + config.body, function ( geo ) {\n\n\t\t\tconst boundingBox = new Box3();\n\t\t\tboundingBox.setFromBufferAttribute( geo.attributes.position );\n\n\t\t\tscope.root.position.y = - scope.scale * boundingBox.min.y;\n\n\t\t\tconst mesh = scope._createPart( geo, scope.skinsBody[ 0 ] );\n\t\t\tmesh.scale.set( scope.scale, scope.scale, scope.scale );\n\n\t\t\tscope.root.add( mesh );\n\n\t\t\tscope.meshBody = mesh;\n\t\t\tscope.meshes.push( mesh );\n\n\t\t\tcheckLoadingComplete();\n\n\t\t} );\n\n\t\t// WEAPONS\n\n\t\tconst generateCallback = function ( index, name ) {\n\n\t\t\treturn function ( geo ) {\n\n\t\t\t\tconst mesh = scope._createPart( geo, scope.skinsWeapon[ index ] );\n\t\t\t\tmesh.scale.set( scope.scale, scope.scale, scope.scale );\n\t\t\t\tmesh.visible = false;\n\n\t\t\t\tmesh.name = name;\n\n\t\t\t\tscope.root.add( mesh );\n\n\t\t\t\tscope.weapons[ index ] = mesh;\n\t\t\t\tscope.meshWeapon = mesh;\n\t\t\t\tscope.meshes.push( mesh );\n\n\t\t\t\tcheckLoadingComplete();\n\n\t\t\t};\n\n\t\t};\n\n\t\tfor ( let i = 0; i < config.weapons.length; i ++ ) {\n\n\t\t\tloader.load( config.baseUrl + config.weapons[ i ][ 0 ], generateCallback( i, config.weapons[ i ][ 0 ] ) );\n\n\t\t}\n\n\t}\n\n\tsetPlaybackRate( rate ) {\n\n\t\tif ( this.meshBody ) this.meshBody.duration = this.meshBody.baseDuration / rate;\n\t\tif ( this.meshWeapon ) this.meshWeapon.duration = this.meshWeapon.baseDuration / rate;\n\n\t}\n\n\tsetWireframe( wireframeEnabled ) {\n\n\t\tif ( wireframeEnabled ) {\n\n\t\t\tif ( this.meshBody ) this.meshBody.material = this.meshBody.materialWireframe;\n\t\t\tif ( this.meshWeapon ) this.meshWeapon.material = this.meshWeapon.materialWireframe;\n\n\t\t} else {\n\n\t\t\tif ( this.meshBody ) this.meshBody.material = this.meshBody.materialTexture;\n\t\t\tif ( this.meshWeapon ) this.meshWeapon.material = this.meshWeapon.materialTexture;\n\n\t\t}\n\n\t}\n\n\tsetSkin( index ) {\n\n\t\tif ( this.meshBody && this.meshBody.material.wireframe === false ) {\n\n\t\t\tthis.meshBody.material.map = this.skinsBody[ index ];\n\t\t\tthis.currentSkin = index;\n\n\t\t}\n\n\t}\n\n\tsetWeapon( index ) {\n\n\t\tfor ( let i = 0; i < this.weapons.length; i ++ ) this.weapons[ i ].visible = false;\n\n\t\tconst activeWeapon = this.weapons[ index ];\n\n\t\tif ( activeWeapon ) {\n\n\t\t\tactiveWeapon.visible = true;\n\t\t\tthis.meshWeapon = activeWeapon;\n\n\t\t\tif ( this.activeAnimation ) {\n\n\t\t\t\tactiveWeapon.playAnimation( this.activeAnimation );\n\t\t\t\tthis.meshWeapon.setAnimationTime( this.activeAnimation, this.meshBody.getAnimationTime( this.activeAnimation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tsetAnimation( animationName ) {\n\n\t\tif ( animationName === this.activeAnimation || ! animationName ) return;\n\n\t\tif ( this.meshBody ) {\n\n\t\t\tthis.meshBody.setAnimationWeight( animationName, 0 );\n\t\t\tthis.meshBody.playAnimation( animationName );\n\n\t\t\tthis.oldAnimation = this.activeAnimation;\n\t\t\tthis.activeAnimation = animationName;\n\n\t\t\tthis.blendCounter = this.transitionFrames;\n\n\t\t}\n\n\t\tif ( this.meshWeapon ) {\n\n\t\t\tthis.meshWeapon.setAnimationWeight( animationName, 0 );\n\t\t\tthis.meshWeapon.playAnimation( animationName );\n\n\t\t}\n\n\n\t}\n\n\tupdate( delta ) {\n\n\t\tif ( this.controls ) this.updateMovementModel( delta );\n\n\t\tif ( this.animations ) {\n\n\t\t\tthis.updateBehaviors();\n\t\t\tthis.updateAnimations( delta );\n\n\t\t}\n\n\t}\n\n\tupdateAnimations( delta ) {\n\n\t\tlet mix = 1;\n\n\t\tif ( this.blendCounter > 0 ) {\n\n\t\t\tmix = ( this.transitionFrames - this.blendCounter ) / this.transitionFrames;\n\t\t\tthis.blendCounter -= 1;\n\n\t\t}\n\n\t\tif ( this.meshBody ) {\n\n\t\t\tthis.meshBody.update( delta );\n\n\t\t\tthis.meshBody.setAnimationWeight( this.activeAnimation, mix );\n\t\t\tthis.meshBody.setAnimationWeight( this.oldAnimation, 1 - mix );\n\n\t\t}\n\n\t\tif ( this.meshWeapon ) {\n\n\t\t\tthis.meshWeapon.update( delta );\n\n\t\t\tthis.meshWeapon.setAnimationWeight( this.activeAnimation, mix );\n\t\t\tthis.meshWeapon.setAnimationWeight( this.oldAnimation, 1 - mix );\n\n\t\t}\n\n\t}\n\n\tupdateBehaviors() {\n\n\t\tconst controls = this.controls;\n\t\tconst animations = this.animations;\n\n\t\tlet moveAnimation, idleAnimation;\n\n\t\t// crouch vs stand\n\n\t\tif ( controls.crouch ) {\n\n\t\t\tmoveAnimation = animations[ 'crouchMove' ];\n\t\t\tidleAnimation = animations[ 'crouchIdle' ];\n\n\t\t} else {\n\n\t\t\tmoveAnimation = animations[ 'move' ];\n\t\t\tidleAnimation = animations[ 'idle' ];\n\n\t\t}\n\n\t\t// actions\n\n\t\tif ( controls.jump ) {\n\n\t\t\tmoveAnimation = animations[ 'jump' ];\n\t\t\tidleAnimation = animations[ 'jump' ];\n\n\t\t}\n\n\t\tif ( controls.attack ) {\n\n\t\t\tif ( controls.crouch ) {\n\n\t\t\t\tmoveAnimation = animations[ 'crouchAttack' ];\n\t\t\t\tidleAnimation = animations[ 'crouchAttack' ];\n\n\t\t\t} else {\n\n\t\t\t\tmoveAnimation = animations[ 'attack' ];\n\t\t\t\tidleAnimation = animations[ 'attack' ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// set animations\n\n\t\tif ( controls.moveForward || controls.moveBackward || controls.moveLeft || controls.moveRight ) {\n\n\t\t\tif ( this.activeAnimation !== moveAnimation ) {\n\n\t\t\t\tthis.setAnimation( moveAnimation );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tif ( Math.abs( this.speed ) < 0.2 * this.maxSpeed && ! ( controls.moveLeft || controls.moveRight || controls.moveForward || controls.moveBackward ) ) {\n\n\t\t\tif ( this.activeAnimation !== idleAnimation ) {\n\n\t\t\t\tthis.setAnimation( idleAnimation );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// set animation direction\n\n\t\tif ( controls.moveForward ) {\n\n\t\t\tif ( this.meshBody ) {\n\n\t\t\t\tthis.meshBody.setAnimationDirectionForward( this.activeAnimation );\n\t\t\t\tthis.meshBody.setAnimationDirectionForward( this.oldAnimation );\n\n\t\t\t}\n\n\t\t\tif ( this.meshWeapon ) {\n\n\t\t\t\tthis.meshWeapon.setAnimationDirectionForward( this.activeAnimation );\n\t\t\t\tthis.meshWeapon.setAnimationDirectionForward( this.oldAnimation );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( controls.moveBackward ) {\n\n\t\t\tif ( this.meshBody ) {\n\n\t\t\t\tthis.meshBody.setAnimationDirectionBackward( this.activeAnimation );\n\t\t\t\tthis.meshBody.setAnimationDirectionBackward( this.oldAnimation );\n\n\t\t\t}\n\n\t\t\tif ( this.meshWeapon ) {\n\n\t\t\t\tthis.meshWeapon.setAnimationDirectionBackward( this.activeAnimation );\n\t\t\t\tthis.meshWeapon.setAnimationDirectionBackward( this.oldAnimation );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMovementModel( delta ) {\n\n\t\tfunction exponentialEaseOut( k ) {\n\n\t\t\treturn k === 1 ? 1 : - Math.pow( 2, - 10 * k ) + 1;\n\n\t\t}\n\n\t\tconst controls = this.controls;\n\n\t\t// speed based on controls\n\n\t\tif ( controls.crouch ) \tthis.maxSpeed = this.crouchSpeed;\n\t\telse this.maxSpeed = this.walkSpeed;\n\n\t\tthis.maxReverseSpeed = - this.maxSpeed;\n\n\t\tif ( controls.moveForward ) this.speed = MathUtils.clamp( this.speed + delta * this.frontAcceleration, this.maxReverseSpeed, this.maxSpeed );\n\t\tif ( controls.moveBackward ) this.speed = MathUtils.clamp( this.speed - delta * this.backAcceleration, this.maxReverseSpeed, this.maxSpeed );\n\n\t\t// orientation based on controls\n\t\t// (don't just stand while turning)\n\n\t\tconst dir = 1;\n\n\t\tif ( controls.moveLeft ) {\n\n\t\t\tthis.bodyOrientation += delta * this.angularSpeed;\n\t\t\tthis.speed = MathUtils.clamp( this.speed + dir * delta * this.frontAcceleration, this.maxReverseSpeed, this.maxSpeed );\n\n\t\t}\n\n\t\tif ( controls.moveRight ) {\n\n\t\t\tthis.bodyOrientation -= delta * this.angularSpeed;\n\t\t\tthis.speed = MathUtils.clamp( this.speed + dir * delta * this.frontAcceleration, this.maxReverseSpeed, this.maxSpeed );\n\n\t\t}\n\n\t\t// speed decay\n\n\t\tif ( ! ( controls.moveForward || controls.moveBackward ) ) {\n\n\t\t\tif ( this.speed > 0 ) {\n\n\t\t\t\tconst k = exponentialEaseOut( this.speed / this.maxSpeed );\n\t\t\t\tthis.speed = MathUtils.clamp( this.speed - k * delta * this.frontDecceleration, 0, this.maxSpeed );\n\n\t\t\t} else {\n\n\t\t\t\tconst k = exponentialEaseOut( this.speed / this.maxReverseSpeed );\n\t\t\t\tthis.speed = MathUtils.clamp( this.speed + k * delta * this.backAcceleration, this.maxReverseSpeed, 0 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// displacement\n\n\t\tconst forwardDelta = this.speed * delta;\n\n\t\tthis.root.position.x += Math.sin( this.bodyOrientation ) * forwardDelta;\n\t\tthis.root.position.z += Math.cos( this.bodyOrientation ) * forwardDelta;\n\n\t\t// steering\n\n\t\tthis.root.rotation.y = this.bodyOrientation;\n\n\t}\n\n\t// internal\n\n\t_createPart( geometry, skinMap ) {\n\n\t\tconst materialWireframe = new MeshLambertMaterial( { color: 0xffaa00, wireframe: true } );\n\t\tconst materialTexture = new MeshLambertMaterial( { color: 0xffffff, wireframe: false, map: skinMap } );\n\n\t\t//\n\n\t\tconst mesh = new MorphBlendMesh( geometry, materialTexture );\n\t\tmesh.rotation.y = - Math.PI / 2;\n\n\t\t//\n\n\t\tmesh.materialTexture = materialTexture;\n\t\tmesh.materialWireframe = materialWireframe;\n\n\t\t//\n\n\t\tmesh.autoCreateAnimations( this.animationFPS );\n\n\t\treturn mesh;\n\n\t}\n\n}\n\nexport { MD2CharacterComplex };\n", "import {\n\tAnimationClip,\n\tAnimationMixer,\n\tMesh\n} from 'three';\n\nclass MorphAnimMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'MorphAnimMesh';\n\n\t\tthis.mixer = new AnimationMixer( this );\n\t\tthis.activeAction = null;\n\n\t}\n\n\tsetDirectionForward() {\n\n\t\tthis.mixer.timeScale = 1.0;\n\n\t}\n\n\tsetDirectionBackward() {\n\n\t\tthis.mixer.timeScale = - 1.0;\n\n\t}\n\n\tplayAnimation( label, fps ) {\n\n\t\tif ( this.activeAction ) {\n\n\t\t\tthis.activeAction.stop();\n\t\t\tthis.activeAction = null;\n\n\t\t}\n\n\t\tconst clip = AnimationClip.findByName( this, label );\n\n\t\tif ( clip ) {\n\n\t\t\tconst action = this.mixer.clipAction( clip );\n\t\t\taction.timeScale = ( clip.tracks.length * fps ) / clip.duration;\n\t\t\tthis.activeAction = action.play();\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.MorphAnimMesh: animations[' + label + '] undefined in .playAnimation()' );\n\n\t\t}\n\n\t}\n\n\tupdateAnimation( delta ) {\n\n\t\tthis.mixer.update( delta );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.mixer = new AnimationMixer( this );\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { MorphAnimMesh };\n", "/**\n * potpack - by [@mourner](https://github.com/mourner)\n * \n * A tiny JavaScript function for packing 2D rectangles into a near-square container, \n * which is useful for generating CSS sprites and WebGL textures. Similar to \n * [shelf-pack](https://github.com/mapbox/shelf-pack), but static (you can't add items \n * once a layout is generated), and aims for maximal space utilization.\n *\n * A variation of algorithms used in [rectpack2D](https://github.com/TeamHypersomnia/rectpack2D)\n * and [bin-pack](https://github.com/bryanburgers/bin-pack), which are in turn based \n * on [this article by Blackpawn](http://blackpawn.com/texts/lightmaps/default.html).\n * \n * @license\n * ISC License\n * \n * Copyright (c) 2018, Mapbox\n * \n * Permission to use, copy, modify, and/or distribute this software for any purpose\n * with or without fee is hereby granted, provided that the above copyright notice\n * and this permission notice appear in all copies.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n * THIS SOFTWARE.\n */\n\nfunction potpack(boxes) {\n\n\t// calculate total box area and maximum box width\n\tlet area = 0;\n\tlet maxWidth = 0;\n\t\n\tfor (const box of boxes) {\n\t\tarea += box.w * box.h;\n\t\tmaxWidth = Math.max(maxWidth, box.w);\n\t}\n\t\n\t// sort the boxes for insertion by height, descending\n\tboxes.sort((a, b) => b.h - a.h);\n\t\n\t// aim for a squarish resulting container,\n\t// slightly adjusted for sub-100% space utilization\n\tconst startWidth = Math.max(Math.ceil(Math.sqrt(area / 0.95)), maxWidth);\n\t\n\t// start with a single empty space, unbounded at the bottom\n\tconst spaces = [{x: 0, y: 0, w: startWidth, h: Infinity}];\n\t\n\tlet width = 0;\n\tlet height = 0;\n\t\n\tfor (const box of boxes) {\n\t\t// look through spaces backwards so that we check smaller spaces first\n\t\tfor (let i = spaces.length - 1; i >= 0; i--) {\n\t\t\tconst space = spaces[i];\n\t\t\t\n\t\t\t// look for empty spaces that can accommodate the current box\n\t\t\tif (box.w > space.w || box.h > space.h) continue;\n\t\t\t\n\t\t\t// found the space; add the box to its top-left corner\n\t\t\t// |-------|-------|\n\t\t\t// | box | |\n\t\t\t// |_______| |\n\t\t\t// | space |\n\t\t\t// |_______________|\n\t\t\tbox.x = space.x;\n\t\t\tbox.y = space.y;\n\t\t\t\n\t\t\theight = Math.max(height, box.y + box.h);\n\t\t\twidth = Math.max(width, box.x + box.w);\n\t\t\t\n\t\t\tif (box.w === space.w && box.h === space.h) {\n\t\t\t\t// space matches the box exactly; remove it\n\t\t\t\tconst last = spaces.pop();\n\t\t\t\tif (i < spaces.length) spaces[i] = last;\n\t\t\t\n\t\t\t} else if (box.h === space.h) {\n\t\t\t\t// space matches the box height; update it accordingly\n\t\t\t\t// |-------|---------------|\n\t\t\t\t// | box | updated space |\n\t\t\t\t// |_______|_______________|\n\t\t\t\tspace.x += box.w;\n\t\t\t\tspace.w -= box.w;\n\t\t\t\n\t\t\t} else if (box.w === space.w) {\n\t\t\t\t// space matches the box width; update it accordingly\n\t\t\t\t// |---------------|\n\t\t\t\t// | box |\n\t\t\t\t// |_______________|\n\t\t\t\t// | updated space |\n\t\t\t\t// |_______________|\n\t\t\t\tspace.y += box.h;\n\t\t\t\tspace.h -= box.h;\n\t\t\t\n\t\t\t} else {\n\t\t\t\t// otherwise the box splits the space into two spaces\n\t\t\t\t// |-------|-----------|\n\t\t\t\t// | box | new space |\n\t\t\t\t// |_______|___________|\n\t\t\t\t// | updated space |\n\t\t\t\t// |___________________|\n\t\t\t\tspaces.push({\n\t\t\t\t\tx: space.x + box.w,\n\t\t\t\t\ty: space.y,\n\t\t\t\t\tw: space.w - box.w,\n\t\t\t\t\th: box.h\n\t\t\t\t});\n\t\t\t\tspace.y += box.h;\n\t\t\t\tspace.h -= box.h;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\t\n\treturn {\n\t\tw: width, // container width\n\t\th: height, // container height\n\t\tfill: (area / (width * height)) || 0 // space utilization\n\t};\n}\n\nexport { potpack };", "import * as THREE from 'three';\nimport { potpack } from '../libs/potpack.module.js';\n\n/**\n * Progressive Light Map Accumulator, by [zalo](https://github.com/zalo/)\n *\n * To use, simply construct a `ProgressiveLightMap` object,\n * `plmap.addObjectsToLightMap(object)` an array of semi-static\n * objects and lights to the class once, and then call\n * `plmap.update(camera)` every frame to begin accumulating\n * lighting samples.\n *\n * This should begin accumulating lightmaps which apply to\n * your objects, so you can start jittering lighting to achieve\n * the texture-space effect you're looking for.\n *\n * @param {WebGLRenderer} renderer A WebGL Rendering Context\n * @param {number} res The side-long dimension of you total lightmap\n */\nclass ProgressiveLightMap {\n\n\tconstructor( renderer, res = 1024 ) {\n\n\t\tthis.renderer = renderer;\n\t\tthis.res = res;\n\t\tthis.lightMapContainers = [];\n\t\tthis.compiled = false;\n\t\tthis.scene = new THREE.Scene();\n\t\tthis.scene.background = null;\n\t\tthis.tinyTarget = new THREE.WebGLRenderTarget( 1, 1 );\n\t\tthis.buffer1Active = false;\n\t\tthis.firstUpdate = true;\n\t\tthis.warned = false;\n\n\t\t// Create the Progressive LightMap Texture\n\t\tconst format = /(Android|iPad|iPhone|iPod)/g.test( navigator.userAgent ) ? THREE.HalfFloatType : THREE.FloatType;\n\t\tthis.progressiveLightMap1 = new THREE.WebGLRenderTarget( this.res, this.res, { type: format } );\n\t\tthis.progressiveLightMap2 = new THREE.WebGLRenderTarget( this.res, this.res, { type: format } );\n\t\tthis.progressiveLightMap2.texture.channel = 1;\n\n\t\t// Inject some spicy new logic into a standard phong material\n\t\tthis.uvMat = new THREE.MeshPhongMaterial();\n\t\tthis.uvMat.uniforms = {};\n\t\tthis.uvMat.onBeforeCompile = ( shader ) => {\n\n\t\t\t// Vertex Shader: Set Vertex Positions to the Unwrapped UV Positions\n\t\t\tshader.vertexShader =\n\t\t\t\t'attribute vec2 uv1;\\n' +\n\t\t\t\t'#define USE_LIGHTMAP\\n' +\n\t\t\t\t'#define LIGHTMAP_UV uv1\\n' +\n\t\t\t\tshader.vertexShader.slice( 0, - 1 ) +\n\t\t\t\t'\tgl_Position = vec4((LIGHTMAP_UV - 0.5) * 2.0, 1.0, 1.0); }';\n\n\t\t\t// Fragment Shader: Set Pixels to average in the Previous frame's Shadows\n\t\t\tconst bodyStart = shader.fragmentShader.indexOf( 'void main() {' );\n\t\t\tshader.fragmentShader =\n\t\t\t\t'#define USE_LIGHTMAP\\n' +\n\t\t\t\tshader.fragmentShader.slice( 0, bodyStart ) +\n\t\t\t\t'\tuniform sampler2D previousShadowMap;\\n\tuniform float averagingWindow;\\n' +\n\t\t\t\tshader.fragmentShader.slice( bodyStart - 1, - 1 ) +\n\t\t\t\t`\\nvec3 texelOld = texture2D(previousShadowMap, vLightMapUv).rgb;\n\t\t\t\tgl_FragColor.rgb = mix(texelOld, gl_FragColor.rgb, 1.0/averagingWindow);\n\t\t\t}`;\n\n\t\t\t// Set the Previous Frame's Texture Buffer and Averaging Window\n\t\t\tshader.uniforms.previousShadowMap = { value: this.progressiveLightMap1.texture };\n\t\t\tshader.uniforms.averagingWindow = { value: 100 };\n\n\t\t\tthis.uvMat.uniforms = shader.uniforms;\n\n\t\t\t// Set the new Shader to this\n\t\t\tthis.uvMat.userData.shader = shader;\n\n\t\t\tthis.compiled = true;\n\n\t\t};\n\n\t}\n\n\t/**\n\t * Sets these objects' materials' lightmaps and modifies their uv1's.\n\t * @param {Object3D} objects An array of objects and lights to set up your lightmap.\n\t */\n\taddObjectsToLightMap( objects ) {\n\n\t\t// Prepare list of UV bounding boxes for packing later...\n\t\tthis.uv_boxes = []; const padding = 3 / this.res;\n\n\t\tfor ( let ob = 0; ob < objects.length; ob ++ ) {\n\n\t\t\tconst object = objects[ ob ];\n\n\t\t\t// If this object is a light, simply add it to the internal scene\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tthis.scene.attach( object ); continue;\n\n\t\t\t}\n\n\t\t\tif ( ! object.geometry.hasAttribute( 'uv' ) ) {\n\n\t\t\t\tconsole.warn( 'All lightmap objects need UVs!' ); continue;\n\n\t\t\t}\n\n\t\t\tif ( this.blurringPlane == null ) {\n\n\t\t\t\tthis._initializeBlurPlane( this.res, this.progressiveLightMap1 );\n\n\t\t\t}\n\n\t\t\t// Apply the lightmap to the object\n\t\t\tobject.material.lightMap = this.progressiveLightMap2.texture;\n\t\t\tobject.material.dithering = true;\n\t\t\tobject.castShadow = true;\n\t\t\tobject.receiveShadow = true;\n\t\t\tobject.renderOrder = 1000 + ob;\n\n\t\t\t// Prepare UV boxes for potpack\n\t\t\t// TODO: Size these by object surface area\n\t\t\tthis.uv_boxes.push( { w: 1 + ( padding * 2 ),\n\t\t\t\t\t\t\t\t h: 1 + ( padding * 2 ), index: ob } );\n\n\t\t\tthis.lightMapContainers.push( { basicMat: object.material, object: object } );\n\n\t\t\tthis.compiled = false;\n\n\t\t}\n\n\t\t// Pack the objects' lightmap UVs into the same global space\n\t\tconst dimensions = potpack( this.uv_boxes );\n\t\tthis.uv_boxes.forEach( ( box ) => {\n\n\t\t\tconst uv1 = objects[ box.index ].geometry.getAttribute( 'uv' ).clone();\n\t\t\tfor ( let i = 0; i < uv1.array.length; i += uv1.itemSize ) {\n\n\t\t\t\tuv1.array[ i ] = ( uv1.array[ i ] + box.x + padding ) / dimensions.w;\n\t\t\t\tuv1.array[ i + 1 ] = ( uv1.array[ i + 1 ] + box.y + padding ) / dimensions.h;\n\n\t\t\t}\n\n\t\t\tobjects[ box.index ].geometry.setAttribute( 'uv1', uv1 );\n\t\t\tobjects[ box.index ].geometry.getAttribute( 'uv1' ).needsUpdate = true;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * This function renders each mesh one at a time into their respective surface maps\n\t * @param {Camera} camera Standard Rendering Camera\n\t * @param {number} blendWindow When >1, samples will accumulate over time.\n\t * @param {boolean} blurEdges Whether to fix UV Edges via blurring\n\t */\n\tupdate( camera, blendWindow = 100, blurEdges = true ) {\n\n\t\tif ( this.blurringPlane == null ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Store the original Render Target\n\t\tconst oldTarget = this.renderer.getRenderTarget();\n\n\t\t// The blurring plane applies blur to the seams of the lightmap\n\t\tthis.blurringPlane.visible = blurEdges;\n\n\t\t// Steal the Object3D from the real world to our special dimension\n\t\tfor ( let l = 0; l < this.lightMapContainers.length; l ++ ) {\n\n\t\t\tthis.lightMapContainers[ l ].object.oldScene =\n\t\t\t\tthis.lightMapContainers[ l ].object.parent;\n\t\t\tthis.scene.attach( this.lightMapContainers[ l ].object );\n\n\t\t}\n\n\t\t// Render once normally to initialize everything\n\t\tif ( this.firstUpdate ) {\n\n\t\t\tthis.renderer.setRenderTarget( this.tinyTarget ); // Tiny for Speed\n\t\t\tthis.renderer.render( this.scene, camera );\n\t\t\tthis.firstUpdate = false;\n\n\t\t}\n\n\t\t// Set each object's material to the UV Unwrapped Surface Mapping Version\n\t\tfor ( let l = 0; l < this.lightMapContainers.length; l ++ ) {\n\n\t\t\tthis.uvMat.uniforms.averagingWindow = { value: blendWindow };\n\t\t\tthis.lightMapContainers[ l ].object.material = this.uvMat;\n\t\t\tthis.lightMapContainers[ l ].object.oldFrustumCulled =\n\t\t\t\tthis.lightMapContainers[ l ].object.frustumCulled;\n\t\t\tthis.lightMapContainers[ l ].object.frustumCulled = false;\n\n\t\t}\n\n\t\t// Ping-pong two surface buffers for reading/writing\n\t\tconst activeMap = this.buffer1Active ? this.progressiveLightMap1 : this.progressiveLightMap2;\n\t\tconst inactiveMap = this.buffer1Active ? this.progressiveLightMap2 : this.progressiveLightMap1;\n\n\t\t// Render the object's surface maps\n\t\tthis.renderer.setRenderTarget( activeMap );\n\t\tthis.uvMat.uniforms.previousShadowMap = { value: inactiveMap.texture };\n\t\tthis.blurringPlane.material.uniforms.previousShadowMap = { value: inactiveMap.texture };\n\t\tthis.buffer1Active = ! this.buffer1Active;\n\t\tthis.renderer.render( this.scene, camera );\n\n\t\t// Restore the object's Real-time Material and add it back to the original world\n\t\tfor ( let l = 0; l < this.lightMapContainers.length; l ++ ) {\n\n\t\t\tthis.lightMapContainers[ l ].object.frustumCulled =\n\t\t\t\tthis.lightMapContainers[ l ].object.oldFrustumCulled;\n\t\t\tthis.lightMapContainers[ l ].object.material = this.lightMapContainers[ l ].basicMat;\n\t\t\tthis.lightMapContainers[ l ].object.oldScene.attach( this.lightMapContainers[ l ].object );\n\n\t\t}\n\n\t\t// Restore the original Render Target\n\t\tthis.renderer.setRenderTarget( oldTarget );\n\n\t}\n\n\t/** DEBUG\n\t * Draw the lightmap in the main scene. Call this after adding the objects to it.\n\t * @param {boolean} visible Whether the debug plane should be visible\n\t * @param {Vector3} position Where the debug plane should be drawn\n\t*/\n\tshowDebugLightmap( visible, position = undefined ) {\n\n\t\tif ( this.lightMapContainers.length == 0 ) {\n\n\t\t\tif ( ! this.warned ) {\n\n\t\t\t\tconsole.warn( 'Call this after adding the objects!' ); this.warned = true;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.labelMesh == null ) {\n\n\t\t\tthis.labelMaterial = new THREE.MeshBasicMaterial(\n\t\t\t\t{ map: this.progressiveLightMap1.texture, side: THREE.DoubleSide } );\n\t\t\tthis.labelPlane = new THREE.PlaneGeometry( 100, 100 );\n\t\t\tthis.labelMesh = new THREE.Mesh( this.labelPlane, this.labelMaterial );\n\t\t\tthis.labelMesh.position.y = 250;\n\t\t\tthis.lightMapContainers[ 0 ].object.parent.add( this.labelMesh );\n\n\t\t}\n\n\t\tif ( position != undefined ) {\n\n\t\t\tthis.labelMesh.position.copy( position );\n\n\t\t}\n\n\t\tthis.labelMesh.visible = visible;\n\n\t}\n\n\t/**\n\t * INTERNAL Creates the Blurring Plane\n\t * @param {number} res The square resolution of this object's lightMap.\n\t * @param {WebGLRenderTexture} lightMap The lightmap to initialize the plane with.\n\t */\n\t_initializeBlurPlane( res, lightMap = null ) {\n\n\t\tconst blurMaterial = new THREE.MeshBasicMaterial();\n\t\tblurMaterial.uniforms = { previousShadowMap: { value: null },\n\t\t\t\t\t\t\t\t pixelOffset: { value: 1.0 / res },\n\t\t\t\t\t\t\t\t polygonOffset: true, polygonOffsetFactor: - 1, polygonOffsetUnits: 3.0 };\n\t\tblurMaterial.onBeforeCompile = ( shader ) => {\n\n\t\t\t// Vertex Shader: Set Vertex Positions to the Unwrapped UV Positions\n\t\t\tshader.vertexShader =\n\t\t\t\t'#define USE_UV\\n' +\n\t\t\t\tshader.vertexShader.slice( 0, - 1 ) +\n\t\t\t\t'\tgl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }';\n\n\t\t\t// Fragment Shader: Set Pixels to 9-tap box blur the current frame's Shadows\n\t\t\tconst bodyStart\t= shader.fragmentShader.indexOf( 'void main() {' );\n\t\t\tshader.fragmentShader =\n\t\t\t\t'#define USE_UV\\n' +\n\t\t\t\tshader.fragmentShader.slice( 0, bodyStart ) +\n\t\t\t\t'\tuniform sampler2D previousShadowMap;\\n\tuniform float pixelOffset;\\n' +\n\t\t\t\tshader.fragmentShader.slice( bodyStart - 1, - 1 ) +\n\t\t\t\t\t`\tgl_FragColor.rgb = (\n\t\t\t\t\t\t\t\t\ttexture2D(previousShadowMap, vUv + vec2( pixelOffset, 0.0 )).rgb +\n\t\t\t\t\t\t\t\t\ttexture2D(previousShadowMap, vUv + vec2( 0.0 , pixelOffset)).rgb +\n\t\t\t\t\t\t\t\t\ttexture2D(previousShadowMap, vUv + vec2( 0.0 , -pixelOffset)).rgb +\n\t\t\t\t\t\t\t\t\ttexture2D(previousShadowMap, vUv + vec2(-pixelOffset, 0.0 )).rgb +\n\t\t\t\t\t\t\t\t\ttexture2D(previousShadowMap, vUv + vec2( pixelOffset, pixelOffset)).rgb +\n\t\t\t\t\t\t\t\t\ttexture2D(previousShadowMap, vUv + vec2(-pixelOffset, pixelOffset)).rgb +\n\t\t\t\t\t\t\t\t\ttexture2D(previousShadowMap, vUv + vec2( pixelOffset, -pixelOffset)).rgb +\n\t\t\t\t\t\t\t\t\ttexture2D(previousShadowMap, vUv + vec2(-pixelOffset, -pixelOffset)).rgb)/8.0;\n\t\t\t\t}`;\n\n\t\t\t// Set the LightMap Accumulation Buffer\n\t\t\tshader.uniforms.previousShadowMap = { value: lightMap.texture };\n\t\t\tshader.uniforms.pixelOffset = { value: 0.5 / res };\n\t\t\tblurMaterial.uniforms = shader.uniforms;\n\n\t\t\t// Set the new Shader to this\n\t\t\tblurMaterial.userData.shader = shader;\n\n\t\t\tthis.compiled = true;\n\n\t\t};\n\n\t\tthis.blurringPlane = new THREE.Mesh( new THREE.PlaneGeometry( 1, 1 ), blurMaterial );\n\t\tthis.blurringPlane.name = 'Blurring Plane';\n\t\tthis.blurringPlane.frustumCulled = false;\n\t\tthis.blurringPlane.renderOrder = 0;\n\t\tthis.blurringPlane.material.depthWrite = false;\n\t\tthis.scene.add( this.blurringPlane );\n\n\t}\n\n}\n\nexport { ProgressiveLightMap };\n", "import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tColor,\n\tQuaternion,\n\tRaycaster,\n\tSRGBColorSpace,\n\tVector3\n} from 'three';\n\nclass RollerCoasterGeometry extends BufferGeometry {\n\n\tconstructor( curve, divisions ) {\n\n\t\tsuper();\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = [ 1, 1, 1 ];\n\t\tconst color2 = [ 1, 1, 0 ];\n\n\t\tconst up = new Vector3( 0, 1, 0 );\n\t\tconst forward = new Vector3();\n\t\tconst right = new Vector3();\n\n\t\tconst quaternion = new Quaternion();\n\t\tconst prevQuaternion = new Quaternion();\n\t\tprevQuaternion.setFromAxisAngle( up, Math.PI / 2 );\n\n\t\tconst point = new Vector3();\n\t\tconst prevPoint = new Vector3();\n\t\tprevPoint.copy( curve.getPointAt( 0 ) );\n\n\t\t// shapes\n\n\t\tconst step = [\n\t\t\tnew Vector3( - 0.225, 0, 0 ),\n\t\t\tnew Vector3( 0, - 0.050, 0 ),\n\t\t\tnew Vector3( 0, - 0.175, 0 ),\n\n\t\t\tnew Vector3( 0, - 0.050, 0 ),\n\t\t\tnew Vector3( 0.225, 0, 0 ),\n\t\t\tnew Vector3( 0, - 0.175, 0 )\n\t\t];\n\n\t\tconst PI2 = Math.PI * 2;\n\n\t\tlet sides = 5;\n\t\tconst tube1 = [];\n\n\t\tfor ( let i = 0; i < sides; i ++ ) {\n\n\t\t\tconst angle = ( i / sides ) * PI2;\n\t\t\ttube1.push( new Vector3( Math.sin( angle ) * 0.06, Math.cos( angle ) * 0.06, 0 ) );\n\n\t\t}\n\n\t\tsides = 6;\n\t\tconst tube2 = [];\n\n\t\tfor ( let i = 0; i < sides; i ++ ) {\n\n\t\t\tconst angle = ( i / sides ) * PI2;\n\t\t\ttube2.push( new Vector3( Math.sin( angle ) * 0.025, Math.cos( angle ) * 0.025, 0 ) );\n\n\t\t}\n\n\t\tconst vector = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tfunction drawShape( shape, color ) {\n\n\t\t\tnormal.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t\t\tfor ( let j = 0; j < shape.length; j ++ ) {\n\n\t\t\t\tvector.copy( shape[ j ] );\n\t\t\t\tvector.applyQuaternion( quaternion );\n\t\t\t\tvector.add( point );\n\n\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\t\t\t\tcolors.push( color[ 0 ], color[ 1 ], color[ 2 ] );\n\n\t\t\t}\n\n\t\t\tnormal.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t\tfor ( let j = shape.length - 1; j >= 0; j -- ) {\n\n\t\t\t\tvector.copy( shape[ j ] );\n\t\t\t\tvector.applyQuaternion( quaternion );\n\t\t\t\tvector.add( point );\n\n\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\t\t\t\tcolors.push( color[ 0 ], color[ 1 ], color[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst vector1 = new Vector3();\n\t\tconst vector2 = new Vector3();\n\t\tconst vector3 = new Vector3();\n\t\tconst vector4 = new Vector3();\n\n\t\tconst normal1 = new Vector3();\n\t\tconst normal2 = new Vector3();\n\t\tconst normal3 = new Vector3();\n\t\tconst normal4 = new Vector3();\n\n\t\tfunction extrudeShape( shape, offset, color ) {\n\n\t\t\tfor ( let j = 0, jl = shape.length; j < jl; j ++ ) {\n\n\t\t\t\tconst point1 = shape[ j ];\n\t\t\t\tconst point2 = shape[ ( j + 1 ) % jl ];\n\n\t\t\t\tvector1.copy( point1 ).add( offset );\n\t\t\t\tvector1.applyQuaternion( quaternion );\n\t\t\t\tvector1.add( point );\n\n\t\t\t\tvector2.copy( point2 ).add( offset );\n\t\t\t\tvector2.applyQuaternion( quaternion );\n\t\t\t\tvector2.add( point );\n\n\t\t\t\tvector3.copy( point2 ).add( offset );\n\t\t\t\tvector3.applyQuaternion( prevQuaternion );\n\t\t\t\tvector3.add( prevPoint );\n\n\t\t\t\tvector4.copy( point1 ).add( offset );\n\t\t\t\tvector4.applyQuaternion( prevQuaternion );\n\t\t\t\tvector4.add( prevPoint );\n\n\t\t\t\tvertices.push( vector1.x, vector1.y, vector1.z );\n\t\t\t\tvertices.push( vector2.x, vector2.y, vector2.z );\n\t\t\t\tvertices.push( vector4.x, vector4.y, vector4.z );\n\n\t\t\t\tvertices.push( vector2.x, vector2.y, vector2.z );\n\t\t\t\tvertices.push( vector3.x, vector3.y, vector3.z );\n\t\t\t\tvertices.push( vector4.x, vector4.y, vector4.z );\n\n\t\t\t\t//\n\n\t\t\t\tnormal1.copy( point1 );\n\t\t\t\tnormal1.applyQuaternion( quaternion );\n\t\t\t\tnormal1.normalize();\n\n\t\t\t\tnormal2.copy( point2 );\n\t\t\t\tnormal2.applyQuaternion( quaternion );\n\t\t\t\tnormal2.normalize();\n\n\t\t\t\tnormal3.copy( point2 );\n\t\t\t\tnormal3.applyQuaternion( prevQuaternion );\n\t\t\t\tnormal3.normalize();\n\n\t\t\t\tnormal4.copy( point1 );\n\t\t\t\tnormal4.applyQuaternion( prevQuaternion );\n\t\t\t\tnormal4.normalize();\n\n\t\t\t\tnormals.push( normal1.x, normal1.y, normal1.z );\n\t\t\t\tnormals.push( normal2.x, normal2.y, normal2.z );\n\t\t\t\tnormals.push( normal4.x, normal4.y, normal4.z );\n\n\t\t\t\tnormals.push( normal2.x, normal2.y, normal2.z );\n\t\t\t\tnormals.push( normal3.x, normal3.y, normal3.z );\n\t\t\t\tnormals.push( normal4.x, normal4.y, normal4.z );\n\n\t\t\t\tcolors.push( color[ 0 ], color[ 1 ], color[ 2 ] );\n\t\t\t\tcolors.push( color[ 0 ], color[ 1 ], color[ 2 ] );\n\t\t\t\tcolors.push( color[ 0 ], color[ 1 ], color[ 2 ] );\n\n\t\t\t\tcolors.push( color[ 0 ], color[ 1 ], color[ 2 ] );\n\t\t\t\tcolors.push( color[ 0 ], color[ 1 ], color[ 2 ] );\n\t\t\t\tcolors.push( color[ 0 ], color[ 1 ], color[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst offset = new Vector3();\n\n\t\tfor ( let i = 1; i <= divisions; i ++ ) {\n\n\t\t\tpoint.copy( curve.getPointAt( i / divisions ) );\n\n\t\t\tup.set( 0, 1, 0 );\n\n\t\t\tforward.subVectors( point, prevPoint ).normalize();\n\t\t\tright.crossVectors( up, forward ).normalize();\n\t\t\tup.crossVectors( forward, right );\n\n\t\t\tconst angle = Math.atan2( forward.x, forward.z );\n\n\t\t\tquaternion.setFromAxisAngle( up, angle );\n\n\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\tdrawShape( step, color2 );\n\n\t\t\t}\n\n\t\t\textrudeShape( tube1, offset.set( 0, - 0.125, 0 ), color2 );\n\t\t\textrudeShape( tube2, offset.set( 0.2, 0, 0 ), color1 );\n\t\t\textrudeShape( tube2, offset.set( - 0.2, 0, 0 ), color1 );\n\n\t\t\tprevPoint.copy( point );\n\t\t\tprevQuaternion.copy( quaternion );\n\n\t\t}\n\n\t\t// console.log( vertices.length );\n\n\t\tthis.setAttribute( 'position', new BufferAttribute( new Float32Array( vertices ), 3 ) );\n\t\tthis.setAttribute( 'normal', new BufferAttribute( new Float32Array( normals ), 3 ) );\n\t\tthis.setAttribute( 'color', new BufferAttribute( new Float32Array( colors ), 3 ) );\n\n\t}\n\n}\n\nclass RollerCoasterLiftersGeometry extends BufferGeometry {\n\n\tconstructor( curve, divisions ) {\n\n\t\tsuper();\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\n\t\tconst quaternion = new Quaternion();\n\n\t\tconst up = new Vector3( 0, 1, 0 );\n\n\t\tconst point = new Vector3();\n\t\tconst tangent = new Vector3();\n\n\t\t// shapes\n\n\t\tconst tube1 = [\n\t\t\tnew Vector3( 0, 0.05, - 0.05 ),\n\t\t\tnew Vector3( 0, 0.05, 0.05 ),\n\t\t\tnew Vector3( 0, - 0.05, 0 )\n\t\t];\n\n\t\tconst tube2 = [\n\t\t\tnew Vector3( - 0.05, 0, 0.05 ),\n\t\t\tnew Vector3( - 0.05, 0, - 0.05 ),\n\t\t\tnew Vector3( 0.05, 0, 0 )\n\t\t];\n\n\t\tconst tube3 = [\n\t\t\tnew Vector3( 0.05, 0, - 0.05 ),\n\t\t\tnew Vector3( 0.05, 0, 0.05 ),\n\t\t\tnew Vector3( - 0.05, 0, 0 )\n\t\t];\n\n\t\tconst vector1 = new Vector3();\n\t\tconst vector2 = new Vector3();\n\t\tconst vector3 = new Vector3();\n\t\tconst vector4 = new Vector3();\n\n\t\tconst normal1 = new Vector3();\n\t\tconst normal2 = new Vector3();\n\t\tconst normal3 = new Vector3();\n\t\tconst normal4 = new Vector3();\n\n\t\tfunction extrudeShape( shape, fromPoint, toPoint ) {\n\n\t\t\tfor ( let j = 0, jl = shape.length; j < jl; j ++ ) {\n\n\t\t\t\tconst point1 = shape[ j ];\n\t\t\t\tconst point2 = shape[ ( j + 1 ) % jl ];\n\n\t\t\t\tvector1.copy( point1 );\n\t\t\t\tvector1.applyQuaternion( quaternion );\n\t\t\t\tvector1.add( fromPoint );\n\n\t\t\t\tvector2.copy( point2 );\n\t\t\t\tvector2.applyQuaternion( quaternion );\n\t\t\t\tvector2.add( fromPoint );\n\n\t\t\t\tvector3.copy( point2 );\n\t\t\t\tvector3.applyQuaternion( quaternion );\n\t\t\t\tvector3.add( toPoint );\n\n\t\t\t\tvector4.copy( point1 );\n\t\t\t\tvector4.applyQuaternion( quaternion );\n\t\t\t\tvector4.add( toPoint );\n\n\t\t\t\tvertices.push( vector1.x, vector1.y, vector1.z );\n\t\t\t\tvertices.push( vector2.x, vector2.y, vector2.z );\n\t\t\t\tvertices.push( vector4.x, vector4.y, vector4.z );\n\n\t\t\t\tvertices.push( vector2.x, vector2.y, vector2.z );\n\t\t\t\tvertices.push( vector3.x, vector3.y, vector3.z );\n\t\t\t\tvertices.push( vector4.x, vector4.y, vector4.z );\n\n\t\t\t\t//\n\n\t\t\t\tnormal1.copy( point1 );\n\t\t\t\tnormal1.applyQuaternion( quaternion );\n\t\t\t\tnormal1.normalize();\n\n\t\t\t\tnormal2.copy( point2 );\n\t\t\t\tnormal2.applyQuaternion( quaternion );\n\t\t\t\tnormal2.normalize();\n\n\t\t\t\tnormal3.copy( point2 );\n\t\t\t\tnormal3.applyQuaternion( quaternion );\n\t\t\t\tnormal3.normalize();\n\n\t\t\t\tnormal4.copy( point1 );\n\t\t\t\tnormal4.applyQuaternion( quaternion );\n\t\t\t\tnormal4.normalize();\n\n\t\t\t\tnormals.push( normal1.x, normal1.y, normal1.z );\n\t\t\t\tnormals.push( normal2.x, normal2.y, normal2.z );\n\t\t\t\tnormals.push( normal4.x, normal4.y, normal4.z );\n\n\t\t\t\tnormals.push( normal2.x, normal2.y, normal2.z );\n\t\t\t\tnormals.push( normal3.x, normal3.y, normal3.z );\n\t\t\t\tnormals.push( normal4.x, normal4.y, normal4.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst fromPoint = new Vector3();\n\t\tconst toPoint = new Vector3();\n\n\t\tfor ( let i = 1; i <= divisions; i ++ ) {\n\n\t\t\tpoint.copy( curve.getPointAt( i / divisions ) );\n\t\t\ttangent.copy( curve.getTangentAt( i / divisions ) );\n\n\t\t\tconst angle = Math.atan2( tangent.x, tangent.z );\n\n\t\t\tquaternion.setFromAxisAngle( up, angle );\n\n\t\t\t//\n\n\t\t\tif ( point.y > 10 ) {\n\n\t\t\t\tfromPoint.set( - 0.75, - 0.35, 0 );\n\t\t\t\tfromPoint.applyQuaternion( quaternion );\n\t\t\t\tfromPoint.add( point );\n\n\t\t\t\ttoPoint.set( 0.75, - 0.35, 0 );\n\t\t\t\ttoPoint.applyQuaternion( quaternion );\n\t\t\t\ttoPoint.add( point );\n\n\t\t\t\textrudeShape( tube1, fromPoint, toPoint );\n\n\t\t\t\tfromPoint.set( - 0.7, - 0.3, 0 );\n\t\t\t\tfromPoint.applyQuaternion( quaternion );\n\t\t\t\tfromPoint.add( point );\n\n\t\t\t\ttoPoint.set( - 0.7, - point.y, 0 );\n\t\t\t\ttoPoint.applyQuaternion( quaternion );\n\t\t\t\ttoPoint.add( point );\n\n\t\t\t\textrudeShape( tube2, fromPoint, toPoint );\n\n\t\t\t\tfromPoint.set( 0.7, - 0.3, 0 );\n\t\t\t\tfromPoint.applyQuaternion( quaternion );\n\t\t\t\tfromPoint.add( point );\n\n\t\t\t\ttoPoint.set( 0.7, - point.y, 0 );\n\t\t\t\ttoPoint.applyQuaternion( quaternion );\n\t\t\t\ttoPoint.add( point );\n\n\t\t\t\textrudeShape( tube3, fromPoint, toPoint );\n\n\t\t\t} else {\n\n\t\t\t\tfromPoint.set( 0, - 0.2, 0 );\n\t\t\t\tfromPoint.applyQuaternion( quaternion );\n\t\t\t\tfromPoint.add( point );\n\n\t\t\t\ttoPoint.set( 0, - point.y, 0 );\n\t\t\t\ttoPoint.applyQuaternion( quaternion );\n\t\t\t\ttoPoint.add( point );\n\n\t\t\t\textrudeShape( tube3, fromPoint, toPoint );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new BufferAttribute( new Float32Array( vertices ), 3 ) );\n\t\tthis.setAttribute( 'normal', new BufferAttribute( new Float32Array( normals ), 3 ) );\n\n\t}\n\n}\n\nclass RollerCoasterShadowGeometry extends BufferGeometry {\n\n\tconstructor( curve, divisions ) {\n\n\t\tsuper();\n\n\t\tconst vertices = [];\n\n\t\tconst up = new Vector3( 0, 1, 0 );\n\t\tconst forward = new Vector3();\n\n\t\tconst quaternion = new Quaternion();\n\t\tconst prevQuaternion = new Quaternion();\n\t\tprevQuaternion.setFromAxisAngle( up, Math.PI / 2 );\n\n\t\tconst point = new Vector3();\n\n\t\tconst prevPoint = new Vector3();\n\t\tprevPoint.copy( curve.getPointAt( 0 ) );\n\t\tprevPoint.y = 0;\n\n\t\tconst vector1 = new Vector3();\n\t\tconst vector2 = new Vector3();\n\t\tconst vector3 = new Vector3();\n\t\tconst vector4 = new Vector3();\n\n\t\tfor ( let i = 1; i <= divisions; i ++ ) {\n\n\t\t\tpoint.copy( curve.getPointAt( i / divisions ) );\n\t\t\tpoint.y = 0;\n\n\t\t\tforward.subVectors( point, prevPoint );\n\n\t\t\tconst angle = Math.atan2( forward.x, forward.z );\n\n\t\t\tquaternion.setFromAxisAngle( up, angle );\n\n\t\t\tvector1.set( - 0.3, 0, 0 );\n\t\t\tvector1.applyQuaternion( quaternion );\n\t\t\tvector1.add( point );\n\n\t\t\tvector2.set( 0.3, 0, 0 );\n\t\t\tvector2.applyQuaternion( quaternion );\n\t\t\tvector2.add( point );\n\n\t\t\tvector3.set( 0.3, 0, 0 );\n\t\t\tvector3.applyQuaternion( prevQuaternion );\n\t\t\tvector3.add( prevPoint );\n\n\t\t\tvector4.set( - 0.3, 0, 0 );\n\t\t\tvector4.applyQuaternion( prevQuaternion );\n\t\t\tvector4.add( prevPoint );\n\n\t\t\tvertices.push( vector1.x, vector1.y, vector1.z );\n\t\t\tvertices.push( vector2.x, vector2.y, vector2.z );\n\t\t\tvertices.push( vector4.x, vector4.y, vector4.z );\n\n\t\t\tvertices.push( vector2.x, vector2.y, vector2.z );\n\t\t\tvertices.push( vector3.x, vector3.y, vector3.z );\n\t\t\tvertices.push( vector4.x, vector4.y, vector4.z );\n\n\t\t\tprevPoint.copy( point );\n\t\t\tprevQuaternion.copy( quaternion );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new BufferAttribute( new Float32Array( vertices ), 3 ) );\n\n\t}\n\n}\n\nclass SkyGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tconst vertices = [];\n\n\t\tfor ( let i = 0; i < 100; i ++ ) {\n\n\t\t\tconst x = Math.random() * 800 - 400;\n\t\t\tconst y = Math.random() * 50 + 50;\n\t\t\tconst z = Math.random() * 800 - 400;\n\n\t\t\tconst size = Math.random() * 40 + 20;\n\n\t\t\tvertices.push( x - size, y, z - size );\n\t\t\tvertices.push( x + size, y, z - size );\n\t\t\tvertices.push( x - size, y, z + size );\n\n\t\t\tvertices.push( x + size, y, z - size );\n\t\t\tvertices.push( x + size, y, z + size );\n\t\t\tvertices.push( x - size, y, z + size );\n\n\t\t}\n\n\n\t\tthis.setAttribute( 'position', new BufferAttribute( new Float32Array( vertices ), 3 ) );\n\n\t}\n\n}\n\nclass TreesGeometry extends BufferGeometry {\n\n\tconstructor( landscape ) {\n\n\t\tsuper();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst raycaster = new Raycaster();\n\t\traycaster.ray.direction.set( 0, - 1, 0 );\n\n\t\tconst _color = new Color();\n\n\t\tfor ( let i = 0; i < 2000; i ++ ) {\n\n\t\t\tconst x = Math.random() * 500 - 250;\n\t\t\tconst z = Math.random() * 500 - 250;\n\n\t\t\traycaster.ray.origin.set( x, 50, z );\n\n\t\t\tconst intersections = raycaster.intersectObject( landscape );\n\n\t\t\tif ( intersections.length === 0 ) continue;\n\n\t\t\tconst y = intersections[ 0 ].point.y;\n\n\t\t\tconst height = Math.random() * 5 + 0.5;\n\n\t\t\tlet angle = Math.random() * Math.PI * 2;\n\n\t\t\tvertices.push( x + Math.sin( angle ), y, z + Math.cos( angle ) );\n\t\t\tvertices.push( x, y + height, z );\n\t\t\tvertices.push( x + Math.sin( angle + Math.PI ), y, z + Math.cos( angle + Math.PI ) );\n\n\t\t\tangle += Math.PI / 2;\n\n\t\t\tvertices.push( x + Math.sin( angle ), y, z + Math.cos( angle ) );\n\t\t\tvertices.push( x, y + height, z );\n\t\t\tvertices.push( x + Math.sin( angle + Math.PI ), y, z + Math.cos( angle + Math.PI ) );\n\n\t\t\tconst random = Math.random() * 0.1;\n\n\t\t\tfor ( let j = 0; j < 6; j ++ ) {\n\n\t\t\t\t_color.setRGB( 0.2 + random, 0.4 + random, 0, SRGBColorSpace );\n\n\t\t\t\tcolors.push( _color.r, _color.g, _color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new BufferAttribute( new Float32Array( vertices ), 3 ) );\n\t\tthis.setAttribute( 'color', new BufferAttribute( new Float32Array( colors ), 3 ) );\n\n\t}\n\n}\n\nexport { RollerCoasterGeometry, RollerCoasterLiftersGeometry, RollerCoasterShadowGeometry, SkyGeometry, TreesGeometry };\n", "class Timer {\n\n\tconstructor() {\n\n\t\tthis._previousTime = 0;\n\t\tthis._currentTime = 0;\n\t\tthis._startTime = now();\n\n\t\tthis._delta = 0;\n\t\tthis._elapsed = 0;\n\n\t\tthis._timescale = 1;\n\n\t\t// use Page Visibility API to avoid large time delta values\n\n\t\tthis._usePageVisibilityAPI = ( typeof document !== 'undefined' && document.hidden !== undefined );\n\n\t\tif ( this._usePageVisibilityAPI === true ) {\n\n\t\t\tthis._pageVisibilityHandler = handleVisibilityChange.bind( this );\n\n\t\t\tdocument.addEventListener( 'visibilitychange', this._pageVisibilityHandler, false );\n\n\t\t}\n\n\t}\n\n\tgetDelta() {\n\n\t\treturn this._delta / 1000;\n\n\t}\n\n\tgetElapsed() {\n\n\t\treturn this._elapsed / 1000;\n\n\t}\n\n\tgetTimescale() {\n\n\t\treturn this._timescale;\n\n\t}\n\n\tsetTimescale( timescale ) {\n\n\t\tthis._timescale = timescale;\n\n\t\treturn this;\n\n\t}\n\n\treset() {\n\n\t\tthis._currentTime = now() - this._startTime;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this._usePageVisibilityAPI === true ) {\n\n\t\t\tdocument.removeEventListener( 'visibilitychange', this._pageVisibilityHandler );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( timestamp ) {\n\n\n\t\tif ( this._usePageVisibilityAPI === true && document.hidden === true ) {\n\n\t\t\tthis._delta = 0;\n\n\t\t} else {\n\n\t\t\tthis._previousTime = this._currentTime;\n\t\t\tthis._currentTime = ( timestamp !== undefined ? timestamp : now() ) - this._startTime;\n\n\t\t\tthis._delta = ( this._currentTime - this._previousTime ) * this._timescale;\n\t\t\tthis._elapsed += this._delta; // _elapsed is the accumulation of all previous deltas\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass FixedTimer extends Timer {\n\n\tconstructor( fps = 60 ) {\n\n\t\tsuper();\n\t\tthis._delta = ( 1 / fps ) * 1000;\n\n\t}\n\n\tupdate() {\n\n\t\tthis._elapsed += ( this._delta * this._timescale ); // _elapsed is the accumulation of all previous deltas\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now();\n\n}\n\nfunction handleVisibilityChange() {\n\n\tif ( document.hidden === false ) this.reset();\n\n}\n\nexport { Timer, FixedTimer };\n", "import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tColor,\n\tDynamicDrawUsage,\n\tMatrix4,\n\tMesh,\n\tMeshStandardMaterial,\n\tVector3\n} from 'three';\n\nfunction TubePainter() {\n\n\tconst BUFFER_SIZE = 1000000 * 3;\n\n\tconst positions = new BufferAttribute( new Float32Array( BUFFER_SIZE ), 3 );\n\tpositions.usage = DynamicDrawUsage;\n\n\tconst normals = new BufferAttribute( new Float32Array( BUFFER_SIZE ), 3 );\n\tnormals.usage = DynamicDrawUsage;\n\n\tconst colors = new BufferAttribute( new Float32Array( BUFFER_SIZE ), 3 );\n\tcolors.usage = DynamicDrawUsage;\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', positions );\n\tgeometry.setAttribute( 'normal', normals );\n\tgeometry.setAttribute( 'color', colors );\n\tgeometry.drawRange.count = 0;\n\n\tconst material = new MeshStandardMaterial( {\n\t\tvertexColors: true\n\t} );\n\n\tconst mesh = new Mesh( geometry, material );\n\tmesh.frustumCulled = false;\n\n\t//\n\n\tfunction getPoints( size ) {\n\n\t\tconst PI2 = Math.PI * 2;\n\n\t\tconst sides = 10;\n\t\tconst array = [];\n\t\tconst radius = 0.01 * size;\n\n\t\tfor ( let i = 0; i < sides; i ++ ) {\n\n\t\t\tconst angle = ( i / sides ) * PI2;\n\t\t\tarray.push( new Vector3( Math.sin( angle ) * radius, Math.cos( angle ) * radius, 0 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t//\n\n\tconst vector1 = new Vector3();\n\tconst vector2 = new Vector3();\n\tconst vector3 = new Vector3();\n\tconst vector4 = new Vector3();\n\n\tconst color = new Color( 0xffffff );\n\tlet size = 1;\n\n\tfunction stroke( position1, position2, matrix1, matrix2 ) {\n\n\t\tif ( position1.distanceToSquared( position2 ) === 0 ) return;\n\n\t\tlet count = geometry.drawRange.count;\n\n\t\tconst points = getPoints( size );\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tconst vertex1 = points[ i ];\n\t\t\tconst vertex2 = points[ ( i + 1 ) % il ];\n\n\t\t\t// positions\n\n\t\t\tvector1.copy( vertex1 ).applyMatrix4( matrix2 ).add( position2 );\n\t\t\tvector2.copy( vertex2 ).applyMatrix4( matrix2 ).add( position2 );\n\t\t\tvector3.copy( vertex2 ).applyMatrix4( matrix1 ).add( position1 );\n\t\t\tvector4.copy( vertex1 ).applyMatrix4( matrix1 ).add( position1 );\n\n\t\t\tvector1.toArray( positions.array, ( count + 0 ) * 3 );\n\t\t\tvector2.toArray( positions.array, ( count + 1 ) * 3 );\n\t\t\tvector4.toArray( positions.array, ( count + 2 ) * 3 );\n\n\t\t\tvector2.toArray( positions.array, ( count + 3 ) * 3 );\n\t\t\tvector3.toArray( positions.array, ( count + 4 ) * 3 );\n\t\t\tvector4.toArray( positions.array, ( count + 5 ) * 3 );\n\n\t\t\t// normals\n\n\t\t\tvector1.copy( vertex1 ).applyMatrix4( matrix2 ).normalize();\n\t\t\tvector2.copy( vertex2 ).applyMatrix4( matrix2 ).normalize();\n\t\t\tvector3.copy( vertex2 ).applyMatrix4( matrix1 ).normalize();\n\t\t\tvector4.copy( vertex1 ).applyMatrix4( matrix1 ).normalize();\n\n\t\t\tvector1.toArray( normals.array, ( count + 0 ) * 3 );\n\t\t\tvector2.toArray( normals.array, ( count + 1 ) * 3 );\n\t\t\tvector4.toArray( normals.array, ( count + 2 ) * 3 );\n\n\t\t\tvector2.toArray( normals.array, ( count + 3 ) * 3 );\n\t\t\tvector3.toArray( normals.array, ( count + 4 ) * 3 );\n\t\t\tvector4.toArray( normals.array, ( count + 5 ) * 3 );\n\n\t\t\t// colors\n\n\t\t\tcolor.toArray( colors.array, ( count + 0 ) * 3 );\n\t\t\tcolor.toArray( colors.array, ( count + 1 ) * 3 );\n\t\t\tcolor.toArray( colors.array, ( count + 2 ) * 3 );\n\n\t\t\tcolor.toArray( colors.array, ( count + 3 ) * 3 );\n\t\t\tcolor.toArray( colors.array, ( count + 4 ) * 3 );\n\t\t\tcolor.toArray( colors.array, ( count + 5 ) * 3 );\n\n\t\t\tcount += 6;\n\n\t\t}\n\n\t\tgeometry.drawRange.count = count;\n\n\t}\n\n\t//\n\n\tconst up = new Vector3( 0, 1, 0 );\n\n\tconst point1 = new Vector3();\n\tconst point2 = new Vector3();\n\n\tconst matrix1 = new Matrix4();\n\tconst matrix2 = new Matrix4();\n\n\tfunction moveTo( position ) {\n\n\t\tpoint1.copy( position );\n\t\tmatrix1.lookAt( point2, point1, up );\n\n\t\tpoint2.copy( position );\n\t\tmatrix2.copy( matrix1 );\n\n\t}\n\n\tfunction lineTo( position ) {\n\n\t\tpoint1.copy( position );\n\t\tmatrix1.lookAt( point2, point1, up );\n\n\t\tstroke( point1, point2, matrix1, matrix2 );\n\n\t\tpoint2.copy( point1 );\n\t\tmatrix2.copy( matrix1 );\n\n\t}\n\n\tfunction setSize( value ) {\n\n\t\tsize = value;\n\n\t}\n\n\t//\n\n\tlet count = 0;\n\n\tfunction update() {\n\n\t\tconst start = count;\n\t\tconst end = geometry.drawRange.count;\n\n\t\tif ( start === end ) return;\n\n\t\tpositions.addUpdateRange( start * 3, ( end - start ) * 3 );\n\t\tpositions.needsUpdate = true;\n\n\t\tnormals.addUpdateRange( start * 3, ( end - start ) * 3 );\n\t\tnormals.needsUpdate = true;\n\n\t\tcolors.addUpdateRange( start * 3, ( end - start ) * 3 );\n\t\tcolors.needsUpdate = true;\n\n\t\tcount = geometry.drawRange.count;\n\n\t}\n\n\treturn {\n\t\tmesh: mesh,\n\t\tmoveTo: moveTo,\n\t\tlineTo: lineTo,\n\t\tsetSize: setSize,\n\t\tupdate: update\n\t};\n\n}\n\nexport { TubePainter };\n", "// Original src: https://github.com/zz85/threejs-path-flow\nconst CHANNELS = 4;\nconst TEXTURE_WIDTH = 1024;\nconst TEXTURE_HEIGHT = 4;\n\nimport {\n\tDataTexture,\n\tDataUtils,\n\tRGBAFormat,\n\tHalfFloatType,\n\tRepeatWrapping,\n\tMesh,\n\tInstancedMesh,\n\tLinearFilter,\n\tDynamicDrawUsage,\n\tMatrix4\n} from 'three';\n\n/**\n * Make a new DataTexture to store the descriptions of the curves.\n *\n * @param { number } numberOfCurves the number of curves needed to be described by this texture.\n */\nexport function initSplineTexture( numberOfCurves = 1 ) {\n\n\tconst dataArray = new Uint16Array( TEXTURE_WIDTH * TEXTURE_HEIGHT * numberOfCurves * CHANNELS );\n\tconst dataTexture = new DataTexture(\n\t\tdataArray,\n\t\tTEXTURE_WIDTH,\n\t\tTEXTURE_HEIGHT * numberOfCurves,\n\t\tRGBAFormat,\n\t\tHalfFloatType\n\t);\n\n\tdataTexture.wrapS = RepeatWrapping;\n\tdataTexture.wrapY = RepeatWrapping;\n\tdataTexture.magFilter = LinearFilter;\n\tdataTexture.minFilter = LinearFilter;\n\tdataTexture.needsUpdate = true;\n\n\treturn dataTexture;\n\n}\n\n/**\n * Write the curve description to the data texture\n *\n * @param { DataTexture } texture The DataTexture to write to\n * @param { Curve } splineCurve The curve to describe\n * @param { number } offset Which curve slot to write to\n */\nexport function updateSplineTexture( texture, splineCurve, offset = 0 ) {\n\n\tconst numberOfPoints = Math.floor( TEXTURE_WIDTH * ( TEXTURE_HEIGHT / 4 ) );\n\tsplineCurve.arcLengthDivisions = numberOfPoints / 2;\n\tsplineCurve.updateArcLengths();\n\tconst points = splineCurve.getSpacedPoints( numberOfPoints );\n\tconst frenetFrames = splineCurve.computeFrenetFrames( numberOfPoints, true );\n\n\tfor ( let i = 0; i < numberOfPoints; i ++ ) {\n\n\t\tconst rowOffset = Math.floor( i / TEXTURE_WIDTH );\n\t\tconst rowIndex = i % TEXTURE_WIDTH;\n\n\t\tlet pt = points[ i ];\n\t\tsetTextureValue( texture, rowIndex, pt.x, pt.y, pt.z, 0 + rowOffset + ( TEXTURE_HEIGHT * offset ) );\n\t\tpt = frenetFrames.tangents[ i ];\n\t\tsetTextureValue( texture, rowIndex, pt.x, pt.y, pt.z, 1 + rowOffset + ( TEXTURE_HEIGHT * offset ) );\n\t\tpt = frenetFrames.normals[ i ];\n\t\tsetTextureValue( texture, rowIndex, pt.x, pt.y, pt.z, 2 + rowOffset + ( TEXTURE_HEIGHT * offset ) );\n\t\tpt = frenetFrames.binormals[ i ];\n\t\tsetTextureValue( texture, rowIndex, pt.x, pt.y, pt.z, 3 + rowOffset + ( TEXTURE_HEIGHT * offset ) );\n\n\t}\n\n\ttexture.needsUpdate = true;\n\n}\n\n\nfunction setTextureValue( texture, index, x, y, z, o ) {\n\n\tconst image = texture.image;\n\tconst { data } = image;\n\tconst i = CHANNELS * TEXTURE_WIDTH * o; // Row Offset\n\tdata[ index * CHANNELS + i + 0 ] = DataUtils.toHalfFloat( x );\n\tdata[ index * CHANNELS + i + 1 ] = DataUtils.toHalfFloat( y );\n\tdata[ index * CHANNELS + i + 2 ] = DataUtils.toHalfFloat( z );\n\tdata[ index * CHANNELS + i + 3 ] = DataUtils.toHalfFloat( 1 );\n\n}\n\n/**\n * Create a new set of uniforms for describing the curve modifier\n *\n * @param { DataTexture } Texture which holds the curve description\n */\nexport function getUniforms( splineTexture ) {\n\n\tconst uniforms = {\n\t\tspineTexture: { value: splineTexture },\n\t\tpathOffset: { type: 'f', value: 0 }, // time of path curve\n\t\tpathSegment: { type: 'f', value: 1 }, // fractional length of path\n\t\tspineOffset: { type: 'f', value: 161 },\n\t\tspineLength: { type: 'f', value: 400 },\n\t\tflow: { type: 'i', value: 1 },\n\t};\n\treturn uniforms;\n\n}\n\nexport function modifyShader( material, uniforms, numberOfCurves = 1 ) {\n\n\tif ( material.__ok ) return;\n\tmaterial.__ok = true;\n\n\tmaterial.onBeforeCompile = ( shader ) => {\n\n\t\tif ( shader.__modified ) return;\n\t\tshader.__modified = true;\n\n\t\tObject.assign( shader.uniforms, uniforms );\n\n\t\tconst vertexShader = `\n\t\tuniform sampler2D spineTexture;\n\t\tuniform float pathOffset;\n\t\tuniform float pathSegment;\n\t\tuniform float spineOffset;\n\t\tuniform float spineLength;\n\t\tuniform int flow;\n\n\t\tfloat textureLayers = ${TEXTURE_HEIGHT * numberOfCurves}.;\n\t\tfloat textureStacks = ${TEXTURE_HEIGHT / 4}.;\n\n\t\t${shader.vertexShader}\n\t\t`\n\t\t// chunk import moved in front of modified shader below\n\t\t\t.replace( '#include ', '' )\n\n\t\t\t// vec3 transformedNormal declaration overriden below\n\t\t\t.replace( '#include ', '' )\n\n\t\t\t// vec3 transformed declaration overriden below\n\t\t\t.replace( '#include ', '' )\n\n\t\t\t// shader override\n\t\t\t.replace(\n\t\t\t\t/void\\s*main\\s*\\(\\)\\s*\\{/,\n\t\t\t\t`\nvoid main() {\n#include \n\nvec4 worldPos = modelMatrix * vec4(position, 1.);\n\nbool bend = flow > 0;\nfloat xWeight = bend ? 0. : 1.;\n\n#ifdef USE_INSTANCING\nfloat pathOffsetFromInstanceMatrix = instanceMatrix[3][2];\nfloat spineLengthFromInstanceMatrix = instanceMatrix[3][0];\nfloat spinePortion = bend ? (worldPos.x + spineOffset) / spineLengthFromInstanceMatrix : 0.;\nfloat mt = (spinePortion * pathSegment + pathOffset + pathOffsetFromInstanceMatrix)*textureStacks;\n#else\nfloat spinePortion = bend ? (worldPos.x + spineOffset) / spineLength : 0.;\nfloat mt = (spinePortion * pathSegment + pathOffset)*textureStacks;\n#endif\n\nmt = mod(mt, textureStacks);\nfloat rowOffset = floor(mt);\n\n#ifdef USE_INSTANCING\nrowOffset += instanceMatrix[3][1] * ${TEXTURE_HEIGHT}.;\n#endif\n\nvec3 spinePos = texture2D(spineTexture, vec2(mt, (0. + rowOffset + 0.5) / textureLayers)).xyz;\nvec3 a = texture2D(spineTexture, vec2(mt, (1. + rowOffset + 0.5) / textureLayers)).xyz;\nvec3 b = texture2D(spineTexture, vec2(mt, (2. + rowOffset + 0.5) / textureLayers)).xyz;\nvec3 c = texture2D(spineTexture, vec2(mt, (3. + rowOffset + 0.5) / textureLayers)).xyz;\nmat3 basis = mat3(a, b, c);\n\nvec3 transformed = basis\n\t* vec3(worldPos.x * xWeight, worldPos.y * 1., worldPos.z * 1.)\n\t+ spinePos;\n\nvec3 transformedNormal = normalMatrix * (basis * objectNormal);\n\t\t\t` ).replace(\n\t\t\t\t'#include ',\n\t\t\t\t`vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\n\t\t\t\tgl_Position = projectionMatrix * mvPosition;`\n\t\t\t);\n\n\t\tshader.vertexShader = vertexShader;\n\n\t};\n\n}\n\n/**\n * A helper class for making meshes bend aroudn curves\n */\nexport class Flow {\n\n\t/**\n\t * @param {Mesh} mesh The mesh to clone and modify to bend around the curve\n\t * @param {number} numberOfCurves The amount of space that should preallocated for additional curves\n\t */\n\tconstructor( mesh, numberOfCurves = 1 ) {\n\n\t\tconst obj3D = mesh.clone();\n\t\tconst splineTexure = initSplineTexture( numberOfCurves );\n\t\tconst uniforms = getUniforms( splineTexure );\n\t\tobj3D.traverse( function ( child ) {\n\n\t\t\tif (\n\t\t\t\tchild instanceof Mesh ||\n\t\t\t\tchild instanceof InstancedMesh\n\t\t\t) {\n\n\t\t\t\tif ( Array.isArray( child.material ) ) {\n\n\t\t\t\t\tconst materials = [];\n\n\t\t\t\t\tfor ( const material of child.material ) {\n\n\t\t\t\t\t\tconst newMaterial = material.clone();\n\t\t\t\t\t\tmodifyShader( newMaterial, uniforms, numberOfCurves );\n\t\t\t\t\t\tmaterials.push( newMaterial );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tchild.material = materials;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.material = child.material.clone();\n\t\t\t\t\tmodifyShader( child.material, uniforms, numberOfCurves );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tthis.curveArray = new Array( numberOfCurves );\n\t\tthis.curveLengthArray = new Array( numberOfCurves );\n\n\t\tthis.object3D = obj3D;\n\t\tthis.splineTexure = splineTexure;\n\t\tthis.uniforms = uniforms;\n\n\t}\n\n\tupdateCurve( index, curve ) {\n\n\t\tif ( index >= this.curveArray.length ) throw Error( 'Index out of range for Flow' );\n\t\tconst curveLength = curve.getLength();\n\t\tthis.uniforms.spineLength.value = curveLength;\n\t\tthis.curveLengthArray[ index ] = curveLength;\n\t\tthis.curveArray[ index ] = curve;\n\t\tupdateSplineTexture( this.splineTexure, curve, index );\n\n\t}\n\n\tmoveAlongCurve( amount ) {\n\n\t\tthis.uniforms.pathOffset.value += amount;\n\n\t}\n\n}\nconst matrix = new Matrix4();\n\n/**\n * A helper class for creating instanced versions of flow, where the instances are placed on the curve.\n */\nexport class InstancedFlow extends Flow {\n\n\t/**\n\t *\n\t * @param {number} count The number of instanced elements\n\t * @param {number} curveCount The number of curves to preallocate for\n\t * @param {Geometry} geometry The geometry to use for the instanced mesh\n\t * @param {Material} material The material to use for the instanced mesh\n\t */\n\tconstructor( count, curveCount, geometry, material ) {\n\n\t\tconst mesh = new InstancedMesh(\n\t\t\tgeometry,\n\t\t\tmaterial,\n\t\t\tcount\n\t\t);\n\t\tmesh.instanceMatrix.setUsage( DynamicDrawUsage );\n\t\tmesh.frustumCulled = false;\n\t\tsuper( mesh, curveCount );\n\n\t\tthis.offsets = new Array( count ).fill( 0 );\n\t\tthis.whichCurve = new Array( count ).fill( 0 );\n\n\t}\n\n\t/**\n\t * The extra information about which curve and curve position is stored in the translation components of the matrix for the instanced objects\n\t * This writes that information to the matrix and marks it as needing update.\n\t *\n\t * @param {number} index of the instanced element to update\n\t */\n\twriteChanges( index ) {\n\n\t\tmatrix.makeTranslation(\n\t\t\tthis.curveLengthArray[ this.whichCurve[ index ] ],\n\t\t\tthis.whichCurve[ index ],\n\t\t\tthis.offsets[ index ]\n\t\t);\n\t\tthis.object3D.setMatrixAt( index, matrix );\n\t\tthis.object3D.instanceMatrix.needsUpdate = true;\n\n\t}\n\n\t/**\n\t * Move an individual element along the curve by a specific amount\n\t *\n\t * @param {number} index Which element to update\n\t * @param {number} offset Move by how much\n\t */\n\tmoveIndividualAlongCurve( index, offset ) {\n\n\t\tthis.offsets[ index ] += offset;\n\t\tthis.writeChanges( index );\n\n\t}\n\n\t/**\n\t * Select which curve to use for an element\n\t *\n\t * @param {number} index the index of the instanced element to update\n\t * @param {number} curveNo the index of the curve it should use\n\t */\n\tsetCurve( index, curveNo ) {\n\n\t\tif ( isNaN( curveNo ) ) throw Error( 'curve index being set is Not a Number (NaN)' );\n\t\tthis.whichCurve[ index ] = curveNo;\n\t\tthis.writeChanges( index );\n\n\t}\n\n}\n", "import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tVector3\n} from 'three';\nimport * as BufferGeometryUtils from '../utils/BufferGeometryUtils.js';\n\nconst _A = new Vector3();\nconst _B = new Vector3();\nconst _C = new Vector3();\n\nclass EdgeSplitModifier {\n\n\tmodify( geometry, cutOffAngle, tryKeepNormals = true ) {\n\n\t\tfunction computeNormals() {\n\n\t\t\tnormals = new Float32Array( indexes.length * 3 );\n\n\t\t\tfor ( let i = 0; i < indexes.length; i += 3 ) {\n\n\t\t\t\tlet index = indexes[ i ];\n\n\t\t\t\t_A.set(\n\t\t\t\t\tpositions[ 3 * index ],\n\t\t\t\t\tpositions[ 3 * index + 1 ],\n\t\t\t\t\tpositions[ 3 * index + 2 ] );\n\n\t\t\t\tindex = indexes[ i + 1 ];\n\t\t\t\t_B.set(\n\t\t\t\t\tpositions[ 3 * index ],\n\t\t\t\t\tpositions[ 3 * index + 1 ],\n\t\t\t\t\tpositions[ 3 * index + 2 ] );\n\n\t\t\t\tindex = indexes[ i + 2 ];\n\t\t\t\t_C.set(\n\t\t\t\t\tpositions[ 3 * index ],\n\t\t\t\t\tpositions[ 3 * index + 1 ],\n\t\t\t\t\tpositions[ 3 * index + 2 ] );\n\n\t\t\t\t_C.sub( _B );\n\t\t\t\t_A.sub( _B );\n\n\t\t\t\tconst normal = _C.cross( _A ).normalize();\n\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\tnormals[ 3 * ( i + j ) ] = normal.x;\n\t\t\t\t\tnormals[ 3 * ( i + j ) + 1 ] = normal.y;\n\t\t\t\t\tnormals[ 3 * ( i + j ) + 2 ] = normal.z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tfunction mapPositionsToIndexes() {\n\n\t\t\tpointToIndexMap = Array( positions.length / 3 );\n\n\t\t\tfor ( let i = 0; i < indexes.length; i ++ ) {\n\n\t\t\t\tconst index = indexes[ i ];\n\n\t\t\t\tif ( pointToIndexMap[ index ] == null ) {\n\n\t\t\t\t\tpointToIndexMap[ index ] = [];\n\n\t\t\t\t}\n\n\t\t\t\tpointToIndexMap[ index ].push( i );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tfunction edgeSplitToGroups( indexes, cutOff, firstIndex ) {\n\n\t\t\t_A.set( normals[ 3 * firstIndex ], normals[ 3 * firstIndex + 1 ], normals[ 3 * firstIndex + 2 ] ).normalize();\n\n\t\t\tconst result = {\n\t\t\t\tsplitGroup: [],\n\t\t\t\tcurrentGroup: [ firstIndex ]\n\t\t\t};\n\n\t\t\tfor ( const j of indexes ) {\n\n\t\t\t\tif ( j !== firstIndex ) {\n\n\t\t\t\t\t_B.set( normals[ 3 * j ], normals[ 3 * j + 1 ], normals[ 3 * j + 2 ] ).normalize();\n\n\t\t\t\t\tif ( _B.dot( _A ) < cutOff ) {\n\n\t\t\t\t\t\tresult.splitGroup.push( j );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tresult.currentGroup.push( j );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t}\n\n\n\t\tfunction edgeSplit( indexes, cutOff, original = null ) {\n\n\t\t\tif ( indexes.length === 0 ) return;\n\n\t\t\tconst groupResults = [];\n\n\t\t\tfor ( const index of indexes ) {\n\n\t\t\t\tgroupResults.push( edgeSplitToGroups( indexes, cutOff, index ) );\n\n\t\t\t}\n\n\t\t\tlet result = groupResults[ 0 ];\n\n\t\t\tfor ( const groupResult of groupResults ) {\n\n\t\t\t\tif ( groupResult.currentGroup.length > result.currentGroup.length ) {\n\n\t\t\t\t\tresult = groupResult;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tif ( original != null ) {\n\n\t\t\t\tsplitIndexes.push( {\n\t\t\t\t\toriginal: original,\n\t\t\t\t\tindexes: result.currentGroup\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tif ( result.splitGroup.length ) {\n\n\t\t\t\tedgeSplit( result.splitGroup, cutOff, original || result.currentGroup[ 0 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet hadNormals = false;\n\t\tlet oldNormals = null;\n\n\t\tif ( geometry.attributes.normal ) {\n\n\t\t\thadNormals = true;\n\n\t\t\tgeometry = geometry.clone();\n\n\t\t\tif ( tryKeepNormals === true && geometry.index !== null ) {\n\n\t\t\t\toldNormals = geometry.attributes.normal.array;\n\n\t\t\t}\n\n\t\t\tgeometry.deleteAttribute( 'normal' );\n\n\t\t}\n\n\t\tif ( geometry.index == null ) {\n\n\t\t\tgeometry = BufferGeometryUtils.mergeVertices( geometry );\n\n\t\t}\n\n\t\tconst indexes = geometry.index.array;\n\t\tconst positions = geometry.getAttribute( 'position' ).array;\n\n\t\tlet normals;\n\t\tlet pointToIndexMap;\n\n\t\tcomputeNormals();\n\t\tmapPositionsToIndexes();\n\n\t\tconst splitIndexes = [];\n\n\t\tfor ( const vertexIndexes of pointToIndexMap ) {\n\n\t\t\tedgeSplit( vertexIndexes, Math.cos( cutOffAngle ) - 0.001 );\n\n\t\t}\n\n\t\tconst newAttributes = {};\n\t\tfor ( const name of Object.keys( geometry.attributes ) ) {\n\n\t\t\tconst oldAttribute = geometry.attributes[ name ];\n\t\t\tconst newArray = new oldAttribute.array.constructor( ( indexes.length + splitIndexes.length ) * oldAttribute.itemSize );\n\t\t\tnewArray.set( oldAttribute.array );\n\t\t\tnewAttributes[ name ] = new BufferAttribute( newArray, oldAttribute.itemSize, oldAttribute.normalized );\n\n\t\t}\n\n\t\tconst newIndexes = new Uint32Array( indexes.length );\n\t\tnewIndexes.set( indexes );\n\n\t\tfor ( let i = 0; i < splitIndexes.length; i ++ ) {\n\n\t\t\tconst split = splitIndexes[ i ];\n\t\t\tconst index = indexes[ split.original ];\n\n\t\t\tfor ( const attribute of Object.values( newAttributes ) ) {\n\n\t\t\t\tfor ( let j = 0; j < attribute.itemSize; j ++ ) {\n\n\t\t\t\t\tattribute.array[ ( indexes.length + i ) * attribute.itemSize + j ] =\n\t\t\t\t\t\tattribute.array[ index * attribute.itemSize + j ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( const j of split.indexes ) {\n\n\t\t\t\tnewIndexes[ j ] = indexes.length + i;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( newIndexes, 1 ) );\n\n\t\tfor ( const name of Object.keys( newAttributes ) ) {\n\n\t\t\tgeometry.setAttribute( name, newAttributes[ name ] );\n\n\t\t}\n\n\t\tif ( hadNormals ) {\n\n\t\t\tgeometry.computeVertexNormals();\n\n\t\t\tif ( oldNormals !== null ) {\n\n\t\t\t\tconst changedNormals = new Array( oldNormals.length / 3 ).fill( false );\n\n\t\t\t\tfor ( const splitData of splitIndexes )\n\t\t\t\t\tchangedNormals[ splitData.original ] = true;\n\n\t\t\t\tfor ( let i = 0; i < changedNormals.length; i ++ ) {\n\n\t\t\t\t\tif ( changedNormals[ i ] === false ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ )\n\t\t\t\t\t\t\tgeometry.attributes.normal.array[ 3 * i + j ] = oldNormals[ 3 * i + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n}\n\n\n\nexport { EdgeSplitModifier };\n", "import {\n\tBufferGeometry,\n\tColor,\n\tFloat32BufferAttribute,\n\tVector2,\n\tVector3,\n\tVector4\n} from 'three';\nimport * as BufferGeometryUtils from '../utils/BufferGeometryUtils.js';\n\n/**\n *\tSimplification Geometry Modifier\n * - based on code and technique\n *\t - by Stan Melax in 1998\n *\t - Progressive Mesh type Polygon Reduction Algorithm\n * - http://www.melax.com/polychop/\n */\n\nconst _cb = new Vector3(), _ab = new Vector3();\n\nclass SimplifyModifier {\n\n\tmodify( geometry, count ) {\n\n\t\tgeometry = geometry.clone();\n\n\t\t// currently morphAttributes are not supported\n\t\tdelete geometry.morphAttributes.position;\n\t\tdelete geometry.morphAttributes.normal;\n\t\tconst attributes = geometry.attributes;\n\n\t\t// this modifier can only process indexed and non-indexed geomtries with at least a position attribute\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tif ( name !== 'position' && name !== 'uv' && name !== 'normal' && name !== 'tangent' && name !== 'color' ) geometry.deleteAttribute( name );\n\n\t\t}\n\n\t\tgeometry = BufferGeometryUtils.mergeVertices( geometry );\n\n\t\t//\n\t\t// put data of original geometry in different data structures\n\t\t//\n\n\t\tconst vertices = [];\n\t\tconst faces = [];\n\n\t\t// add vertices\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\t\tconst uvAttribute = geometry.getAttribute( 'uv' );\n\t\tconst normalAttribute = geometry.getAttribute( 'normal' );\n\t\tconst tangentAttribute = geometry.getAttribute( 'tangent' );\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\tlet t = null;\n\t\tlet v2 = null;\n\t\tlet nor = null;\n\t\tlet col = null;\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tconst v = new Vector3().fromBufferAttribute( positionAttribute, i );\n\t\t\tif ( uvAttribute ) {\n\n\t\t\t\tv2 = new Vector2().fromBufferAttribute( uvAttribute, i );\n\n\t\t\t}\n\n\t\t\tif ( normalAttribute ) {\n\n\t\t\t\tnor = new Vector3().fromBufferAttribute( normalAttribute, i );\n\n\t\t\t}\n\n\t\t\tif ( tangentAttribute ) {\n\n\t\t\t\tt = new Vector4().fromBufferAttribute( tangentAttribute, i );\n\n\t\t\t}\n\n\t\t\tif ( colorAttribute ) {\n\n\t\t\t\tcol = new Color().fromBufferAttribute( colorAttribute, i );\n\n\t\t\t}\n\n\t\t\tconst vertex = new Vertex( v, v2, nor, t, col );\n\t\t\tvertices.push( vertex );\n\n\t\t}\n\n\t\t// add faces\n\n\t\tlet index = geometry.getIndex();\n\n\t\tif ( index !== null ) {\n\n\t\t\tfor ( let i = 0; i < index.count; i += 3 ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\tconst triangle = new Triangle( vertices[ a ], vertices[ b ], vertices[ c ], a, b, c );\n\t\t\t\tfaces.push( triangle );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < positionAttribute.count; i += 3 ) {\n\n\t\t\t\tconst a = i;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tconst triangle = new Triangle( vertices[ a ], vertices[ b ], vertices[ c ], a, b, c );\n\t\t\t\tfaces.push( triangle );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute all edge collapse costs\n\n\t\tfor ( let i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tcomputeEdgeCostAtVertex( vertices[ i ] );\n\n\t\t}\n\n\t\tlet nextVertex;\n\n\t\tlet z = count;\n\n\t\twhile ( z -- ) {\n\n\t\t\tnextVertex = minimumCostEdge( vertices );\n\n\t\t\tif ( ! nextVertex ) {\n\n\t\t\t\tconsole.log( 'THREE.SimplifyModifier: No next vertex' );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tcollapse( vertices, faces, nextVertex, nextVertex.collapseNeighbor );\n\n\t\t}\n\n\t\t//\n\n\t\tconst simplifiedGeometry = new BufferGeometry();\n\t\tconst position = [];\n\t\tconst uv = [];\n\t\tconst normal = [];\n\t\tconst tangent = [];\n\t\tconst color = [];\n\n\t\tindex = [];\n\n\t\t//\n\n\t\tfor ( let i = 0; i < vertices.length; i ++ ) {\n\n\t\t\tconst vertex = vertices[ i ];\n\t\t\tposition.push( vertex.position.x, vertex.position.y, vertex.position.z );\n\t\t\tif ( vertex.uv ) {\n\n\t\t\t\tuv.push( vertex.uv.x, vertex.uv.y );\n\n\t\t\t}\n\n\t\t\tif ( vertex.normal ) {\n\n\t\t\t\tnormal.push( vertex.normal.x, vertex.normal.y, vertex.normal.z );\n\n\t\t\t}\n\n\t\t\tif ( vertex.tangent ) {\n\n\t\t\t\ttangent.push( vertex.tangent.x, vertex.tangent.y, vertex.tangent.z, vertex.tangent.w );\n\n\t\t\t}\n\n\t\t\tif ( vertex.color ) {\n\n\t\t\t\tcolor.push( vertex.color.r, vertex.color.g, vertex.color.b );\n\n\t\t\t}\n\n\n\t\t\t// cache final index to GREATLY speed up faces reconstruction\n\t\t\tvertex.id = i;\n\n\t\t}\n\n\t\t//\n\n\t\tfor ( let i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\t\t\tindex.push( face.v1.id, face.v2.id, face.v3.id );\n\n\t\t}\n\n\t\tsimplifiedGeometry.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\t\tif ( uv.length > 0 ) simplifiedGeometry.setAttribute( 'uv', new Float32BufferAttribute( uv, 2 ) );\n\t\tif ( normal.length > 0 ) simplifiedGeometry.setAttribute( 'normal', new Float32BufferAttribute( normal, 3 ) );\n\t\tif ( tangent.length > 0 ) simplifiedGeometry.setAttribute( 'tangent', new Float32BufferAttribute( tangent, 4 ) );\n\t\tif ( color.length > 0 ) simplifiedGeometry.setAttribute( 'color', new Float32BufferAttribute( color, 3 ) );\n\n\t\tsimplifiedGeometry.setIndex( index );\n\n\t\treturn simplifiedGeometry;\n\n\t}\n\n}\n\nfunction pushIfUnique( array, object ) {\n\n\tif ( array.indexOf( object ) === - 1 ) array.push( object );\n\n}\n\nfunction removeFromArray( array, object ) {\n\n\tconst k = array.indexOf( object );\n\tif ( k > - 1 ) array.splice( k, 1 );\n\n}\n\nfunction computeEdgeCollapseCost( u, v ) {\n\n\t// if we collapse edge uv by moving u to v then how\n\t// much different will the model change, i.e. the \"error\".\n\n\tconst edgelength = v.position.distanceTo( u.position );\n\tlet curvature = 0;\n\n\tconst sideFaces = [];\n\n\t// find the \"sides\" triangles that are on the edge uv\n\tfor ( let i = 0, il = u.faces.length; i < il; i ++ ) {\n\n\t\tconst face = u.faces[ i ];\n\n\t\tif ( face.hasVertex( v ) ) {\n\n\t\t\tsideFaces.push( face );\n\n\t\t}\n\n\t}\n\n\t// use the triangle facing most away from the sides\n\t// to determine our curvature term\n\tfor ( let i = 0, il = u.faces.length; i < il; i ++ ) {\n\n\t\tlet minCurvature = 1;\n\t\tconst face = u.faces[ i ];\n\n\t\tfor ( let j = 0; j < sideFaces.length; j ++ ) {\n\n\t\t\tconst sideFace = sideFaces[ j ];\n\t\t\t// use dot product of face normals.\n\t\t\tconst dotProd = face.normal.dot( sideFace.normal );\n\t\t\tminCurvature = Math.min( minCurvature, ( 1.001 - dotProd ) / 2 );\n\n\t\t}\n\n\t\tcurvature = Math.max( curvature, minCurvature );\n\n\t}\n\n\t// crude approach in attempt to preserve borders\n\t// though it seems not to be totally correct\n\tconst borders = 0;\n\n\tif ( sideFaces.length < 2 ) {\n\n\t\t// we add some arbitrary cost for borders,\n\t\t// borders += 10;\n\t\tcurvature = 1;\n\n\t}\n\n\tconst amt = edgelength * curvature + borders;\n\n\treturn amt;\n\n}\n\nfunction computeEdgeCostAtVertex( v ) {\n\n\t// compute the edge collapse cost for all edges that start\n\t// from vertex v. Since we are only interested in reducing\n\t// the object by selecting the min cost edge at each step, we\n\t// only cache the cost of the least cost edge at this vertex\n\t// (in member variable collapse) as well as the value of the\n\t// cost (in member variable collapseCost).\n\n\tif ( v.neighbors.length === 0 ) {\n\n\t\t// collapse if no neighbors.\n\t\tv.collapseNeighbor = null;\n\t\tv.collapseCost = - 0.01;\n\n\t\treturn;\n\n\t}\n\n\tv.collapseCost = 100000;\n\tv.collapseNeighbor = null;\n\n\t// search all neighboring edges for \"least cost\" edge\n\tfor ( let i = 0; i < v.neighbors.length; i ++ ) {\n\n\t\tconst collapseCost = computeEdgeCollapseCost( v, v.neighbors[ i ] );\n\n\t\tif ( ! v.collapseNeighbor ) {\n\n\t\t\tv.collapseNeighbor = v.neighbors[ i ];\n\t\t\tv.collapseCost = collapseCost;\n\t\t\tv.minCost = collapseCost;\n\t\t\tv.totalCost = 0;\n\t\t\tv.costCount = 0;\n\n\t\t}\n\n\t\tv.costCount ++;\n\t\tv.totalCost += collapseCost;\n\n\t\tif ( collapseCost < v.minCost ) {\n\n\t\t\tv.collapseNeighbor = v.neighbors[ i ];\n\t\t\tv.minCost = collapseCost;\n\n\t\t}\n\n\t}\n\n\t// we average the cost of collapsing at this vertex\n\tv.collapseCost = v.totalCost / v.costCount;\n\t// v.collapseCost = v.minCost;\n\n}\n\nfunction removeVertex( v, vertices ) {\n\n\tconsole.assert( v.faces.length === 0 );\n\n\twhile ( v.neighbors.length ) {\n\n\t\tconst n = v.neighbors.pop();\n\t\tremoveFromArray( n.neighbors, v );\n\n\t}\n\n\tremoveFromArray( vertices, v );\n\n}\n\nfunction removeFace( f, faces ) {\n\n\tremoveFromArray( faces, f );\n\n\tif ( f.v1 ) removeFromArray( f.v1.faces, f );\n\tif ( f.v2 ) removeFromArray( f.v2.faces, f );\n\tif ( f.v3 ) removeFromArray( f.v3.faces, f );\n\n\t// TODO optimize this!\n\tconst vs = [ f.v1, f.v2, f.v3 ];\n\n\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\tconst v1 = vs[ i ];\n\t\tconst v2 = vs[ ( i + 1 ) % 3 ];\n\n\t\tif ( ! v1 || ! v2 ) continue;\n\n\t\tv1.removeIfNonNeighbor( v2 );\n\t\tv2.removeIfNonNeighbor( v1 );\n\n\t}\n\n}\n\nfunction collapse( vertices, faces, u, v ) {\n\n\t// Collapse the edge uv by moving vertex u onto v\n\n\tif ( ! v ) {\n\n\t\t// u is a vertex all by itself so just delete it..\n\t\tremoveVertex( u, vertices );\n\t\treturn;\n\n\t}\n\n\tif ( v.uv ) {\n\n\t\tu.uv.copy( v.uv );\n\n\t}\n\n\tif ( v.normal ) {\n\n\t\tv.normal.add( u.normal ).normalize();\n\n\t}\n\n\tif ( v.tangent ) {\n\n\t\tv.tangent.add( u.tangent ).normalize();\n\n\t}\n\n\tconst tmpVertices = [];\n\n\tfor ( let i = 0; i < u.neighbors.length; i ++ ) {\n\n\t\ttmpVertices.push( u.neighbors[ i ] );\n\n\t}\n\n\n\t// delete triangles on edge uv:\n\tfor ( let i = u.faces.length - 1; i >= 0; i -- ) {\n\n\t\tif ( u.faces[ i ] && u.faces[ i ].hasVertex( v ) ) {\n\n\t\t\tremoveFace( u.faces[ i ], faces );\n\n\t\t}\n\n\t}\n\n\t// update remaining triangles to have v instead of u\n\tfor ( let i = u.faces.length - 1; i >= 0; i -- ) {\n\n\t\tu.faces[ i ].replaceVertex( u, v );\n\n\t}\n\n\n\tremoveVertex( u, vertices );\n\n\t// recompute the edge collapse costs in neighborhood\n\tfor ( let i = 0; i < tmpVertices.length; i ++ ) {\n\n\t\tcomputeEdgeCostAtVertex( tmpVertices[ i ] );\n\n\t}\n\n}\n\n\n\nfunction minimumCostEdge( vertices ) {\n\n\t// O(n * n) approach. TODO optimize this\n\n\tlet least = vertices[ 0 ];\n\n\tfor ( let i = 0; i < vertices.length; i ++ ) {\n\n\t\tif ( vertices[ i ].collapseCost < least.collapseCost ) {\n\n\t\t\tleast = vertices[ i ];\n\n\t\t}\n\n\t}\n\n\treturn least;\n\n}\n\n// we use a triangle class to represent structure of face slightly differently\n\nclass Triangle {\n\n\tconstructor( v1, v2, v3, a, b, c ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t\tthis.normal = new Vector3();\n\n\t\tthis.computeNormal();\n\n\t\tv1.faces.push( this );\n\t\tv1.addUniqueNeighbor( v2 );\n\t\tv1.addUniqueNeighbor( v3 );\n\n\t\tv2.faces.push( this );\n\t\tv2.addUniqueNeighbor( v1 );\n\t\tv2.addUniqueNeighbor( v3 );\n\n\n\t\tv3.faces.push( this );\n\t\tv3.addUniqueNeighbor( v1 );\n\t\tv3.addUniqueNeighbor( v2 );\n\n\t}\n\n\tcomputeNormal() {\n\n\t\tconst vA = this.v1.position;\n\t\tconst vB = this.v2.position;\n\t\tconst vC = this.v3.position;\n\n\t\t_cb.subVectors( vC, vB );\n\t\t_ab.subVectors( vA, vB );\n\t\t_cb.cross( _ab ).normalize();\n\n\t\tthis.normal.copy( _cb );\n\n\t}\n\n\thasVertex( v ) {\n\n\t\treturn v === this.v1 || v === this.v2 || v === this.v3;\n\n\t}\n\n\treplaceVertex( oldv, newv ) {\n\n\t\tif ( oldv === this.v1 ) this.v1 = newv;\n\t\telse if ( oldv === this.v2 ) this.v2 = newv;\n\t\telse if ( oldv === this.v3 ) this.v3 = newv;\n\n\t\tremoveFromArray( oldv.faces, this );\n\t\tnewv.faces.push( this );\n\n\n\t\toldv.removeIfNonNeighbor( this.v1 );\n\t\tthis.v1.removeIfNonNeighbor( oldv );\n\n\t\toldv.removeIfNonNeighbor( this.v2 );\n\t\tthis.v2.removeIfNonNeighbor( oldv );\n\n\t\toldv.removeIfNonNeighbor( this.v3 );\n\t\tthis.v3.removeIfNonNeighbor( oldv );\n\n\t\tthis.v1.addUniqueNeighbor( this.v2 );\n\t\tthis.v1.addUniqueNeighbor( this.v3 );\n\n\t\tthis.v2.addUniqueNeighbor( this.v1 );\n\t\tthis.v2.addUniqueNeighbor( this.v3 );\n\n\t\tthis.v3.addUniqueNeighbor( this.v1 );\n\t\tthis.v3.addUniqueNeighbor( this.v2 );\n\n\t\tthis.computeNormal();\n\n\t}\n\n}\n\nclass Vertex {\n\n\tconstructor( v, uv, normal, tangent, color ) {\n\n\t\tthis.position = v;\n\t\tthis.uv = uv;\n\t\tthis.normal = normal;\n\t\tthis.tangent = tangent;\n\t\tthis.color = color;\n\n\t\tthis.id = - 1; // external use position in vertices list (for e.g. face generation)\n\n\t\tthis.faces = []; // faces vertex is connected\n\t\tthis.neighbors = []; // neighbouring vertices aka \"adjacentVertices\"\n\n\t\t// these will be computed in computeEdgeCostAtVertex()\n\t\tthis.collapseCost = 0; // cost of collapsing this vertex, the less the better. aka objdist\n\t\tthis.collapseNeighbor = null; // best candinate for collapsing\n\n\t}\n\n\taddUniqueNeighbor( vertex ) {\n\n\t\tpushIfUnique( this.neighbors, vertex );\n\n\t}\n\n\tremoveIfNonNeighbor( n ) {\n\n\t\tconst neighbors = this.neighbors;\n\t\tconst faces = this.faces;\n\n\t\tconst offset = neighbors.indexOf( n );\n\n\t\tif ( offset === - 1 ) return;\n\n\t\tfor ( let i = 0; i < faces.length; i ++ ) {\n\n\t\t\tif ( faces[ i ].hasVertex( n ) ) return;\n\n\t\t}\n\n\t\tneighbors.splice( offset, 1 );\n\n\t}\n\n}\n\nexport { SimplifyModifier };\n", "import {\n\tBufferGeometry,\n\tColor,\n\tFloat32BufferAttribute,\n\tVector2,\n\tVector3\n} from 'three';\n\n/**\n * Break faces with edges longer than maxEdgeLength\n */\n\nclass TessellateModifier {\n\n\tconstructor( maxEdgeLength = 0.1, maxIterations = 6 ) {\n\n\t\tthis.maxEdgeLength = maxEdgeLength;\n\t\tthis.maxIterations = maxIterations;\n\n\t}\n\n\tmodify( geometry ) {\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tgeometry = geometry.toNonIndexed();\n\n\t\t}\n\n\t\t//\n\n\t\tconst maxIterations = this.maxIterations;\n\t\tconst maxEdgeLengthSquared = this.maxEdgeLength * this.maxEdgeLength;\n\n\t\tconst va = new Vector3();\n\t\tconst vb = new Vector3();\n\t\tconst vc = new Vector3();\n\t\tconst vm = new Vector3();\n\t\tconst vs = [ va, vb, vc, vm ];\n\n\t\tconst na = new Vector3();\n\t\tconst nb = new Vector3();\n\t\tconst nc = new Vector3();\n\t\tconst nm = new Vector3();\n\t\tconst ns = [ na, nb, nc, nm ];\n\n\t\tconst ca = new Color();\n\t\tconst cb = new Color();\n\t\tconst cc = new Color();\n\t\tconst cm = new Color();\n\t\tconst cs = [ ca, cb, cc, cm ];\n\n\t\tconst ua = new Vector2();\n\t\tconst ub = new Vector2();\n\t\tconst uc = new Vector2();\n\t\tconst um = new Vector2();\n\t\tconst us = [ ua, ub, uc, um ];\n\n\t\tconst u2a = new Vector2();\n\t\tconst u2b = new Vector2();\n\t\tconst u2c = new Vector2();\n\t\tconst u2m = new Vector2();\n\t\tconst u2s = [ u2a, u2b, u2c, u2m ];\n\n\t\tconst attributes = geometry.attributes;\n\t\tconst hasNormals = attributes.normal !== undefined;\n\t\tconst hasColors = attributes.color !== undefined;\n\t\tconst hasUVs = attributes.uv !== undefined;\n\t\tconst hasUV1s = attributes.uv1 !== undefined;\n\n\t\tlet positions = attributes.position.array;\n\t\tlet normals = hasNormals ? attributes.normal.array : null;\n\t\tlet colors = hasColors ? attributes.color.array : null;\n\t\tlet uvs = hasUVs ? attributes.uv.array : null;\n\t\tlet uv1s = hasUV1s ? attributes.uv1.array : null;\n\n\t\tlet positions2 = positions;\n\t\tlet normals2 = normals;\n\t\tlet colors2 = colors;\n\t\tlet uvs2 = uvs;\n\t\tlet uv1s2 = uv1s;\n\n\t\tlet iteration = 0;\n\t\tlet tessellating = true;\n\n\t\tfunction addTriangle( a, b, c ) {\n\n\t\t\tconst v1 = vs[ a ];\n\t\t\tconst v2 = vs[ b ];\n\t\t\tconst v3 = vs[ c ];\n\n\t\t\tpositions2.push( v1.x, v1.y, v1.z );\n\t\t\tpositions2.push( v2.x, v2.y, v2.z );\n\t\t\tpositions2.push( v3.x, v3.y, v3.z );\n\n\t\t\tif ( hasNormals ) {\n\n\t\t\t\tconst n1 = ns[ a ];\n\t\t\t\tconst n2 = ns[ b ];\n\t\t\t\tconst n3 = ns[ c ];\n\n\t\t\t\tnormals2.push( n1.x, n1.y, n1.z );\n\t\t\t\tnormals2.push( n2.x, n2.y, n2.z );\n\t\t\t\tnormals2.push( n3.x, n3.y, n3.z );\n\n\t\t\t}\n\n\t\t\tif ( hasColors ) {\n\n\t\t\t\tconst c1 = cs[ a ];\n\t\t\t\tconst c2 = cs[ b ];\n\t\t\t\tconst c3 = cs[ c ];\n\n\t\t\t\tcolors2.push( c1.r, c1.g, c1.b );\n\t\t\t\tcolors2.push( c2.r, c2.g, c2.b );\n\t\t\t\tcolors2.push( c3.r, c3.g, c3.b );\n\n\t\t\t}\n\n\t\t\tif ( hasUVs ) {\n\n\t\t\t\tconst u1 = us[ a ];\n\t\t\t\tconst u2 = us[ b ];\n\t\t\t\tconst u3 = us[ c ];\n\n\t\t\t\tuvs2.push( u1.x, u1.y );\n\t\t\t\tuvs2.push( u2.x, u2.y );\n\t\t\t\tuvs2.push( u3.x, u3.y );\n\n\t\t\t}\n\n\t\t\tif ( hasUV1s ) {\n\n\t\t\t\tconst u21 = u2s[ a ];\n\t\t\t\tconst u22 = u2s[ b ];\n\t\t\t\tconst u23 = u2s[ c ];\n\n\t\t\t\tuv1s2.push( u21.x, u21.y );\n\t\t\t\tuv1s2.push( u22.x, u22.y );\n\t\t\t\tuv1s2.push( u23.x, u23.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\twhile ( tessellating && iteration < maxIterations ) {\n\n\t\t\titeration ++;\n\t\t\ttessellating = false;\n\n\t\t\tpositions = positions2;\n\t\t\tpositions2 = [];\n\n\t\t\tif ( hasNormals ) {\n\n\t\t\t\tnormals = normals2;\n\t\t\t\tnormals2 = [];\n\n\t\t\t}\n\n\t\t\tif ( hasColors ) {\n\n\t\t\t\tcolors = colors2;\n\t\t\t\tcolors2 = [];\n\n\t\t\t}\n\n\t\t\tif ( hasUVs ) {\n\n\t\t\t\tuvs = uvs2;\n\t\t\t\tuvs2 = [];\n\n\t\t\t}\n\n\t\t\tif ( hasUV1s ) {\n\n\t\t\t\tuv1s = uv1s2;\n\t\t\t\tuv1s2 = [];\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, i2 = 0, il = positions.length; i < il; i += 9, i2 += 6 ) {\n\n\t\t\t\tva.fromArray( positions, i + 0 );\n\t\t\t\tvb.fromArray( positions, i + 3 );\n\t\t\t\tvc.fromArray( positions, i + 6 );\n\n\t\t\t\tif ( hasNormals ) {\n\n\t\t\t\t\tna.fromArray( normals, i + 0 );\n\t\t\t\t\tnb.fromArray( normals, i + 3 );\n\t\t\t\t\tnc.fromArray( normals, i + 6 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasColors ) {\n\n\t\t\t\t\tca.fromArray( colors, i + 0 );\n\t\t\t\t\tcb.fromArray( colors, i + 3 );\n\t\t\t\t\tcc.fromArray( colors, i + 6 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasUVs ) {\n\n\t\t\t\t\tua.fromArray( uvs, i2 + 0 );\n\t\t\t\t\tub.fromArray( uvs, i2 + 2 );\n\t\t\t\t\tuc.fromArray( uvs, i2 + 4 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasUV1s ) {\n\n\t\t\t\t\tu2a.fromArray( uv1s, i2 + 0 );\n\t\t\t\t\tu2b.fromArray( uv1s, i2 + 2 );\n\t\t\t\t\tu2c.fromArray( uv1s, i2 + 4 );\n\n\t\t\t\t}\n\n\t\t\t\tconst dab = va.distanceToSquared( vb );\n\t\t\t\tconst dbc = vb.distanceToSquared( vc );\n\t\t\t\tconst dac = va.distanceToSquared( vc );\n\n\t\t\t\tif ( dab > maxEdgeLengthSquared || dbc > maxEdgeLengthSquared || dac > maxEdgeLengthSquared ) {\n\n\t\t\t\t\ttessellating = true;\n\n\t\t\t\t\tif ( dab >= dbc && dab >= dac ) {\n\n\t\t\t\t\t\tvm.lerpVectors( va, vb, 0.5 );\n\t\t\t\t\t\tif ( hasNormals ) nm.lerpVectors( na, nb, 0.5 );\n\t\t\t\t\t\tif ( hasColors ) cm.lerpColors( ca, cb, 0.5 );\n\t\t\t\t\t\tif ( hasUVs ) um.lerpVectors( ua, ub, 0.5 );\n\t\t\t\t\t\tif ( hasUV1s ) u2m.lerpVectors( u2a, u2b, 0.5 );\n\n\t\t\t\t\t\taddTriangle( 0, 3, 2 );\n\t\t\t\t\t\taddTriangle( 3, 1, 2 );\n\n\t\t\t\t\t} else if ( dbc >= dab && dbc >= dac ) {\n\n\t\t\t\t\t\tvm.lerpVectors( vb, vc, 0.5 );\n\t\t\t\t\t\tif ( hasNormals ) nm.lerpVectors( nb, nc, 0.5 );\n\t\t\t\t\t\tif ( hasColors ) cm.lerpColors( cb, cc, 0.5 );\n\t\t\t\t\t\tif ( hasUVs ) um.lerpVectors( ub, uc, 0.5 );\n\t\t\t\t\t\tif ( hasUV1s ) u2m.lerpVectors( u2b, u2c, 0.5 );\n\n\t\t\t\t\t\taddTriangle( 0, 1, 3 );\n\t\t\t\t\t\taddTriangle( 3, 2, 0 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvm.lerpVectors( va, vc, 0.5 );\n\t\t\t\t\t\tif ( hasNormals ) nm.lerpVectors( na, nc, 0.5 );\n\t\t\t\t\t\tif ( hasColors ) cm.lerpColors( ca, cc, 0.5 );\n\t\t\t\t\t\tif ( hasUVs ) um.lerpVectors( ua, uc, 0.5 );\n\t\t\t\t\t\tif ( hasUV1s ) u2m.lerpVectors( u2a, u2c, 0.5 );\n\n\t\t\t\t\t\taddTriangle( 0, 1, 3 );\n\t\t\t\t\t\taddTriangle( 3, 1, 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\taddTriangle( 0, 1, 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\n\t\tif ( hasNormals ) {\n\n\t\t\tgeometry2.setAttribute( 'normal', new Float32BufferAttribute( normals2, 3 ) );\n\n\t\t}\n\n\t\tif ( hasColors ) {\n\n\t\t\tgeometry2.setAttribute( 'color', new Float32BufferAttribute( colors2, 3 ) );\n\n\t\t}\n\n\t\tif ( hasUVs ) {\n\n\t\t\tgeometry2.setAttribute( 'uv', new Float32BufferAttribute( uvs2, 2 ) );\n\n\t\t}\n\n\t\tif ( hasUV1s ) {\n\n\t\t\tgeometry2.setAttribute( 'uv1', new Float32BufferAttribute( uv1s2, 2 ) );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n}\n\nexport { TessellateModifier };\n", "import { Mesh, MeshBasicMaterial, SphereGeometry, Vector3 } from 'three';\n\n/**\n * A ground-projected skybox. The height is how far the camera that took the photo was above the ground - \n * a larger value will magnify the downward part of the image. By default the object is centered at the camera, \n * so it is often helpful to set skybox.position.y = height to put the ground at the origin. Set the radius \n * large enough to ensure your user's camera stays inside.\n */\n\nclass GroundedSkybox extends Mesh {\n\n\tconstructor( map, height, radius, resolution = 128 ) {\n\n\t\tif ( height <= 0 || radius <= 0 || resolution <= 0 ) {\n\n\t\t\tthrow new Error( 'GroundedSkybox height, radius, and resolution must be positive.' );\n\n\t\t}\n\n\t\tconst geometry = new SphereGeometry( radius, 2 * resolution, resolution );\n\t\tgeometry.scale( 1, 1, -1 );\n\n\t\tconst pos = geometry.getAttribute( 'position' );\n\t\tconst tmp = new Vector3();\n\n\t\tfor ( let i = 0; i < pos.count; ++ i ) {\n\n\t\t\ttmp.fromBufferAttribute( pos, i );\n\t\t\tif ( tmp.y < 0 ) {\n\n\t\t\t\t// Smooth out the transition from flat floor to sphere:\n\t\t\t\tconst y1 = - height * 3 / 2;\n\t\t\t\tconst f =\n\t\t\t\t\t\ttmp.y < y1 ? - height / tmp.y : ( 1 - tmp.y * tmp.y / ( 3 * y1 * y1 ) );\n\t\t\t\ttmp.multiplyScalar( f );\n\t\t\t\ttmp.toArray( pos.array, 3 * i );\n\n\t\t\t}\n\n\t\t}\n\n\t\tpos.needsUpdate = true;\n\n\t\tsuper( geometry, new MeshBasicMaterial( { map, depthWrite: false } ) );\n\n\t}\n\n}\n\nexport { GroundedSkybox };\n", "import {\n\tAdditiveBlending,\n\tBox2,\n\tBufferGeometry,\n\tColor,\n\tFramebufferTexture,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tMesh,\n\tMeshBasicMaterial,\n\tRawShaderMaterial,\n\tUnsignedByteType,\n\tVector2,\n\tVector3,\n\tVector4\n} from 'three';\n\nclass Lensflare extends Mesh {\n\n\tconstructor() {\n\n\t\tsuper( Lensflare.Geometry, new MeshBasicMaterial( { opacity: 0, transparent: true } ) );\n\n\t\tthis.isLensflare = true;\n\n\t\tthis.type = 'Lensflare';\n\t\tthis.frustumCulled = false;\n\t\tthis.renderOrder = Infinity;\n\n\t\t//\n\n\t\tconst positionScreen = new Vector3();\n\t\tconst positionView = new Vector3();\n\n\t\t// textures\n\n\t\tconst tempMap = new FramebufferTexture( 16, 16 );\n\t\tconst occlusionMap = new FramebufferTexture( 16, 16 );\n\n\t\tlet currentType = UnsignedByteType;\n\n\t\t// material\n\n\t\tconst geometry = Lensflare.Geometry;\n\n\t\tconst material1a = new RawShaderMaterial( {\n\t\t\tuniforms: {\n\t\t\t\t'scale': { value: null },\n\t\t\t\t'screenPosition': { value: null }\n\t\t\t},\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tprecision highp float;\n\n\t\t\t\tuniform vec3 screenPosition;\n\t\t\t\tuniform vec2 scale;\n\n\t\t\t\tattribute vec3 position;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tgl_Position = vec4( position.xy * scale + screenPosition.xy, screenPosition.z, 1.0 );\n\n\t\t\t\t}`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tprecision highp float;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tgl_FragColor = vec4( 1.0, 0.0, 1.0, 1.0 );\n\n\t\t\t\t}`,\n\t\t\tdepthTest: true,\n\t\t\tdepthWrite: false,\n\t\t\ttransparent: false\n\t\t} );\n\n\t\tconst material1b = new RawShaderMaterial( {\n\t\t\tuniforms: {\n\t\t\t\t'map': { value: tempMap },\n\t\t\t\t'scale': { value: null },\n\t\t\t\t'screenPosition': { value: null }\n\t\t\t},\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tprecision highp float;\n\n\t\t\t\tuniform vec3 screenPosition;\n\t\t\t\tuniform vec2 scale;\n\n\t\t\t\tattribute vec3 position;\n\t\t\t\tattribute vec2 uv;\n\n\t\t\t\tvarying vec2 vUV;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvUV = uv;\n\n\t\t\t\t\tgl_Position = vec4( position.xy * scale + screenPosition.xy, screenPosition.z, 1.0 );\n\n\t\t\t\t}`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tprecision highp float;\n\n\t\t\t\tuniform sampler2D map;\n\n\t\t\t\tvarying vec2 vUV;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tgl_FragColor = texture2D( map, vUV );\n\n\t\t\t\t}`,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\ttransparent: false\n\t\t} );\n\n\t\t// the following object is used for occlusionMap generation\n\n\t\tconst mesh1 = new Mesh( geometry, material1a );\n\n\t\t//\n\n\t\tconst elements = [];\n\n\t\tconst shader = LensflareElement.Shader;\n\n\t\tconst material2 = new RawShaderMaterial( {\n\t\t\tname: shader.name,\n\t\t\tuniforms: {\n\t\t\t\t'map': { value: null },\n\t\t\t\t'occlusionMap': { value: occlusionMap },\n\t\t\t\t'color': { value: new Color( 0xffffff ) },\n\t\t\t\t'scale': { value: new Vector2() },\n\t\t\t\t'screenPosition': { value: new Vector3() }\n\t\t\t},\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tblending: AdditiveBlending,\n\t\t\ttransparent: true,\n\t\t\tdepthWrite: false\n\t\t} );\n\n\t\tconst mesh2 = new Mesh( geometry, material2 );\n\n\t\tthis.addElement = function ( element ) {\n\n\t\t\telements.push( element );\n\n\t\t};\n\n\t\t//\n\n\t\tconst scale = new Vector2();\n\t\tconst screenPositionPixels = new Vector2();\n\t\tconst validArea = new Box2();\n\t\tconst viewport = new Vector4();\n\n\t\tthis.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\trenderer.getCurrentViewport( viewport );\n\n\t\t\tconst renderTarget = renderer.getRenderTarget();\n\t\t\tconst type = ( renderTarget !== null ) ? renderTarget.texture.type : UnsignedByteType;\n\n\t\t\tif ( currentType !== type ) {\n\n\t\t\t\ttempMap.dispose();\n\t\t\t\tocclusionMap.dispose();\n\n\t\t\t\ttempMap.type = occlusionMap.type = type;\n\n\t\t\t\tcurrentType = type;\n\n\t\t\t}\n\n\t\t\tconst invAspect = viewport.w / viewport.z;\n\t\t\tconst halfViewportWidth = viewport.z / 2.0;\n\t\t\tconst halfViewportHeight = viewport.w / 2.0;\n\n\t\t\tlet size = 16 / viewport.w;\n\t\t\tscale.set( size * invAspect, size );\n\n\t\t\tvalidArea.min.set( viewport.x, viewport.y );\n\t\t\tvalidArea.max.set( viewport.x + ( viewport.z - 16 ), viewport.y + ( viewport.w - 16 ) );\n\n\t\t\t// calculate position in screen space\n\n\t\t\tpositionView.setFromMatrixPosition( this.matrixWorld );\n\t\t\tpositionView.applyMatrix4( camera.matrixWorldInverse );\n\n\t\t\tif ( positionView.z > 0 ) return; // lensflare is behind the camera\n\n\t\t\tpositionScreen.copy( positionView ).applyMatrix4( camera.projectionMatrix );\n\n\t\t\t// horizontal and vertical coordinate of the lower left corner of the pixels to copy\n\n\t\t\tscreenPositionPixels.x = viewport.x + ( positionScreen.x * halfViewportWidth ) + halfViewportWidth - 8;\n\t\t\tscreenPositionPixels.y = viewport.y + ( positionScreen.y * halfViewportHeight ) + halfViewportHeight - 8;\n\n\t\t\t// screen cull\n\n\t\t\tif ( validArea.containsPoint( screenPositionPixels ) ) {\n\n\t\t\t\t// save current RGB to temp texture\n\n\t\t\t\trenderer.copyFramebufferToTexture( tempMap, screenPositionPixels );\n\n\t\t\t\t// render pink quad\n\n\t\t\t\tlet uniforms = material1a.uniforms;\n\t\t\t\tuniforms[ 'scale' ].value = scale;\n\t\t\t\tuniforms[ 'screenPosition' ].value = positionScreen;\n\n\t\t\t\trenderer.renderBufferDirect( camera, null, geometry, material1a, mesh1, null );\n\n\t\t\t\t// copy result to occlusionMap\n\n\t\t\t\trenderer.copyFramebufferToTexture( occlusionMap, screenPositionPixels );\n\n\t\t\t\t// restore graphics\n\n\t\t\t\tuniforms = material1b.uniforms;\n\t\t\t\tuniforms[ 'scale' ].value = scale;\n\t\t\t\tuniforms[ 'screenPosition' ].value = positionScreen;\n\n\t\t\t\trenderer.renderBufferDirect( camera, null, geometry, material1b, mesh1, null );\n\n\t\t\t\t// render elements\n\n\t\t\t\tconst vecX = - positionScreen.x * 2;\n\t\t\t\tconst vecY = - positionScreen.y * 2;\n\n\t\t\t\tfor ( let i = 0, l = elements.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst element = elements[ i ];\n\n\t\t\t\t\tconst uniforms = material2.uniforms;\n\n\t\t\t\t\tuniforms[ 'color' ].value.copy( element.color );\n\t\t\t\t\tuniforms[ 'map' ].value = element.texture;\n\t\t\t\t\tuniforms[ 'screenPosition' ].value.x = positionScreen.x + vecX * element.distance;\n\t\t\t\t\tuniforms[ 'screenPosition' ].value.y = positionScreen.y + vecY * element.distance;\n\n\t\t\t\t\tsize = element.size / viewport.w;\n\t\t\t\t\tconst invAspect = viewport.w / viewport.z;\n\n\t\t\t\t\tuniforms[ 'scale' ].value.set( size * invAspect, size );\n\n\t\t\t\t\tmaterial2.uniformsNeedUpdate = true;\n\n\t\t\t\t\trenderer.renderBufferDirect( camera, null, geometry, material2, mesh2, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.dispose = function () {\n\n\t\t\tmaterial1a.dispose();\n\t\t\tmaterial1b.dispose();\n\t\t\tmaterial2.dispose();\n\n\t\t\ttempMap.dispose();\n\t\t\tocclusionMap.dispose();\n\n\t\t\tfor ( let i = 0, l = elements.length; i < l; i ++ ) {\n\n\t\t\t\telements[ i ].texture.dispose();\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n}\n\n//\n\nclass LensflareElement {\n\n\tconstructor( texture, size = 1, distance = 0, color = new Color( 0xffffff ) ) {\n\n\t\tthis.texture = texture;\n\t\tthis.size = size;\n\t\tthis.distance = distance;\n\t\tthis.color = color;\n\n\t}\n\n}\n\nLensflareElement.Shader = {\n\n\tname: 'LensflareElementShader',\n\n\tuniforms: {\n\n\t\t'map': { value: null },\n\t\t'occlusionMap': { value: null },\n\t\t'color': { value: null },\n\t\t'scale': { value: null },\n\t\t'screenPosition': { value: null }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tprecision highp float;\n\n\t\tuniform vec3 screenPosition;\n\t\tuniform vec2 scale;\n\n\t\tuniform sampler2D occlusionMap;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\n\t\tvarying vec2 vUV;\n\t\tvarying float vVisibility;\n\n\t\tvoid main() {\n\n\t\t\tvUV = uv;\n\n\t\t\tvec2 pos = position.xy;\n\n\t\t\tvec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\n\t\t\tvisibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\n\t\t\tvisibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\n\t\t\tvisibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\n\t\t\tvisibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\n\t\t\tvisibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\n\t\t\tvisibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\n\t\t\tvisibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\n\t\t\tvisibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\n\n\t\t\tvVisibility = visibility.r / 9.0;\n\t\t\tvVisibility *= 1.0 - visibility.g / 9.0;\n\t\t\tvVisibility *= visibility.b / 9.0;\n\n\t\t\tgl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tprecision highp float;\n\n\t\tuniform sampler2D map;\n\t\tuniform vec3 color;\n\n\t\tvarying vec2 vUV;\n\t\tvarying float vVisibility;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texture = texture2D( map, vUV );\n\t\t\ttexture.a *= vVisibility;\n\t\t\tgl_FragColor = texture;\n\t\t\tgl_FragColor.rgb *= color;\n\n\t\t}`\n\n};\n\nLensflare.Geometry = ( function () {\n\n\tconst geometry = new BufferGeometry();\n\n\tconst float32Array = new Float32Array( [\n\t\t- 1, - 1, 0, 0, 0,\n\t\t1, - 1, 0, 1, 0,\n\t\t1, 1, 0, 1, 1,\n\t\t- 1, 1, 0, 0, 1\n\t] );\n\n\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\tgeometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\tgeometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\tgeometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\treturn geometry;\n\n} )();\n\nexport { Lensflare, LensflareElement };\n", "import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tColor,\n\tDynamicDrawUsage,\n\tMesh,\n\tSphere,\n\tVector3\n} from 'three';\n\n/**\n * Port of http://webglsamples.org/blob/blob.html\n */\n\nclass MarchingCubes extends Mesh {\n\n\tconstructor( resolution, material, enableUvs = false, enableColors = false, maxPolyCount = 10000 ) {\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isMarchingCubes = true;\n\n\t\tconst scope = this;\n\n\t\t// temp buffers used in polygonize\n\n\t\tconst vlist = new Float32Array( 12 * 3 );\n\t\tconst nlist = new Float32Array( 12 * 3 );\n\t\tconst clist = new Float32Array( 12 * 3 );\n\n\t\tthis.enableUvs = enableUvs;\n\t\tthis.enableColors = enableColors;\n\n\t\t// functions have to be object properties\n\t\t// prototype functions kill performance\n\t\t// (tested and it was 4x slower !!!)\n\n\t\tthis.init = function ( resolution ) {\n\n\t\t\tthis.resolution = resolution;\n\n\t\t\t// parameters\n\n\t\t\tthis.isolation = 80.0;\n\n\t\t\t// size of field, 32 is pushing it in Javascript :)\n\n\t\t\tthis.size = resolution;\n\t\t\tthis.size2 = this.size * this.size;\n\t\t\tthis.size3 = this.size2 * this.size;\n\t\t\tthis.halfsize = this.size / 2.0;\n\n\t\t\t// deltas\n\n\t\t\tthis.delta = 2.0 / this.size;\n\t\t\tthis.yd = this.size;\n\t\t\tthis.zd = this.size2;\n\n\t\t\tthis.field = new Float32Array( this.size3 );\n\t\t\tthis.normal_cache = new Float32Array( this.size3 * 3 );\n\t\t\tthis.palette = new Float32Array( this.size3 * 3 );\n\n\t\t\t//\n\n\t\t\tthis.count = 0;\n\n\t\t\tconst maxVertexCount = maxPolyCount * 3;\n\n\t\t\tthis.positionArray = new Float32Array( maxVertexCount * 3 );\n\t\t\tconst positionAttribute = new BufferAttribute( this.positionArray, 3 );\n\t\t\tpositionAttribute.setUsage( DynamicDrawUsage );\n\t\t\tgeometry.setAttribute( 'position', positionAttribute );\n\n\t\t\tthis.normalArray = new Float32Array( maxVertexCount * 3 );\n\t\t\tconst normalAttribute = new BufferAttribute( this.normalArray, 3 );\n\t\t\tnormalAttribute.setUsage( DynamicDrawUsage );\n\t\t\tgeometry.setAttribute( 'normal', normalAttribute );\n\n\t\t\tif ( this.enableUvs ) {\n\n\t\t\t\tthis.uvArray = new Float32Array( maxVertexCount * 2 );\n\t\t\t\tconst uvAttribute = new BufferAttribute( this.uvArray, 2 );\n\t\t\t\tuvAttribute.setUsage( DynamicDrawUsage );\n\t\t\t\tgeometry.setAttribute( 'uv', uvAttribute );\n\n\t\t\t}\n\n\t\t\tif ( this.enableColors ) {\n\n\t\t\t\tthis.colorArray = new Float32Array( maxVertexCount * 3 );\n\t\t\t\tconst colorAttribute = new BufferAttribute( this.colorArray, 3 );\n\t\t\t\tcolorAttribute.setUsage( DynamicDrawUsage );\n\t\t\t\tgeometry.setAttribute( 'color', colorAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( new Vector3(), 1 );\n\n\t\t};\n\n\t\t///////////////////////\n\t\t// Polygonization\n\t\t///////////////////////\n\n\t\tfunction lerp( a, b, t ) {\n\n\t\t\treturn a + ( b - a ) * t;\n\n\t\t}\n\n\t\tfunction VIntX( q, offset, isol, x, y, z, valp1, valp2, c_offset1, c_offset2 ) {\n\n\t\t\tconst mu = ( isol - valp1 ) / ( valp2 - valp1 ),\n\t\t\t\tnc = scope.normal_cache;\n\n\t\t\tvlist[ offset + 0 ] = x + mu * scope.delta;\n\t\t\tvlist[ offset + 1 ] = y;\n\t\t\tvlist[ offset + 2 ] = z;\n\n\t\t\tnlist[ offset + 0 ] = lerp( nc[ q + 0 ], nc[ q + 3 ], mu );\n\t\t\tnlist[ offset + 1 ] = lerp( nc[ q + 1 ], nc[ q + 4 ], mu );\n\t\t\tnlist[ offset + 2 ] = lerp( nc[ q + 2 ], nc[ q + 5 ], mu );\n\n\t\t\tclist[ offset + 0 ] = lerp( scope.palette[ c_offset1 * 3 + 0 ], scope.palette[ c_offset2 * 3 + 0 ], mu );\n\t\t\tclist[ offset + 1 ] = lerp( scope.palette[ c_offset1 * 3 + 1 ], scope.palette[ c_offset2 * 3 + 1 ], mu );\n\t\t\tclist[ offset + 2 ] = lerp( scope.palette[ c_offset1 * 3 + 2 ], scope.palette[ c_offset2 * 3 + 2 ], mu );\n\n\t\t}\n\n\t\tfunction VIntY( q, offset, isol, x, y, z, valp1, valp2, c_offset1, c_offset2 ) {\n\n\t\t\tconst mu = ( isol - valp1 ) / ( valp2 - valp1 ),\n\t\t\t\tnc = scope.normal_cache;\n\n\t\t\tvlist[ offset + 0 ] = x;\n\t\t\tvlist[ offset + 1 ] = y + mu * scope.delta;\n\t\t\tvlist[ offset + 2 ] = z;\n\n\t\t\tconst q2 = q + scope.yd * 3;\n\n\t\t\tnlist[ offset + 0 ] = lerp( nc[ q + 0 ], nc[ q2 + 0 ], mu );\n\t\t\tnlist[ offset + 1 ] = lerp( nc[ q + 1 ], nc[ q2 + 1 ], mu );\n\t\t\tnlist[ offset + 2 ] = lerp( nc[ q + 2 ], nc[ q2 + 2 ], mu );\n\n\t\t\tclist[ offset + 0 ] = lerp( scope.palette[ c_offset1 * 3 + 0 ], scope.palette[ c_offset2 * 3 + 0 ], mu );\n\t\t\tclist[ offset + 1 ] = lerp( scope.palette[ c_offset1 * 3 + 1 ], scope.palette[ c_offset2 * 3 + 1 ], mu );\n\t\t\tclist[ offset + 2 ] = lerp( scope.palette[ c_offset1 * 3 + 2 ], scope.palette[ c_offset2 * 3 + 2 ], mu );\n\n\t\t}\n\n\t\tfunction VIntZ( q, offset, isol, x, y, z, valp1, valp2, c_offset1, c_offset2 ) {\n\n\t\t\tconst mu = ( isol - valp1 ) / ( valp2 - valp1 ),\n\t\t\t\tnc = scope.normal_cache;\n\n\t\t\tvlist[ offset + 0 ] = x;\n\t\t\tvlist[ offset + 1 ] = y;\n\t\t\tvlist[ offset + 2 ] = z + mu * scope.delta;\n\n\t\t\tconst q2 = q + scope.zd * 3;\n\n\t\t\tnlist[ offset + 0 ] = lerp( nc[ q + 0 ], nc[ q2 + 0 ], mu );\n\t\t\tnlist[ offset + 1 ] = lerp( nc[ q + 1 ], nc[ q2 + 1 ], mu );\n\t\t\tnlist[ offset + 2 ] = lerp( nc[ q + 2 ], nc[ q2 + 2 ], mu );\n\n\t\t\tclist[ offset + 0 ] = lerp( scope.palette[ c_offset1 * 3 + 0 ], scope.palette[ c_offset2 * 3 + 0 ], mu );\n\t\t\tclist[ offset + 1 ] = lerp( scope.palette[ c_offset1 * 3 + 1 ], scope.palette[ c_offset2 * 3 + 1 ], mu );\n\t\t\tclist[ offset + 2 ] = lerp( scope.palette[ c_offset1 * 3 + 2 ], scope.palette[ c_offset2 * 3 + 2 ], mu );\n\n\t\t}\n\n\t\tfunction compNorm( q ) {\n\n\t\t\tconst q3 = q * 3;\n\n\t\t\tif ( scope.normal_cache[ q3 ] === 0.0 ) {\n\n\t\t\t\tscope.normal_cache[ q3 + 0 ] = scope.field[ q - 1 ] - scope.field[ q + 1 ];\n\t\t\t\tscope.normal_cache[ q3 + 1 ] =\n\t\t\t\t\tscope.field[ q - scope.yd ] - scope.field[ q + scope.yd ];\n\t\t\t\tscope.normal_cache[ q3 + 2 ] =\n\t\t\t\t\tscope.field[ q - scope.zd ] - scope.field[ q + scope.zd ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Returns total number of triangles. Fills triangles.\n\t\t// (this is where most of time is spent - it's inner work of O(n3) loop )\n\n\t\tfunction polygonize( fx, fy, fz, q, isol ) {\n\n\t\t\t// cache indices\n\t\t\tconst q1 = q + 1,\n\t\t\t\tqy = q + scope.yd,\n\t\t\t\tqz = q + scope.zd,\n\t\t\t\tq1y = q1 + scope.yd,\n\t\t\t\tq1z = q1 + scope.zd,\n\t\t\t\tqyz = q + scope.yd + scope.zd,\n\t\t\t\tq1yz = q1 + scope.yd + scope.zd;\n\n\t\t\tlet cubeindex = 0;\n\t\t\tconst field0 = scope.field[ q ],\n\t\t\t\tfield1 = scope.field[ q1 ],\n\t\t\t\tfield2 = scope.field[ qy ],\n\t\t\t\tfield3 = scope.field[ q1y ],\n\t\t\t\tfield4 = scope.field[ qz ],\n\t\t\t\tfield5 = scope.field[ q1z ],\n\t\t\t\tfield6 = scope.field[ qyz ],\n\t\t\t\tfield7 = scope.field[ q1yz ];\n\n\t\t\tif ( field0 < isol ) cubeindex |= 1;\n\t\t\tif ( field1 < isol ) cubeindex |= 2;\n\t\t\tif ( field2 < isol ) cubeindex |= 8;\n\t\t\tif ( field3 < isol ) cubeindex |= 4;\n\t\t\tif ( field4 < isol ) cubeindex |= 16;\n\t\t\tif ( field5 < isol ) cubeindex |= 32;\n\t\t\tif ( field6 < isol ) cubeindex |= 128;\n\t\t\tif ( field7 < isol ) cubeindex |= 64;\n\n\t\t\t// if cube is entirely in/out of the surface - bail, nothing to draw\n\n\t\t\tconst bits = edgeTable[ cubeindex ];\n\t\t\tif ( bits === 0 ) return 0;\n\n\t\t\tconst d = scope.delta,\n\t\t\t\tfx2 = fx + d,\n\t\t\t\tfy2 = fy + d,\n\t\t\t\tfz2 = fz + d;\n\n\t\t\t// top of the cube\n\n\t\t\tif ( bits & 1 ) {\n\n\t\t\t\tcompNorm( q );\n\t\t\t\tcompNorm( q1 );\n\t\t\t\tVIntX( q * 3, 0, isol, fx, fy, fz, field0, field1, q, q1 );\n\n\t\t\t}\n\n\t\t\tif ( bits & 2 ) {\n\n\t\t\t\tcompNorm( q1 );\n\t\t\t\tcompNorm( q1y );\n\t\t\t\tVIntY( q1 * 3, 3, isol, fx2, fy, fz, field1, field3, q1, q1y );\n\n\t\t\t}\n\n\t\t\tif ( bits & 4 ) {\n\n\t\t\t\tcompNorm( qy );\n\t\t\t\tcompNorm( q1y );\n\t\t\t\tVIntX( qy * 3, 6, isol, fx, fy2, fz, field2, field3, qy, q1y );\n\n\t\t\t}\n\n\t\t\tif ( bits & 8 ) {\n\n\t\t\t\tcompNorm( q );\n\t\t\t\tcompNorm( qy );\n\t\t\t\tVIntY( q * 3, 9, isol, fx, fy, fz, field0, field2, q, qy );\n\n\t\t\t}\n\n\t\t\t// bottom of the cube\n\n\t\t\tif ( bits & 16 ) {\n\n\t\t\t\tcompNorm( qz );\n\t\t\t\tcompNorm( q1z );\n\t\t\t\tVIntX( qz * 3, 12, isol, fx, fy, fz2, field4, field5, qz, q1z );\n\n\t\t\t}\n\n\t\t\tif ( bits & 32 ) {\n\n\t\t\t\tcompNorm( q1z );\n\t\t\t\tcompNorm( q1yz );\n\t\t\t\tVIntY(\n\t\t\t\t\tq1z * 3,\n\t\t\t\t\t15,\n\t\t\t\t\tisol,\n\t\t\t\t\tfx2,\n\t\t\t\t\tfy,\n\t\t\t\t\tfz2,\n\t\t\t\t\tfield5,\n\t\t\t\t\tfield7,\n\t\t\t\t\tq1z,\n\t\t\t\t\tq1yz\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( bits & 64 ) {\n\n\t\t\t\tcompNorm( qyz );\n\t\t\t\tcompNorm( q1yz );\n\t\t\t\tVIntX(\n\t\t\t\t\tqyz * 3,\n\t\t\t\t\t18,\n\t\t\t\t\tisol,\n\t\t\t\t\tfx,\n\t\t\t\t\tfy2,\n\t\t\t\t\tfz2,\n\t\t\t\t\tfield6,\n\t\t\t\t\tfield7,\n\t\t\t\t\tqyz,\n\t\t\t\t\tq1yz\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( bits & 128 ) {\n\n\t\t\t\tcompNorm( qz );\n\t\t\t\tcompNorm( qyz );\n\t\t\t\tVIntY( qz * 3, 21, isol, fx, fy, fz2, field4, field6, qz, qyz );\n\n\t\t\t}\n\n\t\t\t// vertical lines of the cube\n\t\t\tif ( bits & 256 ) {\n\n\t\t\t\tcompNorm( q );\n\t\t\t\tcompNorm( qz );\n\t\t\t\tVIntZ( q * 3, 24, isol, fx, fy, fz, field0, field4, q, qz );\n\n\t\t\t}\n\n\t\t\tif ( bits & 512 ) {\n\n\t\t\t\tcompNorm( q1 );\n\t\t\t\tcompNorm( q1z );\n\t\t\t\tVIntZ( q1 * 3, 27, isol, fx2, fy, fz, field1, field5, q1, q1z );\n\n\t\t\t}\n\n\t\t\tif ( bits & 1024 ) {\n\n\t\t\t\tcompNorm( q1y );\n\t\t\t\tcompNorm( q1yz );\n\t\t\t\tVIntZ(\n\t\t\t\t\tq1y * 3,\n\t\t\t\t\t30,\n\t\t\t\t\tisol,\n\t\t\t\t\tfx2,\n\t\t\t\t\tfy2,\n\t\t\t\t\tfz,\n\t\t\t\t\tfield3,\n\t\t\t\t\tfield7,\n\t\t\t\t\tq1y,\n\t\t\t\t\tq1yz\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( bits & 2048 ) {\n\n\t\t\t\tcompNorm( qy );\n\t\t\t\tcompNorm( qyz );\n\t\t\t\tVIntZ( qy * 3, 33, isol, fx, fy2, fz, field2, field6, qy, qyz );\n\n\t\t\t}\n\n\t\t\tcubeindex <<= 4; // re-purpose cubeindex into an offset into triTable\n\n\t\t\tlet o1,\n\t\t\t\to2,\n\t\t\t\to3,\n\t\t\t\tnumtris = 0,\n\t\t\t\ti = 0;\n\n\t\t\t// here is where triangles are created\n\n\t\t\twhile ( triTable[ cubeindex + i ] != - 1 ) {\n\n\t\t\t\to1 = cubeindex + i;\n\t\t\t\to2 = o1 + 1;\n\t\t\t\to3 = o1 + 2;\n\n\t\t\t\tposnormtriv(\n\t\t\t\t\tvlist,\n\t\t\t\t\tnlist,\n\t\t\t\t\tclist,\n\t\t\t\t\t3 * triTable[ o1 ],\n\t\t\t\t\t3 * triTable[ o2 ],\n\t\t\t\t\t3 * triTable[ o3 ]\n\t\t\t\t);\n\n\t\t\t\ti += 3;\n\t\t\t\tnumtris ++;\n\n\t\t\t}\n\n\t\t\treturn numtris;\n\n\t\t}\n\n\t\tfunction posnormtriv( pos, norm, colors, o1, o2, o3 ) {\n\n\t\t\tconst c = scope.count * 3;\n\n\t\t\t// positions\n\n\t\t\tscope.positionArray[ c + 0 ] = pos[ o1 ];\n\t\t\tscope.positionArray[ c + 1 ] = pos[ o1 + 1 ];\n\t\t\tscope.positionArray[ c + 2 ] = pos[ o1 + 2 ];\n\n\t\t\tscope.positionArray[ c + 3 ] = pos[ o2 ];\n\t\t\tscope.positionArray[ c + 4 ] = pos[ o2 + 1 ];\n\t\t\tscope.positionArray[ c + 5 ] = pos[ o2 + 2 ];\n\n\t\t\tscope.positionArray[ c + 6 ] = pos[ o3 ];\n\t\t\tscope.positionArray[ c + 7 ] = pos[ o3 + 1 ];\n\t\t\tscope.positionArray[ c + 8 ] = pos[ o3 + 2 ];\n\n\t\t\t// normals\n\n\t\t\tif ( scope.material.flatShading === true ) {\n\n\t\t\t\tconst nx = ( norm[ o1 + 0 ] + norm[ o2 + 0 ] + norm[ o3 + 0 ] ) / 3;\n\t\t\t\tconst ny = ( norm[ o1 + 1 ] + norm[ o2 + 1 ] + norm[ o3 + 1 ] ) / 3;\n\t\t\t\tconst nz = ( norm[ o1 + 2 ] + norm[ o2 + 2 ] + norm[ o3 + 2 ] ) / 3;\n\n\t\t\t\tscope.normalArray[ c + 0 ] = nx;\n\t\t\t\tscope.normalArray[ c + 1 ] = ny;\n\t\t\t\tscope.normalArray[ c + 2 ] = nz;\n\n\t\t\t\tscope.normalArray[ c + 3 ] = nx;\n\t\t\t\tscope.normalArray[ c + 4 ] = ny;\n\t\t\t\tscope.normalArray[ c + 5 ] = nz;\n\n\t\t\t\tscope.normalArray[ c + 6 ] = nx;\n\t\t\t\tscope.normalArray[ c + 7 ] = ny;\n\t\t\t\tscope.normalArray[ c + 8 ] = nz;\n\n\t\t\t} else {\n\n\t\t\t\tscope.normalArray[ c + 0 ] = norm[ o1 + 0 ];\n\t\t\t\tscope.normalArray[ c + 1 ] = norm[ o1 + 1 ];\n\t\t\t\tscope.normalArray[ c + 2 ] = norm[ o1 + 2 ];\n\n\t\t\t\tscope.normalArray[ c + 3 ] = norm[ o2 + 0 ];\n\t\t\t\tscope.normalArray[ c + 4 ] = norm[ o2 + 1 ];\n\t\t\t\tscope.normalArray[ c + 5 ] = norm[ o2 + 2 ];\n\n\t\t\t\tscope.normalArray[ c + 6 ] = norm[ o3 + 0 ];\n\t\t\t\tscope.normalArray[ c + 7 ] = norm[ o3 + 1 ];\n\t\t\t\tscope.normalArray[ c + 8 ] = norm[ o3 + 2 ];\n\n\t\t\t}\n\n\t\t\t// uvs\n\n\t\t\tif ( scope.enableUvs ) {\n\n\t\t\t\tconst d = scope.count * 2;\n\n\t\t\t\tscope.uvArray[ d + 0 ] = pos[ o1 + 0 ];\n\t\t\t\tscope.uvArray[ d + 1 ] = pos[ o1 + 2 ];\n\n\t\t\t\tscope.uvArray[ d + 2 ] = pos[ o2 + 0 ];\n\t\t\t\tscope.uvArray[ d + 3 ] = pos[ o2 + 2 ];\n\n\t\t\t\tscope.uvArray[ d + 4 ] = pos[ o3 + 0 ];\n\t\t\t\tscope.uvArray[ d + 5 ] = pos[ o3 + 2 ];\n\n\t\t\t}\n\n\t\t\t// colors\n\n\t\t\tif ( scope.enableColors ) {\n\n\t\t\t\tscope.colorArray[ c + 0 ] = colors[ o1 + 0 ];\n\t\t\t\tscope.colorArray[ c + 1 ] = colors[ o1 + 1 ];\n\t\t\t\tscope.colorArray[ c + 2 ] = colors[ o1 + 2 ];\n\n\t\t\t\tscope.colorArray[ c + 3 ] = colors[ o2 + 0 ];\n\t\t\t\tscope.colorArray[ c + 4 ] = colors[ o2 + 1 ];\n\t\t\t\tscope.colorArray[ c + 5 ] = colors[ o2 + 2 ];\n\n\t\t\t\tscope.colorArray[ c + 6 ] = colors[ o3 + 0 ];\n\t\t\t\tscope.colorArray[ c + 7 ] = colors[ o3 + 1 ];\n\t\t\t\tscope.colorArray[ c + 8 ] = colors[ o3 + 2 ];\n\n\t\t\t}\n\n\t\t\tscope.count += 3;\n\n\t\t}\n\n\t\t/////////////////////////////////////\n\t\t// Metaballs\n\t\t/////////////////////////////////////\n\n\t\t// Adds a reciprocal ball (nice and blobby) that, to be fast, fades to zero after\n\t\t// a fixed distance, determined by strength and subtract.\n\n\t\tthis.addBall = function ( ballx, bally, ballz, strength, subtract, colors ) {\n\n\t\t\tconst sign = Math.sign( strength );\n\t\t\tstrength = Math.abs( strength );\n\t\t\tconst userDefineColor = ! ( colors === undefined || colors === null );\n\t\t\tlet ballColor = new Color( ballx, bally, ballz );\n\n\t\t\tif ( userDefineColor ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tballColor =\n\t\t\t\t\t\tcolors instanceof Color\n\t\t\t\t\t\t\t? colors\n\t\t\t\t\t\t\t: Array.isArray( colors )\n\t\t\t\t\t\t\t\t? new Color(\n\t\t\t\t\t\t\t\t\tMath.min( Math.abs( colors[ 0 ] ), 1 ),\n\t\t\t\t\t\t\t\t\tMath.min( Math.abs( colors[ 1 ] ), 1 ),\n\t\t\t\t\t\t\t\t\tMath.min( Math.abs( colors[ 2 ] ), 1 )\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: new Color( colors );\n\n\t\t\t\t} catch ( err ) {\n\n\t\t\t\t\tballColor = new Color( ballx, bally, ballz );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Let's solve the equation to find the radius:\n\t\t\t// 1.0 / (0.000001 + radius^2) * strength - subtract = 0\n\t\t\t// strength / (radius^2) = subtract\n\t\t\t// strength = subtract * radius^2\n\t\t\t// radius^2 = strength / subtract\n\t\t\t// radius = sqrt(strength / subtract)\n\n\t\t\tconst radius = this.size * Math.sqrt( strength / subtract ),\n\t\t\t\tzs = ballz * this.size,\n\t\t\t\tys = bally * this.size,\n\t\t\t\txs = ballx * this.size;\n\n\t\t\tlet min_z = Math.floor( zs - radius );\n\t\t\tif ( min_z < 1 ) min_z = 1;\n\t\t\tlet max_z = Math.floor( zs + radius );\n\t\t\tif ( max_z > this.size - 1 ) max_z = this.size - 1;\n\t\t\tlet min_y = Math.floor( ys - radius );\n\t\t\tif ( min_y < 1 ) min_y = 1;\n\t\t\tlet max_y = Math.floor( ys + radius );\n\t\t\tif ( max_y > this.size - 1 ) max_y = this.size - 1;\n\t\t\tlet min_x = Math.floor( xs - radius );\n\t\t\tif ( min_x < 1 ) min_x = 1;\n\t\t\tlet max_x = Math.floor( xs + radius );\n\t\t\tif ( max_x > this.size - 1 ) max_x = this.size - 1;\n\n\t\t\t// Don't polygonize in the outer layer because normals aren't\n\t\t\t// well-defined there.\n\n\t\t\tlet x, y, z, y_offset, z_offset, fx, fy, fz, fz2, fy2, val;\n\n\t\t\tfor ( z = min_z; z < max_z; z ++ ) {\n\n\t\t\t\tz_offset = this.size2 * z;\n\t\t\t\tfz = z / this.size - ballz;\n\t\t\t\tfz2 = fz * fz;\n\n\t\t\t\tfor ( y = min_y; y < max_y; y ++ ) {\n\n\t\t\t\t\ty_offset = z_offset + this.size * y;\n\t\t\t\t\tfy = y / this.size - bally;\n\t\t\t\t\tfy2 = fy * fy;\n\n\t\t\t\t\tfor ( x = min_x; x < max_x; x ++ ) {\n\n\t\t\t\t\t\tfx = x / this.size - ballx;\n\t\t\t\t\t\tval = strength / ( 0.000001 + fx * fx + fy2 + fz2 ) - subtract;\n\t\t\t\t\t\tif ( val > 0.0 ) {\n\n\t\t\t\t\t\t\tthis.field[ y_offset + x ] += val * sign;\n\n\t\t\t\t\t\t\t// optimization\n\t\t\t\t\t\t\t// http://www.geisswerks.com/ryan/BLOBS/blobs.html\n\t\t\t\t\t\t\tconst ratio =\n\t\t\t\t\t\t\t\tMath.sqrt( ( x - xs ) * ( x - xs ) + ( y - ys ) * ( y - ys ) + ( z - zs ) * ( z - zs ) ) / radius;\n\t\t\t\t\t\t\tconst contrib =\n\t\t\t\t\t\t\t\t1 - ratio * ratio * ratio * ( ratio * ( ratio * 6 - 15 ) + 10 );\n\t\t\t\t\t\t\tthis.palette[ ( y_offset + x ) * 3 + 0 ] += ballColor.r * contrib;\n\t\t\t\t\t\t\tthis.palette[ ( y_offset + x ) * 3 + 1 ] += ballColor.g * contrib;\n\t\t\t\t\t\t\tthis.palette[ ( y_offset + x ) * 3 + 2 ] += ballColor.b * contrib;\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\tthis.addPlaneX = function ( strength, subtract ) {\n\n\t\t\t// cache attribute lookups\n\t\t\tconst size = this.size,\n\t\t\t\tyd = this.yd,\n\t\t\t\tzd = this.zd,\n\t\t\t\tfield = this.field;\n\n\t\t\tlet x,\n\t\t\t\ty,\n\t\t\t\tz,\n\t\t\t\txx,\n\t\t\t\tval,\n\t\t\t\txdiv,\n\t\t\t\tcxy,\n\t\t\t\tdist = size * Math.sqrt( strength / subtract );\n\n\t\t\tif ( dist > size ) dist = size;\n\n\t\t\tfor ( x = 0; x < dist; x ++ ) {\n\n\t\t\t\txdiv = x / size;\n\t\t\t\txx = xdiv * xdiv;\n\t\t\t\tval = strength / ( 0.0001 + xx ) - subtract;\n\n\t\t\t\tif ( val > 0.0 ) {\n\n\t\t\t\t\tfor ( y = 0; y < size; y ++ ) {\n\n\t\t\t\t\t\tcxy = x + y * yd;\n\n\t\t\t\t\t\tfor ( z = 0; z < size; z ++ ) {\n\n\t\t\t\t\t\t\tfield[ zd * z + cxy ] += val;\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\tthis.addPlaneY = function ( strength, subtract ) {\n\n\t\t\t// cache attribute lookups\n\t\t\tconst size = this.size,\n\t\t\t\tyd = this.yd,\n\t\t\t\tzd = this.zd,\n\t\t\t\tfield = this.field;\n\n\t\t\tlet x,\n\t\t\t\ty,\n\t\t\t\tz,\n\t\t\t\tyy,\n\t\t\t\tval,\n\t\t\t\tydiv,\n\t\t\t\tcy,\n\t\t\t\tcxy,\n\t\t\t\tdist = size * Math.sqrt( strength / subtract );\n\n\t\t\tif ( dist > size ) dist = size;\n\n\t\t\tfor ( y = 0; y < dist; y ++ ) {\n\n\t\t\t\tydiv = y / size;\n\t\t\t\tyy = ydiv * ydiv;\n\t\t\t\tval = strength / ( 0.0001 + yy ) - subtract;\n\n\t\t\t\tif ( val > 0.0 ) {\n\n\t\t\t\t\tcy = y * yd;\n\n\t\t\t\t\tfor ( x = 0; x < size; x ++ ) {\n\n\t\t\t\t\t\tcxy = cy + x;\n\n\t\t\t\t\t\tfor ( z = 0; z < size; z ++ ) field[ zd * z + cxy ] += val;\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.addPlaneZ = function ( strength, subtract ) {\n\n\t\t\t// cache attribute lookups\n\n\t\t\tconst size = this.size,\n\t\t\t\tyd = this.yd,\n\t\t\t\tzd = this.zd,\n\t\t\t\tfield = this.field;\n\n\t\t\tlet x,\n\t\t\t\ty,\n\t\t\t\tz,\n\t\t\t\tzz,\n\t\t\t\tval,\n\t\t\t\tzdiv,\n\t\t\t\tcz,\n\t\t\t\tcyz,\n\t\t\t\tdist = size * Math.sqrt( strength / subtract );\n\n\t\t\tif ( dist > size ) dist = size;\n\n\t\t\tfor ( z = 0; z < dist; z ++ ) {\n\n\t\t\t\tzdiv = z / size;\n\t\t\t\tzz = zdiv * zdiv;\n\t\t\t\tval = strength / ( 0.0001 + zz ) - subtract;\n\t\t\t\tif ( val > 0.0 ) {\n\n\t\t\t\t\tcz = zd * z;\n\n\t\t\t\t\tfor ( y = 0; y < size; y ++ ) {\n\n\t\t\t\t\t\tcyz = cz + y * yd;\n\n\t\t\t\t\t\tfor ( x = 0; x < size; x ++ ) field[ cyz + x ] += val;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\t/////////////////////////////////////\n\t\t// Updates\n\t\t/////////////////////////////////////\n\n\t\tthis.setCell = function ( x, y, z, value ) {\n\n\t\t\tconst index = this.size2 * z + this.size * y + x;\n\t\t\tthis.field[ index ] = value;\n\n\t\t};\n\n\t\tthis.getCell = function ( x, y, z ) {\n\n\t\t\tconst index = this.size2 * z + this.size * y + x;\n\t\t\treturn this.field[ index ];\n\n\t\t};\n\n\t\tthis.blur = function ( intensity = 1 ) {\n\n\t\t\tconst field = this.field;\n\t\t\tconst fieldCopy = field.slice();\n\t\t\tconst size = this.size;\n\t\t\tconst size2 = this.size2;\n\t\t\tfor ( let x = 0; x < size; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < size; y ++ ) {\n\n\t\t\t\t\tfor ( let z = 0; z < size; z ++ ) {\n\n\t\t\t\t\t\tconst index = size2 * z + size * y + x;\n\t\t\t\t\t\tlet val = fieldCopy[ index ];\n\t\t\t\t\t\tlet count = 1;\n\n\t\t\t\t\t\tfor ( let x2 = - 1; x2 <= 1; x2 += 2 ) {\n\n\t\t\t\t\t\t\tconst x3 = x2 + x;\n\t\t\t\t\t\t\tif ( x3 < 0 || x3 >= size ) continue;\n\n\t\t\t\t\t\t\tfor ( let y2 = - 1; y2 <= 1; y2 += 2 ) {\n\n\t\t\t\t\t\t\t\tconst y3 = y2 + y;\n\t\t\t\t\t\t\t\tif ( y3 < 0 || y3 >= size ) continue;\n\n\t\t\t\t\t\t\t\tfor ( let z2 = - 1; z2 <= 1; z2 += 2 ) {\n\n\t\t\t\t\t\t\t\t\tconst z3 = z2 + z;\n\t\t\t\t\t\t\t\t\tif ( z3 < 0 || z3 >= size ) continue;\n\n\t\t\t\t\t\t\t\t\tconst index2 = size2 * z3 + size * y3 + x3;\n\t\t\t\t\t\t\t\t\tconst val2 = fieldCopy[ index2 ];\n\n\t\t\t\t\t\t\t\t\tcount ++;\n\t\t\t\t\t\t\t\t\tval += intensity * ( val2 - val ) / count;\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\tfield[ index ] = val;\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.reset = function () {\n\n\t\t\t// wipe the normal cache\n\n\t\t\tfor ( let i = 0; i < this.size3; i ++ ) {\n\n\t\t\t\tthis.normal_cache[ i * 3 ] = 0.0;\n\t\t\t\tthis.field[ i ] = 0.0;\n\t\t\t\tthis.palette[ i * 3 ] = this.palette[ i * 3 + 1 ] = this.palette[\n\t\t\t\t\ti * 3 + 2\n\t\t\t\t] = 0.0;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.update = function () {\n\n\t\t\tthis.count = 0;\n\n\t\t\t// Triangulate. Yeah, this is slow.\n\n\t\t\tconst smin2 = this.size - 2;\n\n\t\t\tfor ( let z = 1; z < smin2; z ++ ) {\n\n\t\t\t\tconst z_offset = this.size2 * z;\n\t\t\t\tconst fz = ( z - this.halfsize ) / this.halfsize; //+ 1\n\n\t\t\t\tfor ( let y = 1; y < smin2; y ++ ) {\n\n\t\t\t\t\tconst y_offset = z_offset + this.size * y;\n\t\t\t\t\tconst fy = ( y - this.halfsize ) / this.halfsize; //+ 1\n\n\t\t\t\t\tfor ( let x = 1; x < smin2; x ++ ) {\n\n\t\t\t\t\t\tconst fx = ( x - this.halfsize ) / this.halfsize; //+ 1\n\t\t\t\t\t\tconst q = y_offset + x;\n\n\t\t\t\t\t\t polygonize( fx, fy, fz, q, this.isolation );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// set the draw range to only the processed triangles\n\n\t\t\tthis.geometry.setDrawRange( 0, this.count );\n\n\t\t\t// update geometry data\n\n\t\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\t\t\tgeometry.getAttribute( 'normal' ).needsUpdate = true;\n\n\t\t\tif ( this.enableUvs ) geometry.getAttribute( 'uv' ).needsUpdate = true;\n\t\t\tif ( this.enableColors ) geometry.getAttribute( 'color' ).needsUpdate = true;\n\n\t\t\t// safety check\n\n\t\t\tif ( this.count / 3 > maxPolyCount ) console.warn( 'THREE.MarchingCubes: Geometry buffers too small for rendering. Please create an instance with a higher poly count.' );\n\n\t\t};\n\n\t\tthis.init( resolution );\n\n\t}\n\n}\n\n/////////////////////////////////////\n// Marching cubes lookup tables\n/////////////////////////////////////\n\n// These tables are straight from Paul Bourke's page:\n// http://paulbourke.net/geometry/polygonise/\n// who in turn got them from Cory Gene Bloyd.\n\nconst edgeTable = new Int32Array( [\n\t0x0, 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c,\n\t0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00,\n\t0x190, 0x99, 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c,\n\t0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90,\n\t0x230, 0x339, 0x33, 0x13a, 0x636, 0x73f, 0x435, 0x53c,\n\t0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30,\n\t0x3a0, 0x2a9, 0x1a3, 0xaa, 0x7a6, 0x6af, 0x5a5, 0x4ac,\n\t0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0,\n\t0x460, 0x569, 0x663, 0x76a, 0x66, 0x16f, 0x265, 0x36c,\n\t0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60,\n\t0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0xff, 0x3f5, 0x2fc,\n\t0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0,\n\t0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55, 0x15c,\n\t0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950,\n\t0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc,\n\t0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0,\n\t0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc,\n\t0xcc, 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0,\n\t0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c,\n\t0x15c, 0x55, 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650,\n\t0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc,\n\t0x2fc, 0x3f5, 0xff, 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0,\n\t0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c,\n\t0x36c, 0x265, 0x16f, 0x66, 0x76a, 0x663, 0x569, 0x460,\n\t0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac,\n\t0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa, 0x1a3, 0x2a9, 0x3a0,\n\t0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c,\n\t0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x33, 0x339, 0x230,\n\t0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c,\n\t0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99, 0x190,\n\t0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c,\n\t0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x0 ] );\n\nconst triTable = new Int32Array( [\n\t- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 8, 3, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 1, 9, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 8, 3, 9, 8, 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 2, 10, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 8, 3, 1, 2, 10, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 2, 10, 0, 2, 9, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t2, 8, 3, 2, 10, 8, 10, 9, 8, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 11, 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 11, 2, 8, 11, 0, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 9, 0, 2, 3, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 11, 2, 1, 9, 11, 9, 8, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 10, 1, 11, 10, 3, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 10, 1, 0, 8, 10, 8, 11, 10, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 9, 0, 3, 11, 9, 11, 10, 9, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 8, 10, 10, 8, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t4, 7, 8, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t4, 3, 0, 7, 3, 4, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 1, 9, 8, 4, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t4, 1, 9, 4, 7, 1, 7, 3, 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 2, 10, 8, 4, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 4, 7, 3, 0, 4, 1, 2, 10, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 2, 10, 9, 0, 2, 8, 4, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, - 1, - 1, - 1, - 1,\n\t8, 4, 7, 3, 11, 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t11, 4, 7, 11, 2, 4, 2, 0, 4, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 0, 1, 8, 4, 7, 2, 3, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, - 1, - 1, - 1, - 1,\n\t3, 10, 1, 3, 11, 10, 7, 8, 4, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, - 1, - 1, - 1, - 1,\n\t4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, - 1, - 1, - 1, - 1,\n\t4, 7, 11, 4, 11, 9, 9, 11, 10, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 5, 4, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 5, 4, 0, 8, 3, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 5, 4, 1, 5, 0, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t8, 5, 4, 8, 3, 5, 3, 1, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 2, 10, 9, 5, 4, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 0, 8, 1, 2, 10, 4, 9, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t5, 2, 10, 5, 4, 2, 4, 0, 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, - 1, - 1, - 1, - 1,\n\t9, 5, 4, 2, 3, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 11, 2, 0, 8, 11, 4, 9, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 5, 4, 0, 1, 5, 2, 3, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, - 1, - 1, - 1, - 1,\n\t10, 3, 11, 10, 1, 3, 9, 5, 4, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, - 1, - 1, - 1, - 1,\n\t5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, - 1, - 1, - 1, - 1,\n\t5, 4, 8, 5, 8, 10, 10, 8, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 7, 8, 5, 7, 9, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 3, 0, 9, 5, 3, 5, 7, 3, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 7, 8, 0, 1, 7, 1, 5, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 5, 3, 3, 5, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 7, 8, 9, 5, 7, 10, 1, 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, - 1, - 1, - 1, - 1,\n\t8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, - 1, - 1, - 1, - 1,\n\t2, 10, 5, 2, 5, 3, 3, 5, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t7, 9, 5, 7, 8, 9, 3, 11, 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, - 1, - 1, - 1, - 1,\n\t2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, - 1, - 1, - 1, - 1,\n\t11, 2, 1, 11, 1, 7, 7, 1, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, - 1, - 1, - 1, - 1,\n\t5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, - 1,\n\t11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, - 1,\n\t11, 10, 5, 7, 11, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t10, 6, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 8, 3, 5, 10, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 0, 1, 5, 10, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 8, 3, 1, 9, 8, 5, 10, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 6, 5, 2, 6, 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 6, 5, 1, 2, 6, 3, 0, 8, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 6, 5, 9, 0, 6, 0, 2, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, - 1, - 1, - 1, - 1,\n\t2, 3, 11, 10, 6, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t11, 0, 8, 11, 2, 0, 10, 6, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 1, 9, 2, 3, 11, 5, 10, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, - 1, - 1, - 1, - 1,\n\t6, 3, 11, 6, 5, 3, 5, 1, 3, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, - 1, - 1, - 1, - 1,\n\t3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, - 1, - 1, - 1, - 1,\n\t6, 5, 9, 6, 9, 11, 11, 9, 8, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t5, 10, 6, 4, 7, 8, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t4, 3, 0, 4, 7, 3, 6, 5, 10, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 9, 0, 5, 10, 6, 8, 4, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, - 1, - 1, - 1, - 1,\n\t6, 1, 2, 6, 5, 1, 4, 7, 8, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, - 1, - 1, - 1, - 1,\n\t8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, - 1, - 1, - 1, - 1,\n\t7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, - 1,\n\t3, 11, 2, 7, 8, 4, 10, 6, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, - 1, - 1, - 1, - 1,\n\t0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, - 1, - 1, - 1, - 1,\n\t9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, - 1,\n\t8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, - 1, - 1, - 1, - 1,\n\t5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, - 1,\n\t0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, - 1,\n\t6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, - 1, - 1, - 1, - 1,\n\t10, 4, 9, 6, 4, 10, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t4, 10, 6, 4, 9, 10, 0, 8, 3, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t10, 0, 1, 10, 6, 0, 6, 4, 0, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, - 1, - 1, - 1, - 1,\n\t1, 4, 9, 1, 2, 4, 2, 6, 4, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, - 1, - 1, - 1, - 1,\n\t0, 2, 4, 4, 2, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t8, 3, 2, 8, 2, 4, 4, 2, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t10, 4, 9, 10, 6, 4, 11, 2, 3, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, - 1, - 1, - 1, - 1,\n\t3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, - 1, - 1, - 1, - 1,\n\t6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, - 1,\n\t9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, - 1, - 1, - 1, - 1,\n\t8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, - 1,\n\t3, 11, 6, 3, 6, 0, 0, 6, 4, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t6, 4, 8, 11, 6, 8, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t7, 10, 6, 7, 8, 10, 8, 9, 10, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, - 1, - 1, - 1, - 1,\n\t10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, - 1, - 1, - 1, - 1,\n\t10, 6, 7, 10, 7, 1, 1, 7, 3, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, - 1, - 1, - 1, - 1,\n\t2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, - 1,\n\t7, 8, 0, 7, 0, 6, 6, 0, 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t7, 3, 2, 6, 7, 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, - 1, - 1, - 1, - 1,\n\t2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, - 1,\n\t1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, - 1,\n\t11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, - 1, - 1, - 1, - 1,\n\t8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, - 1,\n\t0, 9, 1, 11, 6, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, - 1, - 1, - 1, - 1,\n\t7, 11, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t7, 6, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 0, 8, 11, 7, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 1, 9, 11, 7, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t8, 1, 9, 8, 3, 1, 11, 7, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t10, 1, 2, 6, 11, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 2, 10, 3, 0, 8, 6, 11, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t2, 9, 0, 2, 10, 9, 6, 11, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, - 1, - 1, - 1, - 1,\n\t7, 2, 3, 6, 2, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t7, 0, 8, 7, 6, 0, 6, 2, 0, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t2, 7, 6, 2, 3, 7, 0, 1, 9, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, - 1, - 1, - 1, - 1,\n\t10, 7, 6, 10, 1, 7, 1, 3, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, - 1, - 1, - 1, - 1,\n\t0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, - 1, - 1, - 1, - 1,\n\t7, 6, 10, 7, 10, 8, 8, 10, 9, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t6, 8, 4, 11, 8, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 6, 11, 3, 0, 6, 0, 4, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t8, 6, 11, 8, 4, 6, 9, 0, 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, - 1, - 1, - 1, - 1,\n\t6, 8, 4, 6, 11, 8, 2, 10, 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, - 1, - 1, - 1, - 1,\n\t4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, - 1, - 1, - 1, - 1,\n\t10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, - 1,\n\t8, 2, 3, 8, 4, 2, 4, 6, 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 4, 2, 4, 6, 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, - 1, - 1, - 1, - 1,\n\t1, 9, 4, 1, 4, 2, 2, 4, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, - 1, - 1, - 1, - 1,\n\t10, 1, 0, 10, 0, 6, 6, 0, 4, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, - 1,\n\t10, 9, 4, 6, 10, 4, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t4, 9, 5, 7, 6, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 8, 3, 4, 9, 5, 11, 7, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t5, 0, 1, 5, 4, 0, 7, 6, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, - 1, - 1, - 1, - 1,\n\t9, 5, 4, 10, 1, 2, 7, 6, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, - 1, - 1, - 1, - 1,\n\t7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, - 1, - 1, - 1, - 1,\n\t3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, - 1,\n\t7, 2, 3, 7, 6, 2, 5, 4, 9, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, - 1, - 1, - 1, - 1,\n\t3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, - 1, - 1, - 1, - 1,\n\t6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, - 1,\n\t9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, - 1, - 1, - 1, - 1,\n\t1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, - 1,\n\t4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, - 1,\n\t7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, - 1, - 1, - 1, - 1,\n\t6, 9, 5, 6, 11, 9, 11, 8, 9, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, - 1, - 1, - 1, - 1,\n\t0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, - 1, - 1, - 1, - 1,\n\t6, 11, 3, 6, 3, 5, 5, 3, 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, - 1, - 1, - 1, - 1,\n\t0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, - 1,\n\t11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, - 1,\n\t6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, - 1, - 1, - 1, - 1,\n\t5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, - 1, - 1, - 1, - 1,\n\t9, 5, 6, 9, 6, 0, 0, 6, 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, - 1,\n\t1, 5, 6, 2, 1, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, - 1,\n\t10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, - 1, - 1, - 1, - 1,\n\t0, 3, 8, 5, 6, 10, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t10, 5, 6, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t11, 5, 10, 7, 5, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t11, 5, 10, 11, 7, 5, 8, 3, 0, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t5, 11, 7, 5, 10, 11, 1, 9, 0, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, - 1, - 1, - 1, - 1,\n\t11, 1, 2, 11, 7, 1, 7, 5, 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, - 1, - 1, - 1, - 1,\n\t9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, - 1, - 1, - 1, - 1,\n\t7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, - 1,\n\t2, 5, 10, 2, 3, 5, 3, 7, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, - 1, - 1, - 1, - 1,\n\t9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, - 1, - 1, - 1, - 1,\n\t9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, - 1,\n\t1, 3, 5, 3, 7, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 8, 7, 0, 7, 1, 1, 7, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 0, 3, 9, 3, 5, 5, 3, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 8, 7, 5, 9, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t5, 8, 4, 5, 10, 8, 10, 11, 8, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, - 1, - 1, - 1, - 1,\n\t0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, - 1, - 1, - 1, - 1,\n\t10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, - 1,\n\t2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, - 1, - 1, - 1, - 1,\n\t0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, - 1,\n\t0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, - 1,\n\t9, 4, 5, 2, 11, 3, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, - 1, - 1, - 1, - 1,\n\t5, 10, 2, 5, 2, 4, 4, 2, 0, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, - 1,\n\t5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, - 1, - 1, - 1, - 1,\n\t8, 4, 5, 8, 5, 3, 3, 5, 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 4, 5, 1, 0, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, - 1, - 1, - 1, - 1,\n\t9, 4, 5, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t4, 11, 7, 4, 9, 11, 9, 10, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, - 1, - 1, - 1, - 1,\n\t1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, - 1, - 1, - 1, - 1,\n\t3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, - 1,\n\t4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, - 1, - 1, - 1, - 1,\n\t9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, - 1,\n\t11, 7, 4, 11, 4, 2, 2, 4, 0, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, - 1, - 1, - 1, - 1,\n\t2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, - 1, - 1, - 1, - 1,\n\t9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, - 1,\n\t3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, - 1,\n\t1, 10, 2, 8, 7, 4, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t4, 9, 1, 4, 1, 7, 7, 1, 3, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, - 1, - 1, - 1, - 1,\n\t4, 0, 3, 7, 4, 3, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t4, 8, 7, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 10, 8, 10, 11, 8, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 0, 9, 3, 9, 11, 11, 9, 10, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 1, 10, 0, 10, 8, 8, 10, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 1, 10, 11, 3, 10, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 2, 11, 1, 11, 9, 9, 11, 8, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, - 1, - 1, - 1, - 1,\n\t0, 2, 11, 8, 0, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t3, 2, 11, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t2, 3, 8, 2, 8, 10, 10, 8, 9, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t9, 10, 2, 0, 9, 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, - 1, - 1, - 1, - 1,\n\t1, 10, 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t1, 3, 8, 9, 1, 8, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 9, 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t0, 3, 8, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,\n\t- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1 ] );\n\nexport { MarchingCubes, edgeTable, triTable };\n", "import {\n\tColor,\n\tMatrix4,\n\tMesh,\n\tPerspectiveCamera,\n\tPlane,\n\tShaderMaterial,\n\tUniformsUtils,\n\tVector3,\n\tVector4,\n\tWebGLRenderTarget,\n\tHalfFloatType\n} from 'three';\n\nclass Reflector extends Mesh {\n\n\tconstructor( geometry, options = {} ) {\n\n\t\tsuper( geometry );\n\n\t\tthis.isReflector = true;\n\n\t\tthis.type = 'Reflector';\n\t\tthis.camera = new PerspectiveCamera();\n\n\t\tconst scope = this;\n\n\t\tconst color = ( options.color !== undefined ) ? new Color( options.color ) : new Color( 0x7F7F7F );\n\t\tconst textureWidth = options.textureWidth || 512;\n\t\tconst textureHeight = options.textureHeight || 512;\n\t\tconst clipBias = options.clipBias || 0;\n\t\tconst shader = options.shader || Reflector.ReflectorShader;\n\t\tconst multisample = ( options.multisample !== undefined ) ? options.multisample : 4;\n\n\t\t//\n\n\t\tconst reflectorPlane = new Plane();\n\t\tconst normal = new Vector3();\n\t\tconst reflectorWorldPosition = new Vector3();\n\t\tconst cameraWorldPosition = new Vector3();\n\t\tconst rotationMatrix = new Matrix4();\n\t\tconst lookAtPosition = new Vector3( 0, 0, - 1 );\n\t\tconst clipPlane = new Vector4();\n\n\t\tconst view = new Vector3();\n\t\tconst target = new Vector3();\n\t\tconst q = new Vector4();\n\n\t\tconst textureMatrix = new Matrix4();\n\t\tconst virtualCamera = this.camera;\n\n\t\tconst renderTarget = new WebGLRenderTarget( textureWidth, textureHeight, { samples: multisample, type: HalfFloatType } );\n\n\t\tconst material = new ShaderMaterial( {\n\t\t\tname: ( shader.name !== undefined ) ? shader.name : 'unspecified',\n\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tvertexShader: shader.vertexShader\n\t\t} );\n\n\t\tmaterial.uniforms[ 'tDiffuse' ].value = renderTarget.texture;\n\t\tmaterial.uniforms[ 'color' ].value = color;\n\t\tmaterial.uniforms[ 'textureMatrix' ].value = textureMatrix;\n\n\t\tthis.material = material;\n\n\t\tthis.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\treflectorWorldPosition.setFromMatrixPosition( scope.matrixWorld );\n\t\t\tcameraWorldPosition.setFromMatrixPosition( camera.matrixWorld );\n\n\t\t\trotationMatrix.extractRotation( scope.matrixWorld );\n\n\t\t\tnormal.set( 0, 0, 1 );\n\t\t\tnormal.applyMatrix4( rotationMatrix );\n\n\t\t\tview.subVectors( reflectorWorldPosition, cameraWorldPosition );\n\n\t\t\t// Avoid rendering when reflector is facing away\n\n\t\t\tif ( view.dot( normal ) > 0 ) return;\n\n\t\t\tview.reflect( normal ).negate();\n\t\t\tview.add( reflectorWorldPosition );\n\n\t\t\trotationMatrix.extractRotation( camera.matrixWorld );\n\n\t\t\tlookAtPosition.set( 0, 0, - 1 );\n\t\t\tlookAtPosition.applyMatrix4( rotationMatrix );\n\t\t\tlookAtPosition.add( cameraWorldPosition );\n\n\t\t\ttarget.subVectors( reflectorWorldPosition, lookAtPosition );\n\t\t\ttarget.reflect( normal ).negate();\n\t\t\ttarget.add( reflectorWorldPosition );\n\n\t\t\tvirtualCamera.position.copy( view );\n\t\t\tvirtualCamera.up.set( 0, 1, 0 );\n\t\t\tvirtualCamera.up.applyMatrix4( rotationMatrix );\n\t\t\tvirtualCamera.up.reflect( normal );\n\t\t\tvirtualCamera.lookAt( target );\n\n\t\t\tvirtualCamera.far = camera.far; // Used in WebGLBackground\n\n\t\t\tvirtualCamera.updateMatrixWorld();\n\t\t\tvirtualCamera.projectionMatrix.copy( camera.projectionMatrix );\n\n\t\t\t// Update the texture matrix\n\t\t\ttextureMatrix.set(\n\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t);\n\t\t\ttextureMatrix.multiply( virtualCamera.projectionMatrix );\n\t\t\ttextureMatrix.multiply( virtualCamera.matrixWorldInverse );\n\t\t\ttextureMatrix.multiply( scope.matrixWorld );\n\n\t\t\t// Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n\t\t\t// Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n\t\t\treflectorPlane.setFromNormalAndCoplanarPoint( normal, reflectorWorldPosition );\n\t\t\treflectorPlane.applyMatrix4( virtualCamera.matrixWorldInverse );\n\n\t\t\tclipPlane.set( reflectorPlane.normal.x, reflectorPlane.normal.y, reflectorPlane.normal.z, reflectorPlane.constant );\n\n\t\t\tconst projectionMatrix = virtualCamera.projectionMatrix;\n\n\t\t\tq.x = ( Math.sign( clipPlane.x ) + projectionMatrix.elements[ 8 ] ) / projectionMatrix.elements[ 0 ];\n\t\t\tq.y = ( Math.sign( clipPlane.y ) + projectionMatrix.elements[ 9 ] ) / projectionMatrix.elements[ 5 ];\n\t\t\tq.z = - 1.0;\n\t\t\tq.w = ( 1.0 + projectionMatrix.elements[ 10 ] ) / projectionMatrix.elements[ 14 ];\n\n\t\t\t// Calculate the scaled plane vector\n\t\t\tclipPlane.multiplyScalar( 2.0 / clipPlane.dot( q ) );\n\n\t\t\t// Replacing the third row of the projection matrix\n\t\t\tprojectionMatrix.elements[ 2 ] = clipPlane.x;\n\t\t\tprojectionMatrix.elements[ 6 ] = clipPlane.y;\n\t\t\tprojectionMatrix.elements[ 10 ] = clipPlane.z + 1.0 - clipBias;\n\t\t\tprojectionMatrix.elements[ 14 ] = clipPlane.w;\n\n\t\t\t// Render\n\t\t\tscope.visible = false;\n\n\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\t\tconst currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;\n\n\t\t\trenderer.xr.enabled = false; // Avoid camera modification\n\t\t\trenderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows\n\n\t\t\trenderer.setRenderTarget( renderTarget );\n\n\t\t\trenderer.state.buffers.depth.setMask( true ); // make sure the depth buffer is writable so it can be properly cleared, see #18897\n\n\t\t\tif ( renderer.autoClear === false ) renderer.clear();\n\t\t\trenderer.render( scene, virtualCamera );\n\n\t\t\trenderer.xr.enabled = currentXrEnabled;\n\t\t\trenderer.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\n\t\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\t\t// Restore viewport\n\n\t\t\tconst viewport = camera.viewport;\n\n\t\t\tif ( viewport !== undefined ) {\n\n\t\t\t\trenderer.state.viewport( viewport );\n\n\t\t\t}\n\n\t\t\tscope.visible = true;\n\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn renderTarget;\n\n\t\t};\n\n\t\tthis.dispose = function () {\n\n\t\t\trenderTarget.dispose();\n\t\t\tscope.material.dispose();\n\n\t\t};\n\n\t}\n\n}\n\nReflector.ReflectorShader = {\n\n\tname: 'ReflectorShader',\n\n\tuniforms: {\n\n\t\t'color': {\n\t\t\tvalue: null\n\t\t},\n\n\t\t'tDiffuse': {\n\t\t\tvalue: null\n\t\t},\n\n\t\t'textureMatrix': {\n\t\t\tvalue: null\n\t\t}\n\n\t},\n\n\tvertexShader: /* glsl */`\n\t\tuniform mat4 textureMatrix;\n\t\tvarying vec4 vUv;\n\n\t\t#include \n\t\t#include \n\n\t\tvoid main() {\n\n\t\t\tvUv = textureMatrix * vec4( position, 1.0 );\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t\t#include \n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\t\tuniform vec3 color;\n\t\tuniform sampler2D tDiffuse;\n\t\tvarying vec4 vUv;\n\n\t\t#include \n\n\t\tfloat blendOverlay( float base, float blend ) {\n\n\t\t\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\n\t\t}\n\n\t\tvec3 blendOverlay( vec3 base, vec3 blend ) {\n\n\t\t\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\t#include \n\n\t\t\tvec4 base = texture2DProj( tDiffuse, vUv );\n\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\n\t\t\t#include \n\t\t\t#include \n\n\t\t}`\n};\n\nexport { Reflector };\n", "import {\n\tColor,\n\tMatrix4,\n\tMesh,\n\tPerspectiveCamera,\n\tShaderMaterial,\n\tUniformsUtils,\n\tVector2,\n\tVector3,\n\tWebGLRenderTarget,\n\tDepthTexture,\n\tUnsignedShortType,\n\tNearestFilter,\n\tPlane,\n\tHalfFloatType\n} from 'three';\n\nclass ReflectorForSSRPass extends Mesh {\n\n\tconstructor( geometry, options = {} ) {\n\n\t\tsuper( geometry );\n\n\t\tthis.isReflectorForSSRPass = true;\n\n\t\tthis.type = 'ReflectorForSSRPass';\n\n\t\tconst scope = this;\n\n\t\tconst color = ( options.color !== undefined ) ? new Color( options.color ) : new Color( 0x7F7F7F );\n\t\tconst textureWidth = options.textureWidth || 512;\n\t\tconst textureHeight = options.textureHeight || 512;\n\t\tconst clipBias = options.clipBias || 0;\n\t\tconst shader = options.shader || ReflectorForSSRPass.ReflectorShader;\n\t\tconst useDepthTexture = options.useDepthTexture === true;\n\t\tconst yAxis = new Vector3( 0, 1, 0 );\n\t\tconst vecTemp0 = new Vector3();\n\t\tconst vecTemp1 = new Vector3();\n\n\t\t//\n\n\t\tscope.needsUpdate = false;\n\t\tscope.maxDistance = ReflectorForSSRPass.ReflectorShader.uniforms.maxDistance.value;\n\t\tscope.opacity = ReflectorForSSRPass.ReflectorShader.uniforms.opacity.value;\n\t\tscope.color = color;\n\t\tscope.resolution = options.resolution || new Vector2( window.innerWidth, window.innerHeight );\n\n\n\t\tscope._distanceAttenuation = ReflectorForSSRPass.ReflectorShader.defines.DISTANCE_ATTENUATION;\n\t\tObject.defineProperty( scope, 'distanceAttenuation', {\n\t\t\tget() {\n\n\t\t\t\treturn scope._distanceAttenuation;\n\n\t\t\t},\n\t\t\tset( val ) {\n\n\t\t\t\tif ( scope._distanceAttenuation === val ) return;\n\t\t\t\tscope._distanceAttenuation = val;\n\t\t\t\tscope.material.defines.DISTANCE_ATTENUATION = val;\n\t\t\t\tscope.material.needsUpdate = true;\n\n\t\t\t}\n\t\t} );\n\n\t\tscope._fresnel = ReflectorForSSRPass.ReflectorShader.defines.FRESNEL;\n\t\tObject.defineProperty( scope, 'fresnel', {\n\t\t\tget() {\n\n\t\t\t\treturn scope._fresnel;\n\n\t\t\t},\n\t\t\tset( val ) {\n\n\t\t\t\tif ( scope._fresnel === val ) return;\n\t\t\t\tscope._fresnel = val;\n\t\t\t\tscope.material.defines.FRESNEL = val;\n\t\t\t\tscope.material.needsUpdate = true;\n\n\t\t\t}\n\t\t} );\n\n\t\tconst normal = new Vector3();\n\t\tconst reflectorWorldPosition = new Vector3();\n\t\tconst cameraWorldPosition = new Vector3();\n\t\tconst rotationMatrix = new Matrix4();\n\t\tconst lookAtPosition = new Vector3( 0, 0, - 1 );\n\n\t\tconst view = new Vector3();\n\t\tconst target = new Vector3();\n\n\t\tconst textureMatrix = new Matrix4();\n\t\tconst virtualCamera = new PerspectiveCamera();\n\n\t\tlet depthTexture;\n\n\t\tif ( useDepthTexture ) {\n\n\t\t\tdepthTexture = new DepthTexture();\n\t\t\tdepthTexture.type = UnsignedShortType;\n\t\t\tdepthTexture.minFilter = NearestFilter;\n\t\t\tdepthTexture.magFilter = NearestFilter;\n\n\t\t}\n\n\t\tconst parameters = {\n\t\t\tdepthTexture: useDepthTexture ? depthTexture : null,\n\t\t\ttype: HalfFloatType\n\t\t};\n\n\t\tconst renderTarget = new WebGLRenderTarget( textureWidth, textureHeight, parameters );\n\n\t\tconst material = new ShaderMaterial( {\n\t\t\tname: ( shader.name !== undefined ) ? shader.name : 'unspecified',\n\t\t\ttransparent: useDepthTexture,\n\t\t\tdefines: Object.assign( {}, ReflectorForSSRPass.ReflectorShader.defines, {\n\t\t\t\tuseDepthTexture\n\t\t\t} ),\n\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tvertexShader: shader.vertexShader\n\t\t} );\n\n\t\tmaterial.uniforms[ 'tDiffuse' ].value = renderTarget.texture;\n\t\tmaterial.uniforms[ 'color' ].value = scope.color;\n\t\tmaterial.uniforms[ 'textureMatrix' ].value = textureMatrix;\n\t\tif ( useDepthTexture ) {\n\n\t\t\tmaterial.uniforms[ 'tDepth' ].value = renderTarget.depthTexture;\n\n\t\t}\n\n\t\tthis.material = material;\n\n\t\tconst globalPlane = new Plane( new Vector3( 0, 1, 0 ), clipBias );\n\t\tconst globalPlanes = [ globalPlane ];\n\n\t\tthis.doRender = function ( renderer, scene, camera ) {\n\n\t\t\tmaterial.uniforms[ 'maxDistance' ].value = scope.maxDistance;\n\t\t\tmaterial.uniforms[ 'color' ].value = scope.color;\n\t\t\tmaterial.uniforms[ 'opacity' ].value = scope.opacity;\n\n\t\t\tvecTemp0.copy( camera.position ).normalize();\n\t\t\tvecTemp1.copy( vecTemp0 ).reflect( yAxis );\n\t\t\tmaterial.uniforms[ 'fresnelCoe' ].value = ( vecTemp0.dot( vecTemp1 ) + 1. ) / 2.; // TODO: Also need to use glsl viewPosition and viewNormal per pixel.\n\n\t\t\treflectorWorldPosition.setFromMatrixPosition( scope.matrixWorld );\n\t\t\tcameraWorldPosition.setFromMatrixPosition( camera.matrixWorld );\n\n\t\t\trotationMatrix.extractRotation( scope.matrixWorld );\n\n\t\t\tnormal.set( 0, 0, 1 );\n\t\t\tnormal.applyMatrix4( rotationMatrix );\n\n\t\t\tview.subVectors( reflectorWorldPosition, cameraWorldPosition );\n\n\t\t\t// Avoid rendering when reflector is facing away\n\n\t\t\tif ( view.dot( normal ) > 0 ) return;\n\n\t\t\tview.reflect( normal ).negate();\n\t\t\tview.add( reflectorWorldPosition );\n\n\t\t\trotationMatrix.extractRotation( camera.matrixWorld );\n\n\t\t\tlookAtPosition.set( 0, 0, - 1 );\n\t\t\tlookAtPosition.applyMatrix4( rotationMatrix );\n\t\t\tlookAtPosition.add( cameraWorldPosition );\n\n\t\t\ttarget.subVectors( reflectorWorldPosition, lookAtPosition );\n\t\t\ttarget.reflect( normal ).negate();\n\t\t\ttarget.add( reflectorWorldPosition );\n\n\t\t\tvirtualCamera.position.copy( view );\n\t\t\tvirtualCamera.up.set( 0, 1, 0 );\n\t\t\tvirtualCamera.up.applyMatrix4( rotationMatrix );\n\t\t\tvirtualCamera.up.reflect( normal );\n\t\t\tvirtualCamera.lookAt( target );\n\n\t\t\tvirtualCamera.far = camera.far; // Used in WebGLBackground\n\n\t\t\tvirtualCamera.updateMatrixWorld();\n\t\t\tvirtualCamera.projectionMatrix.copy( camera.projectionMatrix );\n\n\t\t\tmaterial.uniforms[ 'virtualCameraNear' ].value = camera.near;\n\t\t\tmaterial.uniforms[ 'virtualCameraFar' ].value = camera.far;\n\t\t\tmaterial.uniforms[ 'virtualCameraMatrixWorld' ].value = virtualCamera.matrixWorld;\n\t\t\tmaterial.uniforms[ 'virtualCameraProjectionMatrix' ].value = camera.projectionMatrix;\n\t\t\tmaterial.uniforms[ 'virtualCameraProjectionMatrixInverse' ].value = camera.projectionMatrixInverse;\n\t\t\tmaterial.uniforms[ 'resolution' ].value = scope.resolution;\n\n\t\t\t// Update the texture matrix\n\t\t\ttextureMatrix.set(\n\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t);\n\t\t\ttextureMatrix.multiply( virtualCamera.projectionMatrix );\n\t\t\ttextureMatrix.multiply( virtualCamera.matrixWorldInverse );\n\t\t\ttextureMatrix.multiply( scope.matrixWorld );\n\n\t\t\t// scope.visible = false;\n\n\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\t\tconst currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;\n\t\t\tconst currentClippingPlanes = renderer.clippingPlanes;\n\n\t\t\trenderer.xr.enabled = false; // Avoid camera modification\n\t\t\trenderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows\n\t\t\trenderer.clippingPlanes = globalPlanes;\n\n\t\t\trenderer.setRenderTarget( renderTarget );\n\n\t\t\trenderer.state.buffers.depth.setMask( true ); // make sure the depth buffer is writable so it can be properly cleared, see #18897\n\n\t\t\tif ( renderer.autoClear === false ) renderer.clear();\n\t\t\trenderer.render( scene, virtualCamera );\n\n\t\t\trenderer.xr.enabled = currentXrEnabled;\n\t\t\trenderer.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\t\t\trenderer.clippingPlanes = currentClippingPlanes;\n\n\t\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\t\t// Restore viewport\n\n\t\t\tconst viewport = camera.viewport;\n\n\t\t\tif ( viewport !== undefined ) {\n\n\t\t\t\trenderer.state.viewport( viewport );\n\n\t\t\t}\n\n\t\t\t// scope.visible = true;\n\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn renderTarget;\n\n\t\t};\n\n\t}\n\n}\n\nReflectorForSSRPass.ReflectorShader = {\n\n\tname: 'ReflectorShader',\n\n\tdefines: {\n\t\tDISTANCE_ATTENUATION: true,\n\t\tFRESNEL: true,\n\t},\n\n\tuniforms: {\n\n\t\tcolor: { value: null },\n\t\ttDiffuse: { value: null },\n\t\ttDepth: { value: null },\n\t\ttextureMatrix: { value: new Matrix4() },\n\t\tmaxDistance: { value: 180 },\n\t\topacity: { value: 0.5 },\n\t\tfresnelCoe: { value: null },\n\t\tvirtualCameraNear: { value: null },\n\t\tvirtualCameraFar: { value: null },\n\t\tvirtualCameraProjectionMatrix: { value: new Matrix4() },\n\t\tvirtualCameraMatrixWorld: { value: new Matrix4() },\n\t\tvirtualCameraProjectionMatrixInverse: { value: new Matrix4() },\n\t\tresolution: { value: new Vector2() },\n\n\t},\n\n\tvertexShader: /* glsl */`\n\t\tuniform mat4 textureMatrix;\n\t\tvarying vec4 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = textureMatrix * vec4( position, 1.0 );\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\t\tuniform vec3 color;\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tDepth;\n\t\tuniform float maxDistance;\n\t\tuniform float opacity;\n\t\tuniform float fresnelCoe;\n\t\tuniform float virtualCameraNear;\n\t\tuniform float virtualCameraFar;\n\t\tuniform mat4 virtualCameraProjectionMatrix;\n\t\tuniform mat4 virtualCameraProjectionMatrixInverse;\n\t\tuniform mat4 virtualCameraMatrixWorld;\n\t\tuniform vec2 resolution;\n\t\tvarying vec4 vUv;\n\t\t#include \n\t\tfloat blendOverlay( float base, float blend ) {\n\t\t\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\t\t}\n\t\tvec3 blendOverlay( vec3 base, vec3 blend ) {\n\t\t\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n\t\t}\n\t\tfloat getDepth( const in vec2 uv ) {\n\t\t\treturn texture2D( tDepth, uv ).x;\n\t\t}\n\t\tfloat getViewZ( const in float depth ) {\n\t\t\treturn perspectiveDepthToViewZ( depth, virtualCameraNear, virtualCameraFar );\n\t\t}\n\t\tvec3 getViewPosition( const in vec2 uv, const in float depth/*clip space*/, const in float clipW ) {\n\t\t\tvec4 clipPosition = vec4( ( vec3( uv, depth ) - 0.5 ) * 2.0, 1.0 );//ndc\n\t\t\tclipPosition *= clipW; //clip\n\t\t\treturn ( virtualCameraProjectionMatrixInverse * clipPosition ).xyz;//view\n\t\t}\n\t\tvoid main() {\n\t\t\tvec4 base = texture2DProj( tDiffuse, vUv );\n\t\t\t#ifdef useDepthTexture\n\t\t\t\tvec2 uv=(gl_FragCoord.xy-.5)/resolution.xy;\n\t\t\t\tuv.x=1.-uv.x;\n\t\t\t\tfloat depth = texture2DProj( tDepth, vUv ).r;\n\t\t\t\tfloat viewZ = getViewZ( depth );\n\t\t\t\tfloat clipW = virtualCameraProjectionMatrix[2][3] * viewZ+virtualCameraProjectionMatrix[3][3];\n\t\t\t\tvec3 viewPosition=getViewPosition( uv, depth, clipW );\n\t\t\t\tvec3 worldPosition=(virtualCameraMatrixWorld*vec4(viewPosition,1)).xyz;\n\t\t\t\tif(worldPosition.y>maxDistance) discard;\n\t\t\t\tfloat op=opacity;\n\t\t\t\t#ifdef DISTANCE_ATTENUATION\n\t\t\t\t\tfloat ratio=1.-(worldPosition.y/maxDistance);\n\t\t\t\t\tfloat attenuation=ratio*ratio;\n\t\t\t\t\top=opacity*attenuation;\n\t\t\t\t#endif\n\t\t\t\t#ifdef FRESNEL\n\t\t\t\t\top*=fresnelCoe;\n\t\t\t\t#endif\n\t\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), op );\n\t\t\t#else\n\t\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\t\t\t#endif\n\t\t}\n\t`,\n};\n\nexport { ReflectorForSSRPass };\n", "import {\n\tColor,\n\tMatrix4,\n\tMesh,\n\tPerspectiveCamera,\n\tPlane,\n\tQuaternion,\n\tShaderMaterial,\n\tUniformsUtils,\n\tVector3,\n\tVector4,\n\tWebGLRenderTarget,\n\tHalfFloatType\n} from 'three';\n\nclass Refractor extends Mesh {\n\n\tconstructor( geometry, options = {} ) {\n\n\t\tsuper( geometry );\n\n\t\tthis.isRefractor = true;\n\n\t\tthis.type = 'Refractor';\n\t\tthis.camera = new PerspectiveCamera();\n\n\t\tconst scope = this;\n\n\t\tconst color = ( options.color !== undefined ) ? new Color( options.color ) : new Color( 0x7F7F7F );\n\t\tconst textureWidth = options.textureWidth || 512;\n\t\tconst textureHeight = options.textureHeight || 512;\n\t\tconst clipBias = options.clipBias || 0;\n\t\tconst shader = options.shader || Refractor.RefractorShader;\n\t\tconst multisample = ( options.multisample !== undefined ) ? options.multisample : 4;\n\n\t\t//\n\n\t\tconst virtualCamera = this.camera;\n\t\tvirtualCamera.matrixAutoUpdate = false;\n\t\tvirtualCamera.userData.refractor = true;\n\n\t\t//\n\n\t\tconst refractorPlane = new Plane();\n\t\tconst textureMatrix = new Matrix4();\n\n\t\t// render target\n\n\t\tconst renderTarget = new WebGLRenderTarget( textureWidth, textureHeight, { samples: multisample, type: HalfFloatType } );\n\n\t\t// material\n\n\t\tthis.material = new ShaderMaterial( {\n\t\t\tname: ( shader.name !== undefined ) ? shader.name : 'unspecified',\n\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\ttransparent: true // ensures, refractors are drawn from farthest to closest\n\t\t} );\n\n\t\tthis.material.uniforms[ 'color' ].value = color;\n\t\tthis.material.uniforms[ 'tDiffuse' ].value = renderTarget.texture;\n\t\tthis.material.uniforms[ 'textureMatrix' ].value = textureMatrix;\n\n\t\t// functions\n\n\t\tconst visible = ( function () {\n\n\t\t\tconst refractorWorldPosition = new Vector3();\n\t\t\tconst cameraWorldPosition = new Vector3();\n\t\t\tconst rotationMatrix = new Matrix4();\n\n\t\t\tconst view = new Vector3();\n\t\t\tconst normal = new Vector3();\n\n\t\t\treturn function visible( camera ) {\n\n\t\t\t\trefractorWorldPosition.setFromMatrixPosition( scope.matrixWorld );\n\t\t\t\tcameraWorldPosition.setFromMatrixPosition( camera.matrixWorld );\n\n\t\t\t\tview.subVectors( refractorWorldPosition, cameraWorldPosition );\n\n\t\t\t\trotationMatrix.extractRotation( scope.matrixWorld );\n\n\t\t\t\tnormal.set( 0, 0, 1 );\n\t\t\t\tnormal.applyMatrix4( rotationMatrix );\n\n\t\t\t\treturn view.dot( normal ) < 0;\n\n\t\t\t};\n\n\t\t} )();\n\n\t\tconst updateRefractorPlane = ( function () {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst position = new Vector3();\n\t\t\tconst quaternion = new Quaternion();\n\t\t\tconst scale = new Vector3();\n\n\t\t\treturn function updateRefractorPlane() {\n\n\t\t\t\tscope.matrixWorld.decompose( position, quaternion, scale );\n\t\t\t\tnormal.set( 0, 0, 1 ).applyQuaternion( quaternion ).normalize();\n\n\t\t\t\t// flip the normal because we want to cull everything above the plane\n\n\t\t\t\tnormal.negate();\n\n\t\t\t\trefractorPlane.setFromNormalAndCoplanarPoint( normal, position );\n\n\t\t\t};\n\n\t\t} )();\n\n\t\tconst updateVirtualCamera = ( function () {\n\n\t\t\tconst clipPlane = new Plane();\n\t\t\tconst clipVector = new Vector4();\n\t\t\tconst q = new Vector4();\n\n\t\t\treturn function updateVirtualCamera( camera ) {\n\n\t\t\t\tvirtualCamera.matrixWorld.copy( camera.matrixWorld );\n\t\t\t\tvirtualCamera.matrixWorldInverse.copy( virtualCamera.matrixWorld ).invert();\n\t\t\t\tvirtualCamera.projectionMatrix.copy( camera.projectionMatrix );\n\t\t\t\tvirtualCamera.far = camera.far; // used in WebGLBackground\n\n\t\t\t\t// The following code creates an oblique view frustum for clipping.\n\t\t\t\t// see: Lengyel, Eric. “Oblique View Frustum Depth Projection and Clipping”.\n\t\t\t\t// Journal of Game Development, Vol. 1, No. 2 (2005), Charles River Media, pp. 5–16\n\n\t\t\t\tclipPlane.copy( refractorPlane );\n\t\t\t\tclipPlane.applyMatrix4( virtualCamera.matrixWorldInverse );\n\n\t\t\t\tclipVector.set( clipPlane.normal.x, clipPlane.normal.y, clipPlane.normal.z, clipPlane.constant );\n\n\t\t\t\t// calculate the clip-space corner point opposite the clipping plane and\n\t\t\t\t// transform it into camera space by multiplying it by the inverse of the projection matrix\n\n\t\t\t\tconst projectionMatrix = virtualCamera.projectionMatrix;\n\n\t\t\t\tq.x = ( Math.sign( clipVector.x ) + projectionMatrix.elements[ 8 ] ) / projectionMatrix.elements[ 0 ];\n\t\t\t\tq.y = ( Math.sign( clipVector.y ) + projectionMatrix.elements[ 9 ] ) / projectionMatrix.elements[ 5 ];\n\t\t\t\tq.z = - 1.0;\n\t\t\t\tq.w = ( 1.0 + projectionMatrix.elements[ 10 ] ) / projectionMatrix.elements[ 14 ];\n\n\t\t\t\t// calculate the scaled plane vector\n\n\t\t\t\tclipVector.multiplyScalar( 2.0 / clipVector.dot( q ) );\n\n\t\t\t\t// replacing the third row of the projection matrix\n\n\t\t\t\tprojectionMatrix.elements[ 2 ] = clipVector.x;\n\t\t\t\tprojectionMatrix.elements[ 6 ] = clipVector.y;\n\t\t\t\tprojectionMatrix.elements[ 10 ] = clipVector.z + 1.0 - clipBias;\n\t\t\t\tprojectionMatrix.elements[ 14 ] = clipVector.w;\n\n\t\t\t};\n\n\t\t} )();\n\n\t\t// This will update the texture matrix that is used for projective texture mapping in the shader.\n\t\t// see: http://developer.download.nvidia.com/assets/gamedev/docs/projective_texture_mapping.pdf\n\n\t\tfunction updateTextureMatrix( camera ) {\n\n\t\t\t// this matrix does range mapping to [ 0, 1 ]\n\n\t\t\ttextureMatrix.set(\n\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t);\n\n\t\t\t// we use \"Object Linear Texgen\", so we need to multiply the texture matrix T\n\t\t\t// (matrix above) with the projection and view matrix of the virtual camera\n\t\t\t// and the model matrix of the refractor\n\n\t\t\ttextureMatrix.multiply( camera.projectionMatrix );\n\t\t\ttextureMatrix.multiply( camera.matrixWorldInverse );\n\t\t\ttextureMatrix.multiply( scope.matrixWorld );\n\n\t\t}\n\n\t\t//\n\n\t\tfunction render( renderer, scene, camera ) {\n\n\t\t\tscope.visible = false;\n\n\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\t\tconst currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;\n\n\t\t\trenderer.xr.enabled = false; // avoid camera modification\n\t\t\trenderer.shadowMap.autoUpdate = false; // avoid re-computing shadows\n\n\t\t\trenderer.setRenderTarget( renderTarget );\n\t\t\tif ( renderer.autoClear === false ) renderer.clear();\n\t\t\trenderer.render( scene, virtualCamera );\n\n\t\t\trenderer.xr.enabled = currentXrEnabled;\n\t\t\trenderer.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\t\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\t\t// restore viewport\n\n\t\t\tconst viewport = camera.viewport;\n\n\t\t\tif ( viewport !== undefined ) {\n\n\t\t\t\trenderer.state.viewport( viewport );\n\n\t\t\t}\n\n\t\t\tscope.visible = true;\n\n\t\t}\n\n\t\t//\n\n\t\tthis.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t// ensure refractors are rendered only once per frame\n\n\t\t\tif ( camera.userData.refractor === true ) return;\n\n\t\t\t// avoid rendering when the refractor is viewed from behind\n\n\t\t\tif ( ! visible( camera ) === true ) return;\n\n\t\t\t// update\n\n\t\t\tupdateRefractorPlane();\n\n\t\t\tupdateTextureMatrix( camera );\n\n\t\t\tupdateVirtualCamera( camera );\n\n\t\t\trender( renderer, scene, camera );\n\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn renderTarget;\n\n\t\t};\n\n\t\tthis.dispose = function () {\n\n\t\t\trenderTarget.dispose();\n\t\t\tscope.material.dispose();\n\n\t\t};\n\n\t}\n\n}\n\nRefractor.RefractorShader = {\n\n\tname: 'RefractorShader',\n\n\tuniforms: {\n\n\t\t'color': {\n\t\t\tvalue: null\n\t\t},\n\n\t\t'tDiffuse': {\n\t\t\tvalue: null\n\t\t},\n\n\t\t'textureMatrix': {\n\t\t\tvalue: null\n\t\t}\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tuniform mat4 textureMatrix;\n\n\t\tvarying vec4 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = textureMatrix * vec4( position, 1.0 );\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform vec3 color;\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec4 vUv;\n\n\t\tfloat blendOverlay( float base, float blend ) {\n\n\t\t\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\n\t\t}\n\n\t\tvec3 blendOverlay( vec3 base, vec3 blend ) {\n\n\t\t\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvec4 base = texture2DProj( tDiffuse, vUv );\n\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\n\t\t\t#include \n\t\t\t#include \n\n\t\t}`\n\n};\n\nexport { Refractor };\n", "import {\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tEqualStencilFunc,\n\tIncrementStencilOp\n} from 'three';\n\n/**\n * A shadow Mesh that follows a shadow-casting Mesh in the scene, but is confined to a single plane.\n */\n\nconst _shadowMatrix = new Matrix4();\n\nclass ShadowMesh extends Mesh {\n\n\tconstructor( mesh ) {\n\n\t\tconst shadowMaterial = new MeshBasicMaterial( {\n\n\t\t\tcolor: 0x000000,\n\t\t\ttransparent: true,\n\t\t\topacity: 0.6,\n\t\t\tdepthWrite: false,\n\t\t\tstencilWrite: true,\n\t\t\tstencilFunc: EqualStencilFunc,\n\t\t\tstencilRef: 0,\n\t\t\tstencilZPass: IncrementStencilOp\n\n\t\t} );\n\n\t\tsuper( mesh.geometry, shadowMaterial );\n\n\t\tthis.isShadowMesh = true;\n\n\t\tthis.meshMatrix = mesh.matrixWorld;\n\n\t\tthis.frustumCulled = false;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdate( plane, lightPosition4D ) {\n\n\t\t// based on https://www.opengl.org/archives/resources/features/StencilTalk/tsld021.htm\n\n\t\tconst dot = plane.normal.x * lightPosition4D.x +\n\t\t\t plane.normal.y * lightPosition4D.y +\n\t\t\t plane.normal.z * lightPosition4D.z +\n\t\t\t - plane.constant * lightPosition4D.w;\n\n\t\tconst sme = _shadowMatrix.elements;\n\n\t\tsme[ 0 ] = dot - lightPosition4D.x * plane.normal.x;\n\t\tsme[ 4 ] = - lightPosition4D.x * plane.normal.y;\n\t\tsme[ 8 ] = - lightPosition4D.x * plane.normal.z;\n\t\tsme[ 12 ] = - lightPosition4D.x * - plane.constant;\n\n\t\tsme[ 1 ] = - lightPosition4D.y * plane.normal.x;\n\t\tsme[ 5 ] = dot - lightPosition4D.y * plane.normal.y;\n\t\tsme[ 9 ] = - lightPosition4D.y * plane.normal.z;\n\t\tsme[ 13 ] = - lightPosition4D.y * - plane.constant;\n\n\t\tsme[ 2 ] = - lightPosition4D.z * plane.normal.x;\n\t\tsme[ 6 ] = - lightPosition4D.z * plane.normal.y;\n\t\tsme[ 10 ] = dot - lightPosition4D.z * plane.normal.z;\n\t\tsme[ 14 ] = - lightPosition4D.z * - plane.constant;\n\n\t\tsme[ 3 ] = - lightPosition4D.w * plane.normal.x;\n\t\tsme[ 7 ] = - lightPosition4D.w * plane.normal.y;\n\t\tsme[ 11 ] = - lightPosition4D.w * plane.normal.z;\n\t\tsme[ 15 ] = dot - lightPosition4D.w * - plane.constant;\n\n\t\tthis.matrix.multiplyMatrices( _shadowMatrix, this.meshMatrix );\n\n\t}\n\n}\n\nexport { ShadowMesh };\n", "import {\n\tBackSide,\n\tBoxGeometry,\n\tMesh,\n\tShaderMaterial,\n\tUniformsUtils,\n\tVector3\n} from 'three';\n\n/**\n * Based on \"A Practical Analytic Model for Daylight\"\n * aka The Preetham Model, the de facto standard analytic skydome model\n * https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight\n *\n * First implemented by Simon Wallner\n * http://simonwallner.at/project/atmospheric-scattering/\n *\n * Improved by Martin Upitis\n * http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR\n *\n * Three.js integration by zz85 http://twitter.com/blurspline\n*/\n\nclass Sky extends Mesh {\n\n\tconstructor() {\n\n\t\tconst shader = Sky.SkyShader;\n\n\t\tconst material = new ShaderMaterial( {\n\t\t\tname: shader.name,\n\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false\n\t\t} );\n\n\t\tsuper( new BoxGeometry( 1, 1, 1 ), material );\n\n\t\tthis.isSky = true;\n\n\t}\n\n}\n\nSky.SkyShader = {\n\n\tname: 'SkyShader',\n\n\tuniforms: {\n\t\t'turbidity': { value: 2 },\n\t\t'rayleigh': { value: 1 },\n\t\t'mieCoefficient': { value: 0.005 },\n\t\t'mieDirectionalG': { value: 0.8 },\n\t\t'sunPosition': { value: new Vector3() },\n\t\t'up': { value: new Vector3( 0, 1, 0 ) }\n\t},\n\n\tvertexShader: /* glsl */`\n\t\tuniform vec3 sunPosition;\n\t\tuniform float rayleigh;\n\t\tuniform float turbidity;\n\t\tuniform float mieCoefficient;\n\t\tuniform vec3 up;\n\n\t\tvarying vec3 vWorldPosition;\n\t\tvarying vec3 vSunDirection;\n\t\tvarying float vSunfade;\n\t\tvarying vec3 vBetaR;\n\t\tvarying vec3 vBetaM;\n\t\tvarying float vSunE;\n\n\t\t// constants for atmospheric scattering\n\t\tconst float e = 2.71828182845904523536028747135266249775724709369995957;\n\t\tconst float pi = 3.141592653589793238462643383279502884197169;\n\n\t\t// wavelength of used primaries, according to preetham\n\t\tconst vec3 lambda = vec3( 680E-9, 550E-9, 450E-9 );\n\t\t// this pre-calcuation replaces older TotalRayleigh(vec3 lambda) function:\n\t\t// (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn))\n\t\tconst vec3 totalRayleigh = vec3( 5.804542996261093E-6, 1.3562911419845635E-5, 3.0265902468824876E-5 );\n\n\t\t// mie stuff\n\t\t// K coefficient for the primaries\n\t\tconst float v = 4.0;\n\t\tconst vec3 K = vec3( 0.686, 0.678, 0.666 );\n\t\t// MieConst = pi * pow( ( 2.0 * pi ) / lambda, vec3( v - 2.0 ) ) * K\n\t\tconst vec3 MieConst = vec3( 1.8399918514433978E14, 2.7798023919660528E14, 4.0790479543861094E14 );\n\n\t\t// earth shadow hack\n\t\t// cutoffAngle = pi / 1.95;\n\t\tconst float cutoffAngle = 1.6110731556870734;\n\t\tconst float steepness = 1.5;\n\t\tconst float EE = 1000.0;\n\n\t\tfloat sunIntensity( float zenithAngleCos ) {\n\t\t\tzenithAngleCos = clamp( zenithAngleCos, -1.0, 1.0 );\n\t\t\treturn EE * max( 0.0, 1.0 - pow( e, -( ( cutoffAngle - acos( zenithAngleCos ) ) / steepness ) ) );\n\t\t}\n\n\t\tvec3 totalMie( float T ) {\n\t\t\tfloat c = ( 0.2 * T ) * 10E-18;\n\t\t\treturn 0.434 * c * MieConst;\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\t\t\tvWorldPosition = worldPosition.xyz;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\tgl_Position.z = gl_Position.w; // set z to camera.far\n\n\t\t\tvSunDirection = normalize( sunPosition );\n\n\t\t\tvSunE = sunIntensity( dot( vSunDirection, up ) );\n\n\t\t\tvSunfade = 1.0 - clamp( 1.0 - exp( ( sunPosition.y / 450000.0 ) ), 0.0, 1.0 );\n\n\t\t\tfloat rayleighCoefficient = rayleigh - ( 1.0 * ( 1.0 - vSunfade ) );\n\n\t\t\t// extinction (absorbtion + out scattering)\n\t\t\t// rayleigh coefficients\n\t\t\tvBetaR = totalRayleigh * rayleighCoefficient;\n\n\t\t\t// mie coefficients\n\t\t\tvBetaM = totalMie( turbidity ) * mieCoefficient;\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\t\tvarying vec3 vWorldPosition;\n\t\tvarying vec3 vSunDirection;\n\t\tvarying float vSunfade;\n\t\tvarying vec3 vBetaR;\n\t\tvarying vec3 vBetaM;\n\t\tvarying float vSunE;\n\n\t\tuniform float mieDirectionalG;\n\t\tuniform vec3 up;\n\n\t\t// constants for atmospheric scattering\n\t\tconst float pi = 3.141592653589793238462643383279502884197169;\n\n\t\tconst float n = 1.0003; // refractive index of air\n\t\tconst float N = 2.545E25; // number of molecules per unit volume for air at 288.15K and 1013mb (sea level -45 celsius)\n\n\t\t// optical length at zenith for molecules\n\t\tconst float rayleighZenithLength = 8.4E3;\n\t\tconst float mieZenithLength = 1.25E3;\n\t\t// 66 arc seconds -> degrees, and the cosine of that\n\t\tconst float sunAngularDiameterCos = 0.999956676946448443553574619906976478926848692873900859324;\n\n\t\t// 3.0 / ( 16.0 * pi )\n\t\tconst float THREE_OVER_SIXTEENPI = 0.05968310365946075;\n\t\t// 1.0 / ( 4.0 * pi )\n\t\tconst float ONE_OVER_FOURPI = 0.07957747154594767;\n\n\t\tfloat rayleighPhase( float cosTheta ) {\n\t\t\treturn THREE_OVER_SIXTEENPI * ( 1.0 + pow( cosTheta, 2.0 ) );\n\t\t}\n\n\t\tfloat hgPhase( float cosTheta, float g ) {\n\t\t\tfloat g2 = pow( g, 2.0 );\n\t\t\tfloat inverse = 1.0 / pow( 1.0 - 2.0 * g * cosTheta + g2, 1.5 );\n\t\t\treturn ONE_OVER_FOURPI * ( ( 1.0 - g2 ) * inverse );\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvec3 direction = normalize( vWorldPosition - cameraPosition );\n\n\t\t\t// optical length\n\t\t\t// cutoff angle at 90 to avoid singularity in next formula.\n\t\t\tfloat zenithAngle = acos( max( 0.0, dot( up, direction ) ) );\n\t\t\tfloat inverse = 1.0 / ( cos( zenithAngle ) + 0.15 * pow( 93.885 - ( ( zenithAngle * 180.0 ) / pi ), -1.253 ) );\n\t\t\tfloat sR = rayleighZenithLength * inverse;\n\t\t\tfloat sM = mieZenithLength * inverse;\n\n\t\t\t// combined extinction factor\n\t\t\tvec3 Fex = exp( -( vBetaR * sR + vBetaM * sM ) );\n\n\t\t\t// in scattering\n\t\t\tfloat cosTheta = dot( direction, vSunDirection );\n\n\t\t\tfloat rPhase = rayleighPhase( cosTheta * 0.5 + 0.5 );\n\t\t\tvec3 betaRTheta = vBetaR * rPhase;\n\n\t\t\tfloat mPhase = hgPhase( cosTheta, mieDirectionalG );\n\t\t\tvec3 betaMTheta = vBetaM * mPhase;\n\n\t\t\tvec3 Lin = pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * ( 1.0 - Fex ), vec3( 1.5 ) );\n\t\t\tLin *= mix( vec3( 1.0 ), pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * Fex, vec3( 1.0 / 2.0 ) ), clamp( pow( 1.0 - dot( up, vSunDirection ), 5.0 ), 0.0, 1.0 ) );\n\n\t\t\t// nightsky\n\t\t\tfloat theta = acos( direction.y ); // elevation --> y-axis, [-pi/2, pi/2]\n\t\t\tfloat phi = atan( direction.z, direction.x ); // azimuth --> x-axis [-pi/2, pi/2]\n\t\t\tvec2 uv = vec2( phi, theta ) / vec2( 2.0 * pi, pi ) + vec2( 0.5, 0.0 );\n\t\t\tvec3 L0 = vec3( 0.1 ) * Fex;\n\n\t\t\t// composition + solar disc\n\t\t\tfloat sundisk = smoothstep( sunAngularDiameterCos, sunAngularDiameterCos + 0.00002, cosTheta );\n\t\t\tL0 += ( vSunE * 19000.0 * Fex ) * sundisk;\n\n\t\t\tvec3 texColor = ( Lin + L0 ) * 0.04 + vec3( 0.0, 0.0003, 0.00075 );\n\n\t\t\tvec3 retColor = pow( texColor, vec3( 1.0 / ( 1.2 + ( 1.2 * vSunfade ) ) ) );\n\n\t\t\tgl_FragColor = vec4( retColor, 1.0 );\n\n\t\t\t#include \n\t\t\t#include \n\n\t\t}`\n\n};\n\nexport { Sky };\n", "import {\n\tColor,\n\tFrontSide,\n\tMatrix4,\n\tMesh,\n\tPerspectiveCamera,\n\tPlane,\n\tShaderMaterial,\n\tUniformsLib,\n\tUniformsUtils,\n\tVector3,\n\tVector4,\n\tWebGLRenderTarget\n} from 'three';\n\n/**\n * Work based on :\n * https://github.com/Slayvin: Flat mirror for three.js\n * https://home.adelphi.edu/~stemkoski/ : An implementation of water shader based on the flat mirror\n * http://29a.ch/ && http://29a.ch/slides/2012/webglwater/ : Water shader explanations in WebGL\n */\n\nclass Water extends Mesh {\n\n\tconstructor( geometry, options = {} ) {\n\n\t\tsuper( geometry );\n\n\t\tthis.isWater = true;\n\n\t\tconst scope = this;\n\n\t\tconst textureWidth = options.textureWidth !== undefined ? options.textureWidth : 512;\n\t\tconst textureHeight = options.textureHeight !== undefined ? options.textureHeight : 512;\n\n\t\tconst clipBias = options.clipBias !== undefined ? options.clipBias : 0.0;\n\t\tconst alpha = options.alpha !== undefined ? options.alpha : 1.0;\n\t\tconst time = options.time !== undefined ? options.time : 0.0;\n\t\tconst normalSampler = options.waterNormals !== undefined ? options.waterNormals : null;\n\t\tconst sunDirection = options.sunDirection !== undefined ? options.sunDirection : new Vector3( 0.70707, 0.70707, 0.0 );\n\t\tconst sunColor = new Color( options.sunColor !== undefined ? options.sunColor : 0xffffff );\n\t\tconst waterColor = new Color( options.waterColor !== undefined ? options.waterColor : 0x7F7F7F );\n\t\tconst eye = options.eye !== undefined ? options.eye : new Vector3( 0, 0, 0 );\n\t\tconst distortionScale = options.distortionScale !== undefined ? options.distortionScale : 20.0;\n\t\tconst side = options.side !== undefined ? options.side : FrontSide;\n\t\tconst fog = options.fog !== undefined ? options.fog : false;\n\n\t\t//\n\n\t\tconst mirrorPlane = new Plane();\n\t\tconst normal = new Vector3();\n\t\tconst mirrorWorldPosition = new Vector3();\n\t\tconst cameraWorldPosition = new Vector3();\n\t\tconst rotationMatrix = new Matrix4();\n\t\tconst lookAtPosition = new Vector3( 0, 0, - 1 );\n\t\tconst clipPlane = new Vector4();\n\n\t\tconst view = new Vector3();\n\t\tconst target = new Vector3();\n\t\tconst q = new Vector4();\n\n\t\tconst textureMatrix = new Matrix4();\n\n\t\tconst mirrorCamera = new PerspectiveCamera();\n\n\t\tconst renderTarget = new WebGLRenderTarget( textureWidth, textureHeight );\n\n\t\tconst mirrorShader = {\n\n\t\t\tname: 'MirrorShader',\n\n\t\t\tuniforms: UniformsUtils.merge( [\n\t\t\t\tUniformsLib[ 'fog' ],\n\t\t\t\tUniformsLib[ 'lights' ],\n\t\t\t\t{\n\t\t\t\t\t'normalSampler': { value: null },\n\t\t\t\t\t'mirrorSampler': { value: null },\n\t\t\t\t\t'alpha': { value: 1.0 },\n\t\t\t\t\t'time': { value: 0.0 },\n\t\t\t\t\t'size': { value: 1.0 },\n\t\t\t\t\t'distortionScale': { value: 20.0 },\n\t\t\t\t\t'textureMatrix': { value: new Matrix4() },\n\t\t\t\t\t'sunColor': { value: new Color( 0x7F7F7F ) },\n\t\t\t\t\t'sunDirection': { value: new Vector3( 0.70707, 0.70707, 0 ) },\n\t\t\t\t\t'eye': { value: new Vector3() },\n\t\t\t\t\t'waterColor': { value: new Color( 0x555555 ) }\n\t\t\t\t}\n\t\t\t] ),\n\n\t\t\tvertexShader: /* glsl */`\n\t\t\t\tuniform mat4 textureMatrix;\n\t\t\t\tuniform float time;\n\n\t\t\t\tvarying vec4 mirrorCoord;\n\t\t\t\tvarying vec4 worldPosition;\n\n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\t\t\t\t\tmirrorCoord = modelMatrix * vec4( position, 1.0 );\n\t\t\t\t\tworldPosition = mirrorCoord.xyzw;\n\t\t\t\t\tmirrorCoord = textureMatrix * mirrorCoord;\n\t\t\t\t\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t\tgl_Position = projectionMatrix * mvPosition;\n\n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t}`,\n\n\t\t\tfragmentShader: /* glsl */`\n\t\t\t\tuniform sampler2D mirrorSampler;\n\t\t\t\tuniform float alpha;\n\t\t\t\tuniform float time;\n\t\t\t\tuniform float size;\n\t\t\t\tuniform float distortionScale;\n\t\t\t\tuniform sampler2D normalSampler;\n\t\t\t\tuniform vec3 sunColor;\n\t\t\t\tuniform vec3 sunDirection;\n\t\t\t\tuniform vec3 eye;\n\t\t\t\tuniform vec3 waterColor;\n\n\t\t\t\tvarying vec4 mirrorCoord;\n\t\t\t\tvarying vec4 worldPosition;\n\n\t\t\t\tvec4 getNoise( vec2 uv ) {\n\t\t\t\t\tvec2 uv0 = ( uv / 103.0 ) + vec2(time / 17.0, time / 29.0);\n\t\t\t\t\tvec2 uv1 = uv / 107.0-vec2( time / -19.0, time / 31.0 );\n\t\t\t\t\tvec2 uv2 = uv / vec2( 8907.0, 9803.0 ) + vec2( time / 101.0, time / 97.0 );\n\t\t\t\t\tvec2 uv3 = uv / vec2( 1091.0, 1027.0 ) - vec2( time / 109.0, time / -113.0 );\n\t\t\t\t\tvec4 noise = texture2D( normalSampler, uv0 ) +\n\t\t\t\t\t\ttexture2D( normalSampler, uv1 ) +\n\t\t\t\t\t\ttexture2D( normalSampler, uv2 ) +\n\t\t\t\t\t\ttexture2D( normalSampler, uv3 );\n\t\t\t\t\treturn noise * 0.5 - 1.0;\n\t\t\t\t}\n\n\t\t\t\tvoid sunLight( const vec3 surfaceNormal, const vec3 eyeDirection, float shiny, float spec, float diffuse, inout vec3 diffuseColor, inout vec3 specularColor ) {\n\t\t\t\t\tvec3 reflection = normalize( reflect( -sunDirection, surfaceNormal ) );\n\t\t\t\t\tfloat direction = max( 0.0, dot( eyeDirection, reflection ) );\n\t\t\t\t\tspecularColor += pow( direction, shiny ) * sunColor * spec;\n\t\t\t\t\tdiffuseColor += max( dot( sunDirection, surfaceNormal ), 0.0 ) * sunColor * diffuse;\n\t\t\t\t}\n\n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\t#include \n\t\t\t\t\tvec4 noise = getNoise( worldPosition.xz * size );\n\t\t\t\t\tvec3 surfaceNormal = normalize( noise.xzy * vec3( 1.5, 1.0, 1.5 ) );\n\n\t\t\t\t\tvec3 diffuseLight = vec3(0.0);\n\t\t\t\t\tvec3 specularLight = vec3(0.0);\n\n\t\t\t\t\tvec3 worldToEye = eye-worldPosition.xyz;\n\t\t\t\t\tvec3 eyeDirection = normalize( worldToEye );\n\t\t\t\t\tsunLight( surfaceNormal, eyeDirection, 100.0, 2.0, 0.5, diffuseLight, specularLight );\n\n\t\t\t\t\tfloat distance = length(worldToEye);\n\n\t\t\t\t\tvec2 distortion = surfaceNormal.xz * ( 0.001 + 1.0 / distance ) * distortionScale;\n\t\t\t\t\tvec3 reflectionSample = vec3( texture2D( mirrorSampler, mirrorCoord.xy / mirrorCoord.w + distortion ) );\n\n\t\t\t\t\tfloat theta = max( dot( eyeDirection, surfaceNormal ), 0.0 );\n\t\t\t\t\tfloat rf0 = 0.3;\n\t\t\t\t\tfloat reflectance = rf0 + ( 1.0 - rf0 ) * pow( ( 1.0 - theta ), 5.0 );\n\t\t\t\t\tvec3 scatter = max( 0.0, dot( surfaceNormal, eyeDirection ) ) * waterColor;\n\t\t\t\t\tvec3 albedo = mix( ( sunColor * diffuseLight * 0.3 + scatter ) * getShadowMask(), ( vec3( 0.1 ) + reflectionSample * 0.9 + reflectionSample * specularLight ), reflectance);\n\t\t\t\t\tvec3 outgoingLight = albedo;\n\t\t\t\t\tgl_FragColor = vec4( outgoingLight, alpha );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \t\n\t\t\t\t}`\n\n\t\t};\n\n\t\tconst material = new ShaderMaterial( {\n\t\t\tname: mirrorShader.name,\n\t\t\tuniforms: UniformsUtils.clone( mirrorShader.uniforms ),\n\t\t\tvertexShader: mirrorShader.vertexShader,\n\t\t\tfragmentShader: mirrorShader.fragmentShader,\n\t\t\tlights: true,\n\t\t\tside: side,\n\t\t\tfog: fog\n\t\t} );\n\n\t\tmaterial.uniforms[ 'mirrorSampler' ].value = renderTarget.texture;\n\t\tmaterial.uniforms[ 'textureMatrix' ].value = textureMatrix;\n\t\tmaterial.uniforms[ 'alpha' ].value = alpha;\n\t\tmaterial.uniforms[ 'time' ].value = time;\n\t\tmaterial.uniforms[ 'normalSampler' ].value = normalSampler;\n\t\tmaterial.uniforms[ 'sunColor' ].value = sunColor;\n\t\tmaterial.uniforms[ 'waterColor' ].value = waterColor;\n\t\tmaterial.uniforms[ 'sunDirection' ].value = sunDirection;\n\t\tmaterial.uniforms[ 'distortionScale' ].value = distortionScale;\n\n\t\tmaterial.uniforms[ 'eye' ].value = eye;\n\n\t\tscope.material = material;\n\n\t\tscope.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\tmirrorWorldPosition.setFromMatrixPosition( scope.matrixWorld );\n\t\t\tcameraWorldPosition.setFromMatrixPosition( camera.matrixWorld );\n\n\t\t\trotationMatrix.extractRotation( scope.matrixWorld );\n\n\t\t\tnormal.set( 0, 0, 1 );\n\t\t\tnormal.applyMatrix4( rotationMatrix );\n\n\t\t\tview.subVectors( mirrorWorldPosition, cameraWorldPosition );\n\n\t\t\t// Avoid rendering when mirror is facing away\n\n\t\t\tif ( view.dot( normal ) > 0 ) return;\n\n\t\t\tview.reflect( normal ).negate();\n\t\t\tview.add( mirrorWorldPosition );\n\n\t\t\trotationMatrix.extractRotation( camera.matrixWorld );\n\n\t\t\tlookAtPosition.set( 0, 0, - 1 );\n\t\t\tlookAtPosition.applyMatrix4( rotationMatrix );\n\t\t\tlookAtPosition.add( cameraWorldPosition );\n\n\t\t\ttarget.subVectors( mirrorWorldPosition, lookAtPosition );\n\t\t\ttarget.reflect( normal ).negate();\n\t\t\ttarget.add( mirrorWorldPosition );\n\n\t\t\tmirrorCamera.position.copy( view );\n\t\t\tmirrorCamera.up.set( 0, 1, 0 );\n\t\t\tmirrorCamera.up.applyMatrix4( rotationMatrix );\n\t\t\tmirrorCamera.up.reflect( normal );\n\t\t\tmirrorCamera.lookAt( target );\n\n\t\t\tmirrorCamera.far = camera.far; // Used in WebGLBackground\n\n\t\t\tmirrorCamera.updateMatrixWorld();\n\t\t\tmirrorCamera.projectionMatrix.copy( camera.projectionMatrix );\n\n\t\t\t// Update the texture matrix\n\t\t\ttextureMatrix.set(\n\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t);\n\t\t\ttextureMatrix.multiply( mirrorCamera.projectionMatrix );\n\t\t\ttextureMatrix.multiply( mirrorCamera.matrixWorldInverse );\n\n\t\t\t// Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n\t\t\t// Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n\t\t\tmirrorPlane.setFromNormalAndCoplanarPoint( normal, mirrorWorldPosition );\n\t\t\tmirrorPlane.applyMatrix4( mirrorCamera.matrixWorldInverse );\n\n\t\t\tclipPlane.set( mirrorPlane.normal.x, mirrorPlane.normal.y, mirrorPlane.normal.z, mirrorPlane.constant );\n\n\t\t\tconst projectionMatrix = mirrorCamera.projectionMatrix;\n\n\t\t\tq.x = ( Math.sign( clipPlane.x ) + projectionMatrix.elements[ 8 ] ) / projectionMatrix.elements[ 0 ];\n\t\t\tq.y = ( Math.sign( clipPlane.y ) + projectionMatrix.elements[ 9 ] ) / projectionMatrix.elements[ 5 ];\n\t\t\tq.z = - 1.0;\n\t\t\tq.w = ( 1.0 + projectionMatrix.elements[ 10 ] ) / projectionMatrix.elements[ 14 ];\n\n\t\t\t// Calculate the scaled plane vector\n\t\t\tclipPlane.multiplyScalar( 2.0 / clipPlane.dot( q ) );\n\n\t\t\t// Replacing the third row of the projection matrix\n\t\t\tprojectionMatrix.elements[ 2 ] = clipPlane.x;\n\t\t\tprojectionMatrix.elements[ 6 ] = clipPlane.y;\n\t\t\tprojectionMatrix.elements[ 10 ] = clipPlane.z + 1.0 - clipBias;\n\t\t\tprojectionMatrix.elements[ 14 ] = clipPlane.w;\n\n\t\t\teye.setFromMatrixPosition( camera.matrixWorld );\n\n\t\t\t// Render\n\n\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\t\tconst currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;\n\n\t\t\tscope.visible = false;\n\n\t\t\trenderer.xr.enabled = false; // Avoid camera modification and recursion\n\t\t\trenderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows\n\n\t\t\trenderer.setRenderTarget( renderTarget );\n\n\t\t\trenderer.state.buffers.depth.setMask( true ); // make sure the depth buffer is writable so it can be properly cleared, see #18897\n\n\t\t\tif ( renderer.autoClear === false ) renderer.clear();\n\t\t\trenderer.render( scene, mirrorCamera );\n\n\t\t\tscope.visible = true;\n\n\t\t\trenderer.xr.enabled = currentXrEnabled;\n\t\t\trenderer.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\n\t\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\t\t// Restore viewport\n\n\t\t\tconst viewport = camera.viewport;\n\n\t\t\tif ( viewport !== undefined ) {\n\n\t\t\t\trenderer.state.viewport( viewport );\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n}\n\nexport { Water };\n", "import {\n\tClock,\n\tColor,\n\tMatrix4,\n\tMesh,\n\tRepeatWrapping,\n\tShaderMaterial,\n\tTextureLoader,\n\tUniformsLib,\n\tUniformsUtils,\n\tVector2,\n\tVector4\n} from 'three';\nimport { Reflector } from '../objects/Reflector.js';\nimport { Refractor } from '../objects/Refractor.js';\n\n/**\n * References:\n *\thttps://alex.vlachos.com/graphics/Vlachos-SIGGRAPH10-WaterFlow.pdf\n *\thttp://graphicsrunner.blogspot.de/2010/08/water-using-flow-maps.html\n *\n */\n\nclass Water extends Mesh {\n\n\tconstructor( geometry, options = {} ) {\n\n\t\tsuper( geometry );\n\n\t\tthis.isWater = true;\n\n\t\tthis.type = 'Water';\n\n\t\tconst scope = this;\n\n\t\tconst color = ( options.color !== undefined ) ? new Color( options.color ) : new Color( 0xFFFFFF );\n\t\tconst textureWidth = options.textureWidth !== undefined ? options.textureWidth : 512;\n\t\tconst textureHeight = options.textureHeight !== undefined ? options.textureHeight : 512;\n\t\tconst clipBias = options.clipBias !== undefined ? options.clipBias : 0;\n\t\tconst flowDirection = options.flowDirection !== undefined ? options.flowDirection : new Vector2( 1, 0 );\n\t\tconst flowSpeed = options.flowSpeed !== undefined ? options.flowSpeed : 0.03;\n\t\tconst reflectivity = options.reflectivity !== undefined ? options.reflectivity : 0.02;\n\t\tconst scale = options.scale !== undefined ? options.scale : 1;\n\t\tconst shader = options.shader !== undefined ? options.shader : Water.WaterShader;\n\n\t\tconst textureLoader = new TextureLoader();\n\n\t\tconst flowMap = options.flowMap || undefined;\n\t\tconst normalMap0 = options.normalMap0 || textureLoader.load( 'textures/water/Water_1_M_Normal.jpg' );\n\t\tconst normalMap1 = options.normalMap1 || textureLoader.load( 'textures/water/Water_2_M_Normal.jpg' );\n\n\t\tconst cycle = 0.15; // a cycle of a flow map phase\n\t\tconst halfCycle = cycle * 0.5;\n\t\tconst textureMatrix = new Matrix4();\n\t\tconst clock = new Clock();\n\n\t\t// internal components\n\n\t\tif ( Reflector === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Water: Required component Reflector not found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( Refractor === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Water: Required component Refractor not found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst reflector = new Reflector( geometry, {\n\t\t\ttextureWidth: textureWidth,\n\t\t\ttextureHeight: textureHeight,\n\t\t\tclipBias: clipBias\n\t\t} );\n\n\t\tconst refractor = new Refractor( geometry, {\n\t\t\ttextureWidth: textureWidth,\n\t\t\ttextureHeight: textureHeight,\n\t\t\tclipBias: clipBias\n\t\t} );\n\n\t\treflector.matrixAutoUpdate = false;\n\t\trefractor.matrixAutoUpdate = false;\n\n\t\t// material\n\n\t\tthis.material = new ShaderMaterial( {\n\t\t\tname: shader.name,\n\t\t\tuniforms: UniformsUtils.merge( [\n\t\t\t\tUniformsLib[ 'fog' ],\n\t\t\t\tshader.uniforms\n\t\t\t] ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\ttransparent: true,\n\t\t\tfog: true\n\t\t} );\n\n\t\tif ( flowMap !== undefined ) {\n\n\t\t\tthis.material.defines.USE_FLOWMAP = '';\n\t\t\tthis.material.uniforms[ 'tFlowMap' ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: flowMap\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tthis.material.uniforms[ 'flowDirection' ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: flowDirection\n\t\t\t};\n\n\t\t}\n\n\t\t// maps\n\n\t\tnormalMap0.wrapS = normalMap0.wrapT = RepeatWrapping;\n\t\tnormalMap1.wrapS = normalMap1.wrapT = RepeatWrapping;\n\n\t\tthis.material.uniforms[ 'tReflectionMap' ].value = reflector.getRenderTarget().texture;\n\t\tthis.material.uniforms[ 'tRefractionMap' ].value = refractor.getRenderTarget().texture;\n\t\tthis.material.uniforms[ 'tNormalMap0' ].value = normalMap0;\n\t\tthis.material.uniforms[ 'tNormalMap1' ].value = normalMap1;\n\n\t\t// water\n\n\t\tthis.material.uniforms[ 'color' ].value = color;\n\t\tthis.material.uniforms[ 'reflectivity' ].value = reflectivity;\n\t\tthis.material.uniforms[ 'textureMatrix' ].value = textureMatrix;\n\n\t\t// inital values\n\n\t\tthis.material.uniforms[ 'config' ].value.x = 0; // flowMapOffset0\n\t\tthis.material.uniforms[ 'config' ].value.y = halfCycle; // flowMapOffset1\n\t\tthis.material.uniforms[ 'config' ].value.z = halfCycle; // halfCycle\n\t\tthis.material.uniforms[ 'config' ].value.w = scale; // scale\n\n\t\t// functions\n\n\t\tfunction updateTextureMatrix( camera ) {\n\n\t\t\ttextureMatrix.set(\n\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t);\n\n\t\t\ttextureMatrix.multiply( camera.projectionMatrix );\n\t\t\ttextureMatrix.multiply( camera.matrixWorldInverse );\n\t\t\ttextureMatrix.multiply( scope.matrixWorld );\n\n\t\t}\n\n\t\tfunction updateFlow() {\n\n\t\t\tconst delta = clock.getDelta();\n\t\t\tconst config = scope.material.uniforms[ 'config' ];\n\n\t\t\tconfig.value.x += flowSpeed * delta; // flowMapOffset0\n\t\t\tconfig.value.y = config.value.x + halfCycle; // flowMapOffset1\n\n\t\t\t// Important: The distance between offsets should be always the value of \"halfCycle\".\n\t\t\t// Moreover, both offsets should be in the range of [ 0, cycle ].\n\t\t\t// This approach ensures a smooth water flow and avoids \"reset\" effects.\n\n\t\t\tif ( config.value.x >= cycle ) {\n\n\t\t\t\tconfig.value.x = 0;\n\t\t\t\tconfig.value.y = halfCycle;\n\n\t\t\t} else if ( config.value.y >= cycle ) {\n\n\t\t\t\tconfig.value.y = config.value.y - cycle;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tthis.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\tupdateTextureMatrix( camera );\n\t\t\tupdateFlow();\n\n\t\t\tscope.visible = false;\n\n\t\t\treflector.matrixWorld.copy( scope.matrixWorld );\n\t\t\trefractor.matrixWorld.copy( scope.matrixWorld );\n\n\t\t\treflector.onBeforeRender( renderer, scene, camera );\n\t\t\trefractor.onBeforeRender( renderer, scene, camera );\n\n\t\t\tscope.visible = true;\n\n\t\t};\n\n\t}\n\n}\n\nWater.WaterShader = {\n\n\tname: 'WaterShader',\n\n\tuniforms: {\n\n\t\t'color': {\n\t\t\ttype: 'c',\n\t\t\tvalue: null\n\t\t},\n\n\t\t'reflectivity': {\n\t\t\ttype: 'f',\n\t\t\tvalue: 0\n\t\t},\n\n\t\t'tReflectionMap': {\n\t\t\ttype: 't',\n\t\t\tvalue: null\n\t\t},\n\n\t\t'tRefractionMap': {\n\t\t\ttype: 't',\n\t\t\tvalue: null\n\t\t},\n\n\t\t'tNormalMap0': {\n\t\t\ttype: 't',\n\t\t\tvalue: null\n\t\t},\n\n\t\t'tNormalMap1': {\n\t\t\ttype: 't',\n\t\t\tvalue: null\n\t\t},\n\n\t\t'textureMatrix': {\n\t\t\ttype: 'm4',\n\t\t\tvalue: null\n\t\t},\n\n\t\t'config': {\n\t\t\ttype: 'v4',\n\t\t\tvalue: new Vector4()\n\t\t}\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\t#include \n\t\t#include \n\t\t#include \n\n\t\tuniform mat4 textureMatrix;\n\n\t\tvarying vec4 vCoord;\n\t\tvarying vec2 vUv;\n\t\tvarying vec3 vToEye;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tvCoord = textureMatrix * vec4( position, 1.0 );\n\n\t\t\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\t\t\tvToEye = cameraPosition - worldPosition.xyz;\n\n\t\t\tvec4 mvPosition = viewMatrix * worldPosition; // used in fog_vertex\n\t\t\tgl_Position = projectionMatrix * mvPosition;\n\n\t\t\t#include \n\t\t\t#include \n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\t#include \n\t\t#include \n\t\t#include \n\n\t\tuniform sampler2D tReflectionMap;\n\t\tuniform sampler2D tRefractionMap;\n\t\tuniform sampler2D tNormalMap0;\n\t\tuniform sampler2D tNormalMap1;\n\n\t\t#ifdef USE_FLOWMAP\n\t\t\tuniform sampler2D tFlowMap;\n\t\t#else\n\t\t\tuniform vec2 flowDirection;\n\t\t#endif\n\n\t\tuniform vec3 color;\n\t\tuniform float reflectivity;\n\t\tuniform vec4 config;\n\n\t\tvarying vec4 vCoord;\n\t\tvarying vec2 vUv;\n\t\tvarying vec3 vToEye;\n\n\t\tvoid main() {\n\n\t\t\t#include \n\n\t\t\tfloat flowMapOffset0 = config.x;\n\t\t\tfloat flowMapOffset1 = config.y;\n\t\t\tfloat halfCycle = config.z;\n\t\t\tfloat scale = config.w;\n\n\t\t\tvec3 toEye = normalize( vToEye );\n\n\t\t\t// determine flow direction\n\t\t\tvec2 flow;\n\t\t\t#ifdef USE_FLOWMAP\n\t\t\t\tflow = texture2D( tFlowMap, vUv ).rg * 2.0 - 1.0;\n\t\t\t#else\n\t\t\t\tflow = flowDirection;\n\t\t\t#endif\n\t\t\tflow.x *= - 1.0;\n\n\t\t\t// sample normal maps (distort uvs with flowdata)\n\t\t\tvec4 normalColor0 = texture2D( tNormalMap0, ( vUv * scale ) + flow * flowMapOffset0 );\n\t\t\tvec4 normalColor1 = texture2D( tNormalMap1, ( vUv * scale ) + flow * flowMapOffset1 );\n\n\t\t\t// linear interpolate to get the final normal color\n\t\t\tfloat flowLerp = abs( halfCycle - flowMapOffset0 ) / halfCycle;\n\t\t\tvec4 normalColor = mix( normalColor0, normalColor1, flowLerp );\n\n\t\t\t// calculate normal vector\n\t\t\tvec3 normal = normalize( vec3( normalColor.r * 2.0 - 1.0, normalColor.b, normalColor.g * 2.0 - 1.0 ) );\n\n\t\t\t// calculate the fresnel term to blend reflection and refraction maps\n\t\t\tfloat theta = max( dot( toEye, normal ), 0.0 );\n\t\t\tfloat reflectance = reflectivity + ( 1.0 - reflectivity ) * pow( ( 1.0 - theta ), 5.0 );\n\n\t\t\t// calculate final uv coords\n\t\t\tvec3 coord = vCoord.xyz / vCoord.w;\n\t\t\tvec2 uv = coord.xy + coord.z * normal.xz * 0.05;\n\n\t\t\tvec4 reflectColor = texture2D( tReflectionMap, vec2( 1.0 - uv.x, uv.y ) );\n\t\t\tvec4 refractColor = texture2D( tRefractionMap, uv );\n\n\t\t\t// multiply water color with the mix of both textures\n\t\t\tgl_FragColor = vec4( color, 1.0 ) * mix( refractColor, reflectColor, reflectance );\n\n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\n\t\t}`\n\n};\n\nexport { Water };\n", "async function AmmoPhysics() {\n\n\tif ( 'Ammo' in window === false ) {\n\n\t\tconsole.error( 'AmmoPhysics: Couldn\\'t find Ammo.js' );\n\t\treturn;\n\n\t}\n\n\tconst AmmoLib = await Ammo(); // eslint-disable-line no-undef\n\n\tconst frameRate = 60;\n\n\tconst collisionConfiguration = new AmmoLib.btDefaultCollisionConfiguration();\n\tconst dispatcher = new AmmoLib.btCollisionDispatcher( collisionConfiguration );\n\tconst broadphase = new AmmoLib.btDbvtBroadphase();\n\tconst solver = new AmmoLib.btSequentialImpulseConstraintSolver();\n\tconst world = new AmmoLib.btDiscreteDynamicsWorld( dispatcher, broadphase, solver, collisionConfiguration );\n\tworld.setGravity( new AmmoLib.btVector3( 0, - 9.8, 0 ) );\n\n\tconst worldTransform = new AmmoLib.btTransform();\n\n\t//\n\n\tfunction getShape( geometry ) {\n\n\t\tconst parameters = geometry.parameters;\n\n\t\t// TODO change type to is*\n\n\t\tif ( geometry.type === 'BoxGeometry' ) {\n\n\t\t\tconst sx = parameters.width !== undefined ? parameters.width / 2 : 0.5;\n\t\t\tconst sy = parameters.height !== undefined ? parameters.height / 2 : 0.5;\n\t\t\tconst sz = parameters.depth !== undefined ? parameters.depth / 2 : 0.5;\n\n\t\t\tconst shape = new AmmoLib.btBoxShape( new AmmoLib.btVector3( sx, sy, sz ) );\n\t\t\tshape.setMargin( 0.05 );\n\n\t\t\treturn shape;\n\n\t\t} else if ( geometry.type === 'SphereGeometry' || geometry.type === 'IcosahedronGeometry' ) {\n\n\t\t\tconst radius = parameters.radius !== undefined ? parameters.radius : 1;\n\n\t\t\tconst shape = new AmmoLib.btSphereShape( radius );\n\t\t\tshape.setMargin( 0.05 );\n\n\t\t\treturn shape;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tconst meshes = [];\n\tconst meshMap = new WeakMap();\n\n\tfunction addScene( scene ) {\n\n\t\tscene.traverse( function ( child ) {\n\n\t\t\tif ( child.isMesh ) {\n\n\t\t\t\tconst physics = child.userData.physics;\n\n\t\t\t\tif ( physics ) {\n\n\t\t\t\t\taddMesh( child, physics.mass );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tfunction addMesh( mesh, mass = 0 ) {\n\n\t\tconst shape = getShape( mesh.geometry );\n\n\t\tif ( shape !== null ) {\n\n\t\t\tif ( mesh.isInstancedMesh ) {\n\n\t\t\t\thandleInstancedMesh( mesh, mass, shape );\n\n\t\t\t} else if ( mesh.isMesh ) {\n\n\t\t\t\thandleMesh( mesh, mass, shape );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction handleMesh( mesh, mass, shape ) {\n\n\t\tconst position = mesh.position;\n\t\tconst quaternion = mesh.quaternion;\n\n\t\tconst transform = new AmmoLib.btTransform();\n\t\ttransform.setIdentity();\n\t\ttransform.setOrigin( new AmmoLib.btVector3( position.x, position.y, position.z ) );\n\t\ttransform.setRotation( new AmmoLib.btQuaternion( quaternion.x, quaternion.y, quaternion.z, quaternion.w ) );\n\n\t\tconst motionState = new AmmoLib.btDefaultMotionState( transform );\n\n\t\tconst localInertia = new AmmoLib.btVector3( 0, 0, 0 );\n\t\tshape.calculateLocalInertia( mass, localInertia );\n\n\t\tconst rbInfo = new AmmoLib.btRigidBodyConstructionInfo( mass, motionState, shape, localInertia );\n\n\t\tconst body = new AmmoLib.btRigidBody( rbInfo );\n\t\t// body.setFriction( 4 );\n\t\tworld.addRigidBody( body );\n\n\t\tif ( mass > 0 ) {\n\n\t\t\tmeshes.push( mesh );\n\t\t\tmeshMap.set( mesh, body );\n\n\t\t}\n\n\n\t}\n\n\tfunction handleInstancedMesh( mesh, mass, shape ) {\n\n\t\tconst array = mesh.instanceMatrix.array;\n\n\t\tconst bodies = [];\n\n\t\tfor ( let i = 0; i < mesh.count; i ++ ) {\n\n\t\t\tconst index = i * 16;\n\n\t\t\tconst transform = new AmmoLib.btTransform();\n\t\t\ttransform.setFromOpenGLMatrix( array.slice( index, index + 16 ) );\n\n\t\t\tconst motionState = new AmmoLib.btDefaultMotionState( transform );\n\n\t\t\tconst localInertia = new AmmoLib.btVector3( 0, 0, 0 );\n\t\t\tshape.calculateLocalInertia( mass, localInertia );\n\n\t\t\tconst rbInfo = new AmmoLib.btRigidBodyConstructionInfo( mass, motionState, shape, localInertia );\n\n\t\t\tconst body = new AmmoLib.btRigidBody( rbInfo );\n\t\t\tworld.addRigidBody( body );\n\n\t\t\tbodies.push( body );\n\n\t\t}\n\n\t\tif ( mass > 0 ) {\n\n\t\t\tmeshes.push( mesh );\n\n\t\t\tmeshMap.set( mesh, bodies );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction setMeshPosition( mesh, position, index = 0 ) {\n\n\t\tif ( mesh.isInstancedMesh ) {\n\n\t\t\tconst bodies = meshMap.get( mesh );\n\t\t\tconst body = bodies[ index ];\n\n\t\t\tbody.setAngularVelocity( new AmmoLib.btVector3( 0, 0, 0 ) );\n\t\t\tbody.setLinearVelocity( new AmmoLib.btVector3( 0, 0, 0 ) );\n\n\t\t\tworldTransform.setIdentity();\n\t\t\tworldTransform.setOrigin( new AmmoLib.btVector3( position.x, position.y, position.z ) );\n\t\t\tbody.setWorldTransform( worldTransform );\n\n\t\t} else if ( mesh.isMesh ) {\n\n\t\t\tconst body = meshMap.get( mesh );\n\n\t\t\tbody.setAngularVelocity( new AmmoLib.btVector3( 0, 0, 0 ) );\n\t\t\tbody.setLinearVelocity( new AmmoLib.btVector3( 0, 0, 0 ) );\n\n\t\t\tworldTransform.setIdentity();\n\t\t\tworldTransform.setOrigin( new AmmoLib.btVector3( position.x, position.y, position.z ) );\n\t\t\tbody.setWorldTransform( worldTransform );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tlet lastTime = 0;\n\n\tfunction step() {\n\n\t\tconst time = performance.now();\n\n\t\tif ( lastTime > 0 ) {\n\n\t\t\tconst delta = ( time - lastTime ) / 1000;\n\n\t\t\tworld.stepSimulation( delta, 10 );\n\n\t\t\t//\n\n\t\t\tfor ( let i = 0, l = meshes.length; i < l; i ++ ) {\n\n\t\t\t\tconst mesh = meshes[ i ];\n\n\t\t\t\tif ( mesh.isInstancedMesh ) {\n\n\t\t\t\t\tconst array = mesh.instanceMatrix.array;\n\t\t\t\t\tconst bodies = meshMap.get( mesh );\n\n\t\t\t\t\tfor ( let j = 0; j < bodies.length; j ++ ) {\n\n\t\t\t\t\t\tconst body = bodies[ j ];\n\n\t\t\t\t\t\tconst motionState = body.getMotionState();\n\t\t\t\t\t\tmotionState.getWorldTransform( worldTransform );\n\n\t\t\t\t\t\tconst position = worldTransform.getOrigin();\n\t\t\t\t\t\tconst quaternion = worldTransform.getRotation();\n\n\t\t\t\t\t\tcompose( position, quaternion, array, j * 16 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmesh.instanceMatrix.needsUpdate = true;\n\t\t\t\t\tmesh.computeBoundingSphere();\n\n\t\t\t\t} else if ( mesh.isMesh ) {\n\n\t\t\t\t\tconst body = meshMap.get( mesh );\n\n\t\t\t\t\tconst motionState = body.getMotionState();\n\t\t\t\t\tmotionState.getWorldTransform( worldTransform );\n\n\t\t\t\t\tconst position = worldTransform.getOrigin();\n\t\t\t\t\tconst quaternion = worldTransform.getRotation();\n\t\t\t\t\tmesh.position.set( position.x(), position.y(), position.z() );\n\t\t\t\t\tmesh.quaternion.set( quaternion.x(), quaternion.y(), quaternion.z(), quaternion.w() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tlastTime = time;\n\n\t}\n\n\t// animate\n\n\tsetInterval( step, 1000 / frameRate );\n\n\treturn {\n\t\taddScene: addScene,\n\t\taddMesh: addMesh,\n\t\tsetMeshPosition: setMeshPosition\n\t\t// addCompoundMesh\n\t};\n\n}\n\nfunction compose( position, quaternion, array, index ) {\n\n\tconst x = quaternion.x(), y = quaternion.y(), z = quaternion.z(), w = quaternion.w();\n\tconst x2 = x + x, y2 = y + y, z2 = z + z;\n\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\tarray[ index + 0 ] = ( 1 - ( yy + zz ) );\n\tarray[ index + 1 ] = ( xy + wz );\n\tarray[ index + 2 ] = ( xz - wy );\n\tarray[ index + 3 ] = 0;\n\n\tarray[ index + 4 ] = ( xy - wz );\n\tarray[ index + 5 ] = ( 1 - ( xx + zz ) );\n\tarray[ index + 6 ] = ( yz + wx );\n\tarray[ index + 7 ] = 0;\n\n\tarray[ index + 8 ] = ( xz + wy );\n\tarray[ index + 9 ] = ( yz - wx );\n\tarray[ index + 10 ] = ( 1 - ( xx + yy ) );\n\tarray[ index + 11 ] = 0;\n\n\tarray[ index + 12 ] = position.x();\n\tarray[ index + 13 ] = position.y();\n\tarray[ index + 14 ] = position.z();\n\tarray[ index + 15 ] = 1;\n\n}\n\nexport { AmmoPhysics };\n", "import { Clock, Vector3, Quaternion, Matrix4 } from 'three';\n\nconst RAPIER_PATH = 'https://cdn.skypack.dev/@dimforge/rapier3d-compat@0.12.0';\n\nconst frameRate = 60;\n\nconst _scale = new Vector3( 1, 1, 1 );\nconst ZERO = new Vector3();\n\nlet RAPIER = null;\n\nfunction getShape( geometry ) {\n\n\tconst parameters = geometry.parameters;\n\n\t// TODO change type to is*\n\n\tif ( geometry.type === 'BoxGeometry' ) {\n\n\t\tconst sx = parameters.width !== undefined ? parameters.width / 2 : 0.5;\n\t\tconst sy = parameters.height !== undefined ? parameters.height / 2 : 0.5;\n\t\tconst sz = parameters.depth !== undefined ? parameters.depth / 2 : 0.5;\n\n\t\treturn RAPIER.ColliderDesc.cuboid( sx, sy, sz );\n\n\t} else if ( geometry.type === 'SphereGeometry' || geometry.type === 'IcosahedronGeometry' ) {\n\n\t\tconst radius = parameters.radius !== undefined ? parameters.radius : 1;\n\t\treturn RAPIER.ColliderDesc.ball( radius );\n\n\t}\n\n\treturn null;\n\n}\n\nasync function RapierPhysics() {\n\n\tif ( RAPIER === null ) {\n\n\t\tRAPIER = await import( RAPIER_PATH );\n\t\tawait RAPIER.init();\n\n\t}\n\n\t// Docs: https://rapier.rs/docs/api/javascript/JavaScript3D/\n\n\tconst gravity = new Vector3( 0.0, - 9.81, 0.0 );\n\tconst world = new RAPIER.World( gravity );\n\n\tconst meshes = [];\n\tconst meshMap = new WeakMap();\n\n\tconst _vector = new Vector3();\n\tconst _quaternion = new Quaternion();\n\tconst _matrix = new Matrix4();\n\n\tfunction addScene( scene ) {\n\n\t\tscene.traverse( function ( child ) {\n\n\t\t\tif ( child.isMesh ) {\n\n\t\t\t\tconst physics = child.userData.physics;\n\n\t\t\t\tif ( physics ) {\n\n\t\t\t\t\taddMesh( child, physics.mass, physics.restitution );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tfunction addMesh( mesh, mass = 0, restitution = 0 ) {\n\n\t\tconst shape = getShape( mesh.geometry );\n\n\t\tif ( shape === null ) return;\n\n\t\tshape.setMass( mass );\n\t\tshape.setRestitution( restitution );\n\n\t\tconst body = mesh.isInstancedMesh\n\t\t\t\t\t\t\t? createInstancedBody( mesh, mass, shape )\n\t\t\t\t\t\t\t: createBody( mesh.position, mesh.quaternion, mass, shape );\n\n\t\tif ( mass > 0 ) {\n\n\t\t\tmeshes.push( mesh );\n\t\t\tmeshMap.set( mesh, body );\n\n\t\t}\n\n\t}\n\n\tfunction createInstancedBody( mesh, mass, shape ) {\n\n\t\tconst array = mesh.instanceMatrix.array;\n\n\t\tconst bodies = [];\n\n\t\tfor ( let i = 0; i < mesh.count; i ++ ) {\n\n\t\t\tconst position = _vector.fromArray( array, i * 16 + 12 );\n\t\t\tbodies.push( createBody( position, null, mass, shape ) );\n\n\t\t}\n\n\t\treturn bodies;\n\n\t}\n\n\tfunction createBody( position, quaternion, mass, shape ) {\n\n\t\tconst desc = mass > 0 ? RAPIER.RigidBodyDesc.dynamic() : RAPIER.RigidBodyDesc.fixed();\n\t\tdesc.setTranslation( ...position );\n\t\tif ( quaternion !== null ) desc.setRotation( quaternion );\n\n\t\tconst body = world.createRigidBody( desc );\n\t\tworld.createCollider( shape, body );\n\n\t\treturn body;\n\n\t}\n\n\tfunction setMeshPosition( mesh, position, index = 0 ) {\n\n\t\tlet body = meshMap.get( mesh );\n\n\t\tif ( mesh.isInstancedMesh ) {\n\n\t\t\tbody = body[ index ];\n\n\t\t}\n\n\t\tbody.setAngvel( ZERO );\n\t\tbody.setLinvel( ZERO );\n\t\tbody.setTranslation( position );\n\n\t}\n\n\tfunction setMeshVelocity( mesh, velocity, index = 0 ) {\n\n\t\tlet body = meshMap.get( mesh );\n\n\t\tif ( mesh.isInstancedMesh ) {\n\n\t\t\tbody = body[ index ];\n\n\t\t}\n\n\t\tbody.setLinvel( velocity );\n\n\t}\n\n\t//\n\n\tconst clock = new Clock();\n\n\tfunction step() {\n\n\t\tworld.timestep = clock.getDelta();\n\t\tworld.step();\n\n\t\t//\n\n\t\tfor ( let i = 0, l = meshes.length; i < l; i ++ ) {\n\n\t\t\tconst mesh = meshes[ i ];\n\n\t\t\tif ( mesh.isInstancedMesh ) {\n\n\t\t\t\tconst array = mesh.instanceMatrix.array;\n\t\t\t\tconst bodies = meshMap.get( mesh );\n\n\t\t\t\tfor ( let j = 0; j < bodies.length; j ++ ) {\n\n\t\t\t\t\tconst body = bodies[ j ];\n\n\t\t\t\t\tconst position = body.translation();\n\t\t\t\t\t_quaternion.copy( body.rotation() );\n\n\t\t\t\t\t_matrix.compose( position, _quaternion, _scale ).toArray( array, j * 16 );\n\n\t\t\t\t}\n\n\t\t\t\tmesh.instanceMatrix.needsUpdate = true;\n\t\t\t\tmesh.computeBoundingSphere();\n\n\t\t\t} else {\n\n\t\t\t\tconst body = meshMap.get( mesh );\n\n\t\t\t\tmesh.position.copy( body.translation() );\n\t\t\t\tmesh.quaternion.copy( body.rotation() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// animate\n\n\tsetInterval( step, 1000 / frameRate );\n\n\treturn {\n\t\taddScene: addScene,\n\t\taddMesh: addMesh,\n\t\tsetMeshPosition: setMeshPosition,\n\t\tsetMeshVelocity: setMeshVelocity\n\t};\n\n}\n\nexport { RapierPhysics };\n", "/**\n * Afterimage shader\n * I created this effect inspired by a demo on codepen:\n * https://codepen.io/brunoimbrizi/pen/MoRJaN?page=1&\n */\n\nconst AfterimageShader = {\n\n\tname: 'AfterimageShader',\n\n\tuniforms: {\n\n\t\t'damp': { value: 0.96 },\n\t\t'tOld': { value: null },\n\t\t'tNew': { value: null }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float damp;\n\n\t\tuniform sampler2D tOld;\n\t\tuniform sampler2D tNew;\n\n\t\tvarying vec2 vUv;\n\n\t\tvec4 when_gt( vec4 x, float y ) {\n\n\t\t\treturn max( sign( x - y ), 0.0 );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvec4 texelOld = texture2D( tOld, vUv );\n\t\t\tvec4 texelNew = texture2D( tNew, vUv );\n\n\t\t\ttexelOld *= damp * when_gt( texelOld, 0.1 );\n\n\t\t\tgl_FragColor = max(texelNew, texelOld);\n\n\t\t}`\n\n};\n\nexport { AfterimageShader };\n", "import {\n\tHalfFloatType,\n\tMeshBasicMaterial,\n\tNearestFilter,\n\tShaderMaterial,\n\tUniformsUtils,\n\tWebGLRenderTarget\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { AfterimageShader } from '../shaders/AfterimageShader.js';\n\nclass AfterimagePass extends Pass {\n\n\tconstructor( damp = 0.96 ) {\n\n\t\tsuper();\n\n\t\tthis.shader = AfterimageShader;\n\n\t\tthis.uniforms = UniformsUtils.clone( this.shader.uniforms );\n\n\t\tthis.uniforms[ 'damp' ].value = damp;\n\n\t\tthis.textureComp = new WebGLRenderTarget( window.innerWidth, window.innerHeight, {\n\t\t\tmagFilter: NearestFilter,\n\t\t\ttype: HalfFloatType\n\t\t} );\n\n\t\tthis.textureOld = new WebGLRenderTarget( window.innerWidth, window.innerHeight, {\n\t\t\tmagFilter: NearestFilter,\n\t\t\ttype: HalfFloatType\n\t\t} );\n\n\t\tthis.compFsMaterial = new ShaderMaterial( {\n\n\t\t\tuniforms: this.uniforms,\n\t\t\tvertexShader: this.shader.vertexShader,\n\t\t\tfragmentShader: this.shader.fragmentShader\n\n\t\t} );\n\n\t\tthis.compFsQuad = new FullScreenQuad( this.compFsMaterial );\n\n\t\tthis.copyFsMaterial = new MeshBasicMaterial();\n\t\tthis.copyFsQuad = new FullScreenQuad( this.copyFsMaterial );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive*/ ) {\n\n\t\tthis.uniforms[ 'tOld' ].value = this.textureOld.texture;\n\t\tthis.uniforms[ 'tNew' ].value = readBuffer.texture;\n\n\t\trenderer.setRenderTarget( this.textureComp );\n\t\tthis.compFsQuad.render( renderer );\n\n\t\tthis.copyFsQuad.material.map = this.textureComp.texture;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.copyFsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\n\t\t\tif ( this.clear ) renderer.clear();\n\n\t\t\tthis.copyFsQuad.render( renderer );\n\n\t\t}\n\n\t\t// Swap buffers.\n\t\tconst temp = this.textureOld;\n\t\tthis.textureOld = this.textureComp;\n\t\tthis.textureComp = temp;\n\t\t// Now textureOld contains the latest image, ready for the next frame.\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis.textureComp.setSize( width, height );\n\t\tthis.textureOld.setSize( width, height );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.textureComp.dispose();\n\t\tthis.textureOld.dispose();\n\n\t\tthis.compFsMaterial.dispose();\n\t\tthis.copyFsMaterial.dispose();\n\n\t\tthis.compFsQuad.dispose();\n\t\tthis.copyFsQuad.dispose();\n\n\t}\n\n}\n\nexport { AfterimagePass };\n", "import {\n\tVector2\n} from 'three';\n\n/**\n * Convolution shader\n * ported from o3d sample to WebGL / GLSL\n */\n\nconst ConvolutionShader = {\n\n\tname: 'ConvolutionShader',\n\n\tdefines: {\n\n\t\t'KERNEL_SIZE_FLOAT': '25.0',\n\t\t'KERNEL_SIZE_INT': '25'\n\n\t},\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'uImageIncrement': { value: new Vector2( 0.001953125, 0.0 ) },\n\t\t'cKernel': { value: [] }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tuniform vec2 uImageIncrement;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv - ( ( KERNEL_SIZE_FLOAT - 1.0 ) / 2.0 ) * uImageIncrement;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float cKernel[ KERNEL_SIZE_INT ];\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform vec2 uImageIncrement;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec2 imageCoord = vUv;\n\t\t\tvec4 sum = vec4( 0.0, 0.0, 0.0, 0.0 );\n\n\t\t\tfor( int i = 0; i < KERNEL_SIZE_INT; i ++ ) {\n\n\t\t\t\tsum += texture2D( tDiffuse, imageCoord ) * cKernel[ i ];\n\t\t\t\timageCoord += uImageIncrement;\n\n\t\t\t}\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}`,\n\n\tbuildKernel: function ( sigma ) {\n\n\t\t// We lop off the sqrt(2 * pi) * sigma term, since we're going to normalize anyway.\n\n\t\tconst kMaxKernelSize = 25;\n\t\tlet kernelSize = 2 * Math.ceil( sigma * 3.0 ) + 1;\n\n\t\tif ( kernelSize > kMaxKernelSize ) kernelSize = kMaxKernelSize;\n\n\t\tconst halfWidth = ( kernelSize - 1 ) * 0.5;\n\n\t\tconst values = new Array( kernelSize );\n\t\tlet sum = 0.0;\n\t\tfor ( let i = 0; i < kernelSize; ++ i ) {\n\n\t\t\tvalues[ i ] = gauss( i - halfWidth, sigma );\n\t\t\tsum += values[ i ];\n\n\t\t}\n\n\t\t// normalize the kernel\n\n\t\tfor ( let i = 0; i < kernelSize; ++ i ) values[ i ] /= sum;\n\n\t\treturn values;\n\n\t}\n\n};\n\nfunction gauss( x, sigma ) {\n\n\treturn Math.exp( - ( x * x ) / ( 2.0 * sigma * sigma ) );\n\n}\n\nexport { ConvolutionShader };\n", "import {\n\tAdditiveBlending,\n\tHalfFloatType,\n\tShaderMaterial,\n\tUniformsUtils,\n\tVector2,\n\tWebGLRenderTarget\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { ConvolutionShader } from '../shaders/ConvolutionShader.js';\n\nclass BloomPass extends Pass {\n\n\tconstructor( strength = 1, kernelSize = 25, sigma = 4 ) {\n\n\t\tsuper();\n\n\t\t// render targets\n\n\t\tthis.renderTargetX = new WebGLRenderTarget( 1, 1, { type: HalfFloatType } ); // will be resized later\n\t\tthis.renderTargetX.texture.name = 'BloomPass.x';\n\t\tthis.renderTargetY = new WebGLRenderTarget( 1, 1, { type: HalfFloatType } ); // will be resized later\n\t\tthis.renderTargetY.texture.name = 'BloomPass.y';\n\n\t\t// combine material\n\n\t\tthis.combineUniforms = UniformsUtils.clone( CombineShader.uniforms );\n\n\t\tthis.combineUniforms[ 'strength' ].value = strength;\n\n\t\tthis.materialCombine = new ShaderMaterial( {\n\n\t\t\tname: CombineShader.name,\n\t\t\tuniforms: this.combineUniforms,\n\t\t\tvertexShader: CombineShader.vertexShader,\n\t\t\tfragmentShader: CombineShader.fragmentShader,\n\t\t\tblending: AdditiveBlending,\n\t\t\ttransparent: true\n\n\t\t} );\n\n\t\t// convolution material\n\n\t\tconst convolutionShader = ConvolutionShader;\n\n\t\tthis.convolutionUniforms = UniformsUtils.clone( convolutionShader.uniforms );\n\n\t\tthis.convolutionUniforms[ 'uImageIncrement' ].value = BloomPass.blurX;\n\t\tthis.convolutionUniforms[ 'cKernel' ].value = ConvolutionShader.buildKernel( sigma );\n\n\t\tthis.materialConvolution = new ShaderMaterial( {\n\n\t\t\tname: convolutionShader.name,\n\t\t\tuniforms: this.convolutionUniforms,\n\t\t\tvertexShader: convolutionShader.vertexShader,\n\t\t\tfragmentShader: convolutionShader.fragmentShader,\n\t\t\tdefines: {\n\t\t\t\t'KERNEL_SIZE_FLOAT': kernelSize.toFixed( 1 ),\n\t\t\t\t'KERNEL_SIZE_INT': kernelSize.toFixed( 0 )\n\t\t\t}\n\n\t\t} );\n\n\t\tthis.needsSwap = false;\n\n\t\tthis.fsQuad = new FullScreenQuad( null );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer, deltaTime, maskActive ) {\n\n\t\tif ( maskActive ) renderer.state.buffers.stencil.setTest( false );\n\n\t\t// Render quad with blured scene into texture (convolution pass 1)\n\n\t\tthis.fsQuad.material = this.materialConvolution;\n\n\t\tthis.convolutionUniforms[ 'tDiffuse' ].value = readBuffer.texture;\n\t\tthis.convolutionUniforms[ 'uImageIncrement' ].value = BloomPass.blurX;\n\n\t\trenderer.setRenderTarget( this.renderTargetX );\n\t\trenderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\n\t\t// Render quad with blured scene into texture (convolution pass 2)\n\n\t\tthis.convolutionUniforms[ 'tDiffuse' ].value = this.renderTargetX.texture;\n\t\tthis.convolutionUniforms[ 'uImageIncrement' ].value = BloomPass.blurY;\n\n\t\trenderer.setRenderTarget( this.renderTargetY );\n\t\trenderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// Render original scene with superimposed blur to texture\n\n\t\tthis.fsQuad.material = this.materialCombine;\n\n\t\tthis.combineUniforms[ 'tDiffuse' ].value = this.renderTargetY.texture;\n\n\t\tif ( maskActive ) renderer.state.buffers.stencil.setTest( true );\n\n\t\trenderer.setRenderTarget( readBuffer );\n\t\tif ( this.clear ) renderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis.renderTargetX.setSize( width, height );\n\t\tthis.renderTargetY.setSize( width, height );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.renderTargetX.dispose();\n\t\tthis.renderTargetY.dispose();\n\n\t\tthis.materialCombine.dispose();\n\t\tthis.materialConvolution.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nconst CombineShader = {\n\n\tname: 'CombineShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'strength': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float strength;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor = strength * texel;\n\n\t\t}`\n\n};\n\nBloomPass.blurX = new Vector2( 0.001953125, 0.0 );\nBloomPass.blurY = new Vector2( 0.0, 0.001953125 );\n\nexport { BloomPass };\n", "/**\n * Depth-of-field shader with bokeh\n * ported from GLSL shader by Martins Upitis\n * http://artmartinsh.blogspot.com/2010/02/glsl-lens-blur-filter-with-bokeh.html\n */\n\nconst BokehShader = {\n\n\tname: 'BokehShader',\n\n\tdefines: {\n\t\t'DEPTH_PACKING': 1,\n\t\t'PERSPECTIVE_CAMERA': 1,\n\t},\n\n\tuniforms: {\n\n\t\t'tColor': { value: null },\n\t\t'tDepth': { value: null },\n\t\t'focus': { value: 1.0 },\n\t\t'aspect': { value: 1.0 },\n\t\t'aperture': { value: 0.025 },\n\t\t'maxblur': { value: 0.01 },\n\t\t'nearClip': { value: 1.0 },\n\t\t'farClip': { value: 1000.0 },\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\t#include \n\n\t\tvarying vec2 vUv;\n\n\t\tuniform sampler2D tColor;\n\t\tuniform sampler2D tDepth;\n\n\t\tuniform float maxblur; // max blur amount\n\t\tuniform float aperture; // aperture - bigger values for shallower depth of field\n\n\t\tuniform float nearClip;\n\t\tuniform float farClip;\n\n\t\tuniform float focus;\n\t\tuniform float aspect;\n\n\t\t#include \n\n\t\tfloat getDepth( const in vec2 screenPosition ) {\n\t\t\t#if DEPTH_PACKING == 1\n\t\t\treturn unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );\n\t\t\t#else\n\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\t\t\t#endif\n\t\t}\n\n\t\tfloat getViewZ( const in float depth ) {\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\t\t\treturn perspectiveDepthToViewZ( depth, nearClip, farClip );\n\t\t\t#else\n\t\t\treturn orthographicDepthToViewZ( depth, nearClip, farClip );\n\t\t\t#endif\n\t\t}\n\n\n\t\tvoid main() {\n\n\t\t\tvec2 aspectcorrect = vec2( 1.0, aspect );\n\n\t\t\tfloat viewZ = getViewZ( getDepth( vUv ) );\n\n\t\t\tfloat factor = ( focus + viewZ ); // viewZ is <= 0, so this is a difference equation\n\n\t\t\tvec2 dofblur = vec2 ( clamp( factor * aperture, -maxblur, maxblur ) );\n\n\t\t\tvec2 dofblur9 = dofblur * 0.9;\n\t\t\tvec2 dofblur7 = dofblur * 0.7;\n\t\t\tvec2 dofblur4 = dofblur * 0.4;\n\n\t\t\tvec4 col = vec4( 0.0 );\n\n\t\t\tcol += texture2D( tColor, vUv.xy );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, 0.37 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, 0.15 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.40, 0.0 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, -0.15 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, -0.37 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, 0.37 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, 0.15 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, -0.15 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, -0.37 ) * aspectcorrect ) * dofblur );\n\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, 0.37 ) * aspectcorrect ) * dofblur9 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, 0.15 ) * aspectcorrect ) * dofblur9 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, -0.15 ) * aspectcorrect ) * dofblur9 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, -0.37 ) * aspectcorrect ) * dofblur9 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, 0.37 ) * aspectcorrect ) * dofblur9 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, 0.15 ) * aspectcorrect ) * dofblur9 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, -0.15 ) * aspectcorrect ) * dofblur9 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, -0.37 ) * aspectcorrect ) * dofblur9 );\n\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur7 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.40, 0.0 ) * aspectcorrect ) * dofblur7 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur7 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur7 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur7 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur7 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur7 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur7 );\n\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur4 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.4, 0.0 ) * aspectcorrect ) * dofblur4 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur4 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur4 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur4 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur4 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur4 );\n\t\t\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur4 );\n\n\t\t\tgl_FragColor = col / 41.0;\n\t\t\tgl_FragColor.a = 1.0;\n\n\t\t}`\n\n};\n\nexport { BokehShader };\n", "import {\n\tColor,\n\tHalfFloatType,\n\tMeshDepthMaterial,\n\tNearestFilter,\n\tNoBlending,\n\tRGBADepthPacking,\n\tShaderMaterial,\n\tUniformsUtils,\n\tWebGLRenderTarget\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { BokehShader } from '../shaders/BokehShader.js';\n\n/**\n * Depth-of-field post-process with bokeh shader\n */\n\nclass BokehPass extends Pass {\n\n\tconstructor( scene, camera, params ) {\n\n\t\tsuper();\n\n\t\tthis.scene = scene;\n\t\tthis.camera = camera;\n\n\t\tconst focus = ( params.focus !== undefined ) ? params.focus : 1.0;\n\t\tconst aperture = ( params.aperture !== undefined ) ? params.aperture : 0.025;\n\t\tconst maxblur = ( params.maxblur !== undefined ) ? params.maxblur : 1.0;\n\n\t\t// render targets\n\n\t\tthis.renderTargetDepth = new WebGLRenderTarget( 1, 1, { // will be resized later\n\t\t\tminFilter: NearestFilter,\n\t\t\tmagFilter: NearestFilter,\n\t\t\ttype: HalfFloatType\n\t\t} );\n\n\t\tthis.renderTargetDepth.texture.name = 'BokehPass.depth';\n\n\t\t// depth material\n\n\t\tthis.materialDepth = new MeshDepthMaterial();\n\t\tthis.materialDepth.depthPacking = RGBADepthPacking;\n\t\tthis.materialDepth.blending = NoBlending;\n\n\t\t// bokeh material\n\n\t\tconst bokehShader = BokehShader;\n\t\tconst bokehUniforms = UniformsUtils.clone( bokehShader.uniforms );\n\n\t\tbokehUniforms[ 'tDepth' ].value = this.renderTargetDepth.texture;\n\n\t\tbokehUniforms[ 'focus' ].value = focus;\n\t\tbokehUniforms[ 'aspect' ].value = camera.aspect;\n\t\tbokehUniforms[ 'aperture' ].value = aperture;\n\t\tbokehUniforms[ 'maxblur' ].value = maxblur;\n\t\tbokehUniforms[ 'nearClip' ].value = camera.near;\n\t\tbokehUniforms[ 'farClip' ].value = camera.far;\n\n\t\tthis.materialBokeh = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, bokehShader.defines ),\n\t\t\tuniforms: bokehUniforms,\n\t\t\tvertexShader: bokehShader.vertexShader,\n\t\t\tfragmentShader: bokehShader.fragmentShader\n\t\t} );\n\n\t\tthis.uniforms = bokehUniforms;\n\n\t\tthis.fsQuad = new FullScreenQuad( this.materialBokeh );\n\n\t\tthis._oldClearColor = new Color();\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive*/ ) {\n\n\t\t// Render depth into texture\n\n\t\tthis.scene.overrideMaterial = this.materialDepth;\n\n\t\trenderer.getClearColor( this._oldClearColor );\n\t\tconst oldClearAlpha = renderer.getClearAlpha();\n\t\tconst oldAutoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\trenderer.setClearColor( 0xffffff );\n\t\trenderer.setClearAlpha( 1.0 );\n\t\trenderer.setRenderTarget( this.renderTargetDepth );\n\t\trenderer.clear();\n\t\trenderer.render( this.scene, this.camera );\n\n\t\t// Render bokeh composite\n\n\t\tthis.uniforms[ 'tColor' ].value = readBuffer.texture;\n\t\tthis.uniforms[ 'nearClip' ].value = this.camera.near;\n\t\tthis.uniforms[ 'farClip' ].value = this.camera.far;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t\tthis.scene.overrideMaterial = null;\n\t\trenderer.setClearColor( this._oldClearColor );\n\t\trenderer.setClearAlpha( oldClearAlpha );\n\t\trenderer.autoClear = oldAutoClear;\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis.materialBokeh.uniforms[ 'aspect' ].value = width / height;\n\n\t\tthis.renderTargetDepth.setSize( width, height );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.renderTargetDepth.dispose();\n\n\t\tthis.materialDepth.dispose();\n\t\tthis.materialBokeh.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nexport { BokehPass };\n", "import {\n\tColor\n} from 'three';\nimport { Pass } from './Pass.js';\n\nclass ClearPass extends Pass {\n\n\tconstructor( clearColor, clearAlpha ) {\n\n\t\tsuper();\n\n\t\tthis.needsSwap = false;\n\n\t\tthis.clearColor = ( clearColor !== undefined ) ? clearColor : 0x000000;\n\t\tthis.clearAlpha = ( clearAlpha !== undefined ) ? clearAlpha : 0;\n\t\tthis._oldClearColor = new Color();\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tlet oldClearAlpha;\n\n\t\tif ( this.clearColor ) {\n\n\t\t\trenderer.getClearColor( this._oldClearColor );\n\t\t\toldClearAlpha = renderer.getClearAlpha();\n\n\t\t\trenderer.setClearColor( this.clearColor, this.clearAlpha );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( this.renderToScreen ? null : readBuffer );\n\t\trenderer.clear();\n\n\t\tif ( this.clearColor ) {\n\n\t\t\trenderer.setClearColor( this._oldClearColor, oldClearAlpha );\n\n\t\t}\n\n\t}\n\n}\n\nexport { ClearPass };\n", "import {\n\tBackSide,\n\tBoxGeometry,\n\tMesh,\n\tPerspectiveCamera,\n\tScene,\n\tShaderLib,\n\tShaderMaterial,\n\tUniformsUtils\n} from 'three';\nimport { Pass } from './Pass.js';\n\nclass CubeTexturePass extends Pass {\n\n\tconstructor( camera, tCube, opacity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.camera = camera;\n\n\t\tthis.needsSwap = false;\n\n\t\tthis.cubeShader = ShaderLib[ 'cube' ];\n\t\tthis.cubeMesh = new Mesh(\n\t\t\tnew BoxGeometry( 10, 10, 10 ),\n\t\t\tnew ShaderMaterial( {\n\t\t\t\tuniforms: UniformsUtils.clone( this.cubeShader.uniforms ),\n\t\t\t\tvertexShader: this.cubeShader.vertexShader,\n\t\t\t\tfragmentShader: this.cubeShader.fragmentShader,\n\t\t\t\tdepthTest: false,\n\t\t\t\tdepthWrite: false,\n\t\t\t\tside: BackSide\n\t\t\t} )\n\t\t);\n\n\t\tObject.defineProperty( this.cubeMesh.material, 'envMap', {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this.uniforms.tCube.value;\n\n\t\t\t}\n\n\t\t} );\n\n\t\tthis.tCube = tCube;\n\t\tthis.opacity = opacity;\n\n\t\tthis.cubeScene = new Scene();\n\t\tthis.cubeCamera = new PerspectiveCamera();\n\t\tthis.cubeScene.add( this.cubeMesh );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive*/ ) {\n\n\t\tconst oldAutoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tthis.cubeCamera.projectionMatrix.copy( this.camera.projectionMatrix );\n\t\tthis.cubeCamera.quaternion.setFromRotationMatrix( this.camera.matrixWorld );\n\n\t\tthis.cubeMesh.material.uniforms.tCube.value = this.tCube;\n\t\tthis.cubeMesh.material.uniforms.tFlip.value = ( this.tCube.isCubeTexture && this.tCube.isRenderTargetTexture === false ) ? - 1 : 1;\n\t\tthis.cubeMesh.material.uniforms.opacity.value = this.opacity;\n\t\tthis.cubeMesh.material.transparent = ( this.opacity < 1.0 );\n\n\t\trenderer.setRenderTarget( this.renderToScreen ? null : readBuffer );\n\t\tif ( this.clear ) renderer.clear();\n\t\trenderer.render( this.cubeScene, this.cubeCamera );\n\n\t\trenderer.autoClear = oldAutoClear;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cubeMesh.geometry.dispose();\n\t\tthis.cubeMesh.material.dispose();\n\n\t}\n\n}\n\nexport { CubeTexturePass };\n", "import {\n\tVector2\n} from 'three';\n\n/**\n * Dot screen shader\n * based on glfx.js sepia shader\n * https://github.com/evanw/glfx.js\n */\n\nconst DotScreenShader = {\n\n\tname: 'DotScreenShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'tSize': { value: new Vector2( 256, 256 ) },\n\t\t'center': { value: new Vector2( 0.5, 0.5 ) },\n\t\t'angle': { value: 1.57 },\n\t\t'scale': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform vec2 center;\n\t\tuniform float angle;\n\t\tuniform float scale;\n\t\tuniform vec2 tSize;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tfloat pattern() {\n\n\t\t\tfloat s = sin( angle ), c = cos( angle );\n\n\t\t\tvec2 tex = vUv * tSize - center;\n\t\t\tvec2 point = vec2( c * tex.x - s * tex.y, s * tex.x + c * tex.y ) * scale;\n\n\t\t\treturn ( sin( point.x ) * sin( point.y ) ) * 4.0;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvec4 color = texture2D( tDiffuse, vUv );\n\n\t\t\tfloat average = ( color.r + color.g + color.b ) / 3.0;\n\n\t\t\tgl_FragColor = vec4( vec3( average * 10.0 - 5.0 + pattern() ), color.a );\n\n\t\t}`\n\n};\n\nexport { DotScreenShader };\n", "import {\n\tShaderMaterial,\n\tUniformsUtils\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { DotScreenShader } from '../shaders/DotScreenShader.js';\n\nclass DotScreenPass extends Pass {\n\n\tconstructor( center, angle, scale ) {\n\n\t\tsuper();\n\n\t\tconst shader = DotScreenShader;\n\n\t\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\tif ( center !== undefined ) this.uniforms[ 'center' ].value.copy( center );\n\t\tif ( angle !== undefined ) this.uniforms[ 'angle' ].value = angle;\n\t\tif ( scale !== undefined ) this.uniforms[ 'scale' ].value = scale;\n\n\t\tthis.material = new ShaderMaterial( {\n\n\t\t\tname: shader.name,\n\t\t\tuniforms: this.uniforms,\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader\n\n\t\t} );\n\n\t\tthis.fsQuad = new FullScreenQuad( this.material );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tthis.uniforms[ 'tDiffuse' ].value = readBuffer.texture;\n\t\tthis.uniforms[ 'tSize' ].value.set( readBuffer.width, readBuffer.height );\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\tif ( this.clear ) renderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tthis.material.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nexport { DotScreenPass };\n", "/**\n * Full-screen textured quad shader\n */\n\nconst CopyShader = {\n\n\tname: 'CopyShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'opacity': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor = opacity * texel;\n\n\n\t\t}`\n\n};\n\nexport { CopyShader };\n", "import {\n\tShaderMaterial,\n\tUniformsUtils\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\n\nclass ShaderPass extends Pass {\n\n\tconstructor( shader, textureID ) {\n\n\t\tsuper();\n\n\t\tthis.textureID = ( textureID !== undefined ) ? textureID : 'tDiffuse';\n\n\t\tif ( shader instanceof ShaderMaterial ) {\n\n\t\t\tthis.uniforms = shader.uniforms;\n\n\t\t\tthis.material = shader;\n\n\t\t} else if ( shader ) {\n\n\t\t\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t\tthis.material = new ShaderMaterial( {\n\n\t\t\t\tname: ( shader.name !== undefined ) ? shader.name : 'unspecified',\n\t\t\t\tdefines: Object.assign( {}, shader.defines ),\n\t\t\t\tuniforms: this.uniforms,\n\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\tfragmentShader: shader.fragmentShader\n\n\t\t\t} );\n\n\t\t}\n\n\t\tthis.fsQuad = new FullScreenQuad( this.material );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tif ( this.uniforms[ this.textureID ] ) {\n\n\t\t\tthis.uniforms[ this.textureID ].value = readBuffer.texture;\n\n\t\t}\n\n\t\tthis.fsQuad.material = this.material;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\t// TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n\t\t\tif ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tthis.material.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nexport { ShaderPass };\n", "import { Pass } from './Pass.js';\n\nclass MaskPass extends Pass {\n\n\tconstructor( scene, camera ) {\n\n\t\tsuper();\n\n\t\tthis.scene = scene;\n\t\tthis.camera = camera;\n\n\t\tthis.clear = true;\n\t\tthis.needsSwap = false;\n\n\t\tthis.inverse = false;\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tconst context = renderer.getContext();\n\t\tconst state = renderer.state;\n\n\t\t// don't update color or depth\n\n\t\tstate.buffers.color.setMask( false );\n\t\tstate.buffers.depth.setMask( false );\n\n\t\t// lock buffers\n\n\t\tstate.buffers.color.setLocked( true );\n\t\tstate.buffers.depth.setLocked( true );\n\n\t\t// set up stencil\n\n\t\tlet writeValue, clearValue;\n\n\t\tif ( this.inverse ) {\n\n\t\t\twriteValue = 0;\n\t\t\tclearValue = 1;\n\n\t\t} else {\n\n\t\t\twriteValue = 1;\n\t\t\tclearValue = 0;\n\n\t\t}\n\n\t\tstate.buffers.stencil.setTest( true );\n\t\tstate.buffers.stencil.setOp( context.REPLACE, context.REPLACE, context.REPLACE );\n\t\tstate.buffers.stencil.setFunc( context.ALWAYS, writeValue, 0xffffffff );\n\t\tstate.buffers.stencil.setClear( clearValue );\n\t\tstate.buffers.stencil.setLocked( true );\n\n\t\t// draw into the stencil buffer\n\n\t\trenderer.setRenderTarget( readBuffer );\n\t\tif ( this.clear ) renderer.clear();\n\t\trenderer.render( this.scene, this.camera );\n\n\t\trenderer.setRenderTarget( writeBuffer );\n\t\tif ( this.clear ) renderer.clear();\n\t\trenderer.render( this.scene, this.camera );\n\n\t\t// unlock color and depth buffer and make them writable for subsequent rendering/clearing\n\n\t\tstate.buffers.color.setLocked( false );\n\t\tstate.buffers.depth.setLocked( false );\n\n\t\tstate.buffers.color.setMask( true );\n\t\tstate.buffers.depth.setMask( true );\n\n\t\t// only render where stencil is set to 1\n\n\t\tstate.buffers.stencil.setLocked( false );\n\t\tstate.buffers.stencil.setFunc( context.EQUAL, 1, 0xffffffff ); // draw if == 1\n\t\tstate.buffers.stencil.setOp( context.KEEP, context.KEEP, context.KEEP );\n\t\tstate.buffers.stencil.setLocked( true );\n\n\t}\n\n}\n\nclass ClearMaskPass extends Pass {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.needsSwap = false;\n\n\t}\n\n\trender( renderer /*, writeBuffer, readBuffer, deltaTime, maskActive */ ) {\n\n\t\trenderer.state.buffers.stencil.setLocked( false );\n\t\trenderer.state.buffers.stencil.setTest( false );\n\n\t}\n\n}\n\nexport { MaskPass, ClearMaskPass };\n", "import {\n\tClock,\n\tHalfFloatType,\n\tNoBlending,\n\tVector2,\n\tWebGLRenderTarget\n} from 'three';\nimport { CopyShader } from '../shaders/CopyShader.js';\nimport { ShaderPass } from './ShaderPass.js';\nimport { MaskPass } from './MaskPass.js';\nimport { ClearMaskPass } from './MaskPass.js';\n\nclass EffectComposer {\n\n\tconstructor( renderer, renderTarget ) {\n\n\t\tthis.renderer = renderer;\n\n\t\tthis._pixelRatio = renderer.getPixelRatio();\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\tconst size = renderer.getSize( new Vector2() );\n\t\t\tthis._width = size.width;\n\t\t\tthis._height = size.height;\n\n\t\t\trenderTarget = new WebGLRenderTarget( this._width * this._pixelRatio, this._height * this._pixelRatio, { type: HalfFloatType } );\n\t\t\trenderTarget.texture.name = 'EffectComposer.rt1';\n\n\t\t} else {\n\n\t\t\tthis._width = renderTarget.width;\n\t\t\tthis._height = renderTarget.height;\n\n\t\t}\n\n\t\tthis.renderTarget1 = renderTarget;\n\t\tthis.renderTarget2 = renderTarget.clone();\n\t\tthis.renderTarget2.texture.name = 'EffectComposer.rt2';\n\n\t\tthis.writeBuffer = this.renderTarget1;\n\t\tthis.readBuffer = this.renderTarget2;\n\n\t\tthis.renderToScreen = true;\n\n\t\tthis.passes = [];\n\n\t\tthis.copyPass = new ShaderPass( CopyShader );\n\t\tthis.copyPass.material.blending = NoBlending;\n\n\t\tthis.clock = new Clock();\n\n\t}\n\n\tswapBuffers() {\n\n\t\tconst tmp = this.readBuffer;\n\t\tthis.readBuffer = this.writeBuffer;\n\t\tthis.writeBuffer = tmp;\n\n\t}\n\n\taddPass( pass ) {\n\n\t\tthis.passes.push( pass );\n\t\tpass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t}\n\n\tinsertPass( pass, index ) {\n\n\t\tthis.passes.splice( index, 0, pass );\n\t\tpass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t}\n\n\tremovePass( pass ) {\n\n\t\tconst index = this.passes.indexOf( pass );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tthis.passes.splice( index, 1 );\n\n\t\t}\n\n\t}\n\n\tisLastEnabledPass( passIndex ) {\n\n\t\tfor ( let i = passIndex + 1; i < this.passes.length; i ++ ) {\n\n\t\t\tif ( this.passes[ i ].enabled ) {\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\trender( deltaTime ) {\n\n\t\t// deltaTime value is in seconds\n\n\t\tif ( deltaTime === undefined ) {\n\n\t\t\tdeltaTime = this.clock.getDelta();\n\n\t\t}\n\n\t\tconst currentRenderTarget = this.renderer.getRenderTarget();\n\n\t\tlet maskActive = false;\n\n\t\tfor ( let i = 0, il = this.passes.length; i < il; i ++ ) {\n\n\t\t\tconst pass = this.passes[ i ];\n\n\t\t\tif ( pass.enabled === false ) continue;\n\n\t\t\tpass.renderToScreen = ( this.renderToScreen && this.isLastEnabledPass( i ) );\n\t\t\tpass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive );\n\n\t\t\tif ( pass.needsSwap ) {\n\n\t\t\t\tif ( maskActive ) {\n\n\t\t\t\t\tconst context = this.renderer.getContext();\n\t\t\t\t\tconst stencil = this.renderer.state.buffers.stencil;\n\n\t\t\t\t\t//context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );\n\t\t\t\t\tstencil.setFunc( context.NOTEQUAL, 1, 0xffffffff );\n\n\t\t\t\t\tthis.copyPass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime );\n\n\t\t\t\t\t//context.stencilFunc( context.EQUAL, 1, 0xffffffff );\n\t\t\t\t\tstencil.setFunc( context.EQUAL, 1, 0xffffffff );\n\n\t\t\t\t}\n\n\t\t\t\tthis.swapBuffers();\n\n\t\t\t}\n\n\t\t\tif ( MaskPass !== undefined ) {\n\n\t\t\t\tif ( pass instanceof MaskPass ) {\n\n\t\t\t\t\tmaskActive = true;\n\n\t\t\t\t} else if ( pass instanceof ClearMaskPass ) {\n\n\t\t\t\t\tmaskActive = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.renderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n\treset( renderTarget ) {\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\tconst size = this.renderer.getSize( new Vector2() );\n\t\t\tthis._pixelRatio = this.renderer.getPixelRatio();\n\t\t\tthis._width = size.width;\n\t\t\tthis._height = size.height;\n\n\t\t\trenderTarget = this.renderTarget1.clone();\n\t\t\trenderTarget.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t\t}\n\n\t\tthis.renderTarget1.dispose();\n\t\tthis.renderTarget2.dispose();\n\t\tthis.renderTarget1 = renderTarget;\n\t\tthis.renderTarget2 = renderTarget.clone();\n\n\t\tthis.writeBuffer = this.renderTarget1;\n\t\tthis.readBuffer = this.renderTarget2;\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis._width = width;\n\t\tthis._height = height;\n\n\t\tconst effectiveWidth = this._width * this._pixelRatio;\n\t\tconst effectiveHeight = this._height * this._pixelRatio;\n\n\t\tthis.renderTarget1.setSize( effectiveWidth, effectiveHeight );\n\t\tthis.renderTarget2.setSize( effectiveWidth, effectiveHeight );\n\n\t\tfor ( let i = 0; i < this.passes.length; i ++ ) {\n\n\t\t\tthis.passes[ i ].setSize( effectiveWidth, effectiveHeight );\n\n\t\t}\n\n\t}\n\n\tsetPixelRatio( pixelRatio ) {\n\n\t\tthis._pixelRatio = pixelRatio;\n\n\t\tthis.setSize( this._width, this._height );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.renderTarget1.dispose();\n\t\tthis.renderTarget2.dispose();\n\n\t\tthis.copyPass.dispose();\n\n\t}\n\n}\n\nexport { EffectComposer };\n", "const FilmShader = {\n\n\tname: 'FilmShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'time': { value: 0.0 },\n\t\t'intensity': { value: 0.5 },\n\t\t'grayscale': { value: false }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\t#include \n\n\t\tuniform float intensity;\n\t\tuniform bool grayscale;\n\t\tuniform float time;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 base = texture2D( tDiffuse, vUv );\n\n\t\t\tfloat noise = rand( fract( vUv + time ) );\n\n\t\t\tvec3 color = base.rgb + base.rgb * clamp( 0.1 + noise, 0.0, 1.0 );\n\n\t\t\tcolor = mix( base.rgb, color, intensity );\n\n\t\t\tif ( grayscale ) {\n\n\t\t\t\tcolor = vec3( luminance( color ) ); // assuming linear-srgb\n\n\t\t\t}\n\n\t\t\tgl_FragColor = vec4( color, base.a );\n\n\t\t}`,\n\n};\n\nexport { FilmShader };\n", "import {\n\tShaderMaterial,\n\tUniformsUtils\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { FilmShader } from '../shaders/FilmShader.js';\n\nclass FilmPass extends Pass {\n\n\tconstructor( intensity = 0.5, grayscale = false ) {\n\n\t\tsuper();\n\n\t\tconst shader = FilmShader;\n\n\t\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\tthis.material = new ShaderMaterial( {\n\n\t\t\tname: shader.name,\n\t\t\tuniforms: this.uniforms,\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader\n\n\t\t} );\n\n\t\tthis.uniforms.intensity.value = intensity; // (0 = no effect, 1 = full effect)\n\t\tthis.uniforms.grayscale.value = grayscale;\n\n\t\tthis.fsQuad = new FullScreenQuad( this.material );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer, deltaTime /*, maskActive */ ) {\n\n\t\tthis.uniforms[ 'tDiffuse' ].value = readBuffer.texture;\n\t\tthis.uniforms[ 'time' ].value += deltaTime;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\tif ( this.clear ) renderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tthis.material.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nexport { FilmPass };\n", "/**\n * RGB Shift Shader\n * Shifts red and blue channels from center in opposite directions\n * Ported from http://kriss.cx/tom/2009/05/rgb-shift/\n * by Tom Butterworth / http://kriss.cx/tom/\n *\n * amount: shift distance (1 is width of input)\n * angle: shift angle in radians\n */\n\nconst DigitalGlitch = {\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null }, //diffuse texture\n\t\t'tDisp': { value: null }, //displacement texture for digital glitch squares\n\t\t'byp': { value: 0 }, //apply the glitch ?\n\t\t'amount': { value: 0.08 },\n\t\t'angle': { value: 0.02 },\n\t\t'seed': { value: 0.02 },\n\t\t'seed_x': { value: 0.02 }, //-1,1\n\t\t'seed_y': { value: 0.02 }, //-1,1\n\t\t'distortion_x': { value: 0.5 },\n\t\t'distortion_y': { value: 0.6 },\n\t\t'col_s': { value: 0.05 }\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform int byp; //should we apply the glitch ?\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tDisp;\n\n\t\tuniform float amount;\n\t\tuniform float angle;\n\t\tuniform float seed;\n\t\tuniform float seed_x;\n\t\tuniform float seed_y;\n\t\tuniform float distortion_x;\n\t\tuniform float distortion_y;\n\t\tuniform float col_s;\n\n\t\tvarying vec2 vUv;\n\n\n\t\tfloat rand(vec2 co){\n\t\t\treturn fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);\n\t\t}\n\n\t\tvoid main() {\n\t\t\tif(byp<1) {\n\t\t\t\tvec2 p = vUv;\n\t\t\t\tfloat xs = floor(gl_FragCoord.x / 0.5);\n\t\t\t\tfloat ys = floor(gl_FragCoord.y / 0.5);\n\t\t\t\t//based on staffantans glitch shader for unity https://github.com/staffantan/unityglitch\n\t\t\t\tfloat disp = texture2D(tDisp, p*seed*seed).r;\n\t\t\t\tif(p.ydistortion_x-col_s*seed) {\n\t\t\t\t\tif(seed_x>0.){\n\t\t\t\t\t\tp.y = 1. - (p.y + distortion_y);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tp.y = distortion_y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(p.xdistortion_y-col_s*seed) {\n\t\t\t\t\tif(seed_y>0.){\n\t\t\t\t\t\tp.x=distortion_x;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tp.x = 1. - (p.x + distortion_x);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tp.x+=disp*seed_x*(seed/5.);\n\t\t\t\tp.y+=disp*seed_y*(seed/5.);\n\t\t\t\t//base from RGB shift shader\n\t\t\t\tvec2 offset = amount * vec2( cos(angle), sin(angle));\n\t\t\t\tvec4 cr = texture2D(tDiffuse, p + offset);\n\t\t\t\tvec4 cga = texture2D(tDiffuse, p);\n\t\t\t\tvec4 cb = texture2D(tDiffuse, p - offset);\n\t\t\t\tgl_FragColor = vec4(cr.r, cga.g, cb.b, cga.a);\n\t\t\t\t//add noise\n\t\t\t\tvec4 snow = 200.*amount*vec4(rand(vec2(xs * seed,ys * seed*50.))*0.2);\n\t\t\t\tgl_FragColor = gl_FragColor+ snow;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tgl_FragColor=texture2D (tDiffuse, vUv);\n\t\t\t}\n\t\t}`\n\n};\n\nexport { DigitalGlitch };\n", "import {\n\tDataTexture,\n\tFloatType,\n\tMathUtils,\n\tRedFormat,\n\tShaderMaterial,\n\tUniformsUtils\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { DigitalGlitch } from '../shaders/DigitalGlitch.js';\n\nclass GlitchPass extends Pass {\n\n\tconstructor( dt_size = 64 ) {\n\n\t\tsuper();\n\n\t\tconst shader = DigitalGlitch;\n\n\t\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\tthis.heightMap = this.generateHeightmap( dt_size );\n\n\t\tthis.uniforms[ 'tDisp' ].value = this.heightMap;\n\n\t\tthis.material = new ShaderMaterial( {\n\t\t\tuniforms: this.uniforms,\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader\n\t\t} );\n\n\t\tthis.fsQuad = new FullScreenQuad( this.material );\n\n\t\tthis.goWild = false;\n\t\tthis.curF = 0;\n\t\tthis.generateTrigger();\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tthis.uniforms[ 'tDiffuse' ].value = readBuffer.texture;\n\t\tthis.uniforms[ 'seed' ].value = Math.random();//default seeding\n\t\tthis.uniforms[ 'byp' ].value = 0;\n\n\t\tif ( this.curF % this.randX == 0 || this.goWild == true ) {\n\n\t\t\tthis.uniforms[ 'amount' ].value = Math.random() / 30;\n\t\t\tthis.uniforms[ 'angle' ].value = MathUtils.randFloat( - Math.PI, Math.PI );\n\t\t\tthis.uniforms[ 'seed_x' ].value = MathUtils.randFloat( - 1, 1 );\n\t\t\tthis.uniforms[ 'seed_y' ].value = MathUtils.randFloat( - 1, 1 );\n\t\t\tthis.uniforms[ 'distortion_x' ].value = MathUtils.randFloat( 0, 1 );\n\t\t\tthis.uniforms[ 'distortion_y' ].value = MathUtils.randFloat( 0, 1 );\n\t\t\tthis.curF = 0;\n\t\t\tthis.generateTrigger();\n\n\t\t} else if ( this.curF % this.randX < this.randX / 5 ) {\n\n\t\t\tthis.uniforms[ 'amount' ].value = Math.random() / 90;\n\t\t\tthis.uniforms[ 'angle' ].value = MathUtils.randFloat( - Math.PI, Math.PI );\n\t\t\tthis.uniforms[ 'distortion_x' ].value = MathUtils.randFloat( 0, 1 );\n\t\t\tthis.uniforms[ 'distortion_y' ].value = MathUtils.randFloat( 0, 1 );\n\t\t\tthis.uniforms[ 'seed_x' ].value = MathUtils.randFloat( - 0.3, 0.3 );\n\t\t\tthis.uniforms[ 'seed_y' ].value = MathUtils.randFloat( - 0.3, 0.3 );\n\n\t\t} else if ( this.goWild == false ) {\n\n\t\t\tthis.uniforms[ 'byp' ].value = 1;\n\n\t\t}\n\n\t\tthis.curF ++;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\tif ( this.clear ) renderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t}\n\n\tgenerateTrigger() {\n\n\t\tthis.randX = MathUtils.randInt( 120, 240 );\n\n\t}\n\n\tgenerateHeightmap( dt_size ) {\n\n\t\tconst data_arr = new Float32Array( dt_size * dt_size );\n\t\tconst length = dt_size * dt_size;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst val = MathUtils.randFloat( 0, 1 );\n\t\t\tdata_arr[ i ] = val;\n\n\t\t}\n\n\t\tconst texture = new DataTexture( data_arr, dt_size, dt_size, RedFormat, FloatType );\n\t\ttexture.needsUpdate = true;\n\t\treturn texture;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.material.dispose();\n\n\t\tthis.heightMap.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nexport { GlitchPass };\n", "import {\n\tDataTexture,\n\tMatrix4,\n\tRepeatWrapping,\n\tVector2,\n\tVector3,\n} from 'three';\n\n/**\n * References:\n * - implemented algorithm - GTAO\n * - https://iryoku.com/downloads/Practical-Realtime-Strategies-for-Accurate-Indirect-Occlusion.pdf\n * - https://github.com/Patapom/GodComplex/blob/master/Tests/TestHBIL/2018%20Mayaux%20-%20Horizon-Based%20Indirect%20Lighting%20(HBIL).pdf\n *\n * - other AO algorithms that are not implemented here:\n * - Screen Space Ambient Occlusion (SSAO), see also SSAOShader.js\n *\t - http://john-chapman-graphics.blogspot.com/2013/01/ssao-tutorial.html\n *\t - https://learnopengl.com/Advanced-Lighting/SSAO\n *\t - https://creativecoding.soe.ucsc.edu/courses/cmpm164/_schedule/AmbientOcclusion.pdf\n *\t - https://drive.google.com/file/d/1SyagcEVplIm2KkRD3WQYSO9O0Iyi1hfy/edit\n * - Scalable Ambient Occlusion (SAO), see also SAOShader.js\n *\t - https://casual-effects.com/research/McGuire2012SAO/index.html\n *\t - https://research.nvidia.com/sites/default/files/pubs/2012-06_Scalable-Ambient-Obscurance/McGuire12SAO.pdf\n * - N8HO\n *\t - https://github.com/N8python/n8ao\n * - Horizon Based Ambient Occlusion (HBAO)\n *\t - http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.577.2286&rep=rep1&type=pdf\n *\t - https://www.derschmale.com/2013/12/20/an-alternative-implementation-for-hbao-2/\n *\n * - further reading\n * \t - https://ceur-ws.org/Vol-3027/paper5.pdf\n * - https://www.comp.nus.edu.sg/~lowkl/publications/mssao_visual_computer_2012.pdf\n * - https://web.ics.purdue.edu/~tmcgraw/papers/mcgraw-ao-2008.pdf\n * - https://www.activision.com/cdn/research/Practical_Real_Time_Strategies_for_Accurate_Indirect_Occlusion_NEW%20VERSION_COLOR.pdf\n * - https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.390.2463&rep=rep1&type=pdf\n * - https://www.intel.com/content/www/us/en/developer/articles/technical/adaptive-screen-space-ambient-occlusion.html\n */\n\nconst GTAOShader = {\n\n\tname: 'GTAOShader',\n\n\tdefines: {\n\t\tPERSPECTIVE_CAMERA: 1,\n\t\tSAMPLES: 16,\n\t\tNORMAL_VECTOR_TYPE: 1,\n\t\tDEPTH_SWIZZLING: 'x',\n\t\tSCREEN_SPACE_RADIUS: 0,\n\t\tSCREEN_SPACE_RADIUS_SCALE: 100.0,\n\t\tSCENE_CLIP_BOX: 0,\n\t},\n\n\tuniforms: {\n\t\ttNormal: { value: null },\n\t\ttDepth: { value: null },\n\t\ttNoise: { value: null },\n\t\tresolution: { value: new Vector2() },\n\t\tcameraNear: { value: null },\n\t\tcameraFar: { value: null },\n\t\tcameraProjectionMatrix: { value: new Matrix4() },\n\t\tcameraProjectionMatrixInverse: { value: new Matrix4() },\n\t\tcameraWorldMatrix: { value: new Matrix4() },\n\t\tradius: { value: 0.25 },\n\t\tdistanceExponent: { value: 1. },\n\t\tthickness: { value: 1. },\n\t\tdistanceFallOff: { value: 1. },\n\t\tscale: { value: 1. },\n\t\tsceneBoxMin: { value: new Vector3( - 1, - 1, - 1 ) },\n\t\tsceneBoxMax: { value: new Vector3( 1, 1, 1 ) },\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\t\tvarying vec2 vUv;\n\t\tuniform highp sampler2D tNormal;\n\t\tuniform highp sampler2D tDepth;\n\t\tuniform sampler2D tNoise;\n\t\tuniform vec2 resolution;\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tuniform mat4 cameraProjectionMatrix;\n\t\tuniform mat4 cameraProjectionMatrixInverse;\t\t\n\t\tuniform mat4 cameraWorldMatrix;\n\t\tuniform float radius;\n\t\tuniform float distanceExponent;\n\t\tuniform float thickness;\n\t\tuniform float distanceFallOff;\n\t\tuniform float scale;\n\t\t#if SCENE_CLIP_BOX == 1\n\t\t\tuniform vec3 sceneBoxMin;\n\t\t\tuniform vec3 sceneBoxMax;\n\t\t#endif\n\t\t\n\t\t#include \n\t\t#include \n\n\t\t#ifndef FRAGMENT_OUTPUT\n\t\t#define FRAGMENT_OUTPUT vec4(vec3(ao), 1.)\n\t\t#endif\n\n\t\tvec3 getViewPosition(const in vec2 screenPosition, const in float depth) {\n\t\t\tvec4 clipSpacePosition = vec4(vec3(screenPosition, depth) * 2.0 - 1.0, 1.0);\n\t\t\tvec4 viewSpacePosition = cameraProjectionMatrixInverse * clipSpacePosition;\n\t\t\treturn viewSpacePosition.xyz / viewSpacePosition.w;\n\t\t}\n\n\t\tfloat getDepth(const vec2 uv) { \n\t\t\treturn textureLod(tDepth, uv.xy, 0.0).DEPTH_SWIZZLING;\n\t\t}\n\n\t\tfloat fetchDepth(const ivec2 uv) { \n\t\t\treturn texelFetch(tDepth, uv.xy, 0).DEPTH_SWIZZLING;\n\t\t}\n\n\t\tfloat getViewZ(const in float depth) {\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\t\t\t\treturn perspectiveDepthToViewZ(depth, cameraNear, cameraFar);\n\t\t\t#else\n\t\t\t\treturn orthographicDepthToViewZ(depth, cameraNear, cameraFar);\n\t\t\t#endif\n\t\t}\n\n\t\tvec3 computeNormalFromDepth(const vec2 uv) {\n\t\t\tvec2 size = vec2(textureSize(tDepth, 0));\n\t\t\tivec2 p = ivec2(uv * size);\n\t\t\tfloat c0 = fetchDepth(p);\n\t\t\tfloat l2 = fetchDepth(p - ivec2(2, 0));\n\t\t\tfloat l1 = fetchDepth(p - ivec2(1, 0));\n\t\t\tfloat r1 = fetchDepth(p + ivec2(1, 0));\n\t\t\tfloat r2 = fetchDepth(p + ivec2(2, 0));\n\t\t\tfloat b2 = fetchDepth(p - ivec2(0, 2));\n\t\t\tfloat b1 = fetchDepth(p - ivec2(0, 1));\n\t\t\tfloat t1 = fetchDepth(p + ivec2(0, 1));\n\t\t\tfloat t2 = fetchDepth(p + ivec2(0, 2));\n\t\t\tfloat dl = abs((2.0 * l1 - l2) - c0);\n\t\t\tfloat dr = abs((2.0 * r1 - r2) - c0);\n\t\t\tfloat db = abs((2.0 * b1 - b2) - c0);\n\t\t\tfloat dt = abs((2.0 * t1 - t2) - c0);\n\t\t\tvec3 ce = getViewPosition(uv, c0).xyz;\n\t\t\tvec3 dpdx = (dl < dr) ? ce - getViewPosition((uv - vec2(1.0 / size.x, 0.0)), l1).xyz : -ce + getViewPosition((uv + vec2(1.0 / size.x, 0.0)), r1).xyz;\n\t\t\tvec3 dpdy = (db < dt) ? ce - getViewPosition((uv - vec2(0.0, 1.0 / size.y)), b1).xyz : -ce + getViewPosition((uv + vec2(0.0, 1.0 / size.y)), t1).xyz;\n\t\t\treturn normalize(cross(dpdx, dpdy));\n\t\t}\n\n\t\tvec3 getViewNormal(const vec2 uv) {\n\t\t\t#if NORMAL_VECTOR_TYPE == 2\n\t\t\t\treturn normalize(textureLod(tNormal, uv, 0.).rgb);\n\t\t\t#elif NORMAL_VECTOR_TYPE == 1\n\t\t\t\treturn unpackRGBToNormal(textureLod(tNormal, uv, 0.).rgb);\n\t\t\t#else\n\t\t\t\treturn computeNormalFromDepth(uv);\n\t\t\t#endif\n\t\t}\n\n\t\tvec3 getSceneUvAndDepth(vec3 sampleViewPos) {\n\t\t\tvec4 sampleClipPos = cameraProjectionMatrix * vec4(sampleViewPos, 1.);\n\t\t\tvec2 sampleUv = sampleClipPos.xy / sampleClipPos.w * 0.5 + 0.5;\n\t\t\tfloat sampleSceneDepth = getDepth(sampleUv);\n\t\t\treturn vec3(sampleUv, sampleSceneDepth);\n\t\t}\n\t\t\n\t\tvoid main() {\n\t\t\tfloat depth = getDepth(vUv.xy);\n\t\t\tif (depth >= 1.0) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvec3 viewPos = getViewPosition(vUv, depth);\n\t\t\tvec3 viewNormal = getViewNormal(vUv);\n\n\t\t\tfloat radiusToUse = radius;\n\t\t\tfloat distanceFalloffToUse = thickness;\n\t\t\t#if SCREEN_SPACE_RADIUS == 1\n\t\t\t\tfloat radiusScale = getViewPosition(vec2(0.5 + float(SCREEN_SPACE_RADIUS_SCALE) / resolution.x, 0.0), depth).x;\n\t\t\t\tradiusToUse *= radiusScale;\n\t\t\t\tdistanceFalloffToUse *= radiusScale;\n\t\t\t#endif\n\n\t\t\t#if SCENE_CLIP_BOX == 1\n\t\t\t\tvec3 worldPos = (cameraWorldMatrix * vec4(viewPos, 1.0)).xyz;\n\t\t\t\tfloat boxDistance = length(max(vec3(0.0), max(sceneBoxMin - worldPos, worldPos - sceneBoxMax)));\n\t\t\t\tif (boxDistance > radiusToUse) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t#endif\n\t\t\t\n\t\t\tvec2 noiseResolution = vec2(textureSize(tNoise, 0));\n\t\t\tvec2 noiseUv = vUv * resolution / noiseResolution;\n\t\t\tvec4 noiseTexel = textureLod(tNoise, noiseUv, 0.0);\n\t\t\tvec3 randomVec = noiseTexel.xyz * 2.0 - 1.0;\n\t\t\tvec3 tangent = normalize(vec3(randomVec.xy, 0.));\n\t\t\tvec3 bitangent = vec3(-tangent.y, tangent.x, 0.);\n\t\t\tmat3 kernelMatrix = mat3(tangent, bitangent, vec3(0., 0., 1.));\n\n\t\t\tconst int DIRECTIONS = SAMPLES < 30 ? 3 : 5;\n\t\t\tconst int STEPS = (SAMPLES + DIRECTIONS - 1) / DIRECTIONS;\n\t\t\tfloat ao = 0.0;\n\t\t\tfor (int i = 0; i < DIRECTIONS; ++i) {\n\t\t\t\t\n\t\t\t\tfloat angle = float(i) / float(DIRECTIONS) * PI;\n\t\t\t\tvec4 sampleDir = vec4(cos(angle), sin(angle), 0., 0.5 + 0.5 * noiseTexel.w); \n\t\t\t\tsampleDir.xyz = normalize(kernelMatrix * sampleDir.xyz);\n\n\t\t\t\tvec3 viewDir = normalize(-viewPos.xyz);\n\t\t\t\tvec3 sliceBitangent = normalize(cross(sampleDir.xyz, viewDir));\n\t\t\t\tvec3 sliceTangent = cross(sliceBitangent, viewDir);\n\t\t\t\tvec3 normalInSlice = normalize(viewNormal - sliceBitangent * dot(viewNormal, sliceBitangent));\n\t\t\t\t\n\t\t\t\tvec3 tangentToNormalInSlice = cross(normalInSlice, sliceBitangent);\n\t\t\t\tvec2 cosHorizons = vec2(dot(viewDir, tangentToNormalInSlice), dot(viewDir, -tangentToNormalInSlice));\n\t\t\t\t\n\t\t\t\tfor (int j = 0; j < STEPS; ++j) {\n\t\t\t\t\tvec3 sampleViewOffset = sampleDir.xyz * radiusToUse * sampleDir.w * pow(float(j + 1) / float(STEPS), distanceExponent);\t\n\n\t\t\t\t\tvec3 sampleSceneUvDepth = getSceneUvAndDepth(viewPos + sampleViewOffset);\n\t\t\t\t\tvec3 sampleSceneViewPos = getViewPosition(sampleSceneUvDepth.xy, sampleSceneUvDepth.z);\n\t\t\t\t\tvec3 viewDelta = sampleSceneViewPos - viewPos;\n\t\t\t\t\tif (abs(viewDelta.z) < thickness) {\n\t\t\t\t\t\tfloat sampleCosHorizon = dot(viewDir, normalize(viewDelta));\n\t\t\t\t\t\tcosHorizons.x += max(0., (sampleCosHorizon - cosHorizons.x) * mix(1., 2. / float(j + 2), distanceFallOff));\n\t\t\t\t\t}\t\t\n\n\t\t\t\t\tsampleSceneUvDepth = getSceneUvAndDepth(viewPos - sampleViewOffset);\n\t\t\t\t\tsampleSceneViewPos = getViewPosition(sampleSceneUvDepth.xy, sampleSceneUvDepth.z);\n\t\t\t\t\tviewDelta = sampleSceneViewPos - viewPos;\n\t\t\t\t\tif (abs(viewDelta.z) < thickness) {\n\t\t\t\t\t\tfloat sampleCosHorizon = dot(viewDir, normalize(viewDelta));\n\t\t\t\t\t\tcosHorizons.y += max(0., (sampleCosHorizon - cosHorizons.y) * mix(1., 2. / float(j + 2), distanceFallOff));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvec2 sinHorizons = sqrt(1. - cosHorizons * cosHorizons);\n\t\t\t\tfloat nx = dot(normalInSlice, sliceTangent);\n\t\t\t\tfloat ny = dot(normalInSlice, viewDir);\n\t\t\t\tfloat nxb = 1. / 2. * (acos(cosHorizons.y) - acos(cosHorizons.x) + sinHorizons.x * cosHorizons.x - sinHorizons.y * cosHorizons.y);\n\t\t\t\tfloat nyb = 1. / 2. * (2. - cosHorizons.x * cosHorizons.x - cosHorizons.y * cosHorizons.y);\n\t\t\t\tfloat occlusion = nx * nxb + ny * nyb;\n\t\t\t\tao += occlusion;\n\t\t\t}\n\n\t\t\tao = clamp(ao / float(DIRECTIONS), 0., 1.);\t\t\n\t\t#if SCENE_CLIP_BOX == 1\n\t\t\tao = mix(ao, 1., smoothstep(0., radiusToUse, boxDistance));\n\t\t#endif\n\t\t\tao = pow(ao, scale);\n\n\t\t\tgl_FragColor = FRAGMENT_OUTPUT;\n\t\t}`\n\n};\n\nconst GTAODepthShader = {\n\n\tname: 'GTAODepthShader',\n\n\tdefines: {\n\t\tPERSPECTIVE_CAMERA: 1\n\t},\n\n\tuniforms: {\n\t\ttDepth: { value: null },\n\t\tcameraNear: { value: null },\n\t\tcameraFar: { value: null },\n\t},\n\n\tvertexShader: /* glsl */`\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\t\tuniform sampler2D tDepth;\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tvarying vec2 vUv;\n\n\t\t#include \n\n\t\tfloat getLinearDepth( const in vec2 screenPosition ) {\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\t\t\t\tfloat fragCoordZ = texture2D( tDepth, screenPosition ).x;\n\t\t\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\n\t\t\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\n\t\t\t#else\n\t\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\t\t\t#endif\n\t\t}\n\n\t\tvoid main() {\n\t\t\tfloat depth = getLinearDepth( vUv );\n\t\t\tgl_FragColor = vec4( vec3( 1.0 - depth ), 1.0 );\n\n\t\t}`\n\n};\n\nconst GTAOBlendShader = {\n\n\tname: 'GTAOBlendShader',\n\n\tuniforms: {\n\t\ttDiffuse: { value: null },\n\t\tintensity: { value: 1.0 }\n\t},\n\n\tvertexShader: /* glsl */`\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\t\tuniform float intensity;\n\t\tuniform sampler2D tDiffuse;\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor = vec4(mix(vec3(1.), texel.rgb, intensity), texel.a);\n\t\t}`\n\n};\n\n\nfunction generateMagicSquareNoise( size = 5 ) {\n\n\tconst noiseSize = Math.floor( size ) % 2 === 0 ? Math.floor( size ) + 1 : Math.floor( size );\n\tconst magicSquare = generateMagicSquare( noiseSize );\n\tconst noiseSquareSize = magicSquare.length;\n\tconst data = new Uint8Array( noiseSquareSize * 4 );\n\n\tfor ( let inx = 0; inx < noiseSquareSize; ++ inx ) {\n\n\t\tconst iAng = magicSquare[ inx ];\n\t\tconst angle = ( 2 * Math.PI * iAng ) / noiseSquareSize;\n\t\tconst randomVec = new Vector3(\n\t\t\tMath.cos( angle ),\n\t\t\tMath.sin( angle ),\n\t\t\t0\n\t\t).normalize();\n\t\tdata[ inx * 4 ] = ( randomVec.x * 0.5 + 0.5 ) * 255;\n\t\tdata[ inx * 4 + 1 ] = ( randomVec.y * 0.5 + 0.5 ) * 255;\n\t\tdata[ inx * 4 + 2 ] = 127;\n\t\tdata[ inx * 4 + 3 ] = 255;\n\n\t}\n\n\tconst noiseTexture = new DataTexture( data, noiseSize, noiseSize );\n\tnoiseTexture.wrapS = RepeatWrapping;\n\tnoiseTexture.wrapT = RepeatWrapping;\n\tnoiseTexture.needsUpdate = true;\n\n\treturn noiseTexture;\n\n}\n\nfunction generateMagicSquare( size ) {\n\n\tconst noiseSize = Math.floor( size ) % 2 === 0 ? Math.floor( size ) + 1 : Math.floor( size );\n\tconst noiseSquareSize = noiseSize * noiseSize;\n\tconst magicSquare = Array( noiseSquareSize ).fill( 0 );\n\tlet i = Math.floor( noiseSize / 2 );\n\tlet j = noiseSize - 1;\n\n\tfor ( let num = 1; num <= noiseSquareSize; ) {\n\n\t\tif ( i === - 1 && j === noiseSize ) {\n\n\t\t\tj = noiseSize - 2;\n\t\t\ti = 0;\n\n\t\t} else {\n\n\t\t\tif ( j === noiseSize ) {\n\n\t\t\t\tj = 0;\n\n\t\t\t}\n\n\t\t\tif ( i < 0 ) {\n\n\t\t\t\ti = noiseSize - 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( magicSquare[ i * noiseSize + j ] !== 0 ) {\n\n\t\t\tj -= 2;\n\t\t\ti ++;\n\t\t\tcontinue;\n\n\t\t} else {\n\n\t\t\tmagicSquare[ i * noiseSize + j ] = num ++;\n\n\t\t}\n\n\t\tj ++;\n\t\ti --;\n\n\t}\n\n\treturn magicSquare;\n\n}\n\n\nexport { generateMagicSquareNoise, GTAOShader, GTAODepthShader, GTAOBlendShader };\n", "import {\n\tMatrix4,\n\tVector2,\n\tVector3,\n} from 'three';\n\n/**\n * References:\n * https://openaccess.thecvf.com/content/WACV2021/papers/Khademi_Self-Supervised_Poisson-Gaussian_Denoising_WACV_2021_paper.pdf\n * https://arxiv.org/pdf/2206.01856.pdf\n */\n\nconst PoissonDenoiseShader = {\n\n\tname: 'PoissonDenoiseShader',\n\n\tdefines: {\n\t\t'SAMPLES': 16,\n\t\t'SAMPLE_VECTORS': generatePdSamplePointInitializer( 16, 2, 1 ),\n\t\t'NORMAL_VECTOR_TYPE': 1,\n\t\t'DEPTH_VALUE_SOURCE': 0,\n\t},\n\n\tuniforms: {\n\t\t'tDiffuse': { value: null },\n\t\t'tNormal': { value: null },\n\t\t'tDepth': { value: null },\n\t\t'tNoise': { value: null },\n\t\t'resolution': { value: new Vector2() },\n\t\t'cameraProjectionMatrixInverse': { value: new Matrix4() },\n\t\t'lumaPhi': { value: 5. },\n\t\t'depthPhi': { value: 5. },\n\t\t'normalPhi': { value: 5. },\n\t\t'radius': { value: 4. },\n\t\t'index': { value: 0 }\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tNormal;\n\t\tuniform sampler2D tDepth;\n\t\tuniform sampler2D tNoise;\n\t\tuniform vec2 resolution;\n\t\tuniform mat4 cameraProjectionMatrixInverse;\n\t\tuniform float lumaPhi;\n\t\tuniform float depthPhi;\n\t\tuniform float normalPhi;\n\t\tuniform float radius;\n\t\tuniform int index;\n\t\t\n\t\t#include \n\t\t#include \n\n\t\t#ifndef SAMPLE_LUMINANCE\n\t\t#define SAMPLE_LUMINANCE dot(vec3(0.2125, 0.7154, 0.0721), a)\n\t\t#endif\n\n\t\t#ifndef FRAGMENT_OUTPUT\n\t\t#define FRAGMENT_OUTPUT vec4(denoised, 1.)\n\t\t#endif\n\n\t\tfloat getLuminance(const in vec3 a) {\n\t\t\treturn SAMPLE_LUMINANCE;\n\t\t}\n\n\t\tconst vec3 poissonDisk[SAMPLES] = SAMPLE_VECTORS;\n\n\t\tvec3 getViewPosition(const in vec2 screenPosition, const in float depth) {\n\t\t\tvec4 clipSpacePosition = vec4(vec3(screenPosition, depth) * 2.0 - 1.0, 1.0);\n\t\t\tvec4 viewSpacePosition = cameraProjectionMatrixInverse * clipSpacePosition;\n\t\t\treturn viewSpacePosition.xyz / viewSpacePosition.w;\n\t\t}\n\t\t\n\t\tfloat getDepth(const vec2 uv) {\n\t\t#if DEPTH_VALUE_SOURCE == 1 \n\t\t\treturn textureLod(tDepth, uv.xy, 0.0).a;\n\t\t#else\n\t\t\treturn textureLod(tDepth, uv.xy, 0.0).r;\n\t\t#endif\n\t\t}\n\n\t\tfloat fetchDepth(const ivec2 uv) {\n\t\t\t#if DEPTH_VALUE_SOURCE == 1 \n\t\t\t\treturn texelFetch(tDepth, uv.xy, 0).a;\n\t\t\t#else\n\t\t\t\treturn texelFetch(tDepth, uv.xy, 0).r;\n\t\t\t#endif\n\t\t}\n\n\t\tvec3 computeNormalFromDepth(const vec2 uv) {\n\t\t\tvec2 size = vec2(textureSize(tDepth, 0));\n\t\t\tivec2 p = ivec2(uv * size);\n\t\t\tfloat c0 = fetchDepth(p);\n\t\t\tfloat l2 = fetchDepth(p - ivec2(2, 0));\n\t\t\tfloat l1 = fetchDepth(p - ivec2(1, 0));\n\t\t\tfloat r1 = fetchDepth(p + ivec2(1, 0));\n\t\t\tfloat r2 = fetchDepth(p + ivec2(2, 0));\n\t\t\tfloat b2 = fetchDepth(p - ivec2(0, 2));\n\t\t\tfloat b1 = fetchDepth(p - ivec2(0, 1));\n\t\t\tfloat t1 = fetchDepth(p + ivec2(0, 1));\n\t\t\tfloat t2 = fetchDepth(p + ivec2(0, 2));\n\t\t\tfloat dl = abs((2.0 * l1 - l2) - c0);\n\t\t\tfloat dr = abs((2.0 * r1 - r2) - c0);\n\t\t\tfloat db = abs((2.0 * b1 - b2) - c0);\n\t\t\tfloat dt = abs((2.0 * t1 - t2) - c0);\n\t\t\tvec3 ce = getViewPosition(uv, c0).xyz;\n\t\t\tvec3 dpdx = (dl < dr) ? ce - getViewPosition((uv - vec2(1.0 / size.x, 0.0)), l1).xyz\n\t\t\t\t\t\t\t\t\t: -ce + getViewPosition((uv + vec2(1.0 / size.x, 0.0)), r1).xyz;\n\t\t\tvec3 dpdy = (db < dt) ? ce - getViewPosition((uv - vec2(0.0, 1.0 / size.y)), b1).xyz\n\t\t\t\t\t\t\t\t\t: -ce + getViewPosition((uv + vec2(0.0, 1.0 / size.y)), t1).xyz;\n\t\t\treturn normalize(cross(dpdx, dpdy));\n\t\t}\n\n\t\tvec3 getViewNormal(const vec2 uv) {\n\t\t#if NORMAL_VECTOR_TYPE == 2\n\t\t\treturn normalize(textureLod(tNormal, uv, 0.).rgb);\n\t\t#elif NORMAL_VECTOR_TYPE == 1\n\t\t\treturn unpackRGBToNormal(textureLod(tNormal, uv, 0.).rgb);\n\t\t#else\n\t\t\treturn computeNormalFromDepth(uv);\n\t\t#endif\n\t\t}\n\n\t\tvoid denoiseSample(in vec3 center, in vec3 viewNormal, in vec3 viewPos, in vec2 sampleUv, inout vec3 denoised, inout float totalWeight) {\n\t\t\tvec4 sampleTexel = textureLod(tDiffuse, sampleUv, 0.0);\n\t\t\tfloat sampleDepth = getDepth(sampleUv);\n\t\t\tvec3 sampleNormal = getViewNormal(sampleUv);\n\t\t\tvec3 neighborColor = sampleTexel.rgb;\n\t\t\tvec3 viewPosSample = getViewPosition(sampleUv, sampleDepth);\n\t\t\t\n\t\t\tfloat normalDiff = dot(viewNormal, sampleNormal);\n\t\t\tfloat normalSimilarity = pow(max(normalDiff, 0.), normalPhi);\n\t\t\tfloat lumaDiff = abs(getLuminance(neighborColor) - getLuminance(center));\n\t\t\tfloat lumaSimilarity = max(1.0 - lumaDiff / lumaPhi, 0.0);\n\t\t\tfloat depthDiff = abs(dot(viewPos - viewPosSample, viewNormal));\n\t\t\tfloat depthSimilarity = max(1. - depthDiff / depthPhi, 0.);\n\t\t\tfloat w = lumaSimilarity * depthSimilarity * normalSimilarity;\n\t\t\n\t\t\tdenoised += w * neighborColor;\n\t\t\ttotalWeight += w;\n\t\t}\n\t\t\n\t\tvoid main() {\n\t\t\tfloat depth = getDepth(vUv.xy);\t\n\t\t\tvec3 viewNormal = getViewNormal(vUv);\t\n\t\t\tif (depth == 1. || dot(viewNormal, viewNormal) == 0.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvec4 texel = textureLod(tDiffuse, vUv, 0.0);\n\t\t\tvec3 center = texel.rgb;\n\t\t\tvec3 viewPos = getViewPosition(vUv, depth);\n\n\t\t\tvec2 noiseResolution = vec2(textureSize(tNoise, 0));\n\t\t\tvec2 noiseUv = vUv * resolution / noiseResolution;\n\t\t\tvec4 noiseTexel = textureLod(tNoise, noiseUv, 0.0);\n \t\tvec2 noiseVec = vec2(sin(noiseTexel[index % 4] * 2. * PI), cos(noiseTexel[index % 4] * 2. * PI));\n \t\tmat2 rotationMatrix = mat2(noiseVec.x, -noiseVec.y, noiseVec.x, noiseVec.y);\n\t\t\n\t\t\tfloat totalWeight = 1.0;\n\t\t\tvec3 denoised = texel.rgb;\n\t\t\tfor (int i = 0; i < SAMPLES; i++) {\n\t\t\t\tvec3 sampleDir = poissonDisk[i];\n\t\t\t\tvec2 offset = rotationMatrix * (sampleDir.xy * (1. + sampleDir.z * (radius - 1.)) / resolution);\n\t\t\t\tvec2 sampleUv = vUv + offset;\n\t\t\t\tdenoiseSample(center, viewNormal, viewPos, sampleUv, denoised, totalWeight);\n\t\t\t}\n\t\t\n\t\t\tif (totalWeight > 0.) { \n\t\t\t\tdenoised /= totalWeight;\n\t\t\t}\n\t\t\tgl_FragColor = FRAGMENT_OUTPUT;\n\t\t}`\n\n};\n\nfunction generatePdSamplePointInitializer( samples, rings, radiusExponent ) {\n\n\tconst poissonDisk = generateDenoiseSamples(\n\t\tsamples,\n\t\trings,\n\t\tradiusExponent,\n\t);\n\n\tlet glslCode = 'vec3[SAMPLES](';\n\n\tfor ( let i = 0; i < samples; i ++ ) {\n\n\t\tconst sample = poissonDisk[ i ];\n\t\tglslCode += `vec3(${sample.x}, ${sample.y}, ${sample.z})${( i < samples - 1 ) ? ',' : ')'}`;\n\n\t}\n\n\treturn glslCode;\n\n}\n\nfunction generateDenoiseSamples( numSamples, numRings, radiusExponent ) {\n\n\tconst samples = [];\n\n\tfor ( let i = 0; i < numSamples; i ++ ) {\n\n\t\tconst angle = 2 * Math.PI * numRings * i / numSamples;\n\t\tconst radius = Math.pow( i / ( numSamples - 1 ), radiusExponent );\n\t\tsamples.push( new Vector3( Math.cos( angle ), Math.sin( angle ), radius ) );\n\n\t}\n\n\treturn samples;\n\n}\n\nexport { generatePdSamplePointInitializer, PoissonDenoiseShader };\n", "import {\n\tAddEquation,\n\tColor,\n\tCustomBlending,\n\tDataTexture,\n\tDepthTexture,\n\tDepthStencilFormat,\n\tDstAlphaFactor,\n\tDstColorFactor,\n\tHalfFloatType,\n\tMeshNormalMaterial,\n\tNearestFilter,\n\tNoBlending,\n\tRepeatWrapping,\n\tRGBAFormat,\n\tShaderMaterial,\n\tUniformsUtils,\n\tUnsignedByteType,\n\tUnsignedInt248Type,\n\tWebGLRenderTarget,\n\tZeroFactor\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { generateMagicSquareNoise, GTAOShader, GTAODepthShader, GTAOBlendShader } from '../shaders/GTAOShader.js';\nimport { generatePdSamplePointInitializer, PoissonDenoiseShader } from '../shaders/PoissonDenoiseShader.js';\nimport { CopyShader } from '../shaders/CopyShader.js';\nimport { SimplexNoise } from '../math/SimplexNoise.js';\n\nclass GTAOPass extends Pass {\n\n\tconstructor( scene, camera, width, height, parameters, aoParameters, pdParameters ) {\n\n\t\tsuper();\n\n\t\tthis.width = ( width !== undefined ) ? width : 512;\n\t\tthis.height = ( height !== undefined ) ? height : 512;\n\t\tthis.clear = true;\n\t\tthis.camera = camera;\n\t\tthis.scene = scene;\n\t\tthis.output = 0;\n\t\tthis._renderGBuffer = true;\n\t\tthis._visibilityCache = new Map();\n\t\tthis.blendIntensity = 1.;\n\n\t\tthis.pdRings = 2.;\n\t\tthis.pdRadiusExponent = 2.;\n\t\tthis.pdSamples = 16;\n\n\t\tthis.gtaoNoiseTexture = generateMagicSquareNoise();\n\t\tthis.pdNoiseTexture = this.generateNoise();\n\n\t\tthis.gtaoRenderTarget = new WebGLRenderTarget( this.width, this.height, { type: HalfFloatType } );\n\t\tthis.pdRenderTarget = this.gtaoRenderTarget.clone();\n\n\t\tthis.gtaoMaterial = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, GTAOShader.defines ),\n\t\t\tuniforms: UniformsUtils.clone( GTAOShader.uniforms ),\n\t\t\tvertexShader: GTAOShader.vertexShader,\n\t\t\tfragmentShader: GTAOShader.fragmentShader,\n\t\t\tblending: NoBlending,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t} );\n\t\tthis.gtaoMaterial.defines.PERSPECTIVE_CAMERA = this.camera.isPerspectiveCamera ? 1 : 0;\n\t\tthis.gtaoMaterial.uniforms.tNoise.value = this.gtaoNoiseTexture;\n\t\tthis.gtaoMaterial.uniforms.resolution.value.set( this.width, this.height );\n\t\tthis.gtaoMaterial.uniforms.cameraNear.value = this.camera.near;\n\t\tthis.gtaoMaterial.uniforms.cameraFar.value = this.camera.far;\n\n\t\tthis.normalMaterial = new MeshNormalMaterial();\n\t\tthis.normalMaterial.blending = NoBlending;\n\n\t\tthis.pdMaterial = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, PoissonDenoiseShader.defines ),\n\t\t\tuniforms: UniformsUtils.clone( PoissonDenoiseShader.uniforms ),\n\t\t\tvertexShader: PoissonDenoiseShader.vertexShader,\n\t\t\tfragmentShader: PoissonDenoiseShader.fragmentShader,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t} );\n\t\tthis.pdMaterial.uniforms.tDiffuse.value = this.gtaoRenderTarget.texture;\n\t\tthis.pdMaterial.uniforms.tNoise.value = this.pdNoiseTexture;\n\t\tthis.pdMaterial.uniforms.resolution.value.set( this.width, this.height );\n\t\tthis.pdMaterial.uniforms.lumaPhi.value = 10;\n\t\tthis.pdMaterial.uniforms.depthPhi.value = 2;\n\t\tthis.pdMaterial.uniforms.normalPhi.value = 3;\n\t\tthis.pdMaterial.uniforms.radius.value = 8;\n\n\t\tthis.depthRenderMaterial = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, GTAODepthShader.defines ),\n\t\t\tuniforms: UniformsUtils.clone( GTAODepthShader.uniforms ),\n\t\t\tvertexShader: GTAODepthShader.vertexShader,\n\t\t\tfragmentShader: GTAODepthShader.fragmentShader,\n\t\t\tblending: NoBlending\n\t\t} );\n\t\tthis.depthRenderMaterial.uniforms.cameraNear.value = this.camera.near;\n\t\tthis.depthRenderMaterial.uniforms.cameraFar.value = this.camera.far;\n\n\t\tthis.copyMaterial = new ShaderMaterial( {\n\t\t\tuniforms: UniformsUtils.clone( CopyShader.uniforms ),\n\t\t\tvertexShader: CopyShader.vertexShader,\n\t\t\tfragmentShader: CopyShader.fragmentShader,\n\t\t\ttransparent: true,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\tblendSrc: DstColorFactor,\n\t\t\tblendDst: ZeroFactor,\n\t\t\tblendEquation: AddEquation,\n\t\t\tblendSrcAlpha: DstAlphaFactor,\n\t\t\tblendDstAlpha: ZeroFactor,\n\t\t\tblendEquationAlpha: AddEquation\n\t\t} );\n\n\t\tthis.blendMaterial = new ShaderMaterial( {\n\t\t\tuniforms: UniformsUtils.clone( GTAOBlendShader.uniforms ),\n\t\t\tvertexShader: GTAOBlendShader.vertexShader,\n\t\t\tfragmentShader: GTAOBlendShader.fragmentShader,\n\t\t\ttransparent: true,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\tblending: CustomBlending,\n\t\t\tblendSrc: DstColorFactor,\n\t\t\tblendDst: ZeroFactor,\n\t\t\tblendEquation: AddEquation,\n\t\t\tblendSrcAlpha: DstAlphaFactor,\n\t\t\tblendDstAlpha: ZeroFactor,\n\t\t\tblendEquationAlpha: AddEquation\n\t\t} );\n\n\t\tthis.fsQuad = new FullScreenQuad( null );\n\n\t\tthis.originalClearColor = new Color();\n\n\t\tthis.setGBuffer( parameters ? parameters.depthTexture : undefined, parameters ? parameters.normalTexture : undefined );\n\n\t\tif ( aoParameters !== undefined ) {\n\n\t\t\tthis.updateGtaoMaterial( aoParameters );\n\n\t\t}\n\n\t\tif ( pdParameters !== undefined ) {\n\n\t\t\tthis.updatePdMaterial( pdParameters );\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tthis.gtaoNoiseTexture.dispose();\n\t\tthis.pdNoiseTexture.dispose();\n\t\tthis.normalRenderTarget.dispose();\n\t\tthis.gtaoRenderTarget.dispose();\n\t\tthis.pdRenderTarget.dispose();\n\t\tthis.normalMaterial.dispose();\n\t\tthis.pdMaterial.dispose();\n\t\tthis.copyMaterial.dispose();\n\t\tthis.depthRenderMaterial.dispose();\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n\tget gtaoMap() {\n\n\t\treturn this.pdRenderTarget.texture;\n\n\t}\n\n\tsetGBuffer( depthTexture, normalTexture ) {\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tthis.depthTexture = depthTexture;\n\t\t\tthis.normalTexture = normalTexture;\n\t\t\tthis._renderGBuffer = false;\n\n\t\t} else {\n\n\t\t\tthis.depthTexture = new DepthTexture();\n\t\t\tthis.depthTexture.format = DepthStencilFormat;\n\t\t\tthis.depthTexture.type = UnsignedInt248Type;\n\t\t\tthis.normalRenderTarget = new WebGLRenderTarget( this.width, this.height, {\n\t\t\t\tminFilter: NearestFilter,\n\t\t\t\tmagFilter: NearestFilter,\n\t\t\t\ttype: HalfFloatType,\n\t\t\t\tdepthTexture: this.depthTexture\n\t\t\t} );\n\t\t\tthis.normalTexture = this.normalRenderTarget.texture;\n\t\t\tthis._renderGBuffer = true;\n\n\t\t}\n\n\t\tconst normalVectorType = ( this.normalTexture ) ? 1 : 0;\n\t\tconst depthValueSource = ( this.depthTexture === this.normalTexture ) ? 'w' : 'x';\n\n\t\tthis.gtaoMaterial.defines.NORMAL_VECTOR_TYPE = normalVectorType;\n\t\tthis.gtaoMaterial.defines.DEPTH_SWIZZLING = depthValueSource;\n\t\tthis.gtaoMaterial.uniforms.tNormal.value = this.normalTexture;\n\t\tthis.gtaoMaterial.uniforms.tDepth.value = this.depthTexture;\n\n\t\tthis.pdMaterial.defines.NORMAL_VECTOR_TYPE = normalVectorType;\n\t\tthis.pdMaterial.defines.DEPTH_SWIZZLING = depthValueSource;\n\t\tthis.pdMaterial.uniforms.tNormal.value = this.normalTexture;\n\t\tthis.pdMaterial.uniforms.tDepth.value = this.depthTexture;\n\n\t\tthis.depthRenderMaterial.uniforms.tDepth.value = this.normalRenderTarget.depthTexture;\n\n\t}\n\n\tsetSceneClipBox( box ) {\n\n\t\tif ( box ) {\n\n\t\t\tthis.gtaoMaterial.needsUpdate = this.gtaoMaterial.defines.SCENE_CLIP_BOX !== 1;\n\t\t\tthis.gtaoMaterial.defines.SCENE_CLIP_BOX = 1;\n\t\t\tthis.gtaoMaterial.uniforms.sceneBoxMin.value.copy( box.min );\n\t\t\tthis.gtaoMaterial.uniforms.sceneBoxMax.value.copy( box.max );\n\n\t\t} else {\n\n\t\t\tthis.gtaoMaterial.needsUpdate = this.gtaoMaterial.defines.SCENE_CLIP_BOX === 0;\n\t\t\tthis.gtaoMaterial.defines.SCENE_CLIP_BOX = 0;\n\n\t\t}\n\n\t}\n\n\tupdateGtaoMaterial( parameters ) {\n\n\t\tif ( parameters.radius !== undefined ) {\n\n\t\t\tthis.gtaoMaterial.uniforms.radius.value = parameters.radius;\n\n\t\t}\n\n\t\tif ( parameters.distanceExponent !== undefined ) {\n\n\t\t\tthis.gtaoMaterial.uniforms.distanceExponent.value = parameters.distanceExponent;\n\n\t\t}\n\n\t\tif ( parameters.thickness !== undefined ) {\n\n\t\t\tthis.gtaoMaterial.uniforms.thickness.value = parameters.thickness;\n\n\t\t}\n\n\t\tif ( parameters.distanceFallOff !== undefined ) {\n\n\t\t\tthis.gtaoMaterial.uniforms.distanceFallOff.value = parameters.distanceFallOff;\n\t\t\tthis.gtaoMaterial.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( parameters.scale !== undefined ) {\n\n\t\t\tthis.gtaoMaterial.uniforms.scale.value = parameters.scale;\n\n\t\t}\n\n\t\tif ( parameters.samples !== undefined && parameters.samples !== this.gtaoMaterial.defines.SAMPLES ) {\n\n\t\t\tthis.gtaoMaterial.defines.SAMPLES = parameters.samples;\n\t\t\tthis.gtaoMaterial.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( parameters.screenSpaceRadius !== undefined && ( parameters.screenSpaceRadius ? 1 : 0 ) !== this.gtaoMaterial.defines.SCREEN_SPACE_RADIUS ) {\n\n\t\t\tthis.gtaoMaterial.defines.SCREEN_SPACE_RADIUS = parameters.screenSpaceRadius ? 1 : 0;\n\t\t\tthis.gtaoMaterial.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tupdatePdMaterial( parameters ) {\n\n\t\tlet updateShader = false;\n\n\t\tif ( parameters.lumaPhi !== undefined ) {\n\n\t\t\tthis.pdMaterial.uniforms.lumaPhi.value = parameters.lumaPhi;\n\n\t\t}\n\n\t\tif ( parameters.depthPhi !== undefined ) {\n\n\t\t\tthis.pdMaterial.uniforms.depthPhi.value = parameters.depthPhi;\n\n\t\t}\n\n\t\tif ( parameters.normalPhi !== undefined ) {\n\n\t\t\tthis.pdMaterial.uniforms.normalPhi.value = parameters.normalPhi;\n\n\t\t}\n\n\t\tif ( parameters.radius !== undefined && parameters.radius !== this.radius ) {\n\n\t\t\tthis.pdMaterial.uniforms.radius.value = parameters.radius;\n\n\t\t}\n\n\t\tif ( parameters.radiusExponent !== undefined && parameters.radiusExponent !== this.pdRadiusExponent ) {\n\n\t\t\tthis.pdRadiusExponent = parameters.radiusExponent;\n\t\t\tupdateShader = true;\n\n\t\t}\n\n\t\tif ( parameters.rings !== undefined && parameters.rings !== this.pdRings ) {\n\n\t\t\tthis.pdRings = parameters.rings;\n\t\t\tupdateShader = true;\n\n\t\t}\n\n\t\tif ( parameters.samples !== undefined && parameters.samples !== this.pdSamples ) {\n\n\t\t\tthis.pdSamples = parameters.samples;\n\t\t\tupdateShader = true;\n\n\t\t}\n\n\t\tif ( updateShader ) {\n\n\t\t\tthis.pdMaterial.defines.SAMPLES = this.pdSamples;\n\t\t\tthis.pdMaterial.defines.SAMPLE_VECTORS = generatePdSamplePointInitializer( this.pdSamples, this.pdRings, this.pdRadiusExponent );\n\t\t\tthis.pdMaterial.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\t// render normals and depth (honor only meshes, points and lines do not contribute to AO)\n\n\t\tif ( this._renderGBuffer ) {\n\n\t\t\tthis.overrideVisibility();\n\t\t\tthis.renderOverride( renderer, this.normalMaterial, this.normalRenderTarget, 0x7777ff, 1.0 );\n\t\t\tthis.restoreVisibility();\n\n\t\t}\n\n\t\t// render AO\n\n\t\tthis.gtaoMaterial.uniforms.cameraNear.value = this.camera.near;\n\t\tthis.gtaoMaterial.uniforms.cameraFar.value = this.camera.far;\n\t\tthis.gtaoMaterial.uniforms.cameraProjectionMatrix.value.copy( this.camera.projectionMatrix );\n\t\tthis.gtaoMaterial.uniforms.cameraProjectionMatrixInverse.value.copy( this.camera.projectionMatrixInverse );\n\t\tthis.gtaoMaterial.uniforms.cameraWorldMatrix.value.copy( this.camera.matrixWorld );\n\t\tthis.renderPass( renderer, this.gtaoMaterial, this.gtaoRenderTarget, 0xffffff, 1.0 );\n\n\t\t// render poisson denoise\n\n\t\tthis.pdMaterial.uniforms.cameraProjectionMatrixInverse.value.copy( this.camera.projectionMatrixInverse );\n\t\tthis.renderPass( renderer, this.pdMaterial, this.pdRenderTarget, 0xffffff, 1.0 );\n\n\t\t// output result to screen\n\n\t\tswitch ( this.output ) {\n\n\t\t\tcase GTAOPass.OUTPUT.Off:\n\t\t\t\tbreak;\n\n\t\t\tcase GTAOPass.OUTPUT.Diffuse:\n\n\t\t\t\tthis.copyMaterial.uniforms.tDiffuse.value = readBuffer.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase GTAOPass.OUTPUT.AO:\n\n\t\t\t\tthis.copyMaterial.uniforms.tDiffuse.value = this.gtaoRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase GTAOPass.OUTPUT.Denoise:\n\n\t\t\t\tthis.copyMaterial.uniforms.tDiffuse.value = this.pdRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase GTAOPass.OUTPUT.Depth:\n\n\t\t\t\tthis.depthRenderMaterial.uniforms.cameraNear.value = this.camera.near;\n\t\t\t\tthis.depthRenderMaterial.uniforms.cameraFar.value = this.camera.far;\n\t\t\t\tthis.renderPass( renderer, this.depthRenderMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase GTAOPass.OUTPUT.Normal:\n\n\t\t\t\tthis.copyMaterial.uniforms.tDiffuse.value = this.normalRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase GTAOPass.OUTPUT.Default:\n\n\t\t\t\tthis.copyMaterial.uniforms.tDiffuse.value = readBuffer.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\tthis.blendMaterial.uniforms.intensity.value = this.blendIntensity;\n\t\t\t\tthis.blendMaterial.uniforms.tDiffuse.value = this.pdRenderTarget.texture;\n\t\t\t\tthis.renderPass( renderer, this.blendMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.GTAOPass: Unknown output type.' );\n\n\t\t}\n\n\t}\n\n\trenderPass( renderer, passMaterial, renderTarget, clearColor, clearAlpha ) {\n\n\t\t// save original state\n\t\trenderer.getClearColor( this.originalClearColor );\n\t\tconst originalClearAlpha = renderer.getClearAlpha();\n\t\tconst originalAutoClear = renderer.autoClear;\n\n\t\trenderer.setRenderTarget( renderTarget );\n\n\t\t// setup pass state\n\t\trenderer.autoClear = false;\n\t\tif ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {\n\n\t\t\trenderer.setClearColor( clearColor );\n\t\t\trenderer.setClearAlpha( clearAlpha || 0.0 );\n\t\t\trenderer.clear();\n\n\t\t}\n\n\t\tthis.fsQuad.material = passMaterial;\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// restore original state\n\t\trenderer.autoClear = originalAutoClear;\n\t\trenderer.setClearColor( this.originalClearColor );\n\t\trenderer.setClearAlpha( originalClearAlpha );\n\n\t}\n\n\trenderOverride( renderer, overrideMaterial, renderTarget, clearColor, clearAlpha ) {\n\n\t\trenderer.getClearColor( this.originalClearColor );\n\t\tconst originalClearAlpha = renderer.getClearAlpha();\n\t\tconst originalAutoClear = renderer.autoClear;\n\n\t\trenderer.setRenderTarget( renderTarget );\n\t\trenderer.autoClear = false;\n\n\t\tclearColor = overrideMaterial.clearColor || clearColor;\n\t\tclearAlpha = overrideMaterial.clearAlpha || clearAlpha;\n\n\t\tif ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {\n\n\t\t\trenderer.setClearColor( clearColor );\n\t\t\trenderer.setClearAlpha( clearAlpha || 0.0 );\n\t\t\trenderer.clear();\n\n\t\t}\n\n\t\tthis.scene.overrideMaterial = overrideMaterial;\n\t\trenderer.render( this.scene, this.camera );\n\t\tthis.scene.overrideMaterial = null;\n\n\t\trenderer.autoClear = originalAutoClear;\n\t\trenderer.setClearColor( this.originalClearColor );\n\t\trenderer.setClearAlpha( originalClearAlpha );\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t\tthis.gtaoRenderTarget.setSize( width, height );\n\t\tthis.normalRenderTarget.setSize( width, height );\n\t\tthis.pdRenderTarget.setSize( width, height );\n\n\t\tthis.gtaoMaterial.uniforms.resolution.value.set( width, height );\n\t\tthis.gtaoMaterial.uniforms.cameraProjectionMatrix.value.copy( this.camera.projectionMatrix );\n\t\tthis.gtaoMaterial.uniforms.cameraProjectionMatrixInverse.value.copy( this.camera.projectionMatrixInverse );\n\n\t\tthis.pdMaterial.uniforms.resolution.value.set( width, height );\n\t\tthis.pdMaterial.uniforms.cameraProjectionMatrixInverse.value.copy( this.camera.projectionMatrixInverse );\n\n\t}\n\n\toverrideVisibility() {\n\n\t\tconst scene = this.scene;\n\t\tconst cache = this._visibilityCache;\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tcache.set( object, object.visible );\n\n\t\t\tif ( object.isPoints || object.isLine ) object.visible = false;\n\n\t\t} );\n\n\t}\n\n\trestoreVisibility() {\n\n\t\tconst scene = this.scene;\n\t\tconst cache = this._visibilityCache;\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst visible = cache.get( object );\n\t\t\tobject.visible = visible;\n\n\t\t} );\n\n\t\tcache.clear();\n\n\t}\n\n\tgenerateNoise( size = 64 ) {\n\n\t\tconst simplex = new SimplexNoise();\n\n\t\tconst arraySize = size * size * 4;\n\t\tconst data = new Uint8Array( arraySize );\n\n\t\tfor ( let i = 0; i < size; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < size; j ++ ) {\n\n\t\t\t\tconst x = i;\n\t\t\t\tconst y = j;\n\n\t\t\t\tdata[ ( i * size + j ) * 4 ] = ( simplex.noise( x, y ) * 0.5 + 0.5 ) * 255;\n\t\t\t\tdata[ ( i * size + j ) * 4 + 1 ] = ( simplex.noise( x + size, y ) * 0.5 + 0.5 ) * 255;\n\t\t\t\tdata[ ( i * size + j ) * 4 + 2 ] = ( simplex.noise( x, y + size ) * 0.5 + 0.5 ) * 255;\n\t\t\t\tdata[ ( i * size + j ) * 4 + 3 ] = ( simplex.noise( x + size, y + size ) * 0.5 + 0.5 ) * 255;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst noiseTexture = new DataTexture( data, size, size, RGBAFormat, UnsignedByteType );\n\t\tnoiseTexture.wrapS = RepeatWrapping;\n\t\tnoiseTexture.wrapT = RepeatWrapping;\n\t\tnoiseTexture.needsUpdate = true;\n\n\t\treturn noiseTexture;\n\n\t}\n\n}\n\nGTAOPass.OUTPUT = {\n\t'Off': - 1,\n\t'Default': 0,\n\t'Diffuse': 1,\n\t'Depth': 2,\n\t'Normal': 3,\n\t'AO': 4,\n\t'Denoise': 5,\n};\n\nexport { GTAOPass };\n", "/**\n * RGB Halftone shader for three.js.\n *\tNOTE:\n * \t\tShape (1 = Dot, 2 = Ellipse, 3 = Line, 4 = Square)\n *\t\tBlending Mode (1 = Linear, 2 = Multiply, 3 = Add, 4 = Lighter, 5 = Darker)\n */\n\nconst HalftoneShader = {\n\n\tname: 'HalftoneShader',\n\n\tuniforms: {\n\t\t'tDiffuse': { value: null },\n\t\t'shape': { value: 1 },\n\t\t'radius': { value: 4 },\n\t\t'rotateR': { value: Math.PI / 12 * 1 },\n\t\t'rotateG': { value: Math.PI / 12 * 2 },\n\t\t'rotateB': { value: Math.PI / 12 * 3 },\n\t\t'scatter': { value: 0 },\n\t\t'width': { value: 1 },\n\t\t'height': { value: 1 },\n\t\t'blending': { value: 1 },\n\t\t'blendingMode': { value: 1 },\n\t\t'greyscale': { value: false },\n\t\t'disable': { value: false }\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUV;\n\n\t\tvoid main() {\n\n\t\t\tvUV = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\t#define SQRT2_MINUS_ONE 0.41421356\n\t\t#define SQRT2_HALF_MINUS_ONE 0.20710678\n\t\t#define PI2 6.28318531\n\t\t#define SHAPE_DOT 1\n\t\t#define SHAPE_ELLIPSE 2\n\t\t#define SHAPE_LINE 3\n\t\t#define SHAPE_SQUARE 4\n\t\t#define BLENDING_LINEAR 1\n\t\t#define BLENDING_MULTIPLY 2\n\t\t#define BLENDING_ADD 3\n\t\t#define BLENDING_LIGHTER 4\n\t\t#define BLENDING_DARKER 5\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float radius;\n\t\tuniform float rotateR;\n\t\tuniform float rotateG;\n\t\tuniform float rotateB;\n\t\tuniform float scatter;\n\t\tuniform float width;\n\t\tuniform float height;\n\t\tuniform int shape;\n\t\tuniform bool disable;\n\t\tuniform float blending;\n\t\tuniform int blendingMode;\n\t\tvarying vec2 vUV;\n\t\tuniform bool greyscale;\n\t\tconst int samples = 8;\n\n\t\tfloat blend( float a, float b, float t ) {\n\n\t\t// linear blend\n\t\t\treturn a * ( 1.0 - t ) + b * t;\n\n\t\t}\n\n\t\tfloat hypot( float x, float y ) {\n\n\t\t// vector magnitude\n\t\t\treturn sqrt( x * x + y * y );\n\n\t\t}\n\n\t\tfloat rand( vec2 seed ){\n\n\t\t// get pseudo-random number\n\t\t\treturn fract( sin( dot( seed.xy, vec2( 12.9898, 78.233 ) ) ) * 43758.5453 );\n\n\t\t}\n\n\t\tfloat distanceToDotRadius( float channel, vec2 coord, vec2 normal, vec2 p, float angle, float rad_max ) {\n\n\t\t// apply shape-specific transforms\n\t\t\tfloat dist = hypot( coord.x - p.x, coord.y - p.y );\n\t\t\tfloat rad = channel;\n\n\t\t\tif ( shape == SHAPE_DOT ) {\n\n\t\t\t\trad = pow( abs( rad ), 1.125 ) * rad_max;\n\n\t\t\t} else if ( shape == SHAPE_ELLIPSE ) {\n\n\t\t\t\trad = pow( abs( rad ), 1.125 ) * rad_max;\n\n\t\t\t\tif ( dist != 0.0 ) {\n\t\t\t\t\tfloat dot_p = abs( ( p.x - coord.x ) / dist * normal.x + ( p.y - coord.y ) / dist * normal.y );\n\t\t\t\t\tdist = ( dist * ( 1.0 - SQRT2_HALF_MINUS_ONE ) ) + dot_p * dist * SQRT2_MINUS_ONE;\n\t\t\t\t}\n\n\t\t\t} else if ( shape == SHAPE_LINE ) {\n\n\t\t\t\trad = pow( abs( rad ), 1.5) * rad_max;\n\t\t\t\tfloat dot_p = ( p.x - coord.x ) * normal.x + ( p.y - coord.y ) * normal.y;\n\t\t\t\tdist = hypot( normal.x * dot_p, normal.y * dot_p );\n\n\t\t\t} else if ( shape == SHAPE_SQUARE ) {\n\n\t\t\t\tfloat theta = atan( p.y - coord.y, p.x - coord.x ) - angle;\n\t\t\t\tfloat sin_t = abs( sin( theta ) );\n\t\t\t\tfloat cos_t = abs( cos( theta ) );\n\t\t\t\trad = pow( abs( rad ), 1.4 );\n\t\t\t\trad = rad_max * ( rad + ( ( sin_t > cos_t ) ? rad - sin_t * rad : rad - cos_t * rad ) );\n\n\t\t\t}\n\n\t\t\treturn rad - dist;\n\n\t\t}\n\n\t\tstruct Cell {\n\n\t\t// grid sample positions\n\t\t\tvec2 normal;\n\t\t\tvec2 p1;\n\t\t\tvec2 p2;\n\t\t\tvec2 p3;\n\t\t\tvec2 p4;\n\t\t\tfloat samp2;\n\t\t\tfloat samp1;\n\t\t\tfloat samp3;\n\t\t\tfloat samp4;\n\n\t\t};\n\n\t\tvec4 getSample( vec2 point ) {\n\n\t\t// multi-sampled point\n\t\t\tvec4 tex = texture2D( tDiffuse, vec2( point.x / width, point.y / height ) );\n\t\t\tfloat base = rand( vec2( floor( point.x ), floor( point.y ) ) ) * PI2;\n\t\t\tfloat step = PI2 / float( samples );\n\t\t\tfloat dist = radius * 0.66;\n\n\t\t\tfor ( int i = 0; i < samples; ++i ) {\n\n\t\t\t\tfloat r = base + step * float( i );\n\t\t\t\tvec2 coord = point + vec2( cos( r ) * dist, sin( r ) * dist );\n\t\t\t\ttex += texture2D( tDiffuse, vec2( coord.x / width, coord.y / height ) );\n\n\t\t\t}\n\n\t\t\ttex /= float( samples ) + 1.0;\n\t\t\treturn tex;\n\n\t\t}\n\n\t\tfloat getDotColour( Cell c, vec2 p, int channel, float angle, float aa ) {\n\n\t\t// get colour for given point\n\t\t\tfloat dist_c_1, dist_c_2, dist_c_3, dist_c_4, res;\n\n\t\t\tif ( channel == 0 ) {\n\n\t\t\t\tc.samp1 = getSample( c.p1 ).r;\n\t\t\t\tc.samp2 = getSample( c.p2 ).r;\n\t\t\t\tc.samp3 = getSample( c.p3 ).r;\n\t\t\t\tc.samp4 = getSample( c.p4 ).r;\n\n\t\t\t} else if (channel == 1) {\n\n\t\t\t\tc.samp1 = getSample( c.p1 ).g;\n\t\t\t\tc.samp2 = getSample( c.p2 ).g;\n\t\t\t\tc.samp3 = getSample( c.p3 ).g;\n\t\t\t\tc.samp4 = getSample( c.p4 ).g;\n\n\t\t\t} else {\n\n\t\t\t\tc.samp1 = getSample( c.p1 ).b;\n\t\t\t\tc.samp3 = getSample( c.p3 ).b;\n\t\t\t\tc.samp2 = getSample( c.p2 ).b;\n\t\t\t\tc.samp4 = getSample( c.p4 ).b;\n\n\t\t\t}\n\n\t\t\tdist_c_1 = distanceToDotRadius( c.samp1, c.p1, c.normal, p, angle, radius );\n\t\t\tdist_c_2 = distanceToDotRadius( c.samp2, c.p2, c.normal, p, angle, radius );\n\t\t\tdist_c_3 = distanceToDotRadius( c.samp3, c.p3, c.normal, p, angle, radius );\n\t\t\tdist_c_4 = distanceToDotRadius( c.samp4, c.p4, c.normal, p, angle, radius );\n\t\t\tres = ( dist_c_1 > 0.0 ) ? clamp( dist_c_1 / aa, 0.0, 1.0 ) : 0.0;\n\t\t\tres += ( dist_c_2 > 0.0 ) ? clamp( dist_c_2 / aa, 0.0, 1.0 ) : 0.0;\n\t\t\tres += ( dist_c_3 > 0.0 ) ? clamp( dist_c_3 / aa, 0.0, 1.0 ) : 0.0;\n\t\t\tres += ( dist_c_4 > 0.0 ) ? clamp( dist_c_4 / aa, 0.0, 1.0 ) : 0.0;\n\t\t\tres = clamp( res, 0.0, 1.0 );\n\n\t\t\treturn res;\n\n\t\t}\n\n\t\tCell getReferenceCell( vec2 p, vec2 origin, float grid_angle, float step ) {\n\n\t\t// get containing cell\n\t\t\tCell c;\n\n\t\t// calc grid\n\t\t\tvec2 n = vec2( cos( grid_angle ), sin( grid_angle ) );\n\t\t\tfloat threshold = step * 0.5;\n\t\t\tfloat dot_normal = n.x * ( p.x - origin.x ) + n.y * ( p.y - origin.y );\n\t\t\tfloat dot_line = -n.y * ( p.x - origin.x ) + n.x * ( p.y - origin.y );\n\t\t\tvec2 offset = vec2( n.x * dot_normal, n.y * dot_normal );\n\t\t\tfloat offset_normal = mod( hypot( offset.x, offset.y ), step );\n\t\t\tfloat normal_dir = ( dot_normal < 0.0 ) ? 1.0 : -1.0;\n\t\t\tfloat normal_scale = ( ( offset_normal < threshold ) ? -offset_normal : step - offset_normal ) * normal_dir;\n\t\t\tfloat offset_line = mod( hypot( ( p.x - offset.x ) - origin.x, ( p.y - offset.y ) - origin.y ), step );\n\t\t\tfloat line_dir = ( dot_line < 0.0 ) ? 1.0 : -1.0;\n\t\t\tfloat line_scale = ( ( offset_line < threshold ) ? -offset_line : step - offset_line ) * line_dir;\n\n\t\t// get closest corner\n\t\t\tc.normal = n;\n\t\t\tc.p1.x = p.x - n.x * normal_scale + n.y * line_scale;\n\t\t\tc.p1.y = p.y - n.y * normal_scale - n.x * line_scale;\n\n\t\t// scatter\n\t\t\tif ( scatter != 0.0 ) {\n\n\t\t\t\tfloat off_mag = scatter * threshold * 0.5;\n\t\t\t\tfloat off_angle = rand( vec2( floor( c.p1.x ), floor( c.p1.y ) ) ) * PI2;\n\t\t\t\tc.p1.x += cos( off_angle ) * off_mag;\n\t\t\t\tc.p1.y += sin( off_angle ) * off_mag;\n\n\t\t\t}\n\n\t\t// find corners\n\t\t\tfloat normal_step = normal_dir * ( ( offset_normal < threshold ) ? step : -step );\n\t\t\tfloat line_step = line_dir * ( ( offset_line < threshold ) ? step : -step );\n\t\t\tc.p2.x = c.p1.x - n.x * normal_step;\n\t\t\tc.p2.y = c.p1.y - n.y * normal_step;\n\t\t\tc.p3.x = c.p1.x + n.y * line_step;\n\t\t\tc.p3.y = c.p1.y - n.x * line_step;\n\t\t\tc.p4.x = c.p1.x - n.x * normal_step + n.y * line_step;\n\t\t\tc.p4.y = c.p1.y - n.y * normal_step - n.x * line_step;\n\n\t\t\treturn c;\n\n\t\t}\n\n\t\tfloat blendColour( float a, float b, float t ) {\n\n\t\t// blend colours\n\t\t\tif ( blendingMode == BLENDING_LINEAR ) {\n\t\t\t\treturn blend( a, b, 1.0 - t );\n\t\t\t} else if ( blendingMode == BLENDING_ADD ) {\n\t\t\t\treturn blend( a, min( 1.0, a + b ), t );\n\t\t\t} else if ( blendingMode == BLENDING_MULTIPLY ) {\n\t\t\t\treturn blend( a, max( 0.0, a * b ), t );\n\t\t\t} else if ( blendingMode == BLENDING_LIGHTER ) {\n\t\t\t\treturn blend( a, max( a, b ), t );\n\t\t\t} else if ( blendingMode == BLENDING_DARKER ) {\n\t\t\t\treturn blend( a, min( a, b ), t );\n\t\t\t} else {\n\t\t\t\treturn blend( a, b, 1.0 - t );\n\t\t\t}\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tif ( ! disable ) {\n\n\t\t// setup\n\t\t\t\tvec2 p = vec2( vUV.x * width, vUV.y * height );\n\t\t\t\tvec2 origin = vec2( 0, 0 );\n\t\t\t\tfloat aa = ( radius < 2.5 ) ? radius * 0.5 : 1.25;\n\n\t\t// get channel samples\n\t\t\t\tCell cell_r = getReferenceCell( p, origin, rotateR, radius );\n\t\t\t\tCell cell_g = getReferenceCell( p, origin, rotateG, radius );\n\t\t\t\tCell cell_b = getReferenceCell( p, origin, rotateB, radius );\n\t\t\t\tfloat r = getDotColour( cell_r, p, 0, rotateR, aa );\n\t\t\t\tfloat g = getDotColour( cell_g, p, 1, rotateG, aa );\n\t\t\t\tfloat b = getDotColour( cell_b, p, 2, rotateB, aa );\n\n\t\t// blend with original\n\t\t\t\tvec4 colour = texture2D( tDiffuse, vUV );\n\t\t\t\tr = blendColour( r, colour.r, blending );\n\t\t\t\tg = blendColour( g, colour.g, blending );\n\t\t\t\tb = blendColour( b, colour.b, blending );\n\n\t\t\t\tif ( greyscale ) {\n\t\t\t\t\tr = g = b = (r + b + g) / 3.0;\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = vec4( r, g, b, 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\tgl_FragColor = texture2D( tDiffuse, vUV );\n\n\t\t\t}\n\n\t\t}`\n\n};\n\nexport { HalftoneShader };\n", "import {\n\tShaderMaterial,\n\tUniformsUtils\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { HalftoneShader } from '../shaders/HalftoneShader.js';\n\n/**\n * RGB Halftone pass for three.js effects composer. Requires HalftoneShader.\n */\n\nclass HalftonePass extends Pass {\n\n\tconstructor( width, height, params ) {\n\n\t\tsuper();\n\n\t \tthis.uniforms = UniformsUtils.clone( HalftoneShader.uniforms );\n\t \tthis.material = new ShaderMaterial( {\n\t \t\tuniforms: this.uniforms,\n\t \t\tfragmentShader: HalftoneShader.fragmentShader,\n\t \t\tvertexShader: HalftoneShader.vertexShader\n\t \t} );\n\n\t\t// set params\n\t\tthis.uniforms.width.value = width;\n\t\tthis.uniforms.height.value = height;\n\n\t\tfor ( const key in params ) {\n\n\t\t\tif ( params.hasOwnProperty( key ) && this.uniforms.hasOwnProperty( key ) ) {\n\n\t\t\t\tthis.uniforms[ key ].value = params[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.fsQuad = new FullScreenQuad( this.material );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive*/ ) {\n\n \t\tthis.material.uniforms[ 'tDiffuse' ].value = readBuffer.texture;\n\n \t\tif ( this.renderToScreen ) {\n\n \t\t\trenderer.setRenderTarget( null );\n \t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n \t\t\trenderer.setRenderTarget( writeBuffer );\n \t\t\tif ( this.clear ) renderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n \t}\n\n \tsetSize( width, height ) {\n\n \t\tthis.uniforms.width.value = width;\n \t\tthis.uniforms.height.value = height;\n\n \t}\n\n\tdispose() {\n\n\t\tthis.material.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nexport { HalftonePass };\n", "import { ShaderPass } from './ShaderPass.js';\n\nconst LUTShader = {\n\n\tname: 'LUTShader',\n\n\tuniforms: {\n\n\t\tlut: { value: null },\n\t\tlutSize: { value: 0 },\n\n\t\ttDiffuse: { value: null },\n\t\tintensity: { value: 1.0 },\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}\n\n\t`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float lutSize;\n\t\tuniform sampler3D lut;\n\n\t\tvarying vec2 vUv;\n\t\tuniform float intensity;\n\t\tuniform sampler2D tDiffuse;\n\t\tvoid main() {\n\n\t\t\tvec4 val = texture2D( tDiffuse, vUv );\n\t\t\tvec4 lutVal;\n\n\t\t\t// pull the sample in by half a pixel so the sample begins\n\t\t\t// at the center of the edge pixels.\n\t\t\tfloat pixelWidth = 1.0 / lutSize;\n\t\t\tfloat halfPixelWidth = 0.5 / lutSize;\n\t\t\tvec3 uvw = vec3( halfPixelWidth ) + val.rgb * ( 1.0 - pixelWidth );\n\n\n\t\t\tlutVal = vec4( texture( lut, uvw ).rgb, val.a );\n\n\t\t\tgl_FragColor = vec4( mix( val, lutVal, intensity ) );\n\n\t\t}\n\n\t`,\n\n};\n\nclass LUTPass extends ShaderPass {\n\n\tset lut( v ) {\n\n\t\tconst material = this.material;\n\n\t\tif ( v !== this.lut ) {\n\n\t\t\tmaterial.uniforms.lut.value = null;\n\n\t\t\tif ( v ) {\n\n\t\t\t\tmaterial.uniforms.lutSize.value = v.image.width;\n\t\t\t\tmaterial.uniforms.lut.value = v;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tget lut() {\n\n\t\treturn this.material.uniforms.lut.value;\n\n\t}\n\n\tset intensity( v ) {\n\n\t\tthis.material.uniforms.intensity.value = v;\n\n\t}\n\n\tget intensity() {\n\n\t\treturn this.material.uniforms.intensity.value;\n\n\t}\n\n\tconstructor( options = {} ) {\n\n\t\tsuper( LUTShader );\n\t\tthis.lut = options.lut || null;\n\t\tthis.intensity = 'intensity' in options ? options.intensity : 1;\n\n\t}\n\n}\n\nexport { LUTPass };\n", "import {\n\tAdditiveBlending,\n\tColor,\n\tDoubleSide,\n\tHalfFloatType,\n\tMatrix4,\n\tMeshDepthMaterial,\n\tNoBlending,\n\tRGBADepthPacking,\n\tShaderMaterial,\n\tUniformsUtils,\n\tVector2,\n\tVector3,\n\tWebGLRenderTarget\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { CopyShader } from '../shaders/CopyShader.js';\n\nclass OutlinePass extends Pass {\n\n\tconstructor( resolution, scene, camera, selectedObjects ) {\n\n\t\tsuper();\n\n\t\tthis.renderScene = scene;\n\t\tthis.renderCamera = camera;\n\t\tthis.selectedObjects = selectedObjects !== undefined ? selectedObjects : [];\n\t\tthis.visibleEdgeColor = new Color( 1, 1, 1 );\n\t\tthis.hiddenEdgeColor = new Color( 0.1, 0.04, 0.02 );\n\t\tthis.edgeGlow = 0.0;\n\t\tthis.usePatternTexture = false;\n\t\tthis.edgeThickness = 1.0;\n\t\tthis.edgeStrength = 3.0;\n\t\tthis.downSampleRatio = 2;\n\t\tthis.pulsePeriod = 0;\n\n\t\tthis._visibilityCache = new Map();\n\n\n\t\tthis.resolution = ( resolution !== undefined ) ? new Vector2( resolution.x, resolution.y ) : new Vector2( 256, 256 );\n\n\t\tconst resx = Math.round( this.resolution.x / this.downSampleRatio );\n\t\tconst resy = Math.round( this.resolution.y / this.downSampleRatio );\n\n\t\tthis.renderTargetMaskBuffer = new WebGLRenderTarget( this.resolution.x, this.resolution.y );\n\t\tthis.renderTargetMaskBuffer.texture.name = 'OutlinePass.mask';\n\t\tthis.renderTargetMaskBuffer.texture.generateMipmaps = false;\n\n\t\tthis.depthMaterial = new MeshDepthMaterial();\n\t\tthis.depthMaterial.side = DoubleSide;\n\t\tthis.depthMaterial.depthPacking = RGBADepthPacking;\n\t\tthis.depthMaterial.blending = NoBlending;\n\n\t\tthis.prepareMaskMaterial = this.getPrepareMaskMaterial();\n\t\tthis.prepareMaskMaterial.side = DoubleSide;\n\t\tthis.prepareMaskMaterial.fragmentShader = replaceDepthToViewZ( this.prepareMaskMaterial.fragmentShader, this.renderCamera );\n\n\t\tthis.renderTargetDepthBuffer = new WebGLRenderTarget( this.resolution.x, this.resolution.y, { type: HalfFloatType } );\n\t\tthis.renderTargetDepthBuffer.texture.name = 'OutlinePass.depth';\n\t\tthis.renderTargetDepthBuffer.texture.generateMipmaps = false;\n\n\t\tthis.renderTargetMaskDownSampleBuffer = new WebGLRenderTarget( resx, resy, { type: HalfFloatType } );\n\t\tthis.renderTargetMaskDownSampleBuffer.texture.name = 'OutlinePass.depthDownSample';\n\t\tthis.renderTargetMaskDownSampleBuffer.texture.generateMipmaps = false;\n\n\t\tthis.renderTargetBlurBuffer1 = new WebGLRenderTarget( resx, resy, { type: HalfFloatType } );\n\t\tthis.renderTargetBlurBuffer1.texture.name = 'OutlinePass.blur1';\n\t\tthis.renderTargetBlurBuffer1.texture.generateMipmaps = false;\n\t\tthis.renderTargetBlurBuffer2 = new WebGLRenderTarget( Math.round( resx / 2 ), Math.round( resy / 2 ), { type: HalfFloatType } );\n\t\tthis.renderTargetBlurBuffer2.texture.name = 'OutlinePass.blur2';\n\t\tthis.renderTargetBlurBuffer2.texture.generateMipmaps = false;\n\n\t\tthis.edgeDetectionMaterial = this.getEdgeDetectionMaterial();\n\t\tthis.renderTargetEdgeBuffer1 = new WebGLRenderTarget( resx, resy, { type: HalfFloatType } );\n\t\tthis.renderTargetEdgeBuffer1.texture.name = 'OutlinePass.edge1';\n\t\tthis.renderTargetEdgeBuffer1.texture.generateMipmaps = false;\n\t\tthis.renderTargetEdgeBuffer2 = new WebGLRenderTarget( Math.round( resx / 2 ), Math.round( resy / 2 ), { type: HalfFloatType } );\n\t\tthis.renderTargetEdgeBuffer2.texture.name = 'OutlinePass.edge2';\n\t\tthis.renderTargetEdgeBuffer2.texture.generateMipmaps = false;\n\n\t\tconst MAX_EDGE_THICKNESS = 4;\n\t\tconst MAX_EDGE_GLOW = 4;\n\n\t\tthis.separableBlurMaterial1 = this.getSeperableBlurMaterial( MAX_EDGE_THICKNESS );\n\t\tthis.separableBlurMaterial1.uniforms[ 'texSize' ].value.set( resx, resy );\n\t\tthis.separableBlurMaterial1.uniforms[ 'kernelRadius' ].value = 1;\n\t\tthis.separableBlurMaterial2 = this.getSeperableBlurMaterial( MAX_EDGE_GLOW );\n\t\tthis.separableBlurMaterial2.uniforms[ 'texSize' ].value.set( Math.round( resx / 2 ), Math.round( resy / 2 ) );\n\t\tthis.separableBlurMaterial2.uniforms[ 'kernelRadius' ].value = MAX_EDGE_GLOW;\n\n\t\t// Overlay material\n\t\tthis.overlayMaterial = this.getOverlayMaterial();\n\n\t\t// copy material\n\n\t\tconst copyShader = CopyShader;\n\n\t\tthis.copyUniforms = UniformsUtils.clone( copyShader.uniforms );\n\n\t\tthis.materialCopy = new ShaderMaterial( {\n\t\t\tuniforms: this.copyUniforms,\n\t\t\tvertexShader: copyShader.vertexShader,\n\t\t\tfragmentShader: copyShader.fragmentShader,\n\t\t\tblending: NoBlending,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false\n\t\t} );\n\n\t\tthis.enabled = true;\n\t\tthis.needsSwap = false;\n\n\t\tthis._oldClearColor = new Color();\n\t\tthis.oldClearAlpha = 1;\n\n\t\tthis.fsQuad = new FullScreenQuad( null );\n\n\t\tthis.tempPulseColor1 = new Color();\n\t\tthis.tempPulseColor2 = new Color();\n\t\tthis.textureMatrix = new Matrix4();\n\n\t\tfunction replaceDepthToViewZ( string, camera ) {\n\n\t\t\tconst type = camera.isPerspectiveCamera ? 'perspective' : 'orthographic';\n\n\t\t\treturn string.replace( /DEPTH_TO_VIEW_Z/g, type + 'DepthToViewZ' );\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tthis.renderTargetMaskBuffer.dispose();\n\t\tthis.renderTargetDepthBuffer.dispose();\n\t\tthis.renderTargetMaskDownSampleBuffer.dispose();\n\t\tthis.renderTargetBlurBuffer1.dispose();\n\t\tthis.renderTargetBlurBuffer2.dispose();\n\t\tthis.renderTargetEdgeBuffer1.dispose();\n\t\tthis.renderTargetEdgeBuffer2.dispose();\n\n\t\tthis.depthMaterial.dispose();\n\t\tthis.prepareMaskMaterial.dispose();\n\t\tthis.edgeDetectionMaterial.dispose();\n\t\tthis.separableBlurMaterial1.dispose();\n\t\tthis.separableBlurMaterial2.dispose();\n\t\tthis.overlayMaterial.dispose();\n\t\tthis.materialCopy.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis.renderTargetMaskBuffer.setSize( width, height );\n\t\tthis.renderTargetDepthBuffer.setSize( width, height );\n\n\t\tlet resx = Math.round( width / this.downSampleRatio );\n\t\tlet resy = Math.round( height / this.downSampleRatio );\n\t\tthis.renderTargetMaskDownSampleBuffer.setSize( resx, resy );\n\t\tthis.renderTargetBlurBuffer1.setSize( resx, resy );\n\t\tthis.renderTargetEdgeBuffer1.setSize( resx, resy );\n\t\tthis.separableBlurMaterial1.uniforms[ 'texSize' ].value.set( resx, resy );\n\n\t\tresx = Math.round( resx / 2 );\n\t\tresy = Math.round( resy / 2 );\n\n\t\tthis.renderTargetBlurBuffer2.setSize( resx, resy );\n\t\tthis.renderTargetEdgeBuffer2.setSize( resx, resy );\n\n\t\tthis.separableBlurMaterial2.uniforms[ 'texSize' ].value.set( resx, resy );\n\n\t}\n\n\tchangeVisibilityOfSelectedObjects( bVisible ) {\n\n\t\tconst cache = this._visibilityCache;\n\n\t\tfunction gatherSelectedMeshesCallBack( object ) {\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tif ( bVisible === true ) {\n\n\t\t\t\t\tobject.visible = cache.get( object );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcache.set( object, object.visible );\n\t\t\t\t\tobject.visible = bVisible;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < this.selectedObjects.length; i ++ ) {\n\n\t\t\tconst selectedObject = this.selectedObjects[ i ];\n\t\t\tselectedObject.traverse( gatherSelectedMeshesCallBack );\n\n\t\t}\n\n\t}\n\n\tchangeVisibilityOfNonSelectedObjects( bVisible ) {\n\n\t\tconst cache = this._visibilityCache;\n\t\tconst selectedMeshes = [];\n\n\t\tfunction gatherSelectedMeshesCallBack( object ) {\n\n\t\t\tif ( object.isMesh ) selectedMeshes.push( object );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < this.selectedObjects.length; i ++ ) {\n\n\t\t\tconst selectedObject = this.selectedObjects[ i ];\n\t\t\tselectedObject.traverse( gatherSelectedMeshesCallBack );\n\n\t\t}\n\n\t\tfunction VisibilityChangeCallBack( object ) {\n\n\t\t\tif ( object.isMesh || object.isSprite ) {\n\n\t\t\t\t// only meshes and sprites are supported by OutlinePass\n\n\t\t\t\tlet bFound = false;\n\n\t\t\t\tfor ( let i = 0; i < selectedMeshes.length; i ++ ) {\n\n\t\t\t\t\tconst selectedObjectId = selectedMeshes[ i ].id;\n\n\t\t\t\t\tif ( selectedObjectId === object.id ) {\n\n\t\t\t\t\t\tbFound = true;\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\tif ( bFound === false ) {\n\n\t\t\t\t\tconst visibility = object.visible;\n\n\t\t\t\t\tif ( bVisible === false || cache.get( object ) === true ) {\n\n\t\t\t\t\t\tobject.visible = bVisible;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcache.set( object, visibility );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isPoints || object.isLine ) {\n\n\t\t\t\t// the visibilty of points and lines is always set to false in order to\n\t\t\t\t// not affect the outline computation\n\n\t\t\t\tif ( bVisible === true ) {\n\n\t\t\t\t\tobject.visible = cache.get( object ); // restore\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcache.set( object, object.visible );\n\t\t\t\t\tobject.visible = bVisible;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.renderScene.traverse( VisibilityChangeCallBack );\n\n\t}\n\n\tupdateTextureMatrix() {\n\n\t\tthis.textureMatrix.set( 0.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\tthis.textureMatrix.multiply( this.renderCamera.projectionMatrix );\n\t\tthis.textureMatrix.multiply( this.renderCamera.matrixWorldInverse );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer, deltaTime, maskActive ) {\n\n\t\tif ( this.selectedObjects.length > 0 ) {\n\n\t\t\trenderer.getClearColor( this._oldClearColor );\n\t\t\tthis.oldClearAlpha = renderer.getClearAlpha();\n\t\t\tconst oldAutoClear = renderer.autoClear;\n\n\t\t\trenderer.autoClear = false;\n\n\t\t\tif ( maskActive ) renderer.state.buffers.stencil.setTest( false );\n\n\t\t\trenderer.setClearColor( 0xffffff, 1 );\n\n\t\t\t// Make selected objects invisible\n\t\t\tthis.changeVisibilityOfSelectedObjects( false );\n\n\t\t\tconst currentBackground = this.renderScene.background;\n\t\t\tthis.renderScene.background = null;\n\n\t\t\t// 1. Draw Non Selected objects in the depth buffer\n\t\t\tthis.renderScene.overrideMaterial = this.depthMaterial;\n\t\t\trenderer.setRenderTarget( this.renderTargetDepthBuffer );\n\t\t\trenderer.clear();\n\t\t\trenderer.render( this.renderScene, this.renderCamera );\n\n\t\t\t// Make selected objects visible\n\t\t\tthis.changeVisibilityOfSelectedObjects( true );\n\t\t\tthis._visibilityCache.clear();\n\n\t\t\t// Update Texture Matrix for Depth compare\n\t\t\tthis.updateTextureMatrix();\n\n\t\t\t// Make non selected objects invisible, and draw only the selected objects, by comparing the depth buffer of non selected objects\n\t\t\tthis.changeVisibilityOfNonSelectedObjects( false );\n\t\t\tthis.renderScene.overrideMaterial = this.prepareMaskMaterial;\n\t\t\tthis.prepareMaskMaterial.uniforms[ 'cameraNearFar' ].value.set( this.renderCamera.near, this.renderCamera.far );\n\t\t\tthis.prepareMaskMaterial.uniforms[ 'depthTexture' ].value = this.renderTargetDepthBuffer.texture;\n\t\t\tthis.prepareMaskMaterial.uniforms[ 'textureMatrix' ].value = this.textureMatrix;\n\t\t\trenderer.setRenderTarget( this.renderTargetMaskBuffer );\n\t\t\trenderer.clear();\n\t\t\trenderer.render( this.renderScene, this.renderCamera );\n\t\t\tthis.renderScene.overrideMaterial = null;\n\t\t\tthis.changeVisibilityOfNonSelectedObjects( true );\n\t\t\tthis._visibilityCache.clear();\n\n\t\t\tthis.renderScene.background = currentBackground;\n\n\t\t\t// 2. Downsample to Half resolution\n\t\t\tthis.fsQuad.material = this.materialCopy;\n\t\t\tthis.copyUniforms[ 'tDiffuse' ].value = this.renderTargetMaskBuffer.texture;\n\t\t\trenderer.setRenderTarget( this.renderTargetMaskDownSampleBuffer );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t\tthis.tempPulseColor1.copy( this.visibleEdgeColor );\n\t\t\tthis.tempPulseColor2.copy( this.hiddenEdgeColor );\n\n\t\t\tif ( this.pulsePeriod > 0 ) {\n\n\t\t\t\tconst scalar = ( 1 + 0.25 ) / 2 + Math.cos( performance.now() * 0.01 / this.pulsePeriod ) * ( 1.0 - 0.25 ) / 2;\n\t\t\t\tthis.tempPulseColor1.multiplyScalar( scalar );\n\t\t\t\tthis.tempPulseColor2.multiplyScalar( scalar );\n\n\t\t\t}\n\n\t\t\t// 3. Apply Edge Detection Pass\n\t\t\tthis.fsQuad.material = this.edgeDetectionMaterial;\n\t\t\tthis.edgeDetectionMaterial.uniforms[ 'maskTexture' ].value = this.renderTargetMaskDownSampleBuffer.texture;\n\t\t\tthis.edgeDetectionMaterial.uniforms[ 'texSize' ].value.set( this.renderTargetMaskDownSampleBuffer.width, this.renderTargetMaskDownSampleBuffer.height );\n\t\t\tthis.edgeDetectionMaterial.uniforms[ 'visibleEdgeColor' ].value = this.tempPulseColor1;\n\t\t\tthis.edgeDetectionMaterial.uniforms[ 'hiddenEdgeColor' ].value = this.tempPulseColor2;\n\t\t\trenderer.setRenderTarget( this.renderTargetEdgeBuffer1 );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t\t// 4. Apply Blur on Half res\n\t\t\tthis.fsQuad.material = this.separableBlurMaterial1;\n\t\t\tthis.separableBlurMaterial1.uniforms[ 'colorTexture' ].value = this.renderTargetEdgeBuffer1.texture;\n\t\t\tthis.separableBlurMaterial1.uniforms[ 'direction' ].value = OutlinePass.BlurDirectionX;\n\t\t\tthis.separableBlurMaterial1.uniforms[ 'kernelRadius' ].value = this.edgeThickness;\n\t\t\trenderer.setRenderTarget( this.renderTargetBlurBuffer1 );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\t\t\tthis.separableBlurMaterial1.uniforms[ 'colorTexture' ].value = this.renderTargetBlurBuffer1.texture;\n\t\t\tthis.separableBlurMaterial1.uniforms[ 'direction' ].value = OutlinePass.BlurDirectionY;\n\t\t\trenderer.setRenderTarget( this.renderTargetEdgeBuffer1 );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t\t// Apply Blur on quarter res\n\t\t\tthis.fsQuad.material = this.separableBlurMaterial2;\n\t\t\tthis.separableBlurMaterial2.uniforms[ 'colorTexture' ].value = this.renderTargetEdgeBuffer1.texture;\n\t\t\tthis.separableBlurMaterial2.uniforms[ 'direction' ].value = OutlinePass.BlurDirectionX;\n\t\t\trenderer.setRenderTarget( this.renderTargetBlurBuffer2 );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\t\t\tthis.separableBlurMaterial2.uniforms[ 'colorTexture' ].value = this.renderTargetBlurBuffer2.texture;\n\t\t\tthis.separableBlurMaterial2.uniforms[ 'direction' ].value = OutlinePass.BlurDirectionY;\n\t\t\trenderer.setRenderTarget( this.renderTargetEdgeBuffer2 );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t\t// Blend it additively over the input texture\n\t\t\tthis.fsQuad.material = this.overlayMaterial;\n\t\t\tthis.overlayMaterial.uniforms[ 'maskTexture' ].value = this.renderTargetMaskBuffer.texture;\n\t\t\tthis.overlayMaterial.uniforms[ 'edgeTexture1' ].value = this.renderTargetEdgeBuffer1.texture;\n\t\t\tthis.overlayMaterial.uniforms[ 'edgeTexture2' ].value = this.renderTargetEdgeBuffer2.texture;\n\t\t\tthis.overlayMaterial.uniforms[ 'patternTexture' ].value = this.patternTexture;\n\t\t\tthis.overlayMaterial.uniforms[ 'edgeStrength' ].value = this.edgeStrength;\n\t\t\tthis.overlayMaterial.uniforms[ 'edgeGlow' ].value = this.edgeGlow;\n\t\t\tthis.overlayMaterial.uniforms[ 'usePatternTexture' ].value = this.usePatternTexture;\n\n\n\t\t\tif ( maskActive ) renderer.state.buffers.stencil.setTest( true );\n\n\t\t\trenderer.setRenderTarget( readBuffer );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t\trenderer.setClearColor( this._oldClearColor, this.oldClearAlpha );\n\t\t\trenderer.autoClear = oldAutoClear;\n\n\t\t}\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\tthis.fsQuad.material = this.materialCopy;\n\t\t\tthis.copyUniforms[ 'tDiffuse' ].value = readBuffer.texture;\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t}\n\n\tgetPrepareMaskMaterial() {\n\n\t\treturn new ShaderMaterial( {\n\n\t\t\tuniforms: {\n\t\t\t\t'depthTexture': { value: null },\n\t\t\t\t'cameraNearFar': { value: new Vector2( 0.5, 0.5 ) },\n\t\t\t\t'textureMatrix': { value: null }\n\t\t\t},\n\n\t\t\tvertexShader:\n\t\t\t\t`#include \n\t\t\t\t#include \n\n\t\t\t\tvarying vec4 projTexCoord;\n\t\t\t\tvarying vec4 vPosition;\n\t\t\t\tuniform mat4 textureMatrix;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t\tvPosition = mvPosition;\n\n\t\t\t\t\tvec4 worldPosition = vec4( transformed, 1.0 );\n\n\t\t\t\t\t#ifdef USE_INSTANCING\n\n\t\t\t\t\t\tworldPosition = instanceMatrix * worldPosition;\n\n\t\t\t\t\t#endif\n\t\t\t\t\t\n\t\t\t\t\tworldPosition = modelMatrix * worldPosition;\n\n\t\t\t\t\tprojTexCoord = textureMatrix * worldPosition;\n\n\t\t\t\t}`,\n\n\t\t\tfragmentShader:\n\t\t\t\t`#include \n\t\t\t\tvarying vec4 vPosition;\n\t\t\t\tvarying vec4 projTexCoord;\n\t\t\t\tuniform sampler2D depthTexture;\n\t\t\t\tuniform vec2 cameraNearFar;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tfloat depth = unpackRGBAToDepth(texture2DProj( depthTexture, projTexCoord ));\n\t\t\t\t\tfloat viewZ = - DEPTH_TO_VIEW_Z( depth, cameraNearFar.x, cameraNearFar.y );\n\t\t\t\t\tfloat depthTest = (-vPosition.z > viewZ) ? 1.0 : 0.0;\n\t\t\t\t\tgl_FragColor = vec4(0.0, depthTest, 1.0, 1.0);\n\n\t\t\t\t}`\n\n\t\t} );\n\n\t}\n\n\tgetEdgeDetectionMaterial() {\n\n\t\treturn new ShaderMaterial( {\n\n\t\t\tuniforms: {\n\t\t\t\t'maskTexture': { value: null },\n\t\t\t\t'texSize': { value: new Vector2( 0.5, 0.5 ) },\n\t\t\t\t'visibleEdgeColor': { value: new Vector3( 1.0, 1.0, 1.0 ) },\n\t\t\t\t'hiddenEdgeColor': { value: new Vector3( 1.0, 1.0, 1.0 ) },\n\t\t\t},\n\n\t\t\tvertexShader:\n\t\t\t\t`varying vec2 vUv;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n\t\t\tfragmentShader:\n\t\t\t\t`varying vec2 vUv;\n\n\t\t\t\tuniform sampler2D maskTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec3 visibleEdgeColor;\n\t\t\t\tuniform vec3 hiddenEdgeColor;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tvec4 uvOffset = vec4(1.0, 0.0, 0.0, 1.0) * vec4(invSize, invSize);\n\t\t\t\t\tvec4 c1 = texture2D( maskTexture, vUv + uvOffset.xy);\n\t\t\t\t\tvec4 c2 = texture2D( maskTexture, vUv - uvOffset.xy);\n\t\t\t\t\tvec4 c3 = texture2D( maskTexture, vUv + uvOffset.yw);\n\t\t\t\t\tvec4 c4 = texture2D( maskTexture, vUv - uvOffset.yw);\n\t\t\t\t\tfloat diff1 = (c1.r - c2.r)*0.5;\n\t\t\t\t\tfloat diff2 = (c3.r - c4.r)*0.5;\n\t\t\t\t\tfloat d = length( vec2(diff1, diff2) );\n\t\t\t\t\tfloat a1 = min(c1.g, c2.g);\n\t\t\t\t\tfloat a2 = min(c3.g, c4.g);\n\t\t\t\t\tfloat visibilityFactor = min(a1, a2);\n\t\t\t\t\tvec3 edgeColor = 1.0 - visibilityFactor > 0.001 ? visibleEdgeColor : hiddenEdgeColor;\n\t\t\t\t\tgl_FragColor = vec4(edgeColor, 1.0) * vec4(d);\n\t\t\t\t}`\n\t\t} );\n\n\t}\n\n\tgetSeperableBlurMaterial( maxRadius ) {\n\n\t\treturn new ShaderMaterial( {\n\n\t\t\tdefines: {\n\t\t\t\t'MAX_RADIUS': maxRadius,\n\t\t\t},\n\n\t\t\tuniforms: {\n\t\t\t\t'colorTexture': { value: null },\n\t\t\t\t'texSize': { value: new Vector2( 0.5, 0.5 ) },\n\t\t\t\t'direction': { value: new Vector2( 0.5, 0.5 ) },\n\t\t\t\t'kernelRadius': { value: 1.0 }\n\t\t\t},\n\n\t\t\tvertexShader:\n\t\t\t\t`varying vec2 vUv;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n\t\t\tfragmentShader:\n\t\t\t\t`#include \n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec2 direction;\n\t\t\t\tuniform float kernelRadius;\n\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tfloat sigma = kernelRadius/2.0;\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, sigma);\n\t\t\t\t\tvec4 diffuseSum = texture2D( colorTexture, vUv) * weightSum;\n\t\t\t\t\tvec2 delta = direction * invSize * kernelRadius/float(MAX_RADIUS);\n\t\t\t\t\tvec2 uvOffset = delta;\n\t\t\t\t\tfor( int i = 1; i <= MAX_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat x = kernelRadius * float(i) / float(MAX_RADIUS);\n\t\t\t\t\t\tfloat w = gaussianPdf(x, sigma);\n\t\t\t\t\t\tvec4 sample1 = texture2D( colorTexture, vUv + uvOffset);\n\t\t\t\t\t\tvec4 sample2 = texture2D( colorTexture, vUv - uvOffset);\n\t\t\t\t\t\tdiffuseSum += ((sample1 + sample2) * w);\n\t\t\t\t\t\tweightSum += (2.0 * w);\n\t\t\t\t\t\tuvOffset += delta;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = diffuseSum/weightSum;\n\t\t\t\t}`\n\t\t} );\n\n\t}\n\n\tgetOverlayMaterial() {\n\n\t\treturn new ShaderMaterial( {\n\n\t\t\tuniforms: {\n\t\t\t\t'maskTexture': { value: null },\n\t\t\t\t'edgeTexture1': { value: null },\n\t\t\t\t'edgeTexture2': { value: null },\n\t\t\t\t'patternTexture': { value: null },\n\t\t\t\t'edgeStrength': { value: 1.0 },\n\t\t\t\t'edgeGlow': { value: 1.0 },\n\t\t\t\t'usePatternTexture': { value: 0.0 }\n\t\t\t},\n\n\t\t\tvertexShader:\n\t\t\t\t`varying vec2 vUv;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n\t\t\tfragmentShader:\n\t\t\t\t`varying vec2 vUv;\n\n\t\t\t\tuniform sampler2D maskTexture;\n\t\t\t\tuniform sampler2D edgeTexture1;\n\t\t\t\tuniform sampler2D edgeTexture2;\n\t\t\t\tuniform sampler2D patternTexture;\n\t\t\t\tuniform float edgeStrength;\n\t\t\t\tuniform float edgeGlow;\n\t\t\t\tuniform bool usePatternTexture;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec4 edgeValue1 = texture2D(edgeTexture1, vUv);\n\t\t\t\t\tvec4 edgeValue2 = texture2D(edgeTexture2, vUv);\n\t\t\t\t\tvec4 maskColor = texture2D(maskTexture, vUv);\n\t\t\t\t\tvec4 patternColor = texture2D(patternTexture, 6.0 * vUv);\n\t\t\t\t\tfloat visibilityFactor = 1.0 - maskColor.g > 0.0 ? 1.0 : 0.5;\n\t\t\t\t\tvec4 edgeValue = edgeValue1 + edgeValue2 * edgeGlow;\n\t\t\t\t\tvec4 finalColor = edgeStrength * maskColor.r * edgeValue;\n\t\t\t\t\tif(usePatternTexture)\n\t\t\t\t\t\tfinalColor += + visibilityFactor * (1.0 - maskColor.r) * (1.0 - patternColor.r);\n\t\t\t\t\tgl_FragColor = finalColor;\n\t\t\t\t}`,\n\t\t\tblending: AdditiveBlending,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\ttransparent: true\n\t\t} );\n\n\t}\n\n}\n\nOutlinePass.BlurDirectionX = new Vector2( 1.0, 0.0 );\nOutlinePass.BlurDirectionY = new Vector2( 0.0, 1.0 );\n\nexport { OutlinePass };\n", "const OutputShader = {\n\n\tname: 'OutputShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'toneMappingExposure': { value: 1 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\t\tprecision highp float;\n\n\t\tuniform mat4 modelViewMatrix;\n\t\tuniform mat4 projectionMatrix;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\t\n\t\tprecision highp float;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\t#include \n\t\t#include \n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = texture2D( tDiffuse, vUv );\n\n\t\t\t// tone mapping\n\n\t\t\t#ifdef LINEAR_TONE_MAPPING\n\n\t\t\t\tgl_FragColor.rgb = LinearToneMapping( gl_FragColor.rgb );\n\n\t\t\t#elif defined( REINHARD_TONE_MAPPING )\n\n\t\t\t\tgl_FragColor.rgb = ReinhardToneMapping( gl_FragColor.rgb );\n\n\t\t\t#elif defined( CINEON_TONE_MAPPING )\n\n\t\t\t\tgl_FragColor.rgb = OptimizedCineonToneMapping( gl_FragColor.rgb );\n\n\t\t\t#elif defined( ACES_FILMIC_TONE_MAPPING )\n\n\t\t\t\tgl_FragColor.rgb = ACESFilmicToneMapping( gl_FragColor.rgb );\n\n\t\t\t#elif defined( AGX_TONE_MAPPING )\n\n\t\t\t\tgl_FragColor.rgb = AgXToneMapping( gl_FragColor.rgb );\n\n\t\t\t#elif defined( NEUTRAL_TONE_MAPPING )\n\n\t\t\t\tgl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb );\n\n\t\t\t#endif\n\n\t\t\t// color space\n\n\t\t\t#ifdef SRGB_TRANSFER\n\n\t\t\t\tgl_FragColor = sRGBTransferOETF( gl_FragColor );\n\n\t\t\t#endif\n\n\t\t}`\n\n};\n\nexport { OutputShader };\n", "import {\n\tColorManagement,\n\tRawShaderMaterial,\n\tUniformsUtils,\n\tLinearToneMapping,\n\tReinhardToneMapping,\n\tCineonToneMapping,\n\tAgXToneMapping,\n\tACESFilmicToneMapping,\n\tNeutralToneMapping,\n\tSRGBTransfer\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { OutputShader } from '../shaders/OutputShader.js';\n\nclass OutputPass extends Pass {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t//\n\n\t\tconst shader = OutputShader;\n\n\t\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\tthis.material = new RawShaderMaterial( {\n\t\t\tname: shader.name,\n\t\t\tuniforms: this.uniforms,\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader\n\t\t} );\n\n\t\tthis.fsQuad = new FullScreenQuad( this.material );\n\n\t\t// internal cache\n\n\t\tthis._outputColorSpace = null;\n\t\tthis._toneMapping = null;\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive */ ) {\n\n\t\tthis.uniforms[ 'tDiffuse' ].value = readBuffer.texture;\n\t\tthis.uniforms[ 'toneMappingExposure' ].value = renderer.toneMappingExposure;\n\n\t\t// rebuild defines if required\n\n\t\tif ( this._outputColorSpace !== renderer.outputColorSpace || this._toneMapping !== renderer.toneMapping ) {\n\n\t\t\tthis._outputColorSpace = renderer.outputColorSpace;\n\t\t\tthis._toneMapping = renderer.toneMapping;\n\n\t\t\tthis.material.defines = {};\n\n\t\t\tif ( ColorManagement.getTransfer( this._outputColorSpace ) === SRGBTransfer ) this.material.defines.SRGB_TRANSFER = '';\n\n\t\t\tif ( this._toneMapping === LinearToneMapping ) this.material.defines.LINEAR_TONE_MAPPING = '';\n\t\t\telse if ( this._toneMapping === ReinhardToneMapping ) this.material.defines.REINHARD_TONE_MAPPING = '';\n\t\t\telse if ( this._toneMapping === CineonToneMapping ) this.material.defines.CINEON_TONE_MAPPING = '';\n\t\t\telse if ( this._toneMapping === ACESFilmicToneMapping ) this.material.defines.ACES_FILMIC_TONE_MAPPING = '';\n\t\t\telse if ( this._toneMapping === AgXToneMapping ) this.material.defines.AGX_TONE_MAPPING = '';\n\t\t\telse if ( this._toneMapping === NeutralToneMapping ) this.material.defines.NEUTRAL_TONE_MAPPING = '';\n\n\t\t\tthis.material.needsUpdate = true;\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.renderToScreen === true ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\tif ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tthis.material.dispose();\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nexport { OutputPass };\n", "import {\n\tColor\n} from 'three';\nimport { Pass } from './Pass.js';\n\nclass RenderPass extends Pass {\n\n\tconstructor( scene, camera, overrideMaterial = null, clearColor = null, clearAlpha = null ) {\n\n\t\tsuper();\n\n\t\tthis.scene = scene;\n\t\tthis.camera = camera;\n\n\t\tthis.overrideMaterial = overrideMaterial;\n\n\t\tthis.clearColor = clearColor;\n\t\tthis.clearAlpha = clearAlpha;\n\n\t\tthis.clear = true;\n\t\tthis.clearDepth = false;\n\t\tthis.needsSwap = false;\n\t\tthis._oldClearColor = new Color();\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tconst oldAutoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tlet oldClearAlpha, oldOverrideMaterial;\n\n\t\tif ( this.overrideMaterial !== null ) {\n\n\t\t\toldOverrideMaterial = this.scene.overrideMaterial;\n\n\t\t\tthis.scene.overrideMaterial = this.overrideMaterial;\n\n\t\t}\n\n\t\tif ( this.clearColor !== null ) {\n\n\t\t\trenderer.getClearColor( this._oldClearColor );\n\t\t\trenderer.setClearColor( this.clearColor, renderer.getClearAlpha() );\n\n\t\t}\n\n\t\tif ( this.clearAlpha !== null ) {\n\n\t\t\toldClearAlpha = renderer.getClearAlpha();\n\t\t\trenderer.setClearAlpha( this.clearAlpha );\n\n\t\t}\n\n\t\tif ( this.clearDepth == true ) {\n\n\t\t\trenderer.clearDepth();\n\n\t\t}\n\n\t\trenderer.setRenderTarget( this.renderToScreen ? null : readBuffer );\n\n\t\tif ( this.clear === true ) {\n\n\t\t\t// TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\trenderer.render( this.scene, this.camera );\n\n\t\t// restore\n\n\t\tif ( this.clearColor !== null ) {\n\n\t\t\trenderer.setClearColor( this._oldClearColor );\n\n\t\t}\n\n\t\tif ( this.clearAlpha !== null ) {\n\n\t\t\trenderer.setClearAlpha( oldClearAlpha );\n\n\t\t}\n\n\t\tif ( this.overrideMaterial !== null ) {\n\n\t\t\tthis.scene.overrideMaterial = oldOverrideMaterial;\n\n\t\t}\n\n\t\trenderer.autoClear = oldAutoClear;\n\n\t}\n\n}\n\nexport { RenderPass };\n", "import {\n\tWebGLRenderTarget,\n\tMeshNormalMaterial,\n\tShaderMaterial,\n\tVector2,\n\tVector4,\n\tDepthTexture,\n\tNearestFilter,\n\tHalfFloatType\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\n\nclass RenderPixelatedPass extends Pass {\n\n\tconstructor( pixelSize, scene, camera, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.pixelSize = pixelSize;\n\t\tthis.resolution = new Vector2();\n\t\tthis.renderResolution = new Vector2();\n\n\t\tthis.pixelatedMaterial = this.createPixelatedMaterial();\n\t\tthis.normalMaterial = new MeshNormalMaterial();\n\n\t\tthis.fsQuad = new FullScreenQuad( this.pixelatedMaterial );\n\t\tthis.scene = scene;\n\t\tthis.camera = camera;\n\n\t\tthis.normalEdgeStrength = options.normalEdgeStrength || 0.3;\n\t\tthis.depthEdgeStrength = options.depthEdgeStrength || 0.4;\n\n\t\tthis.beautyRenderTarget = new WebGLRenderTarget();\n\t\tthis.beautyRenderTarget.texture.minFilter = NearestFilter;\n\t\tthis.beautyRenderTarget.texture.magFilter = NearestFilter;\n\t\tthis.beautyRenderTarget.texture.type = HalfFloatType;\n\t\tthis.beautyRenderTarget.depthTexture = new DepthTexture();\n\n\t\tthis.normalRenderTarget = new WebGLRenderTarget();\n\t\tthis.normalRenderTarget.texture.minFilter = NearestFilter;\n\t\tthis.normalRenderTarget.texture.magFilter = NearestFilter;\n\t\tthis.normalRenderTarget.texture.type = HalfFloatType;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.beautyRenderTarget.dispose();\n\t\tthis.normalRenderTarget.dispose();\n\n\t\tthis.pixelatedMaterial.dispose();\n\t\tthis.normalMaterial.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis.resolution.set( width, height );\n\t\tthis.renderResolution.set( ( width / this.pixelSize ) | 0, ( height / this.pixelSize ) | 0 );\n\t\tconst { x, y } = this.renderResolution;\n\t\tthis.beautyRenderTarget.setSize( x, y );\n\t\tthis.normalRenderTarget.setSize( x, y );\n\t\tthis.fsQuad.material.uniforms.resolution.value.set( x, y, 1 / x, 1 / y );\n\n\t}\n\n\tsetPixelSize( pixelSize ) {\n\n\t\tthis.pixelSize = pixelSize;\n\t\tthis.setSize( this.resolution.x, this.resolution.y );\n\n\t}\n\n\trender( renderer, writeBuffer ) {\n\n\t\tconst uniforms = this.fsQuad.material.uniforms;\n\t\tuniforms.normalEdgeStrength.value = this.normalEdgeStrength;\n\t\tuniforms.depthEdgeStrength.value = this.depthEdgeStrength;\n\n\t\trenderer.setRenderTarget( this.beautyRenderTarget );\n\t\trenderer.render( this.scene, this.camera );\n\n\t\tconst overrideMaterial_old = this.scene.overrideMaterial;\n\t\trenderer.setRenderTarget( this.normalRenderTarget );\n\t\tthis.scene.overrideMaterial = this.normalMaterial;\n\t\trenderer.render( this.scene, this.camera );\n\t\tthis.scene.overrideMaterial = overrideMaterial_old;\n\n\t\tuniforms.tDiffuse.value = this.beautyRenderTarget.texture;\n\t\tuniforms.tDepth.value = this.beautyRenderTarget.depthTexture;\n\t\tuniforms.tNormal.value = this.normalRenderTarget.texture;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\n\t\t\tif ( this.clear ) renderer.clear();\n\n\t\t}\n\n\t\tthis.fsQuad.render( renderer );\n\n\t}\n\n\tcreatePixelatedMaterial() {\n\n\t\treturn new ShaderMaterial( {\n\t\t\tuniforms: {\n\t\t\t\ttDiffuse: { value: null },\n\t\t\t\ttDepth: { value: null },\n\t\t\t\ttNormal: { value: null },\n\t\t\t\tresolution: {\n\t\t\t\t\tvalue: new Vector4(\n\t\t\t\t\t\tthis.renderResolution.x,\n\t\t\t\t\t\tthis.renderResolution.y,\n\t\t\t\t\t\t1 / this.renderResolution.x,\n\t\t\t\t\t\t1 / this.renderResolution.y,\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\tnormalEdgeStrength: { value: 0 },\n\t\t\t\tdepthEdgeStrength: { value: 0 }\n\t\t\t},\n\t\t\tvertexShader: /* glsl */`\n\t\t\t\tvarying vec2 vUv;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t\t\t}\n\t\t\t`,\n\t\t\tfragmentShader: /* glsl */`\n\t\t\t\tuniform sampler2D tDiffuse;\n\t\t\t\tuniform sampler2D tDepth;\n\t\t\t\tuniform sampler2D tNormal;\n\t\t\t\tuniform vec4 resolution;\n\t\t\t\tuniform float normalEdgeStrength;\n\t\t\t\tuniform float depthEdgeStrength;\n\t\t\t\tvarying vec2 vUv;\n\n\t\t\t\tfloat getDepth(int x, int y) {\n\n\t\t\t\t\treturn texture2D( tDepth, vUv + vec2(x, y) * resolution.zw ).r;\n\n\t\t\t\t}\n\n\t\t\t\tvec3 getNormal(int x, int y) {\n\n\t\t\t\t\treturn texture2D( tNormal, vUv + vec2(x, y) * resolution.zw ).rgb * 2.0 - 1.0;\n\n\t\t\t\t}\n\n\t\t\t\tfloat depthEdgeIndicator(float depth, vec3 normal) {\n\n\t\t\t\t\tfloat diff = 0.0;\n\t\t\t\t\tdiff += clamp(getDepth(1, 0) - depth, 0.0, 1.0);\n\t\t\t\t\tdiff += clamp(getDepth(-1, 0) - depth, 0.0, 1.0);\n\t\t\t\t\tdiff += clamp(getDepth(0, 1) - depth, 0.0, 1.0);\n\t\t\t\t\tdiff += clamp(getDepth(0, -1) - depth, 0.0, 1.0);\n\t\t\t\t\treturn floor(smoothstep(0.01, 0.02, diff) * 2.) / 2.;\n\n\t\t\t\t}\n\n\t\t\t\tfloat neighborNormalEdgeIndicator(int x, int y, float depth, vec3 normal) {\n\n\t\t\t\t\tfloat depthDiff = getDepth(x, y) - depth;\n\t\t\t\t\tvec3 neighborNormal = getNormal(x, y);\n\n\t\t\t\t\t// Edge pixels should yield to faces who's normals are closer to the bias normal.\n\t\t\t\t\tvec3 normalEdgeBias = vec3(1., 1., 1.); // This should probably be a parameter.\n\t\t\t\t\tfloat normalDiff = dot(normal - neighborNormal, normalEdgeBias);\n\t\t\t\t\tfloat normalIndicator = clamp(smoothstep(-.01, .01, normalDiff), 0.0, 1.0);\n\n\t\t\t\t\t// Only the shallower pixel should detect the normal edge.\n\t\t\t\t\tfloat depthIndicator = clamp(sign(depthDiff * .25 + .0025), 0.0, 1.0);\n\n\t\t\t\t\treturn (1.0 - dot(normal, neighborNormal)) * depthIndicator * normalIndicator;\n\n\t\t\t\t}\n\n\t\t\t\tfloat normalEdgeIndicator(float depth, vec3 normal) {\n\n\t\t\t\t\tfloat indicator = 0.0;\n\n\t\t\t\t\tindicator += neighborNormalEdgeIndicator(0, -1, depth, normal);\n\t\t\t\t\tindicator += neighborNormalEdgeIndicator(0, 1, depth, normal);\n\t\t\t\t\tindicator += neighborNormalEdgeIndicator(-1, 0, depth, normal);\n\t\t\t\t\tindicator += neighborNormalEdgeIndicator(1, 0, depth, normal);\n\n\t\t\t\t\treturn step(0.1, indicator);\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\n\t\t\t\t\tfloat depth = 0.0;\n\t\t\t\t\tvec3 normal = vec3(0.0);\n\n\t\t\t\t\tif (depthEdgeStrength > 0.0 || normalEdgeStrength > 0.0) {\n\n\t\t\t\t\t\tdepth = getDepth(0, 0);\n\t\t\t\t\t\tnormal = getNormal(0, 0);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat dei = 0.0;\n\t\t\t\t\tif (depthEdgeStrength > 0.0)\n\t\t\t\t\t\tdei = depthEdgeIndicator(depth, normal);\n\n\t\t\t\t\tfloat nei = 0.0;\n\t\t\t\t\tif (normalEdgeStrength > 0.0)\n\t\t\t\t\t\tnei = normalEdgeIndicator(depth, normal);\n\n\t\t\t\t\tfloat Strength = dei > 0.0 ? (1.0 - depthEdgeStrength * dei) : (1.0 + normalEdgeStrength * nei);\n\n\t\t\t\t\tgl_FragColor = texel * Strength;\n\n\t\t\t\t}\n\t\t\t`\n\t\t} );\n\n\t}\n\n}\n\nexport { RenderPixelatedPass };\n", "import {\n\tMatrix4,\n\tVector2\n} from 'three';\n\n/**\n * TODO\n */\n\nconst SAOShader = {\n\n\tname: 'SAOShader',\n\n\tdefines: {\n\t\t'NUM_SAMPLES': 7,\n\t\t'NUM_RINGS': 4,\n\t\t'DIFFUSE_TEXTURE': 0,\n\t\t'PERSPECTIVE_CAMERA': 1\n\t},\n\n\tuniforms: {\n\n\t\t'tDepth': { value: null },\n\t\t'tDiffuse': { value: null },\n\t\t'tNormal': { value: null },\n\t\t'size': { value: new Vector2( 512, 512 ) },\n\n\t\t'cameraNear': { value: 1 },\n\t\t'cameraFar': { value: 100 },\n\t\t'cameraProjectionMatrix': { value: new Matrix4() },\n\t\t'cameraInverseProjectionMatrix': { value: new Matrix4() },\n\n\t\t'scale': { value: 1.0 },\n\t\t'intensity': { value: 0.1 },\n\t\t'bias': { value: 0.5 },\n\n\t\t'minResolution': { value: 0.0 },\n\t\t'kernelRadius': { value: 100.0 },\n\t\t'randomSeed': { value: 0.0 }\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\t\t#include \n\n\t\tvarying vec2 vUv;\n\n\t\t#if DIFFUSE_TEXTURE == 1\n\t\tuniform sampler2D tDiffuse;\n\t\t#endif\n\n\t\tuniform highp sampler2D tDepth;\n\t\tuniform highp sampler2D tNormal;\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tuniform mat4 cameraProjectionMatrix;\n\t\tuniform mat4 cameraInverseProjectionMatrix;\n\n\t\tuniform float scale;\n\t\tuniform float intensity;\n\t\tuniform float bias;\n\t\tuniform float kernelRadius;\n\t\tuniform float minResolution;\n\t\tuniform vec2 size;\n\t\tuniform float randomSeed;\n\n\t\t// RGBA depth\n\n\t\t#include \n\n\t\tvec4 getDefaultColor( const in vec2 screenPosition ) {\n\t\t\t#if DIFFUSE_TEXTURE == 1\n\t\t\treturn texture2D( tDiffuse, vUv );\n\t\t\t#else\n\t\t\treturn vec4( 1.0 );\n\t\t\t#endif\n\t\t}\n\n\t\tfloat getDepth( const in vec2 screenPosition ) {\n\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\t\t}\n\n\t\tfloat getViewZ( const in float depth ) {\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\t\t\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#else\n\t\t\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#endif\n\t\t}\n\n\t\tvec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) {\n\t\t\tfloat clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3];\n\t\t\tvec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 );\n\t\t\tclipPosition *= clipW; // unprojection.\n\n\t\t\treturn ( cameraInverseProjectionMatrix * clipPosition ).xyz;\n\t\t}\n\n\t\tvec3 getViewNormal( const in vec3 viewPosition, const in vec2 screenPosition ) {\n\t\t\treturn unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );\n\t\t}\n\n\t\tfloat scaleDividedByCameraFar;\n\t\tfloat minResolutionMultipliedByCameraFar;\n\n\t\tfloat getOcclusion( const in vec3 centerViewPosition, const in vec3 centerViewNormal, const in vec3 sampleViewPosition ) {\n\t\t\tvec3 viewDelta = sampleViewPosition - centerViewPosition;\n\t\t\tfloat viewDistance = length( viewDelta );\n\t\t\tfloat scaledScreenDistance = scaleDividedByCameraFar * viewDistance;\n\n\t\t\treturn max(0.0, (dot(centerViewNormal, viewDelta) - minResolutionMultipliedByCameraFar) / scaledScreenDistance - bias) / (1.0 + pow2( scaledScreenDistance ) );\n\t\t}\n\n\t\t// moving costly divides into consts\n\t\tconst float ANGLE_STEP = PI2 * float( NUM_RINGS ) / float( NUM_SAMPLES );\n\t\tconst float INV_NUM_SAMPLES = 1.0 / float( NUM_SAMPLES );\n\n\t\tfloat getAmbientOcclusion( const in vec3 centerViewPosition ) {\n\t\t\t// precompute some variables require in getOcclusion.\n\t\t\tscaleDividedByCameraFar = scale / cameraFar;\n\t\t\tminResolutionMultipliedByCameraFar = minResolution * cameraFar;\n\t\t\tvec3 centerViewNormal = getViewNormal( centerViewPosition, vUv );\n\n\t\t\t// jsfiddle that shows sample pattern: https://jsfiddle.net/a16ff1p7/\n\t\t\tfloat angle = rand( vUv + randomSeed ) * PI2;\n\t\t\tvec2 radius = vec2( kernelRadius * INV_NUM_SAMPLES ) / size;\n\t\t\tvec2 radiusStep = radius;\n\n\t\t\tfloat occlusionSum = 0.0;\n\t\t\tfloat weightSum = 0.0;\n\n\t\t\tfor( int i = 0; i < NUM_SAMPLES; i ++ ) {\n\t\t\t\tvec2 sampleUv = vUv + vec2( cos( angle ), sin( angle ) ) * radius;\n\t\t\t\tradius += radiusStep;\n\t\t\t\tangle += ANGLE_STEP;\n\n\t\t\t\tfloat sampleDepth = getDepth( sampleUv );\n\t\t\t\tif( sampleDepth >= ( 1.0 - EPSILON ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfloat sampleViewZ = getViewZ( sampleDepth );\n\t\t\t\tvec3 sampleViewPosition = getViewPosition( sampleUv, sampleDepth, sampleViewZ );\n\t\t\t\tocclusionSum += getOcclusion( centerViewPosition, centerViewNormal, sampleViewPosition );\n\t\t\t\tweightSum += 1.0;\n\t\t\t}\n\n\t\t\tif( weightSum == 0.0 ) discard;\n\n\t\t\treturn occlusionSum * ( intensity / weightSum );\n\t\t}\n\n\t\tvoid main() {\n\t\t\tfloat centerDepth = getDepth( vUv );\n\t\t\tif( centerDepth >= ( 1.0 - EPSILON ) ) {\n\t\t\t\tdiscard;\n\t\t\t}\n\n\t\t\tfloat centerViewZ = getViewZ( centerDepth );\n\t\t\tvec3 viewPosition = getViewPosition( vUv, centerDepth, centerViewZ );\n\n\t\t\tfloat ambientOcclusion = getAmbientOcclusion( viewPosition );\n\n\t\t\tgl_FragColor = getDefaultColor( vUv );\n\t\t\tgl_FragColor.xyz *= 1.0 - ambientOcclusion;\n\t\t}`\n\n};\n\nexport { SAOShader };\n", "import {\n\tVector2\n} from 'three';\n\n/**\n * TODO\n */\n\nconst DepthLimitedBlurShader = {\n\n\tname: 'DepthLimitedBlurShader',\n\n\tdefines: {\n\t\t'KERNEL_RADIUS': 4,\n\t\t'DEPTH_PACKING': 1,\n\t\t'PERSPECTIVE_CAMERA': 1\n\t},\n\n\tuniforms: {\n\t\t'tDiffuse': { value: null },\n\t\t'size': { value: new Vector2( 512, 512 ) },\n\t\t'sampleUvOffsets': { value: [ new Vector2( 0, 0 ) ] },\n\t\t'sampleWeights': { value: [ 1.0 ] },\n\t\t'tDepth': { value: null },\n\t\t'cameraNear': { value: 10 },\n\t\t'cameraFar': { value: 1000 },\n\t\t'depthCutoff': { value: 10 },\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\t#include \n\n\t\tuniform vec2 size;\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec2 vInvSize;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tvInvSize = 1.0 / size;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\t#include \n\t\t#include \n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tDepth;\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tuniform float depthCutoff;\n\n\t\tuniform vec2 sampleUvOffsets[ KERNEL_RADIUS + 1 ];\n\t\tuniform float sampleWeights[ KERNEL_RADIUS + 1 ];\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec2 vInvSize;\n\n\t\tfloat getDepth( const in vec2 screenPosition ) {\n\t\t\t#if DEPTH_PACKING == 1\n\t\t\treturn unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );\n\t\t\t#else\n\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\t\t\t#endif\n\t\t}\n\n\t\tfloat getViewZ( const in float depth ) {\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\t\t\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#else\n\t\t\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#endif\n\t\t}\n\n\t\tvoid main() {\n\t\t\tfloat depth = getDepth( vUv );\n\t\t\tif( depth >= ( 1.0 - EPSILON ) ) {\n\t\t\t\tdiscard;\n\t\t\t}\n\n\t\t\tfloat centerViewZ = -getViewZ( depth );\n\t\t\tbool rBreak = false, lBreak = false;\n\n\t\t\tfloat weightSum = sampleWeights[0];\n\t\t\tvec4 diffuseSum = texture2D( tDiffuse, vUv ) * weightSum;\n\n\t\t\tfor( int i = 1; i <= KERNEL_RADIUS; i ++ ) {\n\n\t\t\t\tfloat sampleWeight = sampleWeights[i];\n\t\t\t\tvec2 sampleUvOffset = sampleUvOffsets[i] * vInvSize;\n\n\t\t\t\tvec2 sampleUv = vUv + sampleUvOffset;\n\t\t\t\tfloat viewZ = -getViewZ( getDepth( sampleUv ) );\n\n\t\t\t\tif( abs( viewZ - centerViewZ ) > depthCutoff ) rBreak = true;\n\n\t\t\t\tif( ! rBreak ) {\n\t\t\t\t\tdiffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight;\n\t\t\t\t\tweightSum += sampleWeight;\n\t\t\t\t}\n\n\t\t\t\tsampleUv = vUv - sampleUvOffset;\n\t\t\t\tviewZ = -getViewZ( getDepth( sampleUv ) );\n\n\t\t\t\tif( abs( viewZ - centerViewZ ) > depthCutoff ) lBreak = true;\n\n\t\t\t\tif( ! lBreak ) {\n\t\t\t\t\tdiffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight;\n\t\t\t\t\tweightSum += sampleWeight;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgl_FragColor = diffuseSum / weightSum;\n\t\t}`\n\n};\n\nconst BlurShaderUtils = {\n\n\tcreateSampleWeights: function ( kernelRadius, stdDev ) {\n\n\t\tconst weights = [];\n\n\t\tfor ( let i = 0; i <= kernelRadius; i ++ ) {\n\n\t\t\tweights.push( gaussian( i, stdDev ) );\n\n\t\t}\n\n\t\treturn weights;\n\n\t},\n\n\tcreateSampleOffsets: function ( kernelRadius, uvIncrement ) {\n\n\t\tconst offsets = [];\n\n\t\tfor ( let i = 0; i <= kernelRadius; i ++ ) {\n\n\t\t\toffsets.push( uvIncrement.clone().multiplyScalar( i ) );\n\n\t\t}\n\n\t\treturn offsets;\n\n\t},\n\n\tconfigure: function ( material, kernelRadius, stdDev, uvIncrement ) {\n\n\t\tmaterial.defines[ 'KERNEL_RADIUS' ] = kernelRadius;\n\t\tmaterial.uniforms[ 'sampleUvOffsets' ].value = BlurShaderUtils.createSampleOffsets( kernelRadius, uvIncrement );\n\t\tmaterial.uniforms[ 'sampleWeights' ].value = BlurShaderUtils.createSampleWeights( kernelRadius, stdDev );\n\t\tmaterial.needsUpdate = true;\n\n\t}\n\n};\n\nfunction gaussian( x, stdDev ) {\n\n\treturn Math.exp( - ( x * x ) / ( 2.0 * ( stdDev * stdDev ) ) ) / ( Math.sqrt( 2.0 * Math.PI ) * stdDev );\n\n}\n\nexport { DepthLimitedBlurShader, BlurShaderUtils };\n", "import {\n\tAddEquation,\n\tColor,\n\tCustomBlending,\n\tDepthTexture,\n\tDstAlphaFactor,\n\tDstColorFactor,\n\tHalfFloatType,\n\tMeshNormalMaterial,\n\tNearestFilter,\n\tNoBlending,\n\tShaderMaterial,\n\tUniformsUtils,\n\tDepthStencilFormat,\n\tUnsignedInt248Type,\n\tVector2,\n\tWebGLRenderTarget,\n\tZeroFactor\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { SAOShader } from '../shaders/SAOShader.js';\nimport { DepthLimitedBlurShader } from '../shaders/DepthLimitedBlurShader.js';\nimport { BlurShaderUtils } from '../shaders/DepthLimitedBlurShader.js';\nimport { CopyShader } from '../shaders/CopyShader.js';\n\n/**\n * SAO implementation inspired from bhouston previous SAO work\n */\n\nclass SAOPass extends Pass {\n\n\tconstructor( scene, camera, resolution = new Vector2( 256, 256 ) ) {\n\n\t\tsuper();\n\n\t\tthis.scene = scene;\n\t\tthis.camera = camera;\n\n\t\tthis.clear = true;\n\t\tthis.needsSwap = false;\n\n\t\tthis.originalClearColor = new Color();\n\t\tthis._oldClearColor = new Color();\n\t\tthis.oldClearAlpha = 1;\n\n\t\tthis.params = {\n\t\t\toutput: 0,\n\t\t\tsaoBias: 0.5,\n\t\t\tsaoIntensity: 0.18,\n\t\t\tsaoScale: 1,\n\t\t\tsaoKernelRadius: 100,\n\t\t\tsaoMinResolution: 0,\n\t\t\tsaoBlur: true,\n\t\t\tsaoBlurRadius: 8,\n\t\t\tsaoBlurStdDev: 4,\n\t\t\tsaoBlurDepthCutoff: 0.01\n\t\t};\n\n\t\tthis.resolution = new Vector2( resolution.x, resolution.y );\n\n\t\tthis.saoRenderTarget = new WebGLRenderTarget( this.resolution.x, this.resolution.y, { type: HalfFloatType } );\n\t\tthis.blurIntermediateRenderTarget = this.saoRenderTarget.clone();\n\n\t\tconst depthTexture = new DepthTexture();\n\t\tdepthTexture.format = DepthStencilFormat;\n\t\tdepthTexture.type = UnsignedInt248Type;\n\n\t\tthis.normalRenderTarget = new WebGLRenderTarget( this.resolution.x, this.resolution.y, {\n\t\t\tminFilter: NearestFilter,\n\t\t\tmagFilter: NearestFilter,\n\t\t\ttype: HalfFloatType,\n\t\t\tdepthTexture: depthTexture\n\t\t} );\n\n\t\tthis.normalMaterial = new MeshNormalMaterial();\n\t\tthis.normalMaterial.blending = NoBlending;\n\n\t\tthis.saoMaterial = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, SAOShader.defines ),\n\t\t\tfragmentShader: SAOShader.fragmentShader,\n\t\t\tvertexShader: SAOShader.vertexShader,\n\t\t\tuniforms: UniformsUtils.clone( SAOShader.uniforms )\n\t\t} );\n\t\tthis.saoMaterial.defines[ 'PERSPECTIVE_CAMERA' ] = this.camera.isPerspectiveCamera ? 1 : 0;\n\t\tthis.saoMaterial.uniforms[ 'tDepth' ].value = depthTexture;\n\t\tthis.saoMaterial.uniforms[ 'tNormal' ].value = this.normalRenderTarget.texture;\n\t\tthis.saoMaterial.uniforms[ 'size' ].value.set( this.resolution.x, this.resolution.y );\n\t\tthis.saoMaterial.uniforms[ 'cameraInverseProjectionMatrix' ].value.copy( this.camera.projectionMatrixInverse );\n\t\tthis.saoMaterial.uniforms[ 'cameraProjectionMatrix' ].value = this.camera.projectionMatrix;\n\t\tthis.saoMaterial.blending = NoBlending;\n\n\t\tthis.vBlurMaterial = new ShaderMaterial( {\n\t\t\tuniforms: UniformsUtils.clone( DepthLimitedBlurShader.uniforms ),\n\t\t\tdefines: Object.assign( {}, DepthLimitedBlurShader.defines ),\n\t\t\tvertexShader: DepthLimitedBlurShader.vertexShader,\n\t\t\tfragmentShader: DepthLimitedBlurShader.fragmentShader\n\t\t} );\n\t\tthis.vBlurMaterial.defines[ 'DEPTH_PACKING' ] = 0;\n\t\tthis.vBlurMaterial.defines[ 'PERSPECTIVE_CAMERA' ] = this.camera.isPerspectiveCamera ? 1 : 0;\n\t\tthis.vBlurMaterial.uniforms[ 'tDiffuse' ].value = this.saoRenderTarget.texture;\n\t\tthis.vBlurMaterial.uniforms[ 'tDepth' ].value = depthTexture;\n\t\tthis.vBlurMaterial.uniforms[ 'size' ].value.set( this.resolution.x, this.resolution.y );\n\t\tthis.vBlurMaterial.blending = NoBlending;\n\n\t\tthis.hBlurMaterial = new ShaderMaterial( {\n\t\t\tuniforms: UniformsUtils.clone( DepthLimitedBlurShader.uniforms ),\n\t\t\tdefines: Object.assign( {}, DepthLimitedBlurShader.defines ),\n\t\t\tvertexShader: DepthLimitedBlurShader.vertexShader,\n\t\t\tfragmentShader: DepthLimitedBlurShader.fragmentShader\n\t\t} );\n\t\tthis.hBlurMaterial.defines[ 'DEPTH_PACKING' ] = 0;\n\t\tthis.hBlurMaterial.defines[ 'PERSPECTIVE_CAMERA' ] = this.camera.isPerspectiveCamera ? 1 : 0;\n\t\tthis.hBlurMaterial.uniforms[ 'tDiffuse' ].value = this.blurIntermediateRenderTarget.texture;\n\t\tthis.hBlurMaterial.uniforms[ 'tDepth' ].value = depthTexture;\n\t\tthis.hBlurMaterial.uniforms[ 'size' ].value.set( this.resolution.x, this.resolution.y );\n\t\tthis.hBlurMaterial.blending = NoBlending;\n\n\t\tthis.materialCopy = new ShaderMaterial( {\n\t\t\tuniforms: UniformsUtils.clone( CopyShader.uniforms ),\n\t\t\tvertexShader: CopyShader.vertexShader,\n\t\t\tfragmentShader: CopyShader.fragmentShader,\n\t\t\tblending: NoBlending\n\t\t} );\n\t\tthis.materialCopy.transparent = true;\n\t\tthis.materialCopy.depthTest = false;\n\t\tthis.materialCopy.depthWrite = false;\n\t\tthis.materialCopy.blending = CustomBlending;\n\t\tthis.materialCopy.blendSrc = DstColorFactor;\n\t\tthis.materialCopy.blendDst = ZeroFactor;\n\t\tthis.materialCopy.blendEquation = AddEquation;\n\t\tthis.materialCopy.blendSrcAlpha = DstAlphaFactor;\n\t\tthis.materialCopy.blendDstAlpha = ZeroFactor;\n\t\tthis.materialCopy.blendEquationAlpha = AddEquation;\n\n\t\tthis.fsQuad = new FullScreenQuad( null );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive*/ ) {\n\n\t\t// Rendering readBuffer first when rendering to screen\n\t\tif ( this.renderToScreen ) {\n\n\t\t\tthis.materialCopy.blending = NoBlending;\n\t\t\tthis.materialCopy.uniforms[ 'tDiffuse' ].value = readBuffer.texture;\n\t\t\tthis.materialCopy.needsUpdate = true;\n\t\t\tthis.renderPass( renderer, this.materialCopy, null );\n\n\t\t}\n\n\t\trenderer.getClearColor( this._oldClearColor );\n\t\tthis.oldClearAlpha = renderer.getClearAlpha();\n\t\tconst oldAutoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tthis.saoMaterial.uniforms[ 'bias' ].value = this.params.saoBias;\n\t\tthis.saoMaterial.uniforms[ 'intensity' ].value = this.params.saoIntensity;\n\t\tthis.saoMaterial.uniforms[ 'scale' ].value = this.params.saoScale;\n\t\tthis.saoMaterial.uniforms[ 'kernelRadius' ].value = this.params.saoKernelRadius;\n\t\tthis.saoMaterial.uniforms[ 'minResolution' ].value = this.params.saoMinResolution;\n\t\tthis.saoMaterial.uniforms[ 'cameraNear' ].value = this.camera.near;\n\t\tthis.saoMaterial.uniforms[ 'cameraFar' ].value = this.camera.far;\n\t\t// this.saoMaterial.uniforms['randomSeed'].value = Math.random();\n\n\t\tconst depthCutoff = this.params.saoBlurDepthCutoff * ( this.camera.far - this.camera.near );\n\t\tthis.vBlurMaterial.uniforms[ 'depthCutoff' ].value = depthCutoff;\n\t\tthis.hBlurMaterial.uniforms[ 'depthCutoff' ].value = depthCutoff;\n\n\t\tthis.vBlurMaterial.uniforms[ 'cameraNear' ].value = this.camera.near;\n\t\tthis.vBlurMaterial.uniforms[ 'cameraFar' ].value = this.camera.far;\n\t\tthis.hBlurMaterial.uniforms[ 'cameraNear' ].value = this.camera.near;\n\t\tthis.hBlurMaterial.uniforms[ 'cameraFar' ].value = this.camera.far;\n\n\t\tthis.params.saoBlurRadius = Math.floor( this.params.saoBlurRadius );\n\t\tif ( ( this.prevStdDev !== this.params.saoBlurStdDev ) || ( this.prevNumSamples !== this.params.saoBlurRadius ) ) {\n\n\t\t\tBlurShaderUtils.configure( this.vBlurMaterial, this.params.saoBlurRadius, this.params.saoBlurStdDev, new Vector2( 0, 1 ) );\n\t\t\tBlurShaderUtils.configure( this.hBlurMaterial, this.params.saoBlurRadius, this.params.saoBlurStdDev, new Vector2( 1, 0 ) );\n\t\t\tthis.prevStdDev = this.params.saoBlurStdDev;\n\t\t\tthis.prevNumSamples = this.params.saoBlurRadius;\n\n\t\t}\n\n\t\t// render normal and depth\n\t\tthis.renderOverride( renderer, this.normalMaterial, this.normalRenderTarget, 0x7777ff, 1.0 );\n\n\t\t// Rendering SAO texture\n\t\tthis.renderPass( renderer, this.saoMaterial, this.saoRenderTarget, 0xffffff, 1.0 );\n\n\t\t// Blurring SAO texture\n\t\tif ( this.params.saoBlur ) {\n\n\t\t\tthis.renderPass( renderer, this.vBlurMaterial, this.blurIntermediateRenderTarget, 0xffffff, 1.0 );\n\t\t\tthis.renderPass( renderer, this.hBlurMaterial, this.saoRenderTarget, 0xffffff, 1.0 );\n\n\t\t}\n\n\t\tconst outputMaterial = this.materialCopy;\n\n\t\t// Setting up SAO rendering\n\t\tif ( this.params.output === SAOPass.OUTPUT.Normal ) {\n\n\t\t\tthis.materialCopy.uniforms[ 'tDiffuse' ].value = this.normalRenderTarget.texture;\n\t\t\tthis.materialCopy.needsUpdate = true;\n\n\t\t} else {\n\n\t\t\tthis.materialCopy.uniforms[ 'tDiffuse' ].value = this.saoRenderTarget.texture;\n\t\t\tthis.materialCopy.needsUpdate = true;\n\n\t\t}\n\n\t\t// Blending depends on output\n\t\tif ( this.params.output === SAOPass.OUTPUT.Default ) {\n\n\t\t\toutputMaterial.blending = CustomBlending;\n\n\t\t} else {\n\n\t\t\toutputMaterial.blending = NoBlending;\n\n\t\t}\n\n\t\t// Rendering SAOPass result on top of previous pass\n\t\tthis.renderPass( renderer, outputMaterial, this.renderToScreen ? null : readBuffer );\n\n\t\trenderer.setClearColor( this._oldClearColor, this.oldClearAlpha );\n\t\trenderer.autoClear = oldAutoClear;\n\n\t}\n\n\trenderPass( renderer, passMaterial, renderTarget, clearColor, clearAlpha ) {\n\n\t\t// save original state\n\t\trenderer.getClearColor( this.originalClearColor );\n\t\tconst originalClearAlpha = renderer.getClearAlpha();\n\t\tconst originalAutoClear = renderer.autoClear;\n\n\t\trenderer.setRenderTarget( renderTarget );\n\n\t\t// setup pass state\n\t\trenderer.autoClear = false;\n\t\tif ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {\n\n\t\t\trenderer.setClearColor( clearColor );\n\t\t\trenderer.setClearAlpha( clearAlpha || 0.0 );\n\t\t\trenderer.clear();\n\n\t\t}\n\n\t\tthis.fsQuad.material = passMaterial;\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// restore original state\n\t\trenderer.autoClear = originalAutoClear;\n\t\trenderer.setClearColor( this.originalClearColor );\n\t\trenderer.setClearAlpha( originalClearAlpha );\n\n\t}\n\n\trenderOverride( renderer, overrideMaterial, renderTarget, clearColor, clearAlpha ) {\n\n\t\trenderer.getClearColor( this.originalClearColor );\n\t\tconst originalClearAlpha = renderer.getClearAlpha();\n\t\tconst originalAutoClear = renderer.autoClear;\n\n\t\trenderer.setRenderTarget( renderTarget );\n\t\trenderer.autoClear = false;\n\n\t\tclearColor = overrideMaterial.clearColor || clearColor;\n\t\tclearAlpha = overrideMaterial.clearAlpha || clearAlpha;\n\t\tif ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {\n\n\t\t\trenderer.setClearColor( clearColor );\n\t\t\trenderer.setClearAlpha( clearAlpha || 0.0 );\n\t\t\trenderer.clear();\n\n\t\t}\n\n\t\tthis.scene.overrideMaterial = overrideMaterial;\n\t\trenderer.render( this.scene, this.camera );\n\t\tthis.scene.overrideMaterial = null;\n\n\t\t// restore original state\n\t\trenderer.autoClear = originalAutoClear;\n\t\trenderer.setClearColor( this.originalClearColor );\n\t\trenderer.setClearAlpha( originalClearAlpha );\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis.saoRenderTarget.setSize( width, height );\n\t\tthis.blurIntermediateRenderTarget.setSize( width, height );\n\t\tthis.normalRenderTarget.setSize( width, height );\n\n\t\tthis.saoMaterial.uniforms[ 'size' ].value.set( width, height );\n\t\tthis.saoMaterial.uniforms[ 'cameraInverseProjectionMatrix' ].value.copy( this.camera.projectionMatrixInverse );\n\t\tthis.saoMaterial.uniforms[ 'cameraProjectionMatrix' ].value = this.camera.projectionMatrix;\n\t\tthis.saoMaterial.needsUpdate = true;\n\n\t\tthis.vBlurMaterial.uniforms[ 'size' ].value.set( width, height );\n\t\tthis.vBlurMaterial.needsUpdate = true;\n\n\t\tthis.hBlurMaterial.uniforms[ 'size' ].value.set( width, height );\n\t\tthis.hBlurMaterial.needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.saoRenderTarget.dispose();\n\t\tthis.blurIntermediateRenderTarget.dispose();\n\t\tthis.normalRenderTarget.dispose();\n\n\t\tthis.normalMaterial.dispose();\n\t\tthis.saoMaterial.dispose();\n\t\tthis.vBlurMaterial.dispose();\n\t\tthis.hBlurMaterial.dispose();\n\t\tthis.materialCopy.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nSAOPass.OUTPUT = {\n\t'Default': 0,\n\t'SAO': 1,\n\t'Normal': 2\n};\n\nexport { SAOPass };\n", "import {\n\tVector2\n} from 'three';\n\n/**\n * WebGL port of Subpixel Morphological Antialiasing (SMAA) v2.8\n * Preset: SMAA 1x Medium (with color edge detection)\n * https://github.com/iryoku/smaa/releases/tag/v2.8\n */\n\nconst SMAAEdgesShader = {\n\n\tname: 'SMAAEdgesShader',\n\n\tdefines: {\n\n\t\t'SMAA_THRESHOLD': '0.1'\n\n\t},\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'resolution': { value: new Vector2( 1 / 1024, 1 / 512 ) }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tuniform vec2 resolution;\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec4 vOffset[ 3 ];\n\n\t\tvoid SMAAEdgeDetectionVS( vec2 texcoord ) {\n\t\t\tvOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -1.0, 0.0, 0.0, 1.0 ); // WebGL port note: Changed sign in W component\n\t\t\tvOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( 1.0, 0.0, 0.0, -1.0 ); // WebGL port note: Changed sign in W component\n\t\t\tvOffset[ 2 ] = texcoord.xyxy + resolution.xyxy * vec4( -2.0, 0.0, 0.0, 2.0 ); // WebGL port note: Changed sign in W component\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tSMAAEdgeDetectionVS( vUv );\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec4 vOffset[ 3 ];\n\n\t\tvec4 SMAAColorEdgeDetectionPS( vec2 texcoord, vec4 offset[3], sampler2D colorTex ) {\n\t\t\tvec2 threshold = vec2( SMAA_THRESHOLD, SMAA_THRESHOLD );\n\n\t\t\t// Calculate color deltas:\n\t\t\tvec4 delta;\n\t\t\tvec3 C = texture2D( colorTex, texcoord ).rgb;\n\n\t\t\tvec3 Cleft = texture2D( colorTex, offset[0].xy ).rgb;\n\t\t\tvec3 t = abs( C - Cleft );\n\t\t\tdelta.x = max( max( t.r, t.g ), t.b );\n\n\t\t\tvec3 Ctop = texture2D( colorTex, offset[0].zw ).rgb;\n\t\t\tt = abs( C - Ctop );\n\t\t\tdelta.y = max( max( t.r, t.g ), t.b );\n\n\t\t\t// We do the usual threshold:\n\t\t\tvec2 edges = step( threshold, delta.xy );\n\n\t\t\t// Then discard if there is no edge:\n\t\t\tif ( dot( edges, vec2( 1.0, 1.0 ) ) == 0.0 )\n\t\t\t\tdiscard;\n\n\t\t\t// Calculate right and bottom deltas:\n\t\t\tvec3 Cright = texture2D( colorTex, offset[1].xy ).rgb;\n\t\t\tt = abs( C - Cright );\n\t\t\tdelta.z = max( max( t.r, t.g ), t.b );\n\n\t\t\tvec3 Cbottom = texture2D( colorTex, offset[1].zw ).rgb;\n\t\t\tt = abs( C - Cbottom );\n\t\t\tdelta.w = max( max( t.r, t.g ), t.b );\n\n\t\t\t// Calculate the maximum delta in the direct neighborhood:\n\t\t\tfloat maxDelta = max( max( max( delta.x, delta.y ), delta.z ), delta.w );\n\n\t\t\t// Calculate left-left and top-top deltas:\n\t\t\tvec3 Cleftleft = texture2D( colorTex, offset[2].xy ).rgb;\n\t\t\tt = abs( C - Cleftleft );\n\t\t\tdelta.z = max( max( t.r, t.g ), t.b );\n\n\t\t\tvec3 Ctoptop = texture2D( colorTex, offset[2].zw ).rgb;\n\t\t\tt = abs( C - Ctoptop );\n\t\t\tdelta.w = max( max( t.r, t.g ), t.b );\n\n\t\t\t// Calculate the final maximum delta:\n\t\t\tmaxDelta = max( max( maxDelta, delta.z ), delta.w );\n\n\t\t\t// Local contrast adaptation in action:\n\t\t\tedges.xy *= step( 0.5 * maxDelta, delta.xy );\n\n\t\t\treturn vec4( edges, 0.0, 0.0 );\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = SMAAColorEdgeDetectionPS( vUv, vOffset, tDiffuse );\n\n\t\t}`\n\n};\n\nconst SMAAWeightsShader = {\n\n\tname: 'SMAAWeightsShader',\n\n\tdefines: {\n\n\t\t'SMAA_MAX_SEARCH_STEPS': '8',\n\t\t'SMAA_AREATEX_MAX_DISTANCE': '16',\n\t\t'SMAA_AREATEX_PIXEL_SIZE': '( 1.0 / vec2( 160.0, 560.0 ) )',\n\t\t'SMAA_AREATEX_SUBTEX_SIZE': '( 1.0 / 7.0 )'\n\n\t},\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'tArea': { value: null },\n\t\t'tSearch': { value: null },\n\t\t'resolution': { value: new Vector2( 1 / 1024, 1 / 512 ) }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tuniform vec2 resolution;\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec4 vOffset[ 3 ];\n\t\tvarying vec2 vPixcoord;\n\n\t\tvoid SMAABlendingWeightCalculationVS( vec2 texcoord ) {\n\t\t\tvPixcoord = texcoord / resolution;\n\n\t\t\t// We will use these offsets for the searches later on (see @PSEUDO_GATHER4):\n\t\t\tvOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -0.25, 0.125, 1.25, 0.125 ); // WebGL port note: Changed sign in Y and W components\n\t\t\tvOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( -0.125, 0.25, -0.125, -1.25 ); // WebGL port note: Changed sign in Y and W components\n\n\t\t\t// And these for the searches, they indicate the ends of the loops:\n\t\t\tvOffset[ 2 ] = vec4( vOffset[ 0 ].xz, vOffset[ 1 ].yw ) + vec4( -2.0, 2.0, -2.0, 2.0 ) * resolution.xxyy * float( SMAA_MAX_SEARCH_STEPS );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tSMAABlendingWeightCalculationVS( vUv );\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\t#define SMAASampleLevelZeroOffset( tex, coord, offset ) texture2D( tex, coord + float( offset ) * resolution, 0.0 )\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tArea;\n\t\tuniform sampler2D tSearch;\n\t\tuniform vec2 resolution;\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec4 vOffset[3];\n\t\tvarying vec2 vPixcoord;\n\n\t\t#if __VERSION__ == 100\n\t\tvec2 round( vec2 x ) {\n\t\t\treturn sign( x ) * floor( abs( x ) + 0.5 );\n\t\t}\n\t\t#endif\n\n\t\tfloat SMAASearchLength( sampler2D searchTex, vec2 e, float bias, float scale ) {\n\t\t\t// Not required if searchTex accesses are set to point:\n\t\t\t// float2 SEARCH_TEX_PIXEL_SIZE = 1.0 / float2(66.0, 33.0);\n\t\t\t// e = float2(bias, 0.0) + 0.5 * SEARCH_TEX_PIXEL_SIZE +\n\t\t\t// e * float2(scale, 1.0) * float2(64.0, 32.0) * SEARCH_TEX_PIXEL_SIZE;\n\t\t\te.r = bias + e.r * scale;\n\t\t\treturn 255.0 * texture2D( searchTex, e, 0.0 ).r;\n\t\t}\n\n\t\tfloat SMAASearchXLeft( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\n\t\t\t/**\n\t\t\t\t* @PSEUDO_GATHER4\n\t\t\t\t* This texcoord has been offset by (-0.25, -0.125) in the vertex shader to\n\t\t\t\t* sample between edge, thus fetching four edges in a row.\n\t\t\t\t* Sampling with different offsets in each direction allows to disambiguate\n\t\t\t\t* which edges are active from the four fetched ones.\n\t\t\t\t*/\n\t\t\tvec2 e = vec2( 0.0, 1.0 );\n\n\t\t\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for\n\t\t\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;\n\t\t\t\ttexcoord -= vec2( 2.0, 0.0 ) * resolution;\n\t\t\t\tif ( ! ( texcoord.x > end && e.g > 0.8281 && e.r == 0.0 ) ) break;\n\t\t\t}\n\n\t\t\t// We correct the previous (-0.25, -0.125) offset we applied:\n\t\t\ttexcoord.x += 0.25 * resolution.x;\n\n\t\t\t// The searches are bias by 1, so adjust the coords accordingly:\n\t\t\ttexcoord.x += resolution.x;\n\n\t\t\t// Disambiguate the length added by the last step:\n\t\t\ttexcoord.x += 2.0 * resolution.x; // Undo last step\n\t\t\ttexcoord.x -= resolution.x * SMAASearchLength(searchTex, e, 0.0, 0.5);\n\n\t\t\treturn texcoord.x;\n\t\t}\n\n\t\tfloat SMAASearchXRight( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\n\t\t\tvec2 e = vec2( 0.0, 1.0 );\n\n\t\t\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for\n\t\t\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;\n\t\t\t\ttexcoord += vec2( 2.0, 0.0 ) * resolution;\n\t\t\t\tif ( ! ( texcoord.x < end && e.g > 0.8281 && e.r == 0.0 ) ) break;\n\t\t\t}\n\n\t\t\ttexcoord.x -= 0.25 * resolution.x;\n\t\t\ttexcoord.x -= resolution.x;\n\t\t\ttexcoord.x -= 2.0 * resolution.x;\n\t\t\ttexcoord.x += resolution.x * SMAASearchLength( searchTex, e, 0.5, 0.5 );\n\n\t\t\treturn texcoord.x;\n\t\t}\n\n\t\tfloat SMAASearchYUp( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\n\t\t\tvec2 e = vec2( 1.0, 0.0 );\n\n\t\t\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for\n\t\t\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;\n\t\t\t\ttexcoord += vec2( 0.0, 2.0 ) * resolution; // WebGL port note: Changed sign\n\t\t\t\tif ( ! ( texcoord.y > end && e.r > 0.8281 && e.g == 0.0 ) ) break;\n\t\t\t}\n\n\t\t\ttexcoord.y -= 0.25 * resolution.y; // WebGL port note: Changed sign\n\t\t\ttexcoord.y -= resolution.y; // WebGL port note: Changed sign\n\t\t\ttexcoord.y -= 2.0 * resolution.y; // WebGL port note: Changed sign\n\t\t\ttexcoord.y += resolution.y * SMAASearchLength( searchTex, e.gr, 0.0, 0.5 ); // WebGL port note: Changed sign\n\n\t\t\treturn texcoord.y;\n\t\t}\n\n\t\tfloat SMAASearchYDown( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\n\t\t\tvec2 e = vec2( 1.0, 0.0 );\n\n\t\t\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for\n\t\t\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;\n\t\t\t\ttexcoord -= vec2( 0.0, 2.0 ) * resolution; // WebGL port note: Changed sign\n\t\t\t\tif ( ! ( texcoord.y < end && e.r > 0.8281 && e.g == 0.0 ) ) break;\n\t\t\t}\n\n\t\t\ttexcoord.y += 0.25 * resolution.y; // WebGL port note: Changed sign\n\t\t\ttexcoord.y += resolution.y; // WebGL port note: Changed sign\n\t\t\ttexcoord.y += 2.0 * resolution.y; // WebGL port note: Changed sign\n\t\t\ttexcoord.y -= resolution.y * SMAASearchLength( searchTex, e.gr, 0.5, 0.5 ); // WebGL port note: Changed sign\n\n\t\t\treturn texcoord.y;\n\t\t}\n\n\t\tvec2 SMAAArea( sampler2D areaTex, vec2 dist, float e1, float e2, float offset ) {\n\t\t\t// Rounding prevents precision errors of bilinear filtering:\n\t\t\tvec2 texcoord = float( SMAA_AREATEX_MAX_DISTANCE ) * round( 4.0 * vec2( e1, e2 ) ) + dist;\n\n\t\t\t// We do a scale and bias for mapping to texel space:\n\t\t\ttexcoord = SMAA_AREATEX_PIXEL_SIZE * texcoord + ( 0.5 * SMAA_AREATEX_PIXEL_SIZE );\n\n\t\t\t// Move to proper place, according to the subpixel offset:\n\t\t\ttexcoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;\n\n\t\t\treturn texture2D( areaTex, texcoord, 0.0 ).rg;\n\t\t}\n\n\t\tvec4 SMAABlendingWeightCalculationPS( vec2 texcoord, vec2 pixcoord, vec4 offset[ 3 ], sampler2D edgesTex, sampler2D areaTex, sampler2D searchTex, ivec4 subsampleIndices ) {\n\t\t\tvec4 weights = vec4( 0.0, 0.0, 0.0, 0.0 );\n\n\t\t\tvec2 e = texture2D( edgesTex, texcoord ).rg;\n\n\t\t\tif ( e.g > 0.0 ) { // Edge at north\n\t\t\t\tvec2 d;\n\n\t\t\t\t// Find the distance to the left:\n\t\t\t\tvec2 coords;\n\t\t\t\tcoords.x = SMAASearchXLeft( edgesTex, searchTex, offset[ 0 ].xy, offset[ 2 ].x );\n\t\t\t\tcoords.y = offset[ 1 ].y; // offset[1].y = texcoord.y - 0.25 * resolution.y (@CROSSING_OFFSET)\n\t\t\t\td.x = coords.x;\n\n\t\t\t\t// Now fetch the left crossing edges, two at a time using bilinear\n\t\t\t\t// filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to\n\t\t\t\t// discern what value each edge has:\n\t\t\t\tfloat e1 = texture2D( edgesTex, coords, 0.0 ).r;\n\n\t\t\t\t// Find the distance to the right:\n\t\t\t\tcoords.x = SMAASearchXRight( edgesTex, searchTex, offset[ 0 ].zw, offset[ 2 ].y );\n\t\t\t\td.y = coords.x;\n\n\t\t\t\t// We want the distances to be in pixel units (doing this here allow to\n\t\t\t\t// better interleave arithmetic and memory accesses):\n\t\t\t\td = d / resolution.x - pixcoord.x;\n\n\t\t\t\t// SMAAArea below needs a sqrt, as the areas texture is compressed\n\t\t\t\t// quadratically:\n\t\t\t\tvec2 sqrt_d = sqrt( abs( d ) );\n\n\t\t\t\t// Fetch the right crossing edges:\n\t\t\t\tcoords.y -= 1.0 * resolution.y; // WebGL port note: Added\n\t\t\t\tfloat e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 1, 0 ) ).r;\n\n\t\t\t\t// Ok, we know how this pattern looks like, now it is time for getting\n\t\t\t\t// the actual area:\n\t\t\t\tweights.rg = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.y ) );\n\t\t\t}\n\n\t\t\tif ( e.r > 0.0 ) { // Edge at west\n\t\t\t\tvec2 d;\n\n\t\t\t\t// Find the distance to the top:\n\t\t\t\tvec2 coords;\n\n\t\t\t\tcoords.y = SMAASearchYUp( edgesTex, searchTex, offset[ 1 ].xy, offset[ 2 ].z );\n\t\t\t\tcoords.x = offset[ 0 ].x; // offset[1].x = texcoord.x - 0.25 * resolution.x;\n\t\t\t\td.x = coords.y;\n\n\t\t\t\t// Fetch the top crossing edges:\n\t\t\t\tfloat e1 = texture2D( edgesTex, coords, 0.0 ).g;\n\n\t\t\t\t// Find the distance to the bottom:\n\t\t\t\tcoords.y = SMAASearchYDown( edgesTex, searchTex, offset[ 1 ].zw, offset[ 2 ].w );\n\t\t\t\td.y = coords.y;\n\n\t\t\t\t// We want the distances to be in pixel units:\n\t\t\t\td = d / resolution.y - pixcoord.y;\n\n\t\t\t\t// SMAAArea below needs a sqrt, as the areas texture is compressed\n\t\t\t\t// quadratically:\n\t\t\t\tvec2 sqrt_d = sqrt( abs( d ) );\n\n\t\t\t\t// Fetch the bottom crossing edges:\n\t\t\t\tcoords.y -= 1.0 * resolution.y; // WebGL port note: Added\n\t\t\t\tfloat e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 0, 1 ) ).g;\n\n\t\t\t\t// Get the area for this direction:\n\t\t\t\tweights.ba = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.x ) );\n\t\t\t}\n\n\t\t\treturn weights;\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = SMAABlendingWeightCalculationPS( vUv, vPixcoord, vOffset, tDiffuse, tArea, tSearch, ivec4( 0.0 ) );\n\n\t\t}`\n\n};\n\nconst SMAABlendShader = {\n\n\tname: 'SMAABlendShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'tColor': { value: null },\n\t\t'resolution': { value: new Vector2( 1 / 1024, 1 / 512 ) }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tuniform vec2 resolution;\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec4 vOffset[ 2 ];\n\n\t\tvoid SMAANeighborhoodBlendingVS( vec2 texcoord ) {\n\t\t\tvOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -1.0, 0.0, 0.0, 1.0 ); // WebGL port note: Changed sign in W component\n\t\t\tvOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( 1.0, 0.0, 0.0, -1.0 ); // WebGL port note: Changed sign in W component\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tSMAANeighborhoodBlendingVS( vUv );\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tColor;\n\t\tuniform vec2 resolution;\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec4 vOffset[ 2 ];\n\n\t\tvec4 SMAANeighborhoodBlendingPS( vec2 texcoord, vec4 offset[ 2 ], sampler2D colorTex, sampler2D blendTex ) {\n\t\t\t// Fetch the blending weights for current pixel:\n\t\t\tvec4 a;\n\t\t\ta.xz = texture2D( blendTex, texcoord ).xz;\n\t\t\ta.y = texture2D( blendTex, offset[ 1 ].zw ).g;\n\t\t\ta.w = texture2D( blendTex, offset[ 1 ].xy ).a;\n\n\t\t\t// Is there any blending weight with a value greater than 0.0?\n\t\t\tif ( dot(a, vec4( 1.0, 1.0, 1.0, 1.0 )) < 1e-5 ) {\n\t\t\t\treturn texture2D( colorTex, texcoord, 0.0 );\n\t\t\t} else {\n\t\t\t\t// Up to 4 lines can be crossing a pixel (one through each edge). We\n\t\t\t\t// favor blending by choosing the line with the maximum weight for each\n\t\t\t\t// direction:\n\t\t\t\tvec2 offset;\n\t\t\t\toffset.x = a.a > a.b ? a.a : -a.b; // left vs. right\n\t\t\t\toffset.y = a.g > a.r ? -a.g : a.r; // top vs. bottom // WebGL port note: Changed signs\n\n\t\t\t\t// Then we go in the direction that has the maximum weight:\n\t\t\t\tif ( abs( offset.x ) > abs( offset.y )) { // horizontal vs. vertical\n\t\t\t\t\toffset.y = 0.0;\n\t\t\t\t} else {\n\t\t\t\t\toffset.x = 0.0;\n\t\t\t\t}\n\n\t\t\t\t// Fetch the opposite color and lerp by hand:\n\t\t\t\tvec4 C = texture2D( colorTex, texcoord, 0.0 );\n\t\t\t\ttexcoord += sign( offset ) * resolution;\n\t\t\t\tvec4 Cop = texture2D( colorTex, texcoord, 0.0 );\n\t\t\t\tfloat s = abs( offset.x ) > abs( offset.y ) ? abs( offset.x ) : abs( offset.y );\n\n\t\t\t\t// WebGL port note: Added gamma correction\n\t\t\t\tC.xyz = pow(C.xyz, vec3(2.2));\n\t\t\t\tCop.xyz = pow(Cop.xyz, vec3(2.2));\n\t\t\t\tvec4 mixed = mix(C, Cop, s);\n\t\t\t\tmixed.xyz = pow(mixed.xyz, vec3(1.0 / 2.2));\n\n\t\t\t\treturn mixed;\n\t\t\t}\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = SMAANeighborhoodBlendingPS( vUv, vOffset, tColor, tDiffuse );\n\n\t\t}`\n\n};\n\nexport { SMAAEdgesShader, SMAAWeightsShader, SMAABlendShader };\n", "import {\n\tHalfFloatType,\n\tLinearFilter,\n\tNearestFilter,\n\tShaderMaterial,\n\tTexture,\n\tUniformsUtils,\n\tWebGLRenderTarget\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { SMAAEdgesShader } from '../shaders/SMAAShader.js';\nimport { SMAAWeightsShader } from '../shaders/SMAAShader.js';\nimport { SMAABlendShader } from '../shaders/SMAAShader.js';\n\nclass SMAAPass extends Pass {\n\n\tconstructor( width, height ) {\n\n\t\tsuper();\n\n\t\t// render targets\n\n\t\tthis.edgesRT = new WebGLRenderTarget( width, height, {\n\t\t\tdepthBuffer: false,\n\t\t\ttype: HalfFloatType\n\t\t} );\n\t\tthis.edgesRT.texture.name = 'SMAAPass.edges';\n\n\t\tthis.weightsRT = new WebGLRenderTarget( width, height, {\n\t\t\tdepthBuffer: false,\n\t\t\ttype: HalfFloatType\n\t\t} );\n\t\tthis.weightsRT.texture.name = 'SMAAPass.weights';\n\n\t\t// textures\n\t\tconst scope = this;\n\n\t\tconst areaTextureImage = new Image();\n\t\tareaTextureImage.src = this.getAreaTexture();\n\t\tareaTextureImage.onload = function () {\n\n\t\t\t// assigning data to HTMLImageElement.src is asynchronous (see #15162)\n\t\t\tscope.areaTexture.needsUpdate = true;\n\n\t\t};\n\n\t\tthis.areaTexture = new Texture();\n\t\tthis.areaTexture.name = 'SMAAPass.area';\n\t\tthis.areaTexture.image = areaTextureImage;\n\t\tthis.areaTexture.minFilter = LinearFilter;\n\t\tthis.areaTexture.generateMipmaps = false;\n\t\tthis.areaTexture.flipY = false;\n\n\t\tconst searchTextureImage = new Image();\n\t\tsearchTextureImage.src = this.getSearchTexture();\n\t\tsearchTextureImage.onload = function () {\n\n\t\t\t// assigning data to HTMLImageElement.src is asynchronous (see #15162)\n\t\t\tscope.searchTexture.needsUpdate = true;\n\n\t\t};\n\n\t\tthis.searchTexture = new Texture();\n\t\tthis.searchTexture.name = 'SMAAPass.search';\n\t\tthis.searchTexture.image = searchTextureImage;\n\t\tthis.searchTexture.magFilter = NearestFilter;\n\t\tthis.searchTexture.minFilter = NearestFilter;\n\t\tthis.searchTexture.generateMipmaps = false;\n\t\tthis.searchTexture.flipY = false;\n\n\t\t// materials - pass 1\n\n\t\tthis.uniformsEdges = UniformsUtils.clone( SMAAEdgesShader.uniforms );\n\n\t\tthis.uniformsEdges[ 'resolution' ].value.set( 1 / width, 1 / height );\n\n\t\tthis.materialEdges = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, SMAAEdgesShader.defines ),\n\t\t\tuniforms: this.uniformsEdges,\n\t\t\tvertexShader: SMAAEdgesShader.vertexShader,\n\t\t\tfragmentShader: SMAAEdgesShader.fragmentShader\n\t\t} );\n\n\t\t// materials - pass 2\n\n\t\tthis.uniformsWeights = UniformsUtils.clone( SMAAWeightsShader.uniforms );\n\n\t\tthis.uniformsWeights[ 'resolution' ].value.set( 1 / width, 1 / height );\n\t\tthis.uniformsWeights[ 'tDiffuse' ].value = this.edgesRT.texture;\n\t\tthis.uniformsWeights[ 'tArea' ].value = this.areaTexture;\n\t\tthis.uniformsWeights[ 'tSearch' ].value = this.searchTexture;\n\n\t\tthis.materialWeights = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, SMAAWeightsShader.defines ),\n\t\t\tuniforms: this.uniformsWeights,\n\t\t\tvertexShader: SMAAWeightsShader.vertexShader,\n\t\t\tfragmentShader: SMAAWeightsShader.fragmentShader\n\t\t} );\n\n\t\t// materials - pass 3\n\n\t\tthis.uniformsBlend = UniformsUtils.clone( SMAABlendShader.uniforms );\n\n\t\tthis.uniformsBlend[ 'resolution' ].value.set( 1 / width, 1 / height );\n\t\tthis.uniformsBlend[ 'tDiffuse' ].value = this.weightsRT.texture;\n\n\t\tthis.materialBlend = new ShaderMaterial( {\n\t\t\tuniforms: this.uniformsBlend,\n\t\t\tvertexShader: SMAABlendShader.vertexShader,\n\t\t\tfragmentShader: SMAABlendShader.fragmentShader\n\t\t} );\n\n\t\tthis.fsQuad = new FullScreenQuad( null );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive*/ ) {\n\n\t\t// pass 1\n\n\t\tthis.uniformsEdges[ 'tDiffuse' ].value = readBuffer.texture;\n\n\t\tthis.fsQuad.material = this.materialEdges;\n\n\t\trenderer.setRenderTarget( this.edgesRT );\n\t\tif ( this.clear ) renderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// pass 2\n\n\t\tthis.fsQuad.material = this.materialWeights;\n\n\t\trenderer.setRenderTarget( this.weightsRT );\n\t\tif ( this.clear ) renderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// pass 3\n\n\t\tthis.uniformsBlend[ 'tColor' ].value = readBuffer.texture;\n\n\t\tthis.fsQuad.material = this.materialBlend;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\tif ( this.clear ) renderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis.edgesRT.setSize( width, height );\n\t\tthis.weightsRT.setSize( width, height );\n\n\t\tthis.materialEdges.uniforms[ 'resolution' ].value.set( 1 / width, 1 / height );\n\t\tthis.materialWeights.uniforms[ 'resolution' ].value.set( 1 / width, 1 / height );\n\t\tthis.materialBlend.uniforms[ 'resolution' ].value.set( 1 / width, 1 / height );\n\n\t}\n\n\tgetAreaTexture() {\n\n\t\treturn 'data:image/png;base64,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';\n\n\t}\n\n\tgetSearchTexture() {\n\n\t\treturn 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAhCAAAAABIXyLAAAAAOElEQVRIx2NgGAWjYBSMglEwEICREYRgFBZBqDCSLA2MGPUIVQETE9iNUAqLR5gIeoQKRgwXjwAAGn4AtaFeYLEAAAAASUVORK5CYII=';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.edgesRT.dispose();\n\t\tthis.weightsRT.dispose();\n\n\t\tthis.areaTexture.dispose();\n\t\tthis.searchTexture.dispose();\n\n\t\tthis.materialEdges.dispose();\n\t\tthis.materialWeights.dispose();\n\t\tthis.materialBlend.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nexport { SMAAPass };\n", "import {\n\tAdditiveBlending,\n\tColor,\n\tHalfFloatType,\n\tShaderMaterial,\n\tUniformsUtils,\n\tWebGLRenderTarget\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { CopyShader } from '../shaders/CopyShader.js';\n\n/**\n*\n* Supersample Anti-Aliasing Render Pass\n*\n* This manual approach to SSAA re-renders the scene ones for each sample with camera jitter and accumulates the results.\n*\n* References: https://en.wikipedia.org/wiki/Supersampling\n*\n*/\n\nclass SSAARenderPass extends Pass {\n\n\tconstructor( scene, camera, clearColor, clearAlpha ) {\n\n\t\tsuper();\n\n\t\tthis.scene = scene;\n\t\tthis.camera = camera;\n\n\t\tthis.sampleLevel = 4; // specified as n, where the number of samples is 2^n, so sampleLevel = 4, is 2^4 samples, 16.\n\t\tthis.unbiased = true;\n\n\t\t// as we need to clear the buffer in this pass, clearColor must be set to something, defaults to black.\n\t\tthis.clearColor = ( clearColor !== undefined ) ? clearColor : 0x000000;\n\t\tthis.clearAlpha = ( clearAlpha !== undefined ) ? clearAlpha : 0;\n\t\tthis._oldClearColor = new Color();\n\n\t\tconst copyShader = CopyShader;\n\t\tthis.copyUniforms = UniformsUtils.clone( copyShader.uniforms );\n\n\t\tthis.copyMaterial = new ShaderMaterial(\t{\n\t\t\tuniforms: this.copyUniforms,\n\t\t\tvertexShader: copyShader.vertexShader,\n\t\t\tfragmentShader: copyShader.fragmentShader,\n\t\t\ttransparent: true,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\tpremultipliedAlpha: true,\n\t\t\tblending: AdditiveBlending\n\t\t} );\n\n\t\tthis.fsQuad = new FullScreenQuad( this.copyMaterial );\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.sampleRenderTarget ) {\n\n\t\t\tthis.sampleRenderTarget.dispose();\n\t\t\tthis.sampleRenderTarget = null;\n\n\t\t}\n\n\t\tthis.copyMaterial.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tif ( this.sampleRenderTarget )\tthis.sampleRenderTarget.setSize( width, height );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer ) {\n\n\t\tif ( ! this.sampleRenderTarget ) {\n\n\t\t\tthis.sampleRenderTarget = new WebGLRenderTarget( readBuffer.width, readBuffer.height, { type: HalfFloatType } );\n\t\t\tthis.sampleRenderTarget.texture.name = 'SSAARenderPass.sample';\n\n\t\t}\n\n\t\tconst jitterOffsets = _JitterVectors[ Math.max( 0, Math.min( this.sampleLevel, 5 ) ) ];\n\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\trenderer.getClearColor( this._oldClearColor );\n\t\tconst oldClearAlpha = renderer.getClearAlpha();\n\n\t\tconst baseSampleWeight = 1.0 / jitterOffsets.length;\n\t\tconst roundingRange = 1 / 32;\n\t\tthis.copyUniforms[ 'tDiffuse' ].value = this.sampleRenderTarget.texture;\n\n\t\tconst viewOffset = {\n\n\t\t\tfullWidth: readBuffer.width,\n\t\t\tfullHeight: readBuffer.height,\n\t\t\toffsetX: 0,\n\t\t\toffsetY: 0,\n\t\t\twidth: readBuffer.width,\n\t\t\theight: readBuffer.height\n\n\t\t};\n\n\t\tconst originalViewOffset = Object.assign( {}, this.camera.view );\n\n\t\tif ( originalViewOffset.enabled ) Object.assign( viewOffset, originalViewOffset );\n\n\t\t// render the scene multiple times, each slightly jitter offset from the last and accumulate the results.\n\t\tfor ( let i = 0; i < jitterOffsets.length; i ++ ) {\n\n\t\t\tconst jitterOffset = jitterOffsets[ i ];\n\n\t\t\tif ( this.camera.setViewOffset ) {\n\n\t\t\t\tthis.camera.setViewOffset(\n\n\t\t\t\t\tviewOffset.fullWidth, viewOffset.fullHeight,\n\n\t\t\t\t\tviewOffset.offsetX + jitterOffset[ 0 ] * 0.0625, viewOffset.offsetY + jitterOffset[ 1 ] * 0.0625, // 0.0625 = 1 / 16\n\n\t\t\t\t\tviewOffset.width, viewOffset.height\n\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tlet sampleWeight = baseSampleWeight;\n\n\t\t\tif ( this.unbiased ) {\n\n\t\t\t\t// the theory is that equal weights for each sample lead to an accumulation of rounding errors.\n\t\t\t\t// The following equation varies the sampleWeight per sample so that it is uniformly distributed\n\t\t\t\t// across a range of values whose rounding errors cancel each other out.\n\n\t\t\t\tconst uniformCenteredDistribution = ( - 0.5 + ( i + 0.5 ) / jitterOffsets.length );\n\t\t\t\tsampleWeight += roundingRange * uniformCenteredDistribution;\n\n\t\t\t}\n\n\t\t\tthis.copyUniforms[ 'opacity' ].value = sampleWeight;\n\t\t\trenderer.setClearColor( this.clearColor, this.clearAlpha );\n\t\t\trenderer.setRenderTarget( this.sampleRenderTarget );\n\t\t\trenderer.clear();\n\t\t\trenderer.render( this.scene, this.camera );\n\n\t\t\trenderer.setRenderTarget( this.renderToScreen ? null : writeBuffer );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\trenderer.setClearColor( 0x000000, 0.0 );\n\t\t\t\trenderer.clear();\n\n\t\t\t}\n\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t\tif ( this.camera.setViewOffset && originalViewOffset.enabled ) {\n\n\t\t\tthis.camera.setViewOffset(\n\n\t\t\t\toriginalViewOffset.fullWidth, originalViewOffset.fullHeight,\n\n\t\t\t\toriginalViewOffset.offsetX, originalViewOffset.offsetY,\n\n\t\t\t\toriginalViewOffset.width, originalViewOffset.height\n\n\t\t\t);\n\n\t\t} else if ( this.camera.clearViewOffset ) {\n\n\t\t\tthis.camera.clearViewOffset();\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\t\trenderer.setClearColor( this._oldClearColor, oldClearAlpha );\n\n\t}\n\n}\n\n\n// These jitter vectors are specified in integers because it is easier.\n// I am assuming a [-8,8) integer grid, but it needs to be mapped onto [-0.5,0.5)\n// before being used, thus these integers need to be scaled by 1/16.\n//\n// Sample patterns reference: https://msdn.microsoft.com/en-us/library/windows/desktop/ff476218%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396\nconst _JitterVectors = [\n\t[\n\t\t[ 0, 0 ]\n\t],\n\t[\n\t\t[ 4, 4 ], [ - 4, - 4 ]\n\t],\n\t[\n\t\t[ - 2, - 6 ], [ 6, - 2 ], [ - 6, 2 ], [ 2, 6 ]\n\t],\n\t[\n\t\t[ 1, - 3 ], [ - 1, 3 ], [ 5, 1 ], [ - 3, - 5 ],\n\t\t[ - 5, 5 ], [ - 7, - 1 ], [ 3, 7 ], [ 7, - 7 ]\n\t],\n\t[\n\t\t[ 1, 1 ], [ - 1, - 3 ], [ - 3, 2 ], [ 4, - 1 ],\n\t\t[ - 5, - 2 ], [ 2, 5 ], [ 5, 3 ], [ 3, - 5 ],\n\t\t[ - 2, 6 ], [ 0, - 7 ], [ - 4, - 6 ], [ - 6, 4 ],\n\t\t[ - 8, 0 ], [ 7, - 4 ], [ 6, 7 ], [ - 7, - 8 ]\n\t],\n\t[\n\t\t[ - 4, - 7 ], [ - 7, - 5 ], [ - 3, - 5 ], [ - 5, - 4 ],\n\t\t[ - 1, - 4 ], [ - 2, - 2 ], [ - 6, - 1 ], [ - 4, 0 ],\n\t\t[ - 7, 1 ], [ - 1, 2 ], [ - 6, 3 ], [ - 3, 3 ],\n\t\t[ - 7, 6 ], [ - 3, 6 ], [ - 5, 7 ], [ - 1, 7 ],\n\t\t[ 5, - 7 ], [ 1, - 6 ], [ 6, - 5 ], [ 4, - 4 ],\n\t\t[ 2, - 3 ], [ 7, - 2 ], [ 1, - 1 ], [ 4, - 1 ],\n\t\t[ 2, 1 ], [ 6, 2 ], [ 0, 4 ], [ 4, 4 ],\n\t\t[ 2, 5 ], [ 7, 5 ], [ 5, 6 ], [ 3, 7 ]\n\t]\n];\n\nexport { SSAARenderPass };\n", "import {\n\tMatrix4,\n\tVector2\n} from 'three';\n\n/**\n * References:\n * http://john-chapman-graphics.blogspot.com/2013/01/ssao-tutorial.html\n * https://learnopengl.com/Advanced-Lighting/SSAO\n * https://github.com/McNopper/OpenGL/blob/master/Example28/shader/ssao.frag.glsl\n */\n\nconst SSAOShader = {\n\n\tname: 'SSAOShader',\n\n\tdefines: {\n\t\t'PERSPECTIVE_CAMERA': 1,\n\t\t'KERNEL_SIZE': 32\n\t},\n\n\tuniforms: {\n\n\t\t'tNormal': { value: null },\n\t\t'tDepth': { value: null },\n\t\t'tNoise': { value: null },\n\t\t'kernel': { value: null },\n\t\t'cameraNear': { value: null },\n\t\t'cameraFar': { value: null },\n\t\t'resolution': { value: new Vector2() },\n\t\t'cameraProjectionMatrix': { value: new Matrix4() },\n\t\t'cameraInverseProjectionMatrix': { value: new Matrix4() },\n\t\t'kernelRadius': { value: 8 },\n\t\t'minDistance': { value: 0.005 },\n\t\t'maxDistance': { value: 0.05 },\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\t\tuniform highp sampler2D tNormal;\n\t\tuniform highp sampler2D tDepth;\n\t\tuniform sampler2D tNoise;\n\n\t\tuniform vec3 kernel[ KERNEL_SIZE ];\n\n\t\tuniform vec2 resolution;\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tuniform mat4 cameraProjectionMatrix;\n\t\tuniform mat4 cameraInverseProjectionMatrix;\n\n\t\tuniform float kernelRadius;\n\t\tuniform float minDistance; // avoid artifacts caused by neighbour fragments with minimal depth difference\n\t\tuniform float maxDistance; // avoid the influence of fragments which are too far away\n\n\t\tvarying vec2 vUv;\n\n\t\t#include \n\n\t\tfloat getDepth( const in vec2 screenPosition ) {\n\n\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\n\t\t}\n\n\t\tfloat getLinearDepth( const in vec2 screenPosition ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\tfloat fragCoordZ = texture2D( tDepth, screenPosition ).x;\n\t\t\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\n\t\t\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\n\t\t\t#endif\n\n\t\t}\n\n\t\tfloat getViewZ( const in float depth ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\n\n\t\t\t#endif\n\n\t\t}\n\n\t\tvec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) {\n\n\t\t\tfloat clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3];\n\n\t\t\tvec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 );\n\n\t\t\tclipPosition *= clipW; // unprojection.\n\n\t\t\treturn ( cameraInverseProjectionMatrix * clipPosition ).xyz;\n\n\t\t}\n\n\t\tvec3 getViewNormal( const in vec2 screenPosition ) {\n\n\t\t\treturn unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tfloat depth = getDepth( vUv );\n\n\t\t\tif ( depth == 1.0 ) {\n\n\t\t\t\tgl_FragColor = vec4( 1.0 ); // don't influence background\n\t\t\t\t\n\t\t\t} else {\n\n\t\t\t\tfloat viewZ = getViewZ( depth );\n\n\t\t\t\tvec3 viewPosition = getViewPosition( vUv, depth, viewZ );\n\t\t\t\tvec3 viewNormal = getViewNormal( vUv );\n\n\t\t\t\tvec2 noiseScale = vec2( resolution.x / 4.0, resolution.y / 4.0 );\n\t\t\t\tvec3 random = vec3( texture2D( tNoise, vUv * noiseScale ).r );\n\n\t\t\t\t// compute matrix used to reorient a kernel vector\n\n\t\t\t\tvec3 tangent = normalize( random - viewNormal * dot( random, viewNormal ) );\n\t\t\t\tvec3 bitangent = cross( viewNormal, tangent );\n\t\t\t\tmat3 kernelMatrix = mat3( tangent, bitangent, viewNormal );\n\n\t\t\t\tfloat occlusion = 0.0;\n\n\t\t\t\tfor ( int i = 0; i < KERNEL_SIZE; i ++ ) {\n\n\t\t\t\t\tvec3 sampleVector = kernelMatrix * kernel[ i ]; // reorient sample vector in view space\n\t\t\t\t\tvec3 samplePoint = viewPosition + ( sampleVector * kernelRadius ); // calculate sample point\n\n\t\t\t\t\tvec4 samplePointNDC = cameraProjectionMatrix * vec4( samplePoint, 1.0 ); // project point and calculate NDC\n\t\t\t\t\tsamplePointNDC /= samplePointNDC.w;\n\n\t\t\t\t\tvec2 samplePointUv = samplePointNDC.xy * 0.5 + 0.5; // compute uv coordinates\n\n\t\t\t\t\tfloat realDepth = getLinearDepth( samplePointUv ); // get linear depth from depth texture\n\t\t\t\t\tfloat sampleDepth = viewZToOrthographicDepth( samplePoint.z, cameraNear, cameraFar ); // compute linear depth of the sample view Z value\n\t\t\t\t\tfloat delta = sampleDepth - realDepth;\n\n\t\t\t\t\tif ( delta > minDistance && delta < maxDistance ) { // if fragment is before sample point, increase occlusion\n\n\t\t\t\t\t\tocclusion += 1.0;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tocclusion = clamp( occlusion / float( KERNEL_SIZE ), 0.0, 1.0 );\n\n\t\t\t\tgl_FragColor = vec4( vec3( 1.0 - occlusion ), 1.0 );\n\n\t\t\t}\n\n\t\t}`\n\n};\n\nconst SSAODepthShader = {\n\n\tname: 'SSAODepthShader',\n\n\tdefines: {\n\t\t'PERSPECTIVE_CAMERA': 1\n\t},\n\n\tuniforms: {\n\n\t\t'tDepth': { value: null },\n\t\t'cameraNear': { value: null },\n\t\t'cameraFar': { value: null },\n\n\t},\n\n\tvertexShader:\n\n\t\t`varying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader:\n\n\t\t`uniform sampler2D tDepth;\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\n\t\tvarying vec2 vUv;\n\n\t\t#include \n\n\t\tfloat getLinearDepth( const in vec2 screenPosition ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\tfloat fragCoordZ = texture2D( tDepth, screenPosition ).x;\n\t\t\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\n\t\t\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\n\t\t\t#endif\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tfloat depth = getLinearDepth( vUv );\n\t\t\tgl_FragColor = vec4( vec3( 1.0 - depth ), 1.0 );\n\n\t\t}`\n\n};\n\nconst SSAOBlurShader = {\n\n\tname: 'SSAOBlurShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'resolution': { value: new Vector2() }\n\n\t},\n\n\tvertexShader:\n\n\t\t`varying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader:\n\n\t\t`uniform sampler2D tDiffuse;\n\n\t\tuniform vec2 resolution;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec2 texelSize = ( 1.0 / resolution );\n\t\t\tfloat result = 0.0;\n\n\t\t\tfor ( int i = - 2; i <= 2; i ++ ) {\n\n\t\t\t\tfor ( int j = - 2; j <= 2; j ++ ) {\n\n\t\t\t\t\tvec2 offset = ( vec2( float( i ), float( j ) ) ) * texelSize;\n\t\t\t\t\tresult += texture2D( tDiffuse, vUv + offset ).r;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgl_FragColor = vec4( vec3( result / ( 5.0 * 5.0 ) ), 1.0 );\n\n\t\t}`\n\n};\n\nexport { SSAOShader, SSAODepthShader, SSAOBlurShader };\n", "import {\n\tAddEquation,\n\tColor,\n\tCustomBlending,\n\tDataTexture,\n\tDepthTexture,\n\tDstAlphaFactor,\n\tDstColorFactor,\n\tFloatType,\n\tHalfFloatType,\n\tMathUtils,\n\tMeshNormalMaterial,\n\tNearestFilter,\n\tNoBlending,\n\tRedFormat,\n\tDepthStencilFormat,\n\tUnsignedInt248Type,\n\tRepeatWrapping,\n\tShaderMaterial,\n\tUniformsUtils,\n\tVector3,\n\tWebGLRenderTarget,\n\tZeroFactor\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { SimplexNoise } from '../math/SimplexNoise.js';\nimport { SSAOShader } from '../shaders/SSAOShader.js';\nimport { SSAOBlurShader } from '../shaders/SSAOShader.js';\nimport { SSAODepthShader } from '../shaders/SSAOShader.js';\nimport { CopyShader } from '../shaders/CopyShader.js';\n\nclass SSAOPass extends Pass {\n\n\tconstructor( scene, camera, width, height, kernelSize = 32 ) {\n\n\t\tsuper();\n\n\t\tthis.width = ( width !== undefined ) ? width : 512;\n\t\tthis.height = ( height !== undefined ) ? height : 512;\n\n\t\tthis.clear = true;\n\t\tthis.needsSwap = false;\n\n\t\tthis.camera = camera;\n\t\tthis.scene = scene;\n\n\t\tthis.kernelRadius = 8;\n\t\tthis.kernel = [];\n\t\tthis.noiseTexture = null;\n\t\tthis.output = 0;\n\n\t\tthis.minDistance = 0.005;\n\t\tthis.maxDistance = 0.1;\n\n\t\tthis._visibilityCache = new Map();\n\n\t\t//\n\n\t\tthis.generateSampleKernel( kernelSize );\n\t\tthis.generateRandomKernelRotations();\n\n\t\t// depth texture\n\n\t\tconst depthTexture = new DepthTexture();\n\t\tdepthTexture.format = DepthStencilFormat;\n\t\tdepthTexture.type = UnsignedInt248Type;\n\n\t\t// normal render target with depth buffer\n\n\t\tthis.normalRenderTarget = new WebGLRenderTarget( this.width, this.height, {\n\t\t\tminFilter: NearestFilter,\n\t\t\tmagFilter: NearestFilter,\n\t\t\ttype: HalfFloatType,\n\t\t\tdepthTexture: depthTexture\n\t\t} );\n\n\t\t// ssao render target\n\n\t\tthis.ssaoRenderTarget = new WebGLRenderTarget( this.width, this.height, { type: HalfFloatType } );\n\n\t\tthis.blurRenderTarget = this.ssaoRenderTarget.clone();\n\n\t\t// ssao material\n\n\t\tthis.ssaoMaterial = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, SSAOShader.defines ),\n\t\t\tuniforms: UniformsUtils.clone( SSAOShader.uniforms ),\n\t\t\tvertexShader: SSAOShader.vertexShader,\n\t\t\tfragmentShader: SSAOShader.fragmentShader,\n\t\t\tblending: NoBlending\n\t\t} );\n\n\t\tthis.ssaoMaterial.defines[ 'KERNEL_SIZE' ] = kernelSize;\n\n\t\tthis.ssaoMaterial.uniforms[ 'tNormal' ].value = this.normalRenderTarget.texture;\n\t\tthis.ssaoMaterial.uniforms[ 'tDepth' ].value = this.normalRenderTarget.depthTexture;\n\t\tthis.ssaoMaterial.uniforms[ 'tNoise' ].value = this.noiseTexture;\n\t\tthis.ssaoMaterial.uniforms[ 'kernel' ].value = this.kernel;\n\t\tthis.ssaoMaterial.uniforms[ 'cameraNear' ].value = this.camera.near;\n\t\tthis.ssaoMaterial.uniforms[ 'cameraFar' ].value = this.camera.far;\n\t\tthis.ssaoMaterial.uniforms[ 'resolution' ].value.set( this.width, this.height );\n\t\tthis.ssaoMaterial.uniforms[ 'cameraProjectionMatrix' ].value.copy( this.camera.projectionMatrix );\n\t\tthis.ssaoMaterial.uniforms[ 'cameraInverseProjectionMatrix' ].value.copy( this.camera.projectionMatrixInverse );\n\n\t\t// normal material\n\n\t\tthis.normalMaterial = new MeshNormalMaterial();\n\t\tthis.normalMaterial.blending = NoBlending;\n\n\t\t// blur material\n\n\t\tthis.blurMaterial = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, SSAOBlurShader.defines ),\n\t\t\tuniforms: UniformsUtils.clone( SSAOBlurShader.uniforms ),\n\t\t\tvertexShader: SSAOBlurShader.vertexShader,\n\t\t\tfragmentShader: SSAOBlurShader.fragmentShader\n\t\t} );\n\t\tthis.blurMaterial.uniforms[ 'tDiffuse' ].value = this.ssaoRenderTarget.texture;\n\t\tthis.blurMaterial.uniforms[ 'resolution' ].value.set( this.width, this.height );\n\n\t\t// material for rendering the depth\n\n\t\tthis.depthRenderMaterial = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, SSAODepthShader.defines ),\n\t\t\tuniforms: UniformsUtils.clone( SSAODepthShader.uniforms ),\n\t\t\tvertexShader: SSAODepthShader.vertexShader,\n\t\t\tfragmentShader: SSAODepthShader.fragmentShader,\n\t\t\tblending: NoBlending\n\t\t} );\n\t\tthis.depthRenderMaterial.uniforms[ 'tDepth' ].value = this.normalRenderTarget.depthTexture;\n\t\tthis.depthRenderMaterial.uniforms[ 'cameraNear' ].value = this.camera.near;\n\t\tthis.depthRenderMaterial.uniforms[ 'cameraFar' ].value = this.camera.far;\n\n\t\t// material for rendering the content of a render target\n\n\t\tthis.copyMaterial = new ShaderMaterial( {\n\t\t\tuniforms: UniformsUtils.clone( CopyShader.uniforms ),\n\t\t\tvertexShader: CopyShader.vertexShader,\n\t\t\tfragmentShader: CopyShader.fragmentShader,\n\t\t\ttransparent: true,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\tblendSrc: DstColorFactor,\n\t\t\tblendDst: ZeroFactor,\n\t\t\tblendEquation: AddEquation,\n\t\t\tblendSrcAlpha: DstAlphaFactor,\n\t\t\tblendDstAlpha: ZeroFactor,\n\t\t\tblendEquationAlpha: AddEquation\n\t\t} );\n\n\t\tthis.fsQuad = new FullScreenQuad( null );\n\n\t\tthis.originalClearColor = new Color();\n\n\t}\n\n\tdispose() {\n\n\t\t// dispose render targets\n\n\t\tthis.normalRenderTarget.dispose();\n\t\tthis.ssaoRenderTarget.dispose();\n\t\tthis.blurRenderTarget.dispose();\n\n\t\t// dispose materials\n\n\t\tthis.normalMaterial.dispose();\n\t\tthis.blurMaterial.dispose();\n\t\tthis.copyMaterial.dispose();\n\t\tthis.depthRenderMaterial.dispose();\n\n\t\t// dipsose full screen quad\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\t// render normals and depth (honor only meshes, points and lines do not contribute to SSAO)\n\n\t\tthis.overrideVisibility();\n\t\tthis.renderOverride( renderer, this.normalMaterial, this.normalRenderTarget, 0x7777ff, 1.0 );\n\t\tthis.restoreVisibility();\n\n\t\t// render SSAO\n\n\t\tthis.ssaoMaterial.uniforms[ 'kernelRadius' ].value = this.kernelRadius;\n\t\tthis.ssaoMaterial.uniforms[ 'minDistance' ].value = this.minDistance;\n\t\tthis.ssaoMaterial.uniforms[ 'maxDistance' ].value = this.maxDistance;\n\t\tthis.renderPass( renderer, this.ssaoMaterial, this.ssaoRenderTarget );\n\n\t\t// render blur\n\n\t\tthis.renderPass( renderer, this.blurMaterial, this.blurRenderTarget );\n\n\t\t// output result to screen\n\n\t\tswitch ( this.output ) {\n\n\t\t\tcase SSAOPass.OUTPUT.SSAO:\n\n\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.ssaoRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : readBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase SSAOPass.OUTPUT.Blur:\n\n\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.blurRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : readBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase SSAOPass.OUTPUT.Depth:\n\n\t\t\t\tthis.renderPass( renderer, this.depthRenderMaterial, this.renderToScreen ? null : readBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase SSAOPass.OUTPUT.Normal:\n\n\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.normalRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : readBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase SSAOPass.OUTPUT.Default:\n\n\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.blurRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = CustomBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : readBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.SSAOPass: Unknown output type.' );\n\n\t\t}\n\n\t}\n\n\trenderPass( renderer, passMaterial, renderTarget, clearColor, clearAlpha ) {\n\n\t\t// save original state\n\t\trenderer.getClearColor( this.originalClearColor );\n\t\tconst originalClearAlpha = renderer.getClearAlpha();\n\t\tconst originalAutoClear = renderer.autoClear;\n\n\t\trenderer.setRenderTarget( renderTarget );\n\n\t\t// setup pass state\n\t\trenderer.autoClear = false;\n\t\tif ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {\n\n\t\t\trenderer.setClearColor( clearColor );\n\t\t\trenderer.setClearAlpha( clearAlpha || 0.0 );\n\t\t\trenderer.clear();\n\n\t\t}\n\n\t\tthis.fsQuad.material = passMaterial;\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// restore original state\n\t\trenderer.autoClear = originalAutoClear;\n\t\trenderer.setClearColor( this.originalClearColor );\n\t\trenderer.setClearAlpha( originalClearAlpha );\n\n\t}\n\n\trenderOverride( renderer, overrideMaterial, renderTarget, clearColor, clearAlpha ) {\n\n\t\trenderer.getClearColor( this.originalClearColor );\n\t\tconst originalClearAlpha = renderer.getClearAlpha();\n\t\tconst originalAutoClear = renderer.autoClear;\n\n\t\trenderer.setRenderTarget( renderTarget );\n\t\trenderer.autoClear = false;\n\n\t\tclearColor = overrideMaterial.clearColor || clearColor;\n\t\tclearAlpha = overrideMaterial.clearAlpha || clearAlpha;\n\n\t\tif ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {\n\n\t\t\trenderer.setClearColor( clearColor );\n\t\t\trenderer.setClearAlpha( clearAlpha || 0.0 );\n\t\t\trenderer.clear();\n\n\t\t}\n\n\t\tthis.scene.overrideMaterial = overrideMaterial;\n\t\trenderer.render( this.scene, this.camera );\n\t\tthis.scene.overrideMaterial = null;\n\n\t\t// restore original state\n\n\t\trenderer.autoClear = originalAutoClear;\n\t\trenderer.setClearColor( this.originalClearColor );\n\t\trenderer.setClearAlpha( originalClearAlpha );\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t\tthis.ssaoRenderTarget.setSize( width, height );\n\t\tthis.normalRenderTarget.setSize( width, height );\n\t\tthis.blurRenderTarget.setSize( width, height );\n\n\t\tthis.ssaoMaterial.uniforms[ 'resolution' ].value.set( width, height );\n\t\tthis.ssaoMaterial.uniforms[ 'cameraProjectionMatrix' ].value.copy( this.camera.projectionMatrix );\n\t\tthis.ssaoMaterial.uniforms[ 'cameraInverseProjectionMatrix' ].value.copy( this.camera.projectionMatrixInverse );\n\n\t\tthis.blurMaterial.uniforms[ 'resolution' ].value.set( width, height );\n\n\t}\n\n\tgenerateSampleKernel( kernelSize ) {\n\n\t\tconst kernel = this.kernel;\n\n\t\tfor ( let i = 0; i < kernelSize; i ++ ) {\n\n\t\t\tconst sample = new Vector3();\n\t\t\tsample.x = ( Math.random() * 2 ) - 1;\n\t\t\tsample.y = ( Math.random() * 2 ) - 1;\n\t\t\tsample.z = Math.random();\n\n\t\t\tsample.normalize();\n\n\t\t\tlet scale = i / kernelSize;\n\t\t\tscale = MathUtils.lerp( 0.1, 1, scale * scale );\n\t\t\tsample.multiplyScalar( scale );\n\n\t\t\tkernel.push( sample );\n\n\t\t}\n\n\t}\n\n\tgenerateRandomKernelRotations() {\n\n\t\tconst width = 4, height = 4;\n\n\t\tconst simplex = new SimplexNoise();\n\n\t\tconst size = width * height;\n\t\tconst data = new Float32Array( size );\n\n\t\tfor ( let i = 0; i < size; i ++ ) {\n\n\t\t\tconst x = ( Math.random() * 2 ) - 1;\n\t\t\tconst y = ( Math.random() * 2 ) - 1;\n\t\t\tconst z = 0;\n\n\t\t\tdata[ i ] = simplex.noise3d( x, y, z );\n\n\t\t}\n\n\t\tthis.noiseTexture = new DataTexture( data, width, height, RedFormat, FloatType );\n\t\tthis.noiseTexture.wrapS = RepeatWrapping;\n\t\tthis.noiseTexture.wrapT = RepeatWrapping;\n\t\tthis.noiseTexture.needsUpdate = true;\n\n\t}\n\n\toverrideVisibility() {\n\n\t\tconst scene = this.scene;\n\t\tconst cache = this._visibilityCache;\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tcache.set( object, object.visible );\n\n\t\t\tif ( object.isPoints || object.isLine ) object.visible = false;\n\n\t\t} );\n\n\t}\n\n\trestoreVisibility() {\n\n\t\tconst scene = this.scene;\n\t\tconst cache = this._visibilityCache;\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst visible = cache.get( object );\n\t\t\tobject.visible = visible;\n\n\t\t} );\n\n\t\tcache.clear();\n\n\t}\n\n}\n\nSSAOPass.OUTPUT = {\n\t'Default': 0,\n\t'SSAO': 1,\n\t'Blur': 2,\n\t'Depth': 3,\n\t'Normal': 4\n};\n\nexport { SSAOPass };\n", "import {\n\tMatrix4,\n\tVector2\n} from 'three';\n/**\n * References:\n * https://lettier.github.io/3d-game-shaders-for-beginners/screen-space-reflection.html\n */\n\nconst SSRShader = {\n\n\tname: 'SSRShader',\n\n\tdefines: {\n\t\tMAX_STEP: 0,\n\t\tPERSPECTIVE_CAMERA: true,\n\t\tDISTANCE_ATTENUATION: true,\n\t\tFRESNEL: true,\n\t\tINFINITE_THICK: false,\n\t\tSELECTIVE: false,\n\t},\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'tNormal': { value: null },\n\t\t'tMetalness': { value: null },\n\t\t'tDepth': { value: null },\n\t\t'cameraNear': { value: null },\n\t\t'cameraFar': { value: null },\n\t\t'resolution': { value: new Vector2() },\n\t\t'cameraProjectionMatrix': { value: new Matrix4() },\n\t\t'cameraInverseProjectionMatrix': { value: new Matrix4() },\n\t\t'opacity': { value: .5 },\n\t\t'maxDistance': { value: 180 },\n\t\t'cameraRange': { value: 0 },\n\t\t'thickness': { value: .018 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}\n\n\t`,\n\n\tfragmentShader: /* glsl */`\n\t\t// precision highp float;\n\t\tprecision highp sampler2D;\n\t\tvarying vec2 vUv;\n\t\tuniform sampler2D tDepth;\n\t\tuniform sampler2D tNormal;\n\t\tuniform sampler2D tMetalness;\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float cameraRange;\n\t\tuniform vec2 resolution;\n\t\tuniform float opacity;\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tuniform float maxDistance;\n\t\tuniform float thickness;\n\t\tuniform mat4 cameraProjectionMatrix;\n\t\tuniform mat4 cameraInverseProjectionMatrix;\n\t\t#include \n\t\tfloat pointToLineDistance(vec3 x0, vec3 x1, vec3 x2) {\n\t\t\t//x0: point, x1: linePointA, x2: linePointB\n\t\t\t//https://mathworld.wolfram.com/Point-LineDistance3-Dimensional.html\n\t\t\treturn length(cross(x0-x1,x0-x2))/length(x2-x1);\n\t\t}\n\t\tfloat pointPlaneDistance(vec3 point,vec3 planePoint,vec3 planeNormal){\n\t\t\t// https://mathworld.wolfram.com/Point-PlaneDistance.html\n\t\t\t//// https://en.wikipedia.org/wiki/Plane_(geometry)\n\t\t\t//// http://paulbourke.net/geometry/pointlineplane/\n\t\t\tfloat a=planeNormal.x,b=planeNormal.y,c=planeNormal.z;\n\t\t\tfloat x0=point.x,y0=point.y,z0=point.z;\n\t\t\tfloat x=planePoint.x,y=planePoint.y,z=planePoint.z;\n\t\t\tfloat d=-(a*x+b*y+c*z);\n\t\t\tfloat distance=(a*x0+b*y0+c*z0+d)/sqrt(a*a+b*b+c*c);\n\t\t\treturn distance;\n\t\t}\n\t\tfloat getDepth( const in vec2 uv ) {\n\t\t\treturn texture2D( tDepth, uv ).x;\n\t\t}\n\t\tfloat getViewZ( const in float depth ) {\n\t\t\t#ifdef PERSPECTIVE_CAMERA\n\t\t\t\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#else\n\t\t\t\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#endif\n\t\t}\n\t\tvec3 getViewPosition( const in vec2 uv, const in float depth/*clip space*/, const in float clipW ) {\n\t\t\tvec4 clipPosition = vec4( ( vec3( uv, depth ) - 0.5 ) * 2.0, 1.0 );//ndc\n\t\t\tclipPosition *= clipW; //clip\n\t\t\treturn ( cameraInverseProjectionMatrix * clipPosition ).xyz;//view\n\t\t}\n\t\tvec3 getViewNormal( const in vec2 uv ) {\n\t\t\treturn unpackRGBToNormal( texture2D( tNormal, uv ).xyz );\n\t\t}\n\t\tvec2 viewPositionToXY(vec3 viewPosition){\n\t\t\tvec2 xy;\n\t\t\tvec4 clip=cameraProjectionMatrix*vec4(viewPosition,1);\n\t\t\txy=clip.xy;//clip\n\t\t\tfloat clipW=clip.w;\n\t\t\txy/=clipW;//NDC\n\t\t\txy=(xy+1.)/2.;//uv\n\t\t\txy*=resolution;//screen\n\t\t\treturn xy;\n\t\t}\n\t\tvoid main(){\n\t\t\t#ifdef SELECTIVE\n\t\t\t\tfloat metalness=texture2D(tMetalness,vUv).r;\n\t\t\t\tif(metalness==0.) return;\n\t\t\t#endif\n\n\t\t\tfloat depth = getDepth( vUv );\n\t\t\tfloat viewZ = getViewZ( depth );\n\t\t\tif(-viewZ>=cameraFar) return;\n\n\t\t\tfloat clipW = cameraProjectionMatrix[2][3] * viewZ+cameraProjectionMatrix[3][3];\n\t\t\tvec3 viewPosition=getViewPosition( vUv, depth, clipW );\n\n\t\t\tvec2 d0=gl_FragCoord.xy;\n\t\t\tvec2 d1;\n\n\t\t\tvec3 viewNormal=getViewNormal( vUv );\n\n\t\t\t#ifdef PERSPECTIVE_CAMERA\n\t\t\t\tvec3 viewIncidentDir=normalize(viewPosition);\n\t\t\t\tvec3 viewReflectDir=reflect(viewIncidentDir,viewNormal);\n\t\t\t#else\n\t\t\t\tvec3 viewIncidentDir=vec3(0,0,-1);\n\t\t\t\tvec3 viewReflectDir=reflect(viewIncidentDir,viewNormal);\n\t\t\t#endif\n\n\t\t\tfloat maxReflectRayLen=maxDistance/dot(-viewIncidentDir,viewNormal);\n\t\t\t// dot(a,b)==length(a)*length(b)*cos(theta) // https://www.mathsisfun.com/algebra/vectors-dot-product.html\n\t\t\t// if(a.isNormalized&&b.isNormalized) dot(a,b)==cos(theta)\n\t\t\t// maxDistance/maxReflectRayLen=cos(theta)\n\t\t\t// maxDistance/maxReflectRayLen==dot(a,b)\n\t\t\t// maxReflectRayLen==maxDistance/dot(a,b)\n\n\t\t\tvec3 d1viewPosition=viewPosition+viewReflectDir*maxReflectRayLen;\n\t\t\t#ifdef PERSPECTIVE_CAMERA\n\t\t\t\tif(d1viewPosition.z>-cameraNear){\n\t\t\t\t\t//https://tutorial.math.lamar.edu/Classes/CalcIII/EqnsOfLines.aspx\n\t\t\t\t\tfloat t=(-cameraNear-viewPosition.z)/viewReflectDir.z;\n\t\t\t\t\td1viewPosition=viewPosition+viewReflectDir*t;\n\t\t\t\t}\n\t\t\t#endif\n\t\t\td1=viewPositionToXY(d1viewPosition);\n\n\t\t\tfloat totalLen=length(d1-d0);\n\t\t\tfloat xLen=d1.x-d0.x;\n\t\t\tfloat yLen=d1.y-d0.y;\n\t\t\tfloat totalStep=max(abs(xLen),abs(yLen));\n\t\t\tfloat xSpan=xLen/totalStep;\n\t\t\tfloat ySpan=yLen/totalStep;\n\t\t\tfor(float i=0.;i=totalStep) break;\n\t\t\t\tvec2 xy=vec2(d0.x+i*xSpan,d0.y+i*ySpan);\n\t\t\t\tif(xy.x<0.||xy.x>resolution.x||xy.y<0.||xy.y>resolution.y) break;\n\t\t\t\tfloat s=length(xy-d0)/totalLen;\n\t\t\t\tvec2 uv=xy/resolution;\n\n\t\t\t\tfloat d = getDepth(uv);\n\t\t\t\tfloat vZ = getViewZ( d );\n\t\t\t\tif(-vZ>=cameraFar) continue;\n\t\t\t\tfloat cW = cameraProjectionMatrix[2][3] * vZ+cameraProjectionMatrix[3][3];\n\t\t\t\tvec3 vP=getViewPosition( uv, d, cW );\n\n\t\t\t\t#ifdef PERSPECTIVE_CAMERA\n\t\t\t\t\t// https://comp.nus.edu.sg/~lowkl/publications/lowk_persp_interp_techrep.pdf\n\t\t\t\t\tfloat recipVPZ=1./viewPosition.z;\n\t\t\t\t\tfloat viewReflectRayZ=1./(recipVPZ+s*(1./d1viewPosition.z-recipVPZ));\n\t\t\t\t#else\n\t\t\t\t\tfloat viewReflectRayZ=viewPosition.z+s*(d1viewPosition.z-viewPosition.z);\n\t\t\t\t#endif\n\n\t\t\t\t// if(viewReflectRayZ>vZ) continue; // will cause \"npm run make-screenshot webgl_postprocessing_ssr\" high probability hang.\n\t\t\t\t// https://github.com/mrdoob/three.js/pull/21539#issuecomment-821061164\n\t\t\t\tif(viewReflectRayZ<=vZ){\n\n\t\t\t\t\tbool hit;\n\t\t\t\t\t#ifdef INFINITE_THICK\n\t\t\t\t\t\thit=true;\n\t\t\t\t\t#else\n\t\t\t\t\t\tfloat away=pointToLineDistance(vP,viewPosition,d1viewPosition);\n\n\t\t\t\t\t\tfloat minThickness;\n\t\t\t\t\t\tvec2 xyNeighbor=xy;\n\t\t\t\t\t\txyNeighbor.x+=1.;\n\t\t\t\t\t\tvec2 uvNeighbor=xyNeighbor/resolution;\n\t\t\t\t\t\tvec3 vPNeighbor=getViewPosition(uvNeighbor,d,cW);\n\t\t\t\t\t\tminThickness=vPNeighbor.x-vP.x;\n\t\t\t\t\t\tminThickness*=3.;\n\t\t\t\t\t\tfloat tk=max(minThickness,thickness);\n\n\t\t\t\t\t\thit=away<=tk;\n\t\t\t\t\t#endif\n\n\t\t\t\t\tif(hit){\n\t\t\t\t\t\tvec3 vN=getViewNormal( uv );\n\t\t\t\t\t\tif(dot(viewReflectDir,vN)>=0.) continue;\n\t\t\t\t\t\tfloat distance=pointPlaneDistance(vP,viewPosition,viewNormal);\n\t\t\t\t\t\tif(distance>maxDistance) break;\n\t\t\t\t\t\tfloat op=opacity;\n\t\t\t\t\t\t#ifdef DISTANCE_ATTENUATION\n\t\t\t\t\t\t\tfloat ratio=1.-(distance/maxDistance);\n\t\t\t\t\t\t\tfloat attenuation=ratio*ratio;\n\t\t\t\t\t\t\top=opacity*attenuation;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#ifdef FRESNEL\n\t\t\t\t\t\t\tfloat fresnelCoe=(dot(viewIncidentDir,viewReflectDir)+1.)/2.;\n\t\t\t\t\t\t\top*=fresnelCoe;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tvec4 reflectColor=texture2D(tDiffuse,uv);\n\t\t\t\t\t\tgl_FragColor.xyz=reflectColor.xyz;\n\t\t\t\t\t\tgl_FragColor.a=op;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t`\n\n};\n\nconst SSRDepthShader = {\n\n\tname: 'SSRDepthShader',\n\n\tdefines: {\n\t\t'PERSPECTIVE_CAMERA': 1\n\t},\n\n\tuniforms: {\n\n\t\t'tDepth': { value: null },\n\t\t'cameraNear': { value: null },\n\t\t'cameraFar': { value: null },\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}\n\n\t`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDepth;\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\n\t\tvarying vec2 vUv;\n\n\t\t#include \n\n\t\tfloat getLinearDepth( const in vec2 uv ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\tfloat fragCoordZ = texture2D( tDepth, uv ).x;\n\t\t\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\n\t\t\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn texture2D( tDepth, uv ).x;\n\n\t\t\t#endif\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tfloat depth = getLinearDepth( vUv );\n\t\t\tfloat d = 1.0 - depth;\n\t\t\t// d=(d-.999)*1000.;\n\t\t\tgl_FragColor = vec4( vec3( d ), 1.0 );\n\n\t\t}\n\n\t`\n\n};\n\nconst SSRBlurShader = {\n\n\tname: 'SSRBlurShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'resolution': { value: new Vector2() },\n\t\t'opacity': { value: .5 },\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}\n\n\t`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform vec2 resolution;\n\t\tvarying vec2 vUv;\n\t\tvoid main() {\n\t\t\t//reverse engineering from PhotoShop blur filter, then change coefficient\n\n\t\t\tvec2 texelSize = ( 1.0 / resolution );\n\n\t\t\tvec4 c=texture2D(tDiffuse,vUv);\n\n\t\t\tvec2 offset;\n\n\t\t\toffset=(vec2(-1,0))*texelSize;\n\t\t\tvec4 cl=texture2D(tDiffuse,vUv+offset);\n\n\t\t\toffset=(vec2(1,0))*texelSize;\n\t\t\tvec4 cr=texture2D(tDiffuse,vUv+offset);\n\n\t\t\toffset=(vec2(0,-1))*texelSize;\n\t\t\tvec4 cb=texture2D(tDiffuse,vUv+offset);\n\n\t\t\toffset=(vec2(0,1))*texelSize;\n\t\t\tvec4 ct=texture2D(tDiffuse,vUv+offset);\n\n\t\t\t// float coeCenter=.5;\n\t\t\t// float coeSide=.125;\n\t\t\tfloat coeCenter=.2;\n\t\t\tfloat coeSide=.2;\n\t\t\tfloat a=c.a*coeCenter+cl.a*coeSide+cr.a*coeSide+cb.a*coeSide+ct.a*coeSide;\n\t\t\tvec3 rgb=(c.rgb*c.a*coeCenter+cl.rgb*cl.a*coeSide+cr.rgb*cr.a*coeSide+cb.rgb*cb.a*coeSide+ct.rgb*ct.a*coeSide)/a;\n\t\t\tgl_FragColor=vec4(rgb,a);\n\n\t\t}\n\t`\n\n\n};\n\nexport { SSRShader, SSRDepthShader, SSRBlurShader };\n", "import {\n\tAddEquation,\n\tColor,\n\tNormalBlending,\n\tDepthTexture,\n\tSrcAlphaFactor,\n\tOneMinusSrcAlphaFactor,\n\tMeshNormalMaterial,\n\tMeshBasicMaterial,\n\tNearestFilter,\n\tNoBlending,\n\tShaderMaterial,\n\tUniformsUtils,\n\tUnsignedShortType,\n\tWebGLRenderTarget,\n\tHalfFloatType,\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { SSRShader } from '../shaders/SSRShader.js';\nimport { SSRBlurShader } from '../shaders/SSRShader.js';\nimport { SSRDepthShader } from '../shaders/SSRShader.js';\nimport { CopyShader } from '../shaders/CopyShader.js';\n\nclass SSRPass extends Pass {\n\n\tconstructor( { renderer, scene, camera, width, height, selects, bouncing = false, groundReflector } ) {\n\n\t\tsuper();\n\n\t\tthis.width = ( width !== undefined ) ? width : 512;\n\t\tthis.height = ( height !== undefined ) ? height : 512;\n\n\t\tthis.clear = true;\n\n\t\tthis.renderer = renderer;\n\t\tthis.scene = scene;\n\t\tthis.camera = camera;\n\t\tthis.groundReflector = groundReflector;\n\n\t\tthis.opacity = SSRShader.uniforms.opacity.value;\n\t\tthis.output = 0;\n\n\t\tthis.maxDistance = SSRShader.uniforms.maxDistance.value;\n\t\tthis.thickness = SSRShader.uniforms.thickness.value;\n\n\t\tthis.tempColor = new Color();\n\n\t\tthis._selects = selects;\n\t\tthis.selective = Array.isArray( this._selects );\n\t\tObject.defineProperty( this, 'selects', {\n\t\t\tget() {\n\n\t\t\t\treturn this._selects;\n\n\t\t\t},\n\t\t\tset( val ) {\n\n\t\t\t\tif ( this._selects === val ) return;\n\t\t\t\tthis._selects = val;\n\t\t\t\tif ( Array.isArray( val ) ) {\n\n\t\t\t\t\tthis.selective = true;\n\t\t\t\t\tthis.ssrMaterial.defines.SELECTIVE = true;\n\t\t\t\t\tthis.ssrMaterial.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.selective = false;\n\t\t\t\t\tthis.ssrMaterial.defines.SELECTIVE = false;\n\t\t\t\t\tthis.ssrMaterial.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t} );\n\n\t\tthis._bouncing = bouncing;\n\t\tObject.defineProperty( this, 'bouncing', {\n\t\t\tget() {\n\n\t\t\t\treturn this._bouncing;\n\n\t\t\t},\n\t\t\tset( val ) {\n\n\t\t\t\tif ( this._bouncing === val ) return;\n\t\t\t\tthis._bouncing = val;\n\t\t\t\tif ( val ) {\n\n\t\t\t\t\tthis.ssrMaterial.uniforms[ 'tDiffuse' ].value = this.prevRenderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.ssrMaterial.uniforms[ 'tDiffuse' ].value = this.beautyRenderTarget.texture;\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.blur = true;\n\n\t\tthis._distanceAttenuation = SSRShader.defines.DISTANCE_ATTENUATION;\n\t\tObject.defineProperty( this, 'distanceAttenuation', {\n\t\t\tget() {\n\n\t\t\t\treturn this._distanceAttenuation;\n\n\t\t\t},\n\t\t\tset( val ) {\n\n\t\t\t\tif ( this._distanceAttenuation === val ) return;\n\t\t\t\tthis._distanceAttenuation = val;\n\t\t\t\tthis.ssrMaterial.defines.DISTANCE_ATTENUATION = val;\n\t\t\t\tthis.ssrMaterial.needsUpdate = true;\n\n\t\t\t}\n\t\t} );\n\n\n\t\tthis._fresnel = SSRShader.defines.FRESNEL;\n\t\tObject.defineProperty( this, 'fresnel', {\n\t\t\tget() {\n\n\t\t\t\treturn this._fresnel;\n\n\t\t\t},\n\t\t\tset( val ) {\n\n\t\t\t\tif ( this._fresnel === val ) return;\n\t\t\t\tthis._fresnel = val;\n\t\t\t\tthis.ssrMaterial.defines.FRESNEL = val;\n\t\t\t\tthis.ssrMaterial.needsUpdate = true;\n\n\t\t\t}\n\t\t} );\n\n\t\tthis._infiniteThick = SSRShader.defines.INFINITE_THICK;\n\t\tObject.defineProperty( this, 'infiniteThick', {\n\t\t\tget() {\n\n\t\t\t\treturn this._infiniteThick;\n\n\t\t\t},\n\t\t\tset( val ) {\n\n\t\t\t\tif ( this._infiniteThick === val ) return;\n\t\t\t\tthis._infiniteThick = val;\n\t\t\t\tthis.ssrMaterial.defines.INFINITE_THICK = val;\n\t\t\t\tthis.ssrMaterial.needsUpdate = true;\n\n\t\t\t}\n\t\t} );\n\n\t\t// beauty render target with depth buffer\n\n\t\tconst depthTexture = new DepthTexture();\n\t\tdepthTexture.type = UnsignedShortType;\n\t\tdepthTexture.minFilter = NearestFilter;\n\t\tdepthTexture.magFilter = NearestFilter;\n\n\t\tthis.beautyRenderTarget = new WebGLRenderTarget( this.width, this.height, {\n\t\t\tminFilter: NearestFilter,\n\t\t\tmagFilter: NearestFilter,\n\t\t\ttype: HalfFloatType,\n\t\t\tdepthTexture: depthTexture,\n\t\t\tdepthBuffer: true\n\t\t} );\n\n\t\t//for bouncing\n\t\tthis.prevRenderTarget = new WebGLRenderTarget( this.width, this.height, {\n\t\t\tminFilter: NearestFilter,\n\t\t\tmagFilter: NearestFilter\n\t\t} );\n\n\t\t// normal render target\n\n\t\tthis.normalRenderTarget = new WebGLRenderTarget( this.width, this.height, {\n\t\t\tminFilter: NearestFilter,\n\t\t\tmagFilter: NearestFilter,\n\t\t\ttype: HalfFloatType,\n\t\t} );\n\n\t\t// metalness render target\n\n\t\tthis.metalnessRenderTarget = new WebGLRenderTarget( this.width, this.height, {\n\t\t\tminFilter: NearestFilter,\n\t\t\tmagFilter: NearestFilter,\n\t\t\ttype: HalfFloatType,\n\t\t} );\n\n\n\n\t\t// ssr render target\n\n\t\tthis.ssrRenderTarget = new WebGLRenderTarget( this.width, this.height, {\n\t\t\tminFilter: NearestFilter,\n\t\t\tmagFilter: NearestFilter\n\t\t} );\n\n\t\tthis.blurRenderTarget = this.ssrRenderTarget.clone();\n\t\tthis.blurRenderTarget2 = this.ssrRenderTarget.clone();\n\t\t// this.blurRenderTarget3 = this.ssrRenderTarget.clone();\n\n\t\t// ssr material\n\n\t\tthis.ssrMaterial = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, SSRShader.defines, {\n\t\t\t\tMAX_STEP: Math.sqrt( this.width * this.width + this.height * this.height )\n\t\t\t} ),\n\t\t\tuniforms: UniformsUtils.clone( SSRShader.uniforms ),\n\t\t\tvertexShader: SSRShader.vertexShader,\n\t\t\tfragmentShader: SSRShader.fragmentShader,\n\t\t\tblending: NoBlending\n\t\t} );\n\n\t\tthis.ssrMaterial.uniforms[ 'tDiffuse' ].value = this.beautyRenderTarget.texture;\n\t\tthis.ssrMaterial.uniforms[ 'tNormal' ].value = this.normalRenderTarget.texture;\n\t\tthis.ssrMaterial.defines.SELECTIVE = this.selective;\n\t\tthis.ssrMaterial.needsUpdate = true;\n\t\tthis.ssrMaterial.uniforms[ 'tMetalness' ].value = this.metalnessRenderTarget.texture;\n\t\tthis.ssrMaterial.uniforms[ 'tDepth' ].value = this.beautyRenderTarget.depthTexture;\n\t\tthis.ssrMaterial.uniforms[ 'cameraNear' ].value = this.camera.near;\n\t\tthis.ssrMaterial.uniforms[ 'cameraFar' ].value = this.camera.far;\n\t\tthis.ssrMaterial.uniforms[ 'thickness' ].value = this.thickness;\n\t\tthis.ssrMaterial.uniforms[ 'resolution' ].value.set( this.width, this.height );\n\t\tthis.ssrMaterial.uniforms[ 'cameraProjectionMatrix' ].value.copy( this.camera.projectionMatrix );\n\t\tthis.ssrMaterial.uniforms[ 'cameraInverseProjectionMatrix' ].value.copy( this.camera.projectionMatrixInverse );\n\n\t\t// normal material\n\n\t\tthis.normalMaterial = new MeshNormalMaterial();\n\t\tthis.normalMaterial.blending = NoBlending;\n\n\t\t// metalnessOn material\n\n\t\tthis.metalnessOnMaterial = new MeshBasicMaterial( {\n\t\t\tcolor: 'white'\n\t\t} );\n\n\t\t// metalnessOff material\n\n\t\tthis.metalnessOffMaterial = new MeshBasicMaterial( {\n\t\t\tcolor: 'black'\n\t\t} );\n\n\t\t// blur material\n\n\t\tthis.blurMaterial = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, SSRBlurShader.defines ),\n\t\t\tuniforms: UniformsUtils.clone( SSRBlurShader.uniforms ),\n\t\t\tvertexShader: SSRBlurShader.vertexShader,\n\t\t\tfragmentShader: SSRBlurShader.fragmentShader\n\t\t} );\n\t\tthis.blurMaterial.uniforms[ 'tDiffuse' ].value = this.ssrRenderTarget.texture;\n\t\tthis.blurMaterial.uniforms[ 'resolution' ].value.set( this.width, this.height );\n\n\t\t// blur material 2\n\n\t\tthis.blurMaterial2 = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, SSRBlurShader.defines ),\n\t\t\tuniforms: UniformsUtils.clone( SSRBlurShader.uniforms ),\n\t\t\tvertexShader: SSRBlurShader.vertexShader,\n\t\t\tfragmentShader: SSRBlurShader.fragmentShader\n\t\t} );\n\t\tthis.blurMaterial2.uniforms[ 'tDiffuse' ].value = this.blurRenderTarget.texture;\n\t\tthis.blurMaterial2.uniforms[ 'resolution' ].value.set( this.width, this.height );\n\n\t\t// // blur material 3\n\n\t\t// this.blurMaterial3 = new ShaderMaterial({\n\t\t// defines: Object.assign({}, SSRBlurShader.defines),\n\t\t// uniforms: UniformsUtils.clone(SSRBlurShader.uniforms),\n\t\t// vertexShader: SSRBlurShader.vertexShader,\n\t\t// fragmentShader: SSRBlurShader.fragmentShader\n\t\t// });\n\t\t// this.blurMaterial3.uniforms['tDiffuse'].value = this.blurRenderTarget2.texture;\n\t\t// this.blurMaterial3.uniforms['resolution'].value.set(this.width, this.height);\n\n\t\t// material for rendering the depth\n\n\t\tthis.depthRenderMaterial = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, SSRDepthShader.defines ),\n\t\t\tuniforms: UniformsUtils.clone( SSRDepthShader.uniforms ),\n\t\t\tvertexShader: SSRDepthShader.vertexShader,\n\t\t\tfragmentShader: SSRDepthShader.fragmentShader,\n\t\t\tblending: NoBlending\n\t\t} );\n\t\tthis.depthRenderMaterial.uniforms[ 'tDepth' ].value = this.beautyRenderTarget.depthTexture;\n\t\tthis.depthRenderMaterial.uniforms[ 'cameraNear' ].value = this.camera.near;\n\t\tthis.depthRenderMaterial.uniforms[ 'cameraFar' ].value = this.camera.far;\n\n\t\t// material for rendering the content of a render target\n\n\t\tthis.copyMaterial = new ShaderMaterial( {\n\t\t\tuniforms: UniformsUtils.clone( CopyShader.uniforms ),\n\t\t\tvertexShader: CopyShader.vertexShader,\n\t\t\tfragmentShader: CopyShader.fragmentShader,\n\t\t\ttransparent: true,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\tblendSrc: SrcAlphaFactor,\n\t\t\tblendDst: OneMinusSrcAlphaFactor,\n\t\t\tblendEquation: AddEquation,\n\t\t\tblendSrcAlpha: SrcAlphaFactor,\n\t\t\tblendDstAlpha: OneMinusSrcAlphaFactor,\n\t\t\tblendEquationAlpha: AddEquation,\n\t\t\t// premultipliedAlpha:true,\n\t\t} );\n\n\t\tthis.fsQuad = new FullScreenQuad( null );\n\n\t\tthis.originalClearColor = new Color();\n\n\t}\n\n\tdispose() {\n\n\t\t// dispose render targets\n\n\t\tthis.beautyRenderTarget.dispose();\n\t\tthis.prevRenderTarget.dispose();\n\t\tthis.normalRenderTarget.dispose();\n\t\tthis.metalnessRenderTarget.dispose();\n\t\tthis.ssrRenderTarget.dispose();\n\t\tthis.blurRenderTarget.dispose();\n\t\tthis.blurRenderTarget2.dispose();\n\t\t// this.blurRenderTarget3.dispose();\n\n\t\t// dispose materials\n\n\t\tthis.normalMaterial.dispose();\n\t\tthis.metalnessOnMaterial.dispose();\n\t\tthis.metalnessOffMaterial.dispose();\n\t\tthis.blurMaterial.dispose();\n\t\tthis.blurMaterial2.dispose();\n\t\tthis.copyMaterial.dispose();\n\t\tthis.depthRenderMaterial.dispose();\n\n\t\t// dipsose full screen quad\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n\trender( renderer, writeBuffer /*, readBuffer, deltaTime, maskActive */ ) {\n\n\t\t// render beauty and depth\n\n\t\trenderer.setRenderTarget( this.beautyRenderTarget );\n\t\trenderer.clear();\n\t\tif ( this.groundReflector ) {\n\n\t\t\tthis.groundReflector.visible = false;\n\t\t\tthis.groundReflector.doRender( this.renderer, this.scene, this.camera );\n\t\t\tthis.groundReflector.visible = true;\n\n\t\t}\n\n\t\trenderer.render( this.scene, this.camera );\n\t\tif ( this.groundReflector ) this.groundReflector.visible = false;\n\n\t\t// render normals\n\n\t\tthis.renderOverride( renderer, this.normalMaterial, this.normalRenderTarget, 0, 0 );\n\n\t\t// render metalnesses\n\n\t\tif ( this.selective ) {\n\n\t\t\tthis.renderMetalness( renderer, this.metalnessOnMaterial, this.metalnessRenderTarget, 0, 0 );\n\n\t\t}\n\n\t\t// render SSR\n\n\t\tthis.ssrMaterial.uniforms[ 'opacity' ].value = this.opacity;\n\t\tthis.ssrMaterial.uniforms[ 'maxDistance' ].value = this.maxDistance;\n\t\tthis.ssrMaterial.uniforms[ 'thickness' ].value = this.thickness;\n\t\tthis.renderPass( renderer, this.ssrMaterial, this.ssrRenderTarget );\n\n\n\t\t// render blur\n\n\t\tif ( this.blur ) {\n\n\t\t\tthis.renderPass( renderer, this.blurMaterial, this.blurRenderTarget );\n\t\t\tthis.renderPass( renderer, this.blurMaterial2, this.blurRenderTarget2 );\n\t\t\t// this.renderPass(renderer, this.blurMaterial3, this.blurRenderTarget3);\n\n\t\t}\n\n\t\t// output result to screen\n\n\t\tswitch ( this.output ) {\n\n\t\t\tcase SSRPass.OUTPUT.Default:\n\n\t\t\t\tif ( this.bouncing ) {\n\n\t\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.beautyRenderTarget.texture;\n\t\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.prevRenderTarget );\n\n\t\t\t\t\tif ( this.blur )\n\t\t\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.blurRenderTarget2.texture;\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.ssrRenderTarget.texture;\n\t\t\t\t\tthis.copyMaterial.blending = NormalBlending;\n\t\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.prevRenderTarget );\n\n\t\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.prevRenderTarget.texture;\n\t\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.beautyRenderTarget.texture;\n\t\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\t\tif ( this.blur )\n\t\t\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.blurRenderTarget2.texture;\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.ssrRenderTarget.texture;\n\t\t\t\t\tthis.copyMaterial.blending = NormalBlending;\n\t\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase SSRPass.OUTPUT.SSR:\n\n\t\t\t\tif ( this.blur )\n\t\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.blurRenderTarget2.texture;\n\t\t\t\telse\n\t\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.ssrRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\tif ( this.bouncing ) {\n\n\t\t\t\t\tif ( this.blur )\n\t\t\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.blurRenderTarget2.texture;\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.beautyRenderTarget.texture;\n\t\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.prevRenderTarget );\n\n\t\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.ssrRenderTarget.texture;\n\t\t\t\t\tthis.copyMaterial.blending = NormalBlending;\n\t\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.prevRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase SSRPass.OUTPUT.Beauty:\n\n\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.beautyRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase SSRPass.OUTPUT.Depth:\n\n\t\t\t\tthis.renderPass( renderer, this.depthRenderMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase SSRPass.OUTPUT.Normal:\n\n\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.normalRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase SSRPass.OUTPUT.Metalness:\n\n\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.metalnessRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.SSRPass: Unknown output type.' );\n\n\t\t}\n\n\t}\n\n\trenderPass( renderer, passMaterial, renderTarget, clearColor, clearAlpha ) {\n\n\t\t// save original state\n\t\tthis.originalClearColor.copy( renderer.getClearColor( this.tempColor ) );\n\t\tconst originalClearAlpha = renderer.getClearAlpha( this.tempColor );\n\t\tconst originalAutoClear = renderer.autoClear;\n\n\t\trenderer.setRenderTarget( renderTarget );\n\n\t\t// setup pass state\n\t\trenderer.autoClear = false;\n\t\tif ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {\n\n\t\t\trenderer.setClearColor( clearColor );\n\t\t\trenderer.setClearAlpha( clearAlpha || 0.0 );\n\t\t\trenderer.clear();\n\n\t\t}\n\n\t\tthis.fsQuad.material = passMaterial;\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// restore original state\n\t\trenderer.autoClear = originalAutoClear;\n\t\trenderer.setClearColor( this.originalClearColor );\n\t\trenderer.setClearAlpha( originalClearAlpha );\n\n\t}\n\n\trenderOverride( renderer, overrideMaterial, renderTarget, clearColor, clearAlpha ) {\n\n\t\tthis.originalClearColor.copy( renderer.getClearColor( this.tempColor ) );\n\t\tconst originalClearAlpha = renderer.getClearAlpha( this.tempColor );\n\t\tconst originalAutoClear = renderer.autoClear;\n\n\t\trenderer.setRenderTarget( renderTarget );\n\t\trenderer.autoClear = false;\n\n\t\tclearColor = overrideMaterial.clearColor || clearColor;\n\t\tclearAlpha = overrideMaterial.clearAlpha || clearAlpha;\n\n\t\tif ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {\n\n\t\t\trenderer.setClearColor( clearColor );\n\t\t\trenderer.setClearAlpha( clearAlpha || 0.0 );\n\t\t\trenderer.clear();\n\n\t\t}\n\n\t\tthis.scene.overrideMaterial = overrideMaterial;\n\t\trenderer.render( this.scene, this.camera );\n\t\tthis.scene.overrideMaterial = null;\n\n\t\t// restore original state\n\n\t\trenderer.autoClear = originalAutoClear;\n\t\trenderer.setClearColor( this.originalClearColor );\n\t\trenderer.setClearAlpha( originalClearAlpha );\n\n\t}\n\n\trenderMetalness( renderer, overrideMaterial, renderTarget, clearColor, clearAlpha ) {\n\n\t\tthis.originalClearColor.copy( renderer.getClearColor( this.tempColor ) );\n\t\tconst originalClearAlpha = renderer.getClearAlpha( this.tempColor );\n\t\tconst originalAutoClear = renderer.autoClear;\n\n\t\trenderer.setRenderTarget( renderTarget );\n\t\trenderer.autoClear = false;\n\n\t\tclearColor = overrideMaterial.clearColor || clearColor;\n\t\tclearAlpha = overrideMaterial.clearAlpha || clearAlpha;\n\n\t\tif ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {\n\n\t\t\trenderer.setClearColor( clearColor );\n\t\t\trenderer.setClearAlpha( clearAlpha || 0.0 );\n\t\t\trenderer.clear();\n\n\t\t}\n\n\t\tthis.scene.traverseVisible( child => {\n\n\t\t\tchild._SSRPassBackupMaterial = child.material;\n\t\t\tif ( this._selects.includes( child ) ) {\n\n\t\t\t\tchild.material = this.metalnessOnMaterial;\n\n\t\t\t} else {\n\n\t\t\t\tchild.material = this.metalnessOffMaterial;\n\n\t\t\t}\n\n\t\t} );\n\t\trenderer.render( this.scene, this.camera );\n\t\tthis.scene.traverseVisible( child => {\n\n\t\t\tchild.material = child._SSRPassBackupMaterial;\n\n\t\t} );\n\n\t\t// restore original state\n\n\t\trenderer.autoClear = originalAutoClear;\n\t\trenderer.setClearColor( this.originalClearColor );\n\t\trenderer.setClearAlpha( originalClearAlpha );\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t\tthis.ssrMaterial.defines.MAX_STEP = Math.sqrt( width * width + height * height );\n\t\tthis.ssrMaterial.needsUpdate = true;\n\t\tthis.beautyRenderTarget.setSize( width, height );\n\t\tthis.prevRenderTarget.setSize( width, height );\n\t\tthis.ssrRenderTarget.setSize( width, height );\n\t\tthis.normalRenderTarget.setSize( width, height );\n\t\tthis.metalnessRenderTarget.setSize( width, height );\n\t\tthis.blurRenderTarget.setSize( width, height );\n\t\tthis.blurRenderTarget2.setSize( width, height );\n\t\t// this.blurRenderTarget3.setSize(width, height);\n\n\t\tthis.ssrMaterial.uniforms[ 'resolution' ].value.set( width, height );\n\t\tthis.ssrMaterial.uniforms[ 'cameraProjectionMatrix' ].value.copy( this.camera.projectionMatrix );\n\t\tthis.ssrMaterial.uniforms[ 'cameraInverseProjectionMatrix' ].value.copy( this.camera.projectionMatrixInverse );\n\n\t\tthis.blurMaterial.uniforms[ 'resolution' ].value.set( width, height );\n\t\tthis.blurMaterial2.uniforms[ 'resolution' ].value.set( width, height );\n\n\t}\n\n}\n\nSSRPass.OUTPUT = {\n\t'Default': 0,\n\t'SSR': 1,\n\t'Beauty': 3,\n\t'Depth': 4,\n\t'Normal': 5,\n\t'Metalness': 7,\n};\n\nexport { SSRPass };\n", "import {\n\tHalfFloatType,\n\tNoBlending,\n\tShaderMaterial,\n\tUniformsUtils,\n\tWebGLRenderTarget\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { CopyShader } from '../shaders/CopyShader.js';\n\nclass SavePass extends Pass {\n\n\tconstructor( renderTarget ) {\n\n\t\tsuper();\n\n\t\tconst shader = CopyShader;\n\n\t\tthis.textureID = 'tDiffuse';\n\n\t\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\tthis.material = new ShaderMaterial( {\n\n\t\t\tuniforms: this.uniforms,\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tthis.renderTarget = renderTarget;\n\n\t\tif ( this.renderTarget === undefined ) {\n\n\t\t\tthis.renderTarget = new WebGLRenderTarget( 1, 1, { type: HalfFloatType } ); // will be resized later\n\t\t\tthis.renderTarget.texture.name = 'SavePass.rt';\n\n\t\t}\n\n\t\tthis.needsSwap = false;\n\n\t\tthis.fsQuad = new FullScreenQuad( this.material );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive */ ) {\n\n\t\tif ( this.uniforms[ this.textureID ] ) {\n\n\t\t\tthis.uniforms[ this.textureID ].value = readBuffer.texture;\n\n\t\t}\n\n\t\trenderer.setRenderTarget( this.renderTarget );\n\t\tif ( this.clear ) renderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis.renderTarget.setSize( width, height );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.renderTarget.dispose();\n\n\t\tthis.material.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nexport { SavePass };\n", "import {\n\tHalfFloatType,\n\tWebGLRenderTarget\n} from 'three';\nimport { SSAARenderPass } from './SSAARenderPass.js';\n\n/**\n *\n * Temporal Anti-Aliasing Render Pass\n *\n * When there is no motion in the scene, the TAA render pass accumulates jittered camera samples across frames to create a high quality anti-aliased result.\n *\n * References:\n *\n * TODO: Add support for motion vector pas so that accumulation of samples across frames can occur on dynamics scenes.\n *\n */\n\nclass TAARenderPass extends SSAARenderPass {\n\n\tconstructor( scene, camera, clearColor, clearAlpha ) {\n\n\t\tsuper( scene, camera, clearColor, clearAlpha );\n\n\t\tthis.sampleLevel = 0;\n\t\tthis.accumulate = false;\n\t\tthis.accumulateIndex = - 1;\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer, deltaTime ) {\n\n\t\tif ( this.accumulate === false ) {\n\n\t\t\tsuper.render( renderer, writeBuffer, readBuffer, deltaTime );\n\n\t\t\tthis.accumulateIndex = - 1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst jitterOffsets = _JitterVectors[ 5 ];\n\n\t\tif ( this.sampleRenderTarget === undefined ) {\n\n\t\t\tthis.sampleRenderTarget = new WebGLRenderTarget( readBuffer.width, readBuffer.height, { type: HalfFloatType } );\n\t\t\tthis.sampleRenderTarget.texture.name = 'TAARenderPass.sample';\n\n\t\t}\n\n\t\tif ( this.holdRenderTarget === undefined ) {\n\n\t\t\tthis.holdRenderTarget = new WebGLRenderTarget( readBuffer.width, readBuffer.height, { type: HalfFloatType } );\n\t\t\tthis.holdRenderTarget.texture.name = 'TAARenderPass.hold';\n\n\t\t}\n\n\t\tif ( this.accumulateIndex === - 1 ) {\n\n\t\t\tsuper.render( renderer, this.holdRenderTarget, readBuffer, deltaTime );\n\n\t\t\tthis.accumulateIndex = 0;\n\n\t\t}\n\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\trenderer.getClearColor( this._oldClearColor );\n\t\tconst oldClearAlpha = renderer.getClearAlpha();\n\n\t\tconst sampleWeight = 1.0 / ( jitterOffsets.length );\n\n\t\tif ( this.accumulateIndex >= 0 && this.accumulateIndex < jitterOffsets.length ) {\n\n\t\t\tthis.copyUniforms[ 'opacity' ].value = sampleWeight;\n\t\t\tthis.copyUniforms[ 'tDiffuse' ].value = writeBuffer.texture;\n\n\t\t\t// render the scene multiple times, each slightly jitter offset from the last and accumulate the results.\n\t\t\tconst numSamplesPerFrame = Math.pow( 2, this.sampleLevel );\n\t\t\tfor ( let i = 0; i < numSamplesPerFrame; i ++ ) {\n\n\t\t\t\tconst j = this.accumulateIndex;\n\t\t\t\tconst jitterOffset = jitterOffsets[ j ];\n\n\t\t\t\tif ( this.camera.setViewOffset ) {\n\n\t\t\t\t\tthis.camera.setViewOffset( readBuffer.width, readBuffer.height,\n\t\t\t\t\t\tjitterOffset[ 0 ] * 0.0625, jitterOffset[ 1 ] * 0.0625, // 0.0625 = 1 / 16\n\t\t\t\t\t\treadBuffer.width, readBuffer.height );\n\n\t\t\t\t}\n\n\t\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\t\trenderer.setClearColor( this.clearColor, this.clearAlpha );\n\t\t\t\trenderer.clear();\n\t\t\t\trenderer.render( this.scene, this.camera );\n\n\t\t\t\trenderer.setRenderTarget( this.sampleRenderTarget );\n\t\t\t\tif ( this.accumulateIndex === 0 ) {\n\n\t\t\t\t\trenderer.setClearColor( 0x000000, 0.0 );\n\t\t\t\t\trenderer.clear();\n\n\t\t\t\t}\n\n\t\t\t\tthis.fsQuad.render( renderer );\n\n\t\t\t\tthis.accumulateIndex ++;\n\n\t\t\t\tif ( this.accumulateIndex >= jitterOffsets.length ) break;\n\n\t\t\t}\n\n\t\t\tif ( this.camera.clearViewOffset ) this.camera.clearViewOffset();\n\n\t\t}\n\n\t\trenderer.setClearColor( this.clearColor, this.clearAlpha );\n\t\tconst accumulationWeight = this.accumulateIndex * sampleWeight;\n\n\t\tif ( accumulationWeight > 0 ) {\n\n\t\t\tthis.copyUniforms[ 'opacity' ].value = 1.0;\n\t\t\tthis.copyUniforms[ 'tDiffuse' ].value = this.sampleRenderTarget.texture;\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t\tif ( accumulationWeight < 1.0 ) {\n\n\t\t\tthis.copyUniforms[ 'opacity' ].value = 1.0 - accumulationWeight;\n\t\t\tthis.copyUniforms[ 'tDiffuse' ].value = this.holdRenderTarget.texture;\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\t\trenderer.setClearColor( this._oldClearColor, oldClearAlpha );\n\n\t}\n\n\tdispose() {\n\n\t\tsuper.dispose();\n\n\t\tif ( this.holdRenderTarget ) this.holdRenderTarget.dispose();\n\n\t}\n\n}\n\nconst _JitterVectors = [\n\t[\n\t\t[ 0, 0 ]\n\t],\n\t[\n\t\t[ 4, 4 ], [ - 4, - 4 ]\n\t],\n\t[\n\t\t[ - 2, - 6 ], [ 6, - 2 ], [ - 6, 2 ], [ 2, 6 ]\n\t],\n\t[\n\t\t[ 1, - 3 ], [ - 1, 3 ], [ 5, 1 ], [ - 3, - 5 ],\n\t\t[ - 5, 5 ], [ - 7, - 1 ], [ 3, 7 ], [ 7, - 7 ]\n\t],\n\t[\n\t\t[ 1, 1 ], [ - 1, - 3 ], [ - 3, 2 ], [ 4, - 1 ],\n\t\t[ - 5, - 2 ], [ 2, 5 ], [ 5, 3 ], [ 3, - 5 ],\n\t\t[ - 2, 6 ], [ 0, - 7 ], [ - 4, - 6 ], [ - 6, 4 ],\n\t\t[ - 8, 0 ], [ 7, - 4 ], [ 6, 7 ], [ - 7, - 8 ]\n\t],\n\t[\n\t\t[ - 4, - 7 ], [ - 7, - 5 ], [ - 3, - 5 ], [ - 5, - 4 ],\n\t\t[ - 1, - 4 ], [ - 2, - 2 ], [ - 6, - 1 ], [ - 4, 0 ],\n\t\t[ - 7, 1 ], [ - 1, 2 ], [ - 6, 3 ], [ - 3, 3 ],\n\t\t[ - 7, 6 ], [ - 3, 6 ], [ - 5, 7 ], [ - 1, 7 ],\n\t\t[ 5, - 7 ], [ 1, - 6 ], [ 6, - 5 ], [ 4, - 4 ],\n\t\t[ 2, - 3 ], [ 7, - 2 ], [ 1, - 1 ], [ 4, - 1 ],\n\t\t[ 2, 1 ], [ 6, 2 ], [ 0, 4 ], [ 4, 4 ],\n\t\t[ 2, 5 ], [ 7, 5 ], [ 5, 6 ], [ 3, 7 ]\n\t]\n];\n\nexport { TAARenderPass };\n", "import {\n\tShaderMaterial,\n\tUniformsUtils\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { CopyShader } from '../shaders/CopyShader.js';\n\nclass TexturePass extends Pass {\n\n\tconstructor( map, opacity ) {\n\n\t\tsuper();\n\n\t\tconst shader = CopyShader;\n\n\t\tthis.map = map;\n\t\tthis.opacity = ( opacity !== undefined ) ? opacity : 1.0;\n\n\t\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\tthis.material = new ShaderMaterial( {\n\n\t\t\tuniforms: this.uniforms,\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\tpremultipliedAlpha: true\n\n\t\t} );\n\n\t\tthis.needsSwap = false;\n\n\t\tthis.fsQuad = new FullScreenQuad( null );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tconst oldAutoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tthis.fsQuad.material = this.material;\n\n\t\tthis.uniforms[ 'opacity' ].value = this.opacity;\n\t\tthis.uniforms[ 'tDiffuse' ].value = this.map;\n\t\tthis.material.transparent = ( this.opacity < 1.0 );\n\n\t\trenderer.setRenderTarget( this.renderToScreen ? null : readBuffer );\n\t\tif ( this.clear ) renderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t\trenderer.autoClear = oldAutoClear;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.material.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nexport { TexturePass };\n", "import {\n\tColor\n} from 'three';\n\n/**\n * Luminosity\n * http://en.wikipedia.org/wiki/Luminosity\n */\n\nconst LuminosityHighPassShader = {\n\n\tname: 'LuminosityHighPassShader',\n\n\tshaderID: 'luminosityHighPass',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'luminosityThreshold': { value: 1.0 },\n\t\t'smoothWidth': { value: 1.0 },\n\t\t'defaultColor': { value: new Color( 0x000000 ) },\n\t\t'defaultOpacity': { value: 0.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform vec3 defaultColor;\n\t\tuniform float defaultOpacity;\n\t\tuniform float luminosityThreshold;\n\t\tuniform float smoothWidth;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\n\t\t\tfloat v = luminance( texel.xyz );\n\n\t\t\tvec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );\n\n\t\t\tfloat alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );\n\n\t\t\tgl_FragColor = mix( outputColor, texel, alpha );\n\n\t\t}`\n\n};\n\nexport { LuminosityHighPassShader };\n", "import {\n\tAdditiveBlending,\n\tColor,\n\tHalfFloatType,\n\tMeshBasicMaterial,\n\tShaderMaterial,\n\tUniformsUtils,\n\tVector2,\n\tVector3,\n\tWebGLRenderTarget\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { CopyShader } from '../shaders/CopyShader.js';\nimport { LuminosityHighPassShader } from '../shaders/LuminosityHighPassShader.js';\n\n/**\n * UnrealBloomPass is inspired by the bloom pass of Unreal Engine. It creates a\n * mip map chain of bloom textures and blurs them with different radii. Because\n * of the weighted combination of mips, and because larger blurs are done on\n * higher mips, this effect provides good quality and performance.\n *\n * Reference:\n * - https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/Bloom/\n */\nclass UnrealBloomPass extends Pass {\n\n\tconstructor( resolution, strength, radius, threshold ) {\n\n\t\tsuper();\n\n\t\tthis.strength = ( strength !== undefined ) ? strength : 1;\n\t\tthis.radius = radius;\n\t\tthis.threshold = threshold;\n\t\tthis.resolution = ( resolution !== undefined ) ? new Vector2( resolution.x, resolution.y ) : new Vector2( 256, 256 );\n\n\t\t// create color only once here, reuse it later inside the render function\n\t\tthis.clearColor = new Color( 0, 0, 0 );\n\n\t\t// render targets\n\t\tthis.renderTargetsHorizontal = [];\n\t\tthis.renderTargetsVertical = [];\n\t\tthis.nMips = 5;\n\t\tlet resx = Math.round( this.resolution.x / 2 );\n\t\tlet resy = Math.round( this.resolution.y / 2 );\n\n\t\tthis.renderTargetBright = new WebGLRenderTarget( resx, resy, { type: HalfFloatType } );\n\t\tthis.renderTargetBright.texture.name = 'UnrealBloomPass.bright';\n\t\tthis.renderTargetBright.texture.generateMipmaps = false;\n\n\t\tfor ( let i = 0; i < this.nMips; i ++ ) {\n\n\t\t\tconst renderTargetHorizontal = new WebGLRenderTarget( resx, resy, { type: HalfFloatType } );\n\n\t\t\trenderTargetHorizontal.texture.name = 'UnrealBloomPass.h' + i;\n\t\t\trenderTargetHorizontal.texture.generateMipmaps = false;\n\n\t\t\tthis.renderTargetsHorizontal.push( renderTargetHorizontal );\n\n\t\t\tconst renderTargetVertical = new WebGLRenderTarget( resx, resy, { type: HalfFloatType } );\n\n\t\t\trenderTargetVertical.texture.name = 'UnrealBloomPass.v' + i;\n\t\t\trenderTargetVertical.texture.generateMipmaps = false;\n\n\t\t\tthis.renderTargetsVertical.push( renderTargetVertical );\n\n\t\t\tresx = Math.round( resx / 2 );\n\n\t\t\tresy = Math.round( resy / 2 );\n\n\t\t}\n\n\t\t// luminosity high pass material\n\n\t\tconst highPassShader = LuminosityHighPassShader;\n\t\tthis.highPassUniforms = UniformsUtils.clone( highPassShader.uniforms );\n\n\t\tthis.highPassUniforms[ 'luminosityThreshold' ].value = threshold;\n\t\tthis.highPassUniforms[ 'smoothWidth' ].value = 0.01;\n\n\t\tthis.materialHighPassFilter = new ShaderMaterial( {\n\t\t\tuniforms: this.highPassUniforms,\n\t\t\tvertexShader: highPassShader.vertexShader,\n\t\t\tfragmentShader: highPassShader.fragmentShader\n\t\t} );\n\n\t\t// gaussian blur materials\n\n\t\tthis.separableBlurMaterials = [];\n\t\tconst kernelSizeArray = [ 3, 5, 7, 9, 11 ];\n\t\tresx = Math.round( this.resolution.x / 2 );\n\t\tresy = Math.round( this.resolution.y / 2 );\n\n\t\tfor ( let i = 0; i < this.nMips; i ++ ) {\n\n\t\t\tthis.separableBlurMaterials.push( this.getSeperableBlurMaterial( kernelSizeArray[ i ] ) );\n\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'invSize' ].value = new Vector2( 1 / resx, 1 / resy );\n\n\t\t\tresx = Math.round( resx / 2 );\n\n\t\t\tresy = Math.round( resy / 2 );\n\n\t\t}\n\n\t\t// composite material\n\n\t\tthis.compositeMaterial = this.getCompositeMaterial( this.nMips );\n\t\tthis.compositeMaterial.uniforms[ 'blurTexture1' ].value = this.renderTargetsVertical[ 0 ].texture;\n\t\tthis.compositeMaterial.uniforms[ 'blurTexture2' ].value = this.renderTargetsVertical[ 1 ].texture;\n\t\tthis.compositeMaterial.uniforms[ 'blurTexture3' ].value = this.renderTargetsVertical[ 2 ].texture;\n\t\tthis.compositeMaterial.uniforms[ 'blurTexture4' ].value = this.renderTargetsVertical[ 3 ].texture;\n\t\tthis.compositeMaterial.uniforms[ 'blurTexture5' ].value = this.renderTargetsVertical[ 4 ].texture;\n\t\tthis.compositeMaterial.uniforms[ 'bloomStrength' ].value = strength;\n\t\tthis.compositeMaterial.uniforms[ 'bloomRadius' ].value = 0.1;\n\n\t\tconst bloomFactors = [ 1.0, 0.8, 0.6, 0.4, 0.2 ];\n\t\tthis.compositeMaterial.uniforms[ 'bloomFactors' ].value = bloomFactors;\n\t\tthis.bloomTintColors = [ new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ) ];\n\t\tthis.compositeMaterial.uniforms[ 'bloomTintColors' ].value = this.bloomTintColors;\n\n\t\t// blend material\n\n\t\tconst copyShader = CopyShader;\n\n\t\tthis.copyUniforms = UniformsUtils.clone( copyShader.uniforms );\n\n\t\tthis.blendMaterial = new ShaderMaterial( {\n\t\t\tuniforms: this.copyUniforms,\n\t\t\tvertexShader: copyShader.vertexShader,\n\t\t\tfragmentShader: copyShader.fragmentShader,\n\t\t\tblending: AdditiveBlending,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\ttransparent: true\n\t\t} );\n\n\t\tthis.enabled = true;\n\t\tthis.needsSwap = false;\n\n\t\tthis._oldClearColor = new Color();\n\t\tthis.oldClearAlpha = 1;\n\n\t\tthis.basic = new MeshBasicMaterial();\n\n\t\tthis.fsQuad = new FullScreenQuad( null );\n\n\t}\n\n\tdispose() {\n\n\t\tfor ( let i = 0; i < this.renderTargetsHorizontal.length; i ++ ) {\n\n\t\t\tthis.renderTargetsHorizontal[ i ].dispose();\n\n\t\t}\n\n\t\tfor ( let i = 0; i < this.renderTargetsVertical.length; i ++ ) {\n\n\t\t\tthis.renderTargetsVertical[ i ].dispose();\n\n\t\t}\n\n\t\tthis.renderTargetBright.dispose();\n\n\t\t//\n\n\t\tfor ( let i = 0; i < this.separableBlurMaterials.length; i ++ ) {\n\n\t\t\tthis.separableBlurMaterials[ i ].dispose();\n\n\t\t}\n\n\t\tthis.compositeMaterial.dispose();\n\t\tthis.blendMaterial.dispose();\n\t\tthis.basic.dispose();\n\n\t\t//\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tlet resx = Math.round( width / 2 );\n\t\tlet resy = Math.round( height / 2 );\n\n\t\tthis.renderTargetBright.setSize( resx, resy );\n\n\t\tfor ( let i = 0; i < this.nMips; i ++ ) {\n\n\t\t\tthis.renderTargetsHorizontal[ i ].setSize( resx, resy );\n\t\t\tthis.renderTargetsVertical[ i ].setSize( resx, resy );\n\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'invSize' ].value = new Vector2( 1 / resx, 1 / resy );\n\n\t\t\tresx = Math.round( resx / 2 );\n\t\t\tresy = Math.round( resy / 2 );\n\n\t\t}\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer, deltaTime, maskActive ) {\n\n\t\trenderer.getClearColor( this._oldClearColor );\n\t\tthis.oldClearAlpha = renderer.getClearAlpha();\n\t\tconst oldAutoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\trenderer.setClearColor( this.clearColor, 0 );\n\n\t\tif ( maskActive ) renderer.state.buffers.stencil.setTest( false );\n\n\t\t// Render input to screen\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\tthis.fsQuad.material = this.basic;\n\t\t\tthis.basic.map = readBuffer.texture;\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t\t// 1. Extract Bright Areas\n\n\t\tthis.highPassUniforms[ 'tDiffuse' ].value = readBuffer.texture;\n\t\tthis.highPassUniforms[ 'luminosityThreshold' ].value = this.threshold;\n\t\tthis.fsQuad.material = this.materialHighPassFilter;\n\n\t\trenderer.setRenderTarget( this.renderTargetBright );\n\t\trenderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// 2. Blur All the mips progressively\n\n\t\tlet inputRenderTarget = this.renderTargetBright;\n\n\t\tfor ( let i = 0; i < this.nMips; i ++ ) {\n\n\t\t\tthis.fsQuad.material = this.separableBlurMaterials[ i ];\n\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'colorTexture' ].value = inputRenderTarget.texture;\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'direction' ].value = UnrealBloomPass.BlurDirectionX;\n\t\t\trenderer.setRenderTarget( this.renderTargetsHorizontal[ i ] );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'colorTexture' ].value = this.renderTargetsHorizontal[ i ].texture;\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'direction' ].value = UnrealBloomPass.BlurDirectionY;\n\t\t\trenderer.setRenderTarget( this.renderTargetsVertical[ i ] );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t\tinputRenderTarget = this.renderTargetsVertical[ i ];\n\n\t\t}\n\n\t\t// Composite All the mips\n\n\t\tthis.fsQuad.material = this.compositeMaterial;\n\t\tthis.compositeMaterial.uniforms[ 'bloomStrength' ].value = this.strength;\n\t\tthis.compositeMaterial.uniforms[ 'bloomRadius' ].value = this.radius;\n\t\tthis.compositeMaterial.uniforms[ 'bloomTintColors' ].value = this.bloomTintColors;\n\n\t\trenderer.setRenderTarget( this.renderTargetsHorizontal[ 0 ] );\n\t\trenderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// Blend it additively over the input texture\n\n\t\tthis.fsQuad.material = this.blendMaterial;\n\t\tthis.copyUniforms[ 'tDiffuse' ].value = this.renderTargetsHorizontal[ 0 ].texture;\n\n\t\tif ( maskActive ) renderer.state.buffers.stencil.setTest( true );\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( readBuffer );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t\t// Restore renderer settings\n\n\t\trenderer.setClearColor( this._oldClearColor, this.oldClearAlpha );\n\t\trenderer.autoClear = oldAutoClear;\n\n\t}\n\n\tgetSeperableBlurMaterial( kernelRadius ) {\n\n\t\tconst coefficients = [];\n\n\t\tfor ( let i = 0; i < kernelRadius; i ++ ) {\n\n\t\t\tcoefficients.push( 0.39894 * Math.exp( - 0.5 * i * i / ( kernelRadius * kernelRadius ) ) / kernelRadius );\n\n\t\t}\n\n\t\treturn new ShaderMaterial( {\n\n\t\t\tdefines: {\n\t\t\t\t'KERNEL_RADIUS': kernelRadius\n\t\t\t},\n\n\t\t\tuniforms: {\n\t\t\t\t'colorTexture': { value: null },\n\t\t\t\t'invSize': { value: new Vector2( 0.5, 0.5 ) }, // inverse texture size\n\t\t\t\t'direction': { value: new Vector2( 0.5, 0.5 ) },\n\t\t\t\t'gaussianCoefficients': { value: coefficients } // precomputed Gaussian coefficients\n\t\t\t},\n\n\t\t\tvertexShader:\n\t\t\t\t`varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n\t\t\tfragmentShader:\n\t\t\t\t`#include \n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 invSize;\n\t\t\t\tuniform vec2 direction;\n\t\t\t\tuniform float gaussianCoefficients[KERNEL_RADIUS];\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tfloat weightSum = gaussianCoefficients[0];\n\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv ).rgb * weightSum;\n\t\t\t\t\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat x = float(i);\n\t\t\t\t\t\tfloat w = gaussianCoefficients[i];\n\t\t\t\t\t\tvec2 uvOffset = direction * invSize * x;\n\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset ).rgb;\n\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset ).rgb;\n\t\t\t\t\t\tdiffuseSum += (sample1 + sample2) * w;\n\t\t\t\t\t\tweightSum += 2.0 * w;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\n\t\t\t\t}`\n\t\t} );\n\n\t}\n\n\tgetCompositeMaterial( nMips ) {\n\n\t\treturn new ShaderMaterial( {\n\n\t\t\tdefines: {\n\t\t\t\t'NUM_MIPS': nMips\n\t\t\t},\n\n\t\t\tuniforms: {\n\t\t\t\t'blurTexture1': { value: null },\n\t\t\t\t'blurTexture2': { value: null },\n\t\t\t\t'blurTexture3': { value: null },\n\t\t\t\t'blurTexture4': { value: null },\n\t\t\t\t'blurTexture5': { value: null },\n\t\t\t\t'bloomStrength': { value: 1.0 },\n\t\t\t\t'bloomFactors': { value: null },\n\t\t\t\t'bloomTintColors': { value: null },\n\t\t\t\t'bloomRadius': { value: 0.0 }\n\t\t\t},\n\n\t\t\tvertexShader:\n\t\t\t\t`varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n\t\t\tfragmentShader:\n\t\t\t\t`varying vec2 vUv;\n\t\t\t\tuniform sampler2D blurTexture1;\n\t\t\t\tuniform sampler2D blurTexture2;\n\t\t\t\tuniform sampler2D blurTexture3;\n\t\t\t\tuniform sampler2D blurTexture4;\n\t\t\t\tuniform sampler2D blurTexture5;\n\t\t\t\tuniform float bloomStrength;\n\t\t\t\tuniform float bloomRadius;\n\t\t\t\tuniform float bloomFactors[NUM_MIPS];\n\t\t\t\tuniform vec3 bloomTintColors[NUM_MIPS];\n\n\t\t\t\tfloat lerpBloomFactor(const in float factor) {\n\t\t\t\t\tfloat mirrorFactor = 1.2 - factor;\n\t\t\t\t\treturn mix(factor, mirrorFactor, bloomRadius);\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\n\t\t\t\t}`\n\t\t} );\n\n\t}\n\n}\n\nUnrealBloomPass.BlurDirectionX = new Vector2( 1.0, 0.0 );\nUnrealBloomPass.BlurDirectionY = new Vector2( 0.0, 1.0 );\n\nexport { UnrealBloomPass };\n", "import {\n\tMatrix4,\n\tObject3D,\n\tVector2,\n\tVector3\n} from 'three';\n\nclass CSS2DObject extends Object3D {\n\n\tconstructor( element = document.createElement( 'div' ) ) {\n\n\t\tsuper();\n\n\t\tthis.isCSS2DObject = true;\n\n\t\tthis.element = element;\n\n\t\tthis.element.style.position = 'absolute';\n\t\tthis.element.style.userSelect = 'none';\n\n\t\tthis.element.setAttribute( 'draggable', false );\n\n\t\tthis.center = new Vector2( 0.5, 0.5 ); // ( 0, 0 ) is the lower left; ( 1, 1 ) is the top right\n\n\t\tthis.addEventListener( 'removed', function () {\n\n\t\t\tthis.traverse( function ( object ) {\n\n\t\t\t\tif ( object.element instanceof Element && object.element.parentNode !== null ) {\n\n\t\t\t\t\tobject.element.parentNode.removeChild( object.element );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.element = source.element.cloneNode( true );\n\n\t\tthis.center = source.center;\n\n\t\treturn this;\n\n\t}\n\n}\n\n//\n\nconst _vector = new Vector3();\nconst _viewMatrix = new Matrix4();\nconst _viewProjectionMatrix = new Matrix4();\nconst _a = new Vector3();\nconst _b = new Vector3();\n\nclass CSS2DRenderer {\n\n\tconstructor( parameters = {} ) {\n\n\t\tconst _this = this;\n\n\t\tlet _width, _height;\n\t\tlet _widthHalf, _heightHalf;\n\n\t\tconst cache = {\n\t\t\tobjects: new WeakMap()\n\t\t};\n\n\t\tconst domElement = parameters.element !== undefined ? parameters.element : document.createElement( 'div' );\n\n\t\tdomElement.style.overflow = 'hidden';\n\n\t\tthis.domElement = domElement;\n\n\t\tthis.getSize = function () {\n\n\t\t\treturn {\n\t\t\t\twidth: _width,\n\t\t\t\theight: _height\n\t\t\t};\n\n\t\t};\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\t_viewMatrix.copy( camera.matrixWorldInverse );\n\t\t\t_viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, _viewMatrix );\n\n\t\t\trenderObject( scene, scene, camera );\n\t\t\tzOrder( scene );\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_widthHalf = _width / 2;\n\t\t\t_heightHalf = _height / 2;\n\n\t\t\tdomElement.style.width = width + 'px';\n\t\t\tdomElement.style.height = height + 'px';\n\n\t\t};\n\n\t\tfunction hideObject( object ) {\n\n\t\t\tif ( object.isCSS2DObject ) object.element.style.display = 'none';\n\n\t\t\tfor ( let i = 0, l = object.children.length; i < l; i ++ ) {\n\n\t\t\t\thideObject( object.children[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera ) {\n\n\t\t\tif ( object.visible === false ) {\n\n\t\t\t\thideObject( object );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\t\t\t\n\t\t\tif ( object.isCSS2DObject ) {\n\n\t\t\t\t_vector.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t_vector.applyMatrix4( _viewProjectionMatrix );\n\n\t\t\t\tconst visible = ( _vector.z >= - 1 && _vector.z <= 1 ) && ( object.layers.test( camera.layers ) === true );\n\n\t\t\t\tconst element = object.element;\n\t\t\t\telement.style.display = visible === true ? '' : 'none';\n\n\t\t\t\tif ( visible === true ) {\n\n\t\t\t\t\tobject.onBeforeRender( _this, scene, camera );\n\n\t\t\t\t\telement.style.transform = 'translate(' + ( - 100 * object.center.x ) + '%,' + ( - 100 * object.center.y ) + '%)' + 'translate(' + ( _vector.x * _widthHalf + _widthHalf ) + 'px,' + ( - _vector.y * _heightHalf + _heightHalf ) + 'px)';\n\n\t\t\t\t\tif ( element.parentNode !== domElement ) {\n\n\t\t\t\t\t\tdomElement.appendChild( element );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobject.onAfterRender( _this, scene, camera );\n\n\t\t\t\t}\n\n\t\t\t\tconst objectData = {\n\t\t\t\t\tdistanceToCameraSquared: getDistanceToSquared( camera, object )\n\t\t\t\t};\n\n\t\t\t\tcache.objects.set( object, objectData );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = object.children.length; i < l; i ++ ) {\n\n\t\t\t\trenderObject( object.children[ i ], scene, camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getDistanceToSquared( object1, object2 ) {\n\n\t\t\t_a.setFromMatrixPosition( object1.matrixWorld );\n\t\t\t_b.setFromMatrixPosition( object2.matrixWorld );\n\n\t\t\treturn _a.distanceToSquared( _b );\n\n\t\t}\n\n\t\tfunction filterAndFlatten( scene ) {\n\n\t\t\tconst result = [];\n\n\t\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\t\tif ( object.isCSS2DObject ) result.push( object );\n\n\t\t\t} );\n\n\t\t\treturn result;\n\n\t\t}\n\n\t\tfunction zOrder( scene ) {\n\n\t\t\tconst sorted = filterAndFlatten( scene ).sort( function ( a, b ) {\n\n\t\t\t\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\t\t\t\treturn b.renderOrder - a.renderOrder;\n\n\t\t\t\t}\n\n\t\t\t\tconst distanceA = cache.objects.get( a ).distanceToCameraSquared;\n\t\t\t\tconst distanceB = cache.objects.get( b ).distanceToCameraSquared;\n\n\t\t\t\treturn distanceA - distanceB;\n\n\t\t\t} );\n\n\t\t\tconst zMax = sorted.length;\n\n\t\t\tfor ( let i = 0, l = sorted.length; i < l; i ++ ) {\n\n\t\t\t\tsorted[ i ].element.style.zIndex = zMax - i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nexport { CSS2DObject, CSS2DRenderer };\n", "import {\n\tMatrix4,\n\tObject3D,\n\tQuaternion,\n\tVector3\n} from 'three';\n\n/**\n * Based on http://www.emagix.net/academic/mscs-project/item/camera-sync-with-css3-and-webgl-threejs\n */\n\nconst _position = new Vector3();\nconst _quaternion = new Quaternion();\nconst _scale = new Vector3();\n\nclass CSS3DObject extends Object3D {\n\n\tconstructor( element = document.createElement( 'div' ) ) {\n\n\t\tsuper();\n\n\t\tthis.isCSS3DObject = true;\n\n\t\tthis.element = element;\n\t\tthis.element.style.position = 'absolute';\n\t\tthis.element.style.pointerEvents = 'auto';\n\t\tthis.element.style.userSelect = 'none';\n\n\t\tthis.element.setAttribute( 'draggable', false );\n\n\t\tthis.addEventListener( 'removed', function () {\n\n\t\t\tthis.traverse( function ( object ) {\n\n\t\t\t\tif ( object.element instanceof Element && object.element.parentNode !== null ) {\n\n\t\t\t\t\tobject.element.parentNode.removeChild( object.element );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.element = source.element.cloneNode( true );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass CSS3DSprite extends CSS3DObject {\n\n\tconstructor( element ) {\n\n\t\tsuper( element );\n\n\t\tthis.isCSS3DSprite = true;\n\n\t\tthis.rotation2D = 0;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.rotation2D = source.rotation2D;\n\n\t\treturn this;\n\n\t}\n\n}\n\n//\n\nconst _matrix = new Matrix4();\nconst _matrix2 = new Matrix4();\n\nclass CSS3DRenderer {\n\n\tconstructor( parameters = {} ) {\n\n\t\tconst _this = this;\n\n\t\tlet _width, _height;\n\t\tlet _widthHalf, _heightHalf;\n\n\t\tconst cache = {\n\t\t\tcamera: { style: '' },\n\t\t\tobjects: new WeakMap()\n\t\t};\n\n\t\tconst domElement = parameters.element !== undefined ? parameters.element : document.createElement( 'div' );\n\n\t\tdomElement.style.overflow = 'hidden';\n\n\t\tthis.domElement = domElement;\n\n\t\tconst viewElement = document.createElement( 'div' );\n\t\tviewElement.style.transformOrigin = '0 0';\n\t\tviewElement.style.pointerEvents = 'none';\n\t\tdomElement.appendChild( viewElement );\n\n\t\tconst cameraElement = document.createElement( 'div' );\n\n\t\tcameraElement.style.transformStyle = 'preserve-3d';\n\n\t\tviewElement.appendChild( cameraElement );\n\n\t\tthis.getSize = function () {\n\n\t\t\treturn {\n\t\t\t\twidth: _width,\n\t\t\t\theight: _height\n\t\t\t};\n\n\t\t};\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tconst fov = camera.projectionMatrix.elements[ 5 ] * _heightHalf;\n\n\t\t\tif ( camera.view && camera.view.enabled ) {\n\n\t\t\t\t// view offset\n\t\t\t\tviewElement.style.transform = `translate( ${ - camera.view.offsetX * ( _width / camera.view.width ) }px, ${ - camera.view.offsetY * ( _height / camera.view.height ) }px )`;\n\n\t\t\t\t// view fullWidth and fullHeight, view width and height\n\t\t\t\tviewElement.style.transform += `scale( ${ camera.view.fullWidth / camera.view.width }, ${ camera.view.fullHeight / camera.view.height } )`;\n\n\t\t\t} else {\n\n\t\t\t\tviewElement.style.transform = '';\n\n\t\t\t}\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\tlet tx, ty;\n\n\t\t\tif ( camera.isOrthographicCamera ) {\n\n\t\t\t\ttx = - ( camera.right + camera.left ) / 2;\n\t\t\t\tty = ( camera.top + camera.bottom ) / 2;\n\n\t\t\t}\n\n\t\t\tconst scaleByViewOffset = camera.view && camera.view.enabled ? camera.view.height / camera.view.fullHeight : 1;\n\t\t\tconst cameraCSSMatrix = camera.isOrthographicCamera ?\n\t\t\t\t`scale( ${ scaleByViewOffset } )` + 'scale(' + fov + ')' + 'translate(' + epsilon( tx ) + 'px,' + epsilon( ty ) + 'px)' + getCameraCSSMatrix( camera.matrixWorldInverse ) :\n\t\t\t\t`scale( ${ scaleByViewOffset } )` + 'translateZ(' + fov + 'px)' + getCameraCSSMatrix( camera.matrixWorldInverse );\n\t\t\tconst perspective = camera.isPerspectiveCamera ? 'perspective(' + fov + 'px) ' : '';\n\n\t\t\tconst style = perspective + cameraCSSMatrix +\n\t\t\t\t'translate(' + _widthHalf + 'px,' + _heightHalf + 'px)';\n\n\t\t\tif ( cache.camera.style !== style ) {\n\n\t\t\t\tcameraElement.style.transform = style;\n\n\t\t\t\tcache.camera.style = style;\n\n\t\t\t}\n\n\t\t\trenderObject( scene, scene, camera, cameraCSSMatrix );\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\t\t\t_widthHalf = _width / 2;\n\t\t\t_heightHalf = _height / 2;\n\n\t\t\tdomElement.style.width = width + 'px';\n\t\t\tdomElement.style.height = height + 'px';\n\n\t\t\tviewElement.style.width = width + 'px';\n\t\t\tviewElement.style.height = height + 'px';\n\n\t\t\tcameraElement.style.width = width + 'px';\n\t\t\tcameraElement.style.height = height + 'px';\n\n\t\t};\n\n\t\tfunction epsilon( value ) {\n\n\t\t\treturn Math.abs( value ) < 1e-10 ? 0 : value;\n\n\t\t}\n\n\t\tfunction getCameraCSSMatrix( matrix ) {\n\n\t\t\tconst elements = matrix.elements;\n\n\t\t\treturn 'matrix3d(' +\n\t\t\t\tepsilon( elements[ 0 ] ) + ',' +\n\t\t\t\tepsilon( - elements[ 1 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 2 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 3 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 4 ] ) + ',' +\n\t\t\t\tepsilon( - elements[ 5 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 6 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 7 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 8 ] ) + ',' +\n\t\t\t\tepsilon( - elements[ 9 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 10 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 11 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 12 ] ) + ',' +\n\t\t\t\tepsilon( - elements[ 13 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 14 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 15 ] ) +\n\t\t\t')';\n\n\t\t}\n\n\t\tfunction getObjectCSSMatrix( matrix ) {\n\n\t\t\tconst elements = matrix.elements;\n\t\t\tconst matrix3d = 'matrix3d(' +\n\t\t\t\tepsilon( elements[ 0 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 1 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 2 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 3 ] ) + ',' +\n\t\t\t\tepsilon( - elements[ 4 ] ) + ',' +\n\t\t\t\tepsilon( - elements[ 5 ] ) + ',' +\n\t\t\t\tepsilon( - elements[ 6 ] ) + ',' +\n\t\t\t\tepsilon( - elements[ 7 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 8 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 9 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 10 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 11 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 12 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 13 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 14 ] ) + ',' +\n\t\t\t\tepsilon( elements[ 15 ] ) +\n\t\t\t')';\n\n\t\t\treturn 'translate(-50%,-50%)' + matrix3d;\n\n\t\t}\n\n\t\tfunction hideObject( object ) {\n\n\t\t\tif ( object.isCSS3DObject ) object.element.style.display = 'none';\n\t \n\t\t\tfor ( let i = 0, l = object.children.length; i < l; i ++ ) {\n\n\t\t\t hideObject( object.children[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera, cameraCSSMatrix ) {\n\n\t\t\tif ( object.visible === false ) {\n\n\t\t\t\thideObject( object );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( object.isCSS3DObject ) {\n\n\t\t\t\tconst visible = ( object.layers.test( camera.layers ) === true );\n\n\t\t\t\tconst element = object.element;\n\t\t\t\telement.style.display = visible === true ? '' : 'none';\n\n\t\t\t\tif ( visible === true ) {\n\n\t\t\t\t\tobject.onBeforeRender( _this, scene, camera );\n\n\t\t\t\t\tlet style;\n\n\t\t\t\t\tif ( object.isCSS3DSprite ) {\n\n\t\t\t\t\t\t// http://swiftcoder.wordpress.com/2008/11/25/constructing-a-billboard-matrix/\n\n\t\t\t\t\t\t_matrix.copy( camera.matrixWorldInverse );\n\t\t\t\t\t\t_matrix.transpose();\n\n\t\t\t\t\t\tif ( object.rotation2D !== 0 ) _matrix.multiply( _matrix2.makeRotationZ( object.rotation2D ) );\n\n\t\t\t\t\t\tobject.matrixWorld.decompose( _position, _quaternion, _scale );\n\t\t\t\t\t\t_matrix.setPosition( _position );\n\t\t\t\t\t\t_matrix.scale( _scale );\n\n\t\t\t\t\t\t_matrix.elements[ 3 ] = 0;\n\t\t\t\t\t\t_matrix.elements[ 7 ] = 0;\n\t\t\t\t\t\t_matrix.elements[ 11 ] = 0;\n\t\t\t\t\t\t_matrix.elements[ 15 ] = 1;\n\n\t\t\t\t\t\tstyle = getObjectCSSMatrix( _matrix );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstyle = getObjectCSSMatrix( object.matrixWorld );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst cachedObject = cache.objects.get( object );\n\n\t\t\t\t\tif ( cachedObject === undefined || cachedObject.style !== style ) {\n\n\t\t\t\t\t\telement.style.transform = style;\n\n\t\t\t\t\t\tconst objectData = { style: style };\n\t\t\t\t\t\tcache.objects.set( object, objectData );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( element.parentNode !== cameraElement ) {\n\n\t\t\t\t\t\tcameraElement.appendChild( element );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobject.onAfterRender( _this, scene, camera );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = object.children.length; i < l; i ++ ) {\n\n\t\t\t\trenderObject( object.children[ i ], scene, camera, cameraCSSMatrix );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nexport { CSS3DObject, CSS3DSprite, CSS3DRenderer };\n", "import {\n\tBox3,\n\tColor,\n\tDoubleSide,\n\tFrustum,\n\tMatrix3,\n\tMatrix4,\n\tVector2,\n\tVector3,\n\tVector4\n} from 'three';\n\nclass RenderableObject {\n\n\tconstructor() {\n\n\t\tthis.id = 0;\n\n\t\tthis.object = null;\n\t\tthis.z = 0;\n\t\tthis.renderOrder = 0;\n\n\t}\n\n}\n\n//\n\nclass RenderableFace {\n\n\tconstructor() {\n\n\t\tthis.id = 0;\n\n\t\tthis.v1 = new RenderableVertex();\n\t\tthis.v2 = new RenderableVertex();\n\t\tthis.v3 = new RenderableVertex();\n\n\t\tthis.normalModel = new Vector3();\n\n\t\tthis.vertexNormalsModel = [ new Vector3(), new Vector3(), new Vector3() ];\n\t\tthis.vertexNormalsLength = 0;\n\n\t\tthis.color = new Color();\n\t\tthis.material = null;\n\t\tthis.uvs = [ new Vector2(), new Vector2(), new Vector2() ];\n\n\t\tthis.z = 0;\n\t\tthis.renderOrder = 0;\n\n\t}\n\n}\n\n//\n\nclass RenderableVertex {\n\n\tconstructor() {\n\n\t\tthis.position = new Vector3();\n\t\tthis.positionWorld = new Vector3();\n\t\tthis.positionScreen = new Vector4();\n\n\t\tthis.visible = true;\n\n\t}\n\n\tcopy( vertex ) {\n\n\t\tthis.positionWorld.copy( vertex.positionWorld );\n\t\tthis.positionScreen.copy( vertex.positionScreen );\n\n\t}\n\n}\n\n//\n\nclass RenderableLine {\n\n\tconstructor() {\n\n\t\tthis.id = 0;\n\n\t\tthis.v1 = new RenderableVertex();\n\t\tthis.v2 = new RenderableVertex();\n\n\t\tthis.vertexColors = [ new Color(), new Color() ];\n\t\tthis.material = null;\n\n\t\tthis.z = 0;\n\t\tthis.renderOrder = 0;\n\n\t}\n\n}\n\n//\n\nclass RenderableSprite {\n\n\tconstructor() {\n\n\t\tthis.id = 0;\n\n\t\tthis.object = null;\n\n\t\tthis.x = 0;\n\t\tthis.y = 0;\n\t\tthis.z = 0;\n\n\t\tthis.rotation = 0;\n\t\tthis.scale = new Vector2();\n\n\t\tthis.material = null;\n\t\tthis.renderOrder = 0;\n\n\t}\n\n}\n\n//\n\nclass Projector {\n\n\tconstructor() {\n\n\t\tlet _object, _objectCount, _objectPoolLength = 0,\n\t\t\t_vertex, _vertexCount, _vertexPoolLength = 0,\n\t\t\t_face, _faceCount, _facePoolLength = 0,\n\t\t\t_line, _lineCount, _linePoolLength = 0,\n\t\t\t_sprite, _spriteCount, _spritePoolLength = 0,\n\t\t\t_modelMatrix;\n\n\t\tconst\n\n\t\t\t_renderData = { objects: [], lights: [], elements: [] },\n\n\t\t\t_vector3 = new Vector3(),\n\t\t\t_vector4 = new Vector4(),\n\n\t\t\t_clipBox = new Box3( new Vector3( - 1, - 1, - 1 ), new Vector3( 1, 1, 1 ) ),\n\t\t\t_boundingBox = new Box3(),\n\t\t\t_points3 = new Array( 3 ),\n\n\t\t\t_viewMatrix = new Matrix4(),\n\t\t\t_viewProjectionMatrix = new Matrix4(),\n\n\t\t\t_modelViewProjectionMatrix = new Matrix4(),\n\n\t\t\t_frustum = new Frustum(),\n\n\t\t\t_objectPool = [], _vertexPool = [], _facePool = [], _linePool = [], _spritePool = [];\n\n\t\t//\n\n\t\tfunction RenderList() {\n\n\t\t\tconst normals = [];\n\t\t\tconst colors = [];\n\t\t\tconst uvs = [];\n\n\t\t\tlet object = null;\n\n\t\t\tconst normalMatrix = new Matrix3();\n\n\t\t\tfunction setObject( value ) {\n\n\t\t\t\tobject = value;\n\n\t\t\t\tnormalMatrix.getNormalMatrix( object.matrixWorld );\n\n\t\t\t\tnormals.length = 0;\n\t\t\t\tcolors.length = 0;\n\t\t\t\tuvs.length = 0;\n\n\t\t\t}\n\n\t\t\tfunction projectVertex( vertex ) {\n\n\t\t\t\tconst position = vertex.position;\n\t\t\t\tconst positionWorld = vertex.positionWorld;\n\t\t\t\tconst positionScreen = vertex.positionScreen;\n\n\t\t\t\tpositionWorld.copy( position ).applyMatrix4( _modelMatrix );\n\t\t\t\tpositionScreen.copy( positionWorld ).applyMatrix4( _viewProjectionMatrix );\n\n\t\t\t\tconst invW = 1 / positionScreen.w;\n\n\t\t\t\tpositionScreen.x *= invW;\n\t\t\t\tpositionScreen.y *= invW;\n\t\t\t\tpositionScreen.z *= invW;\n\n\t\t\t\tvertex.visible = positionScreen.x >= - 1 && positionScreen.x <= 1 &&\n\t\t\t\t\t\t positionScreen.y >= - 1 && positionScreen.y <= 1 &&\n\t\t\t\t\t\t positionScreen.z >= - 1 && positionScreen.z <= 1;\n\n\t\t\t}\n\n\t\t\tfunction pushVertex( x, y, z ) {\n\n\t\t\t\t_vertex = getNextVertexInPool();\n\t\t\t\t_vertex.position.set( x, y, z );\n\n\t\t\t\tprojectVertex( _vertex );\n\n\t\t\t}\n\n\t\t\tfunction pushNormal( x, y, z ) {\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t\tfunction pushColor( r, g, b ) {\n\n\t\t\t\tcolors.push( r, g, b );\n\n\t\t\t}\n\n\t\t\tfunction pushUv( x, y ) {\n\n\t\t\t\tuvs.push( x, y );\n\n\t\t\t}\n\n\t\t\tfunction checkTriangleVisibility( v1, v2, v3 ) {\n\n\t\t\t\tif ( v1.visible === true || v2.visible === true || v3.visible === true ) return true;\n\n\t\t\t\t_points3[ 0 ] = v1.positionScreen;\n\t\t\t\t_points3[ 1 ] = v2.positionScreen;\n\t\t\t\t_points3[ 2 ] = v3.positionScreen;\n\n\t\t\t\treturn _clipBox.intersectsBox( _boundingBox.setFromPoints( _points3 ) );\n\n\t\t\t}\n\n\t\t\tfunction checkBackfaceCulling( v1, v2, v3 ) {\n\n\t\t\t\treturn ( ( v3.positionScreen.x - v1.positionScreen.x ) *\n\t\t\t\t\t ( v2.positionScreen.y - v1.positionScreen.y ) -\n\t\t\t\t\t ( v3.positionScreen.y - v1.positionScreen.y ) *\n\t\t\t\t\t ( v2.positionScreen.x - v1.positionScreen.x ) ) < 0;\n\n\t\t\t}\n\n\t\t\tfunction pushLine( a, b ) {\n\n\t\t\t\tconst v1 = _vertexPool[ a ];\n\t\t\t\tconst v2 = _vertexPool[ b ];\n\n\t\t\t\t// Clip\n\n\t\t\t\tv1.positionScreen.copy( v1.position ).applyMatrix4( _modelViewProjectionMatrix );\n\t\t\t\tv2.positionScreen.copy( v2.position ).applyMatrix4( _modelViewProjectionMatrix );\n\n\t\t\t\tif ( clipLine( v1.positionScreen, v2.positionScreen ) === true ) {\n\n\t\t\t\t\t// Perform the perspective divide\n\t\t\t\t\tv1.positionScreen.multiplyScalar( 1 / v1.positionScreen.w );\n\t\t\t\t\tv2.positionScreen.multiplyScalar( 1 / v2.positionScreen.w );\n\n\t\t\t\t\t_line = getNextLineInPool();\n\t\t\t\t\t_line.id = object.id;\n\t\t\t\t\t_line.v1.copy( v1 );\n\t\t\t\t\t_line.v2.copy( v2 );\n\t\t\t\t\t_line.z = Math.max( v1.positionScreen.z, v2.positionScreen.z );\n\t\t\t\t\t_line.renderOrder = object.renderOrder;\n\n\t\t\t\t\t_line.material = object.material;\n\n\t\t\t\t\tif ( object.material.vertexColors ) {\n\n\t\t\t\t\t\t_line.vertexColors[ 0 ].fromArray( colors, a * 3 );\n\t\t\t\t\t\t_line.vertexColors[ 1 ].fromArray( colors, b * 3 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_renderData.elements.push( _line );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction pushTriangle( a, b, c, material ) {\n\n\t\t\t\tconst v1 = _vertexPool[ a ];\n\t\t\t\tconst v2 = _vertexPool[ b ];\n\t\t\t\tconst v3 = _vertexPool[ c ];\n\n\t\t\t\tif ( checkTriangleVisibility( v1, v2, v3 ) === false ) return;\n\n\t\t\t\tif ( material.side === DoubleSide || checkBackfaceCulling( v1, v2, v3 ) === true ) {\n\n\t\t\t\t\t_face = getNextFaceInPool();\n\n\t\t\t\t\t_face.id = object.id;\n\t\t\t\t\t_face.v1.copy( v1 );\n\t\t\t\t\t_face.v2.copy( v2 );\n\t\t\t\t\t_face.v3.copy( v3 );\n\t\t\t\t\t_face.z = ( v1.positionScreen.z + v2.positionScreen.z + v3.positionScreen.z ) / 3;\n\t\t\t\t\t_face.renderOrder = object.renderOrder;\n\n\t\t\t\t\t// face normal\n\t\t\t\t\t_vector3.subVectors( v3.position, v2.position );\n\t\t\t\t\t_vector4.subVectors( v1.position, v2.position );\n\t\t\t\t\t_vector3.cross( _vector4 );\n\t\t\t\t\t_face.normalModel.copy( _vector3 );\n\t\t\t\t\t_face.normalModel.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\tconst normal = _face.vertexNormalsModel[ i ];\n\t\t\t\t\t\tnormal.fromArray( normals, arguments[ i ] * 3 );\n\t\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t\t\tconst uv = _face.uvs[ i ];\n\t\t\t\t\t\tuv.fromArray( uvs, arguments[ i ] * 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_face.vertexNormalsLength = 3;\n\n\t\t\t\t\t_face.material = material;\n\n\t\t\t\t\tif ( material.vertexColors ) {\n\n\t\t\t\t\t\t_face.color.fromArray( colors, a * 3 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_renderData.elements.push( _face );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tsetObject: setObject,\n\t\t\t\tprojectVertex: projectVertex,\n\t\t\t\tcheckTriangleVisibility: checkTriangleVisibility,\n\t\t\t\tcheckBackfaceCulling: checkBackfaceCulling,\n\t\t\t\tpushVertex: pushVertex,\n\t\t\t\tpushNormal: pushNormal,\n\t\t\t\tpushColor: pushColor,\n\t\t\t\tpushUv: pushUv,\n\t\t\t\tpushLine: pushLine,\n\t\t\t\tpushTriangle: pushTriangle\n\t\t\t};\n\n\t\t}\n\n\t\tconst renderList = new RenderList();\n\n\t\tfunction projectObject( object ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\t_renderData.lights.push( object );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.material.visible === false ) return;\n\t\t\t\tif ( object.frustumCulled === true && _frustum.intersectsObject( object ) === false ) return;\n\n\t\t\t\taddObject( object );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( object.material.visible === false ) return;\n\t\t\t\tif ( object.frustumCulled === true && _frustum.intersectsSprite( object ) === false ) return;\n\n\t\t\t\taddObject( object );\n\n\t\t\t}\n\n\t\t\tconst children = object.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addObject( object ) {\n\n\t\t\t_object = getNextObjectInPool();\n\t\t\t_object.id = object.id;\n\t\t\t_object.object = object;\n\n\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld );\n\t\t\t_vector3.applyMatrix4( _viewProjectionMatrix );\n\t\t\t_object.z = _vector3.z;\n\t\t\t_object.renderOrder = object.renderOrder;\n\n\t\t\t_renderData.objects.push( _object );\n\n\t\t}\n\n\t\tthis.projectScene = function ( scene, camera, sortObjects, sortElements ) {\n\n\t\t\t_faceCount = 0;\n\t\t\t_lineCount = 0;\n\t\t\t_spriteCount = 0;\n\n\t\t\t_renderData.elements.length = 0;\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\t_viewMatrix.copy( camera.matrixWorldInverse );\n\t\t\t_viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, _viewMatrix );\n\n\t\t\t_frustum.setFromProjectionMatrix( _viewProjectionMatrix );\n\n\t\t\t//\n\n\t\t\t_objectCount = 0;\n\n\t\t\t_renderData.objects.length = 0;\n\t\t\t_renderData.lights.length = 0;\n\n\t\t\tprojectObject( scene );\n\n\t\t\tif ( sortObjects === true ) {\n\n\t\t\t\t_renderData.objects.sort( painterSort );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst objects = _renderData.objects;\n\n\t\t\tfor ( let o = 0, ol = objects.length; o < ol; o ++ ) {\n\n\t\t\t\tconst object = objects[ o ].object;\n\t\t\t\tconst geometry = object.geometry;\n\n\t\t\t\trenderList.setObject( object );\n\n\t\t\t\t_modelMatrix = object.matrixWorld;\n\n\t\t\t\t_vertexCount = 0;\n\n\t\t\t\tif ( object.isMesh ) {\n\n\t\t\t\t\tlet material = object.material;\n\n\t\t\t\t\tconst isMultiMaterial = Array.isArray( material );\n\n\t\t\t\t\tconst attributes = geometry.attributes;\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tif ( attributes.position === undefined ) continue;\n\n\t\t\t\t\tconst positions = attributes.position.array;\n\n\t\t\t\t\tfor ( let i = 0, l = positions.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\tlet x = positions[ i ];\n\t\t\t\t\t\tlet y = positions[ i + 1 ];\n\t\t\t\t\t\tlet z = positions[ i + 2 ];\n\n\t\t\t\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\n\t\t\t\t\t\tif ( morphTargets !== undefined ) {\n\n\t\t\t\t\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\t\t\t\t\tconst morphInfluences = object.morphTargetInfluences;\n\n\t\t\t\t\t\t\tfor ( let t = 0, tl = morphTargets.length; t < tl; t ++ ) {\n\n\t\t\t\t\t\t\t\tconst influence = morphInfluences[ t ];\n\n\t\t\t\t\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t\t\t\t\tconst target = morphTargets[ t ];\n\n\t\t\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t\t\tx += target.getX( i / 3 ) * influence;\n\t\t\t\t\t\t\t\t\ty += target.getY( i / 3 ) * influence;\n\t\t\t\t\t\t\t\t\tz += target.getZ( i / 3 ) * influence;\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tx += ( target.getX( i / 3 ) - positions[ i ] ) * influence;\n\t\t\t\t\t\t\t\t\ty += ( target.getY( i / 3 ) - positions[ i + 1 ] ) * influence;\n\t\t\t\t\t\t\t\t\tz += ( target.getZ( i / 3 ) - positions[ i + 2 ] ) * influence;\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\trenderList.pushVertex( x, y, z );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attributes.normal !== undefined ) {\n\n\t\t\t\t\t\tconst normals = attributes.normal.array;\n\n\t\t\t\t\t\tfor ( let i = 0, l = normals.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\trenderList.pushNormal( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attributes.color !== undefined ) {\n\n\t\t\t\t\t\tconst colors = attributes.color.array;\n\n\t\t\t\t\t\tfor ( let i = 0, l = colors.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\trenderList.pushColor( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attributes.uv !== undefined ) {\n\n\t\t\t\t\t\tconst uvs = attributes.uv.array;\n\n\t\t\t\t\t\tfor ( let i = 0, l = uvs.length; i < l; i += 2 ) {\n\n\t\t\t\t\t\t\trenderList.pushUv( uvs[ i ], uvs[ i + 1 ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t\t\tconst indices = geometry.index.array;\n\n\t\t\t\t\t\tif ( groups.length > 0 ) {\n\n\t\t\t\t\t\t\tfor ( let g = 0; g < groups.length; g ++ ) {\n\n\t\t\t\t\t\t\t\tconst group = groups[ g ];\n\n\t\t\t\t\t\t\t\tmaterial = isMultiMaterial === true\n\t\t\t\t\t\t\t\t\t ? object.material[ group.materialIndex ]\n\t\t\t\t\t\t\t\t\t : object.material;\n\n\t\t\t\t\t\t\t\tif ( material === undefined ) continue;\n\n\t\t\t\t\t\t\t\tfor ( let i = group.start, l = group.start + group.count; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\t\t\trenderList.pushTriangle( indices[ i ], indices[ i + 1 ], indices[ i + 2 ], material );\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} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = indices.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\t\trenderList.pushTriangle( indices[ i ], indices[ i + 1 ], indices[ i + 2 ], material );\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 ( groups.length > 0 ) {\n\n\t\t\t\t\t\t\tfor ( let g = 0; g < groups.length; g ++ ) {\n\n\t\t\t\t\t\t\t\tconst group = groups[ g ];\n\n\t\t\t\t\t\t\t\tmaterial = isMultiMaterial === true\n\t\t\t\t\t\t\t\t\t ? object.material[ group.materialIndex ]\n\t\t\t\t\t\t\t\t\t : object.material;\n\n\t\t\t\t\t\t\t\tif ( material === undefined ) continue;\n\n\t\t\t\t\t\t\t\tfor ( let i = group.start, l = group.start + group.count; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\t\t\trenderList.pushTriangle( i, i + 1, i + 2, material );\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} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = positions.length / 3; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\t\trenderList.pushTriangle( i, i + 1, i + 2, material );\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 if ( object.isLine ) {\n\n\t\t\t\t\t_modelViewProjectionMatrix.multiplyMatrices( _viewProjectionMatrix, _modelMatrix );\n\n\t\t\t\t\tconst attributes = geometry.attributes;\n\n\t\t\t\t\tif ( attributes.position !== undefined ) {\n\n\t\t\t\t\t\tconst positions = attributes.position.array;\n\n\t\t\t\t\t\tfor ( let i = 0, l = positions.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\trenderList.pushVertex( positions[ i ], positions[ i + 1 ], positions[ i + 2 ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( attributes.color !== undefined ) {\n\n\t\t\t\t\t\t\tconst colors = attributes.color.array;\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = colors.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\t\trenderList.pushColor( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t\t\t\tconst indices = geometry.index.array;\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = indices.length; i < l; i += 2 ) {\n\n\t\t\t\t\t\t\t\trenderList.pushLine( indices[ i ], indices[ i + 1 ] );\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\tconst step = object.isLineSegments ? 2 : 1;\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = ( positions.length / 3 ) - 1; i < l; i += step ) {\n\n\t\t\t\t\t\t\t\trenderList.pushLine( i, i + 1 );\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 if ( object.isPoints ) {\n\n\t\t\t\t\t_modelViewProjectionMatrix.multiplyMatrices( _viewProjectionMatrix, _modelMatrix );\n\n\t\t\t\t\tconst attributes = geometry.attributes;\n\n\t\t\t\t\tif ( attributes.position !== undefined ) {\n\n\t\t\t\t\t\tconst positions = attributes.position.array;\n\n\t\t\t\t\t\tfor ( let i = 0, l = positions.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\t_vector4.set( positions[ i ], positions[ i + 1 ], positions[ i + 2 ], 1 );\n\t\t\t\t\t\t\t_vector4.applyMatrix4( _modelViewProjectionMatrix );\n\n\t\t\t\t\t\t\tpushPoint( _vector4, object, camera );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\t\t\t_vector4.set( _modelMatrix.elements[ 12 ], _modelMatrix.elements[ 13 ], _modelMatrix.elements[ 14 ], 1 );\n\t\t\t\t\t_vector4.applyMatrix4( _viewProjectionMatrix );\n\n\t\t\t\t\tpushPoint( _vector4, object, camera );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( sortElements === true ) {\n\n\t\t\t\t_renderData.elements.sort( painterSort );\n\n\t\t\t}\n\n\t\t\treturn _renderData;\n\n\t\t};\n\n\t\tfunction pushPoint( _vector4, object, camera ) {\n\n\t\t\tconst invW = 1 / _vector4.w;\n\n\t\t\t_vector4.z *= invW;\n\n\t\t\tif ( _vector4.z >= - 1 && _vector4.z <= 1 ) {\n\n\t\t\t\t_sprite = getNextSpriteInPool();\n\t\t\t\t_sprite.id = object.id;\n\t\t\t\t_sprite.x = _vector4.x * invW;\n\t\t\t\t_sprite.y = _vector4.y * invW;\n\t\t\t\t_sprite.z = _vector4.z;\n\t\t\t\t_sprite.renderOrder = object.renderOrder;\n\t\t\t\t_sprite.object = object;\n\n\t\t\t\t_sprite.rotation = object.rotation;\n\n\t\t\t\t_sprite.scale.x = object.scale.x * Math.abs( _sprite.x - ( _vector4.x + camera.projectionMatrix.elements[ 0 ] ) / ( _vector4.w + camera.projectionMatrix.elements[ 12 ] ) );\n\t\t\t\t_sprite.scale.y = object.scale.y * Math.abs( _sprite.y - ( _vector4.y + camera.projectionMatrix.elements[ 5 ] ) / ( _vector4.w + camera.projectionMatrix.elements[ 13 ] ) );\n\n\t\t\t\t_sprite.material = object.material;\n\n\t\t\t\t_renderData.elements.push( _sprite );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Pools\n\n\t\tfunction getNextObjectInPool() {\n\n\t\t\tif ( _objectCount === _objectPoolLength ) {\n\n\t\t\t\tconst object = new RenderableObject();\n\t\t\t\t_objectPool.push( object );\n\t\t\t\t_objectPoolLength ++;\n\t\t\t\t_objectCount ++;\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t\treturn _objectPool[ _objectCount ++ ];\n\n\t\t}\n\n\t\tfunction getNextVertexInPool() {\n\n\t\t\tif ( _vertexCount === _vertexPoolLength ) {\n\n\t\t\t\tconst vertex = new RenderableVertex();\n\t\t\t\t_vertexPool.push( vertex );\n\t\t\t\t_vertexPoolLength ++;\n\t\t\t\t_vertexCount ++;\n\t\t\t\treturn vertex;\n\n\t\t\t}\n\n\t\t\treturn _vertexPool[ _vertexCount ++ ];\n\n\t\t}\n\n\t\tfunction getNextFaceInPool() {\n\n\t\t\tif ( _faceCount === _facePoolLength ) {\n\n\t\t\t\tconst face = new RenderableFace();\n\t\t\t\t_facePool.push( face );\n\t\t\t\t_facePoolLength ++;\n\t\t\t\t_faceCount ++;\n\t\t\t\treturn face;\n\n\t\t\t}\n\n\t\t\treturn _facePool[ _faceCount ++ ];\n\n\n\t\t}\n\n\t\tfunction getNextLineInPool() {\n\n\t\t\tif ( _lineCount === _linePoolLength ) {\n\n\t\t\t\tconst line = new RenderableLine();\n\t\t\t\t_linePool.push( line );\n\t\t\t\t_linePoolLength ++;\n\t\t\t\t_lineCount ++;\n\t\t\t\treturn line;\n\n\t\t\t}\n\n\t\t\treturn _linePool[ _lineCount ++ ];\n\n\t\t}\n\n\t\tfunction getNextSpriteInPool() {\n\n\t\t\tif ( _spriteCount === _spritePoolLength ) {\n\n\t\t\t\tconst sprite = new RenderableSprite();\n\t\t\t\t_spritePool.push( sprite );\n\t\t\t\t_spritePoolLength ++;\n\t\t\t\t_spriteCount ++;\n\t\t\t\treturn sprite;\n\n\t\t\t}\n\n\t\t\treturn _spritePool[ _spriteCount ++ ];\n\n\t\t}\n\n\t\t//\n\n\t\tfunction painterSort( a, b ) {\n\n\t\t\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\t\t\treturn a.renderOrder - b.renderOrder;\n\n\t\t\t} else if ( a.z !== b.z ) {\n\n\t\t\t\treturn b.z - a.z;\n\n\t\t\t} else if ( a.id !== b.id ) {\n\n\t\t\t\treturn a.id - b.id;\n\n\t\t\t} else {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction clipLine( s1, s2 ) {\n\n\t\t\tlet alpha1 = 0, alpha2 = 1;\n\n\t\t\t// Calculate the boundary coordinate of each vertex for the near and far clip planes,\n\t\t\t// Z = -1 and Z = +1, respectively.\n\n\t\t\tconst bc1near = s1.z + s1.w,\n\t\t\t\tbc2near = s2.z + s2.w,\n\t\t\t\tbc1far = - s1.z + s1.w,\n\t\t\t\tbc2far = - s2.z + s2.w;\n\n\t\t\tif ( bc1near >= 0 && bc2near >= 0 && bc1far >= 0 && bc2far >= 0 ) {\n\n\t\t\t\t// Both vertices lie entirely within all clip planes.\n\t\t\t\treturn true;\n\n\t\t\t} else if ( ( bc1near < 0 && bc2near < 0 ) || ( bc1far < 0 && bc2far < 0 ) ) {\n\n\t\t\t\t// Both vertices lie entirely outside one of the clip planes.\n\t\t\t\treturn false;\n\n\t\t\t} else {\n\n\t\t\t\t// The line segment spans at least one clip plane.\n\n\t\t\t\tif ( bc1near < 0 ) {\n\n\t\t\t\t\t// v1 lies outside the near plane, v2 inside\n\t\t\t\t\talpha1 = Math.max( alpha1, bc1near / ( bc1near - bc2near ) );\n\n\t\t\t\t} else if ( bc2near < 0 ) {\n\n\t\t\t\t\t// v2 lies outside the near plane, v1 inside\n\t\t\t\t\talpha2 = Math.min( alpha2, bc1near / ( bc1near - bc2near ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( bc1far < 0 ) {\n\n\t\t\t\t\t// v1 lies outside the far plane, v2 inside\n\t\t\t\t\talpha1 = Math.max( alpha1, bc1far / ( bc1far - bc2far ) );\n\n\t\t\t\t} else if ( bc2far < 0 ) {\n\n\t\t\t\t\t// v2 lies outside the far plane, v2 inside\n\t\t\t\t\talpha2 = Math.min( alpha2, bc1far / ( bc1far - bc2far ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( alpha2 < alpha1 ) {\n\n\t\t\t\t\t// The line segment spans two boundaries, but is outside both of them.\n\t\t\t\t\t// (This can't happen when we're only clipping against just near/far but good\n\t\t\t\t\t// to leave the check here for future usage if other clip planes are added.)\n\t\t\t\t\treturn false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Update the s1 and s2 vertices to match the clipped line segment.\n\t\t\t\t\ts1.lerp( s2, alpha1 );\n\t\t\t\t\ts2.lerp( s1, 1 - alpha2 );\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nexport { RenderableObject, RenderableFace, RenderableVertex, RenderableLine, RenderableSprite, Projector };\n", "import {\n\tBox2,\n\tCamera,\n\tColor,\n\tMatrix3,\n\tMatrix4,\n\tObject3D,\n\tSRGBColorSpace,\n\tVector3\n} from 'three';\nimport { Projector } from '../renderers/Projector.js';\nimport { RenderableFace } from '../renderers/Projector.js';\nimport { RenderableLine } from '../renderers/Projector.js';\nimport { RenderableSprite } from '../renderers/Projector.js';\n\nclass SVGObject extends Object3D {\n\n\tconstructor( node ) {\n\n\t\tsuper();\n\n\t\tthis.isSVGObject = true;\n\n\t\tthis.node = node;\n\n\t}\n\n}\n\nclass SVGRenderer {\n\n\tconstructor() {\n\n\t\tlet _renderData, _elements, _lights,\n\t\t\t_svgWidth, _svgHeight, _svgWidthHalf, _svgHeightHalf,\n\n\t\t\t_v1, _v2, _v3,\n\n\t\t\t_svgNode,\n\t\t\t_pathCount = 0,\n\n\t\t\t_precision = null,\n\t\t\t_quality = 1,\n\n\t\t\t_currentPath, _currentStyle;\n\n\t\tconst _this = this,\n\t\t\t_clipBox = new Box2(),\n\t\t\t_elemBox = new Box2(),\n\n\t\t\t_color = new Color(),\n\t\t\t_diffuseColor = new Color(),\n\t\t\t_ambientLight = new Color(),\n\t\t\t_directionalLights = new Color(),\n\t\t\t_pointLights = new Color(),\n\t\t\t_clearColor = new Color(),\n\n\t\t\t_vector3 = new Vector3(), // Needed for PointLight\n\t\t\t_centroid = new Vector3(),\n\t\t\t_normal = new Vector3(),\n\t\t\t_normalViewMatrix = new Matrix3(),\n\n\t\t\t_viewMatrix = new Matrix4(),\n\t\t\t_viewProjectionMatrix = new Matrix4(),\n\n\t\t\t_svgPathPool = [],\n\n\t\t\t_projector = new Projector(),\n\t\t\t_svg = document.createElementNS( 'http://www.w3.org/2000/svg', 'svg' );\n\n\t\tthis.domElement = _svg;\n\n\t\tthis.autoClear = true;\n\t\tthis.sortObjects = true;\n\t\tthis.sortElements = true;\n\n\t\tthis.overdraw = 0.5;\n\n\t\tthis.outputColorSpace = SRGBColorSpace;\n\n\t\tthis.info = {\n\n\t\t\trender: {\n\n\t\t\t\tvertices: 0,\n\t\t\t\tfaces: 0\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setQuality = function ( quality ) {\n\n\t\t\tswitch ( quality ) {\n\n\t\t\t\tcase 'high': _quality = 1; break;\n\t\t\t\tcase 'low': _quality = 0; break;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setClearColor = function ( color ) {\n\n\t\t\t_clearColor.set( color );\n\n\t\t};\n\n\t\tthis.setPixelRatio = function () {};\n\n\t\tthis.setSize = function ( width, height ) {\n\n\t\t\t_svgWidth = width; _svgHeight = height;\n\t\t\t_svgWidthHalf = _svgWidth / 2; _svgHeightHalf = _svgHeight / 2;\n\n\t\t\t_svg.setAttribute( 'viewBox', ( - _svgWidthHalf ) + ' ' + ( - _svgHeightHalf ) + ' ' + _svgWidth + ' ' + _svgHeight );\n\t\t\t_svg.setAttribute( 'width', _svgWidth );\n\t\t\t_svg.setAttribute( 'height', _svgHeight );\n\n\t\t\t_clipBox.min.set( - _svgWidthHalf, - _svgHeightHalf );\n\t\t\t_clipBox.max.set( _svgWidthHalf, _svgHeightHalf );\n\n\t\t};\n\n\t\tthis.getSize = function () {\n\n\t\t\treturn {\n\t\t\t\twidth: _svgWidth,\n\t\t\t\theight: _svgHeight\n\t\t\t};\n\n\t\t};\n\n\t\tthis.setPrecision = function ( precision ) {\n\n\t\t\t_precision = precision;\n\n\t\t};\n\n\t\tfunction removeChildNodes() {\n\n\t\t\t_pathCount = 0;\n\n\t\t\twhile ( _svg.childNodes.length > 0 ) {\n\n\t\t\t\t_svg.removeChild( _svg.childNodes[ 0 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction convert( c ) {\n\n\t\t\treturn _precision !== null ? c.toFixed( _precision ) : c;\n\n\t\t}\n\n\t\tthis.clear = function () {\n\n\t\t\tremoveChildNodes();\n\t\t\t_svg.style.backgroundColor = _clearColor.getStyle( _this.outputColorSpace );\n\n\t\t};\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( camera instanceof Camera === false ) {\n\n\t\t\t\tconsole.error( 'THREE.SVGRenderer.render: camera is not an instance of Camera.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst background = scene.background;\n\n\t\t\tif ( background && background.isColor ) {\n\n\t\t\t\tremoveChildNodes();\n\t\t\t\t_svg.style.backgroundColor = background.getStyle( _this.outputColorSpace );\n\n\t\t\t} else if ( this.autoClear === true ) {\n\n\t\t\t\tthis.clear();\n\n\t\t\t}\n\n\t\t\t_this.info.render.vertices = 0;\n\t\t\t_this.info.render.faces = 0;\n\n\t\t\t_viewMatrix.copy( camera.matrixWorldInverse );\n\t\t\t_viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, _viewMatrix );\n\n\t\t\t_renderData = _projector.projectScene( scene, camera, this.sortObjects, this.sortElements );\n\t\t\t_elements = _renderData.elements;\n\t\t\t_lights = _renderData.lights;\n\n\t\t\t_normalViewMatrix.getNormalMatrix( camera.matrixWorldInverse );\n\n\t\t\tcalculateLights( _lights );\n\n\t\t\t // reset accumulated path\n\n\t\t\t_currentPath = '';\n\t\t\t_currentStyle = '';\n\n\t\t\tfor ( let e = 0, el = _elements.length; e < el; e ++ ) {\n\n\t\t\t\tconst element = _elements[ e ];\n\t\t\t\tconst material = element.material;\n\n\t\t\t\tif ( material === undefined || material.opacity === 0 ) continue;\n\n\t\t\t\t_elemBox.makeEmpty();\n\n\t\t\t\tif ( element instanceof RenderableSprite ) {\n\n\t\t\t\t\t_v1 = element;\n\t\t\t\t\t_v1.x *= _svgWidthHalf; _v1.y *= - _svgHeightHalf;\n\n\t\t\t\t\trenderSprite( _v1, element, material );\n\n\t\t\t\t} else if ( element instanceof RenderableLine ) {\n\n\t\t\t\t\t_v1 = element.v1; _v2 = element.v2;\n\n\t\t\t\t\t_v1.positionScreen.x *= _svgWidthHalf; _v1.positionScreen.y *= - _svgHeightHalf;\n\t\t\t\t\t_v2.positionScreen.x *= _svgWidthHalf; _v2.positionScreen.y *= - _svgHeightHalf;\n\n\t\t\t\t\t_elemBox.setFromPoints( [ _v1.positionScreen, _v2.positionScreen ] );\n\n\t\t\t\t\tif ( _clipBox.intersectsBox( _elemBox ) === true ) {\n\n\t\t\t\t\t\trenderLine( _v1, _v2, material );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( element instanceof RenderableFace ) {\n\n\t\t\t\t\t_v1 = element.v1; _v2 = element.v2; _v3 = element.v3;\n\n\t\t\t\t\tif ( _v1.positionScreen.z < - 1 || _v1.positionScreen.z > 1 ) continue;\n\t\t\t\t\tif ( _v2.positionScreen.z < - 1 || _v2.positionScreen.z > 1 ) continue;\n\t\t\t\t\tif ( _v3.positionScreen.z < - 1 || _v3.positionScreen.z > 1 ) continue;\n\n\t\t\t\t\t_v1.positionScreen.x *= _svgWidthHalf; _v1.positionScreen.y *= - _svgHeightHalf;\n\t\t\t\t\t_v2.positionScreen.x *= _svgWidthHalf; _v2.positionScreen.y *= - _svgHeightHalf;\n\t\t\t\t\t_v3.positionScreen.x *= _svgWidthHalf; _v3.positionScreen.y *= - _svgHeightHalf;\n\n\t\t\t\t\tif ( this.overdraw > 0 ) {\n\n\t\t\t\t\t\texpand( _v1.positionScreen, _v2.positionScreen, this.overdraw );\n\t\t\t\t\t\texpand( _v2.positionScreen, _v3.positionScreen, this.overdraw );\n\t\t\t\t\t\texpand( _v3.positionScreen, _v1.positionScreen, this.overdraw );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_elemBox.setFromPoints( [\n\t\t\t\t\t\t_v1.positionScreen,\n\t\t\t\t\t\t_v2.positionScreen,\n\t\t\t\t\t\t_v3.positionScreen\n\t\t\t\t\t] );\n\n\t\t\t\t\tif ( _clipBox.intersectsBox( _elemBox ) === true ) {\n\n\t\t\t\t\t\trenderFace3( _v1, _v2, _v3, element, material );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tflushPath(); // just to flush last svg:path\n\n\t\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\t\t if ( object.isSVGObject ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t\t_vector3.applyMatrix4( _viewProjectionMatrix );\n\n\t\t\t\t\tif ( _vector3.z < - 1 || _vector3.z > 1 ) return;\n\n\t\t\t\t\tconst x = _vector3.x * _svgWidthHalf;\n\t\t\t\t\tconst y = - _vector3.y * _svgHeightHalf;\n\n\t\t\t\t\tconst node = object.node;\n\t\t\t\t\tnode.setAttribute( 'transform', 'translate(' + x + ',' + y + ')' );\n\n\t\t\t\t\t_svg.appendChild( node );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t};\n\n\t\tfunction calculateLights( lights ) {\n\n\t\t\t_ambientLight.setRGB( 0, 0, 0 );\n\t\t\t_directionalLights.setRGB( 0, 0, 0 );\n\t\t\t_pointLights.setRGB( 0, 0, 0 );\n\n\t\t\tfor ( let l = 0, ll = lights.length; l < ll; l ++ ) {\n\n\t\t\t\tconst light = lights[ l ];\n\t\t\t\tconst lightColor = light.color;\n\n\t\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\t\t_ambientLight.r += lightColor.r;\n\t\t\t\t\t_ambientLight.g += lightColor.g;\n\t\t\t\t\t_ambientLight.b += lightColor.b;\n\n\t\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\t\t_directionalLights.r += lightColor.r;\n\t\t\t\t\t_directionalLights.g += lightColor.g;\n\t\t\t\t\t_directionalLights.b += lightColor.b;\n\n\t\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\t\t_pointLights.r += lightColor.r;\n\t\t\t\t\t_pointLights.g += lightColor.g;\n\t\t\t\t\t_pointLights.b += lightColor.b;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction calculateLight( lights, position, normal, color ) {\n\n\t\t\tfor ( let l = 0, ll = lights.length; l < ll; l ++ ) {\n\n\t\t\t\tconst light = lights[ l ];\n\t\t\t\tconst lightColor = light.color;\n\n\t\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\t\tconst lightPosition = _vector3.setFromMatrixPosition( light.matrixWorld ).normalize();\n\n\t\t\t\t\tlet amount = normal.dot( lightPosition );\n\n\t\t\t\t\tif ( amount <= 0 ) continue;\n\n\t\t\t\t\tamount *= light.intensity;\n\n\t\t\t\t\tcolor.r += lightColor.r * amount;\n\t\t\t\t\tcolor.g += lightColor.g * amount;\n\t\t\t\t\tcolor.b += lightColor.b * amount;\n\n\t\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\t\tconst lightPosition = _vector3.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\t\tlet amount = normal.dot( _vector3.subVectors( lightPosition, position ).normalize() );\n\n\t\t\t\t\tif ( amount <= 0 ) continue;\n\n\t\t\t\t\tamount *= light.distance == 0 ? 1 : 1 - Math.min( position.distanceTo( lightPosition ) / light.distance, 1 );\n\n\t\t\t\t\tif ( amount == 0 ) continue;\n\n\t\t\t\t\tamount *= light.intensity;\n\n\t\t\t\t\tcolor.r += lightColor.r * amount;\n\t\t\t\t\tcolor.g += lightColor.g * amount;\n\t\t\t\t\tcolor.b += lightColor.b * amount;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderSprite( v1, element, material ) {\n\n\t\t\tlet scaleX = element.scale.x * _svgWidthHalf;\n\t\t\tlet scaleY = element.scale.y * _svgHeightHalf;\n\n\t\t\tif ( material.isPointsMaterial ) {\n\n\t\t\t\tscaleX *= material.size;\n\t\t\t\tscaleY *= material.size;\n\n\t\t\t}\n\n\t\t\tconst path = 'M' + convert( v1.x - scaleX * 0.5 ) + ',' + convert( v1.y - scaleY * 0.5 ) + 'h' + convert( scaleX ) + 'v' + convert( scaleY ) + 'h' + convert( - scaleX ) + 'z';\n\t\t\tlet style = '';\n\n\t\t\tif ( material.isSpriteMaterial || material.isPointsMaterial ) {\n\n\t\t\t\tstyle = 'fill:' + material.color.getStyle( _this.outputColorSpace ) + ';fill-opacity:' + material.opacity;\n\n\t\t\t}\n\n\t\t\taddPath( style, path );\n\n\t\t}\n\n\t\tfunction renderLine( v1, v2, material ) {\n\n\t\t\tconst path = 'M' + convert( v1.positionScreen.x ) + ',' + convert( v1.positionScreen.y ) + 'L' + convert( v2.positionScreen.x ) + ',' + convert( v2.positionScreen.y );\n\n\t\t\tif ( material.isLineBasicMaterial ) {\n\n\t\t\t\tlet style = 'fill:none;stroke:' + material.color.getStyle( _this.outputColorSpace ) + ';stroke-opacity:' + material.opacity + ';stroke-width:' + material.linewidth + ';stroke-linecap:' + material.linecap;\n\n\t\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\t\tstyle = style + ';stroke-dasharray:' + material.dashSize + ',' + material.gapSize;\n\n\t\t\t\t}\n\n\t\t\t\taddPath( style, path );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderFace3( v1, v2, v3, element, material ) {\n\n\t\t\t_this.info.render.vertices += 3;\n\t\t\t_this.info.render.faces ++;\n\n\t\t\tconst path = 'M' + convert( v1.positionScreen.x ) + ',' + convert( v1.positionScreen.y ) + 'L' + convert( v2.positionScreen.x ) + ',' + convert( v2.positionScreen.y ) + 'L' + convert( v3.positionScreen.x ) + ',' + convert( v3.positionScreen.y ) + 'z';\n\t\t\tlet style = '';\n\n\t\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\t\t_color.copy( material.color );\n\n\t\t\t\tif ( material.vertexColors ) {\n\n\t\t\t\t\t_color.multiply( element.color );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshLambertMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial ) {\n\n\t\t\t\t_diffuseColor.copy( material.color );\n\n\t\t\t\tif ( material.vertexColors ) {\n\n\t\t\t\t\t_diffuseColor.multiply( element.color );\n\n\t\t\t\t}\n\n\t\t\t\t_color.copy( _ambientLight );\n\n\t\t\t\t_centroid.copy( v1.positionWorld ).add( v2.positionWorld ).add( v3.positionWorld ).divideScalar( 3 );\n\n\t\t\t\tcalculateLight( _lights, _centroid, element.normalModel, _color );\n\n\t\t\t\t_color.multiply( _diffuseColor ).add( material.emissive );\n\n\t\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\t\t_normal.copy( element.normalModel ).applyMatrix3( _normalViewMatrix ).normalize();\n\n\t\t\t\t_color.setRGB( _normal.x, _normal.y, _normal.z ).multiplyScalar( 0.5 ).addScalar( 0.5 );\n\n\t\t\t}\n\n\t\t\tif ( material.wireframe ) {\n\n\t\t\t\tstyle = 'fill:none;stroke:' + _color.getStyle( _this.outputColorSpace ) + ';stroke-opacity:' + material.opacity + ';stroke-width:' + material.wireframeLinewidth + ';stroke-linecap:' + material.wireframeLinecap + ';stroke-linejoin:' + material.wireframeLinejoin;\n\n\t\t\t} else {\n\n\t\t\t\tstyle = 'fill:' + _color.getStyle( _this.outputColorSpace ) + ';fill-opacity:' + material.opacity;\n\n\t\t\t}\n\n\t\t\taddPath( style, path );\n\n\t\t}\n\n\t\t// Hide anti-alias gaps\n\n\t\tfunction expand( v1, v2, pixels ) {\n\n\t\t\tlet x = v2.x - v1.x, y = v2.y - v1.y;\n\t\t\tconst det = x * x + y * y;\n\n\t\t\tif ( det === 0 ) return;\n\n\t\t\tconst idet = pixels / Math.sqrt( det );\n\n\t\t\tx *= idet; y *= idet;\n\n\t\t\tv2.x += x; v2.y += y;\n\t\t\tv1.x -= x; v1.y -= y;\n\n\t\t}\n\n\t\tfunction addPath( style, path ) {\n\n\t\t\tif ( _currentStyle === style ) {\n\n\t\t\t\t_currentPath += path;\n\n\t\t\t} else {\n\n\t\t\t\tflushPath();\n\n\t\t\t\t_currentStyle = style;\n\t\t\t\t_currentPath = path;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction flushPath() {\n\n\t\t\tif ( _currentPath ) {\n\n\t\t\t\t_svgNode = getPathNode( _pathCount ++ );\n\t\t\t\t_svgNode.setAttribute( 'd', _currentPath );\n\t\t\t\t_svgNode.setAttribute( 'style', _currentStyle );\n\t\t\t\t_svg.appendChild( _svgNode );\n\n\t\t\t}\n\n\t\t\t_currentPath = '';\n\t\t\t_currentStyle = '';\n\n\t\t}\n\n\t\tfunction getPathNode( id ) {\n\n\t\t\tif ( _svgPathPool[ id ] == null ) {\n\n\t\t\t\t_svgPathPool[ id ] = document.createElementNS( 'http://www.w3.org/2000/svg', 'path' );\n\n\t\t\t\tif ( _quality == 0 ) {\n\n\t\t\t\t\t_svgPathPool[ id ].setAttribute( 'shape-rendering', 'crispEdges' ); //optimizeSpeed\n\n\t\t\t\t}\n\n\t\t\t\treturn _svgPathPool[ id ];\n\n\t\t\t}\n\n\t\t\treturn _svgPathPool[ id ];\n\n\t\t}\n\n\t}\n\n}\n\nexport { SVGObject, SVGRenderer };\n", "/**\n * ACES Filmic Tone Mapping Shader by Stephen Hill\n * source: https://github.com/selfshadow/ltc_code/blob/master/webgl/shaders/ltc/ltc_blit.fs\n *\n * this implementation of ACES is modified to accommodate a brighter viewing environment.\n * the scale factor of 1/0.6 is subjective. see discussion in #19621.\n */\n\nconst ACESFilmicToneMappingShader = {\n\n\tname: 'ACESFilmicToneMappingShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'exposure': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\t#define saturate(a) clamp( a, 0.0, 1.0 )\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tuniform float exposure;\n\n\t\tvarying vec2 vUv;\n\n\t\tvec3 RRTAndODTFit( vec3 v ) {\n\n\t\t\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\t\t\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\t\t\treturn a / b;\n\n\t\t}\n\n\t\tvec3 ACESFilmicToneMapping( vec3 color ) {\n\n\t\t// sRGB => XYZ => D65_2_D60 => AP1 => RRT_SAT\n\t\t\tconst mat3 ACESInputMat = mat3(\n\t\t\t\tvec3( 0.59719, 0.07600, 0.02840 ), // transposed from source\n\t\t\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\t\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t\t\t);\n\n\t\t// ODT_SAT => XYZ => D60_2_D65 => sRGB\n\t\t\tconst mat3 ACESOutputMat = mat3(\n\t\t\t\tvec3( 1.60475, -0.10208, -0.00327 ), // transposed from source\n\t\t\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\t\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t\t\t);\n\n\t\t\tcolor = ACESInputMat * color;\n\n\t\t// Apply RRT and ODT\n\t\t\tcolor = RRTAndODTFit( color );\n\n\t\t\tcolor = ACESOutputMat * color;\n\n\t\t// Clamp to [0, 1]\n\t\t\treturn saturate( color );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvec4 tex = texture2D( tDiffuse, vUv );\n\n\t\t\ttex.rgb *= exposure / 0.6; // pre-exposed, outside of the tone mapping function\n\n\t\t\tgl_FragColor = vec4( ACESFilmicToneMapping( tex.rgb ), tex.a );\n\n\t\t}`\n\n};\n\nexport { ACESFilmicToneMappingShader };\n", "/**\n * Simple test shader\n */\n\nconst BasicShader = {\n\n\tname: 'BasicShader',\n\n\tuniforms: {},\n\n\tvertexShader: /* glsl */`\n\n\t\tvoid main() {\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );\n\n\t\t}`\n\n};\n\nexport { BasicShader };\n", "/**\n * Bleach bypass shader [http://en.wikipedia.org/wiki/Bleach_bypass]\n * - based on Nvidia example\n * http://developer.download.nvidia.com/shaderlibrary/webpages/shader_library.html#post_bleach_bypass\n */\n\nconst BleachBypassShader = {\n\n\tname: 'BleachBypassShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'opacity': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 base = texture2D( tDiffuse, vUv );\n\n\t\t\tvec3 lumCoeff = vec3( 0.25, 0.65, 0.1 );\n\t\t\tfloat lum = dot( lumCoeff, base.rgb );\n\t\t\tvec3 blend = vec3( lum );\n\n\t\t\tfloat L = min( 1.0, max( 0.0, 10.0 * ( lum - 0.45 ) ) );\n\n\t\t\tvec3 result1 = 2.0 * base.rgb * blend;\n\t\t\tvec3 result2 = 1.0 - 2.0 * ( 1.0 - blend ) * ( 1.0 - base.rgb );\n\n\t\t\tvec3 newColor = mix( result1, result2, L );\n\n\t\t\tfloat A2 = opacity * base.a;\n\t\t\tvec3 mixRGB = A2 * newColor.rgb;\n\t\t\tmixRGB += ( ( 1.0 - A2 ) * base.rgb );\n\n\t\t\tgl_FragColor = vec4( mixRGB, base.a );\n\n\t\t}`\n\n};\n\nexport { BleachBypassShader };\n", "/**\n * Blend two textures\n */\n\nconst BlendShader = {\n\n\tname: 'BlendShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse1': { value: null },\n\t\t'tDiffuse2': { value: null },\n\t\t'mixRatio': { value: 0.5 },\n\t\t'opacity': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float opacity;\n\t\tuniform float mixRatio;\n\n\t\tuniform sampler2D tDiffuse1;\n\t\tuniform sampler2D tDiffuse2;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel1 = texture2D( tDiffuse1, vUv );\n\t\t\tvec4 texel2 = texture2D( tDiffuse2, vUv );\n\t\t\tgl_FragColor = opacity * mix( texel1, texel2, mixRatio );\n\n\t\t}`\n\n};\n\nexport { BlendShader };\n", "/**\n * Brightness and contrast adjustment\n * https://github.com/evanw/glfx.js\n * brightness: -1 to 1 (-1 is solid black, 0 is no change, and 1 is solid white)\n * contrast: -1 to 1 (-1 is solid gray, 0 is no change, and 1 is maximum contrast)\n */\n\nconst BrightnessContrastShader = {\n\n\tname: 'BrightnessContrastShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'brightness': { value: 0 },\n\t\t'contrast': { value: 0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float brightness;\n\t\tuniform float contrast;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = texture2D( tDiffuse, vUv );\n\n\t\t\tgl_FragColor.rgb += brightness;\n\n\t\t\tif (contrast > 0.0) {\n\t\t\t\tgl_FragColor.rgb = (gl_FragColor.rgb - 0.5) / (1.0 - contrast) + 0.5;\n\t\t\t} else {\n\t\t\t\tgl_FragColor.rgb = (gl_FragColor.rgb - 0.5) * (1.0 + contrast) + 0.5;\n\t\t\t}\n\n\t\t}`\n\n};\n\nexport { BrightnessContrastShader };\n", "import {\n\tVector3\n} from 'three';\n\n/**\n * Color correction\n */\n\nconst ColorCorrectionShader = {\n\n\tname: 'ColorCorrectionShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'powRGB': { value: new Vector3( 2, 2, 2 ) },\n\t\t'mulRGB': { value: new Vector3( 1, 1, 1 ) },\n\t\t'addRGB': { value: new Vector3( 0, 0, 0 ) }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform vec3 powRGB;\n\t\tuniform vec3 mulRGB;\n\t\tuniform vec3 addRGB;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor.rgb = mulRGB * pow( ( gl_FragColor.rgb + addRGB ), powRGB );\n\n\t\t}`\n\n};\n\nexport { ColorCorrectionShader };\n", "import {\n\tColor\n} from 'three';\n\n/**\n * Colorify shader\n */\n\nconst ColorifyShader = {\n\n\tname: 'ColorifyShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'color': { value: new Color( 0xffffff ) }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform vec3 color;\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\n\t\t\tfloat v = luminance( texel.xyz );\n\n\t\t\tgl_FragColor = vec4( v * color, texel.w );\n\n\t\t}`\n\n};\n\nexport { ColorifyShader };\n", "/**\n * Depth-of-field shader using mipmaps\n * - from Matt Handley @applmak\n * - requires power-of-2 sized render target with enabled mipmaps\n */\n\nconst DOFMipMapShader = {\n\n\tname: 'DOFMipMapShader',\n\n\tuniforms: {\n\n\t\t'tColor': { value: null },\n\t\t'tDepth': { value: null },\n\t\t'focus': { value: 1.0 },\n\t\t'maxblur': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float focus;\n\t\tuniform float maxblur;\n\n\t\tuniform sampler2D tColor;\n\t\tuniform sampler2D tDepth;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 depth = texture2D( tDepth, vUv );\n\n\t\t\tfloat factor = depth.x - focus;\n\n\t\t\tvec4 col = texture2D( tColor, vUv, 2.0 * maxblur * abs( focus - depth.x ) );\n\n\t\t\tgl_FragColor = col;\n\t\t\tgl_FragColor.a = 1.0;\n\n\t\t}`\n\n};\n\nexport { DOFMipMapShader };\n", "/**\n * Exposure shader\n */\n\nconst ExposureShader = {\n\n\tname: 'ExposureShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'exposure': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float exposure;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor.rgb *= exposure;\n\n\t\t}`\n\n};\n\nexport { ExposureShader };\n", "import {\n\tVector2\n} from 'three';\n\n/**\n * NVIDIA FXAA by Timothy Lottes\n * https://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf\n * - WebGL port by @supereggbert\n * http://www.glge.org/demos/fxaa/\n * Further improved by Daniel Sturk\n */\n\nconst FXAAShader = {\n\n\tname: 'FXAAShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'resolution': { value: new Vector2( 1 / 1024, 1 / 512 ) }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\t\tprecision highp float;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tuniform vec2 resolution;\n\n\t\tvarying vec2 vUv;\n\n\t\t// FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)\n\n\t\t//----------------------------------------------------------------------------------\n\t\t// File: es3-kepler\\FXAA\\assets\\shaders/FXAA_DefaultES.frag\n\t\t// SDK Version: v3.00\n\t\t// Email: gameworks@nvidia.com\n\t\t// Site: http://developer.nvidia.com/\n\t\t//\n\t\t// Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.\n\t\t//\n\t\t// Redistribution and use in source and binary forms, with or without\n\t\t// modification, are permitted provided that the following conditions\n\t\t// are met:\n\t\t// * Redistributions of source code must retain the above copyright\n\t\t// notice, this list of conditions and the following disclaimer.\n\t\t// * Redistributions in binary form must reproduce the above copyright\n\t\t// notice, this list of conditions and the following disclaimer in the\n\t\t// documentation and/or other materials provided with the distribution.\n\t\t// * Neither the name of NVIDIA CORPORATION nor the names of its\n\t\t// contributors may be used to endorse or promote products derived\n\t\t// from this software without specific prior written permission.\n\t\t//\n\t\t// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY\n\t\t// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t\t// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n\t\t// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n\t\t// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n\t\t// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n\t\t// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n\t\t// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n\t\t// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t\t// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t\t// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t\t//\n\t\t//----------------------------------------------------------------------------------\n\n\t\t#ifndef FXAA_DISCARD\n\t\t\t//\n\t\t\t// Only valid for PC OpenGL currently.\n\t\t\t// Probably will not work when FXAA_GREEN_AS_LUMA = 1.\n\t\t\t//\n\t\t\t// 1 = Use discard on pixels which don't need AA.\n\t\t\t// For APIs which enable concurrent TEX+ROP from same surface.\n\t\t\t// 0 = Return unchanged color on pixels which don't need AA.\n\t\t\t//\n\t\t\t#define FXAA_DISCARD 0\n\t\t#endif\n\n\t\t/*--------------------------------------------------------------------------*/\n\t\t#define FxaaTexTop(t, p) texture2D(t, p, -100.0)\n\t\t#define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r), -100.0)\n\t\t/*--------------------------------------------------------------------------*/\n\n\t\t#define NUM_SAMPLES 5\n\n\t\t// assumes colors have premultipliedAlpha, so that the calculated color contrast is scaled by alpha\n\t\tfloat contrast( vec4 a, vec4 b ) {\n\t\t\tvec4 diff = abs( a - b );\n\t\t\treturn max( max( max( diff.r, diff.g ), diff.b ), diff.a );\n\t\t}\n\n\t\t/*============================================================================\n\n\t\t\t\t\t\t\t\t\tFXAA3 QUALITY - PC\n\n\t\t============================================================================*/\n\n\t\t/*--------------------------------------------------------------------------*/\n\t\tvec4 FxaaPixelShader(\n\t\t\tvec2 posM,\n\t\t\tsampler2D tex,\n\t\t\tvec2 fxaaQualityRcpFrame,\n\t\t\tfloat fxaaQualityEdgeThreshold,\n\t\t\tfloat fxaaQualityinvEdgeThreshold\n\t\t) {\n\t\t\tvec4 rgbaM = FxaaTexTop(tex, posM);\n\t\t\tvec4 rgbaS = FxaaTexOff(tex, posM, vec2( 0.0, 1.0), fxaaQualityRcpFrame.xy);\n\t\t\tvec4 rgbaE = FxaaTexOff(tex, posM, vec2( 1.0, 0.0), fxaaQualityRcpFrame.xy);\n\t\t\tvec4 rgbaN = FxaaTexOff(tex, posM, vec2( 0.0,-1.0), fxaaQualityRcpFrame.xy);\n\t\t\tvec4 rgbaW = FxaaTexOff(tex, posM, vec2(-1.0, 0.0), fxaaQualityRcpFrame.xy);\n\t\t\t// . S .\n\t\t\t// W M E\n\t\t\t// . N .\n\n\t\t\tbool earlyExit = max( max( max(\n\t\t\t\t\tcontrast( rgbaM, rgbaN ),\n\t\t\t\t\tcontrast( rgbaM, rgbaS ) ),\n\t\t\t\t\tcontrast( rgbaM, rgbaE ) ),\n\t\t\t\t\tcontrast( rgbaM, rgbaW ) )\n\t\t\t\t\t< fxaaQualityEdgeThreshold;\n\t\t\t// . 0 .\n\t\t\t// 0 0 0\n\t\t\t// . 0 .\n\n\t\t\t#if (FXAA_DISCARD == 1)\n\t\t\t\tif(earlyExit) FxaaDiscard;\n\t\t\t#else\n\t\t\t\tif(earlyExit) return rgbaM;\n\t\t\t#endif\n\n\t\t\tfloat contrastN = contrast( rgbaM, rgbaN );\n\t\t\tfloat contrastS = contrast( rgbaM, rgbaS );\n\t\t\tfloat contrastE = contrast( rgbaM, rgbaE );\n\t\t\tfloat contrastW = contrast( rgbaM, rgbaW );\n\n\t\t\tfloat relativeVContrast = ( contrastN + contrastS ) - ( contrastE + contrastW );\n\t\t\trelativeVContrast *= fxaaQualityinvEdgeThreshold;\n\n\t\t\tbool horzSpan = relativeVContrast > 0.;\n\t\t\t// . 1 .\n\t\t\t// 0 0 0\n\t\t\t// . 1 .\n\n\t\t\t// 45 deg edge detection and corners of objects, aka V/H contrast is too similar\n\t\t\tif( abs( relativeVContrast ) < .3 ) {\n\t\t\t\t// locate the edge\n\t\t\t\tvec2 dirToEdge;\n\t\t\t\tdirToEdge.x = contrastE > contrastW ? 1. : -1.;\n\t\t\t\tdirToEdge.y = contrastS > contrastN ? 1. : -1.;\n\t\t\t\t// . 2 . . 1 .\n\t\t\t\t// 1 0 2 ~= 0 0 1\n\t\t\t\t// . 1 . . 0 .\n\n\t\t\t\t// tap 2 pixels and see which ones are \"outside\" the edge, to\n\t\t\t\t// determine if the edge is vertical or horizontal\n\n\t\t\t\tvec4 rgbaAlongH = FxaaTexOff(tex, posM, vec2( dirToEdge.x, -dirToEdge.y ), fxaaQualityRcpFrame.xy);\n\t\t\t\tfloat matchAlongH = contrast( rgbaM, rgbaAlongH );\n\t\t\t\t// . 1 .\n\t\t\t\t// 0 0 1\n\t\t\t\t// . 0 H\n\n\t\t\t\tvec4 rgbaAlongV = FxaaTexOff(tex, posM, vec2( -dirToEdge.x, dirToEdge.y ), fxaaQualityRcpFrame.xy);\n\t\t\t\tfloat matchAlongV = contrast( rgbaM, rgbaAlongV );\n\t\t\t\t// V 1 .\n\t\t\t\t// 0 0 1\n\t\t\t\t// . 0 .\n\n\t\t\t\trelativeVContrast = matchAlongV - matchAlongH;\n\t\t\t\trelativeVContrast *= fxaaQualityinvEdgeThreshold;\n\n\t\t\t\tif( abs( relativeVContrast ) < .3 ) { // 45 deg edge\n\t\t\t\t\t// 1 1 .\n\t\t\t\t\t// 0 0 1\n\t\t\t\t\t// . 0 1\n\n\t\t\t\t\t// do a simple blur\n\t\t\t\t\treturn mix(\n\t\t\t\t\t\trgbaM,\n\t\t\t\t\t\t(rgbaN + rgbaS + rgbaE + rgbaW) * .25,\n\t\t\t\t\t\t.4\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\thorzSpan = relativeVContrast > 0.;\n\t\t\t}\n\n\t\t\tif(!horzSpan) rgbaN = rgbaW;\n\t\t\tif(!horzSpan) rgbaS = rgbaE;\n\t\t\t// . 0 . 1\n\t\t\t// 1 0 1 -> 0\n\t\t\t// . 0 . 1\n\n\t\t\tbool pairN = contrast( rgbaM, rgbaN ) > contrast( rgbaM, rgbaS );\n\t\t\tif(!pairN) rgbaN = rgbaS;\n\n\t\t\tvec2 offNP;\n\t\t\toffNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;\n\t\t\toffNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;\n\n\t\t\tbool doneN = false;\n\t\t\tbool doneP = false;\n\n\t\t\tfloat nDist = 0.;\n\t\t\tfloat pDist = 0.;\n\n\t\t\tvec2 posN = posM;\n\t\t\tvec2 posP = posM;\n\n\t\t\tint iterationsUsedN = 0;\n\t\t\tint iterationsUsedP = 0;\n\t\t\tfor( int i = 0; i < NUM_SAMPLES; i++ ) {\n\n\t\t\t\tfloat increment = float(i + 1);\n\n\t\t\t\tif(!doneN) {\n\t\t\t\t\tnDist += increment;\n\t\t\t\t\tposN = posM + offNP * nDist;\n\t\t\t\t\tvec4 rgbaEndN = FxaaTexTop(tex, posN.xy);\n\t\t\t\t\tdoneN = contrast( rgbaEndN, rgbaM ) > contrast( rgbaEndN, rgbaN );\n\t\t\t\t\titerationsUsedN = i;\n\t\t\t\t}\n\n\t\t\t\tif(!doneP) {\n\t\t\t\t\tpDist += increment;\n\t\t\t\t\tposP = posM - offNP * pDist;\n\t\t\t\t\tvec4 rgbaEndP = FxaaTexTop(tex, posP.xy);\n\t\t\t\t\tdoneP = contrast( rgbaEndP, rgbaM ) > contrast( rgbaEndP, rgbaN );\n\t\t\t\t\titerationsUsedP = i;\n\t\t\t\t}\n\n\t\t\t\tif(doneN || doneP) break;\n\t\t\t}\n\n\n\t\t\tif ( !doneP && !doneN ) return rgbaM; // failed to find end of edge\n\n\t\t\tfloat dist = min(\n\t\t\t\tdoneN ? float( iterationsUsedN ) / float( NUM_SAMPLES - 1 ) : 1.,\n\t\t\t\tdoneP ? float( iterationsUsedP ) / float( NUM_SAMPLES - 1 ) : 1.\n\t\t\t);\n\n\t\t\t// hacky way of reduces blurriness of mostly diagonal edges\n\t\t\t// but reduces AA quality\n\t\t\tdist = pow(dist, .5);\n\n\t\t\tdist = 1. - dist;\n\n\t\t\treturn mix(\n\t\t\t\trgbaM,\n\t\t\t\trgbaN,\n\t\t\t\tdist * .5\n\t\t\t);\n\t\t}\n\n\t\tvoid main() {\n\t\t\tconst float edgeDetectionQuality = .2;\n\t\t\tconst float invEdgeDetectionQuality = 1. / edgeDetectionQuality;\n\n\t\t\tgl_FragColor = FxaaPixelShader(\n\t\t\t\tvUv,\n\t\t\t\ttDiffuse,\n\t\t\t\tresolution,\n\t\t\t\tedgeDetectionQuality, // [0,1] contrast needed, otherwise early discard\n\t\t\t\tinvEdgeDetectionQuality\n\t\t\t);\n\n\t\t}\n\t`\n\n};\n\nexport { FXAAShader };\n", "/**\n * Focus shader\n * based on PaintEffect postprocess from ro.me\n * http://code.google.com/p/3-dreams-of-black/source/browse/deploy/js/effects/PaintEffect.js\n */\n\nconst FocusShader = {\n\n\tname: 'FocusShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'screenWidth': { value: 1024 },\n\t\t'screenHeight': { value: 1024 },\n\t\t'sampleDistance': { value: 0.94 },\n\t\t'waveFactor': { value: 0.00125 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float screenWidth;\n\t\tuniform float screenHeight;\n\t\tuniform float sampleDistance;\n\t\tuniform float waveFactor;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 color, org, tmp, add;\n\t\t\tfloat sample_dist, f;\n\t\t\tvec2 vin;\n\t\t\tvec2 uv = vUv;\n\n\t\t\tadd = color = org = texture2D( tDiffuse, uv );\n\n\t\t\tvin = ( uv - vec2( 0.5 ) ) * vec2( 1.4 );\n\t\t\tsample_dist = dot( vin, vin ) * 2.0;\n\n\t\t\tf = ( waveFactor * 100.0 + sample_dist ) * sampleDistance * 4.0;\n\n\t\t\tvec2 sampleSize = vec2( 1.0 / screenWidth, 1.0 / screenHeight ) * vec2( f );\n\n\t\t\tadd += tmp = texture2D( tDiffuse, uv + vec2( 0.111964, 0.993712 ) * sampleSize );\n\t\t\tif( tmp.b < color.b ) color = tmp;\n\n\t\t\tadd += tmp = texture2D( tDiffuse, uv + vec2( 0.846724, 0.532032 ) * sampleSize );\n\t\t\tif( tmp.b < color.b ) color = tmp;\n\n\t\t\tadd += tmp = texture2D( tDiffuse, uv + vec2( 0.943883, -0.330279 ) * sampleSize );\n\t\t\tif( tmp.b < color.b ) color = tmp;\n\n\t\t\tadd += tmp = texture2D( tDiffuse, uv + vec2( 0.330279, -0.943883 ) * sampleSize );\n\t\t\tif( tmp.b < color.b ) color = tmp;\n\n\t\t\tadd += tmp = texture2D( tDiffuse, uv + vec2( -0.532032, -0.846724 ) * sampleSize );\n\t\t\tif( tmp.b < color.b ) color = tmp;\n\n\t\t\tadd += tmp = texture2D( tDiffuse, uv + vec2( -0.993712, -0.111964 ) * sampleSize );\n\t\t\tif( tmp.b < color.b ) color = tmp;\n\n\t\t\tadd += tmp = texture2D( tDiffuse, uv + vec2( -0.707107, 0.707107 ) * sampleSize );\n\t\t\tif( tmp.b < color.b ) color = tmp;\n\n\t\t\tcolor = color * vec4( 2.0 ) - ( add / vec4( 8.0 ) );\n\t\t\tcolor = color + ( add / vec4( 8.0 ) - color ) * ( vec4( 1.0 ) - vec4( sample_dist * 0.5 ) );\n\n\t\t\tgl_FragColor = vec4( color.rgb * color.rgb * vec3( 0.95 ) + color.rgb, 1.0 );\n\n\t\t}`\n\n};\n\nexport { FocusShader };\n", "import {\n\tVector2\n} from 'three';\n\n/**\n * Edge Detection Shader using Frei-Chen filter\n * Based on http://rastergrid.com/blog/2011/01/frei-chen-edge-detector\n *\n * aspect: vec2 of (1/width, 1/height)\n */\n\nconst FreiChenShader = {\n\n\tname: 'FreiChenShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'aspect': { value: new Vector2( 512, 512 ) }\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tvarying vec2 vUv;\n\n\t\tuniform vec2 aspect;\n\n\t\tvec2 texel = vec2( 1.0 / aspect.x, 1.0 / aspect.y );\n\n\n\t\tmat3 G[9];\n\n\t\t// hard coded matrix values!!!! as suggested in https://github.com/neilmendoza/ofxPostProcessing/blob/master/src/EdgePass.cpp#L45\n\n\t\tconst mat3 g0 = mat3( 0.3535533845424652, 0, -0.3535533845424652, 0.5, 0, -0.5, 0.3535533845424652, 0, -0.3535533845424652 );\n\t\tconst mat3 g1 = mat3( 0.3535533845424652, 0.5, 0.3535533845424652, 0, 0, 0, -0.3535533845424652, -0.5, -0.3535533845424652 );\n\t\tconst mat3 g2 = mat3( 0, 0.3535533845424652, -0.5, -0.3535533845424652, 0, 0.3535533845424652, 0.5, -0.3535533845424652, 0 );\n\t\tconst mat3 g3 = mat3( 0.5, -0.3535533845424652, 0, -0.3535533845424652, 0, 0.3535533845424652, 0, 0.3535533845424652, -0.5 );\n\t\tconst mat3 g4 = mat3( 0, -0.5, 0, 0.5, 0, 0.5, 0, -0.5, 0 );\n\t\tconst mat3 g5 = mat3( -0.5, 0, 0.5, 0, 0, 0, 0.5, 0, -0.5 );\n\t\tconst mat3 g6 = mat3( 0.1666666716337204, -0.3333333432674408, 0.1666666716337204, -0.3333333432674408, 0.6666666865348816, -0.3333333432674408, 0.1666666716337204, -0.3333333432674408, 0.1666666716337204 );\n\t\tconst mat3 g7 = mat3( -0.3333333432674408, 0.1666666716337204, -0.3333333432674408, 0.1666666716337204, 0.6666666865348816, 0.1666666716337204, -0.3333333432674408, 0.1666666716337204, -0.3333333432674408 );\n\t\tconst mat3 g8 = mat3( 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408 );\n\n\t\tvoid main(void)\n\t\t{\n\n\t\t\tG[0] = g0,\n\t\t\tG[1] = g1,\n\t\t\tG[2] = g2,\n\t\t\tG[3] = g3,\n\t\t\tG[4] = g4,\n\t\t\tG[5] = g5,\n\t\t\tG[6] = g6,\n\t\t\tG[7] = g7,\n\t\t\tG[8] = g8;\n\n\t\t\tmat3 I;\n\t\t\tfloat cnv[9];\n\t\t\tvec3 sample;\n\n\t\t/* fetch the 3x3 neighbourhood and use the RGB vector's length as intensity value */\n\t\t\tfor (float i=0.0; i<3.0; i++) {\n\t\t\t\tfor (float j=0.0; j<3.0; j++) {\n\t\t\t\t\tsample = texture2D(tDiffuse, vUv + texel * vec2(i-1.0,j-1.0) ).rgb;\n\t\t\t\t\tI[int(i)][int(j)] = length(sample);\n\t\t\t\t}\n\t\t\t}\n\n\t\t/* calculate the convolution values for all the masks */\n\t\t\tfor (int i=0; i<9; i++) {\n\t\t\t\tfloat dp3 = dot(G[i][0], I[0]) + dot(G[i][1], I[1]) + dot(G[i][2], I[2]);\n\t\t\t\tcnv[i] = dp3 * dp3;\n\t\t\t}\n\n\t\t\tfloat M = (cnv[0] + cnv[1]) + (cnv[2] + cnv[3]);\n\t\t\tfloat S = (cnv[4] + cnv[5]) + (cnv[6] + cnv[7]) + (cnv[8] + M);\n\n\t\t\tgl_FragColor = vec4(vec3(sqrt(M/S)), 1.0);\n\t\t}`\n\n};\n\nexport { FreiChenShader };\n", "/**\n * Gamma Correction Shader\n * http://en.wikipedia.org/wiki/gamma_correction\n */\n\nconst GammaCorrectionShader = {\n\n\tname: 'GammaCorrectionShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 tex = texture2D( tDiffuse, vUv );\n\n\t\t\tgl_FragColor = sRGBTransferOETF( tex );\n\n\t\t}`\n\n};\n\nexport { GammaCorrectionShader };\n", "import {\n\tColor,\n\tVector3\n} from 'three';\n\n/**\n * God-rays (crepuscular rays)\n *\n * Similar implementation to the one used by Crytek for CryEngine 2 [Sousa2008].\n * Blurs a mask generated from the depth map along radial lines emanating from the light\n * source. The blur repeatedly applies a blur filter of increasing support but constant\n * sample count to produce a blur filter with large support.\n *\n * My implementation performs 3 passes, similar to the implementation from Sousa. I found\n * just 6 samples per pass produced acceptible results. The blur is applied three times,\n * with decreasing filter support. The result is equivalent to a single pass with\n * 6*6*6 = 216 samples.\n *\n * References:\n *\n * Sousa2008 - Crysis Next Gen Effects, GDC2008, http://www.crytek.com/sites/default/files/GDC08_SousaT_CrysisEffects.ppt\n */\n\nconst GodRaysDepthMaskShader = {\n\n\tname: 'GodRaysDepthMaskShader',\n\n\tuniforms: {\n\n\t\ttInput: {\n\t\t\tvalue: null\n\t\t}\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t vUv = uv;\n\t\t gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t }`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tuniform sampler2D tInput;\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = vec4( 1.0 ) - texture2D( tInput, vUv );\n\n\t\t}`\n\n};\n\n\n/**\n * The god-ray generation shader.\n *\n * First pass:\n *\n * The depth map is blurred along radial lines towards the \"sun\". The\n * output is written to a temporary render target (I used a 1/4 sized\n * target).\n *\n * Pass two & three:\n *\n * The results of the previous pass are re-blurred, each time with a\n * decreased distance between samples.\n */\n\nconst GodRaysGenerateShader = {\n\n\tname: 'GodRaysGenerateShader',\n\n\tuniforms: {\n\n\t\ttInput: {\n\t\t\tvalue: null\n\t\t},\n\t\tfStepSize: {\n\t\t\tvalue: 1.0\n\t\t},\n\t\tvSunPositionScreenSpace: {\n\t\t\tvalue: new Vector3()\n\t\t}\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t vUv = uv;\n\t\t gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t }`,\n\n\tfragmentShader: /* glsl */`\n\n\t\t#define TAPS_PER_PASS 6.0\n\n\t\tvarying vec2 vUv;\n\n\t\tuniform sampler2D tInput;\n\n\t\tuniform vec3 vSunPositionScreenSpace;\n\t\tuniform float fStepSize; // filter step size\n\n\t\tvoid main() {\n\n\t\t// delta from current pixel to \"sun\" position\n\n\t\t\tvec2 delta = vSunPositionScreenSpace.xy - vUv;\n\t\t\tfloat dist = length( delta );\n\n\t\t// Step vector (uv space)\n\n\t\t\tvec2 stepv = fStepSize * delta / dist;\n\n\t\t// Number of iterations between pixel and sun\n\n\t\t\tfloat iters = dist/fStepSize;\n\n\t\t\tvec2 uv = vUv.xy;\n\t\t\tfloat col = 0.0;\n\n\t\t// This breaks ANGLE in Chrome 22\n\t\t//\t- see http://code.google.com/p/chromium/issues/detail?id=153105\n\n\t\t/*\n\t\t// Unrolling didnt do much on my hardware (ATI Mobility Radeon 3450),\n\t\t// so i've just left the loop\n\n\t\t\"for ( float i = 0.0; i < TAPS_PER_PASS; i += 1.0 ) {\",\n\n\t\t// Accumulate samples, making sure we dont walk past the light source.\n\n\t\t// The check for uv.y < 1 would not be necessary with \"border\" UV wrap\n\t\t// mode, with a black border color. I don't think this is currently\n\t\t// exposed by three.js. As a result there might be artifacts when the\n\t\t// sun is to the left, right or bottom of screen as these cases are\n\t\t// not specifically handled.\n\n\t\t\"\tcol += ( i <= iters && uv.y < 1.0 ? texture2D( tInput, uv ).r : 0.0 );\",\n\t\t\"\tuv += stepv;\",\n\n\t\t\"}\",\n\t\t*/\n\n\t\t// Unrolling loop manually makes it work in ANGLE\n\n\t\t\tfloat f = min( 1.0, max( vSunPositionScreenSpace.z / 1000.0, 0.0 ) ); // used to fade out godrays\n\n\t\t\tif ( 0.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r * f;\n\t\t\tuv += stepv;\n\n\t\t\tif ( 1.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r * f;\n\t\t\tuv += stepv;\n\n\t\t\tif ( 2.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r * f;\n\t\t\tuv += stepv;\n\n\t\t\tif ( 3.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r * f;\n\t\t\tuv += stepv;\n\n\t\t\tif ( 4.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r * f;\n\t\t\tuv += stepv;\n\n\t\t\tif ( 5.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r * f;\n\t\t\tuv += stepv;\n\n\t\t// Should technically be dividing by 'iters but 'TAPS_PER_PASS' smooths out\n\t\t// objectionable artifacts, in particular near the sun position. The side\n\t\t// effect is that the result is darker than it should be around the sun, as\n\t\t// TAPS_PER_PASS is greater than the number of samples actually accumulated.\n\t\t// When the result is inverted (in the shader 'godrays_combine this produces\n\t\t// a slight bright spot at the position of the sun, even when it is occluded.\n\n\t\t\tgl_FragColor = vec4( col/TAPS_PER_PASS );\n\t\t\tgl_FragColor.a = 1.0;\n\n\t\t}`\n\n};\n\n/**\n * Additively applies god rays from texture tGodRays to a background (tColors).\n * fGodRayIntensity attenuates the god rays.\n */\n\nconst GodRaysCombineShader = {\n\n\tname: 'GodRaysCombineShader',\n\n\tuniforms: {\n\n\t\ttColors: {\n\t\t\tvalue: null\n\t\t},\n\n\t\ttGodRays: {\n\t\t\tvalue: null\n\t\t},\n\n\t\tfGodRayIntensity: {\n\t\t\tvalue: 0.69\n\t\t}\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tuniform sampler2D tColors;\n\t\tuniform sampler2D tGodRays;\n\n\t\tuniform float fGodRayIntensity;\n\n\t\tvoid main() {\n\n\t\t// Since THREE.MeshDepthMaterial renders foreground objects white and background\n\t\t// objects black, the god-rays will be white streaks. Therefore value is inverted\n\t\t// before being combined with tColors\n\n\t\t\tgl_FragColor = texture2D( tColors, vUv ) + fGodRayIntensity * vec4( 1.0 - texture2D( tGodRays, vUv ).r );\n\t\t\tgl_FragColor.a = 1.0;\n\n\t\t}`\n\n};\n\n\n/**\n * A dodgy sun/sky shader. Makes a bright spot at the sun location. Would be\n * cheaper/faster/simpler to implement this as a simple sun sprite.\n */\n\nconst GodRaysFakeSunShader = {\n\n\tname: 'GodRaysFakeSunShader',\n\n\tuniforms: {\n\n\t\tvSunPositionScreenSpace: {\n\t\t\tvalue: new Vector3()\n\t\t},\n\n\t\tfAspect: {\n\t\t\tvalue: 1.0\n\t\t},\n\n\t\tsunColor: {\n\t\t\tvalue: new Color( 0xffee00 )\n\t\t},\n\n\t\tbgColor: {\n\t\t\tvalue: new Color( 0x000000 )\n\t\t}\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tuniform vec3 vSunPositionScreenSpace;\n\t\tuniform float fAspect;\n\n\t\tuniform vec3 sunColor;\n\t\tuniform vec3 bgColor;\n\n\t\tvoid main() {\n\n\t\t\tvec2 diff = vUv - vSunPositionScreenSpace.xy;\n\n\t\t// Correct for aspect ratio\n\n\t\t\tdiff.x *= fAspect;\n\n\t\t\tfloat prop = clamp( length( diff ) / 0.5, 0.0, 1.0 );\n\t\t\tprop = 0.35 * pow( 1.0 - prop, 3.0 );\n\n\t\t\tgl_FragColor.xyz = ( vSunPositionScreenSpace.z > 0.0 ) ? mix( sunColor, bgColor, 1.0 - prop ) : bgColor;\n\t\t\tgl_FragColor.w = 1.0;\n\n\t\t}`\n\n};\n\nexport { GodRaysDepthMaskShader, GodRaysGenerateShader, GodRaysCombineShader, GodRaysFakeSunShader };\n", "/**\n * Two pass Gaussian blur filter (horizontal and vertical blur shaders)\n * - see http://www.cake23.de/traveling-wavefronts-lit-up.html\n *\n * - 9 samples per pass\n * - standard deviation 2.7\n * - \"h\" and \"v\" parameters should be set to \"1 / width\" and \"1 / height\"\n */\n\nconst HorizontalBlurShader = {\n\n\tname: 'HorizontalBlurShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'h': { value: 1.0 / 512.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float h;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 sum = vec4( 0.0 );\n\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * h, vUv.y ) ) * 0.051;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * h, vUv.y ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * h, vUv.y ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * h, vUv.y ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * h, vUv.y ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * h, vUv.y ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * h, vUv.y ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * h, vUv.y ) ) * 0.051;\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}`\n\n};\n\nexport { HorizontalBlurShader };\n", "/**\n * Simple fake tilt-shift effect, modulating two pass Gaussian blur (see above) by vertical position\n *\n * - 9 samples per pass\n * - standard deviation 2.7\n * - \"h\" and \"v\" parameters should be set to \"1 / width\" and \"1 / height\"\n * - \"r\" parameter control where \"focused\" horizontal line lies\n */\n\nconst HorizontalTiltShiftShader = {\n\n\tname: 'HorizontalTiltShiftShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'h': { value: 1.0 / 512.0 },\n\t\t'r': { value: 0.35 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float h;\n\t\tuniform float r;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 sum = vec4( 0.0 );\n\n\t\t\tfloat hh = h * abs( r - vUv.y );\n\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * hh, vUv.y ) ) * 0.051;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * hh, vUv.y ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * hh, vUv.y ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * hh, vUv.y ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * hh, vUv.y ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * hh, vUv.y ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * hh, vUv.y ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * hh, vUv.y ) ) * 0.051;\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}`\n\n};\n\nexport { HorizontalTiltShiftShader };\n", "/**\n * Hue and saturation adjustment\n * https://github.com/evanw/glfx.js\n * hue: -1 to 1 (-1 is 180 degrees in the negative direction, 0 is no change, etc.\n * saturation: -1 to 1 (-1 is solid gray, 0 is no change, and 1 is maximum contrast)\n */\n\nconst HueSaturationShader = {\n\n\tname: 'HueSaturationShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'hue': { value: 0 },\n\t\t'saturation': { value: 0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float hue;\n\t\tuniform float saturation;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = texture2D( tDiffuse, vUv );\n\n\t\t\t// hue\n\t\t\tfloat angle = hue * 3.14159265;\n\t\t\tfloat s = sin(angle), c = cos(angle);\n\t\t\tvec3 weights = (vec3(2.0 * c, -sqrt(3.0) * s - c, sqrt(3.0) * s - c) + 1.0) / 3.0;\n\t\t\tfloat len = length(gl_FragColor.rgb);\n\t\t\tgl_FragColor.rgb = vec3(\n\t\t\t\tdot(gl_FragColor.rgb, weights.xyz),\n\t\t\t\tdot(gl_FragColor.rgb, weights.zxy),\n\t\t\t\tdot(gl_FragColor.rgb, weights.yzx)\n\t\t\t);\n\n\t\t\t// saturation\n\t\t\tfloat average = (gl_FragColor.r + gl_FragColor.g + gl_FragColor.b) / 3.0;\n\t\t\tif (saturation > 0.0) {\n\t\t\t\tgl_FragColor.rgb += (average - gl_FragColor.rgb) * (1.0 - 1.0 / (1.001 - saturation));\n\t\t\t} else {\n\t\t\t\tgl_FragColor.rgb += (average - gl_FragColor.rgb) * (-saturation);\n\t\t\t}\n\n\t\t}`\n\n};\n\nexport { HueSaturationShader };\n", "/**\n * Kaleidoscope Shader\n * Radial reflection around center point\n * Ported from: http://pixelshaders.com/editor/\n * by Toby Schachman / http://tobyschachman.com/\n *\n * sides: number of reflections\n * angle: initial angle in radians\n */\n\nconst KaleidoShader = {\n\n\tname: 'KaleidoShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'sides': { value: 6.0 },\n\t\t'angle': { value: 0.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float sides;\n\t\tuniform float angle;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec2 p = vUv - 0.5;\n\t\t\tfloat r = length(p);\n\t\t\tfloat a = atan(p.y, p.x) + angle;\n\t\t\tfloat tau = 2. * 3.1416 ;\n\t\t\ta = mod(a, tau/sides);\n\t\t\ta = abs(a - tau/sides/2.) ;\n\t\t\tp = r * vec2(cos(a), sin(a));\n\t\t\tvec4 color = texture2D(tDiffuse, p + 0.5);\n\t\t\tgl_FragColor = color;\n\n\t\t}`\n\n};\n\nexport { KaleidoShader };\n", "/**\n * Luminosity\n * http://en.wikipedia.org/wiki/Luminosity\n */\n\nconst LuminosityShader = {\n\n\tname: 'LuminosityShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\t#include \n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\n\t\t\tfloat l = luminance( texel.rgb );\n\n\t\t\tgl_FragColor = vec4( l, l, l, texel.w );\n\n\t\t}`\n\n};\n\nexport { LuminosityShader };\n", "/**\n * Mirror Shader\n * Copies half the input to the other half\n *\n * side: side of input to mirror (0 = left, 1 = right, 2 = top, 3 = bottom)\n */\n\nconst MirrorShader = {\n\n\tname: 'MirrorShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'side': { value: 1 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform int side;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec2 p = vUv;\n\t\t\tif (side == 0){\n\t\t\t\tif (p.x > 0.5) p.x = 1.0 - p.x;\n\t\t\t}else if (side == 1){\n\t\t\t\tif (p.x < 0.5) p.x = 1.0 - p.x;\n\t\t\t}else if (side == 2){\n\t\t\t\tif (p.y < 0.5) p.y = 1.0 - p.y;\n\t\t\t}else if (side == 3){\n\t\t\t\tif (p.y > 0.5) p.y = 1.0 - p.y;\n\t\t\t}\n\t\t\tvec4 color = texture2D(tDiffuse, p);\n\t\t\tgl_FragColor = color;\n\n\t\t}`\n\n};\n\nexport { MirrorShader };\n", "import {\n\tVector2\n} from 'three';\n\n/**\n * Normal map shader\n * - compute normals from heightmap\n */\n\nconst NormalMapShader = {\n\n\tname: 'NormalMapShader',\n\n\tuniforms: {\n\n\t\t'heightMap': { value: null },\n\t\t'resolution': { value: new Vector2( 512, 512 ) },\n\t\t'scale': { value: new Vector2( 1, 1 ) },\n\t\t'height': { value: 0.05 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float height;\n\t\tuniform vec2 resolution;\n\t\tuniform sampler2D heightMap;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tfloat val = texture2D( heightMap, vUv ).x;\n\n\t\t\tfloat valU = texture2D( heightMap, vUv + vec2( 1.0 / resolution.x, 0.0 ) ).x;\n\t\t\tfloat valV = texture2D( heightMap, vUv + vec2( 0.0, 1.0 / resolution.y ) ).x;\n\n\t\t\tgl_FragColor = vec4( ( 0.5 * normalize( vec3( val - valU, val - valV, height ) ) + 0.5 ), 1.0 );\n\n\t\t}`\n\n};\n\nexport { NormalMapShader };\n", "/**\n * RGB Shift Shader\n * Shifts red and blue channels from center in opposite directions\n * Ported from https://web.archive.org/web/20090820185047/http://kriss.cx/tom/2009/05/rgb-shift/\n * by Tom Butterworth / https://web.archive.org/web/20090810054752/http://kriss.cx/tom/\n *\n * amount: shift distance (1 is width of input)\n * angle: shift angle in radians\n */\n\nconst RGBShiftShader = {\n\n\tname: 'RGBShiftShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'amount': { value: 0.005 },\n\t\t'angle': { value: 0.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float amount;\n\t\tuniform float angle;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec2 offset = amount * vec2( cos(angle), sin(angle));\n\t\t\tvec4 cr = texture2D(tDiffuse, vUv + offset);\n\t\t\tvec4 cga = texture2D(tDiffuse, vUv);\n\t\t\tvec4 cb = texture2D(tDiffuse, vUv - offset);\n\t\t\tgl_FragColor = vec4(cr.r, cga.g, cb.b, cga.a);\n\n\t\t}`\n\n};\n\nexport { RGBShiftShader };\n", "/**\n * Sepia tone shader\n * based on glfx.js sepia shader\n * https://github.com/evanw/glfx.js\n */\n\nconst SepiaShader = {\n\n\tname: 'SepiaShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'amount': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float amount;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 color = texture2D( tDiffuse, vUv );\n\t\t\tvec3 c = color.rgb;\n\n\t\t\tcolor.r = dot( c, vec3( 1.0 - 0.607 * amount, 0.769 * amount, 0.189 * amount ) );\n\t\t\tcolor.g = dot( c, vec3( 0.349 * amount, 1.0 - 0.314 * amount, 0.168 * amount ) );\n\t\t\tcolor.b = dot( c, vec3( 0.272 * amount, 0.534 * amount, 1.0 - 0.869 * amount ) );\n\n\t\t\tgl_FragColor = vec4( min( vec3( 1.0 ), color.rgb ), color.a );\n\n\t\t}`\n\n};\n\nexport { SepiaShader };\n", "import {\n\tVector2\n} from 'three';\n\n/**\n * Sobel Edge Detection (see https://youtu.be/uihBwtPIBxM)\n *\n * As mentioned in the video the Sobel operator expects a grayscale image as input.\n *\n */\n\nconst SobelOperatorShader = {\n\n\tname: 'SobelOperatorShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'resolution': { value: new Vector2() }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform vec2 resolution;\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec2 texel = vec2( 1.0 / resolution.x, 1.0 / resolution.y );\n\n\t\t// kernel definition (in glsl matrices are filled in column-major order)\n\n\t\t\tconst mat3 Gx = mat3( -1, -2, -1, 0, 0, 0, 1, 2, 1 ); // x direction kernel\n\t\t\tconst mat3 Gy = mat3( -1, 0, 1, -2, 0, 2, -1, 0, 1 ); // y direction kernel\n\n\t\t// fetch the 3x3 neighbourhood of a fragment\n\n\t\t// first column\n\n\t\t\tfloat tx0y0 = texture2D( tDiffuse, vUv + texel * vec2( -1, -1 ) ).r;\n\t\t\tfloat tx0y1 = texture2D( tDiffuse, vUv + texel * vec2( -1, 0 ) ).r;\n\t\t\tfloat tx0y2 = texture2D( tDiffuse, vUv + texel * vec2( -1, 1 ) ).r;\n\n\t\t// second column\n\n\t\t\tfloat tx1y0 = texture2D( tDiffuse, vUv + texel * vec2( 0, -1 ) ).r;\n\t\t\tfloat tx1y1 = texture2D( tDiffuse, vUv + texel * vec2( 0, 0 ) ).r;\n\t\t\tfloat tx1y2 = texture2D( tDiffuse, vUv + texel * vec2( 0, 1 ) ).r;\n\n\t\t// third column\n\n\t\t\tfloat tx2y0 = texture2D( tDiffuse, vUv + texel * vec2( 1, -1 ) ).r;\n\t\t\tfloat tx2y1 = texture2D( tDiffuse, vUv + texel * vec2( 1, 0 ) ).r;\n\t\t\tfloat tx2y2 = texture2D( tDiffuse, vUv + texel * vec2( 1, 1 ) ).r;\n\n\t\t// gradient value in x direction\n\n\t\t\tfloat valueGx = Gx[0][0] * tx0y0 + Gx[1][0] * tx1y0 + Gx[2][0] * tx2y0 +\n\t\t\t\tGx[0][1] * tx0y1 + Gx[1][1] * tx1y1 + Gx[2][1] * tx2y1 +\n\t\t\t\tGx[0][2] * tx0y2 + Gx[1][2] * tx1y2 + Gx[2][2] * tx2y2;\n\n\t\t// gradient value in y direction\n\n\t\t\tfloat valueGy = Gy[0][0] * tx0y0 + Gy[1][0] * tx1y0 + Gy[2][0] * tx2y0 +\n\t\t\t\tGy[0][1] * tx0y1 + Gy[1][1] * tx1y1 + Gy[2][1] * tx2y1 +\n\t\t\t\tGy[0][2] * tx0y2 + Gy[1][2] * tx1y2 + Gy[2][2] * tx2y2;\n\n\t\t// magnitute of the total gradient\n\n\t\t\tfloat G = sqrt( ( valueGx * valueGx ) + ( valueGy * valueGy ) );\n\n\t\t\tgl_FragColor = vec4( vec3( G ), 1 );\n\n\t\t}`\n\n};\n\nexport { SobelOperatorShader };\n", "import {\n\tColor,\n\tShaderChunk,\n\tShaderLib,\n\tUniformsUtils\n} from 'three';\n\n/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\n\nfunction replaceAll( string, find, replace ) {\n\n\treturn string.split( find ).join( replace );\n\n}\n\nconst meshphong_frag_head = ShaderChunk[ 'meshphong_frag' ].slice( 0, ShaderChunk[ 'meshphong_frag' ].indexOf( 'void main() {' ) );\nconst meshphong_frag_body = ShaderChunk[ 'meshphong_frag' ].slice( ShaderChunk[ 'meshphong_frag' ].indexOf( 'void main() {' ) );\n\nconst SubsurfaceScatteringShader = {\n\n\tname: 'SubsurfaceScatteringShader',\n\n\tuniforms: UniformsUtils.merge( [\n\t\tShaderLib[ 'phong' ].uniforms,\n\t\t{\n\t\t\t'thicknessMap': { value: null },\n\t\t\t'thicknessColor': { value: new Color( 0xffffff ) },\n\t\t\t'thicknessDistortion': { value: 0.1 },\n\t\t\t'thicknessAmbient': { value: 0.0 },\n\t\t\t'thicknessAttenuation': { value: 0.1 },\n\t\t\t'thicknessPower': { value: 2.0 },\n\t\t\t'thicknessScale': { value: 10.0 }\n\t\t}\n\n\t] ),\n\n\tvertexShader: [\n\t\t'#define USE_UV',\n\t\tShaderChunk[ 'meshphong_vert' ],\n\t].join( '\\n' ),\n\n\tfragmentShader: [\n\t\t'#define USE_UV',\n\t\t'#define SUBSURFACE',\n\n\t\tmeshphong_frag_head,\n\n\t\t'uniform sampler2D thicknessMap;',\n\t\t'uniform float thicknessPower;',\n\t\t'uniform float thicknessScale;',\n\t\t'uniform float thicknessDistortion;',\n\t\t'uniform float thicknessAmbient;',\n\t\t'uniform float thicknessAttenuation;',\n\t\t'uniform vec3 thicknessColor;',\n\n\t\t'void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, inout ReflectedLight reflectedLight) {',\n\t\t'\tvec3 thickness = thicknessColor * texture2D(thicknessMap, uv).r;',\n\t\t'\tvec3 scatteringHalf = normalize(directLight.direction + (geometryNormal * thicknessDistortion));',\n\t\t'\tfloat scatteringDot = pow(saturate(dot(geometryViewDir, -scatteringHalf)), thicknessPower) * thicknessScale;',\n\t\t'\tvec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;',\n\t\t'\treflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;',\n\t\t'}',\n\n\t\tmeshphong_frag_body.replace( '#include ',\n\n\t\t\treplaceAll(\n\t\t\t\tShaderChunk[ 'lights_fragment_begin' ],\n\t\t\t\t'RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );',\n\t\t\t\t[\n\t\t\t\t\t'RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );',\n\n\t\t\t\t\t'#if defined( SUBSURFACE ) && defined( USE_UV )',\n\t\t\t\t\t' RE_Direct_Scattering(directLight, vUv, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, reflectedLight);',\n\t\t\t\t\t'#endif',\n\t\t\t\t].join( '\\n' )\n\t\t\t),\n\n\t\t),\n\n\t].join( '\\n' ),\n\n};\n\nexport { SubsurfaceScatteringShader };\n", "/**\n * Technicolor Shader\n * Simulates the look of the two-strip technicolor process popular in early 20th century films.\n * More historical info here: http://www.widescreenmuseum.com/oldcolor/technicolor1.htm\n * Demo here: http://charliehoey.com/technicolor_shader/shader_test.html\n */\n\nconst TechnicolorShader = {\n\n\tname: 'TechnicolorShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 tex = texture2D( tDiffuse, vec2( vUv.x, vUv.y ) );\n\t\t\tvec4 newTex = vec4(tex.r, (tex.g + tex.b) * .5, (tex.g + tex.b) * .5, 1.0);\n\n\t\t\tgl_FragColor = newTex;\n\n\t\t}`\n\n};\n\nexport { TechnicolorShader };\n", "import {\n\tColor,\n\tVector3\n} from 'three';\n\n/**\n * Currently contains:\n *\n *\ttoon1\n *\ttoon2\n *\thatching\n *\tdotted\n */\n\nconst ToonShader1 = {\n\n\tuniforms: {\n\n\t\t'uDirLightPos': { value: new Vector3() },\n\t\t'uDirLightColor': { value: new Color( 0xeeeeee ) },\n\n\t\t'uAmbientLightColor': { value: new Color( 0x050505 ) },\n\n\t\t'uBaseColor': { value: new Color( 0xffffff ) }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec3 vNormal;\n\t\tvarying vec3 vRefract;\n\n\t\tvoid main() {\n\n\t\t\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\t\t\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\t\t\tvec3 worldNormal = normalize ( mat3( modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz ) * normal );\n\n\t\t\tvNormal = normalize( normalMatrix * normal );\n\n\t\t\tvec3 I = worldPosition.xyz - cameraPosition;\n\t\t\tvRefract = refract( normalize( I ), worldNormal, 1.02 );\n\n\t\t\tgl_Position = projectionMatrix * mvPosition;\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform vec3 uBaseColor;\n\n\t\tuniform vec3 uDirLightPos;\n\t\tuniform vec3 uDirLightColor;\n\n\t\tuniform vec3 uAmbientLightColor;\n\n\t\tvarying vec3 vNormal;\n\n\t\tvarying vec3 vRefract;\n\n\t\tvoid main() {\n\n\t\t\tfloat directionalLightWeighting = max( dot( normalize( vNormal ), uDirLightPos ), 0.0);\n\t\t\tvec3 lightWeighting = uAmbientLightColor + uDirLightColor * directionalLightWeighting;\n\n\t\t\tfloat intensity = smoothstep( - 0.5, 1.0, pow( length(lightWeighting), 20.0 ) );\n\t\t\tintensity += length(lightWeighting) * 0.2;\n\n\t\t\tfloat cameraWeighting = dot( normalize( vNormal ), vRefract );\n\t\t\tintensity += pow( 1.0 - length( cameraWeighting ), 6.0 );\n\t\t\tintensity = intensity * 0.2 + 0.3;\n\n\t\t\tif ( intensity < 0.50 ) {\n\n\t\t\t\tgl_FragColor = vec4( 2.0 * intensity * uBaseColor, 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\tgl_FragColor = vec4( 1.0 - 2.0 * ( 1.0 - intensity ) * ( 1.0 - uBaseColor ), 1.0 );\n\n\t\t\t}\n\n\t\t\t#include \n\n\t\t}`\n\n};\n\nconst ToonShader2 = {\n\n\tuniforms: {\n\n\t\t'uDirLightPos': { value: new Vector3() },\n\t\t'uDirLightColor': { value: new Color( 0xeeeeee ) },\n\n\t\t'uAmbientLightColor': { value: new Color( 0x050505 ) },\n\n\t\t'uBaseColor': { value: new Color( 0xeeeeee ) },\n\t\t'uLineColor1': { value: new Color( 0x808080 ) },\n\t\t'uLineColor2': { value: new Color( 0x000000 ) },\n\t\t'uLineColor3': { value: new Color( 0x000000 ) },\n\t\t'uLineColor4': { value: new Color( 0x000000 ) }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec3 vNormal;\n\n\t\tvoid main() {\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\tvNormal = normalize( normalMatrix * normal );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform vec3 uBaseColor;\n\t\tuniform vec3 uLineColor1;\n\t\tuniform vec3 uLineColor2;\n\t\tuniform vec3 uLineColor3;\n\t\tuniform vec3 uLineColor4;\n\n\t\tuniform vec3 uDirLightPos;\n\t\tuniform vec3 uDirLightColor;\n\n\t\tuniform vec3 uAmbientLightColor;\n\n\t\tvarying vec3 vNormal;\n\n\t\tvoid main() {\n\n\t\t\tfloat camera = max( dot( normalize( vNormal ), vec3( 0.0, 0.0, 1.0 ) ), 0.4);\n\t\t\tfloat light = max( dot( normalize( vNormal ), uDirLightPos ), 0.0);\n\n\t\t\tgl_FragColor = vec4( uBaseColor, 1.0 );\n\n\t\t\tif ( length(uAmbientLightColor + uDirLightColor * light) < 1.00 ) {\n\n\t\t\t\tgl_FragColor *= vec4( uLineColor1, 1.0 );\n\n\t\t\t}\n\n\t\t\tif ( length(uAmbientLightColor + uDirLightColor * camera) < 0.50 ) {\n\n\t\t\t\tgl_FragColor *= vec4( uLineColor2, 1.0 );\n\n\t\t\t}\n\n\t\t\t#include \n\n\t\t}`\n\n};\n\nconst ToonShaderHatching = {\n\n\tuniforms: {\n\n\t\t'uDirLightPos':\t{ value: new Vector3() },\n\t\t'uDirLightColor': { value: new Color( 0xeeeeee ) },\n\n\t\t'uAmbientLightColor': { value: new Color( 0x050505 ) },\n\n\t\t'uBaseColor': { value: new Color( 0xffffff ) },\n\t\t'uLineColor1': { value: new Color( 0x000000 ) },\n\t\t'uLineColor2': { value: new Color( 0x000000 ) },\n\t\t'uLineColor3': { value: new Color( 0x000000 ) },\n\t\t'uLineColor4': { value: new Color( 0x000000 ) }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec3 vNormal;\n\n\t\tvoid main() {\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\tvNormal = normalize( normalMatrix * normal );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform vec3 uBaseColor;\n\t\tuniform vec3 uLineColor1;\n\t\tuniform vec3 uLineColor2;\n\t\tuniform vec3 uLineColor3;\n\t\tuniform vec3 uLineColor4;\n\n\t\tuniform vec3 uDirLightPos;\n\t\tuniform vec3 uDirLightColor;\n\n\t\tuniform vec3 uAmbientLightColor;\n\n\t\tvarying vec3 vNormal;\n\n\t\tvoid main() {\n\n\t\t\tfloat directionalLightWeighting = max( dot( normalize(vNormal), uDirLightPos ), 0.0);\n\t\t\tvec3 lightWeighting = uAmbientLightColor + uDirLightColor * directionalLightWeighting;\n\n\t\t\tgl_FragColor = vec4( uBaseColor, 1.0 );\n\n\t\t\tif ( length(lightWeighting) < 1.00 ) {\n\n\t\t\t\tif ( mod(gl_FragCoord.x + gl_FragCoord.y, 10.0) == 0.0) {\n\n\t\t\t\t\tgl_FragColor = vec4( uLineColor1, 1.0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( length(lightWeighting) < 0.75 ) {\n\n\t\t\t\tif (mod(gl_FragCoord.x - gl_FragCoord.y, 10.0) == 0.0) {\n\n\t\t\t\t\tgl_FragColor = vec4( uLineColor2, 1.0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( length(lightWeighting) < 0.50 ) {\n\n\t\t\t\tif (mod(gl_FragCoord.x + gl_FragCoord.y - 5.0, 10.0) == 0.0) {\n\n\t\t\t\t\tgl_FragColor = vec4( uLineColor3, 1.0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( length(lightWeighting) < 0.3465 ) {\n\n\t\t\t\tif (mod(gl_FragCoord.x - gl_FragCoord.y - 5.0, 10.0) == 0.0) {\n\n\t\t\t\t\tgl_FragColor = vec4( uLineColor4, 1.0 );\n\n\t\t\t}\n\n\t\t\t}\n\n\t\t\t#include \n\n\t\t}`\n\n};\n\nconst ToonShaderDotted = {\n\n\tuniforms: {\n\n\t\t'uDirLightPos':\t{ value: new Vector3() },\n\t\t'uDirLightColor': { value: new Color( 0xeeeeee ) },\n\n\t\t'uAmbientLightColor': { value: new Color( 0x050505 ) },\n\n\t\t'uBaseColor': { value: new Color( 0xffffff ) },\n\t\t'uLineColor1': { value: new Color( 0x000000 ) }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec3 vNormal;\n\n\t\tvoid main() {\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\tvNormal = normalize( normalMatrix * normal );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform vec3 uBaseColor;\n\t\tuniform vec3 uLineColor1;\n\t\tuniform vec3 uLineColor2;\n\t\tuniform vec3 uLineColor3;\n\t\tuniform vec3 uLineColor4;\n\n\t\tuniform vec3 uDirLightPos;\n\t\tuniform vec3 uDirLightColor;\n\n\t\tuniform vec3 uAmbientLightColor;\n\n\t\tvarying vec3 vNormal;\n\n\t\tvoid main() {\n\n\t\t\tfloat directionalLightWeighting = max( dot( normalize(vNormal), uDirLightPos ), 0.0);\n\t\t\tvec3 lightWeighting = uAmbientLightColor + uDirLightColor * directionalLightWeighting;\n\n\t\t\tgl_FragColor = vec4( uBaseColor, 1.0 );\n\n\t\t\tif ( length(lightWeighting) < 1.00 ) {\n\n\t\t\t\tif ( ( mod(gl_FragCoord.x, 4.001) + mod(gl_FragCoord.y, 4.0) ) > 6.00 ) {\n\n\t\t\t\t\tgl_FragColor = vec4( uLineColor1, 1.0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( length(lightWeighting) < 0.50 ) {\n\n\t\t\t\tif ( ( mod(gl_FragCoord.x + 2.0, 4.001) + mod(gl_FragCoord.y + 2.0, 4.0) ) > 6.00 ) {\n\n\t\t\t\t\tgl_FragColor = vec4( uLineColor1, 1.0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t#include \n\n\t\t}`\n\n};\n\nexport { ToonShader1, ToonShader2, ToonShaderHatching, ToonShaderDotted };\n", "import {\n\tVector2\n} from 'three';\n\n/**\n * Triangle blur shader\n * based on glfx.js triangle blur shader\n * https://github.com/evanw/glfx.js\n *\n * A basic blur filter, which convolves the image with a\n * pyramid filter. The pyramid filter is separable and is applied as two\n * perpendicular triangle filters.\n */\n\nconst TriangleBlurShader = {\n\n\tname: 'TriangleBlurShader',\n\n\tuniforms: {\n\n\t\t'texture': { value: null },\n\t\t'delta': { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\t#include \n\n\t\t#define ITERATIONS 10.0\n\n\t\tuniform sampler2D texture;\n\t\tuniform vec2 delta;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 color = vec4( 0.0 );\n\n\t\t\tfloat total = 0.0;\n\n\t\t// randomize the lookup values to hide the fixed number of samples\n\n\t\t\tfloat offset = rand( vUv );\n\n\t\t\tfor ( float t = -ITERATIONS; t <= ITERATIONS; t ++ ) {\n\n\t\t\t\tfloat percent = ( t + offset - 0.5 ) / ITERATIONS;\n\t\t\t\tfloat weight = 1.0 - abs( percent );\n\n\t\t\t\tcolor += texture2D( texture, vUv + delta * percent ) * weight;\n\t\t\t\ttotal += weight;\n\n\t\t\t}\n\n\t\t\tgl_FragColor = color / total;\n\n\t\t}`\n\n};\n\nexport { TriangleBlurShader };\n", "/**\n * Unpack RGBA depth shader\n * - show RGBA encoded depth as monochrome color\n */\n\nconst UnpackDepthRGBAShader = {\n\n\tname: 'UnpackDepthRGBAShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'opacity': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\t#include \n\n\t\tvoid main() {\n\n\t\t\tfloat depth = 1.0 - unpackRGBAToDepth( texture2D( tDiffuse, vUv ) );\n\t\t\tgl_FragColor = vec4( vec3( depth ), opacity );\n\n\t\t}`\n\n};\n\nexport { UnpackDepthRGBAShader };\n", "import {\n\tUniformsLib,\n\tUniformsUtils,\n\tMatrix4\n} from 'three';\n\n/**\n * Mesh Velocity Shader @bhouston\n */\n\nconst VelocityShader = {\n\n\tname: 'VelocityShader',\n\n\tuniforms: UniformsUtils.merge( [\n\t\tUniformsLib.common,\n\t\tUniformsLib.displacementmap,\n\t\t{\n\t\t\tmodelMatrixPrev: { value: new Matrix4() },\n\t\t\tcurrentProjectionViewMatrix: { value: new Matrix4() },\n\t\t\tpreviousProjectionViewMatrix: { value: new Matrix4() }\n\t\t}\n\t] ),\n\n\tvertexShader: /* glsl */`\n#define NORMAL\n\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\n\tvarying vec3 vViewPosition;\n\n#endif\n\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n\nuniform mat4 previousProjectionViewMatrix;\nuniform mat4 currentProjectionViewMatrix;\n\nuniform mat4 modelMatrixPrev;\n\nvarying vec4 clipPositionCurrent;\nvarying vec4 clipPositionPrevious;\n\nvoid main() {\n\n\n\t#include \n\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\n#ifdef USE_SKINNING\n\n\tvec4 mvPosition = modelViewMatrix * skinned;\n\tclipPositionCurrent = currentProjectionViewMatrix * modelMatrix * skinned;\n\tclipPositionPrevious = previousProjectionViewMatrix * modelMatrixPrev * skinned;\n\n#else\n\n\tvec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\n\tclipPositionCurrent = currentProjectionViewMatrix * modelMatrix * vec4( transformed, 1.0 );\n\tclipPositionPrevious = previousProjectionViewMatrix * modelMatrixPrev * vec4( transformed, 1.0 );\n\n#endif\n\n\tgl_Position = projectionMatrix * mvPosition;\n\n\t#include \n\t#include \n}\n`,\n\tfragmentShader: /* glsl */`\n#define NORMAL\n\nuniform float opacity;\n\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n\nvarying vec4 clipPositionCurrent;\nvarying vec4 clipPositionPrevious;\n\nvoid main() {\n\n\tvec4 diffuseColor = vec4( 1.0 );\n\tdiffuseColor.a = opacity;\n\n\t#include \n\t#include \n\t#include \n\n\tvec2 ndcPositionCurrent = clipPositionCurrent.xy/clipPositionCurrent.w;\n\tvec2 ndcPositionPrevious = clipPositionPrevious.xy/clipPositionPrevious.w;\n\tvec2 vel = ( ndcPositionCurrent - ndcPositionPrevious ) * 0.5;\n\tvel = vel * 0.5 + 0.5;\n\tvec2 v1 = packDepthToRG(vel.x);\n\tvec2 v2 = packDepthToRG(vel.y);\n\tgl_FragColor = vec4(v1.x, v1.y, v2.x, v2.y);\n\n\t#include \n\n}\n\n`\n};\n\nexport { VelocityShader };\n", "/**\n * Two pass Gaussian blur filter (horizontal and vertical blur shaders)\n * - see http://www.cake23.de/traveling-wavefronts-lit-up.html\n *\n * - 9 samples per pass\n * - standard deviation 2.7\n * - \"h\" and \"v\" parameters should be set to \"1 / width\" and \"1 / height\"\n */\n\nconst VerticalBlurShader = {\n\n\tname: 'VerticalBlurShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'v': { value: 1.0 / 512.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float v;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 sum = vec4( 0.0 );\n\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * v ) ) * 0.051;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * v ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * v ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * v ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * v ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * v ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * v ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * v ) ) * 0.051;\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}`\n\n};\n\nexport { VerticalBlurShader };\n", "/**\n * Simple fake tilt-shift effect, modulating two pass Gaussian blur (see above) by vertical position\n *\n * - 9 samples per pass\n * - standard deviation 2.7\n * - \"h\" and \"v\" parameters should be set to \"1 / width\" and \"1 / height\"\n * - \"r\" parameter control where \"focused\" horizontal line lies\n */\n\nconst VerticalTiltShiftShader = {\n\n\tname: 'VerticalTiltShiftShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'v': { value: 1.0 / 512.0 },\n\t\t'r': { value: 0.35 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float v;\n\t\tuniform float r;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 sum = vec4( 0.0 );\n\n\t\t\tfloat vv = v * abs( r - vUv.y );\n\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * vv ) ) * 0.051;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * vv ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * vv ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * vv ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * vv ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * vv ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * vv ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * vv ) ) * 0.051;\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}`\n\n};\n\nexport { VerticalTiltShiftShader };\n", "/**\n * Vignette shader\n * based on PaintEffect postprocess from ro.me\n * http://code.google.com/p/3-dreams-of-black/source/browse/deploy/js/effects/PaintEffect.js\n */\n\nconst VignetteShader = {\n\n\tname: 'VignetteShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'offset': { value: 1.0 },\n\t\t'darkness': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float offset;\n\t\tuniform float darkness;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\t// Eskil's vignette\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\t\t\tvec2 uv = ( vUv - vec2( 0.5 ) ) * vec2( offset );\n\t\t\tgl_FragColor = vec4( mix( texel.rgb, vec3( 1.0 - darkness ), dot( uv, uv ) ), texel.a );\n\n\t\t}`\n\n};\n\nexport { VignetteShader };\n", "import {\n\tVector2,\n\tVector3\n} from 'three';\n\n/**\n * Shaders to render 3D volumes using raycasting.\n * The applied techniques are based on similar implementations in the Visvis and Vispy projects.\n * This is not the only approach, therefore it's marked 1.\n */\n\nconst VolumeRenderShader1 = {\n\n\tuniforms: {\n\t\t'u_size': { value: new Vector3( 1, 1, 1 ) },\n\t\t'u_renderstyle': { value: 0 },\n\t\t'u_renderthreshold': { value: 0.5 },\n\t\t'u_clim': { value: new Vector2( 1, 1 ) },\n\t\t'u_data': { value: null },\n\t\t'u_cmdata': { value: null }\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec4 v_nearpos;\n\t\tvarying vec4 v_farpos;\n\t\tvarying vec3 v_position;\n\n\t\tvoid main() {\n\t\t\t\t// Prepare transforms to map to \"camera view\". See also:\n\t\t\t\t// https://threejs.org/docs/#api/renderers/webgl/WebGLProgram\n\t\t\t\tmat4 viewtransformf = modelViewMatrix;\n\t\t\t\tmat4 viewtransformi = inverse(modelViewMatrix);\n\n\t\t\t\t// Project local vertex coordinate to camera position. Then do a step\n\t\t\t\t// backward (in cam coords) to the near clipping plane, and project back. Do\n\t\t\t\t// the same for the far clipping plane. This gives us all the information we\n\t\t\t\t// need to calculate the ray and truncate it to the viewing cone.\n\t\t\t\tvec4 position4 = vec4(position, 1.0);\n\t\t\t\tvec4 pos_in_cam = viewtransformf * position4;\n\n\t\t\t\t// Intersection of ray and near clipping plane (z = -1 in clip coords)\n\t\t\t\tpos_in_cam.z = -pos_in_cam.w;\n\t\t\t\tv_nearpos = viewtransformi * pos_in_cam;\n\n\t\t\t\t// Intersection of ray and far clipping plane (z = +1 in clip coords)\n\t\t\t\tpos_in_cam.z = pos_in_cam.w;\n\t\t\t\tv_farpos = viewtransformi * pos_in_cam;\n\n\t\t\t\t// Set varyings and output pos\n\t\t\t\tv_position = position;\n\t\t\t\tgl_Position = projectionMatrix * viewMatrix * modelMatrix * position4;\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\t\t\tprecision highp float;\n\t\t\t\tprecision mediump sampler3D;\n\n\t\t\t\tuniform vec3 u_size;\n\t\t\t\tuniform int u_renderstyle;\n\t\t\t\tuniform float u_renderthreshold;\n\t\t\t\tuniform vec2 u_clim;\n\n\t\t\t\tuniform sampler3D u_data;\n\t\t\t\tuniform sampler2D u_cmdata;\n\n\t\t\t\tvarying vec3 v_position;\n\t\t\t\tvarying vec4 v_nearpos;\n\t\t\t\tvarying vec4 v_farpos;\n\n\t\t\t\t// The maximum distance through our rendering volume is sqrt(3).\n\t\t\t\tconst int MAX_STEPS = 887;\t// 887 for 512^3, 1774 for 1024^3\n\t\t\t\tconst int REFINEMENT_STEPS = 4;\n\t\t\t\tconst float relative_step_size = 1.0;\n\t\t\t\tconst vec4 ambient_color = vec4(0.2, 0.4, 0.2, 1.0);\n\t\t\t\tconst vec4 diffuse_color = vec4(0.8, 0.2, 0.2, 1.0);\n\t\t\t\tconst vec4 specular_color = vec4(1.0, 1.0, 1.0, 1.0);\n\t\t\t\tconst float shininess = 40.0;\n\n\t\t\t\tvoid cast_mip(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray);\n\t\t\t\tvoid cast_iso(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray);\n\n\t\t\t\tfloat sample1(vec3 texcoords);\n\t\t\t\tvec4 apply_colormap(float val);\n\t\t\t\tvec4 add_lighting(float val, vec3 loc, vec3 step, vec3 view_ray);\n\n\n\t\t\t\tvoid main() {\n\t\t\t\t\t\t// Normalize clipping plane info\n\t\t\t\t\t\tvec3 farpos = v_farpos.xyz / v_farpos.w;\n\t\t\t\t\t\tvec3 nearpos = v_nearpos.xyz / v_nearpos.w;\n\n\t\t\t\t\t\t// Calculate unit vector pointing in the view direction through this fragment.\n\t\t\t\t\t\tvec3 view_ray = normalize(nearpos.xyz - farpos.xyz);\n\n\t\t\t\t\t\t// Compute the (negative) distance to the front surface or near clipping plane.\n\t\t\t\t\t\t// v_position is the back face of the cuboid, so the initial distance calculated in the dot\n\t\t\t\t\t\t// product below is the distance from near clip plane to the back of the cuboid\n\t\t\t\t\t\tfloat distance = dot(nearpos - v_position, view_ray);\n\t\t\t\t\t\tdistance = max(distance, min((-0.5 - v_position.x) / view_ray.x,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(u_size.x - 0.5 - v_position.x) / view_ray.x));\n\t\t\t\t\t\tdistance = max(distance, min((-0.5 - v_position.y) / view_ray.y,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(u_size.y - 0.5 - v_position.y) / view_ray.y));\n\t\t\t\t\t\tdistance = max(distance, min((-0.5 - v_position.z) / view_ray.z,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(u_size.z - 0.5 - v_position.z) / view_ray.z));\n\n\t\t\t\t\t\t// Now we have the starting position on the front surface\n\t\t\t\t\t\tvec3 front = v_position + view_ray * distance;\n\n\t\t\t\t\t\t// Decide how many steps to take\n\t\t\t\t\t\tint nsteps = int(-distance / relative_step_size + 0.5);\n\t\t\t\t\t\tif ( nsteps < 1 )\n\t\t\t\t\t\t\t\tdiscard;\n\n\t\t\t\t\t\t// Get starting location and step vector in texture coordinates\n\t\t\t\t\t\tvec3 step = ((v_position - front) / u_size) / float(nsteps);\n\t\t\t\t\t\tvec3 start_loc = front / u_size;\n\n\t\t\t\t\t\t// For testing: show the number of steps. This helps to establish\n\t\t\t\t\t\t// whether the rays are correctly oriented\n\t\t\t\t\t\t//'gl_FragColor = vec4(0.0, float(nsteps) / 1.0 / u_size.x, 1.0, 1.0);\n\t\t\t\t\t\t//'return;\n\n\t\t\t\t\t\tif (u_renderstyle == 0)\n\t\t\t\t\t\t\t\tcast_mip(start_loc, step, nsteps, view_ray);\n\t\t\t\t\t\telse if (u_renderstyle == 1)\n\t\t\t\t\t\t\t\tcast_iso(start_loc, step, nsteps, view_ray);\n\n\t\t\t\t\t\tif (gl_FragColor.a < 0.05)\n\t\t\t\t\t\t\t\tdiscard;\n\t\t\t\t}\n\n\n\t\t\t\tfloat sample1(vec3 texcoords) {\n\t\t\t\t\t\t/* Sample float value from a 3D texture. Assumes intensity data. */\n\t\t\t\t\t\treturn texture(u_data, texcoords.xyz).r;\n\t\t\t\t}\n\n\n\t\t\t\tvec4 apply_colormap(float val) {\n\t\t\t\t\t\tval = (val - u_clim[0]) / (u_clim[1] - u_clim[0]);\n\t\t\t\t\t\treturn texture2D(u_cmdata, vec2(val, 0.5));\n\t\t\t\t}\n\n\n\t\t\t\tvoid cast_mip(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray) {\n\n\t\t\t\t\t\tfloat max_val = -1e6;\n\t\t\t\t\t\tint max_i = 100;\n\t\t\t\t\t\tvec3 loc = start_loc;\n\n\t\t\t\t\t\t// Enter the raycasting loop. In WebGL 1 the loop index cannot be compared with\n\t\t\t\t\t\t// non-constant expression. So we use a hard-coded max, and an additional condition\n\t\t\t\t\t\t// inside the loop.\n\t\t\t\t\t\tfor (int iter=0; iter= nsteps)\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t// Sample from the 3D texture\n\t\t\t\t\t\t\t\tfloat val = sample1(loc);\n\t\t\t\t\t\t\t\t// Apply MIP operation\n\t\t\t\t\t\t\t\tif (val > max_val) {\n\t\t\t\t\t\t\t\t\t\tmax_val = val;\n\t\t\t\t\t\t\t\t\t\tmax_i = iter;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Advance location deeper into the volume\n\t\t\t\t\t\t\t\tloc += step;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Refine location, gives crispier images\n\t\t\t\t\t\tvec3 iloc = start_loc + step * (float(max_i) - 0.5);\n\t\t\t\t\t\tvec3 istep = step / float(REFINEMENT_STEPS);\n\t\t\t\t\t\tfor (int i=0; i= nsteps)\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t// Sample from the 3D texture\n\t\t\t\t\t\t\t\tfloat val = sample1(loc);\n\n\t\t\t\t\t\t\t\tif (val > low_threshold) {\n\t\t\t\t\t\t\t\t\t\t// Take the last interval in smaller steps\n\t\t\t\t\t\t\t\t\t\tvec3 iloc = loc - 0.5 * step;\n\t\t\t\t\t\t\t\t\t\tvec3 istep = step / float(REFINEMENT_STEPS);\n\t\t\t\t\t\t\t\t\t\tfor (int i=0; i u_renderthreshold) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl_FragColor = add_lighting(val, iloc, dstep, view_ray);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tiloc += istep;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Advance location deeper into the volume\n\t\t\t\t\t\t\t\tloc += step;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\n\n\t\t\t\tvec4 add_lighting(float val, vec3 loc, vec3 step, vec3 view_ray)\n\t\t\t\t{\n\t\t\t\t\t// Calculate color by incorporating lighting\n\n\t\t\t\t\t\t// View direction\n\t\t\t\t\t\tvec3 V = normalize(view_ray);\n\n\t\t\t\t\t\t// calculate normal vector from gradient\n\t\t\t\t\t\tvec3 N;\n\t\t\t\t\t\tfloat val1, val2;\n\t\t\t\t\t\tval1 = sample1(loc + vec3(-step[0], 0.0, 0.0));\n\t\t\t\t\t\tval2 = sample1(loc + vec3(+step[0], 0.0, 0.0));\n\t\t\t\t\t\tN[0] = val1 - val2;\n\t\t\t\t\t\tval = max(max(val1, val2), val);\n\t\t\t\t\t\tval1 = sample1(loc + vec3(0.0, -step[1], 0.0));\n\t\t\t\t\t\tval2 = sample1(loc + vec3(0.0, +step[1], 0.0));\n\t\t\t\t\t\tN[1] = val1 - val2;\n\t\t\t\t\t\tval = max(max(val1, val2), val);\n\t\t\t\t\t\tval1 = sample1(loc + vec3(0.0, 0.0, -step[2]));\n\t\t\t\t\t\tval2 = sample1(loc + vec3(0.0, 0.0, +step[2]));\n\t\t\t\t\t\tN[2] = val1 - val2;\n\t\t\t\t\t\tval = max(max(val1, val2), val);\n\n\t\t\t\t\t\tfloat gm = length(N); // gradient magnitude\n\t\t\t\t\t\tN = normalize(N);\n\n\t\t\t\t\t\t// Flip normal so it points towards viewer\n\t\t\t\t\t\tfloat Nselect = float(dot(N, V) > 0.0);\n\t\t\t\t\t\tN = (2.0 * Nselect - 1.0) * N;\t// ==\tNselect * N - (1.0-Nselect)*N;\n\n\t\t\t\t\t\t// Init colors\n\t\t\t\t\t\tvec4 ambient_color = vec4(0.0, 0.0, 0.0, 0.0);\n\t\t\t\t\t\tvec4 diffuse_color = vec4(0.0, 0.0, 0.0, 0.0);\n\t\t\t\t\t\tvec4 specular_color = vec4(0.0, 0.0, 0.0, 0.0);\n\n\t\t\t\t\t\t// note: could allow multiple lights\n\t\t\t\t\t\tfor (int i=0; i<1; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t // Get light direction (make sure to prevent zero devision)\n\t\t\t\t\t\t\t\tvec3 L = normalize(view_ray);\t//lightDirs[i];\n\t\t\t\t\t\t\t\tfloat lightEnabled = float( length(L) > 0.0 );\n\t\t\t\t\t\t\t\tL = normalize(L + (1.0 - lightEnabled));\n\n\t\t\t\t\t\t\t\t// Calculate lighting properties\n\t\t\t\t\t\t\t\tfloat lambertTerm = clamp(dot(N, L), 0.0, 1.0);\n\t\t\t\t\t\t\t\tvec3 H = normalize(L+V); // Halfway vector\n\t\t\t\t\t\t\t\tfloat specularTerm = pow(max(dot(H, N), 0.0), shininess);\n\n\t\t\t\t\t\t\t\t// Calculate mask\n\t\t\t\t\t\t\t\tfloat mask1 = lightEnabled;\n\n\t\t\t\t\t\t\t\t// Calculate colors\n\t\t\t\t\t\t\t\tambient_color +=\tmask1 * ambient_color;\t// * gl_LightSource[i].ambient;\n\t\t\t\t\t\t\t\tdiffuse_color +=\tmask1 * lambertTerm;\n\t\t\t\t\t\t\t\tspecular_color += mask1 * specularTerm * specular_color;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Calculate final color by componing different components\n\t\t\t\t\t\tvec4 final_color;\n\t\t\t\t\t\tvec4 color = apply_colormap(val);\n\t\t\t\t\t\tfinal_color = color * (ambient_color + diffuse_color) + specular_color;\n\t\t\t\t\t\tfinal_color.a = color.a;\n\t\t\t\t\t\treturn final_color;\n\t\t\t\t}`\n\n};\n\nexport { VolumeRenderShader1 };\n", "const WaterRefractionShader = {\n\n\tname: 'WaterRefractionShader',\n\n\tuniforms: {\n\n\t\t'color': {\n\t\t\tvalue: null\n\t\t},\n\n\t\t'time': {\n\t\t\tvalue: 0\n\t\t},\n\n\t\t'tDiffuse': {\n\t\t\tvalue: null\n\t\t},\n\n\t\t'tDudv': {\n\t\t\tvalue: null\n\t\t},\n\n\t\t'textureMatrix': {\n\t\t\tvalue: null\n\t\t}\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tuniform mat4 textureMatrix;\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec4 vUvRefraction;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tvUvRefraction = textureMatrix * vec4( position, 1.0 );\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform vec3 color;\n\t\tuniform float time;\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tDudv;\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec4 vUvRefraction;\n\n\t\tfloat blendOverlay( float base, float blend ) {\n\n\t\t\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\n\t\t}\n\n\t\tvec3 blendOverlay( vec3 base, vec3 blend ) {\n\n\t\t\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ),blendOverlay( base.b, blend.b ) );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t float waveStrength = 0.5;\n\t\t float waveSpeed = 0.03;\n\n\t\t\t// simple distortion (ripple) via dudv map (see https://www.youtube.com/watch?v=6B7IF6GOu7s)\n\n\t\t\tvec2 distortedUv = texture2D( tDudv, vec2( vUv.x + time * waveSpeed, vUv.y ) ).rg * waveStrength;\n\t\t\tdistortedUv = vUv.xy + vec2( distortedUv.x, distortedUv.y + time * waveSpeed );\n\t\t\tvec2 distortion = ( texture2D( tDudv, distortedUv ).rg * 2.0 - 1.0 ) * waveStrength;\n\n\t\t\t// new uv coords\n\n\t\t\tvec4 uv = vec4( vUvRefraction );\n\t\t\tuv.xy += distortion;\n\n\t\t\tvec4 base = texture2DProj( tDiffuse, uv );\n\n\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\n\t\t\t#include \n\t\t\t#include \n\n\t\t}`\n\n};\n\nexport { WaterRefractionShader };\n", "class FlakesTexture {\n\n\tconstructor( width = 512, height = 512 ) {\n\n\t\tconst canvas = document.createElement( 'canvas' );\n\t\tcanvas.width = width;\n\t\tcanvas.height = height;\n\n\t\tconst context = canvas.getContext( '2d' );\n\t\tcontext.fillStyle = 'rgb(127,127,255)';\n\t\tcontext.fillRect( 0, 0, width, height );\n\n\t\tfor ( let i = 0; i < 4000; i ++ ) {\n\n\t\t\tconst x = Math.random() * width;\n\t\t\tconst y = Math.random() * height;\n\t\t\tconst r = Math.random() * 3 + 3;\n\n\t\t\tlet nx = Math.random() * 2 - 1;\n\t\t\tlet ny = Math.random() * 2 - 1;\n\t\t\tlet nz = 1.5;\n\n\t\t\tconst l = Math.sqrt( nx * nx + ny * ny + nz * nz );\n\n\t\t\tnx /= l; ny /= l; nz /= l;\n\n\t\t\tcontext.fillStyle = 'rgb(' + ( nx * 127 + 127 ) + ',' + ( ny * 127 + 127 ) + ',' + ( nz * 255 ) + ')';\n\t\t\tcontext.beginPath();\n\t\t\tcontext.arc( x, y, r, 0, Math.PI * 2 );\n\t\t\tcontext.fill();\n\n\t\t}\n\n\t\treturn canvas;\n\n\t}\n\n}\n\nexport { FlakesTexture };\n", "import {\n\tMathUtils,\n\tQuaternion,\n\tVector3\n} from 'three';\n\nconst _va = /*@__PURE__*/ new Vector3(), // from pe to pa\n\t_vb = /*@__PURE__*/ new Vector3(), // from pe to pb\n\t_vc = /*@__PURE__*/ new Vector3(), // from pe to pc\n\t_vr = /*@__PURE__*/ new Vector3(), // right axis of screen\n\t_vu = /*@__PURE__*/ new Vector3(), // up axis of screen\n\t_vn = /*@__PURE__*/ new Vector3(), // normal vector of screen\n\t_vec = /*@__PURE__*/ new Vector3(), // temporary vector\n\t_quat = /*@__PURE__*/ new Quaternion(); // temporary quaternion\n\n\n/** Set a PerspectiveCamera's projectionMatrix and quaternion\n * to exactly frame the corners of an arbitrary rectangle.\n * NOTE: This function ignores the standard parameters;\n * do not call updateProjectionMatrix() after this!\n * @param {Vector3} bottomLeftCorner\n * @param {Vector3} bottomRightCorner\n * @param {Vector3} topLeftCorner\n * @param {boolean} estimateViewFrustum */\nfunction frameCorners( camera, bottomLeftCorner, bottomRightCorner, topLeftCorner, estimateViewFrustum = false ) {\n\n\tconst pa = bottomLeftCorner, pb = bottomRightCorner, pc = topLeftCorner;\n\tconst pe = camera.position; // eye position\n\tconst n = camera.near; // distance of near clipping plane\n\tconst f = camera.far; //distance of far clipping plane\n\n\t_vr.copy( pb ).sub( pa ).normalize();\n\t_vu.copy( pc ).sub( pa ).normalize();\n\t_vn.crossVectors( _vr, _vu ).normalize();\n\n\t_va.copy( pa ).sub( pe ); // from pe to pa\n\t_vb.copy( pb ).sub( pe ); // from pe to pb\n\t_vc.copy( pc ).sub( pe ); // from pe to pc\n\n\tconst d = - _va.dot( _vn );\t// distance from eye to screen\n\tconst l = _vr.dot( _va ) * n / d; // distance to left screen edge\n\tconst r = _vr.dot( _vb ) * n / d; // distance to right screen edge\n\tconst b = _vu.dot( _va ) * n / d; // distance to bottom screen edge\n\tconst t = _vu.dot( _vc ) * n / d; // distance to top screen edge\n\n\t// Set the camera rotation to match the focal plane to the corners' plane\n\t_quat.setFromUnitVectors( _vec.set( 0, 1, 0 ), _vu );\n\tcamera.quaternion.setFromUnitVectors( _vec.set( 0, 0, 1 ).applyQuaternion( _quat ), _vn ).multiply( _quat );\n\n\t// Set the off-axis projection matrix to match the corners\n\tcamera.projectionMatrix.set( 2.0 * n / ( r - l ), 0.0,\n\t\t( r + l ) / ( r - l ), 0.0, 0.0,\n\t\t2.0 * n / ( t - b ),\n\t\t( t + b ) / ( t - b ), 0.0, 0.0, 0.0,\n\t\t( f + n ) / ( n - f ),\n\t\t2.0 * f * n / ( n - f ), 0.0, 0.0, - 1.0, 0.0 );\n\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\n\t// FoV estimation to fix frustum culling\n\tif ( estimateViewFrustum ) {\n\n\t\t// Set fieldOfView to a conservative estimate\n\t\t// to make frustum tall/wide enough to encompass it\n\t\tcamera.fov =\n\t\t\tMathUtils.RAD2DEG / Math.min( 1.0, camera.aspect ) *\n\t\t\tMath.atan( ( _vec.copy( pb ).sub( pa ).length() +\n\t\t\t\t\t\t\t( _vec.copy( pc ).sub( pa ).length() ) ) / _va.length() );\n\n\t}\n\n}\n\nexport { frameCorners };\n", "var Stats = function () {\n\n\tvar mode = 0;\n\n\tvar container = document.createElement( 'div' );\n\tcontainer.style.cssText = 'position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000';\n\tcontainer.addEventListener( 'click', function ( event ) {\n\n\t\tevent.preventDefault();\n\t\tshowPanel( ++ mode % container.children.length );\n\n\t}, false );\n\n\t//\n\n\tfunction addPanel( panel ) {\n\n\t\tcontainer.appendChild( panel.dom );\n\t\treturn panel;\n\n\t}\n\n\tfunction showPanel( id ) {\n\n\t\tfor ( var i = 0; i < container.children.length; i ++ ) {\n\n\t\t\tcontainer.children[ i ].style.display = i === id ? 'block' : 'none';\n\n\t\t}\n\n\t\tmode = id;\n\n\t}\n\n\t//\n\n\tvar beginTime = ( performance || Date ).now(), prevTime = beginTime, frames = 0;\n\n\tvar fpsPanel = addPanel( new Stats.Panel( 'FPS', '#0ff', '#002' ) );\n\tvar msPanel = addPanel( new Stats.Panel( 'MS', '#0f0', '#020' ) );\n\n\tif ( self.performance && self.performance.memory ) {\n\n\t\tvar memPanel = addPanel( new Stats.Panel( 'MB', '#f08', '#201' ) );\n\n\t}\n\n\tshowPanel( 0 );\n\n\treturn {\n\n\t\tREVISION: 16,\n\n\t\tdom: container,\n\n\t\taddPanel: addPanel,\n\t\tshowPanel: showPanel,\n\n\t\tbegin: function () {\n\n\t\t\tbeginTime = ( performance || Date ).now();\n\n\t\t},\n\n\t\tend: function () {\n\n\t\t\tframes ++;\n\n\t\t\tvar time = ( performance || Date ).now();\n\n\t\t\tmsPanel.update( time - beginTime, 200 );\n\n\t\t\tif ( time >= prevTime + 1000 ) {\n\n\t\t\t\tfpsPanel.update( ( frames * 1000 ) / ( time - prevTime ), 100 );\n\n\t\t\t\tprevTime = time;\n\t\t\t\tframes = 0;\n\n\t\t\t\tif ( memPanel ) {\n\n\t\t\t\t\tvar memory = performance.memory;\n\t\t\t\t\tmemPanel.update( memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn time;\n\n\t\t},\n\n\t\tupdate: function () {\n\n\t\t\tbeginTime = this.end();\n\n\t\t},\n\n\t\t// Backwards Compatibility\n\n\t\tdomElement: container,\n\t\tsetMode: showPanel\n\n\t};\n\n};\n\nStats.Panel = function ( name, fg, bg ) {\n\n\tvar min = Infinity, max = 0, round = Math.round;\n\tvar PR = round( window.devicePixelRatio || 1 );\n\n\tvar WIDTH = 80 * PR, HEIGHT = 48 * PR,\n\t\tTEXT_X = 3 * PR, TEXT_Y = 2 * PR,\n\t\tGRAPH_X = 3 * PR, GRAPH_Y = 15 * PR,\n\t\tGRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR;\n\n\tvar canvas = document.createElement( 'canvas' );\n\tcanvas.width = WIDTH;\n\tcanvas.height = HEIGHT;\n\tcanvas.style.cssText = 'width:80px;height:48px';\n\n\tvar context = canvas.getContext( '2d' );\n\tcontext.font = 'bold ' + ( 9 * PR ) + 'px Helvetica,Arial,sans-serif';\n\tcontext.textBaseline = 'top';\n\n\tcontext.fillStyle = bg;\n\tcontext.fillRect( 0, 0, WIDTH, HEIGHT );\n\n\tcontext.fillStyle = fg;\n\tcontext.fillText( name, TEXT_X, TEXT_Y );\n\tcontext.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT );\n\n\tcontext.fillStyle = bg;\n\tcontext.globalAlpha = 0.9;\n\tcontext.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT );\n\n\treturn {\n\n\t\tdom: canvas,\n\n\t\tupdate: function ( value, maxValue ) {\n\n\t\t\tmin = Math.min( min, value );\n\t\t\tmax = Math.max( max, value );\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 1;\n\t\t\tcontext.fillRect( 0, 0, WIDTH, GRAPH_Y );\n\t\t\tcontext.fillStyle = fg;\n\t\t\tcontext.fillText( round( value ) + ' ' + name + ' (' + round( min ) + '-' + round( max ) + ')', TEXT_X, TEXT_Y );\n\n\t\t\tcontext.drawImage( canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT );\n\n\t\t\tcontext.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT );\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 0.9;\n\t\t\tcontext.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round( ( 1 - ( value / maxValue ) ) * GRAPH_HEIGHT ) );\n\n\t\t}\n\n\t};\n\n};\n\nexport default Stats;\n", "import Stats from '../libs/stats.module.js';\n\n// https://www.khronos.org/registry/webgl/extensions/EXT_disjoint_timer_query_webgl2/\nexport class GPUStatsPanel extends Stats.Panel {\n\n\tconstructor( context, name = 'GPU MS' ) {\n\n\t\tsuper( name, '#f90', '#210' );\n\n\t\tconst extension = context.getExtension( 'EXT_disjoint_timer_query_webgl2' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tconsole.warn( 'GPUStatsPanel: disjoint_time_query extension not available.' );\n\n\t\t}\n\n\t\tthis.context = context;\n\t\tthis.extension = extension;\n\t\tthis.maxTime = 30;\n\t\tthis.activeQueries = 0;\n\n\t\tthis.startQuery = function () {\n\n\t\t\tconst gl = this.context;\n\t\t\tconst ext = this.extension;\n\n\t\t\tif ( ext === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// create the query object\n\t\t\tconst query = gl.createQuery();\n\t\t\tgl.beginQuery( ext.TIME_ELAPSED_EXT, query );\n\n\t\t\tthis.activeQueries ++;\n\n\t\t\tconst checkQuery = () => {\n\n\t\t\t\t// check if the query is available and valid\n\n\t\t\t\tconst available = gl.getQueryParameter( query, gl.QUERY_RESULT_AVAILABLE );\n\t\t\t\tconst disjoint = gl.getParameter( ext.GPU_DISJOINT_EXT );\n\t\t\t\tconst ns = gl.getQueryParameter( query, gl.QUERY_RESULT );\n\n\t\t\t\tconst ms = ns * 1e-6;\n\n\t\t\t\tif ( available ) {\n\n\t\t\t\t\t// update the display if it is valid\n\t\t\t\t\tif ( ! disjoint ) {\n\n\t\t\t\t\t\tthis.update( ms, this.maxTime );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.deleteQuery( query );\n\n\t\t\t\t\tthis.activeQueries --;\n\n\n\t\t\t\t} else if ( gl.isContextLost() === false ) {\n\n\t\t\t\t\t// otherwise try again the next frame\n\t\t\t\t\trequestAnimationFrame( checkQuery );\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t\trequestAnimationFrame( checkQuery );\n\n\t\t};\n\n\t\tthis.endQuery = function () {\n\n\t\t\t// finish the query measurement\n\t\t\tconst ext = this.extension;\n\t\t\tconst gl = this.context;\n\n\t\t\tif ( ext === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tgl.endQuery( ext.TIME_ELAPSED_EXT );\n\n\t\t};\n\n\t}\n\n}\n", "/**\n * Octahedron and Quantization encodings based on work by:\n *\n * @link https://github.com/tsherif/mesh-quantization-example\n *\n */\n\nimport {\n\tBufferAttribute,\n\tMatrix3,\n\tMatrix4,\n\tVector3\n} from 'three';\nimport { PackedPhongMaterial } from './PackedPhongMaterial.js';\n\n\n\n/**\n * Make the input mesh.geometry's normal attribute encoded and compressed by 3 different methods.\n * Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the normal data.\n *\n * @param {THREE.Mesh} mesh\n * @param {String} encodeMethod\t\t\"DEFAULT\" || \"OCT1Byte\" || \"OCT2Byte\" || \"ANGLES\"\n *\n */\nfunction compressNormals( mesh, encodeMethod ) {\n\n\tif ( ! mesh.geometry ) {\n\n\t\tconsole.error( 'Mesh must contain geometry. ' );\n\n\t}\n\n\tconst normal = mesh.geometry.attributes.normal;\n\n\tif ( ! normal ) {\n\n\t\tconsole.error( 'Geometry must contain normal attribute. ' );\n\n\t}\n\n\tif ( normal.isPacked ) return;\n\n\tif ( normal.itemSize != 3 ) {\n\n\t\tconsole.error( 'normal.itemSize is not 3, which cannot be encoded. ' );\n\n\t}\n\n\tconst array = normal.array;\n\tconst count = normal.count;\n\n\tlet result;\n\tif ( encodeMethod == 'DEFAULT' ) {\n\n\t\t// TODO: Add 1 byte to the result, making the encoded length to be 4 bytes.\n\t\tresult = new Uint8Array( count * 3 );\n\n\t\tfor ( let idx = 0; idx < array.length; idx += 3 ) {\n\n\t\t\tconst encoded = defaultEncode( array[ idx ], array[ idx + 1 ], array[ idx + 2 ], 1 );\n\n\t\t\tresult[ idx + 0 ] = encoded[ 0 ];\n\t\t\tresult[ idx + 1 ] = encoded[ 1 ];\n\t\t\tresult[ idx + 2 ] = encoded[ 2 ];\n\n\t\t}\n\n\t\tmesh.geometry.setAttribute( 'normal', new BufferAttribute( result, 3, true ) );\n\t\tmesh.geometry.attributes.normal.bytes = result.length * 1;\n\n\t} else if ( encodeMethod == 'OCT1Byte' ) {\n\n\t\t/**\n\t\t* It is not recommended to use 1-byte octahedron normals encoding unless you want to extremely reduce the memory usage\n\t\t* As it makes vertex data not aligned to a 4 byte boundary which may harm some WebGL implementations and sometimes the normal distortion is visible\n\t\t* Please refer to @zeux 's comments in https://github.com/mrdoob/three.js/pull/18208\n\t\t*/\n\n\t\tresult = new Int8Array( count * 2 );\n\n\t\tfor ( let idx = 0; idx < array.length; idx += 3 ) {\n\n\t\t\tconst encoded = octEncodeBest( array[ idx ], array[ idx + 1 ], array[ idx + 2 ], 1 );\n\n\t\t\tresult[ idx / 3 * 2 + 0 ] = encoded[ 0 ];\n\t\t\tresult[ idx / 3 * 2 + 1 ] = encoded[ 1 ];\n\n\t\t}\n\n\t\tmesh.geometry.setAttribute( 'normal', new BufferAttribute( result, 2, true ) );\n\t\tmesh.geometry.attributes.normal.bytes = result.length * 1;\n\n\t} else if ( encodeMethod == 'OCT2Byte' ) {\n\n\t\tresult = new Int16Array( count * 2 );\n\n\t\tfor ( let idx = 0; idx < array.length; idx += 3 ) {\n\n\t\t\tconst encoded = octEncodeBest( array[ idx ], array[ idx + 1 ], array[ idx + 2 ], 2 );\n\n\t\t\tresult[ idx / 3 * 2 + 0 ] = encoded[ 0 ];\n\t\t\tresult[ idx / 3 * 2 + 1 ] = encoded[ 1 ];\n\n\t\t}\n\n\t\tmesh.geometry.setAttribute( 'normal', new BufferAttribute( result, 2, true ) );\n\t\tmesh.geometry.attributes.normal.bytes = result.length * 2;\n\n\t} else if ( encodeMethod == 'ANGLES' ) {\n\n\t\tresult = new Uint16Array( count * 2 );\n\n\t\tfor ( let idx = 0; idx < array.length; idx += 3 ) {\n\n\t\t\tconst encoded = anglesEncode( array[ idx ], array[ idx + 1 ], array[ idx + 2 ] );\n\n\t\t\tresult[ idx / 3 * 2 + 0 ] = encoded[ 0 ];\n\t\t\tresult[ idx / 3 * 2 + 1 ] = encoded[ 1 ];\n\n\t\t}\n\n\t\tmesh.geometry.setAttribute( 'normal', new BufferAttribute( result, 2, true ) );\n\t\tmesh.geometry.attributes.normal.bytes = result.length * 2;\n\n\t} else {\n\n\t\tconsole.error( 'Unrecognized encoding method, should be `DEFAULT` or `ANGLES` or `OCT`. ' );\n\n\t}\n\n\tmesh.geometry.attributes.normal.needsUpdate = true;\n\tmesh.geometry.attributes.normal.isPacked = true;\n\tmesh.geometry.attributes.normal.packingMethod = encodeMethod;\n\n\t// modify material\n\tif ( ! ( mesh.material instanceof PackedPhongMaterial ) ) {\n\n\t\tmesh.material = new PackedPhongMaterial().copy( mesh.material );\n\n\t}\n\n\tif ( encodeMethod == 'ANGLES' ) {\n\n\t\tmesh.material.defines.USE_PACKED_NORMAL = 0;\n\n\t}\n\n\tif ( encodeMethod == 'OCT1Byte' ) {\n\n\t\tmesh.material.defines.USE_PACKED_NORMAL = 1;\n\n\t}\n\n\tif ( encodeMethod == 'OCT2Byte' ) {\n\n\t\tmesh.material.defines.USE_PACKED_NORMAL = 1;\n\n\t}\n\n\tif ( encodeMethod == 'DEFAULT' ) {\n\n\t\tmesh.material.defines.USE_PACKED_NORMAL = 2;\n\n\t}\n\n}\n\n\n/**\n\t * Make the input mesh.geometry's position attribute encoded and compressed.\n\t * Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the position data.\n\t *\n\t * @param {THREE.Mesh} mesh\n\t *\n\t */\nfunction compressPositions( mesh ) {\n\n\tif ( ! mesh.geometry ) {\n\n\t\tconsole.error( 'Mesh must contain geometry. ' );\n\n\t}\n\n\tconst position = mesh.geometry.attributes.position;\n\n\tif ( ! position ) {\n\n\t\tconsole.error( 'Geometry must contain position attribute. ' );\n\n\t}\n\n\tif ( position.isPacked ) return;\n\n\tif ( position.itemSize != 3 ) {\n\n\t\tconsole.error( 'position.itemSize is not 3, which cannot be packed. ' );\n\n\t}\n\n\tconst array = position.array;\n\tconst encodingBytes = 2;\n\n\tconst result = quantizedEncode( array, encodingBytes );\n\n\tconst quantized = result.quantized;\n\tconst decodeMat = result.decodeMat;\n\n\t// IMPORTANT: calculate original geometry bounding info first, before updating packed positions\n\tif ( mesh.geometry.boundingBox == null ) mesh.geometry.computeBoundingBox();\n\tif ( mesh.geometry.boundingSphere == null ) mesh.geometry.computeBoundingSphere();\n\n\tmesh.geometry.setAttribute( 'position', new BufferAttribute( quantized, 3 ) );\n\tmesh.geometry.attributes.position.isPacked = true;\n\tmesh.geometry.attributes.position.needsUpdate = true;\n\tmesh.geometry.attributes.position.bytes = quantized.length * encodingBytes;\n\n\t// modify material\n\tif ( ! ( mesh.material instanceof PackedPhongMaterial ) ) {\n\n\t\tmesh.material = new PackedPhongMaterial().copy( mesh.material );\n\n\t}\n\n\tmesh.material.defines.USE_PACKED_POSITION = 0;\n\n\tmesh.material.uniforms.quantizeMatPos.value = decodeMat;\n\tmesh.material.uniforms.quantizeMatPos.needsUpdate = true;\n\n}\n\n/**\n * Make the input mesh.geometry's uv attribute encoded and compressed.\n * Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the uv data.\n *\n * @param {THREE.Mesh} mesh\n *\n */\nfunction compressUvs( mesh ) {\n\n\tif ( ! mesh.geometry ) {\n\n\t\tconsole.error( 'Mesh must contain geometry property. ' );\n\n\t}\n\n\tconst uvs = mesh.geometry.attributes.uv;\n\n\tif ( ! uvs ) {\n\n\t\tconsole.error( 'Geometry must contain uv attribute. ' );\n\n\t}\n\n\tif ( uvs.isPacked ) return;\n\n\tconst range = { min: Infinity, max: - Infinity };\n\n\tconst array = uvs.array;\n\n\tfor ( let i = 0; i < array.length; i ++ ) {\n\n\t\trange.min = Math.min( range.min, array[ i ] );\n\t\trange.max = Math.max( range.max, array[ i ] );\n\n\t}\n\n\tlet result;\n\n\tif ( range.min >= - 1.0 && range.max <= 1.0 ) {\n\n\t\t// use default encoding method\n\t\tresult = new Uint16Array( array.length );\n\n\t\tfor ( let i = 0; i < array.length; i += 2 ) {\n\n\t\t\tconst encoded = defaultEncode( array[ i ], array[ i + 1 ], 0, 2 );\n\n\t\t\tresult[ i ] = encoded[ 0 ];\n\t\t\tresult[ i + 1 ] = encoded[ 1 ];\n\n\t\t}\n\n\t\tmesh.geometry.setAttribute( 'uv', new BufferAttribute( result, 2, true ) );\n\t\tmesh.geometry.attributes.uv.isPacked = true;\n\t\tmesh.geometry.attributes.uv.needsUpdate = true;\n\t\tmesh.geometry.attributes.uv.bytes = result.length * 2;\n\n\t\tif ( ! ( mesh.material instanceof PackedPhongMaterial ) ) {\n\n\t\t\tmesh.material = new PackedPhongMaterial().copy( mesh.material );\n\n\t\t}\n\n\t\tmesh.material.defines.USE_PACKED_UV = 0;\n\n\t} else {\n\n\t\t// use quantized encoding method\n\t\tresult = quantizedEncodeUV( array, 2 );\n\n\t\tmesh.geometry.setAttribute( 'uv', new BufferAttribute( result.quantized, 2 ) );\n\t\tmesh.geometry.attributes.uv.isPacked = true;\n\t\tmesh.geometry.attributes.uv.needsUpdate = true;\n\t\tmesh.geometry.attributes.uv.bytes = result.quantized.length * 2;\n\n\t\tif ( ! ( mesh.material instanceof PackedPhongMaterial ) ) {\n\n\t\t\tmesh.material = new PackedPhongMaterial().copy( mesh.material );\n\n\t\t}\n\n\t\tmesh.material.defines.USE_PACKED_UV = 1;\n\n\t\tmesh.material.uniforms.quantizeMatUV.value = result.decodeMat;\n\t\tmesh.material.uniforms.quantizeMatUV.needsUpdate = true;\n\n\t}\n\n}\n\n\n// Encoding functions\n\nfunction defaultEncode( x, y, z, bytes ) {\n\n\tif ( bytes == 1 ) {\n\n\t\tconst tmpx = Math.round( ( x + 1 ) * 0.5 * 255 );\n\t\tconst tmpy = Math.round( ( y + 1 ) * 0.5 * 255 );\n\t\tconst tmpz = Math.round( ( z + 1 ) * 0.5 * 255 );\n\t\treturn new Uint8Array( [ tmpx, tmpy, tmpz ] );\n\n\t} else if ( bytes == 2 ) {\n\n\t\tconst tmpx = Math.round( ( x + 1 ) * 0.5 * 65535 );\n\t\tconst tmpy = Math.round( ( y + 1 ) * 0.5 * 65535 );\n\t\tconst tmpz = Math.round( ( z + 1 ) * 0.5 * 65535 );\n\t\treturn new Uint16Array( [ tmpx, tmpy, tmpz ] );\n\n\t} else {\n\n\t\tconsole.error( 'number of bytes must be 1 or 2' );\n\n\t}\n\n}\n\n// for `Angles` encoding\nfunction anglesEncode( x, y, z ) {\n\n\tconst normal0 = parseInt( 0.5 * ( 1.0 + Math.atan2( y, x ) / Math.PI ) * 65535 );\n\tconst normal1 = parseInt( 0.5 * ( 1.0 + z ) * 65535 );\n\treturn new Uint16Array( [ normal0, normal1 ] );\n\n}\n\n// for `Octahedron` encoding\nfunction octEncodeBest( x, y, z, bytes ) {\n\n\tlet oct, dec, best, currentCos, bestCos;\n\n\t// Test various combinations of ceil and floor\n\t// to minimize rounding errors\n\tbest = oct = octEncodeVec3( x, y, z, 'floor', 'floor' );\n\tdec = octDecodeVec2( oct );\n\tbestCos = dot( x, y, z, dec );\n\n\toct = octEncodeVec3( x, y, z, 'ceil', 'floor' );\n\tdec = octDecodeVec2( oct );\n\tcurrentCos = dot( x, y, z, dec );\n\n\tif ( currentCos > bestCos ) {\n\n\t\tbest = oct;\n\t\tbestCos = currentCos;\n\n\t}\n\n\toct = octEncodeVec3( x, y, z, 'floor', 'ceil' );\n\tdec = octDecodeVec2( oct );\n\tcurrentCos = dot( x, y, z, dec );\n\n\tif ( currentCos > bestCos ) {\n\n\t\tbest = oct;\n\t\tbestCos = currentCos;\n\n\t}\n\n\toct = octEncodeVec3( x, y, z, 'ceil', 'ceil' );\n\tdec = octDecodeVec2( oct );\n\tcurrentCos = dot( x, y, z, dec );\n\n\tif ( currentCos > bestCos ) {\n\n\t\tbest = oct;\n\n\t}\n\n\treturn best;\n\n\tfunction octEncodeVec3( x0, y0, z0, xfunc, yfunc ) {\n\n\t\tlet x = x0 / ( Math.abs( x0 ) + Math.abs( y0 ) + Math.abs( z0 ) );\n\t\tlet y = y0 / ( Math.abs( x0 ) + Math.abs( y0 ) + Math.abs( z0 ) );\n\n\t\tif ( z < 0 ) {\n\n\t\t\tconst tempx = ( 1 - Math.abs( y ) ) * ( x >= 0 ? 1 : - 1 );\n\t\t\tconst tempy = ( 1 - Math.abs( x ) ) * ( y >= 0 ? 1 : - 1 );\n\n\t\t\tx = tempx;\n\t\t\ty = tempy;\n\n\t\t\tlet diff = 1 - Math.abs( x ) - Math.abs( y );\n\t\t\tif ( diff > 0 ) {\n\n\t\t\t\tdiff += 0.001;\n\t\t\t\tx += x > 0 ? diff / 2 : - diff / 2;\n\t\t\t\ty += y > 0 ? diff / 2 : - diff / 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( bytes == 1 ) {\n\n\t\t\treturn new Int8Array( [\n\t\t\t\tMath[ xfunc ]( x * 127.5 + ( x < 0 ? 1 : 0 ) ),\n\t\t\t\tMath[ yfunc ]( y * 127.5 + ( y < 0 ? 1 : 0 ) )\n\t\t\t] );\n\n\t\t}\n\n\t\tif ( bytes == 2 ) {\n\n\t\t\treturn new Int16Array( [\n\t\t\t\tMath[ xfunc ]( x * 32767.5 + ( x < 0 ? 1 : 0 ) ),\n\t\t\t\tMath[ yfunc ]( y * 32767.5 + ( y < 0 ? 1 : 0 ) )\n\t\t\t] );\n\n\t\t}\n\n\n\t}\n\n\tfunction octDecodeVec2( oct ) {\n\n\t\tlet x = oct[ 0 ];\n\t\tlet y = oct[ 1 ];\n\n\t\tif ( bytes == 1 ) {\n\n\t\t\tx /= x < 0 ? 127 : 128;\n\t\t\ty /= y < 0 ? 127 : 128;\n\n\t\t} else if ( bytes == 2 ) {\n\n\t\t\tx /= x < 0 ? 32767 : 32768;\n\t\t\ty /= y < 0 ? 32767 : 32768;\n\n\t\t}\n\n\n\t\tconst z = 1 - Math.abs( x ) - Math.abs( y );\n\n\t\tif ( z < 0 ) {\n\n\t\t\tconst tmpx = x;\n\t\t\tx = ( 1 - Math.abs( y ) ) * ( x >= 0 ? 1 : - 1 );\n\t\t\ty = ( 1 - Math.abs( tmpx ) ) * ( y >= 0 ? 1 : - 1 );\n\n\t\t}\n\n\t\tconst length = Math.sqrt( x * x + y * y + z * z );\n\n\t\treturn [\n\t\t\tx / length,\n\t\t\ty / length,\n\t\t\tz / length\n\t\t];\n\n\t}\n\n\tfunction dot( x, y, z, vec3 ) {\n\n\t\treturn x * vec3[ 0 ] + y * vec3[ 1 ] + z * vec3[ 2 ];\n\n\t}\n\n}\n\nfunction quantizedEncode( array, bytes ) {\n\n\tlet quantized, segments;\n\n\tif ( bytes == 1 ) {\n\n\t\tquantized = new Uint8Array( array.length );\n\t\tsegments = 255;\n\n\t} else if ( bytes == 2 ) {\n\n\t\tquantized = new Uint16Array( array.length );\n\t\tsegments = 65535;\n\n\t} else {\n\n\t\tconsole.error( 'number of bytes error! ' );\n\n\t}\n\n\tconst decodeMat = new Matrix4();\n\n\tconst min = new Float32Array( 3 );\n\tconst max = new Float32Array( 3 );\n\n\tmin[ 0 ] = min[ 1 ] = min[ 2 ] = Number.MAX_VALUE;\n\tmax[ 0 ] = max[ 1 ] = max[ 2 ] = - Number.MAX_VALUE;\n\n\tfor ( let i = 0; i < array.length; i += 3 ) {\n\n\t\tmin[ 0 ] = Math.min( min[ 0 ], array[ i + 0 ] );\n\t\tmin[ 1 ] = Math.min( min[ 1 ], array[ i + 1 ] );\n\t\tmin[ 2 ] = Math.min( min[ 2 ], array[ i + 2 ] );\n\t\tmax[ 0 ] = Math.max( max[ 0 ], array[ i + 0 ] );\n\t\tmax[ 1 ] = Math.max( max[ 1 ], array[ i + 1 ] );\n\t\tmax[ 2 ] = Math.max( max[ 2 ], array[ i + 2 ] );\n\n\t}\n\n\tdecodeMat.scale( new Vector3(\n\t\t( max[ 0 ] - min[ 0 ] ) / segments,\n\t\t( max[ 1 ] - min[ 1 ] ) / segments,\n\t\t( max[ 2 ] - min[ 2 ] ) / segments\n\t) );\n\n\tdecodeMat.elements[ 12 ] = min[ 0 ];\n\tdecodeMat.elements[ 13 ] = min[ 1 ];\n\tdecodeMat.elements[ 14 ] = min[ 2 ];\n\n\tdecodeMat.transpose();\n\n\n\tconst multiplier = new Float32Array( [\n\t\tmax[ 0 ] !== min[ 0 ] ? segments / ( max[ 0 ] - min[ 0 ] ) : 0,\n\t\tmax[ 1 ] !== min[ 1 ] ? segments / ( max[ 1 ] - min[ 1 ] ) : 0,\n\t\tmax[ 2 ] !== min[ 2 ] ? segments / ( max[ 2 ] - min[ 2 ] ) : 0\n\t] );\n\n\tfor ( let i = 0; i < array.length; i += 3 ) {\n\n\t\tquantized[ i + 0 ] = Math.floor( ( array[ i + 0 ] - min[ 0 ] ) * multiplier[ 0 ] );\n\t\tquantized[ i + 1 ] = Math.floor( ( array[ i + 1 ] - min[ 1 ] ) * multiplier[ 1 ] );\n\t\tquantized[ i + 2 ] = Math.floor( ( array[ i + 2 ] - min[ 2 ] ) * multiplier[ 2 ] );\n\n\t}\n\n\treturn {\n\t\tquantized: quantized,\n\t\tdecodeMat: decodeMat\n\t};\n\n}\n\nfunction quantizedEncodeUV( array, bytes ) {\n\n\tlet quantized, segments;\n\n\tif ( bytes == 1 ) {\n\n\t\tquantized = new Uint8Array( array.length );\n\t\tsegments = 255;\n\n\t} else if ( bytes == 2 ) {\n\n\t\tquantized = new Uint16Array( array.length );\n\t\tsegments = 65535;\n\n\t} else {\n\n\t\tconsole.error( 'number of bytes error! ' );\n\n\t}\n\n\tconst decodeMat = new Matrix3();\n\n\tconst min = new Float32Array( 2 );\n\tconst max = new Float32Array( 2 );\n\n\tmin[ 0 ] = min[ 1 ] = Number.MAX_VALUE;\n\tmax[ 0 ] = max[ 1 ] = - Number.MAX_VALUE;\n\n\tfor ( let i = 0; i < array.length; i += 2 ) {\n\n\t\tmin[ 0 ] = Math.min( min[ 0 ], array[ i + 0 ] );\n\t\tmin[ 1 ] = Math.min( min[ 1 ], array[ i + 1 ] );\n\t\tmax[ 0 ] = Math.max( max[ 0 ], array[ i + 0 ] );\n\t\tmax[ 1 ] = Math.max( max[ 1 ], array[ i + 1 ] );\n\n\t}\n\n\tdecodeMat.scale(\n\t\t( max[ 0 ] - min[ 0 ] ) / segments,\n\t\t( max[ 1 ] - min[ 1 ] ) / segments\n\t);\n\n\tdecodeMat.elements[ 6 ] = min[ 0 ];\n\tdecodeMat.elements[ 7 ] = min[ 1 ];\n\n\tdecodeMat.transpose();\n\n\tconst multiplier = new Float32Array( [\n\t\tmax[ 0 ] !== min[ 0 ] ? segments / ( max[ 0 ] - min[ 0 ] ) : 0,\n\t\tmax[ 1 ] !== min[ 1 ] ? segments / ( max[ 1 ] - min[ 1 ] ) : 0\n\t] );\n\n\tfor ( let i = 0; i < array.length; i += 2 ) {\n\n\t\tquantized[ i + 0 ] = Math.floor( ( array[ i + 0 ] - min[ 0 ] ) * multiplier[ 0 ] );\n\t\tquantized[ i + 1 ] = Math.floor( ( array[ i + 1 ] - min[ 1 ] ) * multiplier[ 1 ] );\n\n\t}\n\n\treturn {\n\t\tquantized: quantized,\n\t\tdecodeMat: decodeMat\n\t};\n\n}\n\n\n\nexport {\n\tcompressNormals,\n\tcompressPositions,\n\tcompressUvs,\n};\n", "\n/**\n * `PackedPhongMaterial` inherited from THREE.MeshPhongMaterial\n *\n * @param {Object} parameters\n */\nimport {\n\tMeshPhongMaterial,\n\tShaderChunk,\n\tShaderLib,\n\tUniformsUtils,\n} from 'three';\n\nclass PackedPhongMaterial extends MeshPhongMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = {};\n\t\tthis.type = 'PackedPhongMaterial';\n\t\tthis.uniforms = UniformsUtils.merge( [\n\n\t\t\tShaderLib.phong.uniforms,\n\n\t\t\t{\n\t\t\t\tquantizeMatPos: { value: null },\n\t\t\t\tquantizeMatUV: { value: null }\n\t\t\t}\n\n\t\t] );\n\n\t\tthis.vertexShader = [\n\t\t\t'#define PHONG',\n\n\t\t\t'varying vec3 vViewPosition;',\n\n\t\t\tShaderChunk.common,\n\t\t\tShaderChunk.uv_pars_vertex,\n\t\t\tShaderChunk.displacementmap_pars_vertex,\n\t\t\tShaderChunk.envmap_pars_vertex,\n\t\t\tShaderChunk.color_pars_vertex,\n\t\t\tShaderChunk.fog_pars_vertex,\n\t\t\tShaderChunk.normal_pars_vertex,\n\t\t\tShaderChunk.morphtarget_pars_vertex,\n\t\t\tShaderChunk.skinning_pars_vertex,\n\t\t\tShaderChunk.shadowmap_pars_vertex,\n\t\t\tShaderChunk.logdepthbuf_pars_vertex,\n\t\t\tShaderChunk.clipping_planes_pars_vertex,\n\n\t\t\t`#ifdef USE_PACKED_NORMAL\n\t\t\t\t\t#if USE_PACKED_NORMAL == 0\n\t\t\t\t\t\tvec3 decodeNormal(vec3 packedNormal)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat x = packedNormal.x * 2.0 - 1.0;\n\t\t\t\t\t\t\tfloat y = packedNormal.y * 2.0 - 1.0;\n\t\t\t\t\t\t\tvec2 scth = vec2(sin(x * PI), cos(x * PI));\n\t\t\t\t\t\t\tvec2 scphi = vec2(sqrt(1.0 - y * y), y);\n\t\t\t\t\t\t\treturn normalize( vec3(scth.y * scphi.x, scth.x * scphi.x, scphi.y) );\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\t\t#if USE_PACKED_NORMAL == 1\n\t\t\t\t\t\tvec3 decodeNormal(vec3 packedNormal)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec3 v = vec3(packedNormal.xy, 1.0 - abs(packedNormal.x) - abs(packedNormal.y));\n\t\t\t\t\t\t\tif (v.z < 0.0)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tv.xy = (1.0 - abs(v.yx)) * vec2((v.x >= 0.0) ? +1.0 : -1.0, (v.y >= 0.0) ? +1.0 : -1.0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn normalize(v);\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\t\t#if USE_PACKED_NORMAL == 2\n\t\t\t\t\t\tvec3 decodeNormal(vec3 packedNormal)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec3 v = (packedNormal * 2.0) - 1.0;\n\t\t\t\t\t\t\treturn normalize(v);\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n\t\t\t`#ifdef USE_PACKED_POSITION\n\t\t\t\t\t#if USE_PACKED_POSITION == 0\n\t\t\t\t\t\tuniform mat4 quantizeMatPos;\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n\t\t\t`#ifdef USE_PACKED_UV\n\t\t\t\t\t#if USE_PACKED_UV == 1\n\t\t\t\t\t\tuniform mat3 quantizeMatUV;\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n\t\t\t`#ifdef USE_PACKED_UV\n\t\t\t\t\t#if USE_PACKED_UV == 0\n\t\t\t\t\t\tvec2 decodeUV(vec2 packedUV)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec2 uv = (packedUV * 2.0) - 1.0;\n\t\t\t\t\t\t\treturn uv;\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\t\t#if USE_PACKED_UV == 1\n\t\t\t\t\t\tvec2 decodeUV(vec2 packedUV)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec2 uv = ( vec3(packedUV, 1.0) * quantizeMatUV ).xy;\n\t\t\t\t\t\t\treturn uv;\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n\t\t\t'void main() {',\n\n\t\t\tShaderChunk.uv_vertex,\n\n\t\t\t`#ifdef USE_MAP\n\t\t\t\t\t#ifdef USE_PACKED_UV\n\t\t\t\t\t\tvMapUv = decodeUV(vMapUv);\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n\t\t\tShaderChunk.color_vertex,\n\t\t\tShaderChunk.morphcolor_vertex,\n\n\t\t\tShaderChunk.beginnormal_vertex,\n\n\t\t\t`#ifdef USE_PACKED_NORMAL\n\t\t\t\t\tobjectNormal = decodeNormal(objectNormal);\n\t\t\t\t#endif\n\n\t\t\t\t#ifdef USE_TANGENT\n\t\t\t\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t\t\t\t#endif\n\t\t\t\t`,\n\n\t\t\tShaderChunk.morphnormal_vertex,\n\t\t\tShaderChunk.skinbase_vertex,\n\t\t\tShaderChunk.skinnormal_vertex,\n\t\t\tShaderChunk.defaultnormal_vertex,\n\t\t\tShaderChunk.normal_vertex,\n\n\t\t\tShaderChunk.begin_vertex,\n\n\t\t\t`#ifdef USE_PACKED_POSITION\n\t\t\t\t\t#if USE_PACKED_POSITION == 0\n\t\t\t\t\t\ttransformed = ( vec4(transformed, 1.0) * quantizeMatPos ).xyz;\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n\t\t\tShaderChunk.morphtarget_vertex,\n\t\t\tShaderChunk.skinning_vertex,\n\t\t\tShaderChunk.displacementmap_vertex,\n\t\t\tShaderChunk.project_vertex,\n\t\t\tShaderChunk.logdepthbuf_vertex,\n\t\t\tShaderChunk.clipping_planes_vertex,\n\n\t\t\t'vViewPosition = - mvPosition.xyz;',\n\n\t\t\tShaderChunk.worldpos_vertex,\n\t\t\tShaderChunk.envmap_vertex,\n\t\t\tShaderChunk.shadowmap_vertex,\n\t\t\tShaderChunk.fog_vertex,\n\n\t\t\t'}',\n\t\t].join( '\\n' );\n\n\t\t// Use the original MeshPhongMaterial's fragmentShader.\n\t\tthis.fragmentShader = ShaderLib.phong.fragmentShader;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nexport { PackedPhongMaterial };\n", "import { Vector3 } from 'three';\n\n\n/**\n * Generates 2D-Coordinates in a very fast way.\n *\n * Based on work by:\n * @link http://www.openprocessing.org/sketch/15493\n *\n * @param center Center of Hilbert curve.\n * @param size Total width of Hilbert curve.\n * @param iterations Number of subdivisions.\n * @param v0 Corner index -X, -Z.\n * @param v1 Corner index -X, +Z.\n * @param v2 Corner index +X, +Z.\n * @param v3 Corner index +X, -Z.\n */\nfunction hilbert2D( center = new Vector3( 0, 0, 0 ), size = 10, iterations = 1, v0 = 0, v1 = 1, v2 = 2, v3 = 3 ) {\n\n\tconst half = size / 2;\n\n\tconst vec_s = [\n\t\tnew Vector3( center.x - half, center.y, center.z - half ),\n\t\tnew Vector3( center.x - half, center.y, center.z + half ),\n\t\tnew Vector3( center.x + half, center.y, center.z + half ),\n\t\tnew Vector3( center.x + half, center.y, center.z - half )\n\t];\n\n\tconst vec = [\n\t\tvec_s[ v0 ],\n\t\tvec_s[ v1 ],\n\t\tvec_s[ v2 ],\n\t\tvec_s[ v3 ]\n\t];\n\n\t// Recurse iterations\n\tif ( 0 <= -- iterations ) {\n\n\t\treturn [\n\t\t\t...hilbert2D( vec[ 0 ], half, iterations, v0, v3, v2, v1 ),\n\t\t\t...hilbert2D( vec[ 1 ], half, iterations, v0, v1, v2, v3 ),\n\t\t\t...hilbert2D( vec[ 2 ], half, iterations, v0, v1, v2, v3 ),\n\t\t\t...hilbert2D( vec[ 3 ], half, iterations, v2, v1, v0, v3 )\n\t\t];\n\n\t}\n\n\t// Return complete Hilbert Curve.\n\treturn vec;\n\n}\n\n/**\n * Generates 3D-Coordinates in a very fast way.\n *\n * Based on work by:\n * @link https://openprocessing.org/user/5654\n *\n * @param center Center of Hilbert curve.\n * @param size Total width of Hilbert curve.\n * @param iterations Number of subdivisions.\n * @param v0 Corner index -X, +Y, -Z.\n * @param v1 Corner index -X, +Y, +Z.\n * @param v2 Corner index -X, -Y, +Z.\n * @param v3 Corner index -X, -Y, -Z.\n * @param v4 Corner index +X, -Y, -Z.\n * @param v5 Corner index +X, -Y, +Z.\n * @param v6 Corner index +X, +Y, +Z.\n * @param v7 Corner index +X, +Y, -Z.\n */\nfunction hilbert3D( center = new Vector3( 0, 0, 0 ), size = 10, iterations = 1, v0 = 0, v1 = 1, v2 = 2, v3 = 3, v4 = 4, v5 = 5, v6 = 6, v7 = 7 ) {\n\n\t// Default Vars\n\tconst half = size / 2;\n\n\tconst vec_s = [\n\t\tnew Vector3( center.x - half, center.y + half, center.z - half ),\n\t\tnew Vector3( center.x - half, center.y + half, center.z + half ),\n\t\tnew Vector3( center.x - half, center.y - half, center.z + half ),\n\t\tnew Vector3( center.x - half, center.y - half, center.z - half ),\n\t\tnew Vector3( center.x + half, center.y - half, center.z - half ),\n\t\tnew Vector3( center.x + half, center.y - half, center.z + half ),\n\t\tnew Vector3( center.x + half, center.y + half, center.z + half ),\n\t\tnew Vector3( center.x + half, center.y + half, center.z - half )\n\t];\n\n\tconst vec = [\n\t\tvec_s[ v0 ],\n\t\tvec_s[ v1 ],\n\t\tvec_s[ v2 ],\n\t\tvec_s[ v3 ],\n\t\tvec_s[ v4 ],\n\t\tvec_s[ v5 ],\n\t\tvec_s[ v6 ],\n\t\tvec_s[ v7 ]\n\t];\n\n\t// Recurse iterations\n\tif ( -- iterations >= 0 ) {\n\n\t\treturn [\n\t\t\t...hilbert3D( vec[ 0 ], half, iterations, v0, v3, v4, v7, v6, v5, v2, v1 ),\n\t\t\t...hilbert3D( vec[ 1 ], half, iterations, v0, v7, v6, v1, v2, v5, v4, v3 ),\n\t\t\t...hilbert3D( vec[ 2 ], half, iterations, v0, v7, v6, v1, v2, v5, v4, v3 ),\n\t\t\t...hilbert3D( vec[ 3 ], half, iterations, v2, v3, v0, v1, v6, v7, v4, v5 ),\n\t\t\t...hilbert3D( vec[ 4 ], half, iterations, v2, v3, v0, v1, v6, v7, v4, v5 ),\n\t\t\t...hilbert3D( vec[ 5 ], half, iterations, v4, v3, v2, v5, v6, v1, v0, v7 ),\n\t\t\t...hilbert3D( vec[ 6 ], half, iterations, v4, v3, v2, v5, v6, v1, v0, v7 ),\n\t\t\t...hilbert3D( vec[ 7 ], half, iterations, v6, v5, v2, v1, v0, v3, v4, v7 )\n\t\t];\n\n\t}\n\n\t// Return complete Hilbert Curve.\n\treturn vec;\n\n}\n\n/**\n * Generates a Gosper curve (lying in the XY plane)\n *\n * https://gist.github.com/nitaku/6521802\n *\n * @param size The size of a single gosper island.\n */\nfunction gosper( size = 1 ) {\n\n\tfunction fractalize( config ) {\n\n\t\tlet output;\n\t\tlet input = config.axiom;\n\n\t\tfor ( let i = 0, il = config.steps; 0 <= il ? i < il : i > il; 0 <= il ? i ++ : i -- ) {\n\n\t\t\toutput = '';\n\n\t\t\tfor ( let j = 0, jl = input.length; j < jl; j ++ ) {\n\n\t\t\t\tconst char = input[ j ];\n\n\t\t\t\tif ( char in config.rules ) {\n\n\t\t\t\t\toutput += config.rules[ char ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\toutput += char;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tinput = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tfunction toPoints( config ) {\n\n\t\tlet currX = 0, currY = 0;\n\t\tlet angle = 0;\n\t\tconst path = [ 0, 0, 0 ];\n\t\tconst fractal = config.fractal;\n\n\t\tfor ( let i = 0, l = fractal.length; i < l; i ++ ) {\n\n\t\t\tconst char = fractal[ i ];\n\n\t\t\tif ( char === '+' ) {\n\n\t\t\t\tangle += config.angle;\n\n\t\t\t} else if ( char === '-' ) {\n\n\t\t\t\tangle -= config.angle;\n\n\t\t\t} else if ( char === 'F' ) {\n\n\t\t\t\tcurrX += config.size * Math.cos( angle );\n\t\t\t\tcurrY += - config.size * Math.sin( angle );\n\t\t\t\tpath.push( currX, currY, 0 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn path;\n\n\t}\n\n\t//\n\n\tconst gosper = fractalize( {\n\t\taxiom: 'A',\n\t\tsteps: 4,\n\t\trules: {\n\t\t\tA: 'A+BF++BF-FA--FAFA-BF+',\n\t\t\tB: '-FA+BFBF++BF+FA--FA-B'\n\t\t}\n\t} );\n\n\tconst points = toPoints( {\n\t\tfractal: gosper,\n\t\tsize: size,\n\t\tangle: Math.PI / 3 // 60 degrees\n\t} );\n\n\treturn points;\n\n}\n\n\n\nexport {\n\thilbert2D,\n\thilbert3D,\n\tgosper,\n};\n", "import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tGroup,\n\tLineSegments,\n\tMatrix3,\n\tMesh\n} from 'three';\n\nimport { mergeGeometries } from './BufferGeometryUtils.js';\n\nclass LDrawUtils {\n\n\tstatic mergeObject( object ) {\n\n\t\t// Merges geometries in object by materials and returns new object. Use on not indexed geometries.\n\t\t// The object buffers reference the old object ones.\n\t\t// Special treatment is done to the conditional lines generated by LDrawLoader.\n\n\t\tfunction extractGroup( geometry, group, elementSize, isConditionalLine ) {\n\n\t\t\t// Extracts a group from a geometry as a new geometry (with attribute buffers referencing original buffers)\n\n\t\t\tconst newGeometry = new BufferGeometry();\n\n\t\t\tconst originalPositions = geometry.getAttribute( 'position' ).array;\n\t\t\tconst originalNormals = elementSize === 3 ? geometry.getAttribute( 'normal' ).array : null;\n\n\t\t\tconst numVertsGroup = Math.min( group.count, Math.floor( originalPositions.length / 3 ) - group.start );\n\t\t\tconst vertStart = group.start * 3;\n\t\t\tconst vertEnd = ( group.start + numVertsGroup ) * 3;\n\n\t\t\tconst positions = originalPositions.subarray( vertStart, vertEnd );\n\t\t\tconst normals = originalNormals !== null ? originalNormals.subarray( vertStart, vertEnd ) : null;\n\n\t\t\tnewGeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\t\t\tif ( normals !== null ) newGeometry.setAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\n\t\t\tif ( isConditionalLine ) {\n\n\t\t\t\tconst controlArray0 = geometry.getAttribute( 'control0' ).array.subarray( vertStart, vertEnd );\n\t\t\t\tconst controlArray1 = geometry.getAttribute( 'control1' ).array.subarray( vertStart, vertEnd );\n\t\t\t\tconst directionArray = geometry.getAttribute( 'direction' ).array.subarray( vertStart, vertEnd );\n\n\t\t\t\tnewGeometry.setAttribute( 'control0', new BufferAttribute( controlArray0, 3, false ) );\n\t\t\t\tnewGeometry.setAttribute( 'control1', new BufferAttribute( controlArray1, 3, false ) );\n\t\t\t\tnewGeometry.setAttribute( 'direction', new BufferAttribute( directionArray, 3, false ) );\n\n\t\t\t}\n\n\t\t\treturn newGeometry;\n\n\t\t}\n\n\t\tfunction addGeometry( mat, geometry, geometries ) {\n\n\t\t\tconst geoms = geometries[ mat.uuid ];\n\t\t\tif ( ! geoms ) {\n\n\t\t\t\tgeometries[ mat.uuid ] = {\n\t\t\t\t\tmat: mat,\n\t\t\t\t\tarr: [ geometry ]\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tgeoms.arr.push( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction permuteAttribute( attribute, elemSize ) {\n\n\t\t\t// Permutes first two vertices of each attribute element\n\n\t\t\tif ( ! attribute ) return;\n\n\t\t\tconst verts = attribute.array;\n\t\t\tconst numVerts = Math.floor( verts.length / 3 );\n\t\t\tlet offset = 0;\n\t\t\tfor ( let i = 0; i < numVerts; i ++ ) {\n\n\t\t\t\tconst x = verts[ offset ];\n\t\t\t\tconst y = verts[ offset + 1 ];\n\t\t\t\tconst z = verts[ offset + 2 ];\n\n\t\t\t\tverts[ offset ] = verts[ offset + 3 ];\n\t\t\t\tverts[ offset + 1 ] = verts[ offset + 4 ];\n\t\t\t\tverts[ offset + 2 ] = verts[ offset + 5 ];\n\n\t\t\t\tverts[ offset + 3 ] = x;\n\t\t\t\tverts[ offset + 4 ] = y;\n\t\t\t\tverts[ offset + 5 ] = z;\n\n\t\t\t\toffset += elemSize * 3;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Traverse the object hierarchy collecting geometries and transforming them to world space\n\n\t\tconst meshGeometries = {};\n\t\tconst linesGeometries = {};\n\t\tconst condLinesGeometries = {};\n\n\t\tobject.updateMatrixWorld( true );\n\t\tconst normalMatrix = new Matrix3();\n\n\t\tobject.traverse( c => {\n\n\t\t\tif ( c.isMesh | c.isLineSegments ) {\n\n\t\t\t\tconst elemSize = c.isMesh ? 3 : 2;\n\n\t\t\t\tconst geometry = c.geometry.clone();\n\t\t\t\tconst matrixIsInverted = c.matrixWorld.determinant() < 0;\n\t\t\t\tif ( matrixIsInverted ) {\n\n\t\t\t\t\tpermuteAttribute( geometry.attributes.position, elemSize );\n\t\t\t\t\tpermuteAttribute( geometry.attributes.normal, elemSize );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.applyMatrix4( c.matrixWorld );\n\n\t\t\t\tif ( c.isConditionalLine ) {\n\n\t\t\t\t\tgeometry.attributes.control0.applyMatrix4( c.matrixWorld );\n\t\t\t\t\tgeometry.attributes.control1.applyMatrix4( c.matrixWorld );\n\t\t\t\t\tnormalMatrix.getNormalMatrix( c.matrixWorld );\n\t\t\t\t\tgeometry.attributes.direction.applyNormalMatrix( normalMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tconst geometries = c.isMesh ? meshGeometries : ( c.isConditionalLine ? condLinesGeometries : linesGeometries );\n\n\t\t\t\tif ( Array.isArray( c.material ) ) {\n\n\t\t\t\t\tfor ( const groupIndex in geometry.groups ) {\n\n\t\t\t\t\t\tconst group = geometry.groups[ groupIndex ];\n\t\t\t\t\t\tconst mat = c.material[ group.materialIndex ];\n\t\t\t\t\t\tconst newGeometry = extractGroup( geometry, group, elemSize, c.isConditionalLine );\n\t\t\t\t\t\taddGeometry( mat, newGeometry, geometries );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\taddGeometry( c.material, geometry, geometries );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\t// Create object with merged geometries\n\n\t\tconst mergedObject = new Group();\n\n\t\tconst meshMaterialsIds = Object.keys( meshGeometries );\n\t\tfor ( const meshMaterialsId of meshMaterialsIds ) {\n\n\t\t\tconst meshGeometry = meshGeometries[ meshMaterialsId ];\n\t\t\tconst mergedGeometry = mergeGeometries( meshGeometry.arr );\n\t\t\tmergedObject.add( new Mesh( mergedGeometry, meshGeometry.mat ) );\n\n\t\t}\n\n\t\tconst linesMaterialsIds = Object.keys( linesGeometries );\n\t\tfor ( const linesMaterialsId of linesMaterialsIds ) {\n\n\t\t\tconst lineGeometry = linesGeometries[ linesMaterialsId ];\n\t\t\tconst mergedGeometry = mergeGeometries( lineGeometry.arr );\n\t\t\tmergedObject.add( new LineSegments( mergedGeometry, lineGeometry.mat ) );\n\n\t\t}\n\n\t\tconst condLinesMaterialsIds = Object.keys( condLinesGeometries );\n\t\tfor ( const condLinesMaterialsId of condLinesMaterialsIds ) {\n\n\t\t\tconst condLineGeometry = condLinesGeometries[ condLinesMaterialsId ];\n\t\t\tconst mergedGeometry = mergeGeometries( condLineGeometry.arr );\n\t\t\tconst condLines = new LineSegments( mergedGeometry, condLineGeometry.mat );\n\t\t\tcondLines.isConditionalLine = true;\n\t\t\tmergedObject.add( condLines );\n\n\t\t}\n\n\t\tmergedObject.userData.constructionStep = 0;\n\t\tmergedObject.userData.numConstructionSteps = 1;\n\n\t\treturn mergedObject;\n\n\t}\n\n}\n\nexport { LDrawUtils };\n", "import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tColor,\n\tGroup,\n\tMatrix4,\n\tMesh,\n\tVector3\n} from 'three';\n\nimport { mergeGroups, deepCloneAttribute } from './BufferGeometryUtils.js';\n\nconst _color = /*@__PURE__*/new Color();\nconst _matrix = /*@__PURE__*/new Matrix4();\n\nfunction createMeshesFromInstancedMesh( instancedMesh ) {\n\n\tconst group = new Group();\n\n\tconst count = instancedMesh.count;\n\tconst geometry = instancedMesh.geometry;\n\tconst material = instancedMesh.material;\n\n\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tinstancedMesh.getMatrixAt( i, mesh.matrix );\n\t\tmesh.matrix.decompose( mesh.position, mesh.quaternion, mesh.scale );\n\n\t\tgroup.add( mesh );\n\n\t}\n\n\tgroup.copy( instancedMesh );\n\tgroup.updateMatrixWorld(); // ensure correct world matrices of meshes\n\n\treturn group;\n\n}\n\nfunction createMeshesFromMultiMaterialMesh( mesh ) {\n\n\tif ( Array.isArray( mesh.material ) === false ) {\n\n\t\tconsole.warn( 'THREE.SceneUtils.createMeshesFromMultiMaterialMesh(): The given mesh has no multiple materials.' );\n\t\treturn mesh;\n\n\t}\n\n\tconst object = new Group();\n\tobject.copy( mesh );\n\n\t// merge groups (which automatically sorts them)\n\n\tconst geometry = mergeGroups( mesh.geometry );\n\n\tconst index = geometry.index;\n\tconst groups = geometry.groups;\n\tconst attributeNames = Object.keys( geometry.attributes );\n\n\t// create a mesh for each group by extracting the buffer data into a new geometry\n\n\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tconst start = group.start;\n\t\tconst end = start + group.count;\n\n\t\tconst newGeometry = new BufferGeometry();\n\t\tconst newMaterial = mesh.material[ group.materialIndex ];\n\n\t\t// process all buffer attributes\n\n\t\tfor ( let j = 0; j < attributeNames.length; j ++ ) {\n\n\t\t\tconst name = attributeNames[ j ];\n\t\t\tconst attribute = geometry.attributes[ name ];\n\t\t\tconst itemSize = attribute.itemSize;\n\n\t\t\tconst newLength = group.count * itemSize;\n\t\t\tconst type = attribute.array.constructor;\n\n\t\t\tconst newArray = new type( newLength );\n\t\t\tconst newAttribute = new BufferAttribute( newArray, itemSize );\n\n\t\t\tfor ( let k = start, n = 0; k < end; k ++, n ++ ) {\n\n\t\t\t\tconst ind = index.getX( k );\n\n\t\t\t\tif ( itemSize >= 1 ) newAttribute.setX( n, attribute.getX( ind ) );\n\t\t\t\tif ( itemSize >= 2 ) newAttribute.setY( n, attribute.getY( ind ) );\n\t\t\t\tif ( itemSize >= 3 ) newAttribute.setZ( n, attribute.getZ( ind ) );\n\t\t\t\tif ( itemSize >= 4 ) newAttribute.setW( n, attribute.getW( ind ) );\n\n\t\t\t}\n\n\n\t\t\tnewGeometry.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\tconst newMesh = new Mesh( newGeometry, newMaterial );\n\t\tobject.add( newMesh );\n\n\t}\n\n\treturn object;\n\n}\n\nfunction createMultiMaterialObject( geometry, materials ) {\n\n\tconst group = new Group();\n\n\tfor ( let i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\tgroup.add( new Mesh( geometry, materials[ i ] ) );\n\n\t}\n\n\treturn group;\n\n}\n\nfunction reduceVertices( object, func, initialValue ) {\n\n\tlet value = initialValue;\n\tconst vertex = new Vector3();\n\n\tobject.updateWorldMatrix( true, true );\n\n\tobject.traverseVisible( ( child ) => {\n\n\t\tconst { geometry } = child;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tconst { position } = geometry.attributes;\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tfor ( let i = 0, l = position.count; i < l; i ++ ) {\n\n\t\t\t\t\tif ( child.isMesh ) {\n\n\t\t\t\t\t\tchild.getVertexPosition( i, vertex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvertex.fromBufferAttribute( position, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! child.isSkinnedMesh ) {\n\n\t\t\t\t\t\tvertex.applyMatrix4( child.matrixWorld );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = func( value, vertex );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\treturn value;\n\n}\n\n/**\n * @param {InstancedMesh}\n * @param {function(int, int):int}\n */\nfunction sortInstancedMesh( mesh, compareFn ) {\n\n\t// store copy of instanced attributes for lookups\n\n\tconst instanceMatrixRef = deepCloneAttribute( mesh.instanceMatrix );\n\tconst instanceColorRef = mesh.instanceColor ? deepCloneAttribute( mesh.instanceColor ) : null;\n\n\tconst attributeRefs = new Map();\n\n\tfor ( const name in mesh.geometry.attributes ) {\n\n\t\tconst attribute = mesh.geometry.attributes[ name ];\n\n\t\tif ( attribute.isInstancedBufferAttribute ) {\n\n\t\t\tattributeRefs.set( attribute, deepCloneAttribute( attribute ) );\n\n\t\t}\n\n\t}\n\n\n\t// compute sort order\n\n\tconst tokens = [];\n\n\tfor ( let i = 0; i < mesh.count; i ++ ) tokens.push( i );\n\n\ttokens.sort( compareFn );\n\n\n\t// apply sort order\n\n\tfor ( let i = 0; i < tokens.length; i ++ ) {\n\n\t\tconst refIndex = tokens[ i ];\n\n\t\t_matrix.fromArray( instanceMatrixRef.array, refIndex * mesh.instanceMatrix.itemSize );\n\t\t_matrix.toArray( mesh.instanceMatrix.array, i * mesh.instanceMatrix.itemSize );\n\n\t\tif ( mesh.instanceColor ) {\n\n\t\t\t_color.fromArray( instanceColorRef.array, refIndex * mesh.instanceColor.itemSize );\n\t\t\t_color.toArray( mesh.instanceColor.array, i * mesh.instanceColor.itemSize );\n\n\t\t}\n\n\t\tfor ( const name in mesh.geometry.attributes ) {\n\n\t\t\tconst attribute = mesh.geometry.attributes[ name ];\n\n\t\t\tif ( attribute.isInstancedBufferAttribute ) {\n\n\t\t\t\tconst attributeRef = attributeRefs.get( attribute );\n\n\t\t\t\tattribute.setX( i, attributeRef.getX( refIndex ) );\n\t\t\t\tif ( attribute.itemSize > 1 ) attribute.setY( i, attributeRef.getY( refIndex ) );\n\t\t\t\tif ( attribute.itemSize > 2 ) attribute.setZ( i, attributeRef.getZ( refIndex ) );\n\t\t\t\tif ( attribute.itemSize > 3 ) attribute.setW( i, attributeRef.getW( refIndex ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @param {Object3D} object Object to traverse.\n * @yields {Object3D} Objects that passed the filter condition.\n */\nfunction* traverseGenerator( object ) {\n\n\tyield object;\n\n\tconst children = object.children;\n\n\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\tyield* traverseGenerator( children[ i ] );\n\n\t}\n\n}\n\n/**\n * @param {Object3D} object Object to traverse.\n * @yields {Object3D} Objects that passed the filter condition.\n */\nfunction* traverseVisibleGenerator( object ) {\n\n\tif ( object.visible === false ) return;\n\n\tyield object;\n\n\tconst children = object.children;\n\n\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\tyield* traverseVisibleGenerator( children[ i ] );\n\n\t}\n\n}\n\n/**\n * @param {Object3D} object Object to traverse.\n * @yields {Object3D} Objects that passed the filter condition.\n */\nfunction* traverseAncestorsGenerator( object ) {\n\n\tconst parent = object.parent;\n\n\tif ( parent !== null ) {\n\n\t\tyield parent;\n\n\t\tyield* traverseAncestorsGenerator( parent );\n\n\t}\n\n}\n\nexport {\n\tcreateMeshesFromInstancedMesh,\n\tcreateMeshesFromMultiMaterialMesh,\n\tcreateMultiMaterialObject,\n\treduceVertices,\n\tsortInstancedMesh,\n\ttraverseGenerator,\n\ttraverseVisibleGenerator,\n\ttraverseAncestorsGenerator\n};\n", "import {\n\tDoubleSide,\n\tLinearFilter,\n\tMesh,\n\tMeshBasicMaterial,\n\tOrthographicCamera,\n\tPlaneGeometry,\n\tScene,\n\tShaderMaterial,\n\tTexture,\n\tUniformsUtils\n} from 'three';\nimport { UnpackDepthRGBAShader } from '../shaders/UnpackDepthRGBAShader.js';\n\n/**\n * This is a helper for visualising a given light's shadow map.\n * It works for shadow casting lights: DirectionalLight and SpotLight.\n * It renders out the shadow map and displays it on a HUD.\n *\n * Example usage:\n *\t1) Import ShadowMapViewer into your app.\n *\n *\t2) Create a shadow casting light and name it optionally:\n *\t\tlet light = new DirectionalLight( 0xffffff, 1 );\n *\t\tlight.castShadow = true;\n *\t\tlight.name = 'Sun';\n *\n *\t3) Create a shadow map viewer for that light and set its size and position optionally:\n *\t\tlet shadowMapViewer = new ShadowMapViewer( light );\n *\t\tshadowMapViewer.size.set( 128, 128 );\t//width, height default: 256, 256\n *\t\tshadowMapViewer.position.set( 10, 10 );\t//x, y in pixel\t default: 0, 0 (top left corner)\n *\n *\t4) Render the shadow map viewer in your render loop:\n *\t\tshadowMapViewer.render( renderer );\n *\n *\t5) Optionally: Update the shadow map viewer on window resize:\n *\t\tshadowMapViewer.updateForWindowResize();\n *\n *\t6) If you set the position or size members directly, you need to call shadowMapViewer.update();\n */\n\nclass ShadowMapViewer {\n\n\tconstructor( light ) {\n\n\t\t//- Internals\n\t\tconst scope = this;\n\t\tconst doRenderLabel = ( light.name !== undefined && light.name !== '' );\n\t\tlet userAutoClearSetting;\n\n\t\t//Holds the initial position and dimension of the HUD\n\t\tconst frame = {\n\t\t\tx: 10,\n\t\t\ty: 10,\n\t\t\twidth: 256,\n\t\t\theight: 256\n\t\t};\n\n\t\tconst camera = new OrthographicCamera( window.innerWidth / - 2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / - 2, 1, 10 );\n\t\tcamera.position.set( 0, 0, 2 );\n\t\tconst scene = new Scene();\n\n\t\t//HUD for shadow map\n\t\tconst shader = UnpackDepthRGBAShader;\n\n\t\tconst uniforms = UniformsUtils.clone( shader.uniforms );\n\t\tconst material = new ShaderMaterial( {\n\t\t\tuniforms: uniforms,\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader\n\t\t} );\n\t\tconst plane = new PlaneGeometry( frame.width, frame.height );\n\t\tconst mesh = new Mesh( plane, material );\n\n\t\tscene.add( mesh );\n\n\n\t\t//Label for light's name\n\t\tlet labelCanvas, labelMesh;\n\n\t\tif ( doRenderLabel ) {\n\n\t\t\tlabelCanvas = document.createElement( 'canvas' );\n\n\t\t\tconst context = labelCanvas.getContext( '2d' );\n\t\t\tcontext.font = 'Bold 20px Arial';\n\n\t\t\tconst labelWidth = context.measureText( light.name ).width;\n\t\t\tlabelCanvas.width = labelWidth;\n\t\t\tlabelCanvas.height = 25;\t//25 to account for g, p, etc.\n\n\t\t\tcontext.font = 'Bold 20px Arial';\n\t\t\tcontext.fillStyle = 'rgba( 255, 0, 0, 1 )';\n\t\t\tcontext.fillText( light.name, 0, 20 );\n\n\t\t\tconst labelTexture = new Texture( labelCanvas );\n\t\t\tlabelTexture.magFilter = LinearFilter;\n\t\t\tlabelTexture.minFilter = LinearFilter;\n\t\t\tlabelTexture.needsUpdate = true;\n\n\t\t\tconst labelMaterial = new MeshBasicMaterial( { map: labelTexture, side: DoubleSide } );\n\t\t\tlabelMaterial.transparent = true;\n\n\t\t\tconst labelPlane = new PlaneGeometry( labelCanvas.width, labelCanvas.height );\n\t\t\tlabelMesh = new Mesh( labelPlane, labelMaterial );\n\n\t\t\tscene.add( labelMesh );\n\n\t\t}\n\n\n\t\tfunction resetPosition() {\n\n\t\t\tscope.position.set( scope.position.x, scope.position.y );\n\n\t\t}\n\n\t\t//- API\n\t\t// Set to false to disable displaying this shadow map\n\t\tthis.enabled = true;\n\n\t\t// Set the size of the displayed shadow map on the HUD\n\t\tthis.size = {\n\t\t\twidth: frame.width,\n\t\t\theight: frame.height,\n\t\t\tset: function ( width, height ) {\n\n\t\t\t\tthis.width = width;\n\t\t\t\tthis.height = height;\n\n\t\t\t\tmesh.scale.set( this.width / frame.width, this.height / frame.height, 1 );\n\n\t\t\t\t//Reset the position as it is off when we scale stuff\n\t\t\t\tresetPosition();\n\n\t\t\t}\n\t\t};\n\n\t\t// Set the position of the displayed shadow map on the HUD\n\t\tthis.position = {\n\t\t\tx: frame.x,\n\t\t\ty: frame.y,\n\t\t\tset: function ( x, y ) {\n\n\t\t\t\tthis.x = x;\n\t\t\t\tthis.y = y;\n\n\t\t\t\tconst width = scope.size.width;\n\t\t\t\tconst height = scope.size.height;\n\n\t\t\t\tmesh.position.set( - window.innerWidth / 2 + width / 2 + this.x, window.innerHeight / 2 - height / 2 - this.y, 0 );\n\n\t\t\t\tif ( doRenderLabel ) labelMesh.position.set( mesh.position.x, mesh.position.y - scope.size.height / 2 + labelCanvas.height / 2, 0 );\n\n\t\t\t}\n\t\t};\n\n\t\tthis.render = function ( renderer ) {\n\n\t\t\tif ( this.enabled ) {\n\n\t\t\t\t//Because a light's .shadowMap is only initialised after the first render pass\n\t\t\t\t//we have to make sure the correct map is sent into the shader, otherwise we\n\t\t\t\t//always end up with the scene's first added shadow casting light's shadowMap\n\t\t\t\t//in the shader\n\t\t\t\t//See: https://github.com/mrdoob/three.js/issues/5932\n\t\t\t\tuniforms.tDiffuse.value = light.shadow.map.texture;\n\n\t\t\t\tuserAutoClearSetting = renderer.autoClear;\n\t\t\t\trenderer.autoClear = false; // To allow render overlay\n\t\t\t\trenderer.clearDepth();\n\t\t\t\trenderer.render( scene, camera );\n\t\t\t\trenderer.autoClear = userAutoClearSetting;\t//Restore user's setting\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.updateForWindowResize = function () {\n\n\t\t\tif ( this.enabled ) {\n\n\t\t\t\t camera.left = window.innerWidth / - 2;\n\t\t\t\t camera.right = window.innerWidth / 2;\n\t\t\t\t camera.top = window.innerHeight / 2;\n\t\t\t\t camera.bottom = window.innerHeight / - 2;\n\t\t\t\t camera.updateProjectionMatrix();\n\n\t\t\t\t this.update();\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.update = function () {\n\n\t\t\tthis.position.set( this.position.x, this.position.y );\n\t\t\tthis.size.set( this.size.width, this.size.height );\n\n\t\t};\n\n\t\t//Force an update to set position/size\n\t\tthis.update();\n\n\t}\n\n}\n\n\nexport { ShadowMapViewer };\n", "import {\n\tAnimationClip,\n\tAnimationMixer,\n\tMatrix4,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tSkeletonHelper,\n\tVector3,\n\tVectorKeyframeTrack\n} from 'three';\n\n\nfunction retarget( target, source, options = {} ) {\n\n\tconst pos = new Vector3(),\n\t\tquat = new Quaternion(),\n\t\tscale = new Vector3(),\n\t\tbindBoneMatrix = new Matrix4(),\n\t\trelativeMatrix = new Matrix4(),\n\t\tglobalMatrix = new Matrix4();\n\n\toptions.preserveMatrix = options.preserveMatrix !== undefined ? options.preserveMatrix : true;\n\toptions.preservePosition = options.preservePosition !== undefined ? options.preservePosition : true;\n\toptions.preserveHipPosition = options.preserveHipPosition !== undefined ? options.preserveHipPosition : false;\n\toptions.useTargetMatrix = options.useTargetMatrix !== undefined ? options.useTargetMatrix : false;\n\toptions.hip = options.hip !== undefined ? options.hip : 'hip';\n\toptions.names = options.names || {};\n\n\tconst sourceBones = source.isObject3D ? source.skeleton.bones : getBones( source ),\n\t\tbones = target.isObject3D ? target.skeleton.bones : getBones( target );\n\n\tlet bindBones,\n\t\tbone, name, boneTo,\n\t\tbonesPosition;\n\n\t// reset bones\n\n\tif ( target.isObject3D ) {\n\n\t\ttarget.skeleton.pose();\n\n\t} else {\n\n\t\toptions.useTargetMatrix = true;\n\t\toptions.preserveMatrix = false;\n\n\t}\n\n\tif ( options.preservePosition ) {\n\n\t\tbonesPosition = [];\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tbonesPosition.push( bones[ i ].position.clone() );\n\n\t\t}\n\n\t}\n\n\tif ( options.preserveMatrix ) {\n\n\t\t// reset matrix\n\n\t\ttarget.updateMatrixWorld();\n\n\t\ttarget.matrixWorld.identity();\n\n\t\t// reset children matrix\n\n\t\tfor ( let i = 0; i < target.children.length; ++ i ) {\n\n\t\t\ttarget.children[ i ].updateMatrixWorld( true );\n\n\t\t}\n\n\t}\n\n\tif ( options.offsets ) {\n\n\t\tbindBones = [];\n\n\t\tfor ( let i = 0; i < bones.length; ++ i ) {\n\n\t\t\tbone = bones[ i ];\n\t\t\tname = options.names[ bone.name ] || bone.name;\n\n\t\t\tif ( options.offsets[ name ] ) {\n\n\t\t\t\tbone.matrix.multiply( options.offsets[ name ] );\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t\tbone.updateMatrixWorld();\n\n\t\t\t}\n\n\t\t\tbindBones.push( bone.matrixWorld.clone() );\n\n\t\t}\n\n\t}\n\n\tfor ( let i = 0; i < bones.length; ++ i ) {\n\n\t\tbone = bones[ i ];\n\t\tname = options.names[ bone.name ] || bone.name;\n\n\t\tboneTo = getBoneByName( name, sourceBones );\n\n\t\tglobalMatrix.copy( bone.matrixWorld );\n\n\t\tif ( boneTo ) {\n\n\t\t\tboneTo.updateMatrixWorld();\n\n\t\t\tif ( options.useTargetMatrix ) {\n\n\t\t\t\trelativeMatrix.copy( boneTo.matrixWorld );\n\n\t\t\t} else {\n\n\t\t\t\trelativeMatrix.copy( target.matrixWorld ).invert();\n\t\t\t\trelativeMatrix.multiply( boneTo.matrixWorld );\n\n\t\t\t}\n\n\t\t\t// ignore scale to extract rotation\n\n\t\t\tscale.setFromMatrixScale( relativeMatrix );\n\t\t\trelativeMatrix.scale( scale.set( 1 / scale.x, 1 / scale.y, 1 / scale.z ) );\n\n\t\t\t// apply to global matrix\n\n\t\t\tglobalMatrix.makeRotationFromQuaternion( quat.setFromRotationMatrix( relativeMatrix ) );\n\n\t\t\tif ( target.isObject3D ) {\n\n\t\t\t\tconst boneIndex = bones.indexOf( bone ),\n\t\t\t\t\twBindMatrix = bindBones ? bindBones[ boneIndex ] : bindBoneMatrix.copy( target.skeleton.boneInverses[ boneIndex ] ).invert();\n\n\t\t\t\tglobalMatrix.multiply( wBindMatrix );\n\n\t\t\t}\n\n\t\t\tglobalMatrix.copyPosition( relativeMatrix );\n\n\t\t}\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\tbone.matrix.multiply( globalMatrix );\n\n\t\t} else {\n\n\t\t\tbone.matrix.copy( globalMatrix );\n\n\t\t}\n\n\t\tif ( options.preserveHipPosition && name === options.hip ) {\n\n\t\t\tbone.matrix.setPosition( pos.set( 0, bone.position.y, 0 ) );\n\n\t\t}\n\n\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\tbone.updateMatrixWorld();\n\n\t}\n\n\tif ( options.preservePosition ) {\n\n\t\tfor ( let i = 0; i < bones.length; ++ i ) {\n\n\t\t\tbone = bones[ i ];\n\t\t\tname = options.names[ bone.name ] || bone.name;\n\n\t\t\tif ( name !== options.hip ) {\n\n\t\t\t\tbone.position.copy( bonesPosition[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tif ( options.preserveMatrix ) {\n\n\t\t// restore matrix\n\n\t\ttarget.updateMatrixWorld( true );\n\n\t}\n\n}\n\nfunction retargetClip( target, source, clip, options = {} ) {\n\n\toptions.useFirstFramePosition = options.useFirstFramePosition !== undefined ? options.useFirstFramePosition : false;\n\t// Calculate the fps from the source clip based on the track with the most frames, unless fps is already provided.\n\toptions.fps = options.fps !== undefined ? options.fps : ( Math.max( ...clip.tracks.map( track => track.times.length ) ) / clip.duration );\n\toptions.names = options.names || [];\n\n\tif ( ! source.isObject3D ) {\n\n\t\tsource = getHelperFromSkeleton( source );\n\n\t}\n\n\tconst numFrames = Math.round( clip.duration * ( options.fps / 1000 ) * 1000 ),\n\t\tdelta = clip.duration / ( numFrames - 1 ),\n\t\tconvertedTracks = [],\n\t\tmixer = new AnimationMixer( source ),\n\t\tbones = getBones( target.skeleton ),\n\t\tboneDatas = [];\n\tlet positionOffset,\n\t\tbone, boneTo, boneData,\n\t\tname;\n\n\tmixer.clipAction( clip ).play();\n\tmixer.update( 0 );\n\n\tsource.updateMatrixWorld();\n\n\tfor ( let i = 0; i < numFrames; ++ i ) {\n\n\t\tconst time = i * delta;\n\n\t\tretarget( target, source, options );\n\n\t\tfor ( let j = 0; j < bones.length; ++ j ) {\n\n\t\t\tname = options.names[ bones[ j ].name ] || bones[ j ].name;\n\n\t\t\tboneTo = getBoneByName( name, source.skeleton );\n\n\t\t\tif ( boneTo ) {\n\n\t\t\t\tbone = bones[ j ];\n\t\t\t\tboneData = boneDatas[ j ] = boneDatas[ j ] || { bone: bone };\n\n\t\t\t\tif ( options.hip === name ) {\n\n\t\t\t\t\tif ( ! boneData.pos ) {\n\n\t\t\t\t\t\tboneData.pos = {\n\t\t\t\t\t\t\ttimes: new Float32Array( numFrames ),\n\t\t\t\t\t\t\tvalues: new Float32Array( numFrames * 3 )\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( options.useFirstFramePosition ) {\n\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\tpositionOffset = bone.position.clone();\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbone.position.sub( positionOffset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tboneData.pos.times[ i ] = time;\n\n\t\t\t\t\tbone.position.toArray( boneData.pos.values, i * 3 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! boneData.quat ) {\n\n\t\t\t\t\tboneData.quat = {\n\t\t\t\t\t\ttimes: new Float32Array( numFrames ),\n\t\t\t\t\t\tvalues: new Float32Array( numFrames * 4 )\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tboneData.quat.times[ i ] = time;\n\n\t\t\t\tbone.quaternion.toArray( boneData.quat.values, i * 4 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( i === numFrames - 2 ) {\n\n\t\t\t// last mixer update before final loop iteration\n\t\t\t// make sure we do not go over or equal to clip duration\n\t\t\tmixer.update( delta - 0.0000001 );\n\n\t\t} else {\n\n\t\t\tmixer.update( delta );\n\n\t\t}\n\n\t\tsource.updateMatrixWorld();\n\n\t}\n\n\tfor ( let i = 0; i < boneDatas.length; ++ i ) {\n\n\t\tboneData = boneDatas[ i ];\n\n\t\tif ( boneData ) {\n\n\t\t\tif ( boneData.pos ) {\n\n\t\t\t\tconvertedTracks.push( new VectorKeyframeTrack(\n\t\t\t\t\t'.bones[' + boneData.bone.name + '].position',\n\t\t\t\t\tboneData.pos.times,\n\t\t\t\t\tboneData.pos.values\n\t\t\t\t) );\n\n\t\t\t}\n\n\t\t\tconvertedTracks.push( new QuaternionKeyframeTrack(\n\t\t\t\t'.bones[' + boneData.bone.name + '].quaternion',\n\t\t\t\tboneData.quat.times,\n\t\t\t\tboneData.quat.values\n\t\t\t) );\n\n\t\t}\n\n\t}\n\n\tmixer.uncacheAction( clip );\n\n\treturn new AnimationClip( clip.name, - 1, convertedTracks );\n\n}\n\nfunction clone( source ) {\n\n\tconst sourceLookup = new Map();\n\tconst cloneLookup = new Map();\n\n\tconst clone = source.clone();\n\n\tparallelTraverse( source, clone, function ( sourceNode, clonedNode ) {\n\n\t\tsourceLookup.set( clonedNode, sourceNode );\n\t\tcloneLookup.set( sourceNode, clonedNode );\n\n\t} );\n\n\tclone.traverse( function ( node ) {\n\n\t\tif ( ! node.isSkinnedMesh ) return;\n\n\t\tconst clonedMesh = node;\n\t\tconst sourceMesh = sourceLookup.get( node );\n\t\tconst sourceBones = sourceMesh.skeleton.bones;\n\n\t\tclonedMesh.skeleton = sourceMesh.skeleton.clone();\n\t\tclonedMesh.bindMatrix.copy( sourceMesh.bindMatrix );\n\n\t\tclonedMesh.skeleton.bones = sourceBones.map( function ( bone ) {\n\n\t\t\treturn cloneLookup.get( bone );\n\n\t\t} );\n\n\t\tclonedMesh.bind( clonedMesh.skeleton, clonedMesh.bindMatrix );\n\n\t} );\n\n\treturn clone;\n\n}\n\n// internal helper\n\nfunction getBoneByName( name, skeleton ) {\n\n\tfor ( let i = 0, bones = getBones( skeleton ); i < bones.length; i ++ ) {\n\n\t\tif ( name === bones[ i ].name )\n\n\t\t\treturn bones[ i ];\n\n\t}\n\n}\n\nfunction getBones( skeleton ) {\n\n\treturn Array.isArray( skeleton ) ? skeleton : skeleton.bones;\n\n}\n\n\nfunction getHelperFromSkeleton( skeleton ) {\n\n\tconst source = new SkeletonHelper( skeleton.bones[ 0 ] );\n\tsource.skeleton = skeleton;\n\n\treturn source;\n\n}\n\nfunction parallelTraverse( a, b, callback ) {\n\n\tcallback( a, b );\n\n\tfor ( let i = 0; i < a.children.length; i ++ ) {\n\n\t\tparallelTraverse( a.children[ i ], b.children[ i ], callback );\n\n\t}\n\n}\n\nexport {\n\tretarget,\n\tretargetClip,\n\tclone,\n};\n", "// Hybrid radix sort from\n// - https://gist.github.com/sciecode/93ed864dd77c5c8803c6a86698d68dab\n// - https://github.com/mrdoob/three.js/pull/27202#issuecomment-1817640271\n//\n// expects unsigned 32b integer values\n\nconst POWER = 3;\nconst BIT_MAX = 32;\nconst BIN_BITS = 1 << POWER;\nconst BIN_SIZE = 1 << BIN_BITS;\nconst BIN_MAX = BIN_SIZE - 1;\nconst ITERATIONS = BIT_MAX / BIN_BITS;\n\nconst bins = new Array( ITERATIONS );\nconst bins_buffer = new ArrayBuffer( ( ITERATIONS + 1 ) * BIN_SIZE * 4 );\n\nlet c = 0;\nfor ( let i = 0; i < ( ITERATIONS + 1 ); i ++ ) {\n\n\tbins[ i ] = new Uint32Array( bins_buffer, c, BIN_SIZE );\n\tc += BIN_SIZE * 4;\n\n}\n\nconst defaultGet = ( el ) => el;\n\nexport const radixSort = ( arr, opt ) => {\n\n\tconst len = arr.length;\n\n\tconst options = opt || {};\n\tconst aux = options.aux || new arr.constructor( len );\n\tconst get = options.get || defaultGet;\n\n\tconst data = [ arr, aux ];\n\n\tlet compare, accumulate, recurse;\n\n\tif ( options.reversed ) {\n\n\t\tcompare = ( a, b ) => a < b;\n\t\taccumulate = ( bin ) => {\n\n\t\t\tfor ( let j = BIN_SIZE - 2; j >= 0; j -- )\n\t\t\t\tbin[ j ] += bin[ j + 1 ];\n\n\t\t};\n\n\t\trecurse = ( cache, depth, start ) => {\n\n\t\t\tlet prev = 0;\n\t\t\tfor ( let j = BIN_MAX; j >= 0; j -- ) {\n\n\t\t\t\tconst cur = cache[ j ], diff = cur - prev;\n\t\t\t\tif ( diff != 0 ) {\n\n\t\t\t\t\tif ( diff > 32 )\n\t\t\t\t\t\tradixSortBlock( depth + 1, start + prev, diff );\n\t\t\t\t\telse\n\t\t\t\t\t\tinsertionSortBlock( depth + 1, start + prev, diff );\n\t\t\t\t\tprev = cur;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t} else {\n\n\t\tcompare = ( a, b ) => a > b;\n\t\taccumulate = ( bin ) => {\n\n\t\t\tfor ( let j = 1; j < BIN_SIZE; j ++ )\n\t\t\t\tbin[ j ] += bin[ j - 1 ];\n\n\t\t};\n\n\t\trecurse = ( cache, depth, start ) => {\n\n\t\t\tlet prev = 0;\n\t\t\tfor ( let j = 0; j < BIN_SIZE; j ++ ) {\n\n\t\t\t\tconst cur = cache[ j ], diff = cur - prev;\n\t\t\t\tif ( diff != 0 ) {\n\n\t\t\t\t\tif ( diff > 32 )\n\t\t\t\t\t\tradixSortBlock( depth + 1, start + prev, diff );\n\t\t\t\t\telse\n\t\t\t\t\t\tinsertionSortBlock( depth + 1, start + prev, diff );\n\t\t\t\t\tprev = cur;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tconst insertionSortBlock = ( depth, start, len ) => {\n\n\t\tconst a = data[ depth & 1 ];\n\t\tconst b = data[ ( depth + 1 ) & 1 ];\n\n\t\tfor ( let j = start + 1; j < start + len; j ++ ) {\n\n\t\t\tconst p = a[ j ], t = get( p ) >>> 0;\n\t\t\tlet i = j;\n\t\t\twhile ( i > start ) {\n\n\t\t\t\tif ( compare( get( a[ i - 1 ] ) >>> 0, t ) )\n\t\t\t\t\ta[ i ] = a[ -- i ];\n\t\t\t\telse\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\ta[ i ] = p;\n\n\t\t}\n\n\t\tif ( ( depth & 1 ) == 1 ) {\n\n\t\t\tfor ( let i = start; i < start + len; i ++ )\n\t\t\t\tb[ i ] = a[ i ];\n\n\t\t}\n\n\t};\n\n\tconst radixSortBlock = ( depth, start, len ) => {\n\n\t\tconst a = data[ depth & 1 ];\n\t\tconst b = data[ ( depth + 1 ) & 1 ];\n\n\t\tconst shift = ( 3 - depth ) << POWER;\n\t\tconst end = start + len;\n\n\t\tconst cache = bins[ depth ];\n\t\tconst bin = bins[ depth + 1 ];\n\n\t\tbin.fill( 0 );\n\n\t\tfor ( let j = start; j < end; j ++ )\n\t\t\tbin[ ( get( a[ j ] ) >>> shift ) & BIN_MAX ] ++;\n\n\t\taccumulate( bin );\n\n\t\tcache.set( bin );\n\n\t\tfor ( let j = end - 1; j >= start; j -- )\n\t\t\tb[ start + -- bin[ ( get( a[ j ] ) >>> shift ) & BIN_MAX ] ] = a[ j ];\n\n\t\tif ( depth == ITERATIONS - 1 ) return;\n\n\t\trecurse( cache, depth, start );\n\n\t};\n\n\tradixSortBlock( 0, 0, len );\n\n};\n", "import {\n\tVector2\n} from 'three';\n\n/**\n * tool for \"unwrapping\" and debugging three.js geometries UV mapping\n *\n * Sample usage:\n *\tdocument.body.appendChild( UVsDebug( new THREE.SphereGeometry( 10, 10, 10, 10 ) );\n *\n */\n\nfunction UVsDebug( geometry, size = 1024 ) {\n\n\t// handles wrapping of uv.x > 1 only\n\n\tconst abc = 'abc';\n\tconst a = new Vector2();\n\tconst b = new Vector2();\n\n\tconst uvs = [\n\t\tnew Vector2(),\n\t\tnew Vector2(),\n\t\tnew Vector2()\n\t];\n\n\tconst face = [];\n\n\tconst canvas = document.createElement( 'canvas' );\n\tconst width = size; // power of 2 required for wrapping\n\tconst height = size;\n\tcanvas.width = width;\n\tcanvas.height = height;\n\n\tconst ctx = canvas.getContext( '2d' );\n\tctx.lineWidth = 1;\n\tctx.strokeStyle = 'rgb( 63, 63, 63 )';\n\tctx.textAlign = 'center';\n\n\t// paint background white\n\n\tctx.fillStyle = 'rgb( 255, 255, 255 )';\n\tctx.fillRect( 0, 0, width, height );\n\n\tconst index = geometry.index;\n\tconst uvAttribute = geometry.attributes.uv;\n\n\tif ( index ) {\n\n\t\t// indexed geometry\n\n\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\tface[ 0 ] = index.getX( i );\n\t\t\tface[ 1 ] = index.getX( i + 1 );\n\t\t\tface[ 2 ] = index.getX( i + 2 );\n\n\t\t\tuvs[ 0 ].fromBufferAttribute( uvAttribute, face[ 0 ] );\n\t\t\tuvs[ 1 ].fromBufferAttribute( uvAttribute, face[ 1 ] );\n\t\t\tuvs[ 2 ].fromBufferAttribute( uvAttribute, face[ 2 ] );\n\n\t\t\tprocessFace( face, uvs, i / 3 );\n\n\t\t}\n\n\t} else {\n\n\t\t// non-indexed geometry\n\n\t\tfor ( let i = 0, il = uvAttribute.count; i < il; i += 3 ) {\n\n\t\t\tface[ 0 ] = i;\n\t\t\tface[ 1 ] = i + 1;\n\t\t\tface[ 2 ] = i + 2;\n\n\t\t\tuvs[ 0 ].fromBufferAttribute( uvAttribute, face[ 0 ] );\n\t\t\tuvs[ 1 ].fromBufferAttribute( uvAttribute, face[ 1 ] );\n\t\t\tuvs[ 2 ].fromBufferAttribute( uvAttribute, face[ 2 ] );\n\n\t\t\tprocessFace( face, uvs, i / 3 );\n\n\t\t}\n\n\t}\n\n\treturn canvas;\n\n\tfunction processFace( face, uvs, index ) {\n\n\t\t// draw contour of face\n\n\t\tctx.beginPath();\n\n\t\ta.set( 0, 0 );\n\n\t\tfor ( let j = 0, jl = uvs.length; j < jl; j ++ ) {\n\n\t\t\tconst uv = uvs[ j ];\n\n\t\t\ta.x += uv.x;\n\t\t\ta.y += uv.y;\n\n\t\t\tif ( j === 0 ) {\n\n\t\t\t\tctx.moveTo( uv.x * ( width - 2 ) + 0.5, ( 1 - uv.y ) * ( height - 2 ) + 0.5 );\n\n\t\t\t} else {\n\n\t\t\t\tctx.lineTo( uv.x * ( width - 2 ) + 0.5, ( 1 - uv.y ) * ( height - 2 ) + 0.5 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tctx.closePath();\n\t\tctx.stroke();\n\n\t\t// calculate center of face\n\n\t\ta.divideScalar( uvs.length );\n\n\t\t// label the face number\n\n\t\tctx.font = '18px Arial';\n\t\tctx.fillStyle = 'rgb( 63, 63, 63 )';\n\t\tctx.fillText( index, a.x * width, ( 1 - a.y ) * height );\n\n\t\tif ( a.x > 0.95 ) {\n\n\t\t\t// wrap x // 0.95 is arbitrary\n\n\t\t\tctx.fillText( index, ( a.x % 1 ) * width, ( 1 - a.y ) * height );\n\n\t\t}\n\n\t\t//\n\n\t\tctx.font = '12px Arial';\n\t\tctx.fillStyle = 'rgb( 191, 191, 191 )';\n\n\t\t// label uv edge orders\n\n\t\tfor ( let j = 0, jl = uvs.length; j < jl; j ++ ) {\n\n\t\t\tconst uv = uvs[ j ];\n\t\t\tb.addVectors( a, uv ).divideScalar( 2 );\n\n\t\t\tconst vnum = face[ j ];\n\t\t\tctx.fillText( abc[ j ] + vnum, b.x * width, ( 1 - b.y ) * height );\n\n\t\t\tif ( b.x > 0.95 ) {\n\n\t\t\t\t// wrap x\n\n\t\t\t\tctx.fillText( abc[ j ] + vnum, ( b.x % 1 ) * width, ( 1 - b.y ) * height );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nexport { UVsDebug };\n", "class ARButton {\n\n\tstatic createButton( renderer, sessionInit = {} ) {\n\n\t\tconst button = document.createElement( 'button' );\n\n\t\tfunction showStartAR( /*device*/ ) {\n\n\t\t\tif ( sessionInit.domOverlay === undefined ) {\n\n\t\t\t\tconst overlay = document.createElement( 'div' );\n\t\t\t\toverlay.style.display = 'none';\n\t\t\t\tdocument.body.appendChild( overlay );\n\n\t\t\t\tconst svg = document.createElementNS( 'http://www.w3.org/2000/svg', 'svg' );\n\t\t\t\tsvg.setAttribute( 'width', 38 );\n\t\t\t\tsvg.setAttribute( 'height', 38 );\n\t\t\t\tsvg.style.position = 'absolute';\n\t\t\t\tsvg.style.right = '20px';\n\t\t\t\tsvg.style.top = '20px';\n\t\t\t\tsvg.addEventListener( 'click', function () {\n\n\t\t\t\t\tcurrentSession.end();\n\n\t\t\t\t} );\n\t\t\t\toverlay.appendChild( svg );\n\n\t\t\t\tconst path = document.createElementNS( 'http://www.w3.org/2000/svg', 'path' );\n\t\t\t\tpath.setAttribute( 'd', 'M 12,12 L 28,28 M 28,12 12,28' );\n\t\t\t\tpath.setAttribute( 'stroke', '#fff' );\n\t\t\t\tpath.setAttribute( 'stroke-width', 2 );\n\t\t\t\tsvg.appendChild( path );\n\n\t\t\t\tif ( sessionInit.optionalFeatures === undefined ) {\n\n\t\t\t\t\tsessionInit.optionalFeatures = [];\n\n\t\t\t\t}\n\n\t\t\t\tsessionInit.optionalFeatures.push( 'dom-overlay' );\n\t\t\t\tsessionInit.domOverlay = { root: overlay };\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet currentSession = null;\n\n\t\t\tasync function onSessionStarted( session ) {\n\n\t\t\t\tsession.addEventListener( 'end', onSessionEnded );\n\n\t\t\t\trenderer.xr.setReferenceSpaceType( 'local' );\n\n\t\t\t\tawait renderer.xr.setSession( session );\n\n\t\t\t\tbutton.textContent = 'STOP AR';\n\t\t\t\tsessionInit.domOverlay.root.style.display = '';\n\n\t\t\t\tcurrentSession = session;\n\n\t\t\t}\n\n\t\t\tfunction onSessionEnded( /*event*/ ) {\n\n\t\t\t\tcurrentSession.removeEventListener( 'end', onSessionEnded );\n\n\t\t\t\tbutton.textContent = 'START AR';\n\t\t\t\tsessionInit.domOverlay.root.style.display = 'none';\n\n\t\t\t\tcurrentSession = null;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tbutton.style.display = '';\n\n\t\t\tbutton.style.cursor = 'pointer';\n\t\t\tbutton.style.left = 'calc(50% - 50px)';\n\t\t\tbutton.style.width = '100px';\n\n\t\t\tbutton.textContent = 'START AR';\n\n\t\t\tbutton.onmouseenter = function () {\n\n\t\t\t\tbutton.style.opacity = '1.0';\n\n\t\t\t};\n\n\t\t\tbutton.onmouseleave = function () {\n\n\t\t\t\tbutton.style.opacity = '0.5';\n\n\t\t\t};\n\n\t\t\tbutton.onclick = function () {\n\n\t\t\t\tif ( currentSession === null ) {\n\n\t\t\t\t\tnavigator.xr.requestSession( 'immersive-ar', sessionInit ).then( onSessionStarted );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcurrentSession.end();\n\n\t\t\t\t\tif ( navigator.xr.offerSession !== undefined ) {\n\n\t\t\t\t\t\tnavigator.xr.offerSession( 'immersive-ar', sessionInit )\n\t\t\t\t\t\t\t.then( onSessionStarted )\n\t\t\t\t\t\t\t.catch( ( err ) => {\n\n\t\t\t\t\t\t\t\tconsole.warn( err );\n\n\t\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 ( navigator.xr.offerSession !== undefined ) {\n\n\t\t\t\tnavigator.xr.offerSession( 'immersive-ar', sessionInit )\n\t\t\t\t\t.then( onSessionStarted )\n\t\t\t\t\t.catch( ( err ) => {\n\n\t\t\t\t\t\tconsole.warn( err );\n\n\t\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction disableButton() {\n\n\t\t\tbutton.style.display = '';\n\n\t\t\tbutton.style.cursor = 'auto';\n\t\t\tbutton.style.left = 'calc(50% - 75px)';\n\t\t\tbutton.style.width = '150px';\n\n\t\t\tbutton.onmouseenter = null;\n\t\t\tbutton.onmouseleave = null;\n\n\t\t\tbutton.onclick = null;\n\n\t\t}\n\n\t\tfunction showARNotSupported() {\n\n\t\t\tdisableButton();\n\n\t\t\tbutton.textContent = 'AR NOT SUPPORTED';\n\n\t\t}\n\n\t\tfunction showARNotAllowed( exception ) {\n\n\t\t\tdisableButton();\n\n\t\t\tconsole.warn( 'Exception when trying to call xr.isSessionSupported', exception );\n\n\t\t\tbutton.textContent = 'AR NOT ALLOWED';\n\n\t\t}\n\n\t\tfunction stylizeElement( element ) {\n\n\t\t\telement.style.position = 'absolute';\n\t\t\telement.style.bottom = '20px';\n\t\t\telement.style.padding = '12px 6px';\n\t\t\telement.style.border = '1px solid #fff';\n\t\t\telement.style.borderRadius = '4px';\n\t\t\telement.style.background = 'rgba(0,0,0,0.1)';\n\t\t\telement.style.color = '#fff';\n\t\t\telement.style.font = 'normal 13px sans-serif';\n\t\t\telement.style.textAlign = 'center';\n\t\t\telement.style.opacity = '0.5';\n\t\t\telement.style.outline = 'none';\n\t\t\telement.style.zIndex = '999';\n\n\t\t}\n\n\t\tif ( 'xr' in navigator ) {\n\n\t\t\tbutton.id = 'ARButton';\n\t\t\tbutton.style.display = 'none';\n\n\t\t\tstylizeElement( button );\n\n\t\t\tnavigator.xr.isSessionSupported( 'immersive-ar' ).then( function ( supported ) {\n\n\t\t\t\tsupported ? showStartAR() : showARNotSupported();\n\n\t\t\t} ).catch( showARNotAllowed );\n\n\t\t\treturn button;\n\n\t\t} else {\n\n\t\t\tconst message = document.createElement( 'a' );\n\n\t\t\tif ( window.isSecureContext === false ) {\n\n\t\t\t\tmessage.href = document.location.href.replace( /^http:/, 'https:' );\n\t\t\t\tmessage.innerHTML = 'WEBXR NEEDS HTTPS'; // TODO Improve message\n\n\t\t\t} else {\n\n\t\t\t\tmessage.href = 'https://immersiveweb.dev/';\n\t\t\t\tmessage.innerHTML = 'WEBXR NOT AVAILABLE';\n\n\t\t\t}\n\n\t\t\tmessage.style.left = 'calc(50% - 90px)';\n\t\t\tmessage.style.width = '180px';\n\t\t\tmessage.style.textDecoration = 'none';\n\n\t\t\tstylizeElement( message );\n\n\t\t\treturn message;\n\n\t\t}\n\n\t}\n\n}\n\nexport { ARButton };\n", "import { GLTFLoader } from '../loaders/GLTFLoader.js';\n\nconst DEFAULT_HAND_PROFILE_PATH = 'https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/';\n\nclass XRHandMeshModel {\n\n\tconstructor( handModel, controller, path, handedness, loader = null, onLoad = null ) {\n\n\t\tthis.controller = controller;\n\t\tthis.handModel = handModel;\n\n\t\tthis.bones = [];\n\n\t\tif ( loader === null ) {\n\n\t\t\tloader = new GLTFLoader();\n\t\t\tloader.setPath( path || DEFAULT_HAND_PROFILE_PATH );\n\n\t\t}\n\n\t\tloader.load( `${handedness}.glb`, gltf => {\n\n\t\t\tconst object = gltf.scene.children[ 0 ];\n\t\t\tthis.handModel.add( object );\n\n\t\t\tconst mesh = object.getObjectByProperty( 'type', 'SkinnedMesh' );\n\t\t\tmesh.frustumCulled = false;\n\t\t\tmesh.castShadow = true;\n\t\t\tmesh.receiveShadow = true;\n\n\t\t\tconst joints = [\n\t\t\t\t'wrist',\n\t\t\t\t'thumb-metacarpal',\n\t\t\t\t'thumb-phalanx-proximal',\n\t\t\t\t'thumb-phalanx-distal',\n\t\t\t\t'thumb-tip',\n\t\t\t\t'index-finger-metacarpal',\n\t\t\t\t'index-finger-phalanx-proximal',\n\t\t\t\t'index-finger-phalanx-intermediate',\n\t\t\t\t'index-finger-phalanx-distal',\n\t\t\t\t'index-finger-tip',\n\t\t\t\t'middle-finger-metacarpal',\n\t\t\t\t'middle-finger-phalanx-proximal',\n\t\t\t\t'middle-finger-phalanx-intermediate',\n\t\t\t\t'middle-finger-phalanx-distal',\n\t\t\t\t'middle-finger-tip',\n\t\t\t\t'ring-finger-metacarpal',\n\t\t\t\t'ring-finger-phalanx-proximal',\n\t\t\t\t'ring-finger-phalanx-intermediate',\n\t\t\t\t'ring-finger-phalanx-distal',\n\t\t\t\t'ring-finger-tip',\n\t\t\t\t'pinky-finger-metacarpal',\n\t\t\t\t'pinky-finger-phalanx-proximal',\n\t\t\t\t'pinky-finger-phalanx-intermediate',\n\t\t\t\t'pinky-finger-phalanx-distal',\n\t\t\t\t'pinky-finger-tip',\n\t\t\t];\n\n\t\t\tjoints.forEach( jointName => {\n\n\t\t\t\tconst bone = object.getObjectByName( jointName );\n\n\t\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\t\tbone.jointName = jointName;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( `Couldn't find ${jointName} in ${handedness} hand mesh` );\n\n\t\t\t\t}\n\n\t\t\t\tthis.bones.push( bone );\n\n\t\t\t} );\n\n\t\t\tif ( onLoad ) onLoad( object );\n\n\t\t} );\n\n\t}\n\n\tupdateMesh() {\n\n\t\t// XR Joints\n\t\tconst XRJoints = this.controller.joints;\n\n\t\tfor ( let i = 0; i < this.bones.length; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tconst XRJoint = XRJoints[ bone.jointName ];\n\n\t\t\t\tif ( XRJoint.visible ) {\n\n\t\t\t\t\tconst position = XRJoint.position;\n\n\t\t\t\t\tbone.position.copy( position );\n\t\t\t\t\tbone.quaternion.copy( XRJoint.quaternion );\n\t\t\t\t\t// bone.scale.setScalar( XRJoint.jointRadius || defaultRadius );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nexport { XRHandMeshModel };\n", "import { Object3D, Sphere, Box3 } from 'three';\nimport { XRHandMeshModel } from './XRHandMeshModel.js';\n\nconst TOUCH_RADIUS = 0.01;\nconst POINTING_JOINT = 'index-finger-tip';\n\nclass OculusHandModel extends Object3D {\n\n\tconstructor( controller, loader = null, onLoad = null ) {\n\n\t\tsuper();\n\n\t\tthis.controller = controller;\n\t\tthis.motionController = null;\n\t\tthis.envMap = null;\n\t\tthis.loader = loader;\n\t\tthis.onLoad = onLoad;\n\n\t\tthis.mesh = null;\n\n\t\tcontroller.addEventListener( 'connected', ( event ) => {\n\n\t\t\tconst xrInputSource = event.data;\n\n\t\t\tif ( xrInputSource.hand && ! this.motionController ) {\n\n\t\t\t\tthis.xrInputSource = xrInputSource;\n\n\t\t\t\tthis.motionController = new XRHandMeshModel( this, controller, this.path, xrInputSource.handedness, this.loader, this.onLoad );\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcontroller.addEventListener( 'disconnected', () => {\n\n\t\t\tthis.clear();\n\t\t\tthis.motionController = null;\n\n\t\t} );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.motionController ) {\n\n\t\t\tthis.motionController.updateMesh();\n\n\t\t}\n\n\t}\n\n\tgetPointerPosition() {\n\n\t\tconst indexFingerTip = this.controller.joints[ POINTING_JOINT ];\n\t\tif ( indexFingerTip ) {\n\n\t\t\treturn indexFingerTip.position;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t}\n\n\tintersectBoxObject( boxObject ) {\n\n\t\tconst pointerPosition = this.getPointerPosition();\n\t\tif ( pointerPosition ) {\n\n\t\t\tconst indexSphere = new Sphere( pointerPosition, TOUCH_RADIUS );\n\t\t\tconst box = new Box3().setFromObject( boxObject );\n\t\t\treturn indexSphere.intersectsBox( box );\n\n\t\t} else {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\tcheckButton( button ) {\n\n\t\tif ( this.intersectBoxObject( button ) ) {\n\n\t\t\tbutton.onPress();\n\n\t\t} else {\n\n\t\t\tbutton.onClear();\n\n\t\t}\n\n\t\tif ( button.isPressed() ) {\n\n\t\t\tbutton.whilePressed();\n\n\t\t}\n\n\t}\n\n}\n\nexport { OculusHandModel };\n", "import * as THREE from 'three';\n\nconst PINCH_MAX = 0.05;\nconst PINCH_THRESHOLD = 0.02;\nconst PINCH_MIN = 0.01;\nconst POINTER_ADVANCE_MAX = 0.02;\nconst POINTER_OPACITY_MAX = 1;\nconst POINTER_OPACITY_MIN = 0.4;\nconst POINTER_FRONT_RADIUS = 0.002;\nconst POINTER_REAR_RADIUS = 0.01;\nconst POINTER_REAR_RADIUS_MIN = 0.003;\nconst POINTER_LENGTH = 0.035;\nconst POINTER_SEGMENTS = 16;\nconst POINTER_RINGS = 12;\nconst POINTER_HEMISPHERE_ANGLE = 110;\nconst YAXIS = /* @__PURE__ */ new THREE.Vector3( 0, 1, 0 );\nconst ZAXIS = /* @__PURE__ */ new THREE.Vector3( 0, 0, 1 );\n\nconst CURSOR_RADIUS = 0.02;\nconst CURSOR_MAX_DISTANCE = 1.5;\n\nclass OculusHandPointerModel extends THREE.Object3D {\n\n\tconstructor( hand, controller ) {\n\n\t\tsuper();\n\n\t\tthis.hand = hand;\n\t\tthis.controller = controller;\n\n\t\t// Unused\n\t\tthis.motionController = null;\n\t\tthis.envMap = null;\n\t\tthis.mesh = null;\n\n\t\tthis.pointerGeometry = null;\n\t\tthis.pointerMesh = null;\n\t\tthis.pointerObject = null;\n\n\t\tthis.pinched = false;\n\t\tthis.attached = false;\n\n\t\tthis.cursorObject = null;\n\n\t\tthis.raycaster = null;\n\n\t\tthis._onConnected = this._onConnected.bind( this );\n\t\tthis._onDisconnected = this._onDisconnected.bind( this );\n\t\tthis.hand.addEventListener( 'connected', this._onConnected );\n\t\tthis.hand.addEventListener( 'disconnected', this._onDisconnected );\n\n\t}\n\n\t_onConnected( event ) {\n\n\t\tconst xrInputSource = event.data;\n\t\tif ( xrInputSource.hand ) {\n\n\t\t\tthis.visible = true;\n\t\t\tthis.xrInputSource = xrInputSource;\n\n\t\t\tthis.createPointer();\n\n\t\t}\n\n\t}\n\n\t_onDisconnected() {\n\n\t\tthis.visible = false;\n\t\tthis.xrInputSource = null;\n\n\t\tif ( this.pointerGeometry ) this.pointerGeometry.dispose();\n\t\tif ( this.pointerMesh && this.pointerMesh.material ) this.pointerMesh.material.dispose();\n\n\t\tthis.clear();\n\n\t}\n\n\t_drawVerticesRing( vertices, baseVector, ringIndex ) {\n\n\t\tconst segmentVector = baseVector.clone();\n\t\tfor ( let i = 0; i < POINTER_SEGMENTS; i ++ ) {\n\n\t\t\tsegmentVector.applyAxisAngle( ZAXIS, ( Math.PI * 2 ) / POINTER_SEGMENTS );\n\t\t\tconst vid = ringIndex * POINTER_SEGMENTS + i;\n\t\t\tvertices[ 3 * vid ] = segmentVector.x;\n\t\t\tvertices[ 3 * vid + 1 ] = segmentVector.y;\n\t\t\tvertices[ 3 * vid + 2 ] = segmentVector.z;\n\n\t\t}\n\n\t}\n\n\t_updatePointerVertices( rearRadius ) {\n\n\t\tconst vertices = this.pointerGeometry.attributes.position.array;\n\t\t// first ring for front face\n\t\tconst frontFaceBase = new THREE.Vector3(\n\t\t\tPOINTER_FRONT_RADIUS,\n\t\t\t0,\n\t\t\t- 1 * ( POINTER_LENGTH - rearRadius )\n\t\t);\n\t\tthis._drawVerticesRing( vertices, frontFaceBase, 0 );\n\n\t\t// rings for rear hemisphere\n\t\tconst rearBase = new THREE.Vector3(\n\t\t\tMath.sin( ( Math.PI * POINTER_HEMISPHERE_ANGLE ) / 180 ) * rearRadius,\n\t\t\tMath.cos( ( Math.PI * POINTER_HEMISPHERE_ANGLE ) / 180 ) * rearRadius,\n\t\t\t0\n\t\t);\n\t\tfor ( let i = 0; i < POINTER_RINGS; i ++ ) {\n\n\t\t\tthis._drawVerticesRing( vertices, rearBase, i + 1 );\n\t\t\trearBase.applyAxisAngle(\n\t\t\t\tYAXIS,\n\t\t\t\t( Math.PI * POINTER_HEMISPHERE_ANGLE ) / 180 / ( POINTER_RINGS * - 2 )\n\t\t\t);\n\n\t\t}\n\n\t\t// front and rear face center vertices\n\t\tconst frontCenterIndex = POINTER_SEGMENTS * ( 1 + POINTER_RINGS );\n\t\tconst rearCenterIndex = POINTER_SEGMENTS * ( 1 + POINTER_RINGS ) + 1;\n\t\tconst frontCenter = new THREE.Vector3(\n\t\t\t0,\n\t\t\t0,\n\t\t\t- 1 * ( POINTER_LENGTH - rearRadius )\n\t\t);\n\t\tvertices[ frontCenterIndex * 3 ] = frontCenter.x;\n\t\tvertices[ frontCenterIndex * 3 + 1 ] = frontCenter.y;\n\t\tvertices[ frontCenterIndex * 3 + 2 ] = frontCenter.z;\n\t\tconst rearCenter = new THREE.Vector3( 0, 0, rearRadius );\n\t\tvertices[ rearCenterIndex * 3 ] = rearCenter.x;\n\t\tvertices[ rearCenterIndex * 3 + 1 ] = rearCenter.y;\n\t\tvertices[ rearCenterIndex * 3 + 2 ] = rearCenter.z;\n\n\t\tthis.pointerGeometry.setAttribute(\n\t\t\t'position',\n\t\t\tnew THREE.Float32BufferAttribute( vertices, 3 )\n\t\t);\n\t\t// verticesNeedUpdate = true;\n\n\t}\n\n\tcreatePointer() {\n\n\t\tlet i, j;\n\t\tconst vertices = new Array(\n\t\t\t( ( POINTER_RINGS + 1 ) * POINTER_SEGMENTS + 2 ) * 3\n\t\t).fill( 0 );\n\t\t// const vertices = [];\n\t\tconst indices = [];\n\t\tthis.pointerGeometry = new THREE.BufferGeometry();\n\n\t\tthis.pointerGeometry.setAttribute(\n\t\t\t'position',\n\t\t\tnew THREE.Float32BufferAttribute( vertices, 3 )\n\t\t);\n\n\t\tthis._updatePointerVertices( POINTER_REAR_RADIUS );\n\n\t\t// construct faces to connect rings\n\t\tfor ( i = 0; i < POINTER_RINGS; i ++ ) {\n\n\t\t\tfor ( j = 0; j < POINTER_SEGMENTS - 1; j ++ ) {\n\n\t\t\t\tindices.push(\n\t\t\t\t\ti * POINTER_SEGMENTS + j,\n\t\t\t\t\ti * POINTER_SEGMENTS + j + 1,\n\t\t\t\t\t( i + 1 ) * POINTER_SEGMENTS + j\n\t\t\t\t);\n\t\t\t\tindices.push(\n\t\t\t\t\ti * POINTER_SEGMENTS + j + 1,\n\t\t\t\t\t( i + 1 ) * POINTER_SEGMENTS + j + 1,\n\t\t\t\t\t( i + 1 ) * POINTER_SEGMENTS + j\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tindices.push(\n\t\t\t\t( i + 1 ) * POINTER_SEGMENTS - 1,\n\t\t\t\ti * POINTER_SEGMENTS,\n\t\t\t\t( i + 2 ) * POINTER_SEGMENTS - 1\n\t\t\t);\n\t\t\tindices.push(\n\t\t\t\ti * POINTER_SEGMENTS,\n\t\t\t\t( i + 1 ) * POINTER_SEGMENTS,\n\t\t\t\t( i + 2 ) * POINTER_SEGMENTS - 1\n\t\t\t);\n\n\t\t}\n\n\t\t// construct front and rear face\n\t\tconst frontCenterIndex = POINTER_SEGMENTS * ( 1 + POINTER_RINGS );\n\t\tconst rearCenterIndex = POINTER_SEGMENTS * ( 1 + POINTER_RINGS ) + 1;\n\n\t\tfor ( i = 0; i < POINTER_SEGMENTS - 1; i ++ ) {\n\n\t\t\tindices.push( frontCenterIndex, i + 1, i );\n\t\t\tindices.push(\n\t\t\t\trearCenterIndex,\n\t\t\t\ti + POINTER_SEGMENTS * POINTER_RINGS,\n\t\t\t\ti + POINTER_SEGMENTS * POINTER_RINGS + 1\n\t\t\t);\n\n\t\t}\n\n\t\tindices.push( frontCenterIndex, 0, POINTER_SEGMENTS - 1 );\n\t\tindices.push(\n\t\t\trearCenterIndex,\n\t\t\tPOINTER_SEGMENTS * ( POINTER_RINGS + 1 ) - 1,\n\t\t\tPOINTER_SEGMENTS * POINTER_RINGS\n\t\t);\n\n\t\tconst material = new THREE.MeshBasicMaterial();\n\t\tmaterial.transparent = true;\n\t\tmaterial.opacity = POINTER_OPACITY_MIN;\n\n\t\tthis.pointerGeometry.setIndex( indices );\n\n\t\tthis.pointerMesh = new THREE.Mesh( this.pointerGeometry, material );\n\n\t\tthis.pointerMesh.position.set( 0, 0, - 1 * POINTER_REAR_RADIUS );\n\t\tthis.pointerObject = new THREE.Object3D();\n\t\tthis.pointerObject.add( this.pointerMesh );\n\n\t\tthis.raycaster = new THREE.Raycaster();\n\n\t\t// create cursor\n\t\tconst cursorGeometry = new THREE.SphereGeometry( CURSOR_RADIUS, 10, 10 );\n\t\tconst cursorMaterial = new THREE.MeshBasicMaterial();\n\t\tcursorMaterial.transparent = true;\n\t\tcursorMaterial.opacity = POINTER_OPACITY_MIN;\n\n\t\tthis.cursorObject = new THREE.Mesh( cursorGeometry, cursorMaterial );\n\t\tthis.pointerObject.add( this.cursorObject );\n\n\t\tthis.add( this.pointerObject );\n\n\t}\n\n\t_updateRaycaster() {\n\n\t\tif ( this.raycaster ) {\n\n\t\t\tconst pointerMatrix = this.pointerObject.matrixWorld;\n\t\t\tconst tempMatrix = new THREE.Matrix4();\n\t\t\ttempMatrix.identity().extractRotation( pointerMatrix );\n\t\t\tthis.raycaster.ray.origin.setFromMatrixPosition( pointerMatrix );\n\t\t\tthis.raycaster.ray.direction.set( 0, 0, - 1 ).applyMatrix4( tempMatrix );\n\n\t\t}\n\n\t}\n\n\t_updatePointer() {\n\n\t\tthis.pointerObject.visible = this.controller.visible;\n\t\tconst indexTip = this.hand.joints[ 'index-finger-tip' ];\n\t\tconst thumbTip = this.hand.joints[ 'thumb-tip' ];\n\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\t\tconst position = indexTip.position\n\t\t\t.clone()\n\t\t\t.add( thumbTip.position )\n\t\t\t.multiplyScalar( 0.5 );\n\t\tthis.pointerObject.position.copy( position );\n\t\tthis.pointerObject.quaternion.copy( this.controller.quaternion );\n\n\t\tthis.pinched = distance <= PINCH_THRESHOLD;\n\n\t\tconst pinchScale = ( distance - PINCH_MIN ) / ( PINCH_MAX - PINCH_MIN );\n\t\tconst focusScale = ( distance - PINCH_MIN ) / ( PINCH_THRESHOLD - PINCH_MIN );\n\t\tif ( pinchScale > 1 ) {\n\n\t\t\tthis._updatePointerVertices( POINTER_REAR_RADIUS );\n\t\t\tthis.pointerMesh.position.set( 0, 0, - 1 * POINTER_REAR_RADIUS );\n\t\t\tthis.pointerMesh.material.opacity = POINTER_OPACITY_MIN;\n\n\t\t} else if ( pinchScale > 0 ) {\n\n\t\t\tconst rearRadius =\n ( POINTER_REAR_RADIUS - POINTER_REAR_RADIUS_MIN ) * pinchScale +\n POINTER_REAR_RADIUS_MIN;\n\t\t\tthis._updatePointerVertices( rearRadius );\n\t\t\tif ( focusScale < 1 ) {\n\n\t\t\t\tthis.pointerMesh.position.set(\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\t- 1 * rearRadius - ( 1 - focusScale ) * POINTER_ADVANCE_MAX\n\t\t\t\t);\n\t\t\t\tthis.pointerMesh.material.opacity =\n POINTER_OPACITY_MIN +\n ( 1 - focusScale ) * ( POINTER_OPACITY_MAX - POINTER_OPACITY_MIN );\n\n\t\t\t} else {\n\n\t\t\t\tthis.pointerMesh.position.set( 0, 0, - 1 * rearRadius );\n\t\t\t\tthis.pointerMesh.material.opacity = POINTER_OPACITY_MIN;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis._updatePointerVertices( POINTER_REAR_RADIUS_MIN );\n\t\t\tthis.pointerMesh.position.set(\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t- 1 * POINTER_REAR_RADIUS_MIN - POINTER_ADVANCE_MAX\n\t\t\t);\n\t\t\tthis.pointerMesh.material.opacity = POINTER_OPACITY_MAX;\n\n\t\t}\n\n\t\tthis.cursorObject.material.opacity = this.pointerMesh.material.opacity;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\t\tif ( this.pointerGeometry ) {\n\n\t\t\tthis._updatePointer();\n\t\t\tthis._updateRaycaster();\n\n\t\t}\n\n\t}\n\n\tisPinched() {\n\n\t\treturn this.pinched;\n\n\t}\n\n\tsetAttached( attached ) {\n\n\t\tthis.attached = attached;\n\n\t}\n\n\tisAttached() {\n\n\t\treturn this.attached;\n\n\t}\n\n\tintersectObject( object, recursive = true ) {\n\n\t\tif ( this.raycaster ) {\n\n\t\t\treturn this.raycaster.intersectObject( object, recursive );\n\n\t\t}\n\n\t}\n\n\tintersectObjects( objects, recursive = true ) {\n\n\t\tif ( this.raycaster ) {\n\n\t\t\treturn this.raycaster.intersectObjects( objects, recursive );\n\n\t\t}\n\n\t}\n\n\tcheckIntersections( objects, recursive = false ) {\n\n\t\tif ( this.raycaster && ! this.attached ) {\n\n\t\t\tconst intersections = this.raycaster.intersectObjects( objects, recursive );\n\t\t\tconst direction = new THREE.Vector3( 0, 0, - 1 );\n\t\t\tif ( intersections.length > 0 ) {\n\n\t\t\t\tconst intersection = intersections[ 0 ];\n\t\t\t\tconst distance = intersection.distance;\n\t\t\t\tthis.cursorObject.position.copy( direction.multiplyScalar( distance ) );\n\n\t\t\t} else {\n\n\t\t\t\tthis.cursorObject.position.copy( direction.multiplyScalar( CURSOR_MAX_DISTANCE ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tsetCursor( distance ) {\n\n\t\tconst direction = new THREE.Vector3( 0, 0, - 1 );\n\t\tif ( this.raycaster && ! this.attached ) {\n\n\t\t\tthis.cursorObject.position.copy( direction.multiplyScalar( distance ) );\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tthis._onDisconnected();\n\t\tthis.hand.removeEventListener( 'connected', this._onConnected );\n\t\tthis.hand.removeEventListener( 'disconnected', this._onDisconnected );\n\n\t}\n\n}\n\nexport { OculusHandPointerModel };\n", "import * as THREE from 'three';\n\nfunction createText( message, height ) {\n\n\tconst canvas = document.createElement( 'canvas' );\n\tconst context = canvas.getContext( '2d' );\n\tlet metrics = null;\n\tconst textHeight = 100;\n\tcontext.font = 'normal ' + textHeight + 'px Arial';\n\tmetrics = context.measureText( message );\n\tconst textWidth = metrics.width;\n\tcanvas.width = textWidth;\n\tcanvas.height = textHeight;\n\tcontext.font = 'normal ' + textHeight + 'px Arial';\n\tcontext.textAlign = 'center';\n\tcontext.textBaseline = 'middle';\n\tcontext.fillStyle = '#ffffff';\n\tcontext.fillText( message, textWidth / 2, textHeight / 2 );\n\n\tconst texture = new THREE.Texture( canvas );\n\ttexture.needsUpdate = true;\n\n\tconst material = new THREE.MeshBasicMaterial( {\n\t\tcolor: 0xffffff,\n\t\tside: THREE.DoubleSide,\n\t\tmap: texture,\n\t\ttransparent: true,\n\t} );\n\tconst geometry = new THREE.PlaneGeometry(\n\t\t( height * textWidth ) / textHeight,\n\t\theight\n\t);\n\tconst plane = new THREE.Mesh( geometry, material );\n\treturn plane;\n\n}\n\nexport { createText };\n", "class VRButton {\n\n\tstatic createButton( renderer, sessionInit = {} ) {\n\n\t\tconst button = document.createElement( 'button' );\n\n\t\tfunction showEnterVR( /*device*/ ) {\n\n\t\t\tlet currentSession = null;\n\n\t\t\tasync function onSessionStarted( session ) {\n\n\t\t\t\tsession.addEventListener( 'end', onSessionEnded );\n\n\t\t\t\tawait renderer.xr.setSession( session );\n\t\t\t\tbutton.textContent = 'EXIT VR';\n\n\t\t\t\tcurrentSession = session;\n\n\t\t\t}\n\n\t\t\tfunction onSessionEnded( /*event*/ ) {\n\n\t\t\t\tcurrentSession.removeEventListener( 'end', onSessionEnded );\n\n\t\t\t\tbutton.textContent = 'ENTER VR';\n\n\t\t\t\tcurrentSession = null;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tbutton.style.display = '';\n\n\t\t\tbutton.style.cursor = 'pointer';\n\t\t\tbutton.style.left = 'calc(50% - 50px)';\n\t\t\tbutton.style.width = '100px';\n\n\t\t\tbutton.textContent = 'ENTER VR';\n\n\t\t\t// WebXR's requestReferenceSpace only works if the corresponding feature\n\t\t\t// was requested at session creation time. For simplicity, just ask for\n\t\t\t// the interesting ones as optional features, but be aware that the\n\t\t\t// requestReferenceSpace call will fail if it turns out to be unavailable.\n\t\t\t// ('local' is always available for immersive sessions and doesn't need to\n\t\t\t// be requested separately.)\n\n\t\t\tconst sessionOptions = {\n\t\t\t\t...sessionInit,\n\t\t\t\toptionalFeatures: [\n\t\t\t\t\t'local-floor',\n\t\t\t\t\t'bounded-floor',\n\t\t\t\t\t'layers',\n\t\t\t\t\t...( sessionInit.optionalFeatures || [] )\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tbutton.onmouseenter = function () {\n\n\t\t\t\tbutton.style.opacity = '1.0';\n\n\t\t\t};\n\n\t\t\tbutton.onmouseleave = function () {\n\n\t\t\t\tbutton.style.opacity = '0.5';\n\n\t\t\t};\n\n\t\t\tbutton.onclick = function () {\n\n\t\t\t\tif ( currentSession === null ) {\n\n\t\t\t\t\tnavigator.xr.requestSession( 'immersive-vr', sessionOptions ).then( onSessionStarted );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcurrentSession.end();\n\n\t\t\t\t\tif ( navigator.xr.offerSession !== undefined ) {\n\n\t\t\t\t\t\tnavigator.xr.offerSession( 'immersive-vr', sessionOptions )\n\t\t\t\t\t\t\t.then( onSessionStarted )\n\t\t\t\t\t\t\t.catch( ( err ) => {\n\n\t\t\t\t\t\t\t\tconsole.warn( err );\n\n\t\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 ( navigator.xr.offerSession !== undefined ) {\n\n\t\t\t\tnavigator.xr.offerSession( 'immersive-vr', sessionOptions )\n\t\t\t\t\t.then( onSessionStarted )\n\t\t\t\t\t.catch( ( err ) => {\n\n\t\t\t\t\t\tconsole.warn( err );\n\n\t\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction disableButton() {\n\n\t\t\tbutton.style.display = '';\n\n\t\t\tbutton.style.cursor = 'auto';\n\t\t\tbutton.style.left = 'calc(50% - 75px)';\n\t\t\tbutton.style.width = '150px';\n\n\t\t\tbutton.onmouseenter = null;\n\t\t\tbutton.onmouseleave = null;\n\n\t\t\tbutton.onclick = null;\n\n\t\t}\n\n\t\tfunction showWebXRNotFound() {\n\n\t\t\tdisableButton();\n\n\t\t\tbutton.textContent = 'VR NOT SUPPORTED';\n\n\t\t}\n\n\t\tfunction showVRNotAllowed( exception ) {\n\n\t\t\tdisableButton();\n\n\t\t\tconsole.warn( 'Exception when trying to call xr.isSessionSupported', exception );\n\n\t\t\tbutton.textContent = 'VR NOT ALLOWED';\n\n\t\t}\n\n\t\tfunction stylizeElement( element ) {\n\n\t\t\telement.style.position = 'absolute';\n\t\t\telement.style.bottom = '20px';\n\t\t\telement.style.padding = '12px 6px';\n\t\t\telement.style.border = '1px solid #fff';\n\t\t\telement.style.borderRadius = '4px';\n\t\t\telement.style.background = 'rgba(0,0,0,0.1)';\n\t\t\telement.style.color = '#fff';\n\t\t\telement.style.font = 'normal 13px sans-serif';\n\t\t\telement.style.textAlign = 'center';\n\t\t\telement.style.opacity = '0.5';\n\t\t\telement.style.outline = 'none';\n\t\t\telement.style.zIndex = '999';\n\n\t\t}\n\n\t\tif ( 'xr' in navigator ) {\n\n\t\t\tbutton.id = 'VRButton';\n\t\t\tbutton.style.display = 'none';\n\n\t\t\tstylizeElement( button );\n\n\t\t\tnavigator.xr.isSessionSupported( 'immersive-vr' ).then( function ( supported ) {\n\n\t\t\t\tsupported ? showEnterVR() : showWebXRNotFound();\n\n\t\t\t\tif ( supported && VRButton.xrSessionIsGranted ) {\n\n\t\t\t\t\tbutton.click();\n\n\t\t\t\t}\n\n\t\t\t} ).catch( showVRNotAllowed );\n\n\t\t\treturn button;\n\n\t\t} else {\n\n\t\t\tconst message = document.createElement( 'a' );\n\n\t\t\tif ( window.isSecureContext === false ) {\n\n\t\t\t\tmessage.href = document.location.href.replace( /^http:/, 'https:' );\n\t\t\t\tmessage.innerHTML = 'WEBXR NEEDS HTTPS'; // TODO Improve message\n\n\t\t\t} else {\n\n\t\t\t\tmessage.href = 'https://immersiveweb.dev/';\n\t\t\t\tmessage.innerHTML = 'WEBXR NOT AVAILABLE';\n\n\t\t\t}\n\n\t\t\tmessage.style.left = 'calc(50% - 90px)';\n\t\t\tmessage.style.width = '180px';\n\t\t\tmessage.style.textDecoration = 'none';\n\n\t\t\tstylizeElement( message );\n\n\t\t\treturn message;\n\n\t\t}\n\n\t}\n\n\tstatic registerSessionGrantedListener() {\n\n\t\tif ( typeof navigator !== 'undefined' && 'xr' in navigator ) {\n\n\t\t\t// WebXRViewer (based on Firefox) has a bug where addEventListener\n\t\t\t// throws a silent exception and aborts execution entirely.\n\t\t\tif ( /WebXRViewer\\//i.test( navigator.userAgent ) ) return;\n\n\t\t\tnavigator.xr.addEventListener( 'sessiongranted', () => {\n\n\t\t\t\tVRButton.xrSessionIsGranted = true;\n\n\t\t\t} );\n\n\t\t}\n\n\t}\n\n}\n\nVRButton.xrSessionIsGranted = false;\nVRButton.registerSessionGrantedListener();\n\nexport { VRButton };\n", "class XRButton {\n\n\tstatic createButton( renderer, sessionInit = {} ) {\n\n\t\tconst button = document.createElement( 'button' );\n\n\t\tfunction showStartXR( mode ) {\n\n\t\t\tlet currentSession = null;\n\n\t\t\tasync function onSessionStarted( session ) {\n\n\t\t\t\tsession.addEventListener( 'end', onSessionEnded );\n\n\t\t\t\tawait renderer.xr.setSession( session );\n\n\t\t\t\tbutton.textContent = 'STOP XR';\n\n\t\t\t\tcurrentSession = session;\n\n\t\t\t}\n\n\t\t\tfunction onSessionEnded( /*event*/ ) {\n\n\t\t\t\tcurrentSession.removeEventListener( 'end', onSessionEnded );\n\n\t\t\t\tbutton.textContent = 'START XR';\n\n\t\t\t\tcurrentSession = null;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tbutton.style.display = '';\n\n\t\t\tbutton.style.cursor = 'pointer';\n\t\t\tbutton.style.left = 'calc(50% - 50px)';\n\t\t\tbutton.style.width = '100px';\n\n\t\t\tbutton.textContent = 'START XR';\n\n\t\t\tconst sessionOptions = {\n\t\t\t\t...sessionInit,\n\t\t\t\toptionalFeatures: [\n\t\t\t\t\t'local-floor',\n\t\t\t\t\t'bounded-floor',\n\t\t\t\t\t'layers',\n\t\t\t\t\t...( sessionInit.optionalFeatures || [] )\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tbutton.onmouseenter = function () {\n\n\t\t\t\tbutton.style.opacity = '1.0';\n\n\t\t\t};\n\n\t\t\tbutton.onmouseleave = function () {\n\n\t\t\t\tbutton.style.opacity = '0.5';\n\n\t\t\t};\n\n\t\t\tbutton.onclick = function () {\n\n\t\t\t\tif ( currentSession === null ) {\n\n\t\t\t\t\tnavigator.xr.requestSession( mode, sessionOptions )\n\t\t\t\t\t\t.then( onSessionStarted );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcurrentSession.end();\n\n\t\t\t\t\tif ( navigator.xr.offerSession !== undefined ) {\n\n\t\t\t\t\t\tnavigator.xr.offerSession( mode, sessionOptions )\n\t\t\t\t\t\t\t.then( onSessionStarted )\n\t\t\t\t\t\t\t.catch( ( err ) => {\n\n\t\t\t\t\t\t\t\tconsole.warn( err );\n\n\t\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 ( navigator.xr.offerSession !== undefined ) {\n\n\t\t\t\tnavigator.xr.offerSession( mode, sessionOptions )\n\t\t\t\t\t.then( onSessionStarted )\n\t\t\t\t\t.catch( ( err ) => {\n\n\t\t\t\t\t\tconsole.warn( err );\n\n\t\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction disableButton() {\n\n\t\t\tbutton.style.display = '';\n\n\t\t\tbutton.style.cursor = 'auto';\n\t\t\tbutton.style.left = 'calc(50% - 75px)';\n\t\t\tbutton.style.width = '150px';\n\n\t\t\tbutton.onmouseenter = null;\n\t\t\tbutton.onmouseleave = null;\n\n\t\t\tbutton.onclick = null;\n\n\t\t}\n\n\t\tfunction showXRNotSupported() {\n\n\t\t\tdisableButton();\n\n\t\t\tbutton.textContent = 'XR NOT SUPPORTED';\n\n\t\t}\n\n\t\tfunction showXRNotAllowed( exception ) {\n\n\t\t\tdisableButton();\n\n\t\t\tconsole.warn( 'Exception when trying to call xr.isSessionSupported', exception );\n\n\t\t\tbutton.textContent = 'XR NOT ALLOWED';\n\n\t\t}\n\n\t\tfunction stylizeElement( element ) {\n\n\t\t\telement.style.position = 'absolute';\n\t\t\telement.style.bottom = '20px';\n\t\t\telement.style.padding = '12px 6px';\n\t\t\telement.style.border = '1px solid #fff';\n\t\t\telement.style.borderRadius = '4px';\n\t\t\telement.style.background = 'rgba(0,0,0,0.1)';\n\t\t\telement.style.color = '#fff';\n\t\t\telement.style.font = 'normal 13px sans-serif';\n\t\t\telement.style.textAlign = 'center';\n\t\t\telement.style.opacity = '0.5';\n\t\t\telement.style.outline = 'none';\n\t\t\telement.style.zIndex = '999';\n\n\t\t}\n\n\t\tif ( 'xr' in navigator ) {\n\n\t\t\tbutton.id = 'XRButton';\n\t\t\tbutton.style.display = 'none';\n\n\t\t\tstylizeElement( button );\n\n\t\t\tnavigator.xr.isSessionSupported( 'immersive-ar' )\n\t\t\t\t.then( function ( supported ) {\n\n\t\t\t\t\tif ( supported ) {\n\n\t\t\t\t\t\tshowStartXR( 'immersive-ar' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tnavigator.xr.isSessionSupported( 'immersive-vr' )\n\t\t\t\t\t\t\t.then( function ( supported ) {\n\n\t\t\t\t\t\t\t\tif ( supported ) {\n\n\t\t\t\t\t\t\t\t\tshowStartXR( 'immersive-vr' );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tshowXRNotSupported();\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} ).catch( showXRNotAllowed );\n\n\t\t\t\t\t}\n\n\t\t\t\t} ).catch( showXRNotAllowed );\n\n\t\t\treturn button;\n\n\t\t} else {\n\n\t\t\tconst message = document.createElement( 'a' );\n\n\t\t\tif ( window.isSecureContext === false ) {\n\n\t\t\t\tmessage.href = document.location.href.replace( /^http:/, 'https:' );\n\t\t\t\tmessage.innerHTML = 'WEBXR NEEDS HTTPS'; // TODO Improve message\n\n\t\t\t} else {\n\n\t\t\t\tmessage.href = 'https://immersiveweb.dev/';\n\t\t\t\tmessage.innerHTML = 'WEBXR NOT AVAILABLE';\n\n\t\t\t}\n\n\t\t\tmessage.style.left = 'calc(50% - 90px)';\n\t\t\tmessage.style.width = '180px';\n\t\t\tmessage.style.textDecoration = 'none';\n\n\t\t\tstylizeElement( message );\n\n\t\t\treturn message;\n\n\t\t}\n\n\t}\n\n}\n\nexport { XRButton };\n", "/**\n * @webxr-input-profiles/motion-controllers 1.0.0 https://github.com/immersive-web/webxr-input-profiles\n */\n\nconst Constants = {\n Handedness: Object.freeze({\n NONE: 'none',\n LEFT: 'left',\n RIGHT: 'right'\n }),\n\n ComponentState: Object.freeze({\n DEFAULT: 'default',\n TOUCHED: 'touched',\n PRESSED: 'pressed'\n }),\n\n ComponentProperty: Object.freeze({\n BUTTON: 'button',\n X_AXIS: 'xAxis',\n Y_AXIS: 'yAxis',\n STATE: 'state'\n }),\n\n ComponentType: Object.freeze({\n TRIGGER: 'trigger',\n SQUEEZE: 'squeeze',\n TOUCHPAD: 'touchpad',\n THUMBSTICK: 'thumbstick',\n BUTTON: 'button'\n }),\n\n ButtonTouchThreshold: 0.05,\n\n AxisTouchThreshold: 0.1,\n\n VisualResponseProperty: Object.freeze({\n TRANSFORM: 'transform',\n VISIBILITY: 'visibility'\n })\n};\n\n/**\n * @description Static helper function to fetch a JSON file and turn it into a JS object\n * @param {string} path - Path to JSON file to be fetched\n */\nasync function fetchJsonFile(path) {\n const response = await fetch(path);\n if (!response.ok) {\n throw new Error(response.statusText);\n } else {\n return response.json();\n }\n}\n\nasync function fetchProfilesList(basePath) {\n if (!basePath) {\n throw new Error('No basePath supplied');\n }\n\n const profileListFileName = 'profilesList.json';\n const profilesList = await fetchJsonFile(`${basePath}/${profileListFileName}`);\n return profilesList;\n}\n\nasync function fetchProfile(xrInputSource, basePath, defaultProfile = null, getAssetPath = true) {\n if (!xrInputSource) {\n throw new Error('No xrInputSource supplied');\n }\n\n if (!basePath) {\n throw new Error('No basePath supplied');\n }\n\n // Get the list of profiles\n const supportedProfilesList = await fetchProfilesList(basePath);\n\n // Find the relative path to the first requested profile that is recognized\n let match;\n xrInputSource.profiles.some((profileId) => {\n const supportedProfile = supportedProfilesList[profileId];\n if (supportedProfile) {\n match = {\n profileId,\n profilePath: `${basePath}/${supportedProfile.path}`,\n deprecated: !!supportedProfile.deprecated\n };\n }\n return !!match;\n });\n\n if (!match) {\n if (!defaultProfile) {\n throw new Error('No matching profile name found');\n }\n\n const supportedProfile = supportedProfilesList[defaultProfile];\n if (!supportedProfile) {\n throw new Error(`No matching profile name found and default profile \"${defaultProfile}\" missing.`);\n }\n\n match = {\n profileId: defaultProfile,\n profilePath: `${basePath}/${supportedProfile.path}`,\n deprecated: !!supportedProfile.deprecated\n };\n }\n\n const profile = await fetchJsonFile(match.profilePath);\n\n let assetPath;\n if (getAssetPath) {\n let layout;\n if (xrInputSource.handedness === 'any') {\n layout = profile.layouts[Object.keys(profile.layouts)[0]];\n } else {\n layout = profile.layouts[xrInputSource.handedness];\n }\n if (!layout) {\n throw new Error(\n `No matching handedness, ${xrInputSource.handedness}, in profile ${match.profileId}`\n );\n }\n\n if (layout.assetPath) {\n assetPath = match.profilePath.replace('profile.json', layout.assetPath);\n }\n }\n\n return { profile, assetPath };\n}\n\n/** @constant {Object} */\nconst defaultComponentValues = {\n xAxis: 0,\n yAxis: 0,\n button: 0,\n state: Constants.ComponentState.DEFAULT\n};\n\n/**\n * @description Converts an X, Y coordinate from the range -1 to 1 (as reported by the Gamepad\n * API) to the range 0 to 1 (for interpolation). Also caps the X, Y values to be bounded within\n * a circle. This ensures that thumbsticks are not animated outside the bounds of their physical\n * range of motion and touchpads do not report touch locations off their physical bounds.\n * @param {number} x The original x coordinate in the range -1 to 1\n * @param {number} y The original y coordinate in the range -1 to 1\n */\nfunction normalizeAxes(x = 0, y = 0) {\n let xAxis = x;\n let yAxis = y;\n\n // Determine if the point is outside the bounds of the circle\n // and, if so, place it on the edge of the circle\n const hypotenuse = Math.sqrt((x * x) + (y * y));\n if (hypotenuse > 1) {\n const theta = Math.atan2(y, x);\n xAxis = Math.cos(theta);\n yAxis = Math.sin(theta);\n }\n\n // Scale and move the circle so values are in the interpolation range. The circle's origin moves\n // from (0, 0) to (0.5, 0.5). The circle's radius scales from 1 to be 0.5.\n const result = {\n normalizedXAxis: (xAxis * 0.5) + 0.5,\n normalizedYAxis: (yAxis * 0.5) + 0.5\n };\n return result;\n}\n\n/**\n * Contains the description of how the 3D model should visually respond to a specific user input.\n * This is accomplished by initializing the object with the name of a node in the 3D model and\n * property that need to be modified in response to user input, the name of the nodes representing\n * the allowable range of motion, and the name of the input which triggers the change. In response\n * to the named input changing, this object computes the appropriate weighting to use for\n * interpolating between the range of motion nodes.\n */\nclass VisualResponse {\n constructor(visualResponseDescription) {\n this.componentProperty = visualResponseDescription.componentProperty;\n this.states = visualResponseDescription.states;\n this.valueNodeName = visualResponseDescription.valueNodeName;\n this.valueNodeProperty = visualResponseDescription.valueNodeProperty;\n\n if (this.valueNodeProperty === Constants.VisualResponseProperty.TRANSFORM) {\n this.minNodeName = visualResponseDescription.minNodeName;\n this.maxNodeName = visualResponseDescription.maxNodeName;\n }\n\n // Initializes the response's current value based on default data\n this.value = 0;\n this.updateFromComponent(defaultComponentValues);\n }\n\n /**\n * Computes the visual response's interpolation weight based on component state\n * @param {Object} componentValues - The component from which to update\n * @param {number} xAxis - The reported X axis value of the component\n * @param {number} yAxis - The reported Y axis value of the component\n * @param {number} button - The reported value of the component's button\n * @param {string} state - The component's active state\n */\n updateFromComponent({\n xAxis, yAxis, button, state\n }) {\n const { normalizedXAxis, normalizedYAxis } = normalizeAxes(xAxis, yAxis);\n switch (this.componentProperty) {\n case Constants.ComponentProperty.X_AXIS:\n this.value = (this.states.includes(state)) ? normalizedXAxis : 0.5;\n break;\n case Constants.ComponentProperty.Y_AXIS:\n this.value = (this.states.includes(state)) ? normalizedYAxis : 0.5;\n break;\n case Constants.ComponentProperty.BUTTON:\n this.value = (this.states.includes(state)) ? button : 0;\n break;\n case Constants.ComponentProperty.STATE:\n if (this.valueNodeProperty === Constants.VisualResponseProperty.VISIBILITY) {\n this.value = (this.states.includes(state));\n } else {\n this.value = this.states.includes(state) ? 1.0 : 0.0;\n }\n break;\n default:\n throw new Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`);\n }\n }\n}\n\nclass Component {\n /**\n * @param {Object} componentId - Id of the component\n * @param {Object} componentDescription - Description of the component to be created\n */\n constructor(componentId, componentDescription) {\n if (!componentId\n || !componentDescription\n || !componentDescription.visualResponses\n || !componentDescription.gamepadIndices\n || Object.keys(componentDescription.gamepadIndices).length === 0) {\n throw new Error('Invalid arguments supplied');\n }\n\n this.id = componentId;\n this.type = componentDescription.type;\n this.rootNodeName = componentDescription.rootNodeName;\n this.touchPointNodeName = componentDescription.touchPointNodeName;\n\n // Build all the visual responses for this component\n this.visualResponses = {};\n Object.keys(componentDescription.visualResponses).forEach((responseName) => {\n const visualResponse = new VisualResponse(componentDescription.visualResponses[responseName]);\n this.visualResponses[responseName] = visualResponse;\n });\n\n // Set default values\n this.gamepadIndices = Object.assign({}, componentDescription.gamepadIndices);\n\n this.values = {\n state: Constants.ComponentState.DEFAULT,\n button: (this.gamepadIndices.button !== undefined) ? 0 : undefined,\n xAxis: (this.gamepadIndices.xAxis !== undefined) ? 0 : undefined,\n yAxis: (this.gamepadIndices.yAxis !== undefined) ? 0 : undefined\n };\n }\n\n get data() {\n const data = { id: this.id, ...this.values };\n return data;\n }\n\n /**\n * @description Poll for updated data based on current gamepad state\n * @param {Object} gamepad - The gamepad object from which the component data should be polled\n */\n updateFromGamepad(gamepad) {\n // Set the state to default before processing other data sources\n this.values.state = Constants.ComponentState.DEFAULT;\n\n // Get and normalize button\n if (this.gamepadIndices.button !== undefined\n && gamepad.buttons.length > this.gamepadIndices.button) {\n const gamepadButton = gamepad.buttons[this.gamepadIndices.button];\n this.values.button = gamepadButton.value;\n this.values.button = (this.values.button < 0) ? 0 : this.values.button;\n this.values.button = (this.values.button > 1) ? 1 : this.values.button;\n\n // Set the state based on the button\n if (gamepadButton.pressed || this.values.button === 1) {\n this.values.state = Constants.ComponentState.PRESSED;\n } else if (gamepadButton.touched || this.values.button > Constants.ButtonTouchThreshold) {\n this.values.state = Constants.ComponentState.TOUCHED;\n }\n }\n\n // Get and normalize x axis value\n if (this.gamepadIndices.xAxis !== undefined\n && gamepad.axes.length > this.gamepadIndices.xAxis) {\n this.values.xAxis = gamepad.axes[this.gamepadIndices.xAxis];\n this.values.xAxis = (this.values.xAxis < -1) ? -1 : this.values.xAxis;\n this.values.xAxis = (this.values.xAxis > 1) ? 1 : this.values.xAxis;\n\n // If the state is still default, check if the xAxis makes it touched\n if (this.values.state === Constants.ComponentState.DEFAULT\n && Math.abs(this.values.xAxis) > Constants.AxisTouchThreshold) {\n this.values.state = Constants.ComponentState.TOUCHED;\n }\n }\n\n // Get and normalize Y axis value\n if (this.gamepadIndices.yAxis !== undefined\n && gamepad.axes.length > this.gamepadIndices.yAxis) {\n this.values.yAxis = gamepad.axes[this.gamepadIndices.yAxis];\n this.values.yAxis = (this.values.yAxis < -1) ? -1 : this.values.yAxis;\n this.values.yAxis = (this.values.yAxis > 1) ? 1 : this.values.yAxis;\n\n // If the state is still default, check if the yAxis makes it touched\n if (this.values.state === Constants.ComponentState.DEFAULT\n && Math.abs(this.values.yAxis) > Constants.AxisTouchThreshold) {\n this.values.state = Constants.ComponentState.TOUCHED;\n }\n }\n\n // Update the visual response weights based on the current component data\n Object.values(this.visualResponses).forEach((visualResponse) => {\n visualResponse.updateFromComponent(this.values);\n });\n }\n}\n\n/**\n * @description Builds a motion controller with components and visual responses based on the\n * supplied profile description. Data is polled from the xrInputSource's gamepad.\n * @author Nell Waliczek / https://github.com/NellWaliczek\n*/\nclass MotionController {\n /**\n * @param {Object} xrInputSource - The XRInputSource to build the MotionController around\n * @param {Object} profile - The best matched profile description for the supplied xrInputSource\n * @param {Object} assetUrl\n */\n constructor(xrInputSource, profile, assetUrl) {\n if (!xrInputSource) {\n throw new Error('No xrInputSource supplied');\n }\n\n if (!profile) {\n throw new Error('No profile supplied');\n }\n\n this.xrInputSource = xrInputSource;\n this.assetUrl = assetUrl;\n this.id = profile.profileId;\n\n // Build child components as described in the profile description\n this.layoutDescription = profile.layouts[xrInputSource.handedness];\n this.components = {};\n Object.keys(this.layoutDescription.components).forEach((componentId) => {\n const componentDescription = this.layoutDescription.components[componentId];\n this.components[componentId] = new Component(componentId, componentDescription);\n });\n\n // Initialize components based on current gamepad state\n this.updateFromGamepad();\n }\n\n get gripSpace() {\n return this.xrInputSource.gripSpace;\n }\n\n get targetRaySpace() {\n return this.xrInputSource.targetRaySpace;\n }\n\n /**\n * @description Returns a subset of component data for simplified debugging\n */\n get data() {\n const data = [];\n Object.values(this.components).forEach((component) => {\n data.push(component.data);\n });\n return data;\n }\n\n /**\n * @description Poll for updated data based on current gamepad state\n */\n updateFromGamepad() {\n Object.values(this.components).forEach((component) => {\n component.updateFromGamepad(this.xrInputSource.gamepad);\n });\n }\n}\n\nexport { Constants, MotionController, fetchProfile, fetchProfilesList };\n", "import {\n\tMesh,\n\tMeshBasicMaterial,\n\tObject3D,\n\tSphereGeometry,\n} from 'three';\n\nimport { GLTFLoader } from '../loaders/GLTFLoader.js';\n\nimport {\n\tConstants as MotionControllerConstants,\n\tfetchProfile,\n\tMotionController\n} from '../libs/motion-controllers.module.js';\n\nconst DEFAULT_PROFILES_PATH = 'https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles';\nconst DEFAULT_PROFILE = 'generic-trigger';\n\nclass XRControllerModel extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.motionController = null;\n\t\tthis.envMap = null;\n\n\t}\n\n\tsetEnvironmentMap( envMap ) {\n\n\t\tif ( this.envMap == envMap ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.envMap = envMap;\n\t\tthis.traverse( ( child ) => {\n\n\t\t\tif ( child.isMesh ) {\n\n\t\t\t\tchild.material.envMap = this.envMap;\n\t\t\t\tchild.material.needsUpdate = true;\n\n\t\t\t}\n\n\t\t} );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Polls data from the XRInputSource and updates the model's components to match\n\t * the real world data\n\t */\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( ! this.motionController ) return;\n\n\t\t// Cause the MotionController to poll the Gamepad for data\n\t\tthis.motionController.updateFromGamepad();\n\n\t\t// Update the 3D model to reflect the button, thumbstick, and touchpad state\n\t\tObject.values( this.motionController.components ).forEach( ( component ) => {\n\n\t\t\t// Update node data based on the visual responses' current states\n\t\t\tObject.values( component.visualResponses ).forEach( ( visualResponse ) => {\n\n\t\t\t\tconst { valueNode, minNode, maxNode, value, valueNodeProperty } = visualResponse;\n\n\t\t\t\t// Skip if the visual response node is not found. No error is needed,\n\t\t\t\t// because it will have been reported at load time.\n\t\t\t\tif ( ! valueNode ) return;\n\n\t\t\t\t// Calculate the new properties based on the weight supplied\n\t\t\t\tif ( valueNodeProperty === MotionControllerConstants.VisualResponseProperty.VISIBILITY ) {\n\n\t\t\t\t\tvalueNode.visible = value;\n\n\t\t\t\t} else if ( valueNodeProperty === MotionControllerConstants.VisualResponseProperty.TRANSFORM ) {\n\n\t\t\t\t\tvalueNode.quaternion.slerpQuaternions(\n\t\t\t\t\t\tminNode.quaternion,\n\t\t\t\t\t\tmaxNode.quaternion,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t);\n\n\t\t\t\t\tvalueNode.position.lerpVectors(\n\t\t\t\t\t\tminNode.position,\n\t\t\t\t\t\tmaxNode.position,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * Walks the model's tree to find the nodes needed to animate the components and\n * saves them to the motionContoller components for use in the frame loop. When\n * touchpads are found, attaches a touch dot to them.\n */\nfunction findNodes( motionController, scene ) {\n\n\t// Loop through the components and find the nodes needed for each components' visual responses\n\tObject.values( motionController.components ).forEach( ( component ) => {\n\n\t\tconst { type, touchPointNodeName, visualResponses } = component;\n\n\t\tif ( type === MotionControllerConstants.ComponentType.TOUCHPAD ) {\n\n\t\t\tcomponent.touchPointNode = scene.getObjectByName( touchPointNodeName );\n\t\t\tif ( component.touchPointNode ) {\n\n\t\t\t\t// Attach a touch dot to the touchpad.\n\t\t\t\tconst sphereGeometry = new SphereGeometry( 0.001 );\n\t\t\t\tconst material = new MeshBasicMaterial( { color: 0x0000FF } );\n\t\t\t\tconst sphere = new Mesh( sphereGeometry, material );\n\t\t\t\tcomponent.touchPointNode.add( sphere );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( `Could not find touch dot, ${component.touchPointNodeName}, in touchpad component ${component.id}` );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Loop through all the visual responses to be applied to this component\n\t\tObject.values( visualResponses ).forEach( ( visualResponse ) => {\n\n\t\t\tconst { valueNodeName, minNodeName, maxNodeName, valueNodeProperty } = visualResponse;\n\n\t\t\t// If animating a transform, find the two nodes to be interpolated between.\n\t\t\tif ( valueNodeProperty === MotionControllerConstants.VisualResponseProperty.TRANSFORM ) {\n\n\t\t\t\tvisualResponse.minNode = scene.getObjectByName( minNodeName );\n\t\t\t\tvisualResponse.maxNode = scene.getObjectByName( maxNodeName );\n\n\t\t\t\t// If the extents cannot be found, skip this animation\n\t\t\t\tif ( ! visualResponse.minNode ) {\n\n\t\t\t\t\tconsole.warn( `Could not find ${minNodeName} in the model` );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! visualResponse.maxNode ) {\n\n\t\t\t\t\tconsole.warn( `Could not find ${maxNodeName} in the model` );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// If the target node cannot be found, skip this animation\n\t\t\tvisualResponse.valueNode = scene.getObjectByName( valueNodeName );\n\t\t\tif ( ! visualResponse.valueNode ) {\n\n\t\t\t\tconsole.warn( `Could not find ${valueNodeName} in the model` );\n\n\t\t\t}\n\n\t\t} );\n\n\t} );\n\n}\n\nfunction addAssetSceneToControllerModel( controllerModel, scene ) {\n\n\t// Find the nodes needed for animation and cache them on the motionController.\n\tfindNodes( controllerModel.motionController, scene );\n\n\t// Apply any environment map that the mesh already has set.\n\tif ( controllerModel.envMap ) {\n\n\t\tscene.traverse( ( child ) => {\n\n\t\t\tif ( child.isMesh ) {\n\n\t\t\t\tchild.material.envMap = controllerModel.envMap;\n\t\t\t\tchild.material.needsUpdate = true;\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t// Add the glTF scene to the controllerModel.\n\tcontrollerModel.add( scene );\n\n}\n\nclass XRControllerModelFactory {\n\n\tconstructor( gltfLoader = null, onLoad = null ) {\n\n\t\tthis.gltfLoader = gltfLoader;\n\t\tthis.path = DEFAULT_PROFILES_PATH;\n\t\tthis._assetCache = {};\n\t\tthis.onLoad = onLoad;\n\n\t\t// If a GLTFLoader wasn't supplied to the constructor create a new one.\n\t\tif ( ! this.gltfLoader ) {\n\n\t\t\tthis.gltfLoader = new GLTFLoader();\n\n\t\t}\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\n\t\treturn this;\n\n\t}\n\n\tcreateControllerModel( controller ) {\n\n\t\tconst controllerModel = new XRControllerModel();\n\t\tlet scene = null;\n\n\t\tcontroller.addEventListener( 'connected', ( event ) => {\n\n\t\t\tconst xrInputSource = event.data;\n\n\t\t\tif ( xrInputSource.targetRayMode !== 'tracked-pointer' || ! xrInputSource.gamepad ) return;\n\n\t\t\tfetchProfile( xrInputSource, this.path, DEFAULT_PROFILE ).then( ( { profile, assetPath } ) => {\n\n\t\t\t\tcontrollerModel.motionController = new MotionController(\n\t\t\t\t\txrInputSource,\n\t\t\t\t\tprofile,\n\t\t\t\t\tassetPath\n\t\t\t\t);\n\n\t\t\t\tconst cachedAsset = this._assetCache[ controllerModel.motionController.assetUrl ];\n\t\t\t\tif ( cachedAsset ) {\n\n\t\t\t\t\tscene = cachedAsset.scene.clone();\n\n\t\t\t\t\taddAssetSceneToControllerModel( controllerModel, scene );\n\n\t\t\t\t\tif ( this.onLoad ) this.onLoad( scene );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ! this.gltfLoader ) {\n\n\t\t\t\t\t\tthrow new Error( 'GLTFLoader not set.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.gltfLoader.setPath( '' );\n\t\t\t\t\tthis.gltfLoader.load( controllerModel.motionController.assetUrl, ( asset ) => {\n\n\t\t\t\t\t\tthis._assetCache[ controllerModel.motionController.assetUrl ] = asset;\n\n\t\t\t\t\t\tscene = asset.scene.clone();\n\n\t\t\t\t\t\taddAssetSceneToControllerModel( controllerModel, scene );\n\n\t\t\t\t\t\tif ( this.onLoad ) this.onLoad( scene );\n\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t() => {\n\n\t\t\t\t\t\tthrow new Error( `Asset ${controllerModel.motionController.assetUrl} missing or malformed.` );\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} ).catch( ( err ) => {\n\n\t\t\t\tconsole.warn( err );\n\n\t\t\t} );\n\n\t\t} );\n\n\t\tcontroller.addEventListener( 'disconnected', () => {\n\n\t\t\tcontrollerModel.motionController = null;\n\t\t\tcontrollerModel.remove( scene );\n\t\t\tscene = null;\n\n\t\t} );\n\n\t\treturn controllerModel;\n\n\t}\n\n}\n\nexport { XRControllerModelFactory };\n", "import {\n\tDirectionalLight,\n\tGroup,\n\tLightProbe,\n\tWebGLCubeRenderTarget\n} from 'three';\n\nclass SessionLightProbe {\n\n\tconstructor( xrLight, renderer, lightProbe, environmentEstimation, estimationStartCallback ) {\n\n\t\tthis.xrLight = xrLight;\n\t\tthis.renderer = renderer;\n\t\tthis.lightProbe = lightProbe;\n\t\tthis.xrWebGLBinding = null;\n\t\tthis.estimationStartCallback = estimationStartCallback;\n\t\tthis.frameCallback = this.onXRFrame.bind( this );\n\n\t\tconst session = renderer.xr.getSession();\n\n\t\t// If the XRWebGLBinding class is available then we can also query an\n\t\t// estimated reflection cube map.\n\t\tif ( environmentEstimation && 'XRWebGLBinding' in window ) {\n\n\t\t\t// This is the simplest way I know of to initialize a WebGL cubemap in Three.\n\t\t\tconst cubeRenderTarget = new WebGLCubeRenderTarget( 16 );\n\t\t\txrLight.environment = cubeRenderTarget.texture;\n\n\t\t\tconst gl = renderer.getContext();\n\n\t\t\t// Ensure that we have any extensions needed to use the preferred cube map format.\n\t\t\tswitch ( session.preferredReflectionFormat ) {\n\n\t\t\t\tcase 'srgba8':\n\t\t\t\t\tgl.getExtension( 'EXT_sRGB' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'rgba16f':\n\t\t\t\t\tgl.getExtension( 'OES_texture_half_float' );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tthis.xrWebGLBinding = new XRWebGLBinding( session, gl );\n\n\t\t\tthis.lightProbe.addEventListener( 'reflectionchange', () => {\n\n\t\t\t\tthis.updateReflection();\n\n\t\t\t} );\n\n\t\t}\n\n\t\t// Start monitoring the XR animation frame loop to look for lighting\n\t\t// estimation changes.\n\t\tsession.requestAnimationFrame( this.frameCallback );\n\n\t}\n\n\tupdateReflection() {\n\n\t\tconst textureProperties = this.renderer.properties.get( this.xrLight.environment );\n\n\t\tif ( textureProperties ) {\n\n\t\t\tconst cubeMap = this.xrWebGLBinding.getReflectionCubeMap( this.lightProbe );\n\n\t\t\tif ( cubeMap ) {\n\n\t\t\t\ttextureProperties.__webglTexture = cubeMap;\n\n\t\t\t\tthis.xrLight.environment.needsPMREMUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tonXRFrame( time, xrFrame ) {\n\n\t\t// If either this obejct or the XREstimatedLight has been destroyed, stop\n\t\t// running the frame loop.\n\t\tif ( ! this.xrLight ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst session = xrFrame.session;\n\t\tsession.requestAnimationFrame( this.frameCallback );\n\n\t\tconst lightEstimate = xrFrame.getLightEstimate( this.lightProbe );\n\t\tif ( lightEstimate ) {\n\n\t\t\t// We can copy the estimate's spherical harmonics array directly into the light probe.\n\t\t\tthis.xrLight.lightProbe.sh.fromArray( lightEstimate.sphericalHarmonicsCoefficients );\n\t\t\tthis.xrLight.lightProbe.intensity = 1.0;\n\n\t\t\t// For the directional light we have to normalize the color and set the scalar as the\n\t\t\t// intensity, since WebXR can return color values that exceed 1.0.\n\t\t\tconst intensityScalar = Math.max( 1.0,\n\t\t\t\tMath.max( lightEstimate.primaryLightIntensity.x,\n\t\t\t\t\tMath.max( lightEstimate.primaryLightIntensity.y,\n\t\t\t\t\t\tlightEstimate.primaryLightIntensity.z ) ) );\n\n\t\t\tthis.xrLight.directionalLight.color.setRGB(\n\t\t\t\tlightEstimate.primaryLightIntensity.x / intensityScalar,\n\t\t\t\tlightEstimate.primaryLightIntensity.y / intensityScalar,\n\t\t\t\tlightEstimate.primaryLightIntensity.z / intensityScalar );\n\t\t\tthis.xrLight.directionalLight.intensity = intensityScalar;\n\t\t\tthis.xrLight.directionalLight.position.copy( lightEstimate.primaryLightDirection );\n\n\t\t\tif ( this.estimationStartCallback ) {\n\n\t\t\t\tthis.estimationStartCallback();\n\t\t\t\tthis.estimationStartCallback = null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tthis.xrLight = null;\n\t\tthis.renderer = null;\n\t\tthis.lightProbe = null;\n\t\tthis.xrWebGLBinding = null;\n\n\t}\n\n}\n\nexport class XREstimatedLight extends Group {\n\n\tconstructor( renderer, environmentEstimation = true ) {\n\n\t\tsuper();\n\n\t\tthis.lightProbe = new LightProbe();\n\t\tthis.lightProbe.intensity = 0;\n\t\tthis.add( this.lightProbe );\n\n\t\tthis.directionalLight = new DirectionalLight();\n\t\tthis.directionalLight.intensity = 0;\n\t\tthis.add( this.directionalLight );\n\n\t\t// Will be set to a cube map in the SessionLightProbe if environment estimation is\n\t\t// available and requested.\n\t\tthis.environment = null;\n\n\t\tlet sessionLightProbe = null;\n\t\tlet estimationStarted = false;\n\t\trenderer.xr.addEventListener( 'sessionstart', () => {\n\n\t\t\tconst session = renderer.xr.getSession();\n\n\t\t\tif ( 'requestLightProbe' in session ) {\n\n\t\t\t\tsession.requestLightProbe( {\n\n\t\t\t\t\treflectionFormat: session.preferredReflectionFormat\n\n\t\t\t\t} ).then( ( probe ) => {\n\n\t\t\t\t\tsessionLightProbe = new SessionLightProbe( this, renderer, probe, environmentEstimation, () => {\n\n\t\t\t\t\t\testimationStarted = true;\n\n\t\t\t\t\t\t// Fired to indicate that the estimated lighting values are now being updated.\n\t\t\t\t\t\tthis.dispatchEvent( { type: 'estimationstart' } );\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\trenderer.xr.addEventListener( 'sessionend', () => {\n\n\t\t\tif ( sessionLightProbe ) {\n\n\t\t\t\tsessionLightProbe.dispose();\n\t\t\t\tsessionLightProbe = null;\n\n\t\t\t}\n\n\t\t\tif ( estimationStarted ) {\n\n\t\t\t\t// Fired to indicate that the estimated lighting values are no longer being updated.\n\t\t\t\tthis.dispatchEvent( { type: 'estimationend' } );\n\n\t\t\t}\n\n\t\t} );\n\n\t\t// Done inline to provide access to sessionLightProbe.\n\t\tthis.dispose = () => {\n\n\t\t\tif ( sessionLightProbe ) {\n\n\t\t\t\tsessionLightProbe.dispose();\n\t\t\t\tsessionLightProbe = null;\n\n\t\t\t}\n\n\t\t\tthis.remove( this.lightProbe );\n\t\t\tthis.lightProbe = null;\n\n\t\t\tthis.remove( this.directionalLight );\n\t\t\tthis.directionalLight = null;\n\n\t\t\tthis.environment = null;\n\n\t\t};\n\n\t}\n\n}\n", "import {\n\tDynamicDrawUsage,\n\tSphereGeometry,\n\tBoxGeometry,\n\tMeshStandardMaterial,\n\tInstancedMesh,\n\tMatrix4,\n\tVector3\n} from 'three';\n\nconst _matrix = new Matrix4();\nconst _vector = new Vector3();\n\nclass XRHandPrimitiveModel {\n\n\tconstructor( handModel, controller, path, handedness, options ) {\n\n\t\tthis.controller = controller;\n\t\tthis.handModel = handModel;\n\t\tthis.envMap = null;\n\n\t\tlet geometry;\n\n\t\tif ( ! options || ! options.primitive || options.primitive === 'sphere' ) {\n\n\t\t\tgeometry = new SphereGeometry( 1, 10, 10 );\n\n\t\t} else if ( options.primitive === 'box' ) {\n\n\t\t\tgeometry = new BoxGeometry( 1, 1, 1 );\n\n\t\t}\n\n\t\tconst material = new MeshStandardMaterial();\n\n\t\tthis.handMesh = new InstancedMesh( geometry, material, 30 );\n\t\tthis.handMesh.frustumCulled = false;\n\t\tthis.handMesh.instanceMatrix.setUsage( DynamicDrawUsage ); // will be updated every frame\n\t\tthis.handMesh.castShadow = true;\n\t\tthis.handMesh.receiveShadow = true;\n\t\tthis.handModel.add( this.handMesh );\n\n\t\tthis.joints = [\n\t\t\t'wrist',\n\t\t\t'thumb-metacarpal',\n\t\t\t'thumb-phalanx-proximal',\n\t\t\t'thumb-phalanx-distal',\n\t\t\t'thumb-tip',\n\t\t\t'index-finger-metacarpal',\n\t\t\t'index-finger-phalanx-proximal',\n\t\t\t'index-finger-phalanx-intermediate',\n\t\t\t'index-finger-phalanx-distal',\n\t\t\t'index-finger-tip',\n\t\t\t'middle-finger-metacarpal',\n\t\t\t'middle-finger-phalanx-proximal',\n\t\t\t'middle-finger-phalanx-intermediate',\n\t\t\t'middle-finger-phalanx-distal',\n\t\t\t'middle-finger-tip',\n\t\t\t'ring-finger-metacarpal',\n\t\t\t'ring-finger-phalanx-proximal',\n\t\t\t'ring-finger-phalanx-intermediate',\n\t\t\t'ring-finger-phalanx-distal',\n\t\t\t'ring-finger-tip',\n\t\t\t'pinky-finger-metacarpal',\n\t\t\t'pinky-finger-phalanx-proximal',\n\t\t\t'pinky-finger-phalanx-intermediate',\n\t\t\t'pinky-finger-phalanx-distal',\n\t\t\t'pinky-finger-tip'\n\t\t];\n\n\t}\n\n\tupdateMesh() {\n\n\t\tconst defaultRadius = 0.008;\n\t\tconst joints = this.controller.joints;\n\n\t\tlet count = 0;\n\n\t\tfor ( let i = 0; i < this.joints.length; i ++ ) {\n\n\t\t\tconst joint = joints[ this.joints[ i ] ];\n\n\t\t\tif ( joint.visible ) {\n\n\t\t\t\t_vector.setScalar( joint.jointRadius || defaultRadius );\n\t\t\t\t_matrix.compose( joint.position, joint.quaternion, _vector );\n\t\t\t\tthis.handMesh.setMatrixAt( i, _matrix );\n\n\t\t\t\tcount ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.handMesh.count = count;\n\t\tthis.handMesh.instanceMatrix.needsUpdate = true;\n\n\t}\n\n}\n\nexport { XRHandPrimitiveModel };\n", "import {\n\tObject3D\n} from 'three';\n\nimport {\n\tXRHandPrimitiveModel\n} from './XRHandPrimitiveModel.js';\n\nimport {\n\tXRHandMeshModel\n} from './XRHandMeshModel.js';\n\nclass XRHandModel extends Object3D {\n\n\tconstructor( controller ) {\n\n\t\tsuper();\n\n\t\tthis.controller = controller;\n\t\tthis.motionController = null;\n\t\tthis.envMap = null;\n\n\t\tthis.mesh = null;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.motionController ) {\n\n\t\t\tthis.motionController.updateMesh();\n\n\t\t}\n\n\t}\n\n}\n\nclass XRHandModelFactory {\n\n\tconstructor( gltfLoader = null, onLoad = null ) {\n\n\t\tthis.gltfLoader = gltfLoader;\n\t\tthis.path = null;\n\t\tthis.onLoad = onLoad;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\n\t\treturn this;\n\n\t}\n\n\tcreateHandModel( controller, profile ) {\n\n\t\tconst handModel = new XRHandModel( controller );\n\n\t\tcontroller.addEventListener( 'connected', ( event ) => {\n\n\t\t\tconst xrInputSource = event.data;\n\n\t\t\tif ( xrInputSource.hand && ! handModel.motionController ) {\n\n\t\t\t\thandModel.xrInputSource = xrInputSource;\n\n\t\t\t\t// @todo Detect profile if not provided\n\t\t\t\tif ( profile === undefined || profile === 'spheres' ) {\n\n\t\t\t\t\thandModel.motionController = new XRHandPrimitiveModel( handModel, controller, this.path, xrInputSource.handedness, { primitive: 'sphere' } );\n\n\t\t\t\t} else if ( profile === 'boxes' ) {\n\n\t\t\t\t\thandModel.motionController = new XRHandPrimitiveModel( handModel, controller, this.path, xrInputSource.handedness, { primitive: 'box' } );\n\n\t\t\t\t} else if ( profile === 'mesh' ) {\n\n\t\t\t\t\thandModel.motionController = new XRHandMeshModel( handModel, controller, this.path, xrInputSource.handedness, this.gltfLoader, this.onLoad );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcontroller.visible = true;\n\n\t\t} );\n\n\t\tcontroller.addEventListener( 'disconnected', () => {\n\n\t\t\tcontroller.visible = false;\n\t\t\t// handModel.motionController = null;\n\t\t\t// handModel.remove( scene );\n\t\t\t// scene = null;\n\n\t\t} );\n\n\t\treturn handModel;\n\n\t}\n\n}\n\nexport { XRHandModelFactory };\n", "import {\n\tBoxGeometry,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tObject3D\n} from 'three';\n\nclass XRPlanes extends Object3D {\n\n\tconstructor( renderer ) {\n\n\t\tsuper();\n\n\t\tconst matrix = new Matrix4();\n\n\t\tconst currentPlanes = new Map();\n\n\t\tconst xr = renderer.xr;\n\n\t\txr.addEventListener( 'planesdetected', event => {\n\n\t\t\tconst frame = event.data;\n\t\t\tconst planes = frame.detectedPlanes;\n\n\t\t\tconst referenceSpace = xr.getReferenceSpace();\n\n\t\t\tlet planeschanged = false;\n\n\t\t\tfor ( const [ plane, mesh ] of currentPlanes ) {\n\n\t\t\t\tif ( planes.has( plane ) === false ) {\n\n\t\t\t\t\tmesh.geometry.dispose();\n\t\t\t\t\tmesh.material.dispose();\n\t\t\t\t\tthis.remove( mesh );\n\n\t\t\t\t\tcurrentPlanes.delete( plane );\n\n\t\t\t\t\tplaneschanged = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( const plane of planes ) {\n\n\t\t\t\tif ( currentPlanes.has( plane ) === false ) {\n\n\t\t\t\t\tconst pose = frame.getPose( plane.planeSpace, referenceSpace );\n\t\t\t\t\tmatrix.fromArray( pose.transform.matrix );\n\n\t\t\t\t\tconst polygon = plane.polygon;\n\n\t\t\t\t\tlet minX = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tlet maxX = Number.MIN_SAFE_INTEGER;\n\t\t\t\t\tlet minZ = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tlet maxZ = Number.MIN_SAFE_INTEGER;\n\n\t\t\t\t\tfor ( const point of polygon ) {\n\n\t\t\t\t\t\tminX = Math.min( minX, point.x );\n\t\t\t\t\t\tmaxX = Math.max( maxX, point.x );\n\t\t\t\t\t\tminZ = Math.min( minZ, point.z );\n\t\t\t\t\t\tmaxZ = Math.max( maxZ, point.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst width = maxX - minX;\n\t\t\t\t\tconst height = maxZ - minZ;\n\n\t\t\t\t\tconst geometry = new BoxGeometry( width, 0.01, height );\n\t\t\t\t\tconst material = new MeshBasicMaterial( { color: 0xffffff * Math.random() } );\n\n\t\t\t\t\tconst mesh = new Mesh( geometry, material );\n\t\t\t\t\tmesh.position.setFromMatrixPosition( matrix );\n\t\t\t\t\tmesh.quaternion.setFromRotationMatrix( matrix );\n\t\t\t\t\tthis.add( mesh );\n\n\t\t\t\t\tcurrentPlanes.set( plane, mesh );\n\n\t\t\t\t\tplaneschanged = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( planeschanged ) {\n\n\t\t\t\tthis.dispatchEvent( { type: 'planeschanged' } );\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nexport { XRPlanes };\n"], - "mappings": "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H,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,KAAI;AAAA,EACJ,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,KAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,KAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EACN,OAAM;AAAA,EAC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AA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC1D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzD;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAChE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA;AAAA,MAErE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAC1E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA;AAAA,MAE3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA;AAAA,MAE3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA;AAAA,MAE3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAC1E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC3E;AAAA,MAAK;AAAA,MA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c,UAAU,WAAa,WAAW,YAAc,UAAU,UAAY,WAAW,YAAc,UAAU,WAAY,WAAW,YAAc,UAAU,WAAY,WAAW,YAAc,UAAU,WAAY,WAAW,WAAY,SAAS,UAAW,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,UAAU,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,UAAW,WAAW,YAAa,UAAU,WAAW,WAAW,WAAY,SAAS,UAAU,UAAU,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,SAAS,WAAW,WAAW,YAAa,UAAU,WAAW,UAAU,YAAa,UAAU,WAAW,UAAU,YAAa,UAAU,UAAU,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,SAAS,UAAW,UAAU,SAAS,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,UAAW,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,SAAS,WAAY,UAAU,UAAU,UAAU,UAAW,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,YAAa,UAAU,SAAS,UAAU,YAAa,SAAS,SAAS,UAAU,YAAa,WAAW,SAAS,SAAS,WAAa,WAAY,SAAS,WAAW,aAAe,UAAU,YAAa,WAAW,YAAe,UAAU,YAAa,WAAW,YAAe,UAAU,WAAa,WAAW,YAAc,UAAU,WAAa,WAAW,YAAc,UAAU,UAAY,WAAW,YAAc,UAAU,WAAa,WAAW,YAAc,UAAU,WAAY,WAAW,YAAc,UAAU,WAAY,WAAW,YAAc,UAAU,WAAY,WAAW,YAAc,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,UAAU,YAAa,UAAU,WAAY,WAAW,UAAW,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,UAAU,WAAW,YAAa,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,YAAa,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,QAAQ,WAAW,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,SAAS,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,UAAW,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,UAAW,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,UAAW,UAAU,SAAS,UAAU,YAAa,UAAU,SAAS,UAAU,YAAa,WAAW,SAAS,UAAU,WAAY,WAAW,SAAS,SAAS,UAAW,WAAY,SAAS,WAAW,aAAe,UAAU,YAAa,WAAW,YAAe,UAAU,YAAa,WAAW,YAAe,UAAU,YAAa,WAAW,YAAe,QAAQ,WAAa,WAAW,YAAc,UAAU,WAAa,WAAW,WAAa,UAAU,WAAa,WAAW,YAAc,UAAU,WAAa,WAAW,YAAc,UAAU,WAAY,WAAW,YAAc,UAAU,WAAY,WAAW,YAAc,UAAU,WAAY,WAAW,YAAa,SAAS,WAAY,WAAW,YAAa,UAAU,UAAW,WAAW,YAAa,UAAU,UAAW,WAAW,WAAY,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,WAAY,UAAU,WAAY,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,UAAW,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,SAAS,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,UAAU,YAAa,UAAU,SAAS,SAAS,YAAa,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,QAAQ,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,QAAQ,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,SAAS,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,UAAW,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,UAAW,UAAU,UAAU,SAAS,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,SAAS,WAAY,UAAU,QAAQ,UAAU,UAAW,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,UAAW,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,YAAa,UAAU,SAAS,UAAU,YAAa,WAAW,SAAS,UAAU,UAAW,WAAW,SAAS,SAAS,UAAY,WAAc,SAAS,WAAW,aAAe,UAAU,YAAa,WAAW,aAAe,UAAU,YAAa,WAAW,YAAe,UAAU,YAAa,WAAW,YAAe,UAAU,WAAa,WAAW,YAAc,UAAU,WAAa,WAAW,YAAc,UAAU,WAAa,WAAW,YAAc,SAAS,WAAa,UAAU,YAAc,UAAU,WAAa,WAAW,YAAc,UAAU,WAAY,WAAW,YAAc,UAAU,WAAY,WAAW,YAAc,UAAU,UAAW,WAAW,YAAa,UAAU,WAAY,UAAU,YAAa,UAAU,WAAY,WAAW,WAAY,UAAU,UAAW,WAAW,WAAY,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,UAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,WAAY,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,UAAU,WAAY,UAAU,SAAS,UAAU,YAAa,UAAU,WAAW,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,UAAW,UAAU,UAAU,SAAS,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,SAAS,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,SAAS,WAAY,UAAU,UAAU,SAAS,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,SAAS,SAAS,UAAU,YAAa,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,YAAa,WAAW,SAAS,UAAU,YAAa,UAAU,QAAQ,UAAU,WAAW,YAAc,QAAQ,WAAW,aAAe,UAAU,YAAa,WAAW,aAAe,SAAS,YAAa,WAAW,YAAe,SAAS,YAAa,WAAW,YAAe,UAAU,WAAa,WAAW,WAAa,UAAU,WAAa,WAAW,YAAc,UAAU,WAAa,WAAW,YAAc,UAAU,WAAa,WAAW,YAAc,UAAU,WAAa,WAAW,YAAc,SAAS,WAAa,UAAU,YAAc,UAAU,WAAY,UAAU,YAAc,UAAU,WAAY,WAAW,YAAc,UAAU,WAAY,WAAW,WAAY,UAAU,WAAY,UAAU,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,WAAY,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,SAAS,WAAW,WAAW,YAAa,SAAS,UAAU,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,QAAQ,WAAW,UAAU,YAAa,UAAU,WAAW,UAAU,UAAW,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,SAAS,WAAY,UAAU,UAAU,UAAU,UAAW,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,UAAW,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,QAAQ,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,YAAa,UAAU,QAAQ,UAAU,YAAa,UAAU,SAAS,UAAU,YAAa,WAAW,SAAS,UAAU,YAAc,WAAW,SAAS,UAAU,WAAW,YAAa,SAAS,WAAW,aAAe,UAAU,YAAa,WAAW,aAAe,UAAU,WAAY,WAAW,YAAe,UAAU,YAAa,WAAW,YAAe,SAAS,YAAa,UAAU,YAAe,UAAU,WAAa,WAAW,YAAc,SAAS,WAAa,WAAW,WAAa,UAAU,WAAa,WAAW,YAAc,SAAS,WAAa,WAAW,YAAc,QAAQ,WAAa,UAAU,YAAc,UAAU,UAAY,WAAW,YAAc,UAAU,UAAY,WAAW,YAAc,UAAU,UAAW,WAAW,YAAc,UAAU,WAAY,UAAU,WAAY,UAAU,WAAY,UAAU,YAAa,UAAU,UAAW,UAAU,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,UAAU,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,SAAS,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,SAAS,WAAW,WAAW,YAAa,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,SAAS,UAAU,SAAS,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,UAAW,UAAU,UAAU,SAAS,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,QAAQ,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,QAAQ,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,QAAQ,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,UAAW,UAAU,SAAS,UAAU,YAAa,UAAU,SAAS,SAAS,YAAa,UAAU,SAAS,UAAU,YAAa,WAAW,SAAS,UAAU,YAAc,WAAW,SAAS,SAAS,WAAW,YAAa,QAAQ,WAAY,aAAe,WAAW,YAAa,WAAY,aAAe,WAAW,YAAa,WAAY,YAAe,WAAW,YAAa,WAAY,YAAe,WAAW,YAAa,WAAY,YAAe,WAAW,YAAa,WAAY,YAAc,QAAQ,WAAa,WAAY,YAAc,WAAW,WAAa,WAAY,YAAc,WAAW,UAAY,WAAY,YAAc,WAAW,UAAY,WAAY,YAAc,WAAW,WAAa,WAAY,YAAc,WAAW,WAAa,WAAY,YAAc,UAAU,WAAa,WAAW,YAAc,UAAU,WAAY,WAAW,YAAc,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,WAAY,UAAU,WAAY,WAAW,UAAW,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,WAAY,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,WAAY,UAAU,UAAU,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,UAAU,YAAa,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,SAAS,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,SAAS,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,SAAS,UAAW,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,SAAS,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,SAAS,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,YAAa,UAAU,SAAS,SAAS,YAAa,WAAW,SAAS,UAAU,YAAa,UAAU,SAAS,SAAS,WAAW,WAAa,SAAS,WAAY,aAAe,WAAW,YAAa,WAAY,aAAe,WAAW,YAAa,WAAY,YAAe,WAAW,YAAa,WAAY,YAAe,WAAW,SAAW,WAAY,YAAe,WAAW,YAAa,WAAY,YAAe,WAAW,YAAa,WAAY,YAAc,WAAW,YAAa,WAAY,YAAc,WAAW,WAAa,WAAY,WAAa,WAAW,UAAY,WAAY,YAAc,WAAW,WAAa,WAAY,WAAa,WAAW,WAAa,WAAY,YAAc,WAAW,WAAa,WAAY,YAAc,WAAW,WAAa,WAAY,YAAc,WAAW,WAAY,WAAY,YAAc,WAAW,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,SAAU,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAW,UAAU,YAAa,UAAU,WAAW,WAAW,YAAa,QAAQ,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,UAAU,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,UAAU,YAAa,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,OAAO,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,QAAQ,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,UAAW,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,SAAU,SAAS,SAAS,UAAU,WAAY,SAAS,SAAS,UAAU,YAAa,UAAU,QAAQ,UAAU,WAAY,WAAW,QAAQ,UAAU,WAAY,WAAW,SAAS,SAAS,YAAc,WAAa,SAAS,WAAa,aAAe,WAAW,YAAa,UAAY,aAAe,WAAW,YAAa,WAAa,aAAe,UAAU,YAAa,WAAa,WAAc,SAAS,YAAa,WAAa,YAAe,UAAU,YAAa,WAAY,YAAe,WAAW,YAAa,WAAY,YAAe,WAAW,YAAa,WAAY,YAAe,WAAW,YAAa,UAAW,YAAc,WAAW,YAAa,WAAY,YAAc,WAAW,WAAa,WAAY,YAAc,WAAW,WAAa,WAAY,YAAc,WAAW,WAAa,UAAW,YAAc,WAAW,WAAa,WAAY,YAAc,WAAW,WAAa,WAAY,WAAa,WAAW,WAAY,WAAY,YAAc,WAAW,WAAY,WAAY,YAAa,WAAW,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,UAAW,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAY,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,SAAS,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,UAAU,UAAW,UAAU,WAAW,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,SAAS,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,QAAQ,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,OAAO,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,QAAQ,UAAU,YAAa,WAAW,SAAS,UAAU,YAAa,WAAW,SAAS,SAAS,YAAa,WAAW,SAAS,YAAa,OAAS,WAAY,YAAa,YAAa,aAAe,YAAa,YAAa,YAAa,aAAe,WAAa,YAAa,YAAa,aAAe,WAAa,YAAa,YAAa,aAAe,WAAa,WAAY,YAAa,aAAe,UAAW,YAAa,YAAa,WAAc,WAAY,YAAa,YAAa,YAAe,WAAY,YAAa,WAAa,YAAe,WAAY,YAAa,WAAa,YAAe,WAAY,YAAa,WAAa,YAAc,WAAW,WAAa,WAAY,YAAc,WAAW,WAAa,WAAY,YAAc,WAAW,WAAa,UAAW,YAAc,WAAW,UAAY,WAAY,YAAc,WAAW,WAAY,WAAY,YAAc,UAAU,WAAY,WAAY,YAAc,WAAW,WAAY,WAAY,YAAc,WAAW,WAAY,WAAY,YAAa,WAAW,WAAY,WAAW,YAAa,WAAW,UAAW,WAAW,YAAa,UAAU,WAAY,WAAW,WAAY,SAAS,WAAW,UAAU,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,QAAQ,WAAW,UAAU,WAAY,SAAS,WAAW,WAAW,YAAa,SAAS,UAAU,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,WAAY,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,WAAW,YAAa,UAAU,WAAW,UAAU,WAAY,UAAU,WAAW,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,UAAW,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,UAAW,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,SAAS,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,SAAS,UAAU,UAAU,UAAW,UAAU,UAAU,SAAS,WAAY,UAAU,UAAU,UAAU,SAAU,UAAU,SAAS,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,UAAU,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,SAAS,SAAS,UAAU,UAAW,UAAU,SAAS,UAAU,WAAY,UAAU,SAAS,UAAU,WAAY,SAAS,SAAS,SAAS,WAAY,UAAU,QAAQ,UAAU,WAAY,UAAU,SAAS,UAAU,UAAW,WAAW,SAAS,UAAU,YAAa,WAAW,MAAO;AAEto1K,UAAM,YAAY,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,UAAY,GAAG,WAAW,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,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YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,YAAa,UAAU,YAAa,GAAG,SAAW,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,YAAa,UAAU,YAAa,GAAG,UAAY,SAAS,YAAa,GAAG,UAAW,UAAU,YAAa,GAAG,UAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,SAAS,UAAY,GAAG,WAAW,SAAS,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,QAAQ,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,YAAa,UAAU,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,WAAW,UAAU,UAAY,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,QAAQ,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAa,UAAU,UAAY,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,SAAS,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,WAAW,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,QAAQ,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,QAAQ,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,UAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,YAAa,UAAU,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,WAAY,UAAU,UAAY,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,SAAS,UAAY,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,SAAS,YAAa,GAAG,WAAW,UAAU,UAAY,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,GAAG,UAAW,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,UAAU,UAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,QAAQ,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,SAAS,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,SAAS,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,SAAS,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,YAAa,UAAU,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,SAAS,UAAY,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,SAAS,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,QAAQ,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,UAAW,UAAU,YAAa,GAAG,UAAW,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,SAAS,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,SAAS,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,YAAa,UAAU,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,UAAW,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,SAAS,YAAa,GAAG,WAAW,UAAU,UAAY,GAAG,WAAW,SAAS,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,QAAQ,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,SAAS,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,QAAQ,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,YAAa,UAAU,YAAa,GAAG,WAAa,SAAS,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,UAAW,UAAU,YAAa,GAAG,WAAW,SAAS,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,WAAa,SAAS,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,SAAS,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,SAAS,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,SAAS,SAAS,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,GAAG,UAAW,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,UAAW,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,YAAa,UAAU,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,SAAS,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,UAAY,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,QAAU,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,QAAQ,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,UAAU,UAAU,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,SAAW,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,QAAQ,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,WAAY,SAAS,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,YAAa,GAAG,UAAU,UAAU,UAAY,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,UAAY,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,YAAa,UAAU,YAAa,GAAG,WAAa,UAAU,UAAY,GAAG,WAAY,UAAU,YAAa,GAAG,UAAW,SAAS,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAW,UAAU,UAAY,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,YAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,SAAS,UAAY,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,SAAS,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,UAAY,GAAG,GAAG,UAAU,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,UAAY,GAAG,WAAW,SAAS,YAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,SAAW,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,YAAa,UAAU,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,WAAW,SAAS,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,SAAS,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,SAAS,WAAa,GAAG,SAAS,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,YAAa,UAAU,YAAa,GAAG,WAAa,UAAU,WAAa,GAAG,UAAW,UAAU,YAAa,GAAG,WAAY,SAAS,YAAa,GAAG,WAAY,UAAU,YAAa,GAAG,WAAW,UAAU,UAAY,GAAG,WAAW,SAAS,WAAa,GAAG,WAAW,SAAS,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,UAAY,GAAG,WAAW,UAAU,UAAY,GAAG,WAAW,UAAU,UAAY,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,UAAY,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,YAAa,UAAU,YAAa,GAAG,WAAa,UAAU,YAAa,GAAG,WAAY,UAAU,SAAW,GAAG,WAAY,UAAU,WAAa,GAAG,WAAY,SAAS,WAAa,GAAG,WAAY,UAAU,UAAY,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,SAAS,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,SAAW,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,SAAW,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,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WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,SAAS,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,UAAY,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,UAAY,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,SAAS,YAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,UAAY,GAAG,WAAa,UAAU,WAAa,GAAG,WAAa,UAAU,WAAa,GAAG,WAAY,UAAU,WAAa,GAAG,WAAY,UAAU,WAAa,GAAG,WAAY,UAAU,UAAY,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,SAAS,UAAY,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,GAAG,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,YAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,YAAa,UAAU,WAAa,GAAG,WAAa,UAAU,WAAa,GAAG,UAAW,UAAU,WAAa,GAAG,WAAY,UAAU,WAAa,GAAG,WAAY,UAAU,WAAa,GAAG,WAAY,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,SAAS,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,UAAY,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,SAAS,OAAO,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,GAAG,GAAG,WAAa,GAAG,GAAG,GAAG,UAAY,GAAG,GAAG,GAAG,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,SAAS,UAAY,GAAG,GAAG,UAAU,WAAa,GAAG,YAAa,UAAU,WAAa,GAAG,WAAa,UAAU,WAAa,GAAG,WAAY,UAAU,WAAa,GAAG,WAAY,UAAU,WAAa,GAAG,WAAY,SAAS,WAAa,GAAG,WAAW,SAAS,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,SAAS,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,WAAW,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,QAAQ,UAAU,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WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,SAAS,SAAS,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,GAAG,GAAG,WAAa,GAAG,GAAG,GAAG,WAAa,GAAG,GAAG,GAAG,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,YAAa,UAAU,WAAa,GAAG,WAAa,UAAU,WAAa,GAAG,WAAY,UAAU,WAAa,GAAG,WAAY,UAAU,WAAa,GAAG,WAAY,UAAU,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,UAAW,GAAG,WAAW,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,UAAW,GAAG,SAAS,UAAU,WAAY,GAAG,SAAS,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,QAAQ,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,UAAY,GAAG,UAAU,UAAU,WAAa,GAAG,GAAG,GAAG,WAAa,GAAG,GAAG,GAAG,WAAa,GAAG,GAAG,GAAG,UAAY,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,GAAG,UAAU,WAAa,GAAG,YAAa,UAAU,WAAa,GAAG,WAAa,SAAS,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,QAAQ,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,SAAS,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,UAAU,UAAU,WAAa,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,UAAW,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,WAAa,UAAU,WAAY,GAAG,WAAa,UAAU,UAAW,GAAG,WAAY,UAAU,WAAY,GAAG,WAAY,SAAS,WAAY,GAAG,WAAY,UAAU,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WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,UAAW,GAAG,GAAG,UAAU,WAAY,GAAG,WAAa,UAAU,WAAY,GAAG,WAAY,SAAS,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,WAAW,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,QAAQ,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,SAAS,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAa,GAAG,GAAG,GAAG,UAAW,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,SAAS,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,SAAS,WAAY,GAAG,GAAG,UAAU,UAAW,GAAG,GAAG,UAAU,WAAY,GAAG,YAAa,UAAU,WAAY,GAAG,WAAa,UAAU,WAAY,GAAG,UAAW,UAAU,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,UAAW,QAAQ,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,UAAW,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,UAAW,GAAG,WAAW,UAAU,UAAW,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,GAAG,UAAW,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,YAAa,UAAU,WAAY,GAAG,WAAa,UAAU,SAAU,GAAG,WAAY,UAAU,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,WAAW,SAAS,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,UAAW,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,SAAS,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,SAAU,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,WAAa,UAAU,WAAY,GAAG,WAAY,SAAS,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,WAAY,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,WAAW,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,SAAS,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,WAAW,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,GAAG,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,GAAG,UAAU,WAAY,GAAG,YAAa,UAAU,WAAY,GAAG,WAAa,UAAU,WAAY,GAAG,UAAW,UAAU,WAAY,GAAG,WAAY,UAAU,SAAU,GAAG,WAAY,UAAU,WAAY,GAAG,WAAW,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,WAAW,SAAS,WAAY,GAAG,WAAW,UAAU,UAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,SAAS,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,SAAS,UAAW,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,YAAa,UAAU,WAAW,GAAG,WAAa,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,UAAW,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,QAAS,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,SAAS,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,WAAa,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAY,SAAS,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,SAAS,UAAU,UAAW,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,QAAQ,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,YAAa,UAAU,WAAW,GAAG,WAAa,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,UAAW,UAAU,WAAW,GAAG,WAAY,UAAU,UAAU,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,UAAU,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,SAAS,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,YAAa,UAAU,WAAW,GAAG,UAAY,SAAS,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,SAAS,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,QAAQ,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,QAAQ,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,WAAW,GAAG,UAAY,UAAU,UAAU,GAAG,WAAY,SAAS,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,SAAS,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,OAAO,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,YAAa,UAAU,WAAW,GAAG,WAAa,UAAU,WAAW,GAAG,UAAW,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,QAAQ,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,SAAS,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,YAAa,UAAU,WAAW,GAAG,WAAa,UAAU,WAAW,GAAG,UAAW,UAAU,WAAW,GAAG,WAAY,SAAS,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,SAAS,WAAW,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,QAAQ,WAAY,GAAG,SAAS,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,WAAa,SAAS,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,UAAU,SAAS,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,WAAa,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,UAAW,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,WAAW,SAAS,UAAU,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,QAAQ,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,SAAS,WAAY,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,SAAS,GAAG,GAAG,UAAU,WAAW,GAAG,YAAa,UAAU,WAAW,GAAG,WAAa,UAAU,WAAW,GAAG,WAAY,UAAU,UAAU,GAAG,WAAY,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,SAAS,WAAW,GAAG,SAAS,UAAU,UAAU,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,GAAG,UAAU,WAAW,GAAG,WAAa,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,WAAY,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,WAAW,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,SAAS,UAAU,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,UAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,SAAS,UAAU,GAAG,GAAG,SAAS,UAAU,GAAG,WAAa,UAAU,UAAU,GAAG,WAAY,UAAU,UAAU,GAAG,WAAY,UAAU,UAAU,GAAG,WAAY,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,SAAS,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,QAAQ,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,SAAS,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,YAAa,UAAU,UAAU,GAAG,WAAa,UAAU,UAAU,GAAG,WAAY,UAAU,UAAU,GAAG,WAAY,UAAU,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,MAAM,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,QAAQ,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,OAAO,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,QAAQ,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,SAAS,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,YAAa,UAAU,UAAU,GAAG,UAAW,UAAU,UAAU,GAAG,WAAY,UAAU,SAAS,GAAG,WAAY,UAAU,UAAU,GAAG,WAAW,QAAQ,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,QAAQ,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,QAAQ,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,UAAU,UAAU,WAAY,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,WAAa,UAAU,UAAU,GAAG,WAAY,UAAU,SAAS,GAAG,WAAY,UAAU,UAAU,GAAG,WAAY,SAAS,UAAU,GAAG,WAAW,QAAQ,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,WAAW,SAAS,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,WAAa,UAAU,SAAS,GAAG,WAAY,UAAU,UAAU,GAAG,WAAY,UAAU,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,QAAQ,UAAU,GAAG,WAAW,SAAS,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,SAAS,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,QAAQ,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,YAAa,UAAU,UAAU,GAAG,WAAY,UAAU,UAAU,GAAG,WAAY,UAAU,SAAS,GAAG,WAAY,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,WAAW,UAAU,QAAQ,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,SAAS,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,SAAS,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,WAAa,UAAU,UAAU,GAAG,WAAY,UAAU,UAAU,GAAG,WAAY,SAAS,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,SAAS,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,SAAS,UAAU,GAAG,WAAa,UAAU,UAAU,GAAG,WAAY,UAAU,UAAU,GAAG,WAAY,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,WAAW,UAAU,SAAS,GAAG,WAAW,UAAU,SAAS,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,SAAS,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,QAAQ,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,QAAQ,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,SAAS,WAAW,GAAG,QAAQ,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,WAAY,UAAU,SAAS,GAAG,WAAY,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,SAAS,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,SAAS,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,SAAS,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,QAAQ,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,YAAa,UAAU,UAAU,GAAG,WAAY,UAAU,UAAU,GAAG,WAAY,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,SAAS,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,SAAS,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,SAAS,SAAS,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,SAAS,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,QAAQ,WAAW,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,WAAa,SAAS,UAAU,GAAG,WAAY,UAAU,SAAS,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,SAAS,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,QAAQ,SAAS,GAAG,UAAU,SAAS,UAAU,GAAG,UAAU,QAAQ,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,QAAQ,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,SAAS,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,UAAU,UAAU,GAAG,WAAY,UAAU,UAAU,GAAG,WAAW,UAAU,SAAS,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,SAAS,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,SAAS,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,SAAS,UAAU,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,SAAS,GAAG,SAAS,UAAU,UAAU,GAAG,UAAU,SAAS,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,SAAS,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,SAAS,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,SAAS,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,SAAS,UAAU,GAAG,QAAQ,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,QAAQ,SAAS,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,SAAS,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,SAAS,UAAU,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,UAAU,UAAU,WAAW,GAAG,SAAS,UAAU,WAAW,GAAG,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,WAAW,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,UAAU,UAAU,GAAG,SAAS,SAAS,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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqNV;AAAA;AAAA,IACU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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;AAErC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AAErC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AAErC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,eAAe,IAAK,EAAG,CAAE;AACrC,UAAK,EAAG,IAAIA,e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,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,CAAE;AACzyE,MAAI,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GA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,GAAG,IAAI,CAAE,KAAK,IAAI,EAAG,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,IAAI,GAAI,GAAG,IAAI,CAAE,GAAG,KAAK,CAAE,GAAG,GAAG,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,GAAG,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,IAAI,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,CAAE,GAAG,GAAG,CAAE,KAAK,GAAG,GAAI,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,IAAI,GAAI,GAAG,IAAI,CAAE,GAAG,KAAK,CAAE,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,GAAG,KAAK,GAAI,GAAG,IAAI,CAAE,GAAG,KAAK,GAAI,GAAG,IAAI,CAAE,GAAG,KAAK,EAAG,GAAG,IAAI,CAAE,GAAG,KAAK,EAAG,GAAG,IAAI,CAAE,GAAG,KAAK,EAAG,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,GAAG,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,IAAI,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,KAAK,EAAG,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,KAAK,IAAI,EAAG,GAAG,IAAI,CAAE,IAAI,IAAI,EAAG,GAAG,IAAI,CAAE,KAAK,IAAI,GAAI,GAAG,IAAI,CAAE,KAAK,IAAI,CAAE,GAAG,IAAI,CAAE,KAAK,IAAI,EAAG,GAAG,IAAI,CAAE,IAAI,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,GAAG,GAAI,GAAG,IAAI,CAAE,GAAG,KAAK,CAAE,GAAG,IAAI,CAAE,KAAK,KAAK,GAAI,GAAG,IAAI,CAAE,GAAG,KAAK,GAAI,GAAG,IAAI,CAAE,GAAG,KAAK,GAAI,GAAG,GAAG,CAAE,GAAG,KAAK,GAAI,GAAG,IAAI,CAAE,GAAG,KAAK,GAAI,GAAG,IAAI,CAAE,GAAG,KAAK,GAAI,GAAG,IAAI,CAAE,IAAI,IAAI,GAAI,GAAG,IAAI,CAAE,KAAK,IAAI,GAAI,GAAG,IAAI,CAAE,KAAK,IAAI,GAAI,GAAG,IAAI,CAAE,KAAK,IAAI,GAAI,GAAG,IAAI,CAAE,KAAK,IAAI,GAAI,GAAG,IAAI,CAAE,KAAK,IAAI,GAAI,GAAG,IAAI,CAAE,KAAK,IAAI,GAAI,GAAG,IAAI,CAAE,KAAK,IAAI,GAAI,GAAG,IAAI,CAAE,KAAK,GAAG,GAAI,GAAG,IAAI,CAAE,KAAK,GAAG,EAAG,GAAG,IAAI,CAAE,KAAK,GAAG,EAAG,GAAG,IAAI,CAAE,KAAK,GAAG,EAAG,GAAG,IAAI,CAAE,KAAK,GAAG,EAAG,GAAG,IAAI,CAAE,KAAK,GAAG,EAAG,GAAG,IAAI,CAAE,KAAK,GAAG,EAAG,GAAG,IAAI,CAAE,KAAK,GAAG,EAAG,GAAG,IAAI,CAAE,KAAK,GAAG,EAAG,GAAG,IAAI,CAAE,KAAK,GAAG,EAAG,GAAG,KAAK,CAAE,KAAK,GAAG,EAAG,GAAG,KAAK,CAAE,KAAK,GAAG,EAAG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AE,IAAG,IAAG,OAAM,GAAE,IAAG,IAAG,OAAM,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,QAAO,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,KAAI,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,IAAG,IAAG,SAAQ,GAAE,KAAI,IAAG,SAAQ,GAAE,KAAI,IAAG,SAAQ,GAAE,KAAI,IAAG,SAAQ,GAAE,KAAI,IAAG,SAAQ,GAAE,KAAI,IAAG,SAAQ,GAAE,KAAI,IAAG,SAAQ,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GAAE,KAAI,IAAG,UAAS,GA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E,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAA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AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACT;AAcA,IAAI,sBAAsB;AAAA,EACtB,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AACT;AAkBA,IAAI,mBAAmB;AAAA,EACnB,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,OAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,OAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AAAA,EACR,OAAQ;AAAA,EACR,OAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASR,MAAQ;AAAA,EACR,MAAQ;AAAA,EAER,OAAQ;AAAA,EACR,OAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ;AACZ;AAIA,SAAS,gBAAgB,YAAY,YAAYC,OAAM;AACnD,UAAQ,YAAY;AAAA,IAChB,KAAK;AACD,UAAI,eAAe,OAAQ;AACvB,eAAO;AAAA,MACX,WAAWA,OAAM;AACb,eAAOA,MAAK,UAAU;AAAA,MAC1B;AAEA;AAAA,IAEJ,KAAK;AACD,aAAO,aAAa,UAAU;AAAA,IAElC,KAAK;AACD,aAAO,iBAAiB,UAAU;AAAA,EAC1C;AAEA,SAAO;AACX;AAEA,IAAI,QAAQ;AAIZ,IAAI,qBAAqB;AAAA,EACrB,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AACR;AAQA,IAAI,uBAAuB;AAAA,EACvB,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,KAAK;AAAA;AAAA,EACL,KAAK;AAAA;AACT;AAEA,SAAS,YAAY,YAAY,YAAY,YAAY;AACrD,UAAQ,YAAY;AAAA,IAChB,KAAK;AACD,aAAO;AAAA,IAEX,KAAK;AACD,aAAO,qBAAqB,UAAU,KAAK,mBAAmB,UAAU;AAAA,IAE5E,KAAK;AACD,UAAI,eAAe,KAAK,eAAe,IAAI;AACvC,eAAO;AAAA,MACX;AAEA;AAAA,EACR;AAEA,SAAO;AACX;AAKA,SAAS,eAAe5B,OAAM,OAAO4B,OAAM;AACvC,MAAIhB,QAAO,CAAC;AACZ,MAAIH,KAAI,IAAI,MAAM,OAAOT,OAAM,KAAK;AACpC,MAAI,SAASS,GAAE,YAAY;AAC3B,MAAI,QAAQA,GAAE,YAAY;AAC1B,MAAIoB,gBAAepB,GAAE,SAASA,GAAE,YAAY;AAC5C,WAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC5B,QAAI,aAAaA,GAAE,YAAY;AAC/B,QAAI,aAAaA,GAAE,YAAY;AAC/B,QAAI,aAAaA,GAAE,YAAY;AAC/B,QAAI,SAASA,GAAE,YAAY;AAC3B,QAAIqB,YAAW,eAAe,MAAM,KAAK;AACzC,QAAI,aAAarB,GAAE,YAAY;AAC/B,QAAI,SAASA,GAAE,YAAY;AAC3B,QAAI,WAAW,gBAAgB,YAAY,YAAYmB,KAAI;AAC3D,QAAI,WAAW,YAAY,YAAY,YAAY,UAAU;AAC7D,QAAI,aAAa,UAAa,aAAa,QAAW;AAClD,UAAIG,QAAQ;AACZ,UAAI,aAAa,OAAO;AACpB,QAAAA,QAAO,OAAO,MAAM/B,OAAM6B,gBAAe,QAAQ,UAAU;AAAA,MAC/D,OAAO;AACH,QAAAE,QAAO,OAAO,UAAU/B,OAAM6B,gBAAe,QAAQ,YAAY,QAAQ;AAAA,MAC7E;AAEA,UAAIE,OAAM;AACN,YAAI,eAAenB,MAAKkB,SAAQ;AAChC,YAAI,iBAAiB,QAAW;AAC5B,yBAAelB,MAAKkB,SAAQ,IAAI,CAAC;AAAA,QACrC;AAEA,qBAAa,QAAQ,IAAIC;AAAA,MAC7B;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,eAAe;AACnB,MAAI,WAAW,GAAG;AAEd,mBAAetB,GAAE,YAAY;AAAA,EACjC;AAEA,SAAOG;AACX;AAIA,SAAS,YAAY,MAAM;AACvB,MAAI,SAAS,CAAC;AACd,WAASO,QAAO,MAAM;AAClB,WAAO,KAAKA,IAAG,CAAC,IAAI,SAASA,IAAG;AAAA,EACpC;AAEA,SAAO;AACX;AAEA,SAAS,eAAe,YAAY,YAAY,YAAY,QAAQhC,SAAQ,QAAQ;AAChF,SAAO,IAAI,MAAM,OAAO,cAAc;AAAA,IAClC,EAAC,MAAM,cAAc,MAAM,UAAU,OAAO,WAAU;AAAA,IACtD,EAAC,MAAM,cAAc,MAAM,UAAU,OAAO,WAAU;AAAA,IACtD,EAAC,MAAM,cAAc,MAAM,UAAU,OAAO,WAAU;AAAA,IACtD,EAAC,MAAM,UAAU,MAAM,UAAU,OAAO,OAAM;AAAA,IAC9C,EAAC,MAAM,UAAU,MAAM,UAAU,OAAOA,QAAM;AAAA,IAC9C,EAAC,MAAM,UAAU,MAAM,UAAU,OAAO,OAAM;AAAA,EAClD,CAAC;AACL;AAIA,SAAS,aAAa,QAAQ,UAAU;AACpC,MAAI,eAAe,OAAO;AAC1B,MAAI,QAAQ,SAAS,SAAS,eAAe;AAE7C;AACA,aAAS,MAAM,GAAG,MAAM,OAAO,OAAO;AAClC,aAAO,MAAM,OAAO,OAAO;AACvB,iBAASiB,KAAI,GAAGA,KAAI,cAAcA,MAAK;AACnC,cAAI,SAAS,MAAMA,EAAC,MAAM,OAAOA,EAAC,GAAG;AACjC,qBAAS;AAAA,UACb;AAAA,QACJ;AAEA,eAAO;AAAA,MACX;AAAA,IACJ;AAEA,SAAO;AACX;AAEA,SAAS,gBAAgB,GAAG,MAAM;AAC9B,MAAI,SAAS,aAAa,GAAG,IAAI;AACjC,MAAI,SAAS,GAAG;AACZ,aAAS,KAAK;AACd,QAAI,IAAI;AACR,QAAI,MAAM,EAAE;AACZ,WAAO,IAAI,KAAK,EAAE,GAAG;AACjB,WAAK,KAAK,EAAE,CAAC,CAAC;AAAA,IAClB;AAAA,EAEJ;AAEA,SAAO;AACX;AAEA,SAAS,cAAc,OAAOwB,OAAM;AAChC,MAAI;AACJ,MAAI,UAAU,CAAC;AAEf,MAAI,uBAAuB,CAAC;AAC5B,MAAI,eAAe,YAAY,cAAc;AAC7C,WAAST,QAAO,OAAO;AACnB,QAAI,KAAK,aAAaA,IAAG;AACzB,QAAI,OAAO,QAAW;AAClB,WAAKA;AAAA,IACT;AAEA,aAAS,SAAS,EAAE;AAEpB,QAAI,MAAM,MAAM,GAAG;AACf,YAAM,IAAI,MAAM,uBAAuBA,OAAM,yDAAyD;AAAA,IAC1G;AAEA,yBAAqB,MAAM,IAAI,MAAMA,IAAG;AACxC,YAAQ,KAAK,MAAM;AAAA,EACvB;AAEA,MAAI,iBAAiB,YAAY,YAAY;AAC7C,MAAI,qBAAqB,YAAY,gBAAgB;AAErD,MAAI,cAAc,CAAC;AACnB,MAAI,aAAa,CAAC;AAElB,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,aAAS,QAAQ,CAAC;AAClB,QAAI,eAAe,qBAAqB,MAAM;AAC9C,aAAS,QAAQ,cAAc;AAC3B,UAAIY,QAAO,aAAa,IAAI;AAgB5B,UAAI,cAAc;AAClB,UAAI,cAAc,eAAe,IAAI;AACrC,UAAI,YAAY,oBAAoB,WAAW;AAC/C,UAAI,cAAc,YAAY,aAAa,WAAW,WAAW;AACjE,UAAI,UAAU,OAAO,UAAUA,OAAM,WAAW;AAChD,UAAI,YAAY,QAAW;AACvB,sBAAc;AACd,sBAAcH,MAAK,QAAQ,IAAI;AAC/B,YAAI,cAAc,GAAG;AACjB,wBAAcA,MAAK;AACnB,UAAAA,MAAK,KAAK,IAAI;AAAA,QAClB;AAEA,oBAAY;AACZ,kBAAU,OAAO,MAAMG,KAAI;AAAA,MAC/B;AAEA,UAAI,gBAAgB,gBAAgB,SAAS,UAAU;AACvD,kBAAY,KAAK;AAAA,QAAe;AAAA,QAAa;AAAA,QAAW;AAAA,QACxB;AAAA,QAAQ,QAAQ;AAAA,QAAQ;AAAA,MAAa,CAAC;AAEtE,UAAI,cAAc,mBAAmB,IAAI;AACzC,UAAI,gBAAgB,QAAW;AAC3B,YAAI,UAAU,OAAO,MAAMA,KAAI;AAC/B,YAAI,gBAAgB,gBAAgB,SAAS,UAAU;AACvD,oBAAY,KAAK;AAAA,UAAe;AAAA,UAAG;AAAA,UAAG;AAAA,UACN;AAAA,UAAQ,QAAQ;AAAA,UAAQ;AAAA,QAAa,CAAC;AAAA,MAC1E;AAAA,IACJ;AAAA,EACJ;AAEA,cAAY,KAAK,SAASrC,IAAGD,IAAG;AAC5B,WAASC,GAAE,aAAaD,GAAE,cACjBC,GAAE,aAAaD,GAAE,cACjBC,GAAE,aAAaD,GAAE,cACjBC,GAAE,SAASD,GAAE;AAAA,EAC1B,CAAC;AAED,MAAIT,KAAI,IAAI,MAAM,MAAM,QAAQ;AAAA,IAC5B,EAAC,MAAM,UAAU,MAAM,UAAU,OAAO,EAAC;AAAA,IACzC,EAAC,MAAM,SAAS,MAAM,UAAU,OAAO,YAAY,OAAM;AAAA,IACzD,EAAC,MAAM,gBAAgB,MAAM,UAAU,OAAO,IAAI,YAAY,SAAS,GAAE;AAAA,EAC7E,CAAC;AAED,WAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AACzC,IAAAA,GAAE,OAAO,KAAK,EAAC,MAAM,YAAY,GAAG,MAAM,UAAU,OAAO,YAAY,CAAC,EAAC,CAAC;AAAA,EAC9E;AAEA,EAAAA,GAAE,OAAO,KAAK,EAAC,MAAM,WAAW,MAAM,WAAW,OAAO,WAAU,CAAC;AACnE,SAAOA;AACX;AAEA,IAAI,QAAQ,EAAE,OAAO,gBAAgB,MAAM,cAAc;AAIzD,IAAI,gBAAgB;AAAA,EAChB,EAAC,OAAO,GAAQ,KAAK,IAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,KAAQ,KAAK,IAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,KAAQ,KAAK,IAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,KAAQ,KAAK,IAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,KAAQ,KAAK,IAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,KAAQ,KAAK,IAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,KAAQ,KAAK,IAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,KAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,OAAQ,KAAK,MAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,OAAQ,KAAK,MAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,KAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,MAAQ,KAAK,MAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,OAAQ,KAAK,MAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,OAAQ,KAAK,MAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,OAAQ,KAAK,MAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,OAAQ,KAAK,MAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,OAAQ,KAAK,MAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,OAAQ,KAAK,MAAM;AAAA;AAAA,EAC3B,EAAC,OAAO,OAAQ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AAC;AAAA;AAAA,EACvB,MAAM,KAAK,QAAW,CAAC;AAAA;AAAA,EACvB,MAAM,KAAK,QAAW,CAAC;AAAA;AAAA,EACvB,MAAM,KAAK,QAAW,CAAC;AAAA;AAAA,EACvB,MAAM,KAAK,QAAW,CAAC;AAAA;AAAA,EACvB,MAAM,KAAK,QAAW,CAAC;AAAA;AAAA,EACvB,MAAM,KAAK,QAAW,CAAC;AAAA;AAAA,EACvB,MAAM,KAAK,QAAW,CAAC;AAAA;AAAA,EACvB,MAAM,KAAK,QAAW,CAAC;AAAA;AAAA,EACvB,MAAM,KAAK,QAAW,CAAC;AAAA;AAAA,EACvB,MAAM,KAAK,QAAW,CAAC;AAAA;AAAA,EACvB,MAAM,KAAK,QAAW,CAAC;AAAA;AAAA,EACvB,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,EACvC,UAAU,KAAK,QAAW,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAA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AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpF;AAAA,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AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EACpH;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EACpH;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtH;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnH;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EACtH;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EACnH;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrH;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAI;AAE9E,SAAU,IAAI,GAAG,IAAI,KAAK,KAAO;AAEhC,KAAI,MAAM,CAAE,IAAI,GAAI,CAAE;AAEvB;AAEA,SAAS,KAAMC,IAAI;AAElB,SAAOA,KAAIA,KAAIA,MAAMA,MAAMA,KAAI,IAAI,MAAO;AAE3C;AAEA,SAAS,KAAMA,IAAGC,IAAGC,IAAI;AAExB,SAAOD,KAAID,MAAME,KAAID;AAEtB;AAEA,SAAS,KAAM,MAAME,IAAGC,IAAG,GAAI;AAE9B,QAAM,IAAI,OAAO;AACjB,QAAM,IAAI,IAAI,IAAID,KAAIC,IAAG,IAAI,IAAI,IAAIA,KAAI,KAAK,MAAM,KAAK,KAAKD,KAAI;AAClE,WAAW,IAAI,MAAO,IAAI,IAAI,CAAE,OAAU,IAAI,MAAO,IAAI,IAAI,CAAE;AAEhE;AAEA,IAAM,gBAAN,MAAoB;AAAA,EAEnB,MAAOA,IAAGC,IAAG,GAAI;AAEhB,UAAM,SAAS,KAAK,MAAOD,EAAE,GAAG,SAAS,KAAK,MAAOC,EAAE,GAAG,SAAS,KAAK,MAAO,CAAE;AAEjF,UAAMC,KAAI,SAAS,KAAKC,KAAI,SAAS,KAAKC,KAAI,SAAS;AAEvD,IAAAJ,MAAK;AACL,IAAAC,MAAK;AACL,SAAK;AAEL,UAAM,UAAUD,KAAI,GAAG,UAAUC,KAAI,GAAG,UAAU,IAAI;AAEtD,UAAM,IAAI,KAAMD,EAAE,GAAG,IAAI,KAAMC,EAAE,GAAG,IAAI,KAAM,CAAE;AAEhD,UAAMI,KAAI,GAAIH,EAAE,IAAIC,IAAG,KAAK,GAAIE,EAAE,IAAID,IAAG,KAAK,GAAIC,KAAI,CAAE,IAAID,IAAGE,KAAI,GAAIJ,KAAI,CAAE,IAAIC,IAAG,KAAK,GAAIG,EAAE,IAAIF,IAAG,KAAK,GAAIE,KAAI,CAAE,IAAIF;AAEzH,WAAO;AAAA,MAAM;AAAA,MAAG;AAAA,QAAM;AAAA,QAAG;AAAA,UAAM;AAAA,UAAG,KAAM,GAAI,EAAG,GAAGJ,IAAGC,IAAG,CAAE;AAAA,UACzD,KAAM,GAAI,EAAG,GAAG,SAASA,IAAG,CAAE;AAAA,QAAE;AAAA,QACjC;AAAA,UAAM;AAAA,UAAG,KAAM,GAAI,EAAG,GAAGD,IAAG,SAAS,CAAE;AAAA,UACtC,KAAM,GAAI,EAAG,GAAG,SAAS,SAAS,CAAE;AAAA,QAAE;AAAA,MAAE;AAAA,MACzC;AAAA,QAAM;AAAA,QAAG;AAAA,UAAM;AAAA,UAAG,KAAM,GAAI,KAAK,CAAE,GAAGA,IAAGC,IAAG,OAAQ;AAAA,UACnD,KAAM,GAAI,KAAK,CAAE,GAAG,SAASA,IAAG,OAAQ;AAAA,QAAE;AAAA,QAC3C;AAAA,UAAM;AAAA,UAAG,KAAM,GAAI,KAAK,CAAE,GAAGD,IAAG,SAAS,OAAQ;AAAA,UAChD,KAAM,GAAI,KAAK,CAAE,GAAG,SAAS,SAAS,OAAQ;AAAA,QAAE;AAAA,MAAE;AAAA,IAAE;AAAA,EAEtD;AAED;;;AC9DA,IAAM,MAAN,MAAU;AAAA,EAER,YAAa,UAAU,QAAQ,IAAK;AAEpC,SAAK,QAAQ;AAEb,SAAK,MAAM,CAAC;AACZ,SAAK,MAAM,CAAC;AACZ,SAAK,IAAI;AACT,SAAK,OAAO;AACZ,SAAK,OAAO;AAEZ,SAAK,YAAa,UAAU,KAAM;AAAA,EAEnC;AAAA,EAEA,IAAKO,QAAQ;AAEZ,QAAKA,OAAM,UAAU,MAAO;AAE3B,WAAK,KAAMA,MAAM;AAAA,IAElB;AAEA,WAAO;AAAA,EAER;AAAA,EAEA,OAAQ,KAAM;AAEb,SAAK,OAAO;AAEZ,WAAO;AAAA,EAER;AAAA,EAEA,OAAQC,MAAM;AAEb,SAAK,OAAOA;AAEZ,WAAO;AAAA,EAER;AAAA,EAEA,YAAa,UAAU,QAAQ,IAAK;AAEnC,SAAK,MAAM,iBAAkB,QAAS,KAAK,iBAAiB;AAC5D,SAAK,IAAI;AAET,UAAM,OAAO,IAAM,KAAK;AACxB,UAAM,WAAW,IAAI,MAAM;AAC3B,UAAM,WAAW,IAAI,MAAM;AAE3B,SAAK,IAAI,SAAS;AAIlB,SAAK,IAAI,KAAM,IAAI,MAAO,KAAK,IAAK,CAAE,EAAG,CAAE,CAAE,CAAE;AAI/C,aAAU,IAAI,GAAG,IAAI,OAAO,KAAO;AAElC,YAAM,QAAQ,IAAI;AAElB,eAAU,IAAI,GAAG,IAAI,KAAK,IAAI,SAAS,GAAG,KAAO;AAEhD,YAAK,QAAQ,KAAK,IAAK,CAAE,EAAG,CAAE,KAAK,SAAS,KAAK,IAAK,IAAI,CAAE,EAAG,CAAE,GAAI;AAEpE,gBAAM,MAAM,KAAK,IAAK,CAAE,EAAG,CAAE;AAC7B,gBAAMA,OAAM,KAAK,IAAK,IAAI,CAAE,EAAG,CAAE;AAEjC,mBAAS,OAAQ,KAAK,IAAK,CAAE,EAAG,CAAE,GAAG,oBAAqB;AAC1D,mBAAS,OAAQ,KAAK,IAAK,IAAI,CAAE,EAAG,CAAE,GAAG,oBAAqB;AAE9D,gBAAM,QAAQ,IAAI,MAAM,EAAE,WAAY,UAAU,WAAY,QAAQ,QAAUA,OAAM,IAAM;AAE1F,eAAK,IAAI,KAAM,KAAM;AAAA,QAEtB;AAAA,MAED;AAAA,IAED;AAIA,SAAK,IAAI,KAAM,IAAI,MAAO,KAAK,IAAK,KAAK,IAAI,SAAS,CAAE,EAAG,CAAE,CAAE,CAAE;AAEjE,WAAO;AAAA,EAER;AAAA,EAEA,KAAM,KAAM;AAEX,SAAK,MAAM,IAAI;AACf,SAAK,MAAM,IAAI;AACf,SAAK,IAAI,IAAI;AACb,SAAK,OAAO,IAAI;AAChB,SAAK,OAAO,IAAI;AAEhB,WAAO;AAAA,EAER;AAAA,EAEA,SAAU,OAAQ;AAEjB,YAAQ,UAAU,MAAO,OAAO,KAAK,MAAM,KAAK,IAAK;AAErD,aAAU,QAAQ,KAAK,SAAW,KAAK,OAAO,KAAK;AAEnD,UAAM,gBAAgB,KAAK,MAAO,QAAQ,KAAK,CAAE;AAEjD,WAAO,KAAK,IAAK,aAAc;AAAA,EAEhC;AAAA,EAEA,YAAaC,OAAM,eAAgB;AAElC,qBAAkBA,KAAK,IAAI;AAE3B,WAAO;AAAA,EAER;AAAA,EAEA,eAAe;AAEd,UAAM,SAAS,SAAS,cAAe,QAAS;AAChD,WAAO,QAAQ;AACf,WAAO,SAAS,KAAK;AAErB,SAAK,aAAc,MAAO;AAE1B,WAAO;AAAA,EAER;AAAA,EAEA,aAAc,QAAS;AAEtB,UAAM,MAAM,OAAO,WAAY,MAAM,EAAE,OAAO,MAAM,CAAE;AAEtD,UAAM,YAAY,IAAI,aAAc,GAAG,GAAG,GAAG,KAAK,CAAE;AAEpD,UAAMC,QAAO,UAAU;AAEvB,QAAIC,KAAI;AAER,UAAM,OAAO,IAAM,KAAK;AAExB,UAAM,WAAW,IAAI,MAAM;AAC3B,UAAM,WAAW,IAAI,MAAM;AAC3B,UAAM,aAAa,IAAI,MAAM;AAE7B,aAAU,IAAI,GAAG,KAAK,GAAG,KAAK,MAAO;AAEpC,eAAU,IAAI,KAAK,IAAI,SAAS,GAAG,KAAK,GAAG,KAAO;AAEjD,YAAK,IAAI,KAAK,IAAK,CAAE,EAAG,CAAE,KAAK,KAAK,KAAK,IAAK,IAAI,CAAE,EAAG,CAAE,GAAI;AAE5D,gBAAM,MAAM,KAAK,IAAK,IAAI,CAAE,EAAG,CAAE;AACjC,gBAAMH,OAAM,KAAK,IAAK,CAAE,EAAG,CAAE;AAE7B,mBAAS,OAAQ,KAAK,IAAK,IAAI,CAAE,EAAG,CAAE,GAAG,oBAAqB;AAC9D,mBAAS,OAAQ,KAAK,IAAK,CAAE,EAAG,CAAE,GAAG,oBAAqB;AAE1D,qBAAW,WAAY,UAAU,WAAY,IAAI,QAAUA,OAAM,IAAM;AAEvE,UAAAE,MAAMC,KAAI,CAAE,IAAI,KAAK,MAAO,WAAW,IAAI,GAAI;AAC/C,UAAAD,MAAMC,KAAI,IAAI,CAAE,IAAI,KAAK,MAAO,WAAW,IAAI,GAAI;AACnD,UAAAD,MAAMC,KAAI,IAAI,CAAE,IAAI,KAAK,MAAO,WAAW,IAAI,GAAI;AACnD,UAAAD,MAAMC,KAAI,IAAI,CAAE,IAAI;AAEpB,UAAAA,MAAK;AAAA,QAEN;AAAA,MAED;AAAA,IAED;AAEA,QAAI,aAAc,WAAW,GAAG,CAAE;AAElC,WAAO;AAAA,EAER;AAED;AAEA,IAAM,mBAAmB;AAAA,EAExB,WAAW,CAAC,CAAE,GAAK,GAAS,GAAG,CAAE,KAAK,KAAS,GAAG,CAAE,KAAK,KAAS,GAAG,CAAE,KAAK,QAAS,GAAG,CAAE,GAAK,QAAS,CAAC;AAAA,EACzG,cAAc,CAAC,CAAE,GAAK,OAAS,GAAG,CAAE,KAAK,QAAS,GAAG,CAAE,KAAK,QAAS,GAAG,CAAE,KAAK,QAAS,GAAG,CAAE,GAAK,QAAS,CAAC;AAAA,EAC5G,aAAa,CAAC,CAAE,GAAK,CAAS,GAAG,CAAE,KAAK,OAAS,GAAG,CAAE,KAAK,QAAS,GAAG,CAAE,KAAK,QAAS,GAAG,CAAE,GAAK,QAAS,CAAC;AAAA,EAC3G,aAAa,CAAC,CAAE,GAAK,CAAS,GAAG,CAAE,KAAK,OAAS,GAAG,CAAE,KAAK,OAAS,GAAG,CAAE,KAAK,QAAS,GAAG,CAAE,GAAK,QAAS,CAAC;AAE5G;;;ACxLA,IAAM,QAAQ,IAAI,SAAS;AAC3B,IAAMC,UAAS,IAAI,QAAQ;AAC3B,IAAM,OAAO,IAAI,QAAQ;AAAzB,IAA4B,OAAO,IAAI,QAAQ;AAA/C,IAAkD,OAAO,IAAI,QAAQ;AAErE,IAAM,qBAAN,MAAyB;AAAA,EAExB,YAAa,MAAO;AAEnB,SAAK,WAAW,KAAK;AACrB,SAAK,iBAAiB,KAAK;AAE3B,SAAK,iBAAiB,KAAK,SAAS;AACpC,SAAK,oBAAoB,KAAK,SAAS,aAAc,UAAW;AAChE,SAAK,kBAAkB,KAAK,SAAS,aAAc,QAAS;AAC5D,SAAK,iBAAiB,KAAK,SAAS,aAAc,OAAQ;AAC1D,SAAK,cAAc,KAAK,SAAS,aAAc,IAAK;AACpD,SAAK,kBAAkB;AAEvB,SAAK,eAAe;AAAA,EAErB;AAAA,EAEA,mBAAoBC,OAAO;AAE1B,SAAK,kBAAkBA,QAAO,KAAK,SAAS,aAAcA,KAAK,IAAI;AAEnE,WAAO;AAAA,EAER;AAAA,EAEA,QAAQ;AAEP,UAAM,iBAAiB,KAAK;AAC5B,UAAM,oBAAoB,KAAK;AAC/B,UAAM,kBAAkB,KAAK;AAE7B,UAAM,aAAa,iBAAmB,eAAe,QAAQ,IAAQ,kBAAkB,QAAQ;AAC/F,UAAM,cAAc,IAAI,aAAc,UAAW;AAIjD,aAAU,IAAI,GAAG,IAAI,YAAY,KAAO;AAEvC,UAAI,aAAa;AAEjB,UAAI,KAAK,IAAI;AACb,UAAI,KAAK,IAAI,IAAI;AACjB,UAAI,KAAK,IAAI,IAAI;AAEjB,UAAK,gBAAiB;AAErB,aAAK,eAAe,KAAM,EAAG;AAC7B,aAAK,eAAe,KAAM,EAAG;AAC7B,aAAK,eAAe,KAAM,EAAG;AAAA,MAE9B;AAEA,UAAK,iBAAkB;AAEtB,qBAAa,gBAAgB,KAAM,EAAG,IACnC,gBAAgB,KAAM,EAAG,IACzB,gBAAgB,KAAM,EAAG;AAAA,MAE7B;AAEA,YAAM,EAAE,oBAAqB,mBAAmB,EAAG;AACnD,YAAM,EAAE,oBAAqB,mBAAmB,EAAG;AACnD,YAAM,EAAE,oBAAqB,mBAAmB,EAAG;AACnD,oBAAc,MAAM,QAAQ;AAE5B,kBAAa,CAAE,IAAI;AAAA,IAEpB;AAKA,UAAM,eAAe,IAAI,aAAc,UAAW;AAClD,QAAI,kBAAkB;AAEtB,aAAU,IAAI,GAAG,IAAI,YAAY,KAAO;AAEvC,yBAAmB,YAAa,CAAE;AAClC,mBAAc,CAAE,IAAI;AAAA,IAErB;AAEA,SAAK,eAAe;AACpB,WAAO;AAAA,EAER;AAAA,EAEA,mBAAoB,gBAAiB;AAEpC,SAAK,iBAAiB;AACtB,WAAO;AAAA,EAER;AAAA,EAEA,OAAQ,gBAAgB,cAAc,aAAa,UAAW;AAE7D,UAAM,YAAY,KAAK,gBAAgB;AACvC,WAAO,KAAK,WAAY,WAAW,gBAAgB,cAAc,aAAa,QAAS;AAAA,EAExF;AAAA,EAEA,kBAAkB;AAEjB,UAAM,kBAAkB,KAAK,aAAc,KAAK,aAAa,SAAS,CAAE;AACxE,WAAO,KAAK,aAAc,KAAK,eAAe,IAAI,eAAgB;AAAA,EAEnE;AAAA,EAEA,aAAcC,IAAI;AAEjB,UAAM,OAAO,KAAK;AAClB,QAAI,QAAQ;AACZ,QAAI,MAAM,KAAK,SAAS;AAExB,QAAIC,SAAQ;AAEZ,WAAQ,SAAS,KAAM;AAEtB,YAAM,MAAM,KAAK,MAAQ,QAAQ,OAAQ,CAAE;AAE3C,UAAK,QAAQ,KAAK,KAAM,MAAM,CAAE,KAAKD,MAAK,KAAM,GAAI,IAAIA,IAAI;AAE3D,QAAAC,SAAQ;AAER;AAAA,MAED,WAAYD,KAAI,KAAM,GAAI,GAAI;AAE7B,cAAM,MAAM;AAAA,MAEb,OAAO;AAEN,gBAAQ,MAAM;AAAA,MAEf;AAAA,IAED;AAEA,WAAOC;AAAA,EAER;AAAA,EAEA,WAAY,WAAW,gBAAgB,cAAc,aAAa,UAAW;AAE5E,QAAI,IAAI,KAAK,eAAe;AAC5B,QAAI,IAAI,KAAK,eAAe;AAE5B,QAAK,IAAI,IAAI,GAAI;AAEhB,UAAI,IAAI;AACR,UAAI,IAAI;AAAA,IAET;AAGA,UAAM,iBAAiB,KAAK;AAC5B,QAAI,KAAK,YAAY;AACrB,QAAI,KAAK,YAAY,IAAI;AACzB,QAAI,KAAK,YAAY,IAAI;AACzB,QAAK,gBAAiB;AAErB,WAAK,eAAe,KAAM,EAAG;AAC7B,WAAK,eAAe,KAAM,EAAG;AAC7B,WAAK,eAAe,KAAM,EAAG;AAAA,IAE9B;AAEA,UAAM,EAAE,oBAAqB,KAAK,mBAAmB,EAAG;AACxD,UAAM,EAAE,oBAAqB,KAAK,mBAAmB,EAAG;AACxD,UAAM,EAAE,oBAAqB,KAAK,mBAAmB,EAAG;AAExD,mBACE,IAAK,GAAG,GAAG,CAAE,EACb,gBAAiB,MAAM,GAAG,CAAE,EAC5B,gBAAiB,MAAM,GAAG,CAAE,EAC5B,gBAAiB,MAAM,GAAG,KAAM,IAAI,EAAI;AAE1C,QAAK,iBAAiB,QAAY;AAEjC,UAAK,KAAK,oBAAoB,QAAY;AAEzC,cAAM,EAAE,oBAAqB,KAAK,iBAAiB,EAAG;AACtD,cAAM,EAAE,oBAAqB,KAAK,iBAAiB,EAAG;AACtD,cAAM,EAAE,oBAAqB,KAAK,iBAAiB,EAAG;AACtD,qBAAa,IAAK,GAAG,GAAG,CAAE,EAAE,gBAAiB,MAAM,GAAG,CAAE,EAAE,gBAAiB,MAAM,GAAG,CAAE,EAAE,gBAAiB,MAAM,GAAG,KAAM,IAAI,EAAI,EAAE,UAAU;AAAA,MAE7I,OAAO;AAEN,cAAM,UAAW,YAAa;AAAA,MAE/B;AAAA,IAED;AAEA,QAAK,gBAAgB,UAAa,KAAK,mBAAmB,QAAY;AAErE,YAAM,EAAE,oBAAqB,KAAK,gBAAgB,EAAG;AACrD,YAAM,EAAE,oBAAqB,KAAK,gBAAgB,EAAG;AACrD,YAAM,EAAE,oBAAqB,KAAK,gBAAgB,EAAG;AAErD,MAAAH,QACE,IAAK,GAAG,GAAG,CAAE,EACb,gBAAiB,MAAM,GAAG,CAAE,EAC5B,gBAAiB,MAAM,GAAG,CAAE,EAC5B,gBAAiB,MAAM,GAAG,KAAM,IAAI,EAAI;AAE1C,kBAAY,IAAIA,QAAO;AACvB,kBAAY,IAAIA,QAAO;AACvB,kBAAY,IAAIA,QAAO;AAAA,IAExB;AAEA,QAAK,aAAa,UAAa,KAAK,gBAAgB,QAAY;AAE/D,WAAK,oBAAqB,KAAK,aAAa,EAAG;AAC/C,WAAK,oBAAqB,KAAK,aAAa,EAAG;AAC/C,WAAK,oBAAqB,KAAK,aAAa,EAAG;AAC/C,eAAS,IAAK,GAAG,CAAE,EAAE,gBAAiB,MAAM,CAAE,EAAE,gBAAiB,MAAM,CAAE,EAAE,gBAAiB,MAAM,KAAM,IAAI,EAAI;AAAA,IAEjH;AAEA,WAAO;AAAA,EAER;AAED;;;AC5OA,IAAM,IAAI;AAAA,EACT,GAAG;AAAA;AAAA,EACH,GAAG,CAAE,IAAI,QAAQ,GAAG,IAAI,QAAQ,GAAG,IAAI,QAAQ,CAAE;AAAA;AAAA,EACjD,GAAG,CAAC;AAAA;AACL;AAEA,IAAM,IAAI;AAAA,EACT,GAAG;AAAA;AAAA,EACH,GAAG,CAAE,IAAI,QAAQ,GAAG,IAAI,QAAQ,GAAG,IAAI,QAAQ,CAAE;AAAA;AAAA,EACjD,GAAG,CAAC;AAAA;AACL;AAEA,IAAMI,KAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,IAAM,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,IAAMC,KAAI,CAAC;AAEX,IAAM,QAAQ,IAAI,QAAQ;AAC1B,IAAM,QAAQ,IAAI,QAAQ;AAC1B,IAAM,QAAQ,IAAI,QAAQ;AAC1B,IAAM,KAAK,IAAI,QAAQ;AACvB,IAAM,OAAO,IAAI,QAAQ;AACzB,IAAM,eAAe,IAAI,QAAQ;AACjC,IAAM,iBAAiB,IAAI,QAAQ;AACnC,IAAM,OAAO,IAAI,KAAK;AACtB,IAAM,SAAS,IAAI,QAAQ;AAC3B,IAAM,UAAU,IAAI,QAAQ;AAC5B,IAAM,WAAW,IAAI,IAAI;AAIzB,IAAM,MAAN,MAAU;AAAA,EAET,YAAa,SAAS,IAAI,QAAQ,GAAG,WAAW,IAAI,QAAQ,GAAGC,YAAW,IAAI,QAAQ,GAAI;AAEzF,SAAK,SAAS;AACd,SAAK,WAAW;AAChB,SAAK,WAAWA;AAAA,EAEjB;AAAA,EAEA,IAAK,QAAQ,UAAUA,WAAW;AAEjC,SAAK,SAAS;AACd,SAAK,WAAW;AAChB,SAAK,WAAWA;AAEhB,WAAO;AAAA,EAER;AAAA,EAEA,KAAMC,MAAM;AAEX,SAAK,OAAO,KAAMA,KAAI,MAAO;AAC7B,SAAK,SAAS,KAAMA,KAAI,QAAS;AACjC,SAAK,SAAS,KAAMA,KAAI,QAAS;AAEjC,WAAO;AAAA,EAER;AAAA,EAEA,QAAQ;AAEP,WAAO,IAAI,KAAK,YAAY,EAAE,KAAM,IAAK;AAAA,EAE1C;AAAA,EAEA,QAAS,QAAS;AAEjB,WAAO,OAAO,KAAM,KAAK,QAAS,EAAE,eAAgB,CAAE;AAAA,EAEvD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAY,OAAO,QAAS;AAE3B,UAAM,WAAW,KAAK;AAEtB,OAAG,WAAY,OAAO,KAAK,MAAO;AAClC,SAAK,SAAS,aAAc,OAAO,OAAO,KAAM;AAIhD,WAAO,KAAM,KAAK,MAAO;AAIzB,UAAMC,KAAI,UAAU,MAAO,GAAG,IAAK,KAAM,GAAG,CAAE,SAAS,GAAG,SAAS,CAAE;AACrE,WAAO,IAAK,MAAM,eAAgBA,EAAE,CAAE;AAEtC,UAAMC,KAAI,UAAU,MAAO,GAAG,IAAK,KAAM,GAAG,CAAE,SAAS,GAAG,SAAS,CAAE;AACrE,WAAO,IAAK,MAAM,eAAgBA,EAAE,CAAE;AAEtC,UAAM,IAAI,UAAU,MAAO,GAAG,IAAK,KAAM,GAAG,CAAE,SAAS,GAAG,SAAS,CAAE;AACrE,WAAO,IAAK,MAAM,eAAgB,CAAE,CAAE;AAEtC,WAAO;AAAA,EAER;AAAA,EAEA,cAAe,OAAQ;AAEtB,OAAG,WAAY,OAAO,KAAK,MAAO;AAClC,SAAK,SAAS,aAAc,OAAO,OAAO,KAAM;AAIhD,WAAO,KAAK,IAAK,GAAG,IAAK,KAAM,CAAE,KAAK,KAAK,SAAS,KAClD,KAAK,IAAK,GAAG,IAAK,KAAM,CAAE,KAAK,KAAK,SAAS,KAC7C,KAAK,IAAK,GAAG,IAAK,KAAM,CAAE,KAAK,KAAK,SAAS;AAAA,EAEhD;AAAA,EAEA,eAAgB,MAAO;AAEtB,WAAO,KAAK,cAAe,IAAI,SAAU,IAAK,CAAE;AAAA,EAEjD;AAAA,EAEA,iBAAkB,QAAS;AAI1B,SAAK,WAAY,OAAO,QAAQ,YAAa;AAI7C,WAAO,aAAa,kBAAmB,OAAO,MAAO,KAAO,OAAO,SAAS,OAAO;AAAA,EAEpF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,cAAeF,MAAK,UAAU,OAAO,SAAU;AAI9C,MAAE,IAAI,KAAK;AACX,MAAE,EAAG,CAAE,IAAI,KAAK,SAAS;AACzB,MAAE,EAAG,CAAE,IAAI,KAAK,SAAS;AACzB,MAAE,EAAG,CAAE,IAAI,KAAK,SAAS;AACzB,SAAK,SAAS,aAAc,EAAE,EAAG,CAAE,GAAG,EAAE,EAAG,CAAE,GAAG,EAAE,EAAG,CAAE,CAAE;AAEzD,MAAE,IAAIA,KAAI;AACV,MAAE,EAAG,CAAE,IAAIA,KAAI,SAAS;AACxB,MAAE,EAAG,CAAE,IAAIA,KAAI,SAAS;AACxB,MAAE,EAAG,CAAE,IAAIA,KAAI,SAAS;AACxB,IAAAA,KAAI,SAAS,aAAc,EAAE,EAAG,CAAE,GAAG,EAAE,EAAG,CAAE,GAAG,EAAE,EAAG,CAAE,CAAE;AAIxD,aAAU,IAAI,GAAG,IAAI,GAAG,KAAO;AAE9B,eAAU,IAAI,GAAG,IAAI,GAAG,KAAO;AAE9B,QAAAH,GAAG,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,EAAE,IAAK,EAAE,EAAG,CAAE,CAAE;AAAA,MAEtC;AAAA,IAED;AAIA,OAAG,WAAY,EAAE,GAAG,EAAE,CAAE;AAIxB,IAAAC,GAAG,CAAE,IAAI,GAAG,IAAK,EAAE,EAAG,CAAE,CAAE;AAC1B,IAAAA,GAAG,CAAE,IAAI,GAAG,IAAK,EAAE,EAAG,CAAE,CAAE;AAC1B,IAAAA,GAAG,CAAE,IAAI,GAAG,IAAK,EAAE,EAAG,CAAE,CAAE;AAM1B,aAAU,IAAI,GAAG,IAAI,GAAG,KAAO;AAE9B,eAAU,IAAI,GAAG,IAAI,GAAG,KAAO;AAE9B,aAAM,CAAE,EAAG,CAAE,IAAI,KAAK,IAAKD,GAAG,CAAE,EAAG,CAAE,CAAE,IAAI;AAAA,MAE5C;AAAA,IAED;AAEA,QAAIM,KAAI;AAIR,aAAU,IAAI,GAAG,IAAI,GAAG,KAAO;AAE9B,MAAAA,MAAK,EAAE,EAAG,CAAE;AACZ,WAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACrF,UAAK,KAAK,IAAKL,GAAG,CAAE,CAAE,IAAIK,MAAK,GAAK,QAAO;AAAA,IAG5C;AAIA,aAAU,IAAI,GAAG,IAAI,GAAG,KAAO;AAE9B,MAAAA,MAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACrF,WAAK,EAAE,EAAG,CAAE;AACZ,UAAK,KAAK,IAAKL,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,IAAIC,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,IAAIC,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,CAAE,IAAIM,MAAK,GAAK,QAAO;AAAA,IAExG;AAIA,IAAAA,MAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,SAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,QAAK,KAAK,IAAKL,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,IAAIC,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,CAAE,IAAIM,MAAK,GAAK,QAAO;AAIhF,IAAAA,MAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,SAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,QAAK,KAAK,IAAKL,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,IAAIC,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,CAAE,IAAIM,MAAK,GAAK,QAAO;AAIhF,IAAAA,MAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,SAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,QAAK,KAAK,IAAKL,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,IAAIC,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,CAAE,IAAIM,MAAK,GAAK,QAAO;AAIhF,IAAAA,MAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,SAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,QAAK,KAAK,IAAKL,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,IAAIC,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,CAAE,IAAIM,MAAK,GAAK,QAAO;AAIhF,IAAAA,MAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,SAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,QAAK,KAAK,IAAKL,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,IAAIC,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,CAAE,IAAIM,MAAK,GAAK,QAAO;AAIhF,IAAAA,MAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,SAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,QAAK,KAAK,IAAKL,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,IAAIC,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,CAAE,IAAIM,MAAK,GAAK,QAAO;AAIhF,IAAAA,MAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,SAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,QAAK,KAAK,IAAKL,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,IAAIC,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,CAAE,IAAIM,MAAK,GAAK,QAAO;AAIhF,IAAAA,MAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,SAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,QAAK,KAAK,IAAKL,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,IAAIC,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,CAAE,IAAIM,MAAK,GAAK,QAAO;AAIhF,IAAAA,MAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,SAAK,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE,IAAI,EAAE,EAAG,CAAE,IAAI,KAAM,CAAE,EAAG,CAAE;AACzD,QAAK,KAAK,IAAKL,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,IAAIC,GAAG,CAAE,IAAID,GAAG,CAAE,EAAG,CAAE,CAAE,IAAIM,MAAK,GAAK,QAAO;AAIhF,WAAO;AAAA,EAER;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAiB,OAAQ;AAExB,SAAK,SAAS,aAAc,OAAO,OAAO,KAAM;AAIhD,UAAM,IAAI,KAAK,SAAS,IAAI,KAAK,IAAK,MAAM,OAAO,IAAK,KAAM,CAAE,IAC9D,KAAK,SAAS,IAAI,KAAK,IAAK,MAAM,OAAO,IAAK,KAAM,CAAE,IACtD,KAAK,SAAS,IAAI,KAAK,IAAK,MAAM,OAAO,IAAK,KAAM,CAAE;AAIxD,UAAM,IAAI,MAAM,OAAO,IAAK,KAAK,MAAO,IAAI,MAAM;AAIlD,WAAO,KAAK,IAAK,CAAE,KAAK;AAAA,EAEzB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAc,KAAK,QAAS;AAK3B,SAAK,QAAS,IAAK;AACnB,SAAK,qBAAsB,GAAG,IAAK,GAAG,GAAG,CAAE,GAAG,IAAK;AAInD,WAAO,eAAgB,KAAK,QAAS;AACrC,WAAO,YAAa,KAAK,MAAO;AAIhC,YAAQ,KAAM,MAAO,EAAE,OAAO;AAC9B,aAAS,KAAM,GAAI,EAAE,aAAc,OAAQ;AAI3C,QAAK,SAAS,aAAc,MAAM,MAAO,GAAI;AAI5C,aAAO,OAAO,aAAc,MAAO;AAAA,IAEpC,OAAO;AAEN,aAAO;AAAA,IAER;AAAA,EAED;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAe,KAAM;AAEpB,WAAO,KAAK,aAAc,KAAK,EAAG,MAAM;AAAA,EAEzC;AAAA,EAEA,SAAU,MAAO;AAEhB,SAAK,UAAW,KAAK,MAAO;AAE5B,SAAK,QAAS,KAAK,QAAS,EAAE,eAAgB,GAAI;AAElD,SAAK,SAAS,SAAS;AAEvB,WAAO;AAAA,EAER;AAAA,EAEA,OAAQH,MAAM;AAEb,WAAOA,KAAI,OAAO,OAAQ,KAAK,MAAO,KACrCA,KAAI,SAAS,OAAQ,KAAK,QAAS,KACnCA,KAAI,SAAS,OAAQ,KAAK,QAAS;AAAA,EAErC;AAAA,EAEA,aAAcI,SAAS;AAEtB,UAAM,IAAIA,QAAO;AAEjB,QAAI,KAAK,GAAG,IAAK,EAAG,CAAE,GAAG,EAAG,CAAE,GAAG,EAAG,CAAE,CAAE,EAAE,OAAO;AACjD,UAAM,KAAK,GAAG,IAAK,EAAG,CAAE,GAAG,EAAG,CAAE,GAAG,EAAG,CAAE,CAAE,EAAE,OAAO;AACnD,UAAM,KAAK,GAAG,IAAK,EAAG,CAAE,GAAG,EAAG,CAAE,GAAG,EAAG,EAAG,CAAE,EAAE,OAAO;AAEpD,UAAM,MAAMA,QAAO,YAAY;AAC/B,QAAK,MAAM,EAAI,MAAK,CAAE;AAEtB,mBAAe,eAAgBA,OAAO;AAEtC,UAAM,QAAQ,IAAI;AAClB,UAAM,QAAQ,IAAI;AAClB,UAAM,QAAQ,IAAI;AAElB,mBAAe,SAAU,CAAE,KAAK;AAChC,mBAAe,SAAU,CAAE,KAAK;AAChC,mBAAe,SAAU,CAAE,KAAK;AAEhC,mBAAe,SAAU,CAAE,KAAK;AAChC,mBAAe,SAAU,CAAE,KAAK;AAChC,mBAAe,SAAU,CAAE,KAAK;AAEhC,mBAAe,SAAU,CAAE,KAAK;AAChC,mBAAe,SAAU,CAAE,KAAK;AAChC,mBAAe,SAAU,CAAE,KAAK;AAEhC,SAAK,SAAS,SAAU,cAAe;AAEvC,SAAK,SAAS,KAAK;AACnB,SAAK,SAAS,KAAK;AACnB,SAAK,SAAS,KAAK;AAEnB,OAAG,sBAAuBA,OAAO;AACjC,SAAK,OAAO,IAAK,EAAG;AAEpB,WAAO;AAAA,EAER;AAED;AAEA,IAAM,MAAM,IAAI,IAAI;;;ACxZpB,IAAMC,OAAM,IAAI,QAAQ;AACxB,IAAMC,OAAM,IAAI,QAAQ;AACxB,IAAM,UAAU,IAAI,QAAQ;AAC5B,IAAM,UAAU,IAAI,QAAQ;AAC5B,IAAMC,UAAS,IAAI,MAAM;AACzB,IAAM,SAAS,IAAI,MAAM;AACzB,IAAM,SAAS,IAAI,MAAM;AACzB,IAAMC,WAAU,IAAI,OAAO;AAC3B,IAAM,WAAW,IAAI,QAAQ;AAE7B,IAAM,SAAS,IAAI,QAAQ;AAC3B,IAAM,SAAS,IAAI,QAAQ;AAC3B,IAAM,SAAS,IAAI,QAAQ;AAC3B,IAAM,MAAM;AAEZ,SAAS,wBAAyB,OAAO,OAAO,UAAU,MAAM,UAAU,MAAO;AAEhF,QAAM,IAAI,OAAO,KAAM,MAAM,GAAI,EAAE,IAAK,MAAM,KAAM;AACpD,QAAM,IAAI,OAAO,KAAM,MAAM,GAAI,EAAE,IAAK,MAAM,KAAM;AACpD,QAAM,IAAI,OAAO,KAAM,MAAM,KAAM,EAAE,IAAK,MAAM,KAAM;AAEtD,QAAMC,KAAI,EAAE,IAAK,CAAE,GAClBC,KAAI,EAAE,IAAK,CAAE,GACbC,KAAI,EAAE,IAAK,CAAE,GACb,IAAI,EAAE,IAAK,CAAE,GACb,IAAI,EAAE,IAAK,CAAE;AAEd,MAAI,IAAIC;AACR,QAAM,UAAUF,KAAIC,KAAIF,KAAIA;AAE5B,MAAK,KAAK,IAAK,OAAQ,IAAI,KAAM;AAEhC,UAAM,KAAK,CAAE,IAAIE;AACjB,UAAM,MAAOF,KAAI,KAAME;AAEvB,QAAK,KAAK,IAAK,KAAK,GAAI,IAAI,KAAK,IAAK,KAAK,GAAI,GAAI;AAElD,WAAK;AACL,MAAAC,MAAK;AAAA,IAEN,OAAO;AAEN,WAAK;AACL,MAAAA,MAAK;AAAA,IAEN;AAAA,EAED,OAAO;AAEN,UAAO,IAAIH,KAAI,IAAIE,MAAM;AACzB,IAAAC,OAAO,KAAKH,KAAI,KAAME;AAAA,EAEvB;AAEA,EAAAC,MAAK,KAAK,IAAK,GAAG,KAAK,IAAK,GAAGA,GAAG,CAAE;AACpC,OAAK,KAAK,IAAK,GAAG,KAAK,IAAK,GAAG,EAAG,CAAE;AAEpC,MAAK,SAAU;AAEd,YAAQ,KAAM,CAAE,EAAE,eAAgB,EAAG,EAAE,IAAK,MAAM,KAAM;AAAA,EAEzD;AAEA,MAAK,SAAU;AAEd,YAAQ,KAAM,CAAE,EAAE,eAAgBA,GAAG,EAAE,IAAK,MAAM,KAAM;AAAA,EAEzD;AAED;AAEA,IAAM,SAAN,MAAM,QAAO;AAAA,EAEZ,YAAa,KAAM;AAElB,SAAK,MAAM;AACX,SAAK,SAAS,IAAI,KAAK;AAEvB,SAAK,WAAW,CAAC;AACjB,SAAK,YAAY,CAAC;AAClB,SAAK,SAAS,IAAI,OAAO;AAAA,EAE1B;AAAA,EAEA,YAAa,UAAW;AAEvB,SAAK,OAAO,IAAI,IAAI,KAAK,IAAK,KAAK,OAAO,IAAI,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,CAAE;AAC1F,SAAK,OAAO,IAAI,IAAI,KAAK,IAAK,KAAK,OAAO,IAAI,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,CAAE;AAC1F,SAAK,OAAO,IAAI,IAAI,KAAK,IAAK,KAAK,OAAO,IAAI,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,CAAE;AAC1F,SAAK,OAAO,IAAI,IAAI,KAAK,IAAK,KAAK,OAAO,IAAI,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,CAAE;AAC1F,SAAK,OAAO,IAAI,IAAI,KAAK,IAAK,KAAK,OAAO,IAAI,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,CAAE;AAC1F,SAAK,OAAO,IAAI,IAAI,KAAK,IAAK,KAAK,OAAO,IAAI,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,CAAE;AAE1F,SAAK,UAAU,KAAM,QAAS;AAE9B,WAAO;AAAA,EAER;AAAA,EAEA,UAAU;AAET,SAAK,MAAM,KAAK,OAAO,MAAM;AAG7B,SAAK,IAAI,IAAI,KAAK;AAClB,SAAK,IAAI,IAAI,KAAK;AAClB,SAAK,IAAI,IAAI,KAAK;AAElB,WAAO;AAAA,EAER;AAAA,EAEA,MAAO,OAAQ;AAEd,QAAK,CAAE,KAAK,IAAM;AAElB,UAAM,WAAW,CAAC;AAClB,UAAM,WAAWN,KAAI,KAAM,KAAK,IAAI,GAAI,EAAE,IAAK,KAAK,IAAI,GAAI,EAAE,eAAgB,GAAI;AAElF,aAAUO,KAAI,GAAGA,KAAI,GAAGA,MAAO;AAE9B,eAAUC,KAAI,GAAGA,KAAI,GAAGA,MAAO;AAE9B,iBAAU,IAAI,GAAG,IAAI,GAAG,KAAO;AAE9B,gBAAM,MAAM,IAAI,KAAK;AACrB,gBAAM,IAAIT,KAAI,IAAKQ,IAAGC,IAAG,CAAE;AAE3B,cAAI,IAAI,KAAM,KAAK,IAAI,GAAI,EAAE,IAAK,EAAE,SAAU,QAAS,CAAE;AACzD,cAAI,IAAI,KAAM,IAAI,GAAI,EAAE,IAAK,QAAS;AAEtC,mBAAS,KAAM,IAAI,QAAQ,GAAI,CAAE;AAAA,QAElC;AAAA,MAED;AAAA,IAED;AAEA,QAAI;AAEJ,WAAQ,WAAW,KAAK,UAAU,IAAI,GAAI;AAEzC,eAAU,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAO;AAE5C,YAAK,SAAU,CAAE,EAAE,IAAI,mBAAoB,QAAS,GAAI;AAEvD,mBAAU,CAAE,EAAE,UAAU,KAAM,QAAS;AAAA,QAExC;AAAA,MAED;AAAA,IAED;AAEA,aAAU,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAO;AAE5C,YAAM,MAAM,SAAU,CAAE,EAAE,UAAU;AAEpC,UAAK,MAAM,KAAK,QAAQ,IAAK;AAE5B,iBAAU,CAAE,EAAE,MAAO,QAAQ,CAAE;AAAA,MAEhC;AAEA,UAAK,QAAQ,GAAI;AAEhB,aAAK,SAAS,KAAM,SAAU,CAAE,CAAE;AAAA,MAEnC;AAAA,IAED;AAEA,WAAO;AAAA,EAER;AAAA,EAEA,QAAQ;AAEP,SAAK,QAAQ;AACb,SAAK,MAAO,CAAE;AAEd,WAAO;AAAA,EAER;AAAA,EAEA,gBAAiB,KAAK,WAAY;AAEjC,aAAU,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,KAAO;AAEjD,YAAM,UAAU,KAAK,SAAU,CAAE;AACjC,UAAK,CAAE,IAAI,cAAe,QAAQ,GAAI,EAAI;AAE1C,UAAK,QAAQ,UAAU,SAAS,GAAI;AAEnC,iBAAU,IAAI,GAAG,IAAI,QAAQ,UAAU,QAAQ,KAAO;AAErD,cAAK,UAAU,QAAS,QAAQ,UAAW,CAAE,CAAE,MAAM,GAAM,WAAU,KAAM,QAAQ,UAAW,CAAE,CAAE;AAAA,QAEnG;AAAA,MAED,OAAO;AAEN,gBAAQ,gBAAiB,KAAK,SAAU;AAAA,MAEzC;AAAA,IAED;AAEA,WAAO;AAAA,EAER;AAAA,EAEA,yBAA0B,SAAS,UAAW;AAE7C,aAAS,SAAUP,OAAO;AAE1B,UAAM,KAAKA,QAAO,gBAAiB,QAAQ,KAAM,IAAI,QAAQ;AAC7D,UAAM,KAAKA,QAAO,gBAAiB,QAAQ,GAAI,IAAI,QAAQ;AAE3D,QAAO,KAAK,KAAK,KAAK,KAAS,KAAK,CAAE,QAAQ,UAAU,KAAK,CAAE,QAAQ,QAAW;AAEjF,aAAO;AAAA,IAER;AAEA,UAAM,QAAQ,KAAK,IAAK,MAAO,KAAK,IAAK,EAAG,IAAI,KAAK,IAAK,EAAG,EAAI;AACjE,UAAM,iBAAiBF,KAAI,KAAM,QAAQ,KAAM,EAAE,KAAM,QAAQ,KAAK,KAAM;AAE1E,QAAK,SAAS,cAAe,cAAe,GAAI;AAE/C,aAAO,EAAE,QAAQE,QAAO,OAAO,MAAM,GAAG,OAAO,eAAe,MAAM,GAAG,OAAO,KAAK,IAAK,KAAK,IAAK,IAAI,EAAG,CAAE,EAAE;AAAA,IAE9G;AAEA,UAAM,KAAK,QAAQ,SAAS,QAAQ;AAEpC,UAAM,QAAQ,OAAO,IAAK,QAAQ,OAAO,QAAQ,GAAI;AAErD,UAAM,QAAQ;AAAA,MACb,CAAE,SAAS,GAAG,SAAS,CAAE;AAAA,MACzB,CAAE,SAAS,GAAG,SAAS,CAAE;AAAA,MACzB,CAAE,SAAS,GAAG,SAAS,CAAE;AAAA,IAC1B;AAEA,aAAU,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAO;AAEzC,YAAM,QAAQ,OAAO,IAAK,MAAO,CAAE,EAAG,CAAE,GAAG,MAAO,CAAE,EAAG,CAAE,CAAE;AAE3D,8BAAyB,OAAO,OAAO,SAAS,OAAQ;AAExD,UAAK,QAAQ,kBAAmB,OAAQ,IAAI,IAAK;AAEhD,eAAO;AAAA,UACN,QAAQ,QAAQ,MAAM,EAAE,IAAK,OAAQ,EAAE,UAAU;AAAA,UACjD,OAAO,QAAQ,MAAM;AAAA,UACrB,OAAO,QAAQ,SAAS,QAAQ,WAAY,OAAQ;AAAA,QACrD;AAAA,MAED;AAAA,IAED;AAEA,WAAO;AAAA,EAER;AAAA,EAEA,wBAAyB,QAAQ,UAAW;AAE3C,aAAS,SAAUA,OAAO;AAE1B,QAAK,CAAE,OAAO,gBAAiBA,OAAO,EAAI,QAAO;AAEjD,UAAM,QAAQ,KAAK,IAAKA,QAAO,iBAAkB,MAAO,CAAE;AAC1D,UAAM,KAAK,OAAO,SAAS,OAAO,SAAS,QAAQ;AAEnD,UAAM,aAAaA,QAAO,aAAc,OAAO,QAAQF,IAAI;AAE3D,QAAK,SAAS,cAAe,OAAO,MAAO,GAAI;AAE9C,aAAO,EAAE,QAAQE,QAAO,OAAO,MAAM,GAAG,OAAO,WAAW,MAAM,GAAG,OAAO,KAAK,IAAKA,QAAO,iBAAkB,MAAO,CAAE,EAAE;AAAA,IAEzH;AAEA,UAAM,QAAQ;AAAA,MACb,CAAE,SAAS,GAAG,SAAS,CAAE;AAAA,MACzB,CAAE,SAAS,GAAG,SAAS,CAAE;AAAA,MACzB,CAAE,SAAS,GAAG,SAAS,CAAE;AAAA,IAC1B;AAEA,aAAU,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAO;AAEzC,aAAO,IAAK,MAAO,CAAE,EAAG,CAAE,GAAG,MAAO,CAAE,EAAG,CAAE,CAAE;AAC7C,aAAO,oBAAqB,YAAY,MAAMD,IAAI;AAElD,YAAM,IAAIA,KAAI,kBAAmB,OAAO,MAAO;AAE/C,UAAK,IAAI,IAAK;AAEb,eAAO,EAAE,QAAQ,OAAO,OAAO,MAAM,EAAE,IAAKA,IAAI,EAAE,UAAU,GAAG,OAAOA,KAAI,MAAM,GAAG,OAAO,OAAO,SAAS,KAAK,KAAM,CAAE,EAAE;AAAA,MAE1H;AAAA,IAED;AAEA,WAAO;AAAA,EAER;AAAA,EAEA,mBAAoB,QAAQ,WAAY;AAEvC,aAAU,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,KAAO;AAEjD,YAAM,UAAU,KAAK,SAAU,CAAE;AAEjC,UAAK,CAAE,OAAO,cAAe,QAAQ,GAAI,EAAI;AAE7C,UAAK,QAAQ,UAAU,SAAS,GAAI;AAEnC,iBAAU,IAAI,GAAG,IAAI,QAAQ,UAAU,QAAQ,KAAO;AAErD,cAAK,UAAU,QAAS,QAAQ,UAAW,CAAE,CAAE,MAAM,GAAM,WAAU,KAAM,QAAQ,UAAW,CAAE,CAAE;AAAA,QAEnG;AAAA,MAED,OAAO;AAEN,gBAAQ,mBAAoB,QAAQ,SAAU;AAAA,MAE/C;AAAA,IAED;AAAA,EAED;AAAA,EAEA,oBAAqB,SAAS,WAAY;AAEzC,aAAU,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,KAAO;AAEjD,YAAM,UAAU,KAAK,SAAU,CAAE;AAEjC,UAAK,CAAE,QAAQ,cAAe,QAAQ,GAAI,EAAI;AAE9C,UAAK,QAAQ,UAAU,SAAS,GAAI;AAEnC,iBAAU,IAAI,GAAG,IAAI,QAAQ,UAAU,QAAQ,KAAO;AAErD,cAAK,UAAU,QAAS,QAAQ,UAAW,CAAE,CAAE,MAAM,GAAM,WAAU,KAAM,QAAQ,UAAW,CAAE,CAAE;AAAA,QAEnG;AAAA,MAED,OAAO;AAEN,gBAAQ,oBAAqB,SAAS,SAAU;AAAA,MAEjD;AAAA,IAED;AAAA,EAED;AAAA,EAEA,gBAAiB,QAAS;AAEzB,IAAAE,SAAQ,KAAM,MAAO;AAErB,UAAM,YAAY,CAAC;AACnB,QAAI,QAAQ,MAAM;AAElB,SAAK,mBAAoB,QAAQ,SAAU;AAE3C,aAAU,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAO;AAE7C,UAAK,SAAS,KAAK,wBAAyBA,UAAS,UAAW,CAAE,CAAE,GAAI;AAEvE,cAAM;AAEN,QAAAA,SAAQ,OAAO,IAAK,OAAO,OAAO,eAAgB,OAAO,KAAM,CAAE;AAAA,MAElE;AAAA,IAED;AAEA,QAAK,KAAM;AAEV,YAAM,kBAAkBA,SAAQ,OAAO,MAAM,EAAE,IAAK,OAAO,MAAO;AAClE,YAAM,QAAQ,gBAAgB,OAAO;AAErC,aAAO,EAAE,QAAQ,gBAAgB,UAAU,GAAG,MAAa;AAAA,IAE5D;AAEA,WAAO;AAAA,EAER;AAAA,EAEA,iBAAkB,SAAU;AAE3B,aAAS,KAAM,OAAQ;AAEvB,UAAM,YAAY,CAAC;AACnB,QAAI,QAAQ,MAAM;AAElB,SAAK,oBAAqB,UAAU,SAAU;AAE9C,aAAU,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAO;AAE7C,UAAK,SAAS,KAAK,yBAA0B,UAAU,UAAW,CAAE,CAAE,GAAI;AAEzE,cAAM;AAEN,iBAAS,UAAW,OAAO,OAAO,eAAgB,OAAO,KAAM,CAAE;AAAA,MAElE;AAAA,IAED;AAEA,QAAK,KAAM;AAEV,YAAM,kBAAkB,SAAS,UAAW,IAAI,QAAQ,CAAE,EAAE,IAAK,QAAQ,UAAWH,IAAI,CAAE;AAC1F,YAAM,QAAQ,gBAAgB,OAAO;AAErC,aAAO,EAAE,QAAQ,gBAAgB,UAAU,GAAG,MAAa;AAAA,IAE5D;AAEA,WAAO;AAAA,EAER;AAAA,EAEA,aAAc,KAAM;AAEnB,QAAK,IAAI,UAAU,OAAO,MAAM,EAAI;AAEpC,UAAM,YAAY,CAAC;AACnB,QAAI,UAAUU,WAAU,WAAW;AAEnC,SAAK,gBAAiB,KAAK,SAAU;AAErC,aAAU,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAO;AAE7C,YAAM,SAAS,IAAI,kBAAmB,UAAW,CAAE,EAAE,GAAG,UAAW,CAAE,EAAE,GAAG,UAAW,CAAE,EAAE,GAAG,MAAMV,IAAI;AAEtG,UAAK,QAAS;AAEb,cAAM,cAAc,OAAO,IAAK,IAAI,MAAO,EAAE,OAAO;AAEpD,YAAK,WAAW,aAAc;AAE7B,UAAAU,YAAW,OAAO,MAAM,EAAE,IAAK,IAAI,MAAO;AAC1C,qBAAW;AACX,qBAAW,UAAW,CAAE;AAAA,QAEzB;AAAA,MAED;AAAA,IAED;AAEA,WAAO,WAAW,QAAQ,EAAE,UAAoB,UAAoB,UAAUA,UAAS,IAAI;AAAA,EAE5F;AAAA,EAEA,cAAe,OAAQ;AAEtB,UAAM,kBAAmB,MAAM,IAAK;AAEpC,UAAM,SAAU,CAAE,QAAS;AAE1B,UAAK,IAAI,WAAW,MAAO;AAE1B,YAAK,KAAK,OAAO,KAAM,IAAI,MAAO,GAAI;AAErC,cAAI,UAAU,SAAS;AAEvB,cAAK,IAAI,SAAS,UAAU,MAAO;AAElC,qBAAS;AACT,uBAAW,IAAI,SAAS,aAAa;AAAA,UAEtC,OAAO;AAEN,uBAAW,IAAI;AAAA,UAEhB;AAEA,gBAAM,oBAAoB,SAAS,aAAc,UAAW;AAE5D,mBAAU,IAAI,GAAG,IAAI,kBAAkB,OAAO,KAAK,GAAI;AAEtD,kBAAMC,MAAK,IAAI,QAAQ,EAAE,oBAAqB,mBAAmB,CAAE;AACnE,kBAAM,KAAK,IAAI,QAAQ,EAAE,oBAAqB,mBAAmB,IAAI,CAAE;AACvE,kBAAM,KAAK,IAAI,QAAQ,EAAE,oBAAqB,mBAAmB,IAAI,CAAE;AAEvE,YAAAA,IAAG,aAAc,IAAI,WAAY;AACjC,eAAG,aAAc,IAAI,WAAY;AACjC,eAAG,aAAc,IAAI,WAAY;AAEjC,iBAAK,YAAa,IAAI,SAAUA,KAAI,IAAI,EAAG,CAAE;AAAA,UAE9C;AAEA,cAAK,QAAS;AAEb,qBAAS,QAAQ;AAAA,UAElB;AAAA,QAED;AAAA,MAED;AAAA,IAED,CAAE;AAEF,SAAK,MAAM;AAEX,WAAO;AAAA,EAER;AAAA,EAEA,QAAQ;AAEP,SAAK,MAAM;AACX,SAAK,OAAO,UAAU;AAEtB,SAAK,SAAS,SAAS;AACvB,SAAK,UAAU,SAAS;AAExB,WAAO;AAAA,EAER;AAED;;;ACnhBA,IAAM,eAAN,MAAmB;AAAA,EAElB,YAAa,IAAI,MAAO;AAEvB,SAAK,QAAQ;AAAA,MAAC,CAAE,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,IAAK,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,IAAK,CAAE;AAAA,MAAG,CAAE,IAAK,IAAK,CAAE;AAAA,MACtE,CAAE,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,IAAK,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,EAAI;AAAA,MAAG,CAAE,IAAK,GAAG,EAAI;AAAA,MACzD,CAAE,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,IAAK,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,EAAI;AAAA,MAAG,CAAE,GAAG,IAAK,EAAI;AAAA,IAAC;AAE3D,SAAK,QAAQ;AAAA,MAAC,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,EAAI;AAAA,MAAG,CAAE,GAAG,GAAG,IAAK,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,IAAK,EAAI;AAAA,MAClF,CAAE,GAAG,IAAK,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,IAAK,GAAG,EAAI;AAAA,MAAG,CAAE,GAAG,IAAK,IAAK,CAAE;AAAA,MAAG,CAAE,GAAG,IAAK,IAAK,EAAI;AAAA,MAC7E,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,EAAI;AAAA,MAAG,CAAE,GAAG,GAAG,IAAK,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,IAAK,EAAI;AAAA,MACrE,CAAE,IAAK,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,IAAK,GAAG,GAAG,EAAI;AAAA,MAAG,CAAE,IAAK,GAAG,IAAK,CAAE;AAAA,MAAG,CAAE,IAAK,GAAG,IAAK,EAAI;AAAA,MAC7E,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,EAAI;AAAA,MAAG,CAAE,GAAG,IAAK,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,IAAK,GAAG,EAAI;AAAA,MACrE,CAAE,IAAK,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,IAAK,GAAG,GAAG,EAAI;AAAA,MAAG,CAAE,IAAK,IAAK,GAAG,CAAE;AAAA,MAAG,CAAE,IAAK,IAAK,GAAG,EAAI;AAAA,MAC7E,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,IAAK,CAAE;AAAA,MAAG,CAAE,GAAG,IAAK,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,IAAK,IAAK,CAAE;AAAA,MACrE,CAAE,IAAK,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,IAAK,GAAG,IAAK,CAAE;AAAA,MAAG,CAAE,IAAK,IAAK,GAAG,CAAE;AAAA,MAAG,CAAE,IAAK,IAAK,IAAK,CAAE;AAAA,IAAC;AAE/E,SAAK,IAAI,CAAC;AAEV,aAAU,IAAI,GAAG,IAAI,KAAK,KAAO;AAEhC,WAAK,EAAG,CAAE,IAAI,KAAK,MAAO,EAAE,OAAO,IAAI,GAAI;AAAA,IAE5C;AAGA,SAAK,OAAO,CAAC;AAEb,aAAU,IAAI,GAAG,IAAI,KAAK,KAAO;AAEhC,WAAK,KAAM,CAAE,IAAI,KAAK,EAAG,IAAI,GAAI;AAAA,IAElC;AAIA,SAAK,UAAU;AAAA,MACd,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAC7H,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAC7H,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAC7H,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAC7H,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE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A,EAAO;AAAA,EAAM;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAChD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAM;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAChD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAM;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAChD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAM;AAAA,EAAO;AAAA,EAAO;AAAA,EAChD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAM;AAAA,EAAO;AAAA,EAChD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAM;AAAA,EAChD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAM;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAChD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAM;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAChD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAM;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAChD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAM;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAChD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAM;AAAA,EAAO;AAAA,EAAO;AAAA,EAChD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAM;AAAA,EAAO;AAAA,EAChD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAM;AAAA,EAChD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACjD;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA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G;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACvD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACvD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC7D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACzD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC1D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC1D;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC3D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC1D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpD;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC5D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACvD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC5D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACzD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACzD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC1D;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpD;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC1D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC1D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpD;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAA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A,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC3D;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC1D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtD;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC3D;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC1D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC1D;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACzD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAC7C;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC3D;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EACjD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAClD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAC9C;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrD;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC3D;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC3D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACzD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACzD;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC5D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtD;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAChD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpD;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAC/C;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC1D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC5D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtD;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrD;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC3D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAC7C;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACzD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAChD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAChD;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAC9C;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrD;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC1D;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC3D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC3D;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACvD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACzD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACzD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnD;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC3D;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,E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;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtD;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC1D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACvD;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAChD;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAChD;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACzD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAC7C;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAC9C;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAClE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC5D;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC5D;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtD;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC3D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAC9C;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EA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;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAClE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC5D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC7D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAClE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC5D;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AA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", - "names": ["values", "c", "c2", "index", "line", "position", "scale", "parent", "world", "q", "t", "t2", "a", "v1", "x", "y", "p", "rotation", "param", "key", "a", "b", "max", "p", "_q", "q", "x", "renderer", "size", "x", "y", "self", "t", "key", "width", "height", "value", "rotation", "time", "l", "q", "a", "b", "c", "rayLength", "EPS", "scale", "_raycaster", "_offset", "_camera", "onPointerMove", "onPointerDown", "onPointerCancel", "x", "y", "position", "_changeEvent", "EPS", "_changeEvent", "_startEvent", "_endEvent", "_plane", "domElement", "STATE", "position", "max", "scale", "EPS", "onContextMenu", "onPointerDown", "onPointerUp", "onPointerMove", "document", "panLeft", "panUp", "pan", "x", "y", "onMouseMove", "_vector", "_changeEvent", "_changeEvent", "_startEvent", "_endEvent", "STATE", "EPS", "getMouseOnScreen", "getMouseOnCircle", "onPointerDown", "onPointerMove", "onPointerUp", "onMouseMove", "onPointerCancel", "x", "y", "position", "contextmenu", "_raycaster", "_changeEvent", "_plane", "value", "onPointerDown", "onPointerMove", "onPointerUp", "size", "name", "position", "rotation", "scale", "a", "data", "_center", "_up", "data", "far", "shaders", "l", "farVerts", "t", "x", "y", "scale", "a", "R", "b", "t2", "p", "q", "p", "n", "C", "r", "a", "k", "j", "q", "l", "w", "t", "t2", "k", "t2", "renderer", "width", "height", "_camera", "renderer", "width", "height", "oAscii", "y", "x", "renderer", "data", "keys", "key", "value", "width", "height", "x", "y", "renderer", "_camera", "width", "height", "renderer", "_position", "_quaternion", "_scale", "width", "height", "renderer", "size", "width", "height", "renderer", "faces", "length", "_color", "c", "err", "b", "x", "l", "a", "p", "nt", "l", "t", "c", "n", "dt", "add", "b", "p", "t2", "a", "_a", "_b", "post", "head", "i", "k", "post", "a", "b", "k", "td", "dt", "t", "t", "err", "b", "c", "l", "fl", "Deflate", "AsyncDeflate", "data", "Inflate", "c", "n", "dt", "AsyncInflate", "data", "Gzip", "c", "Gunzip", "p", "AsyncGunzip", "data", "Zlib", "c", "data", "a", "Unzlib", "AsyncUnzlib", "data", "Decompress", "n", "AsyncDecompress", "err", "size", "p", "t", "k", "val", "n", "c", "DecodeUTF8", "_a", "EncodeUTF8", "l", "n", "c", "_a", "l", "b", "_a", "k", "c", "ce", "fl", "dt", "y", "ZipPassThrough", "ZipDeflate", "AsyncZipDeflate", "err", "Zip", "err", "l", "_a", "_b", "data", "_a", "p", "l", "c", "UnzipPassThrough", "UnzipInflate", "data", "AsyncUnzipInflate", "err", "data", "Unzip", "l", "add", "_a", "err", "dat", "final", "data", "c", "_a", "b", "renderer", "y", "x", "g", "b", "a", "line", "sum", "size", "data", "t2", "p", "t", "value", "renderer", "_camera", "width", "height", "reject", "index", "text", "matrix", "a", "value", "uids", "map", "c", "width", "height", "data", "key", "l", "rotation", "position", "scale", "nodeIndex", "time", "values", "et", "t", "n", "e", "a", "l", "c", "p", "g", "y", "i", "s", "x", "b", "B", "A", "k", "I", "r", "o", "et", "renderer", "t", "p", "key", "value", "size", "a", "q", "v1", "i", "text", "n", "line", "a", "index", "p", "array", "position", "matrix", "table", "keys", "key", "value", "l", "line", "k", "l", "line", "index", "a", "b", "c", "vA", "vB", "vC", "scale", "name", "transform", "matrix", "index", "length", "x", "y", "rotation", "width", "height", "x", "y", "_v1", "_plane", "l", "t", "max", "index", "v1", "a", "b", "c", "head", "position", "size", "index", "plane", "v1", "p", "EPS", "a", "b", "c", "x", "y", "width", "height", "t", "a", "b", "frames", "position", "p", "q", "SphereGeometry", "size", "u", "v", "PlaneGeometry", "width", "height", "position", "size", "g", "p", "c", "t", "v1", "text", "size", "max", "c", "max", "width", "height", "position", "_v1", "_v2", "size", "position", "_v1", "_v2", "size", "position", "xAxis", "yAxis", "zAxis", "renderer", "x", "radius", "text", "context", "x", "y", "width", "height", "element", "max", "value", "property", "position", "rect", "_pointer", "_raycaster", "renderer", "controller", "_center", "_matrix", "_quaternion", "_scale", "x", "renderer", "width", "height", "data", "renderer", "g", "b", "x", "index", "_vector", "index", "matrix", "value", "_closestPoint", "_box", "_ray", "l", "t", "renderer", "length", "line", "_start", "_end", "_viewport", "l", "renderer", "k", "n", "c", "lc", "uInt8Array", "l", "p", "value", "buffer", "p2", "index", "data", "t", "t2", "size", "width", "height", "comp", "offset", "y", "x", "decodeFloat16", "a", "b", "g", "length", "name", "log2", "EXRDecoder", "line", "EXRHeader", "reject", "data", "map", "p", "matrix", "_color", "width", "height", "jsContent", "binaryContent", "worker", "a", "b", "rhino", "content", "t", "_geometry", "position", "property", "value", "data", "relsView", "relsFileText", "i", "name", "x", "y", "v1", "transform", "t", "matrix", "objects", "l", "keys", "build", "data3mf", "text", "data", "xmlData", "scale", "i", "v1", "x", "y", "text", "lines", "data", "line", "bones", "header", "use_rle", "use_pal", "offset", "data", "c", "imageData", "x", "y", "width", "height", "content", "text", "xml", "name", "l", "isEmpty", "library", "data", "transform", "time", "value", "index", "a", "b", "position", "scale", "matrix", "property", "key", "animations", "buildMaterial", "effect", "technique", "k", "getMaterial", "buildCamera", "count", "p", "g", "length", "c", "max", "vector", "j", "root", "object", "keys", "material", "parserError", "value", "buffer", "dataOffset", "width", "height", "y", "x", "b", "g", "a", "_taskCache", "reject", "name", "_color", "worker", "a", "b", "module", "index", "content", "values", "name", "child", "parent", "transform", "width", "height", "material", "g", "b", "skeleton", "index", "data", "length", "c", "l", "key", "val", "a", "time", "Q2", "Q", "E", "t", "text", "line", "property", "elem", "value", "keys", "size", "text", "data", "size", "p", "scale", "createPath", "ShapePath", "x", "y", "l", "text", "data", "line", "addSegment", "v1", "key", "value", "buffer", "p", "line", "w", "h", "l", "scale", "data", "value", "onLoad", "onProgress", "onError", "value", "width", "height", "size", "data", "startTheta", "endTheta", "t2", "v1", "text", "line", "values", "value", "text", "data", "resolve", "msg", "A", "Q", "g", "C", "E", "_taskCache", "renderer", "jsContent", "binaryContent", "width", "height", "a", "b", "value", "zstd", "Q", "data", "width", "height", "value", "l", "v1", "_ray", "x", "y", "info", "index", "i", "key", "line", "text", "meta", "matrix", "fileName", "clone", "subobject", "group", "a", "b", "elem", "n", "c", "getMaterial", "name", "token", "text", "size", "l", "index", "g", "b", "bits", "data", "scale", "text", "size", "length", "data", "scale", "IFFParser", "length", "index", "IFFParser", "length", "index", "length", "name", "map", "data", "value", "size", "a", "GeometryParser", "name", "connections", "index", "k", "value", "data", "y", "x", "t", "c", "X", "Y", "Z", "g", "b", "p", "a", "l", "n", "value", "g", "b", "p", "q", "t", "max", "key", "k", "lengths", "length", "partial", "name", "data", "elem", "globalData", "comp", "x", "mask", "effect", "position", "renderer", "width", "flatten", "n", "prng", "seed", "i", "j", "s", "a", "BMMath", "loopOut", "loopIn", "smooth", "time", "matrix", "scale", "rotation", "text", "val", "animationData", "err", "loadAnimation", "ob", "keys", "line", "expressionsPlugin", "index", "first", "searchAnimations", "standalone", "div", "c", "A", "B", "C", "values", "y", "clone", "v1", "l", "transform", "b2", "_p", "equals", "_a", "_b", "frameRate", "size", "sum", "Font", "property", "toWorld", "fromWorld", "fromComp", "len", "content", "wiggle", "velocity", "value", "text", "data", "data", "l", "scale", "frames", "x", "y", "n", "positions", "normals", "data", "values", "data", "text", "value", "index", "key", "materials", "name", "t", "width", "height", "map", "x", "y", "a", "b", "time", "position", "rotation", "values", "q", "c", "ft", "text", "value", "line", "key", "index", "map", "n", "index", "slice", "value", "data", "value", "slice", "k", "index", "y", "x", "length", "max", "data", "_bytes", "u8", "i", "k", "l", "value", "max", "name", "index", "mi", "value", "a", "b", "c", "ia", "l", "text", "line", "data", "v1", "data", "PCDheader", "x", "l", "position", "c", "line", "g", "b", "text", "length", "c", "l", "x", "y", "g", "b", "index", "_color", "text", "data", "property", "line", "n", "l", "name", "geometry", "little_endian", "c", "height", "width", "value", "data", "width", "height", "reject", "x", "y", "value", "reject", "data", "size", "g", "b", "a", "p", "y", "x", "fd", "text", "R", "Q", "X", "C", "n", "A", "l", "I", "Z", "q", "c", "$", "Y", "val", "pa", "oa", "text", "data", "g", "b", "index", "name", "text", "transform", "node", "ShapePath", "l", "data", "i", "q", "x", "y", "a", "b", "index", "clamp", "current", "partial", "length", "n", "scale", "currentTransform", "v1", "te", "A", "B", "C", "t", "t2", "p", "index2", "scanlineMinX", "scanlineMaxX", "width", "position", "joinIsOnLeftSide", "innerSideModified", "points", "data", "scale", "name", "value", "values", "matrix", "inverse", "index", "g", "b", "position", "c", "UTIF", "W", "p", "t", "ak", "Q", "n", "E", "a", "F", "C", "q", "X", "x", "k", "g", "R", "c", "Y", "I", "l", "Z", "e", "N", "A", "$", "b", "y", "B", "V", "data", "bits", "arr_a", "arr_b", "i", "a6", "height", "sum", "b2", "val", "max", "dt", "EOI", "SOS", "sosMarker", "line", "keys", "key", "de", "map", "mi", "a3", "position", "size", "index", "first", "bits", "sum", "dt", "t", "lengths", "val", "length", "clen", "offs", "v1", "x", "y", "b", "a", "c", "t2", "Path", "i", "value", "data", "table", "l", "keys", "k", "subtableMakers", "Parser", "values", "cmap", "p", "g", "post", "name", "scale", "parseGlyph", "buildPath", "parseCFFCharstring", "b2", "b4", "key", "meta", "width", "parse", "code", "charString", "head", "hhea", "maxp", "ltag", "stringOffset", "property", "text", "os2", "glyphCount", "substCount", "tableData", "gsub", "sfnt", "n", "langSysTable", "sub", "transform", "loca", "pi", "div", "check", "Font", "fvar", "gdef", "parseLookup1", "parseLookup2", "parseLookup3", "parseLookup4", "parseLookup5", "parseLookup6", "parseLookup7", "parseLookup8", "gpos", "reject", "err", "scale", "c", "p", "result", "data", "k", "position", "size", "l", "name", "text", "data", "line", "values", "meta", "zip", "buffer", "value", "index", "name", "indices", "a", "b", "c", "index2", "l", "map", "buildMaterial", "group", "data", "id", "x", "y", "size", "_color", "add", "g", "b", "index", "c", "R", "t", "n", "a", "A", "c", "g", "p", "l", "y", "pe", "ln", "F", "Ae", "b", "se", "Q", "te", "Z", "In", "Sn", "Ft", "xe", "ct", "X", "dt", "Ei", "I", "Ti", "yt", "C", "Oi", "Ii", "x", "B", "Pi", "Si", "Ci", "Mi", "Fi", "et", "gt", "$", "de", "Vi", "zi", "Y", "$t", "q", "_a", "Ot", "E", "nt", "text", "data", "l", "tree", "scene", "value", "width", "height", "k", "size", "index", "x", "y", "g", "b", "t", "a", "c", "scale", "flattenData", "index2", "Face", "position", "$", "text", "data", "line", "x", "y", "k", "g", "b", "index", "buffer", "c", "size", "first", "i", "l", "content", "a", "meta", "text", "line", "g", "b", "value", "t", "a", "b", "x", "y", "X", "Y", "Z", "A", "B", "value", "max", "name", "data", "k", "_color", "name", "x", "index", "R", "t", "rotation", "obb", "x", "y", "ra", "matrix", "_v1", "_v2", "_plane", "_sphere", "a", "b", "c", "t2", "x", "y", "position", "v1", "g", "x", "y", "t", "t2", "k", "k2", "t3", "l", "c", "l2", "x2", "y2", "_v1", "n", "velocity", "b2", "va", "p", "x", "y", "renderer", "value", "renderer", "data", "l", "index", "name", "name", "key", "time", "index", "name", "k", "a", "b", "width", "height", "last", "renderer", "ob", "l", "position", "offset", "fromPoint", "toPoint", "x", "y", "size", "_color", "height", "random", "size", "matrix1", "matrix2", "count", "position", "value", "dataArray", "index", "x", "y", "data", "matrix", "index", "indexes", "name", "_cb", "_ab", "name", "t", "index", "a", "b", "c", "Triangle", "position", "k", "n", "v1", "va", "a", "b", "c", "v1", "c2", "map", "height", "scale", "renderer", "size", "l", "uniforms", "invAspect", "resolution", "lerp", "a", "b", "t", "q", "x", "y", "q2", "bits", "c", "err", "val", "size", "value", "index", "size2", "x2", "y2", "index2", "val2", "rotationMatrix", "q", "renderer", "yAxis", "val", "rotationMatrix", "renderer", "rotationMatrix", "visible", "position", "scale", "updateRefractorPlane", "q", "updateVirtualCamera", "renderer", "time", "rotationMatrix", "q", "renderer", "Water", "scale", "renderer", "frameRate", "world", "getShape", "position", "transform", "index", "time", "l", "x", "y", "x2", "y2", "_scale", "world", "_vector", "_quaternion", "_matrix", "position", "index", "velocity", "l", "renderer", "width", "height", "values", "sum", "x", "renderer", "width", "height", "BokehShader", "BokehShader", "renderer", "width", "height", "renderer", "renderer", "scale", "renderer", "renderer", "renderer", "renderer", "size", "index", "width", "height", "renderer", "renderer", "length", "val", "size", "data", "width", "height", "renderer", "size", "data", "x", "y", "width", "height", "key", "renderer", "camera", "width", "height", "renderer", "renderer", "renderer", "width", "height", "x", "y", "renderer", "x", "renderer", "width", "height", "width", "height", "renderer", "width", "height", "renderer", "width", "height", "renderer", "scale", "size", "data", "x", "y", "renderer", "width", "height", "val", "renderer", "width", "height", "renderer", "_JitterVectors", "map", "renderer", "width", "height", "renderer", "_vector", "_a", "_b", "width", "height", "l", "a", "b", "_position", "_quaternion", "_scale", "_matrix", "_matrix2", "width", "height", "value", "matrix", "l", "_face", "_line", "_vector3", "_vector4", "_viewMatrix", "_viewProjectionMatrix", "_frustum", "value", "position", "x", "y", "g", "b", "v1", "a", "c", "l", "t", "line", "SVGRenderer", "_v1", "_v2", "_v3", "_color", "_vector3", "_viewMatrix", "_viewProjectionMatrix", "width", "height", "c", "x", "y", "l", "position", "v1", "find", "width", "height", "x", "y", "l", "pa", "pe", "n", "l", "b", "t", "frames", "time", "name", "max", "value", "name", "position", "x", "y", "oct", "z", "length", "max", "size", "v1", "l", "gosper", "x", "y", "c", "_color", "_matrix", "index", "name", "k", "n", "l", "value", "position", "parent", "width", "height", "x", "y", "renderer", "scale", "name", "time", "clone", "a", "b", "data", "a", "b", "len", "p", "t", "size", "a", "b", "width", "height", "index", "face", "uvs", "renderer", "err", "position", "position", "height", "renderer", "err", "renderer", "err", "supported", "x", "y", "xAxis", "yAxis", "data", "value", "err", "renderer", "time", "_matrix", "_vector", "renderer", "matrix", "width", "height"] -}