a3js 0.0.22 → 0.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/a3js.cjs.js +66 -66
- package/dist/a3js.cjs.js.map +1 -1
- package/dist/a3js.es.js +4059 -3988
- package/dist/a3js.es.js.map +1 -1
- package/package.json +1 -1
package/dist/a3js.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a3js.cjs.js","sources":["../src/utils/TypeGuard.ts","../src/core/Physics.ts","../src/rapier/RapierPhysics.ts","../src/core/Scene.ts","../src/core/Quat.ts","../src/core/Vec3.ts","../src/core/ObjectA3.ts","../src/core/Camera.ts","../src/core/Controller.ts","../src/utils/math.ts","../src/three/Sound.ts","../src/core/ViewBase.ts","../src/core/GeneralCamera.ts","../node_modules/three/examples/jsm/renderers/CSS2DRenderer.js","../src/core/Canvas.ts","../src/core/Window.ts","../src/core/Test.ts","../node_modules/three/examples/jsm/loaders/FontLoader.js","../node_modules/three/examples/jsm/geometries/TextGeometry.js","../src/core/Text3D.ts","../node_modules/three/examples/jsm/utils/BufferGeometryUtils.js","../node_modules/three/examples/jsm/loaders/GLTFLoader.js","../node_modules/three/examples/jsm/loaders/DRACOLoader.js","../src/core/GLTFA3.ts","../node_modules/three/examples/jsm/libs/chevrotain.module.min.js","../node_modules/three/examples/jsm/loaders/VRMLLoader.js","../node_modules/three/examples/jsm/loaders/BVHLoader.js","../src/three/threeUtils.ts","../src/core/Acerola3D.ts","../src/three/ThreeJS.ts","../src/three/Box.ts","../src/three/Sphere.ts","../src/three/HTML.ts"],"sourcesContent":["import * as THREE from 'three';\nimport { RoundedBoxGeometry } from 'three/addons/geometries/RoundedBoxGeometry.js';\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\";\n}\n\nexport function isMesh(value: any): value is THREE.Mesh {\n return (value as any).isMesh === true;\n}\n\n// このisBufferGeometryはBufferGeometryだけでなくBoxGeometryなどの\n// サブクラスもOKと判定するっぽい。\nexport function isBufferGeometry(value: any): value is THREE.BufferGeometry {\n return (value as any).isBufferGeometry === true;\n}\n\n// なぜか色々なGeometryが普通の方法(isXXX === \"true\")で\n// 上手く判定できない?まだ全部調べてないから他のGeometryが\n// どう判定されるか不安。今のところthree.jsのRapierPhysicsの\n// 中の判定方法と同じ方法で書いておく。(BufferGeometryは例外!?)\n\nexport function isRoundedBoxGeometry(value: any): value is RoundedBoxGeometry {\n return (value as any).type === \"RoundedBoxGeometry\";\n //return (value as any).isRoundedBoxGeometry === true;\n}\n\nexport function isBoxGeometry(value: any): value is THREE.BoxGeometry {\n return (value as any).type === \"BoxGeometry\";\n //return (value as any).isBoxGeometry === true;\n}\n\nexport function isSphereGeometry(value: any): value is THREE.SphereGeometry {\n return (value as any).type === \"SphereGeometry\";\n //return (value as any).isSphereGeometry === true;\n}\n\nexport function isIcosahedronGeometry(value: any): value is THREE.IcosahedronGeometry {\n return (value as any).type === \"IcosahedronGeometry\";\n //return (value as any).isIcosahedronGeometry === true;\n}\n\nexport function isCylinderGeometry(value: any): value is THREE.CylinderGeometry {\n return (value as any).type === \"CylinderGeometry\";\n //return (value as any).isCylinderGeometry === true;\n}\n\nexport function isCapsuleGeometry(value: any): value is THREE.CapsuleGeometry {\n return (value as any).type === \"CapsuleGeometry\";\n //return (value as any).isCapsuleGeometry === true;\n}\n\n// ほね\nexport function isBone(value: any): value is THREE.Bone {\n return (value as any).isBone === true;\n}\n\n// TypeScriptにobjがSpotLightであることを教えてあげる関数。\n/* function isSpotLight(obj: THREE.Object3D): obj is THREE.SpotLight {\n return (obj as any).isSpotLight === true;\n} */\n// TypeScriptにobjがCameraであることを教えてあげる関数。\n/* function isCamera(obj: any): obj is THREE.Camera {\n return obj.isCamera === true;\n} */\n// TypeScriptにobjがPerspectiveCameraであることを教えてあげる関数。\nexport function isPerspectiveCamera(obj: THREE.Camera): obj is THREE.PerspectiveCamera {\n return (obj as any).isPerspectiveCamera === true;\n}\n","\nimport type { ObjectA3 } from './ObjectA3';\nimport type { MutableVec3 } from './Vec3';\nimport type { MutableQuat } from './Quat';\n\n\n/*\n * 念のため、物理エンジンが変更されてもa3jsへの影響が少なくなるよう\n * 物理エンジンのインターフェースを作っておく。3Dグラフィック側は\n * Three.jsを信じて、ここのインターフェースで使ってしまおう。\n */\n\n/**\n * 物理エンジン全体を管理するインターフェース\n * Sceneのstaticなプロパティのphysicsに一つだけ\n * 生成される。\n */\nexport interface PhysicsEngine {\n readonly isInitialized: boolean;\n\n /**\n * 物理エンジンを初期化する。最初は必要な時に自動で\n * 初期化させることを目指したけど、難しいのであきらめた。\n * 物理演算が必要な場合は、ユーザがこれを実行することになる。\n * 現在のところ初期化の処理は以下のようなプログラムになる。\n * await Scene.physics.init();\n */\n init(): Promise<void>;\n\n /**\n * 物理演算用のWorldを生成して返す。\n */\n createWorld(option: PhysicsWorldOption): PhysicsWorld;\n}\n\n/**\n * PhysicsWorldを生成する時に必要となる情報をまとめたもの。\n * 物理エンジンの実装ごとに拡張可能。\n */\nexport interface PhysicsWorldOption {\n gravity: { x: number; y: number; z: number };\n}\n\n/**\n * 物理演算が行われる空間を表すクラス。物理演算のステップを\n * 進めるupdate、PhysicsEntityを追加・削除するためのadd、remove\n * メソッドを持つ。\n */\nexport interface PhysicsWorld {\n add(entity: PhysicsEntity): void;\n remove(entity: PhysicsEntity): void;\n update(dt: number): void;\n getCollisions(): Collision[];\n}\n\nexport type RigidBodyType = \"dynamic\" | \"kinematic\" | \"fixed\";\nexport type ColliderKind = \"solid\" | \"sensor\";\nexport type MeshColliderKind = \"tri_mesh\" | \"convex_hull\";\n/**\n * PhysicsEngityを生成する時に必要な情報をまとめたもの。\n * 物理エンジンや個別のPhysicsEntityごとに拡張可能。\n */\nexport interface PhysicsEntityOption {\n rigidBody: RigidBodyType;\n collider: ColliderKind;\n meshCollider: MeshColliderKind;\n mass: number;\n friction: number;\n restitution: number;\n membership: number;\n filter: number;\n collisionDetection: boolean\n}\n\n/**\n * RigidBodyなどの個別のObjectA3に必要な物理計算のための\n * 色々な実体が含まれる物のインターフェース。\n */\nexport abstract class PhysicsEntity {\n object: ObjectA3;\n option: PhysicsEntityOption;\n\n constructor(object: ObjectA3, option: PhysicsEntityOption) {\n this.object = object;\n this.option = option;\n }\n \n /**\n * 物理演算の結果をObjectA3の位置や回転に反映させる。\n */\n abstract synchronize(obj: ObjectA3): void;\n\n /**\n * 物理演算対象であっても位置を外部から操作できるようにする。\n */\n abstract setLocationNow(v: MutableVec3): void;\n\n /**\n * 物理演算対象であっても回転を外部から操作できるようにする。\n */\n abstract setQuatNow(q: MutableQuat): void;\n\n /**\n * 物理演算対象であっても拡大率を外部から操作できるようにする。\n * ただ、これは普通難しいかも。\n */\n abstract setScaleNow(v: MutableVec3): void;\n}\n\n/**\n * 衝突の情報を保持するオブジェクトのインタフェース。\n * もうRapierと独立に設計するのが難しいのでRapierベースで\n * 設計する。\n */\nexport interface Collision {\n objectA: ObjectA3;\n partOfA: number;\n objectB: ObjectA3;\n partOfB: number;\n started: boolean;\n}\n","//import RAPIER from '@dimforge/rapier3d-compat';\nimport type * as Rapier from '@dimforge/rapier3d-compat';\nimport * as THREE from 'three';\nimport * as TG from '../utils/TypeGuard';\n\nimport { ObjectA3 } from '../core/ObjectA3';\nimport type { MutableVec3 } from '../core/Vec3';\nimport type { MutableQuat } from '../core/Quat';\nimport { PhysicsEntity } from '../core/Physics';\nimport type { PhysicsEngine, PhysicsWorld, PhysicsWorldOption,\n PhysicsEntityOption, Collision } from '../core/Physics';\n\nlet RAPIER: typeof import('@dimforge/rapier3d-compat');\n\n\nexport class RapierPhysicsEngine implements PhysicsEngine {\n static RAPIER: typeof import('@dimforge/rapier3d-compat');\n isInitialized: boolean = false;\n constructor() {\n // 物理エンジンを使用しない場合もあることを考えて、\n // コンストラクタでは初期化処理をしないでおくこと。\n }\n\n /**\n * RAPIER物理エンジンの初期化が済んでない時に初期化する\n * 動的インポート使う。\n */\n async init(): Promise<void> {\n if (!RapierPhysicsEngine.RAPIER) {\n const R = await import('@dimforge/rapier3d-compat');\n await R.init(); // using deprecated parameters for the initialization function; pass a single object instead\n RapierPhysicsEngine.RAPIER = R;\n RAPIER = R;\n this.isInitialized = true;\n }\n }\n\n /**\n * RapierWorldを作って返す。\n */\n createWorld(option: RapierPhysicsWorldOption): PhysicsWorld {\n let timestep = 1/60;\n if (this.isRapierWorldOption(option))\n timestep = option.timestep;\n const world = new RAPIER.World(option.gravity);\n return new RapierPhysicsWorld(world,timestep);\n }\n\n private isRapierWorldOption(option: PhysicsWorldOption): option is RapierPhysicsWorldOption {\n return ( /* \"enableCCD\" in option && */ \"timestep\" in option );\n }\n}\n\nexport interface RapierPhysicsWorldOption extends PhysicsWorldOption {\n //enableCCD: boolean;\n timestep: number;\n}\n\nexport class RapierPhysicsWorld implements PhysicsWorld {\n world: Rapier.World;\n timestep: number;\n collisionEventQueue: Rapier.EventQueue;\n\n constructor(world:Rapier.World, timestep:number) {\n this.world = world;\n this.timestep = timestep;\n this.collisionEventQueue = new RAPIER.EventQueue(true);\n this.world.integrationParameters.dt = this.timestep;\n }\n\n add(entity: PhysicsEntity) {\n if (isRapierPhysicsEntity(entity)) {\n entity.addOneself(this);\n } else {\n ; // 何もしない\n }\n }\n\n remove(entity: PhysicsEntity) {\n if (isRapierPhysicsEntity(entity)) {\n entity.removeOneself(this);\n } else {\n ; // 何もしない\n }\n }\n\n update(dt: number) {\n // ここの実装は良く考えた方が良い。今は適当\n const n = Math.ceil(dt / this.timestep);\n for (let i=0;i<n;i++)\n this.world.step(this.collisionEventQueue);\n }\n\n getCollisions(): Collision[] {\n const collisions: Collision[] = [];\n this.collisionEventQueue.drainCollisionEvents((handle1, handle2, started) => {\n const objA = RapierPhysicsEntity.collisionMap.get(handle1);\n const objB = RapierPhysicsEntity.collisionMap.get(handle2);\n if ( objA && objB) {\n collisions.push({\n objectA: objA,\n partOfA: handle1,\n objectB: objB,\n partOfB: handle2,\n started\n });\n }\n });\n return collisions;\n }\n}\n\nexport abstract class RapierPhysicsEntity extends PhysicsEntity {\n static collisionMap: Map<number,ObjectA3> = new Map();\n abstract addOneself(world: RapierPhysicsWorld): void;\n abstract removeOneself(world: RapierPhysicsWorld): void;\n}\n\nfunction isRapierPhysicsEntity(obj: PhysicsEntity): obj is RapierPhysicsEntity {\n return \"addOneself\" in obj && \"removeOneself\" in obj;\n}\n\nexport class RapierDefaultPhysicsEntity extends RapierPhysicsEntity {\n bodyDesc: Rapier.RigidBodyDesc;\n body?: Rapier.RigidBody;\n colliderDescs: Rapier.ColliderDesc[] = [];\n colliders: Rapier.Collider[] = [];\n\n constructor(obj: ObjectA3,opt: PhysicsEntityOption) {\n super(obj,opt);\n switch(opt.rigidBody) {\n case \"dynamic\":\n this.bodyDesc = RAPIER.RigidBodyDesc.dynamic();\n break;\n case \"kinematic\":\n this.bodyDesc = RAPIER.RigidBodyDesc.kinematicPositionBased();\n //this.bodyDesc = RAPIER.RigidBodyDesc.kinematicVelocityBased(); // GAHAこれあったか!\n break;\n case \"fixed\":\n this.bodyDesc = RAPIER.RigidBodyDesc.fixed();\n break;\n }\n this.bodyDesc.setTranslation(obj.location.x,obj.location.y,obj.location.z);\n this.bodyDesc.setRotation({\n x: obj.quat.x,\n y: obj.quat.y,\n z: obj.quat.z,\n w: obj.quat.w\n });\n const volumes: number[] = [];\n this.object.object.traverse((obj)=>{\n if (TG.isMesh(obj)) {\n const cv = getShapeAndVolumeFromPrimitive(obj.geometry);\n const collisionGroups = (opt.membership << 16) | opt.filter;\n if (cv) {\n cv.colliderDesc.setCollisionGroups(collisionGroups);\n if (opt.collisionDetection)\n cv.colliderDesc.setActiveEvents(RAPIER.ActiveEvents.COLLISION_EVENTS);\n this.colliderDescs.push(cv.colliderDesc);\n cv.colliderDesc.setRestitution(opt.restitution).setFriction(opt.friction);\n volumes.push(cv.volume);\n } else {\n let c: Rapier.ColliderDesc | null, v: number;\n switch(opt.meshCollider) {\n case \"tri_mesh\":\n c = createTriMeshColliderDesc(obj);\n v = computeGeometryVolume(obj.geometry);\n break;\n case \"convex_hull\":\n c = createConvexHullColliderDesc(obj);\n v = computeGeometryVolume(obj.geometry);\n break;\n }\n if (c) {\n c.setCollisionGroups(collisionGroups);\n if (opt.collisionDetection)\n c.setActiveEvents(RAPIER.ActiveEvents.COLLISION_EVENTS);\n this.colliderDescs.push(c);\n volumes.push(v);\n }\n }\n }\n });\n let volumeSum = volumes.reduce((sum,vol)=>sum+vol,0);\n for (let i=0;i<this.colliderDescs.length;i++) {\n this.colliderDescs[i].setRestitution(opt.restitution);\n this.colliderDescs[i].setFriction(opt.friction);\n this.colliderDescs[i].setMass(opt.mass*(volumes[i]/volumeSum));\n }\n }\n\n synchronize(obj: ObjectA3) {\n if (this.body) {\n const t = this.body.translation();\n obj.location.set(t.x, t.y, t.z);\n obj.object.position.set(t.x, t.y, t.z);\n const r = this.body.rotation();\n obj.quat.set(r.x, r.y, r.z, r.w);\n obj.object.quaternion.set(r.x, r.y, r.z, r.w);\n }\n }\n\n addOneself(world: RapierPhysicsWorld) {\n this.body = world.world.createRigidBody(this.bodyDesc);\n this.colliderDescs.forEach((colliderDesc)=>{\n const collider = world.world.createCollider(colliderDesc,this.body);\n this.colliders.push(collider);\n RapierPhysicsEntity.collisionMap.set(collider.handle,this.object);\n });\n }\n\n removeOneself(world: RapierPhysicsWorld) {\n if (this.body)\n world.world.removeRigidBody(this.body);\n this.colliders.forEach((collider) => {\n world.world.removeCollider(collider,false); // true? false?\n });\n }\n\n setLocationNow(v: MutableVec3): void {\n if (this.body)\n this.body.setTranslation(v,true); // true? false?\n }\n\n setQuatNow(q: MutableQuat): void {\n if (this.body)\n this.body.setRotation(q,true); // true? false?\n }\n\n setScaleNow(v: MutableVec3): void {\n v;\n // 簡単ではないのでとりあえず保留\n }\n}\n\n// ------------------------------------\n\nexport function createTriMeshColliderDesc(obj: THREE.Object3D): Rapier.ColliderDesc | null {\n let colliderDesc = null;\n if (TG.isMesh(obj)) {\n const mesh = obj;\n\n // ワールド変換を頂点に焼き込み(スケール/回転/位置を反映)\n mesh.updateWorldMatrix(true, true);\n const geom = mesh.geometry.clone();\n geom.applyMatrix4(mesh.matrixWorld);\n\n // 頂点(Float32Array)とインデックス(Uint32Array)を用意\n const pos = geom.attributes.position.array;\n let idx = geom.index ? geom.index.array : null;\n if (!idx) {\n // 非インデックスの場合は 0..N-1 を生成\n const count = geom.attributes.position.count;\n idx = new Uint32Array(count);\n for (let i = 0; i < count; i++) idx[i] = i;\n } else if (!(idx instanceof Uint32Array)) {\n idx = new Uint32Array(idx); // Rapier 側の型に合わせる\n }\n\n if (pos instanceof Float32Array)\n colliderDesc = RAPIER.ColliderDesc.trimesh(pos, idx);\n }\n return colliderDesc;\n}\n\nexport function createConvexHullColliderDesc(obj: THREE.Object3D): Rapier.ColliderDesc | null {\n let colliderDesc = null;\n if (TG.isMesh(obj)) {\n const mesh = obj;\n\n // ワールド変換を頂点に焼き込み(スケール/回転/位置を反映)\n mesh.updateWorldMatrix(true, true);\n const geom = mesh.geometry.clone();\n geom.applyMatrix4(mesh.matrixWorld);\n\n // 頂点(Float32Array)とインデックス(Uint32Array)を用意\n const pos = geom.attributes.position.array; // Float32Array\n if (pos instanceof Float32Array) {\n // 凸包を Rapier に自動生成させる\n colliderDesc = RAPIER.ColliderDesc.convexHull(pos);\n }\n }\n return colliderDesc;\n}\n\n// -------------------\n\n/**\n * BufferGeometry の体積を計算する\n * - インデックス付き / 非インデックス両対応\n * - 閉じたメッシュ前提\n * made by チャッピー\n */\nexport function computeGeometryVolume(\n geometry: THREE.BufferGeometry\n): number {\n const position = geometry.attributes.position;\n if (!position) {\n throw new Error(\"position attribute not found\");\n }\n\n const index = geometry.index;\n const array = position.array;\n let volume = 0;\n\n const p0 = new THREE.Vector3();\n const p1 = new THREE.Vector3();\n const p2 = new THREE.Vector3();\n\n if (index) {\n // --- インデックス付きジオメトリ ---\n const indices = index.array;\n\n for (let i = 0; i < indices.length; i += 3) {\n const i0 = indices[i] * 3;\n const i1 = indices[i + 1] * 3;\n const i2 = indices[i + 2] * 3;\n\n p0.set(array[i0], array[i0 + 1], array[i0 + 2]);\n p1.set(array[i1], array[i1 + 1], array[i1 + 2]);\n p2.set(array[i2], array[i2 + 1], array[i2 + 2]);\n\n volume += p0.dot(p1.clone().cross(p2));\n }\n } else {\n // --- 非インデックスジオメトリ ---\n for (let i = 0; i < array.length; i += 9) {\n p0.set(array[i], array[i + 1], array[i + 2]);\n p1.set(array[i + 3], array[i + 4], array[i + 5]);\n p2.set(array[i + 6], array[i + 7], array[i + 8]);\n\n volume += p0.dot(p1.clone().cross(p2));\n }\n }\n\n return Math.abs(volume) / 6;\n}\n\n//----------------------------------\n\n/**\n * BufferGeometryからColliderDescを生成する関数。\n * この関数はThree.jsのexamples/jsm/physics/RapierPhysics.jsに\n * かかれていたgetShapeをベースにしている。\n */\nexport function getShapeAndVolumeFromPrimitive( geometry: THREE.BufferGeometry ): {colliderDesc: Rapier.ColliderDesc, volume: number} | null {\n if (TG.isRoundedBoxGeometry(geometry)) {\n const ps = geometry.parameters;\n const sx = typeof ps?.width === \"number\" ? ps.width / 2 : 0.5;\n const sy = typeof ps?.height === \"number\" ? ps.height / 2 : 0.5;\n const sz = typeof ps?.depth === \"number\" ? ps.depth / 2 : 0.5;\n //const radius = typeof ps?.radius === \"number\" ? ps.radius : 0.1; // GAHAなぜ???\n const radius = 0.1;\n return {\n colliderDesc: RAPIER.ColliderDesc.roundCuboid( sx - radius, sy - radius, sz - radius, radius ),\n volume: 2*sx * 2*sy * 2*sz // GAHA radiusも取れないし、不正確な体積\n };\n } else if (TG.isBoxGeometry(geometry)) {\n const ps = geometry.parameters;\n const sx = typeof ps?.width === \"number\" ? ps.width / 2 : 0.5;\n const sy = typeof ps?.height === \"number\" ? ps.height / 2 : 0.5;\n const sz = typeof ps?.depth === \"number\" ? ps.depth / 2 : 0.5;\n return {\n colliderDesc: RAPIER.ColliderDesc.cuboid( sx, sy, sz ),\n volume: 2*sx * 2*sy * 2*sz\n };\n } else if (TG.isSphereGeometry(geometry)) {\n const ps = geometry.parameters;\n const radius = typeof ps?.radius === \"number\" ? ps.radius : 1;\n return {\n colliderDesc: RAPIER.ColliderDesc.ball( radius ),\n volume: 4/3*Math.PI*radius*radius*radius\n };\n } else if (TG.isIcosahedronGeometry(geometry)) {\n const ps = geometry.parameters;\n const radius = typeof ps?.radius === \"number\" ? ps.radius : 1;\n return {\n colliderDesc: RAPIER.ColliderDesc.ball( radius ),\n volume: 4/3*Math.PI*radius*radius*radius\n };\n } else if (TG.isCylinderGeometry(geometry)) {\n const ps = geometry.parameters;\n const radius = typeof ps?.radiusBottom === \"number\" ? ps.radiusBottom : 0.5;\n const length = typeof ps?.height === \"number\" ? ps.height : 0.5;\n return {\n colliderDesc: RAPIER.ColliderDesc.cylinder( length / 2, radius ),\n volume: (Math.PI*radius*radius)*length\n };\n } else if (TG.isCapsuleGeometry(geometry)) {\n const ps = geometry.parameters;\n const radius = typeof ps?.radius === \"number\" ? ps.radius : 0.5;\n const length = typeof ps?.height === \"number\" ? ps.height : 0.5;\n return {\n colliderDesc: RAPIER.ColliderDesc.capsule( length / 2, radius ),\n volume: 4/3*Math.PI*radius*radius*radius + (Math.PI*radius*radius)*length\n };\n }\n return null;\n}\n\nexport const physicsEngineInstance: RapierPhysicsEngine = new RapierPhysicsEngine();\n\nexport async function initPhysics(): Promise<void> {\n await physicsEngineInstance.init();\n}\n\n","import * as THREE from 'three';\nimport { ObjectA3 } from './ObjectA3';\nimport { physicsEngineInstance } from '../rapier/RapierPhysics';\nimport type { PhysicsWorld, Collision } from './Physics';\n\n/**\n * 3D仮想空間を表すクラス。THREE.Sceneを内包していて\n * アップデート処理とかも、ここで行う。\n */\nexport class Scene {\n scene: THREE.Scene;\n objects: ObjectA3[];\n physicsWorld: PhysicsWorld | null = null;\n physicsDt = 1/60;\n collisionListener?: (cs: Collision[]) => void;\n\n constructor() {\n this.scene = new THREE.Scene();\n this.objects = [];\n if (physicsEngineInstance.isInitialized) {\n this.physicsWorld = physicsEngineInstance.createWorld({\n gravity: {x:0.0, y: -9.81, z:0.0},\n timestep: this.physicsDt\n });\n }\n }\n\n add(object: ObjectA3) {\n this.scene.add(object.object);\n this.objects.push(object);\n object.scene = this;\n if (object.controlMode === \"physics\") {\n if (this.physicsWorld) {\n if (!object.physics) {\n const opt = object.getPhysicsOption();\n object.initPhysics(opt);\n }\n if (object.physics) // 必ずtrueのはず\n this.physicsWorld.add(object.physics);\n } else {\n console.log('物理エンジンを初期化してない状態で、物理エンジンを必要とするObjectA3が追加されました。');\n }\n }\n }\n\n remove(object: ObjectA3) {\n this.scene.remove(object.object);\n {\n // やりたいのはthis.objects.remove(object);なんだけど無い\n // そして順番は変になるけど以下の方法はゲーム系では速くて\n // 良いらしい。\n const i = this.objects.indexOf(object);\n this.objects[i] = this.objects[this.objects.length-1];\n this.objects.pop();\n }\n object.scene = null;\n if (object.controlMode === \"physics\")\n if (this.physicsWorld)\n if (object.physics)\n this.physicsWorld.remove(object.physics);\n }\n\n setCollisionListener(func: (cs: Collision[]) => void) {\n this.collisionListener = func;\n }\n\n update(dt: number) {\n if (this.physicsWorld) {\n this.physicsWorld.update(dt);\n const collisions = this.physicsWorld.getCollisions();\n collisions.forEach((c)=>{\n c.objectA.handleCollision(c.objectB, c.started, c.partOfA, c.partOfB);\n c.objectB.handleCollision(c.objectA, c.started, c.partOfB, c.partOfA);\n });\n if (this.collisionListener && collisions.length>0)\n this.collisionListener(collisions);\n }\n for (const obj of this.objects) {\n obj.update(dt);\n }\n }\n}\n","import { Vec3 } from './Vec3';\n\n/**\n * オイラー角(ラジアン)を四元数に変換する時に、軸の回転順番を\n * 指定するための型。\n */\nexport type RotationOrder = \"XYZ\" | \"XZY\" | \"YXZ\" | \"YZX\" | \"ZXY\" | \"ZYX\";\n\n/**\n * Readonlyな四元数のインタフェース。\n * a3.QuatもTHREE.QuaternionもRapierの{x,y,z,w}にも\n * あてはめられる型。\n */\nexport interface MutableQuat {\n readonly x: number;\n readonly y: number;\n readonly z: number;\n readonly w: number;\n}\n\n/**\n * 四元数\n */\nexport class Quat implements MutableQuat {\n private _x: number;\n private _y: number;\n private _z: number;\n private _w: number;\n\n get x() { return this._x; }\n get y() { return this._y; }\n get z() { return this._z; }\n get w() { return this._w; }\n\n constructor();\n constructor(q: MutableQuat);\n constructor(x: number, y: number, z: number, w: number);\n constructor(xOrQ?: undefined | MutableQuat | number, y?: number, z?: number, w?: number) {\n if (typeof xOrQ === \"number\") {\n this._x = xOrQ;\n this._y = y!;\n this._z = z!;\n this._w = w!;\n } else if (typeof xOrQ === \"undefined\") {\n this._x = this._y = this._z = 0;\n this._w = 1;\n } else {\n this._x = xOrQ.x;\n this._y = xOrQ.y;\n this._z = xOrQ.z;\n this._w = xOrQ.w;\n }\n }\n\n clone() {\n return new Quat(this);\n }\n\n normalize() {\n const l0 = this._x*this._x + this._y*this._y + this._z*this._z + this._w*this._w;\n const l1 = Math.sqrt(l0);\n if (l1 !== 0) {\n this._x /= l1;\n this._y /= l1;\n this._z /= l1;\n this._w /= l1;\n } else {\n console.warn(`Quat.normalize.`);\n }\n return this;\n }\n\n conjugate() {\n this._x *= -1;\n this._y *= -1;\n this._z *= -1;\n // wはそのまま\n return this;\n }\n\n set(q: MutableQuat): Quat;\n set(x: number, y: number, z: number, w: number): Quat;\n set(xOrQ: MutableQuat | number, y?: number, z?: number, w?: number): Quat {\n if (typeof xOrQ === \"number\") {\n this._x = xOrQ;\n this._y = y!;\n this._z = z!;\n this._w = w!;\n } else {\n this._x = xOrQ.x;\n this._y = xOrQ.y;\n this._z = xOrQ.z;\n this._w = xOrQ.w;\n }\n return this;\n }\n\n mul(x: number, y: number, z: number, w: number): Quat;\n mul(q: MutableQuat): Quat;\n mul(xOrQ: number | MutableQuat, y?: number, z?: number, w?: number): Quat {\n const q1 = new Quat(this);\n const q2 = new Quat();\n if (typeof xOrQ === \"number\")\n q2.set(xOrQ, y!, z!, w!);\n else\n q2.set(xOrQ);\n\n this._x = q1.w*q2.x + q1.x*q2.w + q1.y*q2.z - q1.z*q2.y;\n this._y = q1.w*q2.y - q1.x*q2.z + q1.y*q2.w + q1.z*q2.x;\n this._z = q1.w*q2.z + q1.x*q2.y - q1.y*q2.x + q1.z*q2.w;\n this._w = q1.w*q2.w - q1.x*q2.x - q1.y*q2.y - q1.z*q2.z;\n\n return this;\n }\n\n // 線形補間\n lerp(q1: MutableQuat, q2: MutableQuat, t: number) {\n this._x = (1-t)*q1.x + t*q2.x;\n this._y = (1-t)*q1.y + t*q2.y;\n this._z = (1-t)*q1.z + t*q2.z;\n this._w = (1-t)*q1.w + t*q2.w;\n }\n\n // 球面線形補間\n slerp(q1: MutableQuat, q2: MutableQuat, t: number) {\n if (t<0 || t>1) {\n console.warn('Quat.slerp(): t must be in [0,1]');\n return;\n }\n const cosR =\n q1.x * q2.x\n + q1.y * q2.y\n + q1.z * q2.z\n + q1.w * q2.w;\n if (cosR < 0.9995) {\n const tt = Math.acos(cosR);\n const w1 = Math.sin((1-t)*tt) / Math.sin(tt);\n const w2 = Math.sin(t*tt) / Math.sin(tt);\n this._x = w1*q1.x + w2*q2.x;\n this._y = w1*q1.y + w2*q2.y;\n this._z = w1*q1.z + w2*q2.z;\n this._w = w1*q1.w + w2*q2.w;\n } else {\n \n this._x = (1-t)*q1.x + t*q2.x;\n this._y = (1-t)*q1.y + t*q2.y;\n this._z = (1-t)*q1.z + t*q2.z;\n this._w = (1-t)*q1.w + t*q2.w;\n const s = Math.sqrt(\n this._x * this._x\n + this._y * this._y\n + this._z * this._z\n + this._w * this._w\n );\n if (s<0.0001) { // かなりダメな時\n console.warn(\"Quat.slerp(); ???!\");\n this._x = q1.x;\n this._y = q1.y;\n this._z = q1.z;\n this._w = q1.w;\n } else {\n this._x *= 1/s;\n this._y *= 1/s;\n this._z *= 1/s;\n this._w *= 1/s;\n }\n }\n }\n}\n\nexport function getQuatOfLookAt(camera: Vec3,target: Vec3,up: Vec3) {\n up.normalize();\n const forward = target.clone().sub(camera).normalize();\n const right = new Vec3().cross(forward,up).normalize();\n const trueUp = new Vec3().cross(right, forward);\n\n const m00 = right.x; const m01 = trueUp.x; const m02 = -forward.x;\n const m10 = right.y; const m11 = trueUp.y; const m12 = -forward.y;\n const m20 = right.z; const m21 = trueUp.z; const m22 = -forward.z;\n\n const trace = m00 + m11 + m22;\n if (trace > 0) {\n const s = Math.sqrt(trace+1.0)*2.0;\n return new Quat(\n (m21-m12)/s,\n (m02-m20)/s,\n (m10-m01)/s,\n 0.25*s\n );\n } else {\n if ((m00>m11) && (m00>m22)) {\n const s = Math.sqrt(1.0+m00-m11-m22) * 2.0;\n return new Quat(\n 0.25*s,\n (m01+m10)/s,\n (m02+m20)/s,\n (m21-m12)/s\n );\n } else if (m11>m22) {\n const s = Math.sqrt(1.0+m11-m00-m22) * 2.0;\n return new Quat(\n (m01+m10)/s,\n 0.25*s,\n (m12+m21)/s,\n (m02-m20)/s\n );\n } else {\n const s = Math.sqrt(1.0+m22-m00-m11) * 2.0;\n return new Quat(\n (m02+m20)/s,\n (m12+m21)/s,\n 0.25*s,\n (m10-m01)/s\n );\n }\n }\n}\n\n\n/**\n * オイラー角(ラジアン)を四元数に変換する関数、2番目の引数は\n * 軸の回転順番を指定するRotationOrder。\n */\nexport function vec3EulerToQuat(rot: Vec3, order: RotationOrder = \"XYZ\" ): Quat {\n const quat = new Quat(0,0,0,1);\n for (let i=0;i<3;i++) {\n const c = order.charAt(i);\n switch(c) {\n case 'X':\n quat.mul(new Quat(Math.sin(rot.x),0,0,Math.cos(rot.x)))\n break;\n case 'Y':\n quat.mul(new Quat(0,Math.sin(rot.y),0,Math.cos(rot.y)))\n break;\n case 'Z':\n quat.mul(new Quat(0,0,Math.sin(rot.z),Math.cos(rot.z)))\n break;\n }\n }\n return quat;\n}\n","import { Quat } from './Quat';\n\n/**\n * Readonlyな3次元ベクトルのインタフェース。\n * a3.Vec3もTHREE.Vector3もRapierの{x,y,z}にも\n * あてはめられる型。\n */\nexport interface MutableVec3 {\n readonly x: number;\n readonly y: number;\n readonly z: number;\n}\n\n/**\n * 3次元ベクトル\n */\nexport class Vec3 implements MutableVec3 {\n private _x: number;\n private _y: number;\n private _z: number;\n\n get x() { return this._x; }\n get y() { return this._y; }\n get z() { return this._z; }\n\n constructor();\n constructor(v: MutableVec3);\n constructor(x: number,y: number,z: number)\n constructor(xOrV?: undefined | MutableVec3 | number, y?: number, z?: number) {\n if (typeof xOrV === \"number\") {\n this._x = xOrV;\n this._y = y!;\n this._z = z!;\n } else if (typeof xOrV === \"undefined\") {\n this._x = this._y = this._z = 0;\n } else {\n this._x = xOrV.x;\n this._y = xOrV.y;\n this._z = xOrV.z;\n }\n }\n\n clone() {\n return new Vec3(this);\n }\n\n normalize() {\n const l0 = this._x*this._x + this._y*this._y + this._z*this._z;\n const l1 = Math.sqrt(l0);\n if (l1 !== 0) {\n this._x /= l1;\n this._y /= l1;\n this._z /= l1;\n } else {\n console.warn(`Vec3.normalize.`);\n }\n return this;\n }\n\n negate() {\n this._x *= -1;\n this._y *= -1;\n this._z *= -1;\n return this;\n }\n\n length() {\n return Math.sqrt(this._x*this._x + this._y*this._y + this._z*this._z);\n }\n\n set(v: MutableVec3): Vec3;\n set(x: number, y: number, z: number): Vec3;\n set(xOrV: MutableVec3 | number, y?: number, z?: number): Vec3 {\n if (typeof xOrV === \"number\") {\n this._x = xOrV;\n this._y = y!;\n this._z = z!;\n } else {\n this._x = xOrV.x;\n this._y = xOrV.y;\n this._z = xOrV.z;\n }\n return this;\n }\n\n add(x: number, y: number, z: number): Vec3;\n add(v: MutableVec3): Vec3;\n add(xOrV: number | MutableVec3, y?: number, z?: number) {\n if (typeof xOrV === \"number\") {\n this._x += xOrV;\n this._y += y!;\n this._z += z!;\n } else {\n this._x += xOrV.x;\n this._y += xOrV.y;\n this._z += xOrV.z;\n }\n return this;\n }\n \n sub(x: number, y: number, z: number): Vec3;\n sub(v: MutableVec3): Vec3;\n sub(xOrV: number | MutableVec3, y?: number, z?: number) {\n if (typeof xOrV === \"number\") {\n this._x -= xOrV;\n this._y -= y!;\n this._z -= z!;\n } else {\n this._x -= xOrV.x;\n this._y -= xOrV.y;\n this._z -= xOrV.z;\n }\n return this;\n }\n\n scale(s: number) {\n this._x *= s;\n this._y *= s;\n this._z *= s;\n return this;\n }\n\n // 自分自身ん引数に与えるとダメな実装\n cross(v1: MutableVec3, v2: MutableVec3) {\n this._x = v1.y*v2.z - v1.z*v2.y;\n this._y = v1.z*v2.x - v1.x*v2.z;\n this._z = v1.x*v2.y - v1.y*v2.x;\n return this;\n }\n\n apply(x: number, y: number, z: number, w: number): Vec3;\n apply(q: Quat): Vec3;\n apply(xOrQ: number | Quat, argY?: number, argZ?: number, argW?: number): Vec3 {\n const q = new Quat();\n if (typeof xOrQ === \"number\")\n q.set(xOrQ,argY!,argZ!,argW!);\n else\n q.set(xOrQ);\n\n const v = new Quat(this._x,this._y,this._z,0);\n const q_inv = new Quat(q).conjugate();\n\n q.mul(v).mul(q_inv);\n\n this._x = q.x;\n this._y = q.y;\n this._z = q.z;\n\n return this;\n }\n\n // 線形補間\n lerp(v1: MutableVec3, v2: MutableVec3, t: number) {\n this._x = (1-t)*v1.x + t*v2.x;\n this._y = (1-t)*v1.y + t*v2.y;\n this._z = (1-t)*v1.z + t*v2.z;\n }\n}\n","\nimport * as THREE from 'three';\nimport { Scene } from './Scene';\nimport type { PhysicsEntity,\n PhysicsEntityOption } from './Physics';\nimport { RapierDefaultPhysicsEntity } from '../rapier/RapierPhysics';\nimport { Vec3 } from './Vec3';\nimport type { MutableVec3 } from './Vec3';\nimport { Quat, getQuatOfLookAt, vec3EulerToQuat } from './Quat';\nimport type { MutableQuat, RotationOrder } from './Quat';\n\n\n/**\n * ObjectA3のモーションコントロールモード\n */\nexport type ControlMode =\n | \"manual\" // プログラマ指定の場所に瞬時に移動するモード\n | \"interpolated\" // プログラマ指定の場所に1秒とかで補完で移動するモード\n | \"physics\" // 物理エンジンを使うモード\n | \"user\"; // 自分で動きを実装するモード\n\n/**\n * スクリーン上における方向を表します。\n * オブジェクトに吹き出しを出す場合の方向で使いますが、\n * それ以外でも使うかも。\n */\nexport type Dir =\n | \"TOP\"\n | \"RIGHT\"\n | \"LEFT\"\n | \"BOTTOM\";\n\n// BalloonInfoとInterpolationの実装は長いので一番下に移動した。\n\n/**\n * シーンの中に配置される全てのオブジェクトのベース\n * となるアブストラクトクラス。シーンの中の表示対象\n * はもちろん、カメラやライトなどもこのクラスのサブ\n * クラスにしないといけない。特に、このアブストラクト\n * クラスでは、3D空間内での移動や、物理演算に関する\n * 必要なメソッドを実装する。\n */\nexport abstract class ObjectA3 {\n static defaultRotationOrder: RotationOrder = \"XYZ\";\n static defaultUpVector: Vec3 = new Vec3(0,1,0);\n rotationOrder: RotationOrder | null = null;\n upVector: Vec3 | null = null;\n readonly _loc: Vec3 = new Vec3(0,0,0);\n readonly _quat: Quat = new Quat(0,0,0,1);\n readonly _scale: Vec3 = new Vec3(1,1,1);\n object: THREE.Object3D;\n controlMode: ControlMode = \"manual\";\n scene: Scene | null = null;\n physics: PhysicsEntity | null = null;\n private balloon: BalloonInfo | null = null;\n private interpolation: Interpolation | null = null;\n parent: ObjectA3 | null = null;\n children: ObjectA3[] = [];\n clickListener?: (o: ObjectA3)=>void;\n\n constructor(data?: any) {\n this.object = this.initObject(data);\n this.object.traverse((o)=>{\n o.userData['a3js'] = { objectA3: this };\n });\n }\n\n // 非同期でないと無理な場合などはとりあえず\n // 空のTHREE.Object3Dだけ返しておいて後で、\n // そのObject3DにaddすればOK。\n abstract initObject(data?: any): THREE.Object3D;\n\n setControlMode(mode: ControlMode) {\n this.controlMode = mode;\n if (mode === \"interpolated\" && !this.interpolation)\n this.interpolation = new Interpolation(this);\n if (mode === \"physics\" && !this.physics)\n this.initPhysics(this.getPhysicsOption()); // GAHAこのタイミングでやるべきか?\n }\n\n update(dt: number) {\n switch(this.controlMode) {\n case \"manual\":\n // \"manual\"モードの時は何もしない\n break;\n case \"interpolated\":\n if (this.interpolation) // 必ずtrueのはず\n this.interpolation.interpolate(this,dt);\n break;\n case \"physics\":\n if (this.physics) // 必ずtrueのはず\n this.physics.synchronize(this);\n break;\n case \"user\":\n console.log('\"user\"モードを使う場合は自分でupdateメソッドをオーバーライドして実装して下さい。');\n break;\n }\n this.children.forEach((child)=>{\n child.update(dt);\n });\n }\n\n /**\n * このObjectA3用のA3PhysicsEntity(物理計算に必要なもろもろ)\n * を生成するために必要な情報を、このメソッドで返す。物理演算\n * で特別なことをするような時には、このメソッドをオーバーライド\n * しする必要があるかもしれない。ここで生成されたオプションの\n * 情報はthis.initPhysics()に受け渡されてA3PhysicsEntityが生成\n * される。\n */\n getPhysicsOption(): PhysicsEntityOption {\n return {\n rigidBody: \"dynamic\",\n collider: \"solid\",\n meshCollider: \"convex_hull\",\n mass: 1.0,\n friction: 0.5,\n restitution: 0.5,\n membership: 0b0000000000000001,\n filter: 0b0000000000000001,\n collisionDetection: false\n };\n }\n\n /**\n * 物理演算に必要なA3PhysicsEntity(物理実態)を生成して\n * this.physicsに設定します。this.controlModeも\"physics\"に設定\n * します。A3PhysicsEntityのデフォルト実装として\n * RapierDefaultPhysicsEntityを使用しますが、自分で作った\n * 物理実態(A3PhysicsEntity)を使いたい場合は、ObjectA3を継承した\n * クラスで、このinitPhysics()メソッドを適切にオーバーライドして\n * ください。このinitPhysics()は通常A3Scene(つまりworld)に追加\n * される瞬間に1度だけ実行されます。その場合A3PhysicsEntityの\n * 生成に必要なA3PhysicsEntityOptionはthis.getPhysicsOption();\n * から取得されます。このオプションを変更してカスタマイズしたい\n * 場合は、ObjectA3をA3Sceneにaddする前に\n * this.initPhysics(カスタマイズしたオプション);として初期化して\n * 下さい。もしくは継承したクラスでgetPhysicsOption()メソッド\n * をオーバーライドしましょう。\n */ \n\n initPhysics(opt: Partial<PhysicsEntityOption>): void {\n const option = {\n ...this.getPhysicsOption(),\n ...opt\n };\n this.physics = new RapierDefaultPhysicsEntity(this,option);\n this.controlMode = 'physics';\n }\n\n add(obj: ObjectA3) {\n if (obj.scene) {console.warn('ObjectA3.add(obj) is ignored.');return;}\n if (obj.parent) {console.warn('ObjectA3.add(obj) is ignored.');return;}\n // if (this.children.includes(obj)) return; // ちゃんと管理されてれば必要ない\n this.children.push(obj);\n obj.parent = this;\n this.object.add(obj.object);\n }\n\n remove(obj: ObjectA3) {\n if (obj.parent !== this) {console.warn('ObjectA3.remove(obj) is ignored.');return;}\n // if (!this.children.includes(obj)) return; // ちゃんと管理されてれば必要ない\n const idx = this.children.indexOf(obj);\n this.children.splice(idx,1);\n obj.parent = null;\n this.object.remove(obj.object);\n }\n\n setBalloon(message: string) {\n if (!this.balloon)\n this.balloon = new BalloonInfo(message);\n else\n this.balloon.message = message;\n }\n\n /**\n * リスナーは1個しか登録されません。2つ\n * 登録しようとすると、最初のリスナーは\n * 捨てられます。\n */\n setClickListener(func: (o: ObjectA3)=>void) {\n this.clickListener = func;\n }\n\n /**\n * 物理エンジンにより衝突が検知されたら呼び出される。\n * @param obj 衝突相手\n * @param started 衝突開始の時true、衝突終了の時false\n * @param myPartNo ぶつかったパーツのColliderの番号\n * @param yourPartNo 相手のぶつかったパーツのClliderの番号\n */\n handleCollision(obj: ObjectA3, started: boolean, myPartNo: number, yourPartNo: number) {\n obj; started; myPartNo; yourPartNo;\n }\n\n async clicked() {\n if (this.clickListener)\n await this.clickListener(this);\n }\n\n get location(): Vec3 {\n return this._loc;\n }\n setLocation(x: number, y: number, z: number): void;\n setLocation(v: MutableVec3): void;\n setLocation(xOrV: number | MutableVec3, y?: number, z?: number): void {\n const newLoc = new Vec3();\n if (typeof xOrV === \"number\") {\n newLoc.set(xOrV, y!, z!);\n } else {\n newLoc.set(xOrV);\n }\n switch (this.controlMode) {\n case \"interpolated\":\n if (this.interpolation) // 絶対trueのはず\n this.interpolation.setLocation(this,newLoc);\n break;\n case \"physics\":\n // \"physicsモードの時はsetLocationできないということにする。\n break;\n default:\n // \"manual\",\"user\"の時\n this.location.set(newLoc);\n this.object.position.set(newLoc.x,newLoc.y,newLoc.z);\n break;\n }\n }\n\n setLocationNow(x: number, y: number, z: number): void;\n setLocationNow(v: MutableVec3): void;\n setLocationNow(xOrV: number | MutableVec3, y?: number, z?: number): void {\n const newLoc = new Vec3();\n if (typeof xOrV === \"number\") {\n newLoc.set(xOrV, y!, z!);\n } else {\n newLoc.set(xOrV);\n }\n switch (this.controlMode) {\n case \"interpolated\":\n if (this.interpolation) // 絶対trueのはず\n this.interpolation.setLocationNow(this,newLoc);\n break;\n case \"physics\":\n if (this.physics) // 絶対trueのはず\n this.physics.setLocationNow(newLoc);\n break;\n default:\n // \"manual\",\"user\"の時は下の処理だけで十分\n break;\n }\n this.location.set(newLoc);\n this.object.position.set(newLoc.x,newLoc.y,newLoc.z);\n }\n\n\n\n\n get quat(): Quat {\n return this._quat;\n }\n setQuat(x: number, y: number, z: number, w: number): void;\n setQuat(q: MutableQuat): void;\n setQuat(xOrQ: number | MutableQuat, y?: number, z?: number, w?: number): void {\n const newQuat = new Quat();\n if (typeof xOrQ === \"number\") {\n newQuat.set(xOrQ, y!, z!, w!);\n } else {\n newQuat.set(xOrQ);\n }\n switch (this.controlMode) {\n case \"interpolated\":\n if (this.interpolation) // 絶対trueのはず\n this.interpolation.setQuat(this,newQuat);\n break;\n case \"physics\":\n // \"physicsモードの時はsetQuatできないということにする。\n break;\n default:\n // \"manual\",\"user\"の時\n this.quat.set(newQuat);\n this.object.quaternion.set(newQuat.x,newQuat.y,newQuat.z,newQuat.w);\n break;\n }\n }\n\n setQuatNow(x: number, y: number, z: number, w: number): void;\n setQuatNow(q: MutableQuat): void;\n setQuatNow(xOrQ: number | MutableQuat, y?: number, z?: number, w?: number): void {\n const newQuat = new Quat();\n if (typeof xOrQ === \"number\") {\n newQuat.set(xOrQ, y!, z!, w!);\n } else {\n newQuat.set(xOrQ);\n }\n switch (this.controlMode) {\n case \"interpolated\":\n if (this.interpolation) // 絶対trueのはず\n this.interpolation.setQuatNow(this,newQuat);\n break;\n case \"physics\":\n if (this.physics) // 絶対trueのはず\n this.physics.setQuatNow(newQuat);\n break;\n default:\n // \"manual\",\"user\"の時は下の処理だけで十分\n break;\n }\n this.quat.set(newQuat);\n this.object.quaternion.set(newQuat.x,newQuat.y,newQuat.z,newQuat.w);\n }\n\n get scale(): Vec3 {\n return this._scale;\n }\n setScale(x: number, y: number, z: number): void;\n setScale(v: MutableVec3): void;\n setScale(xOrV: number | MutableVec3, y?: number, z?: number): void {\n const newScale = new Vec3();\n if (typeof xOrV === \"number\") {\n newScale.set(xOrV, y!, z!);\n } else {\n newScale.set(xOrV);\n }\n switch (this.controlMode) {\n case \"interpolated\":\n if (this.interpolation) // 絶対trueのはず\n this.interpolation.setScale(this,newScale);\n break;\n case \"physics\":\n // \"physicsモードの時はsetScaleできないということにする。\n break;\n default:\n // \"manual\",\"user\"の時\n this.scale.set(newScale);\n this.object.scale.set(newScale.x,newScale.y,newScale.z);\n break;\n }\n }\n\n setScaleNow(x: number, y: number, z: number): void;\n setScaleNow(v: MutableVec3): void;\n setScaleNow(xOrV: number | MutableVec3, y?: number, z?: number): void {\n const newScale = new Vec3();\n if (typeof xOrV === \"number\") {\n newScale.set(xOrV, y!, z!);\n } else {\n newScale.set(xOrV);\n }\n switch (this.controlMode) {\n case \"interpolated\":\n if (this.interpolation) // 絶対trueのはず\n this.interpolation.setScaleNow(this,newScale);\n break;\n case \"physics\":\n if (this.physics) // 絶対trueのはず\n this.physics.setScaleNow(newScale); // 普通の物理エンジンは対応させる?\n break;\n default:\n // \"manual\",\"user\"の時は下の処理だけで十分\n break;\n }\n this.scale.set(newScale);\n this.object.scale.set(newScale.x,newScale.y,newScale.z);\n }\n\n /**\n * オイラー角で回転を設定。単位はラジアンではなくデグリー\n * (360度で1回転)とする。回転の合成の順番はthis.rotationOrderの\n * 設定によるが、それがnullの時はObject3D.defaultRotationOrderの\n * 順番になる。\n */\n setRotation(x: number, y: number, z: number): void;\n setRotation(v: MutableVec3): void;\n setRotation(xOrV: number | MutableVec3, y?: number, z?: number): void {\n const rot = new Vec3();\n if (typeof xOrV === \"number\")\n rot.set(xOrV, y!, z!);\n else\n rot.set(xOrV);\n rot.scale(Math.PI/360); // デグリー to ラジアン & t to t/2\n const order = this.rotationOrder ? this.rotationOrder : ObjectA3.defaultRotationOrder;\n const quat = vec3EulerToQuat(rot,order);\n this.setQuat(quat);\n }\n\n setRotationNow(x: number, y: number, z: number): void;\n setRotationNow(v: MutableVec3): void;\n setRotationNow(xOrV: number | MutableVec3, y?: number, z?: number): void {\n const rot = new Vec3();\n if (typeof xOrV === \"number\")\n rot.set(xOrV, y!, z!);\n else\n rot.set(xOrV);\n const order = this.rotationOrder ? this.rotationOrder : ObjectA3.defaultRotationOrder;\n const quat = new Quat(0,0,0,1);\n for (let i=0;i<3;i++) {\n const c = order.charAt(i);\n switch(c) {\n case 'X':\n quat.mul(new Quat(Math.sin(rot.x),0,0,Math.cos(rot.x)))\n break;\n case 'Y':\n quat.mul(new Quat(0,Math.sin(rot.y),0,Math.cos(rot.y)))\n break;\n case 'Z':\n quat.mul(new Quat(0,0,Math.sin(rot.z),Math.cos(rot.z)))\n break;\n }\n }\n this.setQuatNow(quat);\n }\n\n lookAt(x: number, y: number, z: number): void;\n lookAt(v: MutableVec3): void;\n lookAt(o: ObjectA3): void;\n lookAt(xVO: number | MutableVec3 | ObjectA3, y?: number, z?: number) {\n const target = new Vec3();\n if (typeof xVO === \"number\") {\n target.set(xVO,y!,z!);\n } else if (xVO instanceof ObjectA3) {\n target.set(xVO.location);\n } else {\n target.set(xVO);\n }\n const up = this.upVector ? this.upVector : ObjectA3.defaultUpVector;\n const newQuat = getQuatOfLookAt(this.location,target,up);\n this.setQuat(newQuat);\n }\n\n lookAtNow(x: number, y: number, z: number): void;\n lookAtNow(v: MutableVec3): void;\n lookAtNow(o: ObjectA3): void;\n lookAtNow(xVO: number | MutableVec3 | ObjectA3, y?: number, z?: number) {\n const target = new Vec3();\n if (typeof xVO === \"number\") {\n target.set(xVO,y!,z!);\n } else if (xVO instanceof ObjectA3) {\n target.set(xVO.location);\n } else {\n target.set(xVO);\n }\n const up = this.upVector ? this.upVector : ObjectA3.defaultUpVector;\n const newQuat = getQuatOfLookAt(this.location,target,up);\n this.setQuatNow(newQuat);\n }\n\n getUnitVecX(): Vec3 {\n const vecX = new Vec3(1,0,0);\n return vecX.apply(this.quat);\n }\n getUnitVecY(): Vec3 {\n const vecY = new Vec3(0,1,0);\n return vecY.apply(this.quat);\n }\n getUnitVecZ(): Vec3 {\n const vecZ = new Vec3(0,0,1);\n return vecZ.apply(this.quat);\n }\n\n\n// /**\n// * このObjectA3が引数で与えられたTHREE.Object3Dを含んでいるか\n// * どうかを判定するメソッド。\n// */\n// contains(obj: THREE.Object3D): boolean {\n// let contain = false;\n// this.object.traverse((o) => {\n// if (o==obj) contain = true;\n// });\n// return contain;\n// }\n}\n\n/*\n * 吹き出しの情報。必要な時だけObjectA3に\n * 吹き出しの情報を入れるために使用。\n */\nclass BalloonInfo {\n message: string;\n dir: Dir;\n offsetTop: {x: number, y: number};\n offsetRight: {x: number, y: number};\n offsetLeft: {x: number, y: number};\n offsetBottom: {x: number, y: number};\n\n constructor(message: string) {\n this.message = message;\n this.dir = \"RIGHT\";\n this.offsetTop = {x:0,y:2};\n this.offsetRight = {x:1,y:1};\n this.offsetLeft = {x:-1,y:1};\n this.offsetBottom = {x:0,y:0};\n }\n}\n\n/*\n * 補間のための情報と処理を実装したクラス。\n * 必要な時だけObjectA3に追加される。\n */\nclass Interpolation {\n firstLoc: Vec3;\n firstRot: Quat;\n firstScale: Vec3;\n nowLoc: Vec3;\n nowRot: Quat;\n nowScale: Vec3;\n lastLoc: Vec3;\n lastRot: Quat;\n lastScale: Vec3;\n nowTime: number;\n duration: number;\n\n constructor(obj: ObjectA3) {\n this.firstLoc = new Vec3(obj.location);\n this.firstRot = new Quat(obj.quat);\n this.firstScale = new Vec3(obj.scale);\n this.nowLoc = new Vec3(obj.location);\n this.nowRot = new Quat(obj.quat);\n this.nowScale = new Vec3(obj.scale);\n this.lastLoc = new Vec3(obj.location);\n this.lastRot = new Quat(obj.quat);\n this.lastScale = new Vec3(obj.scale);\n this.nowTime = 0;\n this.duration = 1;\n }\n\n setLocation(obj: ObjectA3, newLoc: MutableVec3) {\n this.firstLoc.set(obj.location);\n this.firstRot.set(obj.quat);\n this.firstScale.set(obj.scale);\n this.lastLoc.set(newLoc);\n //this.lastRot.set(obj.rot);\n //this.lastScale.set(obj.scale);\n this.nowTime = 0;\n }\n\n setLocationNow(obj: ObjectA3, newLoc: MutableVec3) {\n this.firstLoc.set(obj.location);\n this.firstRot.set(obj.quat);\n this.firstScale.set(obj.scale);\n this.lastLoc.set(newLoc);\n //this.lastRot.set(obj.rot);\n //this.lastScale.set(obj.scale);\n this.nowTime = 1;\n }\n\n setQuat(obj: ObjectA3, newQuat: MutableQuat) {\n this.firstLoc.set(obj.location);\n this.firstRot.set(obj.quat);\n this.firstScale.set(obj.scale);\n //this.lastLoc.set(obj.loc);\n this.lastRot.set(newQuat);\n //this.lastScale.set(obj.scale);\n this.nowTime = 0;\n }\n\n setQuatNow(obj: ObjectA3, newQuat: MutableQuat) {\n this.firstLoc.set(obj.location);\n this.firstRot.set(obj.quat);\n this.firstScale.set(obj.scale);\n //this.lastLoc.set(obj.loc);\n this.lastRot.set(newQuat);\n //this.lastScale.set(obj.scale);\n this.nowTime = 1;\n }\n\n setScale(obj: ObjectA3, newScale: MutableVec3) {\n this.firstLoc.set(obj.location);\n this.firstRot.set(obj.quat);\n this.firstScale.set(obj.scale);\n //this.lastLoc.set(obj.loc);\n //this.lastRot.set(obj.rot);\n this.lastScale.set(newScale);\n this.nowTime = 0;\n }\n\n setScaleNow(obj: ObjectA3, newScale: MutableVec3) {\n this.firstLoc.set(obj.location);\n this.firstRot.set(obj.quat);\n this.firstScale.set(obj.scale);\n //this.lastLoc.set(obj.loc);\n //this.lastRot.set(obj.rot);\n this.lastScale.set(newScale);\n this.nowTime = 1;\n }\n\n // cssのanimation-timing-functionみたいに\n // 切り替えられるようにしたいね。\n smoothstep(t: number): number {\n return t * t * (3 - 2 * t);\n }\n\n interpolate(obj: ObjectA3, dt: number) {\n this.nowTime += dt;\n if (this.nowTime > this.duration) this.nowTime = this.duration;\n const t0 = this.nowTime/this.duration;\n const t = this.smoothstep(t0);\n\n this.nowLoc.lerp(this.firstLoc,this.lastLoc,t);\n // 以下、たぶん球面線形補間。重いけど必要な時ある。\n this.nowRot.slerp(this.firstRot,this.lastRot,t);\n this.nowScale.lerp(this.firstScale,this.lastScale,t);\n\n obj.location.set(this.nowLoc);\n obj.object.position.set(this.nowLoc.x,this.nowLoc.y,this.nowLoc.z);\n obj.quat.set(this.nowRot);\n obj.object.quaternion.set(this.nowRot.x,this.nowRot.y,this.nowRot.z,this.nowRot.w);\n obj.scale.set(this.nowScale);\n obj.object.scale.set(this.nowScale.x,this.nowScale.y,this.nowScale.z);\n }\n}\n\n","import * as THREE from 'three';\nimport { ObjectA3 } from './ObjectA3';\nimport type { MutableVec3 } from './Vec3';\n\n/**\n * a3jsのカメラのベーストなるアブストラクトクラス。\n * a3jsのカメラはデフォルトでヘッドライトがONの状態\n * で持ってないといけないので、それもカメラに含まれる\n * ものとする。\n */\nexport abstract class Camera extends ObjectA3 {\n\n /**\n * 耳の役割を持つTHREE.AudioListenerをカメラに\n * 取り付ける。普通にTHREE.Cameraだったら、Object3D\n * のサブクラスなんで、それにaddすればOK。\n */\n abstract setAudioListener(listener: THREE.AudioListener): void;\n\n /**\n * ワールド座標 → 正規化デバイス座標(NDC)\n */\n abstract calcNDC(loc: MutableVec3): {x: number, y: number}; \n\n abstract setHeadLightEnable(b: boolean): void;\n}\n","import type { View } from './View';\nimport { Vec3 } from './Vec3';\nimport type { MutableVec3 } from './Vec3';\nimport { Quat, getQuatOfLookAt } from './Quat';\n\n/**\n * キーやマウスなどの様々なイベントを受け取り\n * ナビゲーションなどを行うコントローラのインターフェース。\n * 必ずコンストラクタでViewを受け取りプロパティに保存する。\n * コンストラクタで自分自身を受け取ったViewに登録する処理が\n * 必要。\n */\nexport interface Controller {\n view: View;\n update(dt: number): void;\n activate(): void;\n deactivate(): void;\n keyDown(event: KeyboardEvent): void;\n keyUp(event: KeyboardEvent): void;\n keyPress(event: KeyboardEvent): void;\n mouseDown(event: MouseEvent): void;\n mouseUp(event: MouseEvent): void;\n mouseMove(event: MouseEvent): void;\n mouseClick(event: MouseEvent): void;\n mouseEnter(event: MouseEvent): void;\n mouseLeave(event: MouseEvent): void;\n mouseWheel(event: WheelEvent): void;\n touchStart(event: TouchEvent): void;\n touchEnd(event: TouchEvent): void;\n touchMove(event: TouchEvent): void;\n touchCancel(event: TouchEvent): void;\n}\n\n/**\n * まったく何もしないController。不要なメソッドを\n * 実装しなくて良いように、これを継承して実用的な\n * Controllerを作ると良い。\n */\nexport class ControllerBase implements Controller {\n view: View;\n constructor(view: View) {\n this.view = view;\n view.setController(this);\n }\n update(dt: number): void {dt;}\n activate(): void {}\n deactivate(): void {}\n keyDown(event: KeyboardEvent): void {event;}\n keyUp(event: KeyboardEvent): void {event;}\n keyPress(event: KeyboardEvent): void {event;}\n mouseDown(event: MouseEvent): void {event;}\n mouseUp(event: MouseEvent): void {event;}\n mouseMove(event: MouseEvent): void {event;}\n mouseClick(event: MouseEvent): void {event;}\n mouseEnter(event: MouseEvent): void {event;}\n mouseLeave(event: MouseEvent): void {event;}\n mouseWheel(event: WheelEvent): void {event;}\n touchStart(event: TouchEvent): void {event;}\n touchEnd(event: TouchEvent): void {event;}\n touchMove(event: TouchEvent): void {event;}\n touchCancel(event: TouchEvent): void {event;}\n}\n\n/**\n * とりあえず適当\n */\nexport class OrbitController extends ControllerBase {\n preMouse: {x:number,y:number};\n leftClick: boolean = false;\n target: Vec3;\n cameraLoc: Vec3 = new Vec3(0,0,3);\n cameraQuat: Quat = new Quat(0,0,0,1);\n\n constructor(view: View,target: MutableVec3);\n constructor(view: View,tx: number, ty: number, tz: number);\n constructor(view: View,xOrV: number | MutableVec3, y?: number, z?: number) {\n super(view);\n this.preMouse = {x:0,y:0};\n if (typeof xOrV === \"number\") {\n this.target = new Vec3(xOrV,y!,z!);\n } else {\n this.target = new Vec3(xOrV);\n }\n }\n\n update(dt: number): void {\n dt;\n this.view.camera.setLocation(this.cameraLoc);\n this.view.camera.setQuat(this.cameraQuat);\n }\n\n mouseDown(e: MouseEvent): void {\n if (e.button === 0) {\n this.leftClick = true;\n this.preMouse.x = e.clientX;\n this.preMouse.y = e.clientY;\n }\n }\n mouseMove(e: MouseEvent): void {\n if (this.leftClick === false)\n return;\n const epsilon = 0.01;\n const dx = epsilon*(e.clientX - this.preMouse.x);\n const dy = epsilon*(e.clientY - this.preMouse.y);\n const sinX = Math.sin(-dx); const cosX = Math.cos(-dx);\n const sinY = Math.sin(-dy); const cosY = Math.cos(-dy);\n const vecX = new Vec3(1,0,0).apply(this.cameraQuat);\n const vecY = new Vec3(0,1,0).apply(this.cameraQuat);\n const quatX = new Quat(vecX.x*sinY,vecX.y*sinY,vecX.z*sinY,cosY);\n const quatY = new Quat(vecY.x*sinX,vecY.y*sinX,vecY.z*sinX,cosX);\n const newCameraLoc = new Vec3(this.cameraLoc);\n newCameraLoc.sub(this.target);\n newCameraLoc.apply(quatX);\n newCameraLoc.apply(quatY);\n newCameraLoc.add(this.target);\n this.cameraLoc.set(newCameraLoc);\n const newCameraQuat = getQuatOfLookAt(this.cameraLoc,this.target,new Vec3(0,1,0));\n this.cameraQuat.set(newCameraQuat);\n this.preMouse.x = e.clientX;\n this.preMouse.y = e.clientY;\n }\n mouseUp(e: MouseEvent): void {\n if (e.button === 0) {\n this.leftClick = false;\n }\n }\n mouseWheel(e: WheelEvent): void {\n const f = new Vec3(this.target).sub(this.cameraLoc)\n\n if (e.deltaY > 0)\n f.scale(0.05);\n else if (e.deltaY < 0)\n f.scale(-0.05);\n\n this.cameraLoc.add(f);\n }\n/*\n touchStart(e: TouchEvent): void {\nconsole.log(`GAHA: touchStart()`,event);\n const loc = new Vec3(this.view.camera.location);\n loc.add(new Vec3(0.1,0,0));\n this.view.camera.setLocation(loc);\n }\n*/\n}\n\n\n","import { unzip, strFromU8 } from 'fflate'; // 'three/addons/libs/fflate.module.js';\nimport type { Unzipped } from 'fflate'; // 'three/addons/libs/fflate.module.js';\n\nexport function times2(x: number): number {\n return 2*x;\n}\n\nexport function asyncSleep(time: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(()=>{resolve();},time);\n });\n}\n\nexport async function unzipAsync(url: string): Promise<Unzipped> {\n const res = await fetch(url);\n const arrayBuffer = await res.arrayBuffer();\n const ret = await new Promise<Unzipped>((resolve, reject) => {\n unzip(new Uint8Array(arrayBuffer),(err,data) => {\n if (!err)\n resolve(data);\n else\n reject(err)\n });\n });\n return ret;\n}\n\nexport function readStringFromUnzipped(unzipped: Unzipped, path: string): string {\n path = path.replace(/^\\.\\//,'').replace(/^\\//,'');\n if (unzipped[path]) {\n return strFromU8(unzipped[path]);\n } else {\n throw new Error(`readStringFromUnzipped(): no file at ${path}`);\n }\n}\n\nexport function readBlobFromUnzipped(unzipped: Unzipped, path: string): Blob {\n path = path.replace(/^\\.\\//,'').replace(/^\\//,'');\n if (unzipped[path]) {\n const mime_type = mimeTypeFromPath(path);\n return new Blob([new Uint8Array(unzipped[path])],{type: mime_type});\n } else {\n throw new Error(`readBlobFromUnzipped(): no file at ${path}`);\n }\n}\n\n\nconst mime_type = {\n 'image/png': /\\.png$/i,\n 'image/jpeg': /\\.(jpg|jpeg)$/i,\n 'image/gif': /\\.gif$/i,\n 'model/vrml': /\\.wrl$/i,\n 'application/xml': /\\.xml$/i,\n 'application/octet-stream': /\\.bvh/i, // まあ。\n 'audio/x-wav': /\\.wav/i,\n 'audio/mpeg': /\\.mp3/i,\n 'audio/ogg': /\\.ogg/i,\n 'text/plain': /\\.(txt|text)$/i,\n 'model/gltf+json': /\\.gltf$/i,\n 'model/gltf-binary': /\\.glb$/i,\n};\n\nexport function mimeTypeFromPath(path: string): string {\n for (const [mt, re] of Object.entries(mime_type))\n if (re.test(path))\n return mt;\n return 'application/octet-stream';\n}\n\n// ChatGPTに教えてもらったマージできる設定の型とマージ関数。\n// 抜けのない完璧な設定の型(例えばXOption)を定義した後、\n// 完璧なデフォルトの設定を用意(例えばdefaultXOption)。\n// ユーザにはその型のDeepPartial<XOption>を要求することで\n// 全ての設定を指定しなくて良くなって、\n// deepMarge<XOption>(defaultXOption,userOption);で完璧な\n// 設定が用意できるという仕組み。\n\nexport type DeepPartial<T> = {\n [K in keyof T]?: T[K] extends object\n ? DeepPartial<T[K]>\n : T[K];\n};\n\nexport function deepMerge<T>(base: T, override?: DeepPartial<T>): T {\n if (!override) return base;\n\n const result = { ...base } as any;\n for (const key in override) {\n if (\n typeof base[key] === \"object\" &&\n typeof override[key] === \"object\"\n ) {\n result[key] = deepMerge(base[key], override[key]!);\n } else {\n result[key] = override[key];\n }\n }\n return result;\n}\n\n","import * as THREE from 'three';\nimport { ObjectA3 } from '../core/ObjectA3';\nimport type { AsyncInitRequired } from '../core/AsyncInitRequired';\nimport type { DeepPartial } from '../utils/math';\nimport { deepMerge } from '../utils/math';\n\nexport type SoundType = \"audio\" | \"positional\";\n\nexport interface SoundOptions {\n type: SoundType; // audio / positional\n autoplay: boolean;\n loop: boolean;\n volume: number;\n\n positional: PositionalOptions;\n}\n\nexport interface PositionalOptions {\n refDistance: number;\n maxDistance: number;\n rolloffFactor: number;\n\n directional: {\n coneInnerAngle: number;\n coneOuterAngle: number;\n coneOuterGain: number;\n };\n}\n\nconst defaultSoundOptions: SoundOptions = {\n type: \"audio\",\n autoplay: false,\n loop: false,\n volume: 1.0,\n\n positional: {\n refDistance: 1,\n maxDistance: 1000,\n rolloffFactor: 1,\n directional: {\n coneInnerAngle: 360,\n coneOuterAngle: 360,\n coneOuterGain: 0,\n },\n },\n};\n\nexport type SoundOptionInput = DeepPartial<SoundOptions>;\n\n/**\n * サウンドの初期化を行います。必ずユーザジェスチャを起点とする\n * スレッドから呼び出される必要があります。この初期化が完了しな\n * なければ音声が再生されない可能性が高いです。\n */\nexport async function initSound() {\n try {\n if (Sound.listener.context.state !== \"running\")\n await Sound.listener.context.resume();\n } catch(e) {\n console.warn(\"AudioContext resume failed. Did you call on user gesture?\");\n }\n}\n\nexport class Sound extends ObjectA3 implements AsyncInitRequired<Sound> {\n static listener: THREE.AudioListener = new THREE.AudioListener();\n static audioLoader: THREE.AudioLoader = new THREE.AudioLoader();\n\n readonly ready: Promise<Sound>;\n private config: SoundOptions;\n private sound?: THREE.PositionalAudio | THREE.Audio<GainNode | PannerNode>;\n constructor(soundFile: string, options: SoundOptionInput = {}) {\n super();\n this.config = deepMerge(defaultSoundOptions, options);\n this.ready = this.asyncInit(soundFile);\n }\n\n initObject() {\n return new THREE.Object3D();\n }\n\n async asyncInit(soundFile: string): Promise<Sound> {\n if (this.config.type === \"positional\") {\n const sound = new THREE.PositionalAudio(Sound.listener);\n sound.setRefDistance(this.config.positional.refDistance);\n sound.setMaxDistance(this.config.positional.maxDistance);\n sound.setRolloffFactor(this.config.positional.rolloffFactor);\n const d = this.config.positional.directional;\n sound.setDirectionalCone(\n d.coneInnerAngle,\n d.coneOuterAngle,\n d.coneOuterGain\n );\n sound.setVolume(this.config.volume);\n sound.setLoop(this.config.loop);\n this.sound = sound;\n } else {\n const sound = new THREE.Audio(Sound.listener);\n sound.setVolume(this.config.volume);\n sound.setLoop(this.config.loop);\n this.sound = sound;\n }\n this.object.add(this.sound);\n return new Promise((resolve)=>{\n Sound.audioLoader.load(soundFile, (buffer) => {\n if (this.sound)\n this.sound.setBuffer(buffer);\n resolve(this);\n });\n });\n }\n\n play() {\n this.sound?.play();\n }\n}\n","//import * as THREE from 'three';\n//import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\nimport { Scene } from './Scene';\nimport { Camera } from './Camera';\nimport type { View } from './View';\nimport { OrbitController } from './Controller';\nimport type { Controller } from './Controller';\nimport type { MutableVec3 } from './Vec3';\nimport { Sound } from '../three/Sound';\n\n/**\n * Viewに必須な機能だけを実装したクラス。\n * これを拡張して新しい表示クラスを作っても良い。\n * CanvasなどはHTMLElementのサブクラスとして実装\n * しないといけないので、このViewBaseのインスタンスを\n * プロパティに保存してラッパーとして実装している。\n */\nexport class ViewBase implements View {\n scene: Scene;\n camera: Camera;\n controller: Controller;\n \n constructor(camera: Camera) {\n this.scene = new Scene();\n this.camera = camera;\n this.camera.setAudioListener(Sound.listener);\n this.scene.scene.add(this.camera.object);\n this.camera.setLocation(0, 0, 3);\n this.controller = new OrbitController(this,0,0,0);\n }\n\n replaceScene(newScene: Scene): Scene {\n this.scene.scene.remove(this.camera.object);\n newScene.scene.add(this.camera.object);\n const oldScene = this.scene;\n this.scene = newScene;\n return oldScene;\n }\n\n updateScene(dt: number) {\n this.scene.update(dt);\n this.controller?.update(dt);\n this.camera.update(dt);\n }\n\n setController(controller: Controller) {\n this.controller?.deactivate();\n this.controller = controller;\n this.controller.activate();\n }\n\n /**\n * ViewBaseはworldToScreen()を実装することは不可能なので、\n * サブクラスで必ずオーバーライドして自分で実装して下さい。\n * ViewBaseをラップして使っている場合も同様です。\n */\n worldToScreen(loc: MutableVec3): { x: number, y: number } {\n throw new Error(`ViewBaseはworldToScreen()は実装していません`);\n loc;\n return {x:0, y:0};\n }\n /**\n * ViewBaseはscreenToWorld()を実装することは不可能なので、\n * サブクラスで必ずオーバーライドして自分で実装して下さい。\n * ViewBaseをラップして使っている場合も同様です。\n */\n screenToWorld(x: number, y: number, depth: number): MutableVec3 {\n throw new Error(`ViewBaseはscreenToWorld()は実装していません`);\n x; y; depth;\n return {x:0,y:0,z:0};\n }\n /**\n * ViewBaseはcameraToScreen()を実装することは不可能なので、\n * サブクラスで必ずオーバーライドして自分で実装して下さい。\n * ViewBaseをラップして使っている場合も同様です。\n */\n cameraToScreen(loc: MutableVec3): { x: number, y: number } {\n throw new Error(`ViewBaseはcameraToScreen()は実装していません`);\n loc;\n return {x:0,y:0};\n }\n /**\n * ViewBaseはscreenToCamera()を実装することは不可能なので、\n * サブクラスで必ずオーバーライドして自分で実装して下さい。\n * ViewBaseをラップして使っている場合も同様です。\n */\n screenToCamera(x: number, y: number, depth: number): MutableVec3 {\n throw new Error(`ViewBaseはscreenToCamera()は実装していません`);\n x; y; depth;\n return {x:0,y:0,z:0};\n }\n}\n","import * as THREE from 'three';\nimport { Camera } from './Camera';\nimport { isPerspectiveCamera } from '../utils/TypeGuard';\nimport type { MutableVec3 } from './Vec3';\n\n/**\n * Three.jsのPerspectiveCameraとかの一般的なカメラを\n * a3jsのカメラにするためのラッパー。ヘッドライトは\n * SpotLightで実装。\n */\nexport class GeneralCamera extends Camera {\n camera: THREE.Camera;\n headLight: THREE.SpotLight;\n\n constructor(camera: THREE.Camera) {\n super();\n this.camera = camera;\n this.headLight = new THREE.SpotLight(0xffffff,1,0,Math.PI/3,0,0);\n this.headLight.rotation.x = 3.14/2;\n this.object.add(this.camera);\n this.object.add(this.headLight);\n }\n\n initObject() {\n return new THREE.Object3D();\n }\n\n setAudioListener(listener: THREE.AudioListener) {\n this.camera.add(listener);\n }\n\n getHeadLight() { return this.headLight; }\n\n setAspect(aspect: number) {\n if (isPerspectiveCamera(this.camera)) {\n this.camera.aspect = aspect;\n this.camera.updateProjectionMatrix();\n }\n }\n\n setHeadLightEnable(b: boolean) {\n if (b)\n this.headLight.intensity = 1;\n else\n this.headLight.intensity = 0;\n }\n\n calcNDC(loc: MutableVec3) {\n const v = new THREE.Vector3(loc.x,loc.y,loc.z);\n v.project(this.camera);\n return { x: v.x, y: v.y };\n }\n}\n\n","import {\n\tMatrix4,\n\tObject3D,\n\tVector2,\n\tVector3\n} from 'three';\n\n/**\n * The only type of 3D object that is supported by {@link CSS2DRenderer}.\n *\n * @augments Object3D\n * @three_import import { CSS2DObject } from 'three/addons/renderers/CSS2DRenderer.js';\n */\nclass CSS2DObject extends Object3D {\n\n\t/**\n\t * Constructs a new CSS2D object.\n\t *\n\t * @param {HTMLElement} [element] - The DOM element.\n\t */\n\tconstructor( element = document.createElement( 'div' ) ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCSS2DObject = true;\n\n\t\t/**\n\t\t * The DOM element which defines the appearance of this 3D object.\n\t\t *\n\t\t * @type {HTMLElement}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\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\t/**\n\t\t * The 3D objects center point.\n\t\t * `( 0, 0 )` is the lower left, `( 1, 1 )` is the top right.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (0.5,0.5)\n\t\t */\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t\tthis.addEventListener( 'removed', function () {\n\n\t\t\tthis.traverse( function ( object ) {\n\n\t\t\t\tif (\n\t\t\t\t\tobject.element &&\n\t\t\t\t\tobject.element instanceof object.element.ownerDocument.defaultView.Element &&\n\t\t\t\t\tobject.element.parentNode !== null\n\t\t\t\t) {\n\n\t\t\t\t\tobject.element.remove();\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\n/**\n * This renderer is a simplified version of {@link CSS3DRenderer}. The only transformation that is\n * supported is translation.\n *\n * The renderer is very useful if you want to combine HTML based labels with 3D objects. Here too,\n * the respective DOM elements are wrapped into an instance of {@link CSS2DObject} and added to the\n * scene graph. All other types of renderable 3D objects (like meshes or point clouds) are ignored.\n *\n * `CSS2DRenderer` only supports 100% browser and display zoom.\n *\n * @three_import import { CSS2DRenderer } from 'three/addons/renderers/CSS2DRenderer.js';\n */\nclass CSS2DRenderer {\n\n\t/**\n\t * Constructs a new CSS2D renderer.\n\t *\n\t * @param {CSS2DRenderer~Parameters} [parameters] - The parameters.\n\t */\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\t/**\n\t\t * The DOM where the renderer appends its child-elements.\n\t\t *\n\t\t * @type {HTMLElement}\n\t\t */\n\t\tthis.domElement = domElement;\n\n\t\t/**\n\t\t * Controls whether the renderer assigns `z-index` values to CSS2DObject DOM elements.\n\t\t * If set to `true`, z-index values are assigned first based on the `renderOrder`\n\t\t * and secondly - the distance to the camera. If set to `false`, no z-index values are assigned.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.sortObjects = true;\n\n\t\t/**\n\t\t * Returns an object containing the width and height of the renderer.\n\t\t *\n\t\t * @return {{width:number,height:number}} The size of the renderer.\n\t\t */\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\t/**\n\t\t * Renders the given scene using the given camera.\n\t\t *\n\t\t * @param {Object3D} scene - A scene or any other type of 3D object.\n\t\t * @param {Camera} camera - The camera.\n\t\t */\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\tif ( this.sortObjects ) zOrder( scene );\n\n\t\t};\n\n\t\t/**\n\t\t * Resizes the renderer to the given width and height.\n\t\t *\n\t\t * @param {number} width - The width of the renderer.\n\t\t * @param {number} height - The height of the renderer.\n\t\t */\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\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\n/**\n * Constructor parameters of `CSS2DRenderer`.\n *\n * @typedef {Object} CSS2DRenderer~Parameters\n * @property {HTMLElement} [element] - A DOM element where the renderer appends its child-elements.\n * If not passed in here, a new div element will be created.\n **/\n\nexport { CSS2DObject, CSS2DRenderer };\n","import * as THREE from 'three';\nimport { ObjectA3 } from './ObjectA3';\nimport { Scene } from './Scene';\nimport { Camera } from './Camera';\nimport type { View } from './View';\nimport { ViewBase } from './ViewBase';\nimport { GeneralCamera } from './GeneralCamera';\nimport type { Controller } from './Controller';\nimport type { MutableVec3 } from './Vec3';\nimport { CSS2DRenderer } from 'three/addons/renderers/CSS2DRenderer.js';\n\nexport interface CanvasOption {\n camera?: THREE.Camera;\n antialias?: boolean;\n transparent?: boolean;\n}\n\n/**\n * HTMLのエレメント(a3-canvas)として使えるView。\n */\nexport class Canvas extends HTMLElement implements View {\n private ro?: ResizeObserver;\n base: ViewBase;\n renderer;\n css2DRenderer: CSS2DRenderer;\n scene: Scene;\n camera: Camera;\n controller: Controller;\n camera3js: THREE.Camera;\n clock: THREE.Clock;\n private _canvas: HTMLCanvasElement;\n private _css2DCanvas: HTMLElement;\n \n constructor(opt?: CanvasOption) {\n super();\n\n // ########## WebComponent関係のセットアップ ##########\n this.attachShadow({ mode: \"open\" });\n this.shadowRoot!.innerHTML = `\n <style>\n :host {\n width: 100%;\n height: 100%;\n display: block;\n padding: 0;\n margin: 0;\n position: relative;\n background: rgba(0,0,0,0);\n box-sizing:\n border-box;\n }\n\n :host canvas {\n width: 100%;\n height: 100%;\n display: block;\n margin: 0;\n padding: 0;\n }\n </style>\n <slot></slog>\n`;\n\n if (!opt) opt = {};\n if (!opt.camera) opt.camera = new THREE.PerspectiveCamera(75, 300/150, 0.1, 1000);\n this.camera3js = opt.camera;\n const camera = new GeneralCamera(opt.camera);\n this.base = new ViewBase(camera);\n this.scene = this.base.scene;\n this.camera = this.base.camera;\n this.controller = this.base.controller;\n this.clock = new THREE.Clock();\n const o = {\n antialias: (opt.antialias?opt.antialias:false),\n alpha: (opt.transparent?opt.transparent:false)\n };\n this.renderer = new THREE.WebGLRenderer(o);\n this.renderer.setSize(600,300);\n if ('opaque' in opt) this.renderer.setClearAlpha(0);\n this._canvas = this.renderer.domElement;\n this._canvas.width = 600;\n this._canvas.height = 300;\n this.appendChild(this._canvas);\n this.css2DRenderer = new CSS2DRenderer();\n this._css2DCanvas = this.css2DRenderer.domElement;\n this._css2DCanvas.style.position='absolute';\n this._css2DCanvas.style.top='0px';\n this.appendChild(this._css2DCanvas);\n this.animationFrameId = requestAnimationFrame(this.renderingLoop);\n\n this._css2DCanvas.addEventListener('click',this.myMouseClickedListener);\n\n window.addEventListener('keydown',(e)=>{this.controller?.keyDown(e);});\n window.addEventListener('keyup',(e)=>{this.controller?.keyUp(e);});\n window.addEventListener('keypress',(e)=>{this.controller?.keyPress(e);});\n this._css2DCanvas.addEventListener('mousedown',(e)=>{this.controller?.mouseDown(e);});\n this._css2DCanvas.addEventListener('mouseup',(e)=>{this.controller?.mouseUp(e);});\n this._css2DCanvas.addEventListener('mousemove',(e)=>{this.controller?.mouseMove(e);});\n this._css2DCanvas.addEventListener('click',(e:MouseEvent)=>{this.controller?.mouseClick(e);});\n this._css2DCanvas.addEventListener('mouseenter',(e)=>{this.controller?.mouseEnter(e);});\n this._css2DCanvas.addEventListener('mouseleave',(e)=>{this.controller?.mouseLeave(e);});\n this._css2DCanvas.addEventListener('wheel',(e)=>{this.controller?.mouseWheel(e);});\n this._css2DCanvas.addEventListener('touchstart',(e)=>{this.controller?.touchStart(e);});\n this._css2DCanvas.addEventListener('touchmove',(e)=>{this.controller?.touchMove(e);});\n this._css2DCanvas.addEventListener('touchend',(e)=>{this.controller?.touchEnd(e);});\n this._css2DCanvas.addEventListener('touchcancel',(e)=>{this.controller?.touchCancel(e);});\n }\n\n connectedCallback() {\n this.ro = new ResizeObserver(() => {\n const dpr = window.devicePixelRatio || 1;\n const w = Math.floor(this.clientWidth * dpr);\n const h = Math.floor(this.clientHeight * dpr);\n if (this._canvas.width !== w\n || this._canvas.height !== h) {\n this._canvas.width = w;\n this._canvas.height = h;\n if (isPerspectiveCamera(this.camera3js)) {\n this.camera3js.aspect = w / h;\n this.camera3js.updateProjectionMatrix();\n }\n this.renderer.setSize(w, h);\n this.css2DRenderer.setSize(w, h);\n }\n });\n this.ro.observe(this);\n }\n disconnectedCallback() {\n this.ro?.disconnect();\n }\n\n replaceScene(newScene: Scene): Scene {\n this.scene = newScene; // baseのとは別だから\n return this.base.replaceScene(newScene);\n }\n\n setController(controller: Controller) {\n this.controller = controller; // baseのとは別だから\n this.base.setController(controller);\n }\n\n animationFrameId: number = -1;\n renderingLoop = () => {\n this.animationFrameId = requestAnimationFrame(this.renderingLoop);\n const dt = this.clock.getDelta();\n this.base.updateScene(dt);\n this.renderer.render(this.scene.scene, this.camera3js);\n this.css2DRenderer.render(this.scene.scene, this.camera3js);\n };\n\n worldToScreen(loc: MutableVec3): { x: number, y: number } {\n const v = new THREE.Vector3(loc.x, loc.y, loc.z);\n v.project(this.camera3js);\n const size = new THREE.Vector2();\n this.renderer.getSize(size);\n const x = (v.x + 1) / 2 * size.x;\n const y = (1 - v.y) / 2 * size.y;\n return { x, y };\n }\n\n screenToWorld(x: number, y: number, depth: number): MutableVec3 {\n const ndc = new THREE.Vector3(\n (x / this._canvas.clientWidth) * 2 -1,\n -(y / this._canvas.clientHeight) * 2 + 1,\n 0.5\n );\n ndc.unproject(this.camera3js);\n const dir = ndc.sub(this.camera3js.position).normalize();\n return this.camera3js.position.clone().add(dir.multiplyScalar(depth));\n }\n\n cameraToScreen(loc: MutableVec3): { x: number, y: number } {\n const v = new THREE.Vector3(loc.x,loc.y,loc.z);\n const worldPos = v.applyMatrix4(this.camera3js.matrixWorld);\n return this.worldToScreen(worldPos);\n }\n\n screenToCamera(x: number, y: number, depth: number): MutableVec3 {\n const vec = this.screenToWorld(x,y,depth);\n const worldPos = new THREE.Vector3(vec.x,vec.y,vec.z);\n return worldPos.applyMatrix4(this.camera3js.matrixWorldInverse);\n }\n\n//----------------------------------\n\n // このクラスはHTMLElementのスーパークラスだから\n // EventTargetを継承してるので、this.dispatchEvent()で\n // イベントを発生させられる。addEventListener()とか、\n // 自分で作らなくてOK。\n myMouseClickedListener = (e: any) => {\n if (this.camera instanceof GeneralCamera) {\n const raycaster = new THREE.Raycaster();\n const mouse = new THREE.Vector2();\n const rect = e.target.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n mouse.x = 2*(x / rect.width) - 1;\n mouse.y = -2*(y / rect.height) + 1;\n raycaster.setFromCamera(mouse,this.camera.camera);\n const intersects = raycaster.intersectObjects(this.scene.scene.children);\n const objs: {three:THREE.Object3D,a3js:ObjectA3}[] = [];\n intersects.forEach((o1)=>{\n const a3js: ObjectA3 = o1.object.userData['a3js']?.objectA3;\n objs.push({three:o1.object,a3js});\n });\n if (objs.length>0)\n objs[0].a3js.clicked();\n this.dispatchEvent(new CustomEvent('click3d',{detail: { value: objs }}));\n }\n }\n\n alert(message: string, func?: ()=>void): Promise<void> {\n return new Promise((resolve) => {\n const div = document.createElement('div');\n div.style.cssText = 'position: absolute; top: 0px; width: 100%; height: 100%; display: flex; flex-direction: column;';\n const p = document.createElement('p');\n p.style.cssText = 'width: 80%; margin: 0 auto; color: red; text-align: center; border: 3px solid red;';\n p.textContent = message;\n div.appendChild(p);\n const btn = document.createElement('button');\n btn.textContent = 'OK!';\n div.appendChild(btn);\n this.appendChild(div);\n \n btn.addEventListener('click',async ()=>{\n if (func)\n await func();\n this.removeChild(div);\n resolve();\n });\n });\n }\n}\n\ncustomElements.define(\"canvas-a3\", Canvas);\n\n// TypeScriptにobjがPerspectiveCameraであることを教えてあげる関数。\nfunction isPerspectiveCamera(obj: THREE.Camera): obj is THREE.PerspectiveCamera {\n return (obj as any).isPerspectiveCamera === true;\n}\n","import * as THREE from 'three';\nimport { ObjectA3 } from './ObjectA3';\nimport { Scene } from './Scene';\nimport { Camera } from './Camera';\nimport type { View } from './View';\nimport { ViewBase } from './ViewBase';\nimport { GeneralCamera } from './GeneralCamera';\nimport type { Controller } from './Controller';\nimport type { MutableVec3 } from './Vec3';\nimport { CSS2DRenderer } from 'three/addons/renderers/CSS2DRenderer.js';\n\nexport interface WindowOption {\n width: number;\n height: number;\n top: number;\n left: number;\n}\n\n//type ResizeDir = \"\" | \"n\" | \"s\" | \"e\" | \"w\" | \"ne\" | \"sw\" | \"nw\" | \"se\";\n\nexport class Window extends HTMLElement implements View {\n // ########## WebComponent関係のセットアップ ##########\n private _resizeObserver?: ResizeObserver;\n private _dragging = false;\n private _resizing = false;\n private _resizeDir = \"\";\n private _startMouseX = 0;\n private _startMouseY = 0;\n private _startLeft = 0;\n private _startTop = 0;\n private _startWidth = 0;\n private _startHeight = 0;\n private _borderSize = 5;\n private _canvas: HTMLCanvasElement;\n private _css2DCanvas: HTMLElement;\n private _titleEl: HTMLElement | null = null;\n private _titleBar: HTMLElement | null = null;\n private _closeBtn: HTMLElement | null = null;\n // ########## WebComponent関係のセットアップ終り ##########\n\n base: ViewBase;\n renderer;\n css2DRenderer: CSS2DRenderer;\n scene: Scene;\n camera: Camera;\n controller: Controller;\n camera3js: THREE.PerspectiveCamera;\n clock: THREE.Clock;\n\n constructor(width=600, height=300) {\n super();\n\n // ########## WebComponent関係のセットアップ ##########\n this.attachShadow({ mode: \"open\" });\n this.shadowRoot!.innerHTML = `\n <style>\n :host {\n position: absolute;\n display: flex;\n flex-direction: column;\n background: #fff;\n border: 1px solid #444;\n box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);\n font-family: sans-serif;\n user-select: none;\n }\n\n .titlebar {\n flex: 0 0 28px;\n background: #444;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 6px;\n cursor: move;\n }\n\n .content {\n flex: 1 1 auto;\n min-height: 0;\n padding: 0;\n box-sizing: border-box;\n overflow: auto;\n user-select: text;\n }\n\n .close {\n cursor: pointer;\n font-weight: bold;\n }\n </style>\n <div class=\"titlebar\">\n <span class=\"title\"></span>\n <span class=\"close\">✕</span>\n </div>\n <div class=\"content\">\n <slot></slot>\n </div>\n`;\n // ########## WebComponent関係のセットアップ終り ##########\n\n // ここからようやく3D関係\n this.camera3js = new THREE.PerspectiveCamera(75, width/height, 0.1, 1000);\n this.camera3js.aspect = width / height;\n const camera = new GeneralCamera(this.camera3js);\n this.base = new ViewBase(camera);\n this.scene = this.base.scene;\n this.camera = this.base.camera;\n this.controller = this.base.controller;\n this.clock = new THREE.Clock();\n this.renderer = new THREE.WebGLRenderer();\n this.renderer.setSize(width, height);\n this._canvas = this.renderer.domElement;\n this._canvas.width = width;\n this._canvas.width = height;\n this.appendChild(this._canvas);\n this.css2DRenderer = new CSS2DRenderer();\n this.css2DRenderer.setSize(width, height);\n this._css2DCanvas = this.css2DRenderer.domElement;\n this._css2DCanvas.style.position='absolute';\n this._css2DCanvas.style.top='28px';\n this.appendChild(this._css2DCanvas);\n\n this._css2DCanvas.addEventListener('click',this.myMouseClickedListener);\n\n // コントローラに対するイベントの登録\n window.addEventListener('keydown',(e)=>{this.controller?.keyDown(e);});\n window.addEventListener('keyup',(e)=>{this.controller?.keyUp(e);});\n window.addEventListener('keypress',(e)=>{this.controller?.keyPress(e);});\n this._css2DCanvas.addEventListener('mousedown',(e)=>{this.controller?.mouseDown(e);});\n this._css2DCanvas.addEventListener('mouseup',(e)=>{this.controller?.mouseUp(e);});\n this._css2DCanvas.addEventListener('mousemove',(e)=>{this.controller?.mouseMove(e);});\n this._css2DCanvas.addEventListener('click',(e:MouseEvent)=>{this.controller?.mouseClick(e);});\n this._css2DCanvas.addEventListener('mouseenter',(e)=>{this.controller?.mouseEnter(e);});\n this._css2DCanvas.addEventListener('mouseleave',(e)=>{this.controller?.mouseLeave(e);});\n this._css2DCanvas.addEventListener('wheel',(e)=>{this.controller?.mouseWheel(e);});\n this._css2DCanvas.addEventListener('touchstart',(e)=>{this.controller?.touchStart(e);});\n this._css2DCanvas.addEventListener('touchmove',(e)=>{this.controller?.touchMove(e);});\n this._css2DCanvas.addEventListener('touchend',(e)=>{this.controller?.touchEnd(e);});\n this._css2DCanvas.addEventListener('touchcancel',(e)=>{this.controller?.touchCancel(e);});\n\n // 生成されたら、かってにdocument.bodyにappendChildする!\n if (document.body) {\n document.body.appendChild(this);\n } else {\n document.addEventListener(\"DOMContentLoaded\",()=>{\n document.body.append(this);\n },{once: true});\n }\n // アニメーション開始させちゃう\n this.animationFrameId = requestAnimationFrame(this.renderingLoop);\n }\n // コンストラクタ終り\n\n // ########## まずはWebComponent関係のメソッドを用意する ##########\n\n\n _resizeCanvasToContent() {\n // <div class=\"content\">のpaddingは0という前提\n // そうでなかったら以下のコメントをはずすべし。\n const content = this.shadowRoot!.querySelector(\".content\");\n //const style = getComputedStyle(content!);\n\n let cssWidth = content!.clientWidth;\n //cssWidth -= parseFloat(style.paddingLeft);\n //cssWidth -= parseFloat(style.paddingRight);\n\n let cssHeight = content!.clientHeight;\n //cssHeight -= parseFloat(style.paddingTop);\n //cssHeight -= parseFloat(style.paddingBottom);\n\n const dpr = window.devicePixelRatio || 1;\n const w = Math.floor(cssWidth * dpr);\n const h = Math.floor(cssHeight * dpr);\n\n if (this._canvas.width !== w || this._canvas.height !== h) {\n this._canvas.width = w;\n this._canvas.height = h;\n this.camera3js.aspect = w / h;\n this.camera3js.updateProjectionMatrix();\n this.renderer.setSize(w, h);\n //-----\n this.css2DRenderer.setSize(w, h);\n }\n }\n\n connectedCallback() {\n this._titleEl = this.shadowRoot!.querySelector(\".title\");\n this._titleEl!.textContent = this.getAttribute(\"title\") ?? \"Window\";\n\n this._titleBar = this.shadowRoot!.querySelector(\".titlebar\");\n this._closeBtn = this.shadowRoot!.querySelector(\".close\");\n\n this._titleBar!.addEventListener(\"mousedown\", this._onDragStart);\n this._closeBtn!.addEventListener(\"click\", () => this.remove());\n\n this.addEventListener(\"mousemove\", this._onHover);\n this.addEventListener(\"mousedown\", this._onResizeStart);\n\n document.addEventListener(\"mousemove\", this._onMouseMove);\n document.addEventListener(\"mouseup\", this._onMouseUp);\n\n this._resizeObserver = new ResizeObserver(() => {\n if (this._canvas) {\n this._resizeCanvasToContent();\n }\n });\n\n const content = this.shadowRoot!.querySelector(\".content\");\n this._resizeObserver.observe(content!);\n this._resizeCanvasToContent();\n }\n disconnectedCallback() {\n document.removeEventListener(\"mousemove\", this._onMouseMove);\n document.removeEventListener(\"mouseup\", this._onMouseUp);\n this._resizeObserver?.disconnect();\n }\n // Drag ------------------------------------\n _onDragStart = (e: MouseEvent) => {\n if (this._resizeDir) return;\n\n this._dragging = true;\n this._startMouseX = e.clientX;\n this._startMouseY = e.clientY;\n this._startLeft = this.offsetLeft;\n this._startTop = this.offsetTop;\n };\n // Resize detection ------------------------------------\n _onHover = (e: MouseEvent) => {\n if (this._dragging || this._resizing) return;\n\n const rect = this.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const b = this._borderSize;\n\n let dir = \"\";\n\n if (y < b) dir += \"n\";\n else if (y > rect.height - b) dir += \"s\";\n\n if (x < b) dir += \"w\";\n else if (x > rect.width - b) dir += \"e\";\n\n this._resizeDir = dir;\n this.style.cursor = this._cursorFromDir(dir);\n };\n\n _cursorFromDir(dir: string) {\n switch (dir) {\n case \"n\": return \"ns-resize\";\n case \"s\": return \"ns-resize\";\n case \"e\": return \"ew-resize\";\n case \"w\": return \"ew-resize\";\n case \"ne\": return \"nesw-resize\";\n case \"sw\": return \"nesw-resize\";\n case \"nw\": return \"nwse-resize\";\n case \"se\": return \"nwse-resize\";\n default: return \"default\";\n }\n }\n // Resize ------------------------------------\n _onResizeStart = (e: MouseEvent) => {\n if (!this._resizeDir) return;\n\n this._resizing = true;\n this._startMouseX = e.clientX;\n this._startMouseY = e.clientY;\n this._startLeft = this.offsetLeft;\n this._startTop = this.offsetTop;\n this._startWidth = this.offsetWidth;\n this._startHeight = this.offsetHeight;\n };\n\n _onMouseMove = (e: MouseEvent) => {\n if (this._dragging) {\n this.style.left = `${this._startLeft + (e.clientX - this._startMouseX)}px`;\n this.style.top = `${this._startTop + (e.clientY - this._startMouseY)}px`;\n }\n\n if (this._resizing) {\n const dx = e.clientX - this._startMouseX;\n const dy = e.clientY - this._startMouseY;\n\n if (this._resizeDir.includes(\"e\"))\n this.style.width = `${this._startWidth + dx}px`;\n\n if (this._resizeDir.includes(\"s\"))\n this.style.height = `${this._startHeight + dy}px`;\n\n if (this._resizeDir.includes(\"w\")) {\n this.style.width = `${this._startWidth - dx}px`;\n this.style.left = `${this._startLeft + dx}px`;\n }\n\n if (this._resizeDir.includes(\"n\")) {\n this.style.height = `${this._startHeight - dy}px`;\n this.style.top = `${this._startTop + dy}px`;\n }\n }\n };\n\n _onMouseUp = () => {\n this._dragging = false;\n this._resizing = false;\n };\n // ########## WebComponent関係のメソッドはここで終り ##########\n\n // 以下3D関係\n replaceScene(newScene: Scene): Scene {\n this.scene = newScene; // baseのとは別だから\n return this.base.replaceScene(newScene);\n }\n\n setController(controller: Controller) {\n this.controller = controller; // baseのとは別だから\n this.base.setController(controller);\n }\n\n animationFrameId: number = -1;\n renderingLoop = () => {\n this.animationFrameId = requestAnimationFrame(this.renderingLoop);\n const dt = this.clock.getDelta();\n this.base.updateScene(dt);\n this.renderer.render(this.scene.scene, this.camera3js);\n this.css2DRenderer.render(this.scene.scene, this.camera3js);\n };\n\n worldToScreen(loc: MutableVec3): { x: number, y: number } {\n const v = new THREE.Vector3(loc.x, loc.y, loc.z);\n v.project(this.camera3js);\n const size = new THREE.Vector2();\n this.renderer.getSize(size);\n const x = (v.x + 1) / 2 * size.x;\n const y = (1 - v.y) / 2 * size.y;\n return { x, y };\n }\n\n screenToWorld(x: number, y: number, depth: number): MutableVec3 {\n const ndc = new THREE.Vector3(\n (x / this._canvas.clientWidth) * 2 -1,\n -(y / this._canvas.clientHeight) * 2 + 1,\n 0.5\n );\n ndc.unproject(this.camera3js);\n const dir = ndc.sub(this.camera3js.position).normalize();\n return this.camera3js.position.clone().add(dir.multiplyScalar(depth));\n }\n\n cameraToScreen(loc: MutableVec3): { x: number, y: number } {\n const v = new THREE.Vector3(loc.x,loc.y,loc.z);\n const worldPos = v.applyMatrix4(this.camera3js.matrixWorld);\n return this.worldToScreen(worldPos);\n }\n\n screenToCamera(x: number, y: number, depth: number): MutableVec3 {\n const vec = this.screenToWorld(x,y,depth);\n const worldPos = new THREE.Vector3(vec.x,vec.y,vec.z);\n return worldPos.applyMatrix4(this.camera3js.matrixWorldInverse);\n }\n\n//----------------------------------\n\n // このクラスはHTMLElementのスーパークラスだから\n // EventTargetを継承してるので、this.dispatchEvent()で\n // イベントを発生させられる。addEventListener()とか、\n // 自分で作らなくてOK。\n myMouseClickedListener = (e: any) => {\n if (this.camera instanceof GeneralCamera) {\n const raycaster = new THREE.Raycaster();\n const mouse = new THREE.Vector2();\n const rect = e.target.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n mouse.x = 2*(x / rect.width) - 1;\n mouse.y = -2*(y / rect.height) + 1;\n raycaster.setFromCamera(mouse,this.camera.camera);\n const intersects = raycaster.intersectObjects(this.scene.scene.children);\n const objs: {three:THREE.Object3D,a3js:ObjectA3}[] = [];\n intersects.forEach((o1)=>{\n const a3js: ObjectA3 = o1.object.userData['a3js']?.objectA3;\n objs.push({three:o1.object,a3js});\n });\n if (objs.length>0)\n objs[0].a3js.clicked();\n this.dispatchEvent(new CustomEvent('click3d',{detail: { value: objs }}));\n }\n }\n\n alert(message: string, func?: ()=>void): Promise<void> {\n return new Promise((resolve) => {\n const div = document.createElement('div');\n div.style.cssText = 'position: absolute; top: 28px; width: 100%; height: 100%; display: flex; flex-direction: column;';\n const p = document.createElement('p');\n p.style.cssText = 'width: 80%; margin: 0 auto; color: red; text-align: center; border: 3px solid red;';\n p.textContent = message;\n div.appendChild(p);\n const btn = document.createElement('button');\n btn.textContent = 'OK!';\n div.appendChild(btn);\n this.appendChild(div);\n \n btn.addEventListener('click',async ()=>{\n if (func)\n await func();\n this.removeChild(div);\n resolve();\n });\n });\n }\n}\n\ncustomElements.define(\"window-a3\", Window);\n","import * as THREE from 'three';\nimport type * as Rapier from '@dimforge/rapier3d-compat';\nimport { ObjectA3 } from './ObjectA3';\nimport type { MutableVec3 } from './Vec3';\nimport type { MutableQuat } from './Quat';\nimport type { PhysicsEntityOption } from './Physics';\nimport { RapierPhysicsEngine, RapierPhysicsWorld,\n RapierPhysicsEntity } from '../rapier/RapierPhysics';\nimport { CSS2DObject } from 'three/addons/renderers/CSS2DRenderer.js';\n\nconst labelCSS = `\n color: white;\n padding: 5px 10px;\n background: rgba(0, 0, 0, 0.6);\n border: 1px solid #fff;\n border-radius: 5px;\n font-family: sans-serif;\n font-size: 14px;\n pointer-events: none; /* マウスイベントを透過させて背後の操作を邪魔しない */\n`;\n\nexport interface TestOption {\n physics: boolean\n}\n\nexport class Test extends ObjectA3 {\n constructor(opt?: TestOption) {\n super();\n if (opt && opt.physics)\n this.setControlMode(\"physics\");\n else\n this.setControlMode(\"user\");\n }\n\n initObject() {\n const geo = new THREE.BoxGeometry();\n const mat = new THREE.MeshStandardMaterial({ color: 0x00ff00 });\n const mesh = new THREE.Mesh(geo, mat);\n const div = document.createElement('div');\n div.textContent = 'Hello Box!';\n div.style.cssText = labelCSS;\n const label = new CSS2DObject(div);\n label.position.set(0, 0.8, 0); // 少し上に配置\n mesh.add(label);\n return mesh;\n }\n\n initPhysics(opt: PhysicsEntityOption) {\n this.physics = new TestPhysicsEntity(this,opt);\n }\n\n update(dt: number) {\n if (this.controlMode === \"physics\") {\n super.update(dt);\n } else if (this.controlMode === \"interpolated\") {\n super.update(dt);\n } else {\n this.object.rotation.x += dt;\n this.object.rotation.y += dt;\n this.object.rotation.z += dt;\n }\n }\n}\n\n\n\nexport class TestPhysicsEntity extends RapierPhysicsEntity {\n bodyDesc: Rapier.RigidBodyDesc;\n body: Rapier.RigidBody | null = null;\n colliderDesc: Rapier.ColliderDesc;\n collider: Rapier.Collider | null = null;\n\n constructor(obj: ObjectA3,opt: PhysicsEntityOption) {\n super(obj,opt);\n this.bodyDesc = RapierPhysicsEngine.RAPIER.RigidBodyDesc.dynamic();\n this.bodyDesc.setTranslation(obj.location.x,obj.location.y,obj.location.z);\n this.colliderDesc = RapierPhysicsEngine.RAPIER.ColliderDesc.cuboid(0.5,0.5,0.5);\n this.colliderDesc.setRestitution(0.3).setFriction(0.6);\n }\n\n synchronize(obj: Test) {\n if (this.body) {\n const t = this.body.translation();\n obj.location.set(t.x, t.y, t.z);\n obj.object.position.set(t.x, t.y, t.z);\n const r = this.body.rotation();\n obj.quat.set(r.x, r.y, r.z, r.w);\n obj.object.quaternion.set(r.x, r.y, r.z, r.w);\n }\n }\n\n addOneself(world: RapierPhysicsWorld) {\n this.body = world.world.createRigidBody(this.bodyDesc);\n this.collider = world.world.createCollider(this.colliderDesc,this.body);\n RapierPhysicsEntity.collisionMap.set(this.collider.handle,this.object);\n }\n\n removeOneself(world: RapierPhysicsWorld) {\n if (this.body)\n world.world.removeRigidBody(this.body);\n if (this.collider)\n world.world.removeCollider(this.collider,false); // true? false?\n }\n\n setLocationNow(v: MutableVec3): void {\n if (this.body)\n this.body.setTranslation(v,true); // true? false?\n }\n\n setQuatNow(q: MutableQuat): void {\n if (this.body)\n this.body.setRotation(q,true); // true? false?\n }\n\n setScaleNow(v: MutableVec3): void {\n v;\n // 簡単ではないのでとりあえず保留\n }\n}\n","import {\n\tFileLoader,\n\tLoader,\n\tShapePath\n} from 'three';\n\n/**\n * A loader for loading fonts.\n *\n * You can convert fonts online using [facetype.js](https://gero3.github.io/facetype.js/).\n *\n * ```js\n * const loader = new FontLoader();\n * const font = await loader.loadAsync( 'fonts/helvetiker_regular.typeface.json' );\n * ```\n *\n * @augments Loader\n * @three_import import { FontLoader } from 'three/addons/loaders/FontLoader.js';\n */\nclass FontLoader extends Loader {\n\n\t/**\n\t * Constructs a new font loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded font\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Font)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\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\tconst font = scope.parse( JSON.parse( text ) );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Parses the given font data and returns the resulting font.\n\t *\n\t * @param {Object} json - The raw font data as a JSON object.\n\t * @return {Font} The font.\n\t */\n\tparse( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n}\n\n/**\n * Class representing a font.\n */\nclass Font {\n\n\t/**\n\t * Constructs a new font.\n\t *\n\t * @param {Object} data - The font data as JSON.\n\t */\n\tconstructor( data ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isFont = true;\n\n\t\tthis.type = 'Font';\n\n\t\t/**\n\t\t * The font data as JSON.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.data = data;\n\n\t}\n\n\t/**\n\t * Generates geometry shapes from the given text and size. The result of this method\n\t * should be used with {@link ShapeGeometry} to generate the actual geometry data.\n\t *\n\t * @param {string} text - The text.\n\t * @param {number} [size=100] - The text size.\n\t * @param {string} [direction='ltr'] - Char direction: ltr(left to right), rtl(right to left) & tb(top bottom).\n\t * @return {Array<Shape>} An array of shapes representing the text.\n\t */\n\tgenerateShapes( text, size = 100, direction = 'ltr' ) {\n\n\t\tconst shapes = [];\n\t\tconst paths = createPaths( text, size, this.data, direction );\n\n\t\tfor ( let p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tshapes.push( ...paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n}\n\nfunction createPaths( text, size, data, direction ) {\n\n\tconst chars = Array.from( text );\n\tconst scale = size / data.resolution;\n\tconst line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tconst paths = [];\n\n\tlet offsetX = 0, offsetY = 0;\n\n\tif ( direction == 'rtl' || direction == 'tb' ) {\n\n\t\tchars.reverse();\n\n\t}\n\n\tfor ( let i = 0; i < chars.length; i ++ ) {\n\n\t\tconst char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tconst ret = createPath( char, scale, offsetX, offsetY, data );\n\n\t\t\tif ( direction == 'tb' ) {\n\n\t\t\t\toffsetX = 0;\n\t\t\t\toffsetY += data.ascender * scale;\n\n\t\t\t} else {\n\n\t\t\t\toffsetX += ret.offsetX;\n\n\t\t\t}\n\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tconst glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tconst path = new ShapePath();\n\n\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tconst outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( let i = 0, l = outline.length; i < l; ) {\n\n\t\t\tconst action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\nexport { FontLoader, Font };\n","import {\n\tExtrudeGeometry\n} from 'three';\n\n/**\n * A class for generating text as a single geometry. It is constructed by providing a string of text, and a set of\n * parameters consisting of a loaded font and extrude settings.\n *\n * See the {@link FontLoader} page for additional details.\n *\n * `TextGeometry` uses [typeface.json](http://gero3.github.io/facetype.js/) generated fonts.\n * Some existing fonts can be found located in `/examples/fonts`.\n *\n * ```js\n * const loader = new FontLoader();\n * const font = await loader.loadAsync( 'fonts/helvetiker_regular.typeface.json' );\n * const geometry = new TextGeometry( 'Hello three.js!', {\n * \tfont: font,\n * \tsize: 80,\n * \tdepth: 5,\n * \tcurveSegments: 12\n * } );\n * ```\n *\n * @augments ExtrudeGeometry\n * @three_import import { TextGeometry } from 'three/addons/geometries/TextGeometry.js';\n */\nclass TextGeometry extends ExtrudeGeometry {\n\n\t/**\n\t * Constructs a new text geometry.\n\t *\n\t * @param {string} text - The text that should be transformed into a geometry.\n\t * @param {TextGeometry~Options} [parameters] - The text settings.\n\t */\n\tconstructor( text, parameters = {} ) {\n\n\t\tconst font = parameters.font;\n\n\t\tif ( font === undefined ) {\n\n\t\t\tsuper(); // generate default extrude geometry\n\n\t\t} else {\n\n\t\t\tconst shapes = font.generateShapes( text, parameters.size, parameters.direction );\n\n\t\t\t// defaults\n\n\t\t\tif ( parameters.depth === undefined ) parameters.depth = 50;\n\t\t\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\t\t\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\t\t\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\t\t\tsuper( shapes, parameters );\n\n\t\t}\n\n\t\tthis.type = 'TextGeometry';\n\n\t}\n\n}\n\n/**\n * Represents the `options` type of the geometry's constructor.\n *\n * @typedef {Object} TextGeometry~Options\n * @property {Font} [font] - The font.\n * @property {number} [size=100] - The text size.\n * @property {number} [depth=50] - Depth to extrude the shape.\n * @property {number} [curveSegments=12] - Number of points on the curves.\n * @property {number} [steps=1] - Number of points used for subdividing segments along the depth of the extruded spline.\n * @property {boolean} [bevelEnabled=false] - Whether to beveling to the shape or not.\n * @property {number} [bevelThickness=10] - How deep into the original shape the bevel goes.\n * @property {number} [bevelSize=8] - Distance from the shape outline that the bevel extends.\n * @property {number} [bevelOffset=0] - Distance from the shape outline that the bevel starts.\n * @property {number} [bevelSegments=3] - Number of bevel layers.\n * @property {string} [direction='ltr'] - Char direction: ltr(left to right), rtl(right to left) & tb(top bottom).\n * @property {?Curve} [extrudePath=null] - A 3D spline path along which the shape should be extruded. Bevels not supported for path extrusion.\n * @property {Object} [UVGenerator] - An object that provides UV generator functions for custom UV generation.\n **/\n\nexport { TextGeometry };\n","import * as THREE from 'three';\nimport { Font, FontLoader } from 'three/examples/jsm/loaders/FontLoader.js';\nimport { TextGeometry } from 'three/examples/jsm/geometries/TextGeometry.js';\nimport { ObjectA3 } from './ObjectA3';\nimport { isString } from '../utils/TypeGuard';\n//import { unzipSync, strFromU8 } from 'three/addons/libs/fflate.module.js';\nimport { unzipAsync, readStringFromUnzipped } from '../utils/math';\n\nlet font: Font | null = null;\n/**\n * Text3Dを使う前にフォントを初期化しなければならないので、\n * この関数で初期化する。フォントはttfファイルから\n * TypeFace.js (https://gero3.github.io/facetype.js/) を\n * 使ってJSONファイルにする。日本語フォントとかだとサイズが\n * 大きくなるので、そのZIP圧縮ファイルにも対応させた。もと\n * もとのフォントファイルのファイル名がabcdefg.jsonの時は、\n * `zip abcdefg.json.zip abcdefg.json`として圧縮ファイルを\n * 作って下さい。(つまりその圧縮ファイルの中に含まれている\n * もとのファイルのファイル名が圧縮ファイルのファイル名から\n * 予測できるようにする。)\n */ \nexport async function initFont(path: string) {\n if (path.match(/.zip$/i)) {\n let path2 = path.substring(path.lastIndexOf('/')); // zipファイル前のpathを削る\n path2 = path2.substring(0,path2.length-4); // '.zip'を削る\n const zip = await unzipAsync(path)\n const jsonStr = readStringFromUnzipped(zip, path2);\n\n font = new Font(JSON.parse(jsonStr));\n } else {\n const fontLoader = new FontLoader();\n font = await fontLoader.loadAsync(path);\n }\n}\n\nexport class Text3D extends ObjectA3 {\n initObject(data: any) {\n let str;\n if (isString(data)) {\n str = data;\n } else {\n str = \"ERROR\";\n }\n if (font == null) {\n const geo = new THREE.BoxGeometry();\n const mat = new THREE.MeshStandardMaterial({ color: 0xff0000 });\n const mesh = new THREE.Mesh(geo, mat);\n return mesh;\n } else {\n const opt = {font: font,size: 1,depth: 0.5,curveSegments: 12};\n const geo = new TextGeometry(str,opt);\n geo.center();\n const mat = new THREE.MeshStandardMaterial({ color: 0x00ff00 });\n const mesh = new THREE.Mesh(geo, mat);\n return mesh;\n }\n }\n}\n","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\n/**\n * @module BufferGeometryUtils\n * @three_import import * as BufferGeometryUtils from 'three/addons/utils/BufferGeometryUtils.js';\n */\n\n/**\n * Computes vertex tangents using the MikkTSpace algorithm. MikkTSpace generates the same tangents consistently,\n * and is used in most modelling tools and normal map bakers. Use MikkTSpace for materials with normal maps,\n * because inconsistent tangents may lead to subtle visual issues in the normal map, particularly around mirrored\n * UV seams.\n *\n * In comparison to this method, {@link BufferGeometry#computeTangents} (a custom algorithm) generates tangents that\n * probably will not match the tangents in other software. The custom algorithm is sufficient for general use with a\n * custom material, and may be faster than MikkTSpace.\n *\n * Returns the original BufferGeometry. Indexed geometries will be de-indexed. Requires position, normal, and uv attributes.\n *\n * @param {BufferGeometry} geometry - The geometry to compute tangents for.\n * @param {Object} MikkTSpace - Instance of `examples/jsm/libs/mikktspace.module.js`, or `mikktspace` npm package.\n * Await `MikkTSpace.ready` before use.\n * @param {boolean} [negateSign=true] - Whether to negate the sign component (.w) of each tangent.\n * Required for normal map conventions in some formats, including glTF.\n * @return {BufferGeometry} The updated geometry.\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 * Merges a set of geometries into a single instance. All geometries must have compatible attributes.\n *\n * @param {Array<BufferGeometry>} geometries - The geometries to merge.\n * @param {boolean} [useGroups=false] - Whether to use groups or not.\n * @return {?BufferGeometry} The merged geometry. Returns `null` if the merge does not succeed.\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 * Merges a set of attributes into a single instance. All attributes must have compatible properties and types.\n * Instances of {@link InterleavedBufferAttribute} are not supported.\n *\n * @param {Array<BufferAttribute>} attributes - The attributes to merge.\n * @return {?BufferAttribute} The merged attribute. Returns `null` if the merge does not succeed.\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 * Performs a deep clone of the given buffer attribute.\n *\n * @param {BufferAttribute} attribute - The attribute to clone.\n * @return {BufferAttribute} The cloned attribute.\n */\nfunction 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 * Interleaves a set of attributes and returns a new array of corresponding attributes that share a\n * single {@link InterleavedBuffer} instance. All attributes must have compatible types.\n *\n * @param {Array<BufferAttribute>} attributes - The attributes to interleave.\n * @return {?Array<InterleavedBufferAttribute>} An array of interleaved attributes. If interleave does not succeed, the method returns `null`.\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/**\n * Returns a new, non-interleaved version of the given attribute.\n *\n * @param {InterleavedBufferAttribute} attribute - The interleaved attribute.\n * @return {BufferAttribute} The non-interleaved attribute.\n */\nfunction 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/**\n * Deinterleaves all attributes on the given geometry.\n *\n * @param {BufferGeometry} geometry - The geometry to deinterleave.\n */\nfunction 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 * Returns the amount of bytes used by all attributes to represent the geometry.\n *\n * @param {BufferGeometry} geometry - The geometry.\n * @return {number} The estimate bytes used.\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 * Returns a new geometry with vertices for which all similar vertex attributes (within tolerance) are merged.\n *\n * @param {BufferGeometry} geometry - The geometry to merge vertices for.\n * @param {number} [tolerance=1e-4] - The tolerance value.\n * @return {BufferGeometry} - The new geometry with merged vertices.\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 * Returns a new indexed geometry based on `TrianglesDrawMode` draw mode.\n * This mode corresponds to the `gl.TRIANGLES` primitive in WebGL.\n *\n * @param {BufferGeometry} geometry - The geometry to convert.\n * @param {number} drawMode - The current draw mode.\n * @return {BufferGeometry} The new geometry using `TrianglesDrawMode`.\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 *\n * Helpful for Raytracing or Decals (i.e. a `DecalGeometry` applied to a morphed Object with a `BufferGeometry`\n * will use the original `BufferGeometry`, not the morphed/skinned one, generating an incorrect result.\n * Using this function to create a shadow `Object3`D the `DecalGeometry` can be correctly generated).\n *\n * @param {Mesh|Line|Points} object - The 3D object to compute morph attributes for.\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\n/**\n * Merges the {@link BufferGeometry#groups} for the given geometry.\n *\n * @param {BufferGeometry} geometry - The geometry to modify.\n * @return {BufferGeometry} - The updated geometry\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 * 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 - The geometry to modify.\n * @param {number} [creaseAngle=Math.PI/3] - The crease angle in radians.\n * @return {BufferGeometry} - The updated geometry\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\tdeepCloneAttribute,\n\tdeinterleaveAttribute,\n\tdeinterleaveGeometry,\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\n/**\n * A loader for the glTF 2.0 format.\n *\n * [glTF](https://www.khronos.org/gltf/} (GL Transmission Format) is an [open format specification]{@link https://github.com/KhronosGroup/glTF/tree/main/specification/2.0)\n * for efficient delivery and loading of 3D content. Assets may be provided either in JSON (.gltf) or binary (.glb)\n * format. External files store textures (.jpg, .png) and additional binary data (.bin). A glTF asset may deliver\n * one or more scenes, including meshes, materials, textures, skins, skeletons, morph targets, animations, lights,\n * and/or cameras.\n *\n * `GLTFLoader` uses {@link ImageBitmapLoader} whenever possible. Be advised that image bitmaps are not\n * automatically GC-collected when they are no longer referenced, and they require special handling during\n * the disposal process.\n *\n * `GLTFLoader` supports the following glTF 2.0 extensions:\n * - KHR_draco_mesh_compression\n * - KHR_materials_clearcoat\n * - KHR_materials_dispersion\n * - KHR_materials_ior\n * - KHR_materials_specular\n * - KHR_materials_transmission\n * - KHR_materials_iridescence\n * - KHR_materials_unlit\n * - KHR_materials_volume\n * - KHR_mesh_quantization\n * - KHR_lights_punctual\n * - KHR_texture_basisu\n * - KHR_texture_transform\n * - EXT_texture_webp\n * - EXT_meshopt_compression\n * - EXT_mesh_gpu_instancing\n *\n * The following glTF 2.0 extension is supported by an external user plugin:\n * - [KHR_materials_variants](https://github.com/takahirox/three-gltf-extensions)\n * - [MSFT_texture_dds](https://github.com/takahirox/three-gltf-extensions)\n * - [KHR_animation_pointer](https://github.com/needle-tools/three-animation-pointer)\n * - [NEEDLE_progressive](https://github.com/needle-tools/gltf-progressive)\n *\n * ```js\n * const loader = new GLTFLoader();\n *\n * // Optional: Provide a DRACOLoader instance to decode compressed mesh data\n * const dracoLoader = new DRACOLoader();\n * dracoLoader.setDecoderPath( '/examples/jsm/libs/draco/' );\n * loader.setDRACOLoader( dracoLoader );\n *\n * const gltf = await loader.loadAsync( 'models/gltf/duck/duck.gltf' );\n * scene.add( gltf.scene );\n * ```\n *\n * @augments Loader\n * @three_import import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';\n */\nclass GLTFLoader extends Loader {\n\n\t/**\n\t * Constructs a new glTF loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\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\t/**\n\t * Starts loading from the given URL and passes the loaded glTF asset\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(GLTFLoader~LoadObject)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\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\t/**\n\t * Sets the given Draco loader to this loader. Required for decoding assets\n\t * compressed with the `KHR_draco_mesh_compression` extension.\n\t *\n\t * @param {DRACOLoader} dracoLoader - The Draco loader to set.\n\t * @return {GLTFLoader} A reference to this loader.\n\t */\n\tsetDRACOLoader( dracoLoader ) {\n\n\t\tthis.dracoLoader = dracoLoader;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given KTX2 loader to this loader. Required for loading KTX2\n\t * compressed textures.\n\t *\n\t * @param {KTX2Loader} ktx2Loader - The KTX2 loader to set.\n\t * @return {GLTFLoader} A reference to this loader.\n\t */\n\tsetKTX2Loader( ktx2Loader ) {\n\n\t\tthis.ktx2Loader = ktx2Loader;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given meshopt decoder. Required for decoding assets\n\t * compressed with the `EXT_meshopt_compression` extension.\n\t *\n\t * @param {Object} meshoptDecoder - The meshopt decoder to set.\n\t * @return {GLTFLoader} A reference to this loader.\n\t */\n\tsetMeshoptDecoder( meshoptDecoder ) {\n\n\t\tthis.meshoptDecoder = meshoptDecoder;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Registers a plugin callback. This API is internally used to implement the various\n\t * glTF extensions but can also used by third-party code to add additional logic\n\t * to the loader.\n\t *\n\t * @param {function(parser:GLTFParser)} callback - The callback function to register.\n\t * @return {GLTFLoader} A reference to this loader.\n\t */\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\t/**\n\t * Unregisters a plugin callback.\n\t *\n\t * @param {Function} callback - The callback function to unregister.\n\t * @return {GLTFLoader} A reference to this loader.\n\t */\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\t/**\n\t * Parses the given FBX data and returns the resulting group.\n\t *\n\t * @param {string|ArrayBuffer} data - The raw glTF data.\n\t * @param {string} path - The URL base path.\n\t * @param {function(GLTFLoader~LoadObject)} onLoad - Executed when the loading process has been finished.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\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\t/**\n\t * Async version of {@link GLTFLoader#parse}.\n\t *\n\t * @async\n\t * @param {string|ArrayBuffer} data - The raw glTF data.\n\t * @param {string} path - The URL base path.\n\t * @return {Promise<GLTFLoader~LoadObject>} A Promise that resolves with the loaded glTF when the parsing has been finished.\n\t */\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 *\n * @private\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\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\n */\nclass GLTFTextureWebPExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_WEBP;\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 parser.loadTextureImage( textureIndex, extension.source, loader );\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 *\n * @private\n */\nclass GLTFTextureAVIFExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_AVIF;\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 parser.loadTextureImage( textureIndex, extension.source, loader );\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 *\n * @private\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 * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 _quaternion = 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_quaternion.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 *\n * @private\n * @param {Object<string, Material>} cache\n * @return {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 *\n * @private\n * @param {Object3D|Material|BufferGeometry|Object|AnimationClip} 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 * @private\n * @param {BufferGeometry} geometry\n * @param {Array<GLTF.Target>} targets\n * @param {GLTFParser} parser\n * @return {Promise<BufferGeometry>}\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 *\n * @private\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\tif ( uri.search( /\\.ktx2($|\\?)/i ) > 0 || uri.search( /^data\\:image\\/ktx2/ ) === 0 ) return 'image/ktx2';\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 * @private\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 * @private\n\t * @param {Object} cache\n\t * @param {Object3D} index\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/**\n\t * Returns a reference to a shared resource, cloning it if necessary.\n\t *\n\t * @private\n\t * @param {Object} cache\n\t * @param {number} index\n\t * @param {Object} object\n\t * @return {Object}\n\t */\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 *\n\t * @private\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise<Object3D|Material|Texture|AnimationClip|ArrayBuffer|Object>}\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 *\n\t * @private\n\t * @param {string} type\n\t * @return {Promise<Array<Object>>}\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 *\n\t * @private\n\t * @param {number} bufferIndex\n\t * @return {Promise<ArrayBuffer>}\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 *\n\t * @private\n\t * @param {number} bufferViewIndex\n\t * @return {Promise<ArrayBuffer>}\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 *\n\t * @private\n\t * @param {number} accessorIndex\n\t * @return {Promise<BufferAttribute|InterleavedBufferAttribute>}\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\t// Ignore normalized since we copy from sparse\n\t\t\t\tbufferAttribute.normalized = false;\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\tbufferAttribute.normalized = normalized;\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 *\n\t * @private\n\t * @param {number} textureIndex\n\t * @return {Promise<?Texture>}\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\t\t\ttexture.generateMipmaps = ! texture.isCompressedTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\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 *\n\t * @private\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @param {string} [colorSpace]\n\t * @return {Promise<Texture>}\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 *\n\t * @private\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 *\n\t * @private\n\t * @param {number} materialIndex\n\t * @return {Promise<Material>}\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/**\n\t * When Object3D instances are targeted by animation, they need unique names.\n\t *\n\t * @private\n\t * @param {string} originalName\n\t * @return {string}\n\t */\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 * @private\n\t * @param {Array<GLTF.Primitive>} primitives\n\t * @return {Promise<Array<BufferGeometry>>}\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 *\n\t * @private\n\t * @param {number} meshIndex\n\t * @return {Promise<Group|Mesh|SkinnedMesh|Line|Points>}\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 *\n\t * @private\n\t * @param {number} cameraIndex\n\t * @return {Promise<Camera>|undefined}\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 *\n\t * @private\n\t * @param {number} skinIndex\n\t * @return {Promise<Skeleton>}\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 *\n\t * @private\n\t * @param {number} animationIndex\n\t * @return {Promise<AnimationClip>}\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\tconst animation = new AnimationClip( animationName, undefined, tracks );\n\n\t\t\tassignExtrasToUserData( animation, animationDef );\n\n\t\t\treturn animation;\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 *\n\t * @private\n\t * @param {number} nodeIndex\n\t * @return {Promise<Object3D>}\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} else if ( nodeDef.mesh !== undefined && parser.meshCache.refs[ nodeDef.mesh ] > 1 ) {\n\n\t\t\t\tconst mapping = parser.associations.get( node );\n\t\t\t\tparser.associations.set( node, { ...mapping } );\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 *\n\t * @private\n\t * @param {number} sceneIndex\n\t * @return {Promise<Group>}\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.translation:\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 *\n * @private\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 *\n * @private\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n * @return {Promise<BufferGeometry>}\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\n/**\n * Loader result of `GLTFLoader`.\n *\n * @typedef {Object} GLTFLoader~LoadObject\n * @property {Array<AnimationClip>} animations - An array of animation clips.\n * @property {Object} asset - Meta data about the loaded asset.\n * @property {Array<Camera>} cameras - An array of cameras.\n * @property {GLTFParser} parser - A reference to the internal parser.\n * @property {Group} scene - The default scene.\n * @property {Array<Group>} scenes - glTF assets might define multiple scenes.\n * @property {Object} userData - Additional data.\n **/\n\nexport { GLTFLoader };\n","import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tColor,\n\tColorManagement,\n\tFileLoader,\n\tLoader,\n\tLinearSRGBColorSpace,\n\tSRGBColorSpace,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute\n} from 'three';\n\nconst _taskCache = new WeakMap();\n\n/**\n * A loader for the Draco format.\n *\n * [Draco](https://google.github.io/draco/) is an open source library for compressing\n * and decompressing 3D meshes and point clouds. Compressed geometry can be significantly smaller,\n * at the cost of additional decoding time on the client device.\n *\n * Standalone Draco files have a `.drc` extension, and contain vertex positions, normals, colors,\n * and other attributes. Draco files do not contain materials, textures, animation, or node hierarchies –\n * to use these features, embed Draco geometry inside of a glTF file. A normal glTF file can be converted\n * to a Draco-compressed glTF file using [glTF-Pipeline](https://github.com/CesiumGS/gltf-pipeline).\n * When using Draco with glTF, an instance of `DRACOLoader` will be used internally by {@link GLTFLoader}.\n *\n * It is recommended to create one DRACOLoader instance and reuse it to avoid loading and creating\n * multiple decoder instances.\n *\n * `DRACOLoader` will automatically use either the JS or the WASM decoding library, based on\n * browser capabilities.\n *\n * ```js\n * const loader = new DRACOLoader();\n * loader.setDecoderPath( '/examples/jsm/libs/draco/' );\n *\n * const geometry = await dracoLoader.loadAsync( 'models/draco/bunny.drc' );\n * geometry.computeVertexNormals(); // optional\n *\n * dracoLoader.dispose();\n * ```\n *\n * @augments Loader\n * @three_import import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';\n */\nclass DRACOLoader extends Loader {\n\n\t/**\n\t * Constructs a new Draco loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.decoderPath = '';\n\t\tthis.decoderConfig = {};\n\t\tthis.decoderBinary = null;\n\t\tthis.decoderPending = null;\n\n\t\tthis.workerLimit = 4;\n\t\tthis.workerPool = [];\n\t\tthis.workerNextTaskID = 1;\n\t\tthis.workerSourceURL = '';\n\n\t\tthis.defaultAttributeIDs = {\n\t\t\tposition: 'POSITION',\n\t\t\tnormal: 'NORMAL',\n\t\t\tcolor: 'COLOR',\n\t\t\tuv: 'TEX_COORD'\n\t\t};\n\t\tthis.defaultAttributeTypes = {\n\t\t\tposition: 'Float32Array',\n\t\t\tnormal: 'Float32Array',\n\t\t\tcolor: 'Float32Array',\n\t\t\tuv: 'Float32Array'\n\t\t};\n\n\t}\n\n\t/**\n\t * Provides configuration for the decoder libraries. Configuration cannot be changed after decoding begins.\n\t *\n\t * @param {string} path - The decoder path.\n\t * @return {DRACOLoader} A reference to this loader.\n\t */\n\tsetDecoderPath( path ) {\n\n\t\tthis.decoderPath = path;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Provides configuration for the decoder libraries. Configuration cannot be changed after decoding begins.\n\t *\n\t * @param {{type:('js'|'wasm')}} config - The decoder config.\n\t * @return {DRACOLoader} A reference to this loader.\n\t */\n\tsetDecoderConfig( config ) {\n\n\t\tthis.decoderConfig = config;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the maximum number of Web Workers to be used during decoding.\n\t * A lower limit may be preferable if workers are also for other tasks in the application.\n\t *\n\t * @param {number} workerLimit - The worker limit.\n\t * @return {DRACOLoader} A reference to this loader.\n\t */\n\tsetWorkerLimit( workerLimit ) {\n\n\t\tthis.workerLimit = workerLimit;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded Draco asset\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\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, ( buffer ) => {\n\n\t\t\tthis.parse( buffer, onLoad, onError );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Parses the given Draco data.\n\t *\n\t * @param {ArrayBuffer} buffer - The raw Draco data as an array buffer.\n\t * @param {function(BufferGeometry)} onLoad - Executed when the loading/parsing process has been finished.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tparse( buffer, onLoad, onError = ()=>{} ) {\n\n\t\tthis.decodeDracoFile( buffer, onLoad, null, null, SRGBColorSpace, onError ).catch( onError );\n\n\t}\n\n\t//\n\n\tdecodeDracoFile( buffer, callback, attributeIDs, attributeTypes, vertexColorSpace = LinearSRGBColorSpace, onError = () => {} ) {\n\n\t\tconst taskConfig = {\n\t\t\tattributeIDs: attributeIDs || this.defaultAttributeIDs,\n\t\t\tattributeTypes: attributeTypes || this.defaultAttributeTypes,\n\t\t\tuseUniqueIDs: !! attributeIDs,\n\t\t\tvertexColorSpace: vertexColorSpace,\n\t\t};\n\n\t\treturn this.decodeGeometry( buffer, taskConfig ).then( callback ).catch( onError );\n\n\t}\n\n\tdecodeGeometry( buffer, taskConfig ) {\n\n\t\tconst taskKey = JSON.stringify( taskConfig );\n\n\t\t// Check for an existing task using this buffer. A transferred buffer cannot be transferred\n\t\t// again from this thread.\n\t\tif ( _taskCache.has( buffer ) ) {\n\n\t\t\tconst cachedTask = _taskCache.get( buffer );\n\n\t\t\tif ( cachedTask.key === taskKey ) {\n\n\t\t\t\treturn cachedTask.promise;\n\n\t\t\t} else if ( buffer.byteLength === 0 ) {\n\n\t\t\t\t// Technically, it would be possible to wait for the previous task to complete,\n\t\t\t\t// transfer the buffer back, and decode again with the second configuration. That\n\t\t\t\t// is complex, and I don't know of any reason to decode a Draco buffer twice in\n\t\t\t\t// different ways, so this is left unimplemented.\n\t\t\t\tthrow new Error(\n\n\t\t\t\t\t'THREE.DRACOLoader: Unable to re-decode a buffer with different ' +\n\t\t\t\t\t'settings. Buffer has already been transferred.'\n\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet worker;\n\t\tconst taskID = this.workerNextTaskID ++;\n\t\tconst taskCost = buffer.byteLength;\n\n\t\t// Obtain a worker and assign a task, and construct a geometry instance\n\t\t// when the task completes.\n\t\tconst geometryPending = this._getWorker( taskID, taskCost )\n\t\t\t.then( ( _worker ) => {\n\n\t\t\t\tworker = _worker;\n\n\t\t\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\t\t\tworker._callbacks[ taskID ] = { resolve, reject };\n\n\t\t\t\t\tworker.postMessage( { type: 'decode', id: taskID, taskConfig, buffer }, [ buffer ] );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t} );\n\n\t\t\t} )\n\t\t\t.then( ( message ) => this._createGeometry( message.geometry ) );\n\n\t\t// Remove task from the task list.\n\t\t// Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)\n\t\tgeometryPending\n\t\t\t.catch( () => true )\n\t\t\t.then( () => {\n\n\t\t\t\tif ( worker && taskID ) {\n\n\t\t\t\t\tthis._releaseTask( worker, taskID );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t// Cache the task result.\n\t\t_taskCache.set( buffer, {\n\n\t\t\tkey: taskKey,\n\t\t\tpromise: geometryPending\n\n\t\t} );\n\n\t\treturn geometryPending;\n\n\t}\n\n\t_createGeometry( geometryData ) {\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tif ( geometryData.index ) {\n\n\t\t\tgeometry.setIndex( new BufferAttribute( geometryData.index.array, 1 ) );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < geometryData.attributes.length; i ++ ) {\n\n\t\t\tconst { name, array, itemSize, stride, vertexColorSpace } = geometryData.attributes[ i ];\n\n\t\t\tlet attribute;\n\n\t\t\tif ( itemSize === stride ) {\n\n\t\t\t\tattribute = new BufferAttribute( array, itemSize );\n\n\t\t\t} else {\n\n\t\t\t\tconst buffer = new InterleavedBuffer( array, stride );\n\n\t\t\t\tattribute = new InterleavedBufferAttribute( buffer, itemSize, 0 );\n\n\t\t\t}\n\n\t\t\tif ( name === 'color' ) {\n\n\t\t\t\tthis._assignVertexColorSpace( attribute, vertexColorSpace );\n\n\t\t\t\tattribute.normalized = ( array instanceof Float32Array ) === false;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( name, attribute );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n\t_assignVertexColorSpace( attribute, inputColorSpace ) {\n\n\t\t// While .drc files do not specify colorspace, the only 'official' tooling\n\t\t// is PLY and OBJ converters, which use sRGB. We'll assume sRGB when a .drc\n\t\t// file is passed into .load() or .parse(). GLTFLoader uses internal APIs\n\t\t// to decode geometry, and vertex colors are already Linear-sRGB in there.\n\n\t\tif ( inputColorSpace !== SRGBColorSpace ) return;\n\n\t\tconst _color = new Color();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\t_color.fromBufferAttribute( attribute, i );\n\t\t\tColorManagement.colorSpaceToWorking( _color, SRGBColorSpace );\n\t\t\tattribute.setXYZ( i, _color.r, _color.g, _color.b );\n\n\t\t}\n\n\t}\n\n\t_loadLibrary( url, responseType ) {\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.decoderPath );\n\t\tloader.setResponseType( responseType );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\tloader.load( url, resolve, undefined, reject );\n\n\t\t} );\n\n\t}\n\n\tpreload() {\n\n\t\tthis._initDecoder();\n\n\t\treturn this;\n\n\t}\n\n\t_initDecoder() {\n\n\t\tif ( this.decoderPending ) return this.decoderPending;\n\n\t\tconst useJS = typeof WebAssembly !== 'object' || this.decoderConfig.type === 'js';\n\t\tconst librariesPending = [];\n\n\t\tif ( useJS ) {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.js', 'text' ) );\n\n\t\t} else {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_wasm_wrapper.js', 'text' ) );\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.wasm', 'arraybuffer' ) );\n\n\t\t}\n\n\t\tthis.decoderPending = Promise.all( librariesPending )\n\t\t\t.then( ( libraries ) => {\n\n\t\t\t\tconst jsContent = libraries[ 0 ];\n\n\t\t\t\tif ( ! useJS ) {\n\n\t\t\t\t\tthis.decoderConfig.wasmBinary = libraries[ 1 ];\n\n\t\t\t\t}\n\n\t\t\t\tconst fn = DRACOWorker.toString();\n\n\t\t\t\tconst body = [\n\t\t\t\t\t'/* draco decoder */',\n\t\t\t\t\tjsContent,\n\t\t\t\t\t'',\n\t\t\t\t\t'/* worker */',\n\t\t\t\t\tfn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) )\n\t\t\t\t].join( '\\n' );\n\n\t\t\t\tthis.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) );\n\n\t\t\t} );\n\n\t\treturn this.decoderPending;\n\n\t}\n\n\t_getWorker( taskID, taskCost ) {\n\n\t\treturn this._initDecoder().then( () => {\n\n\t\t\tif ( this.workerPool.length < this.workerLimit ) {\n\n\t\t\t\tconst worker = new Worker( this.workerSourceURL );\n\n\t\t\t\tworker._callbacks = {};\n\t\t\t\tworker._taskCosts = {};\n\t\t\t\tworker._taskLoad = 0;\n\n\t\t\t\tworker.postMessage( { type: 'init', decoderConfig: this.decoderConfig } );\n\n\t\t\t\tworker.onmessage = function ( e ) {\n\n\t\t\t\t\tconst message = e.data;\n\n\t\t\t\t\tswitch ( message.type ) {\n\n\t\t\t\t\t\tcase 'decode':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].resolve( message );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'error':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].reject( message );\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.DRACOLoader: Unexpected message, \"' + message.type + '\"' );\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t\tthis.workerPool.push( worker );\n\n\t\t\t} else {\n\n\t\t\t\tthis.workerPool.sort( function ( a, b ) {\n\n\t\t\t\t\treturn a._taskLoad > b._taskLoad ? - 1 : 1;\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tconst worker = this.workerPool[ this.workerPool.length - 1 ];\n\t\t\tworker._taskCosts[ taskID ] = taskCost;\n\t\t\tworker._taskLoad += taskCost;\n\t\t\treturn worker;\n\n\t\t} );\n\n\t}\n\n\t_releaseTask( worker, taskID ) {\n\n\t\tworker._taskLoad -= worker._taskCosts[ taskID ];\n\t\tdelete worker._callbacks[ taskID ];\n\t\tdelete worker._taskCosts[ taskID ];\n\n\t}\n\n\tdebug() {\n\n\t\tconsole.log( 'Task load: ', this.workerPool.map( ( worker ) => worker._taskLoad ) );\n\n\t}\n\n\tdispose() {\n\n\t\tfor ( let i = 0; i < this.workerPool.length; ++ i ) {\n\n\t\t\tthis.workerPool[ i ].terminate();\n\n\t\t}\n\n\t\tthis.workerPool.length = 0;\n\n\t\tif ( this.workerSourceURL !== '' ) {\n\n\t\t\tURL.revokeObjectURL( this.workerSourceURL );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/* WEB WORKER */\n\nfunction DRACOWorker() {\n\n\tlet decoderConfig;\n\tlet decoderPending;\n\n\tonmessage = function ( e ) {\n\n\t\tconst message = e.data;\n\n\t\tswitch ( message.type ) {\n\n\t\t\tcase 'init':\n\t\t\t\tdecoderConfig = message.decoderConfig;\n\t\t\t\tdecoderPending = new Promise( function ( resolve/*, reject*/ ) {\n\n\t\t\t\t\tdecoderConfig.onModuleLoaded = function ( draco ) {\n\n\t\t\t\t\t\t// Module is Promise-like. Wrap before resolving to avoid loop.\n\t\t\t\t\t\tresolve( { draco: draco } );\n\n\t\t\t\t\t};\n\n\t\t\t\t\tDracoDecoderModule( decoderConfig ); // eslint-disable-line no-undef\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t\tcase 'decode':\n\t\t\t\tconst buffer = message.buffer;\n\t\t\t\tconst taskConfig = message.taskConfig;\n\t\t\t\tdecoderPending.then( ( module ) => {\n\n\t\t\t\t\tconst draco = module.draco;\n\t\t\t\t\tconst decoder = new draco.Decoder();\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tconst geometry = decodeGeometry( draco, decoder, new Int8Array( buffer ), taskConfig );\n\n\t\t\t\t\t\tconst buffers = geometry.attributes.map( ( attr ) => attr.array.buffer );\n\n\t\t\t\t\t\tif ( geometry.index ) buffers.push( geometry.index.array.buffer );\n\n\t\t\t\t\t\tself.postMessage( { type: 'decode', id: message.id, geometry }, buffers );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tconsole.error( error );\n\n\t\t\t\t\t\tself.postMessage( { type: 'error', id: message.id, error: error.message } );\n\n\t\t\t\t\t} finally {\n\n\t\t\t\t\t\tdraco.destroy( decoder );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t};\n\n\tfunction decodeGeometry( draco, decoder, array, taskConfig ) {\n\n\t\tconst attributeIDs = taskConfig.attributeIDs;\n\t\tconst attributeTypes = taskConfig.attributeTypes;\n\n\t\tlet dracoGeometry;\n\t\tlet decodingStatus;\n\n\t\tconst geometryType = decoder.GetEncodedGeometryType( array );\n\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\tdracoGeometry = new draco.Mesh();\n\t\t\tdecodingStatus = decoder.DecodeArrayToMesh( array, array.byteLength, dracoGeometry );\n\n\t\t} else if ( geometryType === draco.POINT_CLOUD ) {\n\n\t\t\tdracoGeometry = new draco.PointCloud();\n\t\t\tdecodingStatus = decoder.DecodeArrayToPointCloud( array, array.byteLength, dracoGeometry );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Unexpected geometry type.' );\n\n\t\t}\n\n\t\tif ( ! decodingStatus.ok() || dracoGeometry.ptr === 0 ) {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Decoding failed: ' + decodingStatus.error_msg() );\n\n\t\t}\n\n\t\tconst geometry = { index: null, attributes: [] };\n\n\t\t// Gather all vertex attributes.\n\t\tfor ( const attributeName in attributeIDs ) {\n\n\t\t\tconst attributeType = self[ attributeTypes[ attributeName ] ];\n\n\t\t\tlet attribute;\n\t\t\tlet attributeID;\n\n\t\t\t// A Draco file may be created with default vertex attributes, whose attribute IDs\n\t\t\t// are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively,\n\t\t\t// a Draco file may contain a custom set of attributes, identified by known unique\n\t\t\t// IDs. glTF files always do the latter, and `.drc` files typically do the former.\n\t\t\tif ( taskConfig.useUniqueIDs ) {\n\n\t\t\t\tattributeID = attributeIDs[ attributeName ];\n\t\t\t\tattribute = decoder.GetAttributeByUniqueId( dracoGeometry, attributeID );\n\n\t\t\t} else {\n\n\t\t\t\tattributeID = decoder.GetAttributeId( dracoGeometry, draco[ attributeIDs[ attributeName ] ] );\n\n\t\t\t\tif ( attributeID === - 1 ) continue;\n\n\t\t\t\tattribute = decoder.GetAttribute( dracoGeometry, attributeID );\n\n\t\t\t}\n\n\t\t\tconst attributeResult = decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute );\n\n\t\t\tif ( attributeName === 'color' ) {\n\n\t\t\t\tattributeResult.vertexColorSpace = taskConfig.vertexColorSpace;\n\n\t\t\t}\n\n\t\t\tgeometry.attributes.push( attributeResult );\n\n\t\t}\n\n\t\t// Add index.\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\tgeometry.index = decodeIndex( draco, decoder, dracoGeometry );\n\n\t\t}\n\n\t\tdraco.destroy( dracoGeometry );\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction decodeIndex( draco, decoder, dracoGeometry ) {\n\n\t\tconst numFaces = dracoGeometry.num_faces();\n\t\tconst numIndices = numFaces * 3;\n\t\tconst byteLength = numIndices * 4;\n\n\t\tconst ptr = draco._malloc( byteLength );\n\t\tdecoder.GetTrianglesUInt32Array( dracoGeometry, byteLength, ptr );\n\t\tconst index = new Uint32Array( draco.HEAPF32.buffer, ptr, numIndices ).slice();\n\t\tdraco._free( ptr );\n\n\t\treturn { array: index, itemSize: 1 };\n\n\t}\n\n\tfunction decodeAttribute( draco, decoder, dracoGeometry, attributeName, TypedArray, attribute ) {\n\n\t\tconst count = dracoGeometry.num_points();\n\t\tconst itemSize = attribute.num_components();\n\t\tconst dracoDataType = getDracoDataType( draco, TypedArray );\n\n\t\t// Reference: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#data-alignment\n\t\tconst srcByteStride = itemSize * TypedArray.BYTES_PER_ELEMENT;\n\t\tconst dstByteStride = Math.ceil( srcByteStride / 4 ) * 4;\n\n\t\tconst dstStride = dstByteStride / TypedArray.BYTES_PER_ELEMENT;\n\n\t\tconst srcByteLength = count * srcByteStride;\n\t\tconst dstByteLength = count * dstByteStride;\n\n\t\tconst ptr = draco._malloc( srcByteLength );\n\t\tdecoder.GetAttributeDataArrayForAllPoints( dracoGeometry, attribute, dracoDataType, srcByteLength, ptr );\n\n\t\tconst srcArray = new TypedArray( draco.HEAPF32.buffer, ptr, srcByteLength / TypedArray.BYTES_PER_ELEMENT );\n\t\tlet dstArray;\n\n\t\tif ( srcByteStride === dstByteStride ) {\n\n\t\t\t// THREE.BufferAttribute\n\n\t\t\tdstArray = srcArray.slice();\n\n\t\t} else {\n\n\t\t\t// THREE.InterleavedBufferAttribute\n\n\t\t\tdstArray = new TypedArray( dstByteLength / TypedArray.BYTES_PER_ELEMENT );\n\n\t\t\tlet dstOffset = 0;\n\n\t\t\tfor ( let i = 0, il = srcArray.length; i < il; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tdstArray[ dstOffset + j ] = srcArray[ i * itemSize + j ];\n\n\t\t\t\t}\n\n\t\t\t\tdstOffset += dstStride;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdraco._free( ptr );\n\n\t\treturn {\n\t\t\tname: attributeName,\n\t\t\tcount: count,\n\t\t\titemSize: itemSize,\n\t\t\tarray: dstArray,\n\t\t\tstride: dstStride\n\t\t};\n\n\t}\n\n\tfunction getDracoDataType( draco, TypedArray ) {\n\n\t\tswitch ( TypedArray ) {\n\n\t\t\tcase Float32Array: return draco.DT_FLOAT32;\n\t\t\tcase Int8Array: return draco.DT_INT8;\n\t\t\tcase Int16Array: return draco.DT_INT16;\n\t\t\tcase Int32Array: return draco.DT_INT32;\n\t\t\tcase Uint8Array: return draco.DT_UINT8;\n\t\t\tcase Uint16Array: return draco.DT_UINT16;\n\t\t\tcase Uint32Array: return draco.DT_UINT32;\n\n\t\t}\n\n\t}\n\n}\n\nexport { DRACOLoader };\n","import * as THREE from 'three';\nimport { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';\nimport type { GLTF } from 'three/addons/loaders/GLTFLoader.js';\nimport { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';\nimport { ObjectA3 } from './ObjectA3';\nimport type { AsyncInitRequired } from './AsyncInitRequired';\nimport { isString } from '../utils/TypeGuard';\n\ntype MorphTargetObject =\n | THREE.Mesh\n | THREE.Line\n | THREE.Points;\n\ntype MorphTargetCapable = MorphTargetObject & {\n morphTargetDictionary: Record<string, number>;\n morphTargetInfluences: number[];\n};\n\nfunction hasMorphTargets(\n obj: THREE.Object3D\n): obj is MorphTargetCapable {\n return (\n 'morphTargetDictionary' in obj &&\n obj.morphTargetDictionary !== undefined &&\n 'morphTargetInfluences' in obj &&\n Array.isArray(obj.morphTargetInfluences)\n );\n}\n\n\nconst gltfLoader = new GLTFLoader();\nconst dracoLoader = new DRACOLoader();\ndracoLoader.setDecoderPath('/examples/jsm/libs/draco/');\ngltfLoader.setDRACOLoader(dracoLoader);\n\ninterface Model {\n gltf: GLTF;\n mixer: THREE.AnimationMixer;\n actions: Record<string, THREE.AnimationAction>;\n morphs: Record<string, {array: Array<number>, idx: number}>;\n}\n\n/**\n * glTFモデルを読み込み表示するためのクラス。\n */\nexport class GLTFA3 extends ObjectA3 implements AsyncInitRequired<GLTFA3> {\n readonly ready: Promise<GLTFA3>;\n private model: Model | null = null;\n\n constructor(data: any) {\n super();\n this.ready = this.asyncInit(data);\n this.setControlMode(\"user\");\n }\n\n initObject() {\n // ルートとなるObject3Dだけ用意して後でその中に\n // ロードしたglTFのscene(モデル)をaddする。\n return new THREE.Object3D();\n }\n\n async asyncInit(data: any) {\n if (isString(data)) {\n const gltf = await gltfLoader.loadAsync(data);\n const mixer = new THREE.AnimationMixer(gltf.scene);\n const actions: Record<string,THREE.AnimationAction> = {};\nconsole.log(`File: ${data}`);\nconsole.log(` actions:`);\n for (let i=0;i<gltf.animations.length;i++) {\n const clip = gltf.animations[i];\n const action = mixer.clipAction(clip);\n actions[clip.name] = action;\nconsole.log(` ${clip.name}`);\n }\nconsole.log(` morphs:`);\n const morphs: Record<string,{array:Array<number>,idx:number}> = {};\n gltf.scene.traverse((obj)=>{\n if (hasMorphTargets(obj)) {\n const { morphTargetDictionary, morphTargetInfluences } = obj;\n Object.keys(morphTargetDictionary).forEach((e)=>{\n const morphName = obj.name+'.'+e; // 一意の名前になんない可能性少しある\n const idx = morphTargetDictionary[e];\n morphs[morphName] = {array: morphTargetInfluences, idx: idx};\nconsole.log(` ${morphName}`);\n })\n }\n });\n this.model = {\n gltf: gltf,\n mixer: mixer,\n actions: actions,\n morphs: morphs\n };\n this.object.add(this.model.gltf.scene);\n } else {\n const geo = new THREE.BoxGeometry();\n const mat = new THREE.MeshStandardMaterial({ color: 0xff0000 });\n const mesh = new THREE.Mesh(geo, mat);\n this.object.add(mesh);\n }\n return this;\n }\n\n action(actionName: string) {\n if (this.model) {\n this.model.mixer.stopAllAction();\n const action = this.model.actions[actionName];\n if (action) {\n action.play();\n }\n }\n }\n\n morph(morphName: string, value: number) {\n if (this.model) {\n if (morphName in this.model.morphs) {\n const { array, idx } = this.model.morphs[morphName]\n array[idx] = value;\n }\n }\n }\n\n update(dt: number) {\n if (this.model) {\n this.model.mixer.update(dt);\n }\n }\n}\n","/*! chevrotain - v9.0.1 */\nvar R=(t,e)=>()=>(e||(e={exports:{}},t(e.exports,e)),e.exports);var Er=R(Pt=>{\"use strict\";Object.defineProperty(Pt,\"__esModule\",{value:!0});Pt.VERSION=void 0;Pt.VERSION=\"9.0.1\"});var k=R((exports,module)=>{\"use strict\";var __spreadArray=exports&&exports.__spreadArray||function(t,e){for(var r=0,n=e.length,i=t.length;r<n;r++,i++)t[i]=e[r];return t};Object.defineProperty(exports,\"__esModule\",{value:!0});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(t){return t&&t.length===0}exports.isEmpty=isEmpty;function keys(t){return t==null?[]:Object.keys(t)}exports.keys=keys;function values(t){for(var e=[],r=Object.keys(t),n=0;n<r.length;n++)e.push(t[r[n]]);return e}exports.values=values;function mapValues(t,e){for(var r=[],n=keys(t),i=0;i<n.length;i++){var a=n[i];r.push(e.call(null,t[a],a))}return r}exports.mapValues=mapValues;function map(t,e){for(var r=[],n=0;n<t.length;n++)r.push(e.call(null,t[n],n));return r}exports.map=map;function flatten(t){for(var e=[],r=0;r<t.length;r++){var n=t[r];Array.isArray(n)?e=e.concat(flatten(n)):e.push(n)}return e}exports.flatten=flatten;function first(t){return isEmpty(t)?void 0:t[0]}exports.first=first;function last(t){var e=t&&t.length;return e?t[e-1]:void 0}exports.last=last;function forEach(t,e){if(Array.isArray(t))for(var r=0;r<t.length;r++)e.call(null,t[r],r);else if(isObject(t))for(var n=keys(t),r=0;r<n.length;r++){var i=n[r],a=t[i];e.call(null,a,i)}else throw Error(\"non exhaustive match\")}exports.forEach=forEach;function isString(t){return typeof t==\"string\"}exports.isString=isString;function isUndefined(t){return t===void 0}exports.isUndefined=isUndefined;function isFunction(t){return t instanceof Function}exports.isFunction=isFunction;function drop(t,e){return e===void 0&&(e=1),t.slice(e,t.length)}exports.drop=drop;function dropRight(t,e){return e===void 0&&(e=1),t.slice(0,t.length-e)}exports.dropRight=dropRight;function filter(t,e){var r=[];if(Array.isArray(t))for(var n=0;n<t.length;n++){var i=t[n];e.call(null,i)&&r.push(i)}return r}exports.filter=filter;function reject(t,e){return filter(t,function(r){return!e(r)})}exports.reject=reject;function pick(t,e){for(var r=Object.keys(t),n={},i=0;i<r.length;i++){var a=r[i],o=t[a];e(o)&&(n[a]=o)}return n}exports.pick=pick;function has(t,e){return isObject(t)?t.hasOwnProperty(e):!1}exports.has=has;function contains(t,e){return find(t,function(r){return r===e})!==void 0}exports.contains=contains;function cloneArr(t){for(var e=[],r=0;r<t.length;r++)e.push(t[r]);return e}exports.cloneArr=cloneArr;function cloneObj(t){var e={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}exports.cloneObj=cloneObj;function find(t,e){for(var r=0;r<t.length;r++){var n=t[r];if(e.call(null,n))return n}}exports.find=find;function findAll(t,e){for(var r=[],n=0;n<t.length;n++){var i=t[n];e.call(null,i)&&r.push(i)}return r}exports.findAll=findAll;function reduce(t,e,r){for(var n=Array.isArray(t),i=n?t:values(t),a=n?[]:keys(t),o=r,s=0;s<i.length;s++)o=e.call(null,o,i[s],n?s:a[s]);return o}exports.reduce=reduce;function compact(t){return reject(t,function(e){return e==null})}exports.compact=compact;function uniq(t,e){e===void 0&&(e=function(n){return n});var r=[];return reduce(t,function(n,i){var a=e(i);return contains(r,a)?n:(r.push(a),n.concat(i))},[])}exports.uniq=uniq;function partial(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var n=[null],i=n.concat(e);return Function.bind.apply(t,i)}exports.partial=partial;function isArray(t){return Array.isArray(t)}exports.isArray=isArray;function isRegExp(t){return t instanceof RegExp}exports.isRegExp=isRegExp;function isObject(t){return t instanceof Object}exports.isObject=isObject;function every(t,e){for(var r=0;r<t.length;r++)if(!e(t[r],r))return!1;return!0}exports.every=every;function difference(t,e){return reject(t,function(r){return contains(e,r)})}exports.difference=difference;function some(t,e){for(var r=0;r<t.length;r++)if(e(t[r]))return!0;return!1}exports.some=some;function indexOf(t,e){for(var r=0;r<t.length;r++)if(t[r]===e)return r;return-1}exports.indexOf=indexOf;function sortBy(t,e){var r=cloneArr(t);return r.sort(function(n,i){return e(n)-e(i)}),r}exports.sortBy=sortBy;function zipObject(t,e){if(t.length!==e.length)throw Error(\"can't zipObject with different number of keys and values!\");for(var r={},n=0;n<t.length;n++)r[t[n]]=e[n];return r}exports.zipObject=zipObject;function assign(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];for(var n=0;n<e.length;n++)for(var i=e[n],a=keys(i),o=0;o<a.length;o++){var s=a[o];t[s]=i[s]}return t}exports.assign=assign;function assignNoOverwrite(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];for(var n=0;n<e.length;n++)for(var i=e[n],a=keys(i),o=0;o<a.length;o++){var s=a[o];has(t,s)||(t[s]=i[s])}return t}exports.assignNoOverwrite=assignNoOverwrite;function defaults(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return assignNoOverwrite.apply(void 0,__spreadArray([{}],t))}exports.defaults=defaults;function groupBy(t,e){var r={};return forEach(t,function(n){var i=e(n),a=r[i];a?a.push(n):r[i]=[n]}),r}exports.groupBy=groupBy;function merge(t,e){for(var r=cloneObj(t),n=keys(e),i=0;i<n.length;i++){var a=n[i],o=e[a];r[a]=o}return r}exports.merge=merge;function NOOP(){}exports.NOOP=NOOP;function IDENTITY(t){return t}exports.IDENTITY=IDENTITY;function packArray(t){for(var e=[],r=0;r<t.length;r++){var n=t[r];e.push(n!==void 0?n:void 0)}return e}exports.packArray=packArray;function PRINT_ERROR(t){console&&console.error&&console.error(\"Error: \"+t)}exports.PRINT_ERROR=PRINT_ERROR;function PRINT_WARNING(t){console&&console.warn&&console.warn(\"Warning: \"+t)}exports.PRINT_WARNING=PRINT_WARNING;function isES2015MapSupported(){return typeof Map==\"function\"}exports.isES2015MapSupported=isES2015MapSupported;function peek(t){return t[t.length-1]}exports.peek=peek;function timer(t){var e=new Date().getTime(),r=t(),n=new Date().getTime(),i=n-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=R((sn,St)=>{(function(t,e){typeof define==\"function\"&&define.amd?define([],e):typeof St==\"object\"&&St.exports?St.exports=e():t.regexpToAst=e()})(typeof self!=\"undefined\"?self:sn,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(u){this.idx=u.idx,this.input=u.input,this.groupIdx=u.groupIdx},t.prototype.pattern=function(u){this.idx=0,this.input=u,this.groupIdx=0,this.consumeChar(\"/\");var d=this.disjunction();this.consumeChar(\"/\");for(var A={type:\"Flags\",loc:{begin:this.idx,end:u.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case\"g\":o(A,\"global\");break;case\"i\":o(A,\"ignoreCase\");break;case\"m\":o(A,\"multiLine\");break;case\"u\":o(A,\"unicode\");break;case\"y\":o(A,\"sticky\");break}if(this.idx!==this.input.length)throw Error(\"Redundant input: \"+this.input.substring(this.idx));return{type:\"Pattern\",flags:A,value:d,loc:this.loc(0)}},t.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)}},t.prototype.alternative=function(){for(var u=[],d=this.idx;this.isTerm();)u.push(this.term());return{type:\"Alternative\",value:u,loc:this.loc(d)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.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 A=this.disjunction();return this.consumeChar(\")\"),{type:d,value:A,loc:this.loc(u)}}c()},t.prototype.quantifier=function(u){var d,A=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 g;this.isDigit()?(g=this.integerIncludingZero(),d={atLeast:_,atMost:g}):d={atLeast:_,atMost:Infinity},this.consumeChar(\"}\");break}if(u===!0&&d===void 0)return;s(d);break}if(!(u===!0&&d===void 0))return s(d),this.peekChar(0)===\"?\"?(this.consumeChar(\"?\"),d.greedy=!1):d.greedy=!0,d.type=\"Quantifier\",d.loc=this.loc(A),d},t.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},t.prototype.dotAll=function(){return this.consumeChar(\".\"),{type:\"Set\",complement:!0,value:[i(`\n`),i(\"\\r\"),i(\"\\u2028\"),i(\"\\u2029\")]}},t.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()}},t.prototype.decimalEscapeAtom=function(){var u=this.positiveInteger();return{type:\"GroupBackReference\",value:u}},t.prototype.characterClassEscape=function(){var u,d=!1;switch(this.popChar()){case\"d\":u=p;break;case\"D\":u=p,d=!0;break;case\"s\":u=m;break;case\"S\":u=m,d=!0;break;case\"w\":u=l;break;case\"W\":u=l,d=!0;break}return s(u),{type:\"Set\",value:u,complement:d}},t.prototype.controlEscapeAtom=function(){var u;switch(this.popChar()){case\"f\":u=i(\"\\f\");break;case\"n\":u=i(`\n`);break;case\"r\":u=i(\"\\r\");break;case\"t\":u=i(\"\t\");break;case\"v\":u=i(\"\\v\");break}return s(u),{type:\"Character\",value:u}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar(\"c\");var u=this.popChar();if(/[a-zA-Z]/.test(u)===!1)throw Error(\"Invalid \");var d=u.toUpperCase().charCodeAt(0)-64;return{type:\"Character\",value:d}},t.prototype.nulCharacterAtom=function(){return this.consumeChar(\"0\"),{type:\"Character\",value:i(\"\\0\")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar(\"x\"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar(\"u\"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var u=this.popChar();return{type:\"Character\",value:i(u)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case`\n`:case\"\\r\":case\"\\u2028\":case\"\\u2029\":case\"\\\\\":case\"]\":throw Error(\"TBD\");default:var u=this.popChar();return{type:\"Character\",value:i(u)}}},t.prototype.characterClass=function(){var u=[],d=!1;for(this.consumeChar(\"[\"),this.peekChar(0)===\"^\"&&(this.consumeChar(\"^\"),d=!0);this.isClassAtom();){var A=this.classAtom(),_=A.type===\"Character\";if(_&&this.isRangeDash()){this.consumeChar(\"-\");var g=this.classAtom(),y=g.type===\"Character\";if(y){if(g.value<A.value)throw Error(\"Range out of order in character class\");u.push({from:A.value,to:g.value})}else a(A.value,u),u.push(i(\"-\")),a(g.value,u)}else a(A.value,u)}return this.consumeChar(\"]\"),{type:\"Set\",complement:d,value:u}},t.prototype.classAtom=function(){switch(this.peekChar()){case\"]\":case`\n`:case\"\\r\":case\"\\u2028\":case\"\\u2029\":throw Error(\"TBD\");case\"\\\\\":return this.classEscape();default:return this.classPatternCharacterAtom()}},t.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()}},t.prototype.group=function(){var u=!0;switch(this.consumeChar(\"(\"),this.peekChar(0)){case\"?\":this.consumeChar(\"?\"),this.consumeChar(\":\"),u=!1;break;default:this.groupIdx++;break}var d=this.disjunction();this.consumeChar(\")\");var A={type:\"Group\",capturing:u,value:d};return u&&(A.idx=this.groupIdx),A},t.prototype.positiveInteger=function(){var u=this.popChar();if(n.test(u)===!1)throw Error(\"Expecting a positive integer\");for(;r.test(this.peekChar(0));)u+=this.popChar();return parseInt(u,10)},t.prototype.integerIncludingZero=function(){var u=this.popChar();if(r.test(u)===!1)throw Error(\"Expecting an integer\");for(;r.test(this.peekChar(0));)u+=this.popChar();return parseInt(u,10)},t.prototype.patternCharacter=function(){var u=this.popChar();switch(u){case`\n`: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)}}},t.prototype.isRegExpFlag=function(){switch(this.peekChar(0)){case\"g\":case\"i\":case\"m\":case\"u\":case\"y\":return!0;default:return!1}},t.prototype.isRangeDash=function(){return this.peekChar()===\"-\"&&this.isClassAtom(1)},t.prototype.isDigit=function(){return r.test(this.peekChar(0))},t.prototype.isClassAtom=function(u){switch(u===void 0&&(u=0),this.peekChar(u)){case\"]\":case`\n`:case\"\\r\":case\"\\u2028\":case\"\\u2029\":return!1;default:return!0}},t.prototype.isTerm=function(){return this.isAtom()||this.isAssertion()},t.prototype.isAtom=function(){if(this.isPatternCharacter())return!0;switch(this.peekChar(0)){case\".\":case\"\\\\\":case\"[\":case\"(\":return!0;default:return!1}},t.prototype.isAssertion=function(){switch(this.peekChar(0)){case\"^\":case\"$\":return!0;case\"\\\\\":switch(this.peekChar(1)){case\"b\":case\"B\":return!0;default:return!1}case\"(\":return this.peekChar(1)===\"?\"&&(this.peekChar(2)===\"=\"||this.peekChar(2)===\"!\");default:return!1}},t.prototype.isQuantifier=function(){var u=this.saveState();try{return this.quantifier(!0)!==void 0}catch(d){return!1}finally{this.restoreState(u)}},t.prototype.isPatternCharacter=function(){switch(this.peekChar()){case\"^\":case\"$\":case\"\\\\\":case\".\":case\"*\":case\"+\":case\"?\":case\"(\":case\")\":case\"[\":case\"|\":case\"/\":case`\n`:case\"\\r\":case\"\\u2028\":case\"\\u2029\":return!1;default:return!0}},t.prototype.parseHexDigits=function(u){for(var d=\"\",A=0;A<u;A++){var _=this.popChar();if(e.test(_)===!1)throw Error(\"Expecting a HexDecimal digits\");d+=_}var g=parseInt(d,16);return{type:\"Character\",value:g}},t.prototype.peekChar=function(u){return u===void 0&&(u=0),this.input[this.idx+u]},t.prototype.popChar=function(){var u=this.peekChar(0);return this.consumeChar(),u},t.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++},t.prototype.loc=function(u){return{begin:u,end:this.idx}};var e=/[0-9a-fA-F]/,r=/[0-9]/,n=/[1-9]/;function i(u){return u.charCodeAt(0)}function a(u,d){u.length!==void 0?u.forEach(function(A){d.push(A)}):d.push(u)}function o(u,d){if(u[d]===!0)throw\"duplicate flag \"+d;u[d]=!0}function s(u){if(u===void 0)throw Error(\"Internal Error - Should never get here!\")}function c(){throw Error(\"Internal Error - Should never get here!\")}var f,p=[];for(f=i(\"0\");f<=i(\"9\");f++)p.push(f);var l=[i(\"_\")].concat(p);for(f=i(\"a\");f<=i(\"z\");f++)l.push(f);for(f=i(\"A\");f<=i(\"Z\");f++)l.push(f);var m=[i(\" \"),i(\"\\f\"),i(`\n`),i(\"\\r\"),i(\"\t\"),i(\"\\v\"),i(\"\t\"),i(\"\\xA0\"),i(\"\\u1680\"),i(\"\\u2000\"),i(\"\\u2001\"),i(\"\\u2002\"),i(\"\\u2003\"),i(\"\\u2004\"),i(\"\\u2005\"),i(\"\\u2006\"),i(\"\\u2007\"),i(\"\\u2008\"),i(\"\\u2009\"),i(\"\\u200A\"),i(\"\\u2028\"),i(\"\\u2029\"),i(\"\\u202F\"),i(\"\\u205F\"),i(\"\\u3000\"),i(\"\\uFEFF\")];function v(){}return v.prototype.visitChildren=function(u){for(var d in u){var A=u[d];u.hasOwnProperty(d)&&(A.type!==void 0?this.visit(A):Array.isArray(A)&&A.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:t,BaseRegExpVisitor:v,VERSION:\"0.5.0\"}})});var Lt=R(He=>{\"use strict\";Object.defineProperty(He,\"__esModule\",{value:!0});He.clearRegExpParserCache=He.getRegExpAst=void 0;var Ga=xt(),Ct={},Wa=new Ga.RegExpParser;function Ba(t){var e=t.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=R(re=>{\"use strict\";var ja=re&&re.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(re,\"__esModule\",{value:!0});re.canMatchCharCode=re.firstCharOptimizedIndices=re.getOptimizedStartCodesIndices=re.failedOptimizationPrefixMsg=void 0;var un=xt(),pe=k(),cn=Lt(),Ce=Tr(),ln=\"Complement Sets are not supported for first char optimization\";re.failedOptimizationPrefixMsg=`Unable to use \"first char\" lexer optimizations:\n`;function Va(t,e){e===void 0&&(e=!1);try{var r=cn.getRegExpAst(t),n=Mt(r.value,{},r.flags.ignoreCase);return n}catch(a){if(a.message===ln)e&&pe.PRINT_WARNING(\"\"+re.failedOptimizationPrefixMsg+(\"\tUnable to optimize: < \"+t.toString()+` >\n`)+`\tComplement Sets cannot be automatically optimized.\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var i=\"\";e&&(i=`\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),pe.PRINT_ERROR(re.failedOptimizationPrefixMsg+`\n`+(\"\tFailed parsing: < \"+t.toString()+` >\n`)+(\"\tUsing the regexp-to-ast library version: \"+un.VERSION+`\n`)+\"\tPlease open an issue at: https://github.com/bd82/regexp-to-ast/issues\"+i)}}return[]}re.getOptimizedStartCodesIndices=Va;function Mt(t,e,r){switch(t.type){case\"Disjunction\":for(var n=0;n<t.value.length;n++)Mt(t.value[n],e,r);break;case\"Alternative\":for(var i=t.value,n=0;n<i.length;n++){var a=i[n];switch(a.type){case\"EndAnchor\":case\"GroupBackReference\":case\"Lookahead\":case\"NegativeLookahead\":case\"StartAnchor\":case\"WordBoundary\":case\"NonWordBoundary\":continue}var o=a;switch(o.type){case\"Character\":bt(o.value,e,r);break;case\"Set\":if(o.complement===!0)throw Error(ln);pe.forEach(o.value,function(f){if(typeof f==\"number\")bt(f,e,r);else{var p=f;if(r===!0)for(var l=p.from;l<=p.to;l++)bt(l,e,r);else{for(var l=p.from;l<=p.to&&l<Ce.minOptimizationVal;l++)bt(l,e,r);if(p.to>=Ce.minOptimizationVal)for(var m=p.from>=Ce.minOptimizationVal?p.from:Ce.minOptimizationVal,v=p.to,u=Ce.charCodeToOptimizedIndex(m),d=Ce.charCodeToOptimizedIndex(v),A=u;A<=d;A++)e[A]=A}}});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)===!1||o.type!==\"Group\"&&s===!1)break}break;default:throw Error(\"non exhaustive match!\")}return pe.values(e)}re.firstCharOptimizedIndices=Mt;function bt(t,e,r){var n=Ce.charCodeToOptimizedIndex(t);e[n]=n,r===!0&&Ka(t,e)}function Ka(t,e){var r=String.fromCharCode(t),n=r.toUpperCase();if(n!==r){var i=Ce.charCodeToOptimizedIndex(n.charCodeAt(0));e[i]=i}else{var a=r.toLowerCase();if(a!==r){var i=Ce.charCodeToOptimizedIndex(a.charCodeAt(0));e[i]=i}}}function fn(t,e){return pe.find(t.value,function(r){if(typeof r==\"number\")return pe.contains(e,r);var n=r;return pe.find(e,function(i){return n.from<=i&&i<=n.to})!==void 0})}function yr(t){return t.quantifier&&t.quantifier.atLeast===0?!0:t.value?pe.isArray(t.value)?pe.every(t.value,yr):yr(t.value):!1}var za=function(t){ja(e,t);function e(r){var n=t.call(this)||this;return n.targetCharCodes=r,n.found=!1,n}return e.prototype.visitChildren=function(r){if(this.found!==!0){switch(r.type){case\"Lookahead\":this.visitLookahead(r);return;case\"NegativeLookahead\":this.visitNegativeLookahead(r);return}t.prototype.visitChildren.call(this,r)}},e.prototype.visitCharacter=function(r){pe.contains(this.targetCharCodes,r.value)&&(this.found=!0)},e.prototype.visitSet=function(r){r.complement?fn(r,this.targetCharCodes)===void 0&&(this.found=!0):fn(r,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(un.BaseRegExpVisitor);function Ha(t,e){if(e instanceof RegExp){var r=cn.getRegExpAst(e),n=new za(t);return n.visit(r),n.found}else return pe.find(e,function(i){return pe.contains(t,i.charCodeAt(0))})!==void 0}re.canMatchCharCode=Ha});var Tr=R(T=>{\"use strict\";var hn=T&&T.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(T,\"__esModule\",{value:!0});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(),F=ft(),h=k(),Ye=pn(),vn=Lt(),Ae=\"PATTERN\";T.DEFAULT_MODE=\"defaultMode\";T.MODES=\"modes\";T.SUPPORT_STICKY=typeof new RegExp(\"(?:)\").sticky==\"boolean\";function Ya(){T.SUPPORT_STICKY=!1}T.disableSticky=Ya;function Xa(){T.SUPPORT_STICKY=!0}T.enableSticky=Xa;function Za(t,e){e=h.defaults(e,{useSticky:T.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:\"full\",lineTerminatorCharacters:[\"\\r\",`\n`],tracer:function(g,y){return y()}});var r=e.tracer;r(\"initCharCodeToOptimizedIndexMap\",function(){$a()});var n;r(\"Reject Lexer.NA\",function(){n=h.reject(t,function(g){return g[Ae]===F.Lexer.NA})});var i=!1,a;r(\"Transform Patterns\",function(){i=!1,a=h.map(n,function(g){var y=g[Ae];if(h.isRegExp(y)){var b=y.source;return b.length===1&&b!==\"^\"&&b!==\"$\"&&b!==\".\"&&!y.ignoreCase?b:b.length===2&&b[0]===\"\\\\\"&&!h.contains([\"d\",\"D\",\"s\",\"S\",\"t\",\"r\",\"n\",\"t\",\"0\",\"c\",\"b\",\"B\",\"f\",\"v\",\"w\",\"W\"],b[1])?b[1]:e.useSticky?gr(y):_r(y)}else{if(h.isFunction(y))return i=!0,{exec:y};if(h.has(y,\"exec\"))return i=!0,y;if(typeof y==\"string\"){if(y.length===1)return y;var L=y.replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\"),se=new RegExp(L);return e.useSticky?gr(se):_r(se)}else throw Error(\"non exhaustive match\")}})});var o,s,c,f,p;r(\"misc mapping\",function(){o=h.map(n,function(g){return g.tokenTypeIdx}),s=h.map(n,function(g){var y=g.GROUP;if(y!==F.Lexer.SKIPPED){if(h.isString(y))return y;if(h.isUndefined(y))return!1;throw Error(\"non exhaustive match\")}}),c=h.map(n,function(g){var y=g.LONGER_ALT;if(y){var b=h.indexOf(n,y);return b}}),f=h.map(n,function(g){return g.PUSH_MODE}),p=h.map(n,function(g){return h.has(g,\"POP_MODE\")})});var l;r(\"Line Terminator Handling\",function(){var g=Tn(e.lineTerminatorCharacters);l=h.map(n,function(y){return!1}),e.positionTracking!==\"onlyOffset\"&&(l=h.map(n,function(y){if(h.has(y,\"LINE_BREAKS\"))return y.LINE_BREAKS;if(En(y,g)===!1)return Ye.canMatchCharCode(g,y.PATTERN)}))});var m,v,u,d;r(\"Misc Mapping #2\",function(){m=h.map(n,Ar),v=h.map(a,mn),u=h.reduce(n,function(g,y){var b=y.GROUP;return h.isString(b)&&b!==F.Lexer.SKIPPED&&(g[b]=[]),g},{}),d=h.map(a,function(g,y){return{pattern:a[y],longerAlt:c[y],canLineTerminator:l[y],isCustom:m[y],short:v[y],group:s[y],push:f[y],pop:p[y],tokenTypeIdx:o[y],tokenType:n[y]}})});var A=!0,_=[];return e.safeMode||r(\"First Char Optimization\",function(){_=h.reduce(n,function(g,y,b){if(typeof y.PATTERN==\"string\"){var L=y.PATTERN.charCodeAt(0),se=Or(L);Rr(g,se,d[b])}else if(h.isArray(y.START_CHARS_HINT)){var fe;h.forEach(y.START_CHARS_HINT,function(ue){var Q=typeof ue==\"string\"?ue.charCodeAt(0):ue,te=Or(Q);fe!==te&&(fe=te,Rr(g,te,d[b]))})}else if(h.isRegExp(y.PATTERN))if(y.PATTERN.unicode)A=!1,e.ensureOptimizations&&h.PRINT_ERROR(\"\"+Ye.failedOptimizationPrefixMsg+(\"\tUnable to analyze < \"+y.PATTERN.toString()+` > pattern.\n`)+`\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var Z=Ye.getOptimizedStartCodesIndices(y.PATTERN,e.ensureOptimizations);h.isEmpty(Z)&&(A=!1),h.forEach(Z,function(ue){Rr(g,ue,d[b])})}else e.ensureOptimizations&&h.PRINT_ERROR(\"\"+Ye.failedOptimizationPrefixMsg+(\"\tTokenType: <\"+y.name+`> is using a custom token pattern without providing <start_chars_hint> parameter.\n`)+`\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),A=!1;return g},[])}),r(\"ArrayPacking\",function(){_=h.packArray(_)}),{emptyGroups:u,patternIdxToConfig:d,charCodeToPatternIdxToConfig:_,hasCustom:i,canBeOptimized:A}}T.analyzeTokenTypes=Za;function Ja(t,e){var r=[],n=yn(t);r=r.concat(n.errors);var i=_n(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(Qa(a)),r=r.concat(gn(a)),r=r.concat(An(a,e)),r=r.concat(Rn(a)),r}T.validatePatterns=Ja;function Qa(t){var e=[],r=h.filter(t,function(n){return h.isRegExp(n[Ae])});return e=e.concat(On(r)),e=e.concat(In(r)),e=e.concat(kn(r)),e=e.concat(Pn(r)),e=e.concat(Nn(r)),e}function yn(t){var e=h.filter(t,function(i){return!h.has(i,Ae)}),r=h.map(e,function(i){return{message:\"Token Type: ->\"+i.name+\"<- missing static 'PATTERN' property\",type:F.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[i]}}),n=h.difference(t,e);return{errors:r,valid:n}}T.findMissingPatterns=yn;function _n(t){var e=h.filter(t,function(i){var a=i[Ae];return!h.isRegExp(a)&&!h.isFunction(a)&&!h.has(a,\"exec\")&&!h.isString(a)}),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:F.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[i]}}),n=h.difference(t,e);return{errors:r,valid:n}}T.findInvalidPatterns=_n;var eo=/[^\\\\][\\$]/;function On(t){var e=function(i){hn(a,i);function a(){var o=i!==null&&i.apply(this,arguments)||this;return o.found=!1,o}return a.prototype.visitEndAnchor=function(o){this.found=!0},a}(dn.BaseRegExpVisitor),r=h.filter(t,function(i){var a=i[Ae];try{var o=vn.getRegExpAst(a),s=new e;return s.visit(o),s.found}catch(c){return eo.test(a.source)}}),n=h.map(r,function(i){return{message:`Unexpected RegExp Anchor Error:\n\tToken Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$'\n\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.`,type:F.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[i]}});return n}T.findEndOfInputAnchor=On;function Nn(t){var e=h.filter(t,function(n){var i=n[Ae];return i.test(\"\")}),r=h.map(e,function(n){return{message:\"Token Type: ->\"+n.name+\"<- static 'PATTERN' must not match an empty string\",type:F.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[n]}});return r}T.findEmptyMatchRegExps=Nn;var to=/[^\\\\[][\\^]|^\\^/;function In(t){var e=function(i){hn(a,i);function a(){var o=i!==null&&i.apply(this,arguments)||this;return o.found=!1,o}return a.prototype.visitStartAnchor=function(o){this.found=!0},a}(dn.BaseRegExpVisitor),r=h.filter(t,function(i){var a=i[Ae];try{var o=vn.getRegExpAst(a),s=new e;return s.visit(o),s.found}catch(c){return to.test(a.source)}}),n=h.map(r,function(i){return{message:`Unexpected RegExp Anchor Error:\n\tToken Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^'\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.`,type:F.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[i]}});return n}T.findStartOfInputAnchor=In;function kn(t){var e=h.filter(t,function(n){var i=n[Ae];return i instanceof RegExp&&(i.multiline||i.global)}),r=h.map(e,function(n){return{message:\"Token Type: ->\"+n.name+\"<- static 'PATTERN' may NOT contain global('g') or multiline('m')\",type:F.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}});return r}T.findUnsupportedFlags=kn;function Pn(t){var e=[],r=h.map(t,function(a){return h.reduce(t,function(o,s){return a.PATTERN.source===s.PATTERN.source&&!h.contains(e,s)&&s.PATTERN!==F.Lexer.NA&&(e.push(s),o.push(s)),o},[])});r=h.compact(r);var n=h.filter(r,function(a){return a.length>1}),i=h.map(n,function(a){var o=h.map(a,function(c){return c.name}),s=h.first(a).PATTERN;return{message:\"The same RegExp pattern ->\"+s+\"<-\"+(\"has been used in all of the following Token Types: \"+o.join(\", \")+\" <-\"),type:F.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}});return i}T.findDuplicatePatterns=Pn;function gn(t){var e=h.filter(t,function(n){if(!h.has(n,\"GROUP\"))return!1;var i=n.GROUP;return i!==F.Lexer.SKIPPED&&i!==F.Lexer.NA&&!h.isString(i)}),r=h.map(e,function(n){return{message:\"Token Type: ->\"+n.name+\"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String\",type:F.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}});return r}T.findInvalidGroupType=gn;function An(t,e){var r=h.filter(t,function(i){return i.PUSH_MODE!==void 0&&!h.contains(e,i.PUSH_MODE)}),n=h.map(r,function(i){var a=\"Token Type: ->\"+i.name+\"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->\"+i.PUSH_MODE+\"<-which does not exist\";return{message:a,type:F.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}});return n}T.findModesThatDoNotExist=An;function Rn(t){var e=[],r=h.reduce(t,function(n,i,a){var o=i.PATTERN;return o===F.Lexer.NA||(h.isString(o)?n.push({str:o,idx:a,tokenType:i}):h.isRegExp(o)&&no(o)&&n.push({str:o.source,idx:a,tokenType:i})),n},[]);return h.forEach(t,function(n,i){h.forEach(r,function(a){var o=a.str,s=a.idx,c=a.tokenType;if(i<s&&ro(o,n.PATTERN)){var f=\"Token: ->\"+c.name+`<- can never be matched.\n`+(\"Because it appears AFTER the Token Type ->\"+n.name+\"<-\")+`in the lexer's definition.\nSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:f,type:F.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[n,c]})}})}),e}T.findUnreachablePatterns=Rn;function ro(t,e){if(h.isRegExp(e)){var r=e.exec(t);return r!==null&&r.index===0}else{if(h.isFunction(e))return e(t,0,[],{});if(h.has(e,\"exec\"))return e.exec(t,0,[],{});if(typeof e==\"string\")return e===t;throw Error(\"non exhaustive match\")}}function no(t){var e=[\".\",\"\\\\\",\"[\",\"]\",\"|\",\"^\",\"$\",\"(\",\")\",\"?\",\"*\",\"+\",\"{\"];return h.find(e,function(r){return t.source.indexOf(r)!==-1})===void 0}function _r(t){var e=t.ignoreCase?\"i\":\"\";return new RegExp(\"^(?:\"+t.source+\")\",e)}T.addStartOfInput=_r;function gr(t){var e=t.ignoreCase?\"iy\":\"y\";return new RegExp(\"\"+t.source,e)}T.addStickyFlag=gr;function io(t,e,r){var n=[];return h.has(t,T.DEFAULT_MODE)||n.push({message:\"A MultiMode Lexer cannot be initialized without a <\"+T.DEFAULT_MODE+`> property in its definition\n`,type:F.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),h.has(t,T.MODES)||n.push({message:\"A MultiMode Lexer cannot be initialized without a <\"+T.MODES+`> property in its definition\n`,type:F.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),h.has(t,T.MODES)&&h.has(t,T.DEFAULT_MODE)&&!h.has(t.modes,t.defaultMode)&&n.push({message:\"A MultiMode Lexer cannot be initialized with a \"+T.DEFAULT_MODE+\": <\"+t.defaultMode+`>which does not exist\n`,type:F.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),h.has(t,T.MODES)&&h.forEach(t.modes,function(i,a){h.forEach(i,function(o,s){h.isUndefined(o)&&n.push({message:\"A Lexer cannot be initialized using an undefined Token Type. Mode:\"+(\"<\"+a+\"> at index: <\"+s+`>\n`),type:F.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),n}T.performRuntimeChecks=io;function ao(t,e,r){var n=[],i=!1,a=h.compact(h.flatten(h.mapValues(t.modes,function(c){return c}))),o=h.reject(a,function(c){return c[Ae]===F.Lexer.NA}),s=Tn(r);return e&&h.forEach(o,function(c){var f=En(c,s);if(f!==!1){var p=Sn(c,f),l={message:p,type:f.issue,tokenType:c};n.push(l)}else h.has(c,\"LINE_BREAKS\")?c.LINE_BREAKS===!0&&(i=!0):Ye.canMatchCharCode(s,c.PATTERN)&&(i=!0)}),e&&!i&&n.push({message:`Warning: No LINE_BREAKS Found.\n\tThis Lexer has been defined to track line and column information,\n\tBut none of the Token Types can be identified as matching a line terminator.\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS\n\tfor details.`,type:F.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),n}T.performWarningRuntimeChecks=ao;function oo(t){var e={},r=h.keys(t);return h.forEach(r,function(n){var i=t[n];if(h.isArray(i))e[n]=[];else throw Error(\"non exhaustive match\")}),e}T.cloneEmptyGroups=oo;function Ar(t){var e=t.PATTERN;if(h.isRegExp(e))return!1;if(h.isFunction(e))return!0;if(h.has(e,\"exec\"))return!0;if(h.isString(e))return!1;throw Error(\"non exhaustive match\")}T.isCustomPattern=Ar;function mn(t){return h.isString(t)&&t.length===1?t.charCodeAt(0):!1}T.isShortPattern=mn;T.LineTerminatorOptimizedTester={test:function(t){for(var e=t.length,r=this.lastIndex;r<e;r++){var n=t.charCodeAt(r);if(n===10)return this.lastIndex=r+1,!0;if(n===13)return t.charCodeAt(r+1)===10?this.lastIndex=r+2:this.lastIndex=r+1,!0}return!1},lastIndex:0};function En(t,e){if(h.has(t,\"LINE_BREAKS\"))return!1;if(h.isRegExp(t.PATTERN)){try{Ye.canMatchCharCode(e,t.PATTERN)}catch(r){return{issue:F.LexerDefinitionErrorType.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(h.isString(t.PATTERN))return!1;if(Ar(t))return{issue:F.LexerDefinitionErrorType.CUSTOM_LINE_BREAK};throw Error(\"non exhaustive match\")}}function Sn(t,e){if(e.issue===F.LexerDefinitionErrorType.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern.\n`+(\"\tThe problem is in the <\"+t.name+`> Token Type\n`)+(\"\t Root cause: \"+e.errMsg+`.\n`)+\"\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR\";if(e.issue===F.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the <line_breaks> option.\n`+(\"\tThe problem is in the <\"+t.name+`> Token Type\n`)+\"\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK\";throw Error(\"non exhaustive match\")}T.buildLineBreakIssueMessage=Sn;function Tn(t){var e=h.map(t,function(r){return h.isString(r)&&r.length>0?r.charCodeAt(0):r});return e}function Rr(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}T.minOptimizationVal=256;var Ft=[];function Or(t){return t<T.minOptimizationVal?t:Ft[t]}T.charCodeToOptimizedIndex=Or;function $a(){if(h.isEmpty(Ft)){Ft=new Array(65536);for(var t=0;t<65536;t++)Ft[t]=t>255?255+~~(t/255):t}}});var Xe=R(N=>{\"use strict\";Object.defineProperty(N,\"__esModule\",{value:!0});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(t,e){var r=t.tokenTypeIdx;return r===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[r]===!0}N.tokenStructuredMatcher=so;function uo(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}N.tokenStructuredMatcherNoCategories=uo;N.tokenShortNameIdx=1;N.tokenIdxToClass={};function co(t){var e=xn(t);Cn(e),Mn(e),Ln(e),V.forEach(e,function(r){r.isParent=r.categoryMatches.length>0})}N.augmentTokenTypes=co;function xn(t){for(var e=V.cloneArr(t),r=t,n=!0;n;){r=V.compact(V.flatten(V.map(r,function(a){return a.CATEGORIES})));var i=V.difference(r,e);e=e.concat(i),V.isEmpty(i)?n=!1:r=i}return e}N.expandCategories=xn;function Cn(t){V.forEach(t,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(t){V.forEach(t,function(e){e.categoryMatches=[],V.forEach(e.categoryMatchesMap,function(r,n){e.categoryMatches.push(N.tokenIdxToClass[n].tokenTypeIdx)})})}N.assignCategoriesTokensProp=Ln;function Mn(t){V.forEach(t,function(e){Ir([],e)})}N.assignCategoriesMapProp=Mn;function Ir(t,e){V.forEach(t,function(r){e.categoryMatchesMap[r.tokenTypeIdx]=!0}),V.forEach(e.CATEGORIES,function(r){var n=t.concat(e);V.contains(n,r)||Ir(n,r)})}N.singleAssignCategoriesToksMap=Ir;function bn(t){return V.has(t,\"tokenTypeIdx\")}N.hasShortKeyProperty=bn;function Nr(t){return V.has(t,\"CATEGORIES\")}N.hasCategoriesProperty=Nr;function Fn(t){return V.has(t,\"categoryMatches\")}N.hasExtendingTokensTypesProperty=Fn;function wn(t){return V.has(t,\"categoryMatchesMap\")}N.hasExtendingTokensTypesMapProperty=wn;function lo(t){return V.has(t,\"tokenTypeIdx\")}N.isTokenType=lo});var kr=R(wt=>{\"use strict\";Object.defineProperty(wt,\"__esModule\",{value:!0});wt.defaultLexerErrorProvider=void 0;wt.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(t){return\"Unable to pop Lexer Mode after encountering Token ->\"+t.image+\"<- The Mode Stack is empty\"},buildUnexpectedCharactersMessage:function(t,e,r,n,i){return\"unexpected character: ->\"+t.charAt(e)+\"<- at offset: \"+e+\",\"+(\" skipped \"+r+\" characters.\")}}});var ft=R(qe=>{\"use strict\";Object.defineProperty(qe,\"__esModule\",{value:!0});qe.Lexer=qe.LexerDefinitionErrorType=void 0;var Ee=Tr(),w=k(),fo=Xe(),po=kr(),ho=Lt(),vo;(function(t){t[t.MISSING_PATTERN=0]=\"MISSING_PATTERN\",t[t.INVALID_PATTERN=1]=\"INVALID_PATTERN\",t[t.EOI_ANCHOR_FOUND=2]=\"EOI_ANCHOR_FOUND\",t[t.UNSUPPORTED_FLAGS_FOUND=3]=\"UNSUPPORTED_FLAGS_FOUND\",t[t.DUPLICATE_PATTERNS_FOUND=4]=\"DUPLICATE_PATTERNS_FOUND\",t[t.INVALID_GROUP_TYPE_FOUND=5]=\"INVALID_GROUP_TYPE_FOUND\",t[t.PUSH_MODE_DOES_NOT_EXIST=6]=\"PUSH_MODE_DOES_NOT_EXIST\",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]=\"MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]=\"MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]=\"MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]=\"LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\",t[t.SOI_ANCHOR_FOUND=11]=\"SOI_ANCHOR_FOUND\",t[t.EMPTY_MATCH_PATTERN=12]=\"EMPTY_MATCH_PATTERN\",t[t.NO_LINE_BREAKS_FLAGS=13]=\"NO_LINE_BREAKS_FLAGS\",t[t.UNREACHABLE_PATTERN=14]=\"UNREACHABLE_PATTERN\",t[t.IDENTIFY_TERMINATOR=15]=\"IDENTIFY_TERMINATOR\",t[t.CUSTOM_LINE_BREAK=16]=\"CUSTOM_LINE_BREAK\"})(vo=qe.LexerDefinitionErrorType||(qe.LexerDefinitionErrorType={}));var pt={deferDefinitionErrorsHandling:!1,positionTracking:\"full\",lineTerminatorsPattern:/\\n|\\r\\n?/g,lineTerminatorCharacters:[`\n`,\"\\r\"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:po.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(pt);var mo=function(){function t(e,r){var n=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=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof r==\"boolean\")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object.\na boolean 2nd argument is no longer supported`);this.config=w.merge(pt,r);var i=this.config.traceInitPerf;i===!0?(this.traceInitMaxIdent=Infinity,this.traceInitPerf=!0):typeof i==\"number\"&&(this.traceInitMaxIdent=i,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT(\"Lexer Constructor\",function(){var a,o=!0;n.TRACE_INIT(\"Lexer Config handling\",function(){if(n.config.lineTerminatorsPattern===pt.lineTerminatorsPattern)n.config.lineTerminatorsPattern=Ee.LineTerminatorOptimizedTester;else if(n.config.lineTerminatorCharacters===pt.lineTerminatorCharacters)throw Error(`Error: Missing <lineTerminatorCharacters> property on the Lexer config.\n\tFor 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.');n.trackStartLines=/full|onlyStart/i.test(n.config.positionTracking),n.trackEndLines=/full/i.test(n.config.positionTracking),w.isArray(e)?(a={modes:{}},a.modes[Ee.DEFAULT_MODE]=w.cloneArr(e),a[Ee.DEFAULT_MODE]=Ee.DEFAULT_MODE):(o=!1,a=w.cloneObj(e))}),n.config.skipValidations===!1&&(n.TRACE_INIT(\"performRuntimeChecks\",function(){n.lexerDefinitionErrors=n.lexerDefinitionErrors.concat(Ee.performRuntimeChecks(a,n.trackStartLines,n.config.lineTerminatorCharacters))}),n.TRACE_INIT(\"performWarningRuntimeChecks\",function(){n.lexerDefinitionWarning=n.lexerDefinitionWarning.concat(Ee.performWarningRuntimeChecks(a,n.trackStartLines,n.config.lineTerminatorCharacters))})),a.modes=a.modes?a.modes:{},w.forEach(a.modes,function(p,l){a.modes[l]=w.reject(p,function(m){return w.isUndefined(m)})});var s=w.keys(a.modes);if(w.forEach(a.modes,function(p,l){n.TRACE_INIT(\"Mode: <\"+l+\"> processing\",function(){if(n.modes.push(l),n.config.skipValidations===!1&&n.TRACE_INIT(\"validatePatterns\",function(){n.lexerDefinitionErrors=n.lexerDefinitionErrors.concat(Ee.validatePatterns(p,s))}),w.isEmpty(n.lexerDefinitionErrors)){fo.augmentTokenTypes(p);var m;n.TRACE_INIT(\"analyzeTokenTypes\",function(){m=Ee.analyzeTokenTypes(p,{lineTerminatorCharacters:n.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:n.TRACE_INIT.bind(n)})}),n.patternIdxToConfig[l]=m.patternIdxToConfig,n.charCodeToPatternIdxToConfig[l]=m.charCodeToPatternIdxToConfig,n.emptyGroups=w.merge(n.emptyGroups,m.emptyGroups),n.hasCustom=m.hasCustom||n.hasCustom,n.canModeBeOptimized[l]=m.canBeOptimized}})}),n.defaultMode=a.defaultMode,!w.isEmpty(n.lexerDefinitionErrors)&&!n.config.deferDefinitionErrorsHandling){var c=w.map(n.lexerDefinitionErrors,function(p){return p.message}),f=c.join(`-----------------------\n`);throw new Error(`Errors detected in definition of Lexer:\n`+f)}w.forEach(n.lexerDefinitionWarning,function(p){w.PRINT_WARNING(p.message)}),n.TRACE_INIT(\"Choosing sub-methods implementations\",function(){if(Ee.SUPPORT_STICKY?(n.chopInput=w.IDENTITY,n.match=n.matchWithTest):(n.updateLastIndex=w.NOOP,n.match=n.matchWithExec),o&&(n.handleModes=w.NOOP),n.trackStartLines===!1&&(n.computeNewColumn=w.IDENTITY),n.trackEndLines===!1&&(n.updateTokenEndLineColumnLocation=w.NOOP),/full/i.test(n.config.positionTracking))n.createTokenInstance=n.createFullToken;else if(/onlyStart/i.test(n.config.positionTracking))n.createTokenInstance=n.createStartOnlyToken;else if(/onlyOffset/i.test(n.config.positionTracking))n.createTokenInstance=n.createOffsetOnlyToken;else throw Error('Invalid <positionTracking> config option: \"'+n.config.positionTracking+'\"');n.hasCustom?(n.addToken=n.addTokenUsingPush,n.handlePayload=n.handlePayloadWithCustom):(n.addToken=n.addTokenUsingMemberAccess,n.handlePayload=n.handlePayloadNoCustom)}),n.TRACE_INIT(\"Failed Optimization Warnings\",function(){var p=w.reduce(n.canModeBeOptimized,function(l,m,v){return m===!1&&l.push(v),l},[]);if(r.ensureOptimizations&&!w.isEmpty(p))throw Error(\"Lexer Modes: < \"+p.join(\", \")+` > cannot be optimized.\n\t Disable the \"ensureOptimizations\" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\n\t Or inspect the console log for details on how to resolve these issues.`)}),n.TRACE_INIT(\"clearRegExpParserCache\",function(){ho.clearRegExpParserCache()}),n.TRACE_INIT(\"toFastProperties\",function(){w.toFastProperties(n)})})}return t.prototype.tokenize=function(e,r){if(r===void 0&&(r=this.defaultMode),!w.isEmpty(this.lexerDefinitionErrors)){var n=w.map(this.lexerDefinitionErrors,function(o){return o.message}),i=n.join(`-----------------------\n`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer:\n`+i)}var a=this.tokenizeInternal(e,r);return a},t.prototype.tokenizeInternal=function(e,r){var n=this,i,a,o,s,c,f,p,l,m,v,u,d,A,_,g,y=e,b=y.length,L=0,se=0,fe=this.hasCustom?0:Math.floor(e.length/10),Z=new Array(fe),ue=[],Q=this.trackStartLines?1:void 0,te=this.trackStartLines?1:void 0,xe=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=n.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=n.patternIdxToConfig[ze],ot=n.charCodeToPatternIdxToConfig[ze],Ke=we.length;var Ua=n.canModeBeOptimized[ze]&&n.config.safeMode===!1;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===!1;ot&<?st=en:st=Jr}tn.call(this,r);for(var me;L<b;){c=null;var rn=y.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!==!1?rn===ut&&(c=De):me.isCustom===!0?(g=De.exec(y,L,Z,xe),g!==null?(c=g[0],g.payload!==void 0&&(f=g.payload)):c=null):(this.updateLastIndex(De,L),c=this.match(De,e,L)),c!==null){if(s=me.longerAlt,s!==void 0){var fr=we[s],pr=fr.pattern;p=null,fr.isCustom===!0?(g=pr.exec(y,L,Z,xe),g!==null?(o=g[0],g.payload!==void 0&&(p=g.payload)):o=null):(this.updateLastIndex(pr,L),o=this.match(pr,e,L)),o&&o.length>c.length&&(c=o,f=p,me=fr)}break}}if(c!==null){if(l=c.length,m=me.group,m!==void 0&&(v=me.tokenTypeIdx,u=this.createTokenInstance(c,L,v,me.tokenType,Q,te,l),this.handlePayload(u,f),m===!1?se=this.addToken(Z,se,u):xe[m].push(u)),e=this.chopInput(e,l),L=L+l,te=this.computeNewColumn(te,l),it===!0&&me.canLineTerminator===!0){var kt=0,hr=void 0,dr=void 0;at.lastIndex=0;do hr=at.test(c),hr===!0&&(dr=at.lastIndex-1,kt++);while(hr===!0);kt!==0&&(Q=Q+kt,te=l-dr,this.updateTokenEndLineColumnLocation(u,m,dr,kt,Q,te,l))}this.handleModes(me,wa,tn,u)}else{for(var vr=L,an=Q,on=te,ct=!1;!ct&&L<b;)for(A=y.charCodeAt(L),e=this.chopInput(e,1),L++,a=0;a<Ke;a++){var mr=we[a],De=mr.pattern,ut=mr.short;if(ut!==!1?y.charCodeAt(L)===ut&&(ct=!0):mr.isCustom===!0?ct=De.exec(y,L,Z,xe)!==null:(this.updateLastIndex(De,L),ct=De.exec(e)!==null),ct===!0)break}d=L-vr,_=this.config.errorMessageProvider.buildUnexpectedCharactersMessage(y,vr,d,an,on),ue.push({offset:vr,line:an,column:on,length:d,message:_})}}return this.hasCustom||(Z.length=se),{tokens:Z,groups:xe,errors:ue}},t.prototype.handleModes=function(e,r,n,i){if(e.pop===!0){var a=e.push;r(i),a!==void 0&&n.call(this,a)}else e.push!==void 0&&n.call(this,e.push)},t.prototype.chopInput=function(e,r){return e.substring(r)},t.prototype.updateLastIndex=function(e,r){e.lastIndex=r},t.prototype.updateTokenEndLineColumnLocation=function(e,r,n,i,a,o,s){var c,f;r!==void 0&&(c=n===s-1,f=c?-1:0,i===1&&c===!0||(e.endLine=a+f,e.endColumn=o-1+-f))},t.prototype.computeNewColumn=function(e,r){return e+r},t.prototype.createTokenInstance=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return null},t.prototype.createOffsetOnlyToken=function(e,r,n,i){return{image:e,startOffset:r,tokenTypeIdx:n,tokenType:i}},t.prototype.createStartOnlyToken=function(e,r,n,i,a,o){return{image:e,startOffset:r,startLine:a,startColumn:o,tokenTypeIdx:n,tokenType:i}},t.prototype.createFullToken=function(e,r,n,i,a,o,s){return{image:e,startOffset:r,endOffset:r+s-1,startLine:a,endLine:a,startColumn:o,endColumn:o+s-1,tokenTypeIdx:n,tokenType:i}},t.prototype.addToken=function(e,r,n){return 666},t.prototype.addTokenUsingPush=function(e,r,n){return e.push(n),r},t.prototype.addTokenUsingMemberAccess=function(e,r,n){return e[r]=n,r++,r},t.prototype.handlePayload=function(e,r){},t.prototype.handlePayloadNoCustom=function(e,r){},t.prototype.handlePayloadWithCustom=function(e,r){r!==null&&(e.payload=r)},t.prototype.match=function(e,r,n){return null},t.prototype.matchWithTest=function(e,r,n){var i=e.test(r);return i===!0?r.substring(n,e.lastIndex):null},t.prototype.matchWithExec=function(e,r){var n=e.exec(r);return n!==null?n[0]:n},t.prototype.TRACE_INIT=function(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;var n=new Array(this.traceInitIndent+1).join(\"\t\");this.traceInitIndent<this.traceInitMaxIdent&&console.log(n+\"--> <\"+e+\">\");var i=w.timer(r),a=i.time,o=i.value,s=a>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(n+\"<-- <\"+e+\"> time: \"+a+\"ms\"),this.traceInitIndent--,o}else return r()},t.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.\",t.NA=/NOT_APPLICABLE/,t}();qe.Lexer=mo});var Ue=R(H=>{\"use strict\";Object.defineProperty(H,\"__esModule\",{value:!0});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(t){return Dn(t)?t.LABEL:t.name}H.tokenLabel=To;function yo(t){return t.name}H.tokenName=yo;function Dn(t){return Te.isString(t.LABEL)&&t.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(t){return go(t)}H.createToken=zn;function go(t){var e=t.pattern,r={};if(r.name=t.name,Te.isUndefined(e)||(r.PATTERN=e),Te.has(t,_o))throw`The parent property is no longer supported.\nSee: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return Te.has(t,Un)&&(r.CATEGORIES=t[Un]),Pr.augmentTokenTypes([r]),Te.has(t,Gn)&&(r.LABEL=t[Gn]),Te.has(t,Wn)&&(r.GROUP=t[Wn]),Te.has(t,qn)&&(r.POP_MODE=t[qn]),Te.has(t,Bn)&&(r.PUSH_MODE=t[Bn]),Te.has(t,jn)&&(r.LONGER_ALT=t[jn]),Te.has(t,Vn)&&(r.LINE_BREAKS=t[Vn]),Te.has(t,Kn)&&(r.START_CHARS_HINT=t[Kn]),r}H.EOF=zn({name:\"EOF\",pattern:Eo.Lexer.NA});Pr.augmentTokenTypes([H.EOF]);function Ao(t,e,r,n,i,a,o,s){return{image:e,startOffset:r,endOffset:n,startLine:i,endLine:a,startColumn:o,endColumn:s,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}H.createTokenInstance=Ao;function Ro(t,e){return Pr.tokenStructuredMatcher(t,e)}H.tokenMatcher=Ro});var ne=R(S=>{\"use strict\";var Le=S&&S.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(S,\"__esModule\",{value:!0});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 t(e){this._definition=e}return Object.defineProperty(t.prototype,\"definition\",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this),G.forEach(this.definition,function(r){r.accept(e)})},t}();S.AbstractProduction=Re;var Hn=function(t){Le(e,t);function e(r){var n=t.call(this,[])||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return Object.defineProperty(e.prototype,\"definition\",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(r){},enumerable:!1,configurable:!0}),e.prototype.accept=function(r){r.visit(this)},e}(Re);S.NonTerminal=Hn;var Yn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.orgText=\"\",G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.Rule=Yn;var Xn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.ignoreAmbiguities=!1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.Alternative=Xn;var $n=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.Option=$n;var Zn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.RepetitionMandatory=Zn;var Qn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.RepetitionMandatoryWithSeparator=Qn;var Jn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.Repetition=Jn;var ei=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.RepetitionWithSeparator=ei;var ti=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,n.ignoreAmbiguities=!1,n.hasPredicates=!1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return Object.defineProperty(e.prototype,\"definition\",{get:function(){return this._definition},set:function(r){this._definition=r},enumerable:!1,configurable:!0}),e}(Re);S.Alternation=ti;var Dt=function(){function t(e){this.idx=1,G.assign(this,G.pick(e,function(r){return r!==void 0}))}return t.prototype.accept=function(e){e.visit(this)},t}();S.Terminal=Dt;function No(t){return G.map(t,ht)}S.serializeGrammar=No;function ht(t){function e(i){return G.map(i,ht)}if(t instanceof Hn)return{type:\"NonTerminal\",name:t.nonTerminalName,idx:t.idx};if(t instanceof Xn)return{type:\"Alternative\",definition:e(t.definition)};if(t instanceof $n)return{type:\"Option\",idx:t.idx,definition:e(t.definition)};if(t instanceof Zn)return{type:\"RepetitionMandatory\",idx:t.idx,definition:e(t.definition)};if(t instanceof Qn)return{type:\"RepetitionMandatoryWithSeparator\",idx:t.idx,separator:ht(new Dt({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof ei)return{type:\"RepetitionWithSeparator\",idx:t.idx,separator:ht(new Dt({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof Jn)return{type:\"Repetition\",idx:t.idx,definition:e(t.definition)};if(t instanceof ti)return{type:\"Alternation\",idx:t.idx,definition:e(t.definition)};if(t instanceof Dt){var r={type:\"Terminal\",name:t.terminalType.name,label:Oo.tokenLabel(t.terminalType),idx:t.idx},n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(r.pattern=G.isRegExp(n)?n.source:n),r}else{if(t instanceof Yn)return{type:\"Rule\",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error(\"non exhaustive match\")}}S.serializeProduction=ht});var Gt=R(Ut=>{\"use strict\";Object.defineProperty(Ut,\"__esModule\",{value:!0});Ut.RestWalker=void 0;var Sr=k(),ie=ne(),Io=function(){function t(){}return t.prototype.walk=function(e,r){var n=this;r===void 0&&(r=[]),Sr.forEach(e.definition,function(i,a){var o=Sr.drop(e.definition,a+1);if(i instanceof ie.NonTerminal)n.walkProdRef(i,o,r);else if(i instanceof ie.Terminal)n.walkTerminal(i,o,r);else if(i instanceof ie.Alternative)n.walkFlat(i,o,r);else if(i instanceof ie.Option)n.walkOption(i,o,r);else if(i instanceof ie.RepetitionMandatory)n.walkAtLeastOne(i,o,r);else if(i instanceof ie.RepetitionMandatoryWithSeparator)n.walkAtLeastOneSep(i,o,r);else if(i instanceof ie.RepetitionWithSeparator)n.walkManySep(i,o,r);else if(i instanceof ie.Repetition)n.walkMany(i,o,r);else if(i instanceof ie.Alternation)n.walkOr(i,o,r);else throw Error(\"non exhaustive match\")})},t.prototype.walkTerminal=function(e,r,n){},t.prototype.walkProdRef=function(e,r,n){},t.prototype.walkFlat=function(e,r,n){var i=r.concat(n);this.walk(e,i)},t.prototype.walkOption=function(e,r,n){var i=r.concat(n);this.walk(e,i)},t.prototype.walkAtLeastOne=function(e,r,n){var i=[new ie.Option({definition:e.definition})].concat(r,n);this.walk(e,i)},t.prototype.walkAtLeastOneSep=function(e,r,n){var i=ri(e,r,n);this.walk(e,i)},t.prototype.walkMany=function(e,r,n){var i=[new ie.Option({definition:e.definition})].concat(r,n);this.walk(e,i)},t.prototype.walkManySep=function(e,r,n){var i=ri(e,r,n);this.walk(e,i)},t.prototype.walkOr=function(e,r,n){var i=this,a=r.concat(n);Sr.forEach(e.definition,function(o){var s=new ie.Alternative({definition:[o]});i.walk(s,a)})},t}();Ut.RestWalker=Io;function ri(t,e,r){var n=[new ie.Option({definition:[new ie.Terminal({terminalType:t.separator})].concat(t.definition)})],i=n.concat(e,r);return i}});var $e=R(Wt=>{\"use strict\";Object.defineProperty(Wt,\"__esModule\",{value:!0});Wt.GAstVisitor=void 0;var Oe=ne(),ko=function(){function t(){}return t.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\")}},t.prototype.visitNonTerminal=function(e){},t.prototype.visitAlternative=function(e){},t.prototype.visitOption=function(e){},t.prototype.visitRepetition=function(e){},t.prototype.visitRepetitionMandatory=function(e){},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){},t.prototype.visitRepetitionWithSeparator=function(e){},t.prototype.visitAlternation=function(e){},t.prototype.visitTerminal=function(e){},t.prototype.visitRule=function(e){},t}();Wt.GAstVisitor=ko});var vt=R(X=>{\"use strict\";var Po=X&&X.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(X,\"__esModule\",{value:!0});X.collectMethods=X.DslMethodsCollectorVisitor=X.getProductionDslName=X.isBranchingProd=X.isOptionalProd=X.isSequenceProd=void 0;var dt=k(),W=ne(),So=$e();function xo(t){return t instanceof W.Alternative||t instanceof W.Option||t instanceof W.Repetition||t instanceof W.RepetitionMandatory||t instanceof W.RepetitionMandatoryWithSeparator||t instanceof W.RepetitionWithSeparator||t instanceof W.Terminal||t instanceof W.Rule}X.isSequenceProd=xo;function xr(t,e){e===void 0&&(e=[]);var r=t instanceof W.Option||t instanceof W.Repetition||t instanceof W.RepetitionWithSeparator;return r?!0:t instanceof W.Alternation?dt.some(t.definition,function(n){return xr(n,e)}):t instanceof W.NonTerminal&&dt.contains(e,t)?!1:t instanceof W.AbstractProduction?(t instanceof W.NonTerminal&&e.push(t),dt.every(t.definition,function(n){return xr(n,e)})):!1}X.isOptionalProd=xr;function Co(t){return t instanceof W.Alternation}X.isBranchingProd=Co;function Lo(t){if(t instanceof W.NonTerminal)return\"SUBRULE\";if(t instanceof W.Option)return\"OPTION\";if(t instanceof W.Alternation)return\"OR\";if(t instanceof W.RepetitionMandatory)return\"AT_LEAST_ONE\";if(t instanceof W.RepetitionMandatoryWithSeparator)return\"AT_LEAST_ONE_SEP\";if(t instanceof W.RepetitionWithSeparator)return\"MANY_SEP\";if(t instanceof W.Repetition)return\"MANY\";if(t instanceof W.Terminal)return\"CONSUME\";throw Error(\"non exhaustive match\")}X.getProductionDslName=Lo;var ni=function(t){Po(e,t);function e(){var r=t!==null&&t.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 n=r.terminalType.name+this.separator+\"Terminal\";dt.has(this.dslMethods,n)||(this.dslMethods[n]=[]),this.dslMethods[n].push(r)},e.prototype.visitNonTerminal=function(r){var n=r.nonTerminalName+this.separator+\"Terminal\";dt.has(this.dslMethods,n)||(this.dslMethods[n]=[]),this.dslMethods[n].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);X.DslMethodsCollectorVisitor=ni;var Bt=new ni;function Mo(t){Bt.reset(),t.accept(Bt);var e=Bt.dslMethods;return Bt.reset(),e}X.collectMethods=Mo});var Lr=R(Ne=>{\"use strict\";Object.defineProperty(Ne,\"__esModule\",{value:!0});Ne.firstForTerminal=Ne.firstForBranching=Ne.firstForSequence=Ne.first=void 0;var qt=k(),ii=ne(),Cr=vt();function jt(t){if(t instanceof ii.NonTerminal)return jt(t.referencedRule);if(t instanceof ii.Terminal)return si(t);if(Cr.isSequenceProd(t))return ai(t);if(Cr.isBranchingProd(t))return oi(t);throw Error(\"non exhaustive match\")}Ne.first=jt;function ai(t){for(var e=[],r=t.definition,n=0,i=r.length>n,a,o=!0;i&&o;)a=r[n],o=Cr.isOptionalProd(a),e=e.concat(jt(a)),n=n+1,i=r.length>n;return qt.uniq(e)}Ne.firstForSequence=ai;function oi(t){var e=qt.map(t.definition,function(r){return jt(r)});return qt.uniq(qt.flatten(e))}Ne.firstForBranching=oi;function si(t){return[t.terminalType]}Ne.firstForTerminal=si});var Mr=R(Vt=>{\"use strict\";Object.defineProperty(Vt,\"__esModule\",{value:!0});Vt.IN=void 0;Vt.IN=\"_~IN~_\"});var pi=R(he=>{\"use strict\";var bo=he&&he.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(he,\"__esModule\",{value:!0});he.buildInProdFollowPrefix=he.buildBetweenProdsFollowPrefix=he.computeAllProdsFollows=he.ResyncFollowsWalker=void 0;var Fo=Gt(),wo=Lr(),ui=k(),ci=Mr(),Do=ne(),fi=function(t){bo(e,t);function e(r){var n=t.call(this)||this;return n.topProd=r,n.follows={},n}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(r,n,i){},e.prototype.walkProdRef=function(r,n,i){var a=li(r.referencedRule,r.idx)+this.topProd.name,o=n.concat(i),s=new Do.Alternative({definition:o}),c=wo.first(s);this.follows[a]=c},e}(Fo.RestWalker);he.ResyncFollowsWalker=fi;function Uo(t){var e={};return ui.forEach(t,function(r){var n=new fi(r).startWalking();ui.assign(e,n)}),e}he.computeAllProdsFollows=Uo;function li(t,e){return t.name+e+ci.IN}he.buildBetweenProdsFollowPrefix=li;function Go(t){var e=t.terminalType.name;return e+t.idx+ci.IN}he.buildInProdFollowPrefix=Go});var mt=R(Me=>{\"use strict\";Object.defineProperty(Me,\"__esModule\",{value:!0});Me.defaultGrammarValidatorErrorProvider=Me.defaultGrammarResolverErrorProvider=Me.defaultParserErrorProvider=void 0;var Ze=Ue(),Wo=k(),ye=k(),br=ne(),hi=vt();Me.defaultParserErrorProvider={buildMismatchTokenMessage:function(t){var e=t.expected,r=t.actual,n=t.previous,i=t.ruleName,a=Ze.hasTokenLabel(e),o=a?\"--> \"+Ze.tokenLabel(e)+\" <--\":\"token of type --> \"+e.name+\" <--\",s=\"Expecting \"+o+\" but found --> '\"+r.image+\"' <--\";return s},buildNotAllInputParsedMessage:function(t){var e=t.firstRedundant,r=t.ruleName;return\"Redundant input, expecting EOF but found: \"+e.image},buildNoViableAltMessage:function(t){var e=t.expectedPathsPerAlt,r=t.actual,n=t.previous,i=t.customUserDescription,a=t.ruleName,o=\"Expecting: \",s=ye.first(r).image,c=`\nbut found: '`+s+\"'\";if(i)return o+i+c;var f=ye.reduce(e,function(v,u){return v.concat(u)},[]),p=ye.map(f,function(v){return\"[\"+ye.map(v,function(u){return Ze.tokenLabel(u)}).join(\", \")+\"]\"}),l=ye.map(p,function(v,u){return\" \"+(u+1)+\". \"+v}),m=`one of these possible Token sequences:\n`+l.join(`\n`);return o+m+c},buildEarlyExitMessage:function(t){var e=t.expectedIterationPaths,r=t.actual,n=t.customUserDescription,i=t.ruleName,a=\"Expecting: \",o=ye.first(r).image,s=`\nbut found: '`+o+\"'\";if(n)return a+n+s;var c=ye.map(e,function(p){return\"[\"+ye.map(p,function(l){return Ze.tokenLabel(l)}).join(\",\")+\"]\"}),f=`expecting at least one iteration which starts with one of these possible Token sequences::\n `+(\"<\"+c.join(\" ,\")+\">\");return a+f+s}};Object.freeze(Me.defaultParserErrorProvider);Me.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(t,e){var r=\"Invalid grammar, reference to a rule which is not defined: ->\"+e.nonTerminalName+`<-\ninside top level rule: ->`+t.name+\"<-\";return r}};Me.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(t,e){function r(p){return p instanceof br.Terminal?p.terminalType.name:p instanceof br.NonTerminal?p.nonTerminalName:\"\"}var n=t.name,i=ye.first(e),a=i.idx,o=hi.getProductionDslName(i),s=r(i),c=a>0,f=\"->\"+o+(c?a:\"\")+\"<- \"+(s?\"with argument: ->\"+s+\"<-\":\"\")+`\n appears more than once (`+e.length+\" times) in the top level rule: ->\"+n+`<-.\n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES\n `;return f=f.replace(/[ \\t]+/g,\" \"),f=f.replace(/\\s\\s+/g,`\n`),f},buildNamespaceConflictError:function(t){var e=`Namespace conflict found in grammar.\n`+(\"The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <\"+t.name+`>.\n`)+`To resolve this make sure each Terminal and Non-Terminal names are unique\nThis is easy to accomplish by using the convention that Terminal names start with an uppercase letter\nand Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(t){var e=ye.map(t.prefixPath,function(i){return Ze.tokenLabel(i)}).join(\", \"),r=t.alternation.idx===0?\"\":t.alternation.idx,n=\"Ambiguous alternatives: <\"+t.ambiguityIndices.join(\" ,\")+`> due to common lookahead prefix\n`+(\"in <OR\"+r+\"> inside <\"+t.topLevelRule.name+`> Rule,\n`)+(\"<\"+e+`> may appears as a prefix path in all these alternatives.\n`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\nFor Further details.`;return n},buildAlternationAmbiguityError:function(t){var e=ye.map(t.prefixPath,function(i){return Ze.tokenLabel(i)}).join(\", \"),r=t.alternation.idx===0?\"\":t.alternation.idx,n=\"Ambiguous Alternatives Detected: <\"+t.ambiguityIndices.join(\" ,\")+\"> in <OR\"+r+\">\"+(\" inside <\"+t.topLevelRule.name+`> Rule,\n`)+(\"<\"+e+`> may appears as a prefix path in all these alternatives.\n`);return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.`,n},buildEmptyRepetitionError:function(t){var e=hi.getProductionDslName(t.repetition);t.repetition.idx!==0&&(e+=t.repetition.idx);var r=\"The repetition <\"+e+\"> within Rule <\"+t.topLevelRule.name+`> can never consume any tokens.\nThis could lead to an infinite loop.`;return r},buildTokenNameError:function(t){return\"deprecated\"},buildEmptyAlternationError:function(t){var e=\"Ambiguous empty alternative: <\"+(t.emptyChoiceIdx+1)+\">\"+(\" in <OR\"+t.alternation.idx+\"> inside <\"+t.topLevelRule.name+`> Rule.\n`)+\"Only the last alternative may be an empty alternative.\";return e},buildTooManyAlternativesError:function(t){var e=`An Alternation cannot have more than 256 alternatives:\n`+(\"<OR\"+t.alternation.idx+\"> inside <\"+t.topLevelRule.name+`> Rule.\n has `+(t.alternation.definition.length+1)+\" alternatives.\");return e},buildLeftRecursionError:function(t){var e=t.topLevelRule.name,r=Wo.map(t.leftRecursionPath,function(a){return a.name}),n=e+\" --> \"+r.concat([e]).join(\" --> \"),i=`Left Recursion found in grammar.\n`+(\"rule: <\"+e+`> can be invoked from itself (directly or indirectly)\n`)+(`without consuming any Tokens. The grammar path that causes this is:\n `+n+`\n`)+` To fix this refactor your grammar to remove the left recursion.\nsee: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return i},buildInvalidRuleNameError:function(t){return\"deprecated\"},buildDuplicateRuleNameError:function(t){var e;t.topLevelRule instanceof br.Rule?e=t.topLevelRule.name:e=t.topLevelRule;var r=\"Duplicate definition, rule: ->\"+e+\"<- is already defined in the grammar: ->\"+t.grammarName+\"<-\";return r}}});var mi=R(Ge=>{\"use strict\";var Bo=Ge&&Ge.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Ge,\"__esModule\",{value:!0});Ge.GastRefResolverVisitor=Ge.resolveGrammar=void 0;var qo=ce(),di=k(),jo=$e();function Vo(t,e){var r=new vi(t,e);return r.resolveRefs(),r.errors}Ge.resolveGrammar=Vo;var vi=function(t){Bo(e,t);function e(r,n){var i=t.call(this)||this;return i.nameToTopRule=r,i.errMsgProvider=n,i.errors=[],i}return e.prototype.resolveRefs=function(){var r=this;di.forEach(di.values(this.nameToTopRule),function(n){r.currTopLevel=n,n.accept(r)})},e.prototype.visitNonTerminal=function(r){var n=this.nameToTopRule[r.nonTerminalName];if(n)r.referencedRule=n;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=R(j=>{\"use strict\";var je=j&&j.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(j,\"__esModule\",{value:!0});j.nextPossibleTokensAfter=j.possiblePathsFrom=j.NextTerminalAfterAtLeastOneSepWalker=j.NextTerminalAfterAtLeastOneWalker=j.NextTerminalAfterManySepWalker=j.NextTerminalAfterManyWalker=j.AbstractNextTerminalAfterProductionWalker=j.NextAfterTokenWalker=j.AbstractNextPossibleTokensWalker=void 0;var Ei=Gt(),I=k(),Ko=Lr(),O=ne(),Ti=function(t){je(e,t);function e(r,n){var i=t.call(this)||this;return i.topProd=r,i.path=n,i.possibleTokTypes=[],i.nextProductionName=\"\",i.nextProductionOccurrence=0,i.found=!1,i.isAtEndOfPath=!1,i}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error(\"The path does not start with the walker's top Rule!\");return this.ruleStack=I.cloneArr(this.path.ruleStack).reverse(),this.occurrenceStack=I.cloneArr(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(r,n){n===void 0&&(n=[]),this.found||t.prototype.walk.call(this,r,n)},e.prototype.walkProdRef=function(r,n,i){if(r.referencedRule.name===this.nextProductionName&&r.idx===this.nextProductionOccurrence){var a=n.concat(i);this.updateExpectedNext(),this.walk(r.referencedRule,a)}},e.prototype.updateExpectedNext=function(){I.isEmpty(this.ruleStack)?(this.nextProductionName=\"\",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(Ei.RestWalker);j.AbstractNextPossibleTokensWalker=Ti;var zo=function(t){je(e,t);function e(r,n){var i=t.call(this,r,n)||this;return i.path=n,i.nextTerminalName=\"\",i.nextTerminalOccurrence=0,i.nextTerminalName=i.path.lastTok.name,i.nextTerminalOccurrence=i.path.lastTokOccurrence,i}return e.prototype.walkTerminal=function(r,n,i){if(this.isAtEndOfPath&&r.terminalType.name===this.nextTerminalName&&r.idx===this.nextTerminalOccurrence&&!this.found){var a=n.concat(i),o=new O.Alternative({definition:a});this.possibleTokTypes=Ko.first(o),this.found=!0}},e}(Ti);j.NextAfterTokenWalker=zo;var Et=function(t){je(e,t);function e(r,n){var i=t.call(this)||this;return i.topRule=r,i.occurrence=n,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}(Ei.RestWalker);j.AbstractNextTerminalAfterProductionWalker=Et;var Ho=function(t){je(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkMany=function(r,n,i){if(r.idx===this.occurrence){var a=I.first(n.concat(i));this.result.isEndOfRule=a===void 0,a instanceof O.Terminal&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkMany.call(this,r,n,i)},e}(Et);j.NextTerminalAfterManyWalker=Ho;var Yo=function(t){je(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkManySep=function(r,n,i){if(r.idx===this.occurrence){var a=I.first(n.concat(i));this.result.isEndOfRule=a===void 0,a instanceof O.Terminal&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkManySep.call(this,r,n,i)},e}(Et);j.NextTerminalAfterManySepWalker=Yo;var Xo=function(t){je(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(r,n,i){if(r.idx===this.occurrence){var a=I.first(n.concat(i));this.result.isEndOfRule=a===void 0,a instanceof O.Terminal&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkAtLeastOne.call(this,r,n,i)},e}(Et);j.NextTerminalAfterAtLeastOneWalker=Xo;var $o=function(t){je(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(r,n,i){if(r.idx===this.occurrence){var a=I.first(n.concat(i));this.result.isEndOfRule=a===void 0,a instanceof O.Terminal&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkAtLeastOneSep.call(this,r,n,i)},e}(Et);j.NextTerminalAfterAtLeastOneSepWalker=$o;function yi(t,e,r){r===void 0&&(r=[]),r=I.cloneArr(r);var n=[],i=0;function a(f){return f.concat(I.drop(t,i+1))}function o(f){var p=yi(a(f),e,r);return n.concat(p)}for(;r.length<e&&i<t.length;){var s=t[i];if(s instanceof O.Alternative)return o(s.definition);if(s instanceof O.NonTerminal)return o(s.definition);if(s instanceof O.Option)n=o(s.definition);else if(s instanceof O.RepetitionMandatory){var c=s.definition.concat([new O.Repetition({definition:s.definition})]);return o(c)}else if(s instanceof O.RepetitionMandatoryWithSeparator){var c=[new O.Alternative({definition:s.definition}),new O.Repetition({definition:[new O.Terminal({terminalType:s.separator})].concat(s.definition)})];return o(c)}else if(s instanceof O.RepetitionWithSeparator){var c=s.definition.concat([new O.Repetition({definition:[new O.Terminal({terminalType:s.separator})].concat(s.definition)})]);n=o(c)}else if(s instanceof O.Repetition){var c=s.definition.concat([new O.Repetition({definition:s.definition})]);n=o(c)}else{if(s instanceof O.Alternation)return I.forEach(s.definition,function(f){I.isEmpty(f.definition)===!1&&(n=o(f.definition))}),n;if(s instanceof O.Terminal)r.push(s.terminalType);else throw Error(\"non exhaustive match\")}i++}return n.push({partialPath:r,suffixDef:I.drop(t,i)}),n}j.possiblePathsFrom=yi;function Qo(t,e,r,n){var i=\"EXIT_NONE_TERMINAL\",a=[i],o=\"EXIT_ALTERNATIVE\",s=!1,c=e.length,f=c-n-1,p=[],l=[];for(l.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!I.isEmpty(l);){var m=l.pop();if(m===o){s&&I.last(l).idx<=f&&l.pop();continue}var v=m.def,u=m.idx,d=m.ruleStack,A=m.occurrenceStack;if(!I.isEmpty(v)){var _=v[0];if(_===i){var g={idx:u,def:I.drop(v),ruleStack:I.dropRight(d),occurrenceStack:I.dropRight(A)};l.push(g)}else if(_ instanceof O.Terminal)if(u<c-1){var y=u+1,b=e[y];if(r(b,_.terminalType)){var g={idx:y,def:I.drop(v),ruleStack:d,occurrenceStack:A};l.push(g)}}else if(u===c-1)p.push({nextTokenType:_.terminalType,nextTokenOccurrence:_.idx,ruleStack:d,occurrenceStack:A}),s=!0;else throw Error(\"non exhaustive match\");else if(_ instanceof O.NonTerminal){var L=I.cloneArr(d);L.push(_.nonTerminalName);var se=I.cloneArr(A);se.push(_.idx);var g={idx:u,def:_.definition.concat(a,I.drop(v)),ruleStack:L,occurrenceStack:se};l.push(g)}else if(_ instanceof O.Option){var fe={idx:u,def:I.drop(v),ruleStack:d,occurrenceStack:A};l.push(fe),l.push(o);var Z={idx:u,def:_.definition.concat(I.drop(v)),ruleStack:d,occurrenceStack:A};l.push(Z)}else if(_ instanceof O.RepetitionMandatory){var ue=new O.Repetition({definition:_.definition,idx:_.idx}),Q=_.definition.concat([ue],I.drop(v)),g={idx:u,def:Q,ruleStack:d,occurrenceStack:A};l.push(g)}else if(_ instanceof O.RepetitionMandatoryWithSeparator){var te=new O.Terminal({terminalType:_.separator}),ue=new O.Repetition({definition:[te].concat(_.definition),idx:_.idx}),Q=_.definition.concat([ue],I.drop(v)),g={idx:u,def:Q,ruleStack:d,occurrenceStack:A};l.push(g)}else if(_ instanceof O.RepetitionWithSeparator){var fe={idx:u,def:I.drop(v),ruleStack:d,occurrenceStack:A};l.push(fe),l.push(o);var te=new O.Terminal({terminalType:_.separator}),xe=new O.Repetition({definition:[te].concat(_.definition),idx:_.idx}),Q=_.definition.concat([xe],I.drop(v)),Z={idx:u,def:Q,ruleStack:d,occurrenceStack:A};l.push(Z)}else if(_ instanceof O.Repetition){var fe={idx:u,def:I.drop(v),ruleStack:d,occurrenceStack:A};l.push(fe),l.push(o);var xe=new O.Repetition({definition:_.definition,idx:_.idx}),Q=_.definition.concat([xe],I.drop(v)),Z={idx:u,def:Q,ruleStack:d,occurrenceStack:A};l.push(Z)}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(I.drop(v)),ruleStack:d,occurrenceStack:A};l.push(Ke),l.push(o)}else if(_ instanceof O.Alternative)l.push({idx:u,def:_.definition.concat(I.drop(v)),ruleStack:d,occurrenceStack:A});else if(_ instanceof O.Rule)l.push(Zo(_,u,d,A));else throw Error(\"non exhaustive match\")}}return p}j.nextPossibleTokensAfter=Qo;function Zo(t,e,r,n){var i=I.cloneArr(r);i.push(t.name);var a=I.cloneArr(n);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}});var yt=R(C=>{\"use strict\";var _i=C&&C.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(C,\"__esModule\",{value:!0});C.areTokenCategoriesNotUsed=C.isStrictPrefixOfPath=C.containsPath=C.getLookaheadPathsForOptionalProd=C.getLookaheadPathsForOr=C.lookAheadSequenceFromAlternatives=C.buildSingleAlternativeLookaheadFunction=C.buildAlternativesLookAheadFunc=C.buildLookaheadFuncForOptionalProd=C.buildLookaheadFuncForOr=C.getProdType=C.PROD_TYPE=void 0;var D=k(),gi=Tt(),Jo=Gt(),Kt=Xe(),We=ne(),es=$e(),z;(function(t){t[t.OPTION=0]=\"OPTION\",t[t.REPETITION=1]=\"REPETITION\",t[t.REPETITION_MANDATORY=2]=\"REPETITION_MANDATORY\",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]=\"REPETITION_MANDATORY_WITH_SEPARATOR\",t[t.REPETITION_WITH_SEPARATOR=4]=\"REPETITION_WITH_SEPARATOR\",t[t.ALTERNATION=5]=\"ALTERNATION\"})(z=C.PROD_TYPE||(C.PROD_TYPE={}));function ts(t){if(t instanceof We.Option)return z.OPTION;if(t instanceof We.Repetition)return z.REPETITION;if(t instanceof We.RepetitionMandatory)return z.REPETITION_MANDATORY;if(t instanceof We.RepetitionMandatoryWithSeparator)return z.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof We.RepetitionWithSeparator)return z.REPETITION_WITH_SEPARATOR;if(t instanceof We.Alternation)return z.ALTERNATION;throw Error(\"non exhaustive match\")}C.getProdType=ts;function rs(t,e,r,n,i,a){var o=Ai(t,e,r),s=Fr(o)?Kt.tokenStructuredMatcherNoCategories:Kt.tokenStructuredMatcher;return a(o,n,s,i)}C.buildLookaheadFuncForOr=rs;function ns(t,e,r,n,i,a){var o=Ri(t,e,i,r),s=Fr(o)?Kt.tokenStructuredMatcherNoCategories:Kt.tokenStructuredMatcher;return a(o[0],s,n)}C.buildLookaheadFuncForOptionalProd=ns;function is(t,e,r,n){var i=t.length,a=D.every(t,function(c){return D.every(c,function(f){return f.length===1})});if(e)return function(c){for(var f=D.map(c,function(y){return y.GATE}),p=0;p<i;p++){var l=t[p],m=l.length,v=f[p];if(v!==void 0&&v.call(this)===!1)continue;e:for(var u=0;u<m;u++){for(var d=l[u],A=d.length,_=0;_<A;_++){var g=this.LA(_+1);if(r(g,d[_])===!1)continue e}return p}}};if(a&&!n){var o=D.map(t,function(c){return D.flatten(c)}),s=D.reduce(o,function(c,f,p){return D.forEach(f,function(l){D.has(c,l.tokenTypeIdx)||(c[l.tokenTypeIdx]=p),D.forEach(l.categoryMatches,function(m){D.has(c,m)||(c[m]=p)})}),c},[]);return function(){var c=this.LA(1);return s[c.tokenTypeIdx]}}else return function(){for(var c=0;c<i;c++){var f=t[c],p=f.length;e:for(var l=0;l<p;l++){for(var m=f[l],v=m.length,u=0;u<v;u++){var d=this.LA(u+1);if(r(d,m[u])===!1)continue e}return c}}}}C.buildAlternativesLookAheadFunc=is;function as(t,e,r){var n=D.every(t,function(f){return f.length===1}),i=t.length;if(n&&!r){var a=D.flatten(t);if(a.length===1&&D.isEmpty(a[0].categoryMatches)){var o=a[0],s=o.tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===s}}else{var c=D.reduce(a,function(f,p,l){return f[p.tokenTypeIdx]=!0,D.forEach(p.categoryMatches,function(m){f[m]=!0}),f},[]);return function(){var f=this.LA(1);return c[f.tokenTypeIdx]===!0}}}else return function(){e:for(var f=0;f<i;f++){for(var p=t[f],l=p.length,m=0;m<l;m++){var v=this.LA(m+1);if(e(v,p[m])===!1)continue e}return!0}return!1}}C.buildSingleAlternativeLookaheadFunction=as;var os=function(t){_i(e,t);function e(r,n,i){var a=t.call(this)||this;return a.topProd=r,a.targetOccurrence=n,a.targetProdType=i,a}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.restDef},e.prototype.checkIsTarget=function(r,n,i,a){return r.idx===this.targetOccurrence&&this.targetProdType===n?(this.restDef=i.concat(a),!0):!1},e.prototype.walkOption=function(r,n,i){this.checkIsTarget(r,z.OPTION,n,i)||t.prototype.walkOption.call(this,r,n,i)},e.prototype.walkAtLeastOne=function(r,n,i){this.checkIsTarget(r,z.REPETITION_MANDATORY,n,i)||t.prototype.walkOption.call(this,r,n,i)},e.prototype.walkAtLeastOneSep=function(r,n,i){this.checkIsTarget(r,z.REPETITION_MANDATORY_WITH_SEPARATOR,n,i)||t.prototype.walkOption.call(this,r,n,i)},e.prototype.walkMany=function(r,n,i){this.checkIsTarget(r,z.REPETITION,n,i)||t.prototype.walkOption.call(this,r,n,i)},e.prototype.walkManySep=function(r,n,i){this.checkIsTarget(r,z.REPETITION_WITH_SEPARATOR,n,i)||t.prototype.walkOption.call(this,r,n,i)},e}(Jo.RestWalker),Oi=function(t){_i(e,t);function e(r,n,i){var a=t.call(this)||this;return a.targetOccurrence=r,a.targetProdType=n,a.targetRef=i,a.result=[],a}return e.prototype.checkIsTarget=function(r,n){r.idx===this.targetOccurrence&&this.targetProdType===n&&(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(t){for(var e=new Array(t),r=0;r<t;r++)e[r]=[];return e}function wr(t){for(var e=[\"\"],r=0;r<t.length;r++){for(var n=t[r],i=[],a=0;a<e.length;a++){var o=e[a];i.push(o+\"_\"+n.tokenTypeIdx);for(var s=0;s<n.categoryMatches.length;s++){var c=\"_\"+n.categoryMatches[s];i.push(o+c)}}e=i}return e}function ss(t,e,r){for(var n=0;n<t.length;n++)if(n!==r)for(var i=t[n],a=0;a<e.length;a++){var o=e[a];if(i[o]===!0)return!1}return!0}function Dr(t,e){for(var r=D.map(t,function(p){return gi.possiblePathsFrom([p],1)}),n=Ni(r.length),i=D.map(r,function(p){var l={};return D.forEach(p,function(m){var v=wr(m.partialPath);D.forEach(v,function(u){l[u]=!0})}),l}),a=r,o=1;o<=e;o++){var s=a;a=Ni(s.length);for(var c=function(p){for(var l=s[p],m=0;m<l.length;m++){var v=l[m].partialPath,u=l[m].suffixDef,d=wr(v),A=ss(i,d,p);if(A||D.isEmpty(u)||v.length===e){var _=n[p];if(Ii(_,v)===!1){_.push(v);for(var g=0;g<d.length;g++){var y=d[g];i[p][y]=!0}}}else{var b=gi.possiblePathsFrom(u,o+1,v);a[p]=a[p].concat(b),D.forEach(b,function(L){var se=wr(L.partialPath);D.forEach(se,function(fe){i[p][fe]=!0})})}}},f=0;f<s.length;f++)c(f)}return n}C.lookAheadSequenceFromAlternatives=Dr;function Ai(t,e,r,n){var i=new Oi(t,z.ALTERNATION,n);return e.accept(i),Dr(i.result,r)}C.getLookaheadPathsForOr=Ai;function Ri(t,e,r,n){var i=new Oi(t,r);e.accept(i);var a=i.result,o=new os(e,t,r),s=o.startWalking(),c=new We.Alternative({definition:a}),f=new We.Alternative({definition:s});return Dr([c,f],n)}C.getLookaheadPathsForOptionalProd=Ri;function Ii(t,e){e:for(var r=0;r<t.length;r++){var n=t[r];if(n.length===e.length){for(var i=0;i<n.length;i++){var a=e[i],o=n[i],s=a===o||o.categoryMatchesMap[a.tokenTypeIdx]!==void 0;if(s===!1)continue e}return!0}}return!1}C.containsPath=Ii;function us(t,e){return t.length<e.length&&D.every(t,function(r,n){var i=e[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}C.isStrictPrefixOfPath=us;function Fr(t){return D.every(t,function(e){return D.every(e,function(r){return D.every(r,function(n){return D.isEmpty(n.categoryMatches)})})})}C.areTokenCategoriesNotUsed=Fr});var jr=R(x=>{\"use strict\";var Ur=x&&x.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(x,\"__esModule\",{value:!0});x.checkPrefixAlternativesAmbiguities=x.validateSomeNonEmptyLookaheadPath=x.validateTooManyAlts=x.RepetionCollector=x.validateAmbiguousAlternationAlternatives=x.validateEmptyOrAlternative=x.getFirstNoneTerminal=x.validateNoLeftRecursion=x.validateRuleIsOverridden=x.validateRuleDoesNotAlreadyExist=x.OccurrenceValidationCollector=x.identifyProductionForDuplicates=x.validateGrammar=void 0;var M=k(),B=k(),Ie=ce(),Gr=vt(),Qe=yt(),cs=Tt(),_e=ne(),Wr=$e();function ps(t,e,r,n,i){var a=M.map(t,function(v){return ls(v,n)}),o=M.map(t,function(v){return Br(v,v,n)}),s=[],c=[],f=[];B.every(o,B.isEmpty)&&(s=B.map(t,function(v){return Pi(v,n)}),c=B.map(t,function(v){return Si(v,e,n)}),f=Ci(t,e,n));var p=fs(t,r,n),l=B.map(t,function(v){return xi(v,n)}),m=B.map(t,function(v){return ki(v,t,i,n)});return M.flatten(a.concat(f,o,s,c,p,l,m))}x.validateGrammar=ps;function ls(t,e){var r=new bi;t.accept(r);var n=r.allProductions,i=M.groupBy(n,Li),a=M.pick(i,function(s){return s.length>1}),o=M.map(M.values(a),function(s){var c=M.first(s),f=e.buildDuplicateFoundError(t,s),p=Gr.getProductionDslName(c),l={message:f,type:Ie.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:p,occurrence:c.idx},m=Mi(c);return m&&(l.parameter=m),l});return o}function Li(t){return Gr.getProductionDslName(t)+\"_#_\"+t.idx+\"_#_\"+Mi(t)}x.identifyProductionForDuplicates=Li;function Mi(t){return t instanceof _e.Terminal?t.terminalType.name:t instanceof _e.NonTerminal?t.nonTerminalName:\"\"}var bi=function(t){Ur(e,t);function e(){var r=t!==null&&t.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);x.OccurrenceValidationCollector=bi;function ki(t,e,r,n){var i=[],a=B.reduce(e,function(s,c){return c.name===t.name?s+1:s},0);if(a>1){var o=n.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});i.push({message:o,type:Ie.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}x.validateRuleDoesNotAlreadyExist=ki;function hs(t,e,r){var n=[],i;return M.contains(e,t)||(i=\"Invalid rule override, rule: ->\"+t+\"<- cannot be overridden in the grammar: ->\"+r+\"<-as it is not defined in any of the super grammars \",n.push({message:i,type:Ie.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:t})),n}x.validateRuleIsOverridden=hs;function Br(t,e,r,n){n===void 0&&(n=[]);var i=[],a=_t(e.definition);if(M.isEmpty(a))return[];var o=t.name,s=M.contains(a,t);s&&i.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:n}),type:Ie.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var c=M.difference(a,n.concat([t])),f=M.map(c,function(p){var l=M.cloneArr(n);return l.push(p),Br(t,p,r,l)});return i.concat(M.flatten(f))}x.validateNoLeftRecursion=Br;function _t(t){var e=[];if(M.isEmpty(t))return e;var r=M.first(t);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 n=Gr.isOptionalProd(r),i=t.length>1;if(n&&i){var a=M.drop(t);return e.concat(_t(a))}else return e}x.getFirstNoneTerminal=_t;var qr=function(t){Ur(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.alternations=[],r}return e.prototype.visitAlternation=function(r){this.alternations.push(r)},e}(Wr.GAstVisitor);function Pi(t,e){var r=new qr;t.accept(r);var n=r.alternations,i=M.reduce(n,function(a,o){var s=M.dropRight(o.definition),c=M.map(s,function(f,p){var l=cs.nextPossibleTokensAfter([f],[],null,1);return M.isEmpty(l)?{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:o,emptyChoiceIdx:p}),type:Ie.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:o.idx,alternative:p+1}:null});return a.concat(M.compact(c))},[]);return i}x.validateEmptyOrAlternative=Pi;function Si(t,e,r){var n=new qr;t.accept(n);var i=n.alternations;i=B.reject(i,function(o){return o.ignoreAmbiguities===!0});var a=M.reduce(i,function(o,s){var c=s.idx,f=s.maxLookahead||e,p=Qe.getLookaheadPathsForOr(c,t,f,s),l=ds(p,s,t,r),m=Fi(p,s,t,r);return o.concat(l,m)},[]);return a}x.validateAmbiguousAlternationAlternatives=Si;var wi=function(t){Ur(e,t);function e(){var r=t!==null&&t.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);x.RepetionCollector=wi;function xi(t,e){var r=new qr;t.accept(r);var n=r.alternations,i=M.reduce(n,function(a,o){return o.definition.length>255&&a.push({message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:o}),type:Ie.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:t.name,occurrence:o.idx}),a},[]);return i}x.validateTooManyAlts=xi;function Ci(t,e,r){var n=[];return B.forEach(t,function(i){var a=new wi;i.accept(a);var o=a.allProductions;B.forEach(o,function(s){var c=Qe.getProdType(s),f=s.maxLookahead||e,p=s.idx,l=Qe.getLookaheadPathsForOptionalProd(p,i,c,f),m=l[0];if(B.isEmpty(B.flatten(m))){var v=r.buildEmptyRepetitionError({topLevelRule:i,repetition:s});n.push({message:v,type:Ie.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}x.validateSomeNonEmptyLookaheadPath=Ci;function ds(t,e,r,n){var i=[],a=B.reduce(t,function(s,c,f){return e.definition[f].ignoreAmbiguities===!0||B.forEach(c,function(p){var l=[f];B.forEach(t,function(m,v){f!==v&&Qe.containsPath(m,p)&&e.definition[v].ignoreAmbiguities!==!0&&l.push(v)}),l.length>1&&!Qe.containsPath(i,p)&&(i.push(p),s.push({alts:l,path:p}))}),s},[]),o=M.map(a,function(s){var c=B.map(s.alts,function(p){return p+1}),f=n.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:c,prefixPath:s.path});return{message:f,type:Ie.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:[s.alts]}});return o}function Fi(t,e,r,n){var i=[],a=B.reduce(t,function(o,s,c){var f=B.map(s,function(p){return{idx:c,path:p}});return o.concat(f)},[]);return B.forEach(a,function(o){var s=e.definition[o.idx];if(s.ignoreAmbiguities!==!0){var c=o.idx,f=o.path,p=B.findAll(a,function(m){return e.definition[m.idx].ignoreAmbiguities!==!0&&m.idx<c&&Qe.isStrictPrefixOfPath(m.path,f)}),l=B.map(p,function(m){var v=[m.idx+1,c+1],u=e.idx===0?\"\":e.idx,d=n.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(l)}}),i}x.checkPrefixAlternativesAmbiguities=Fi;function fs(t,e,r){var n=[],i=B.map(e,function(a){return a.name});return B.forEach(t,function(a){var o=a.name;if(B.contains(i,o)){var s=r.buildNamespaceConflictError(a);n.push({message:s,type:Ie.ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:o})}}),n}});var Ui=R(Je=>{\"use strict\";Object.defineProperty(Je,\"__esModule\",{value:!0});Je.validateGrammar=Je.resolveGrammar=void 0;var Vr=k(),vs=mi(),ms=jr(),Di=mt();function Es(t){t=Vr.defaults(t,{errMsgProvider:Di.defaultGrammarResolverErrorProvider});var e={};return Vr.forEach(t.rules,function(r){e[r.name]=r}),vs.resolveGrammar(e,t.errMsgProvider)}Je.resolveGrammar=Es;function Ts(t){return t=Vr.defaults(t,{errMsgProvider:Di.defaultGrammarValidatorErrorProvider}),ms.validateGrammar(t.rules,t.maxLookahead,t.tokenTypes,t.errMsgProvider,t.grammarName)}Je.validateGrammar=Ts});var et=R(ae=>{\"use strict\";var gt=ae&&ae.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(ae,\"__esModule\",{value:!0});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(t){return ys.contains(ji,t.name)}ae.isRecognitionException=_s;var zt=function(t){gt(e,t);function e(r,n){var i=this.constructor,a=t.call(this,r)||this;return a.token=n,a.resyncedTokens=[],Object.setPrototypeOf(a,i.prototype),Error.captureStackTrace&&Error.captureStackTrace(a,a.constructor),a}return e}(Error),gs=function(t){gt(e,t);function e(r,n,i){var a=t.call(this,r,n)||this;return a.previousToken=i,a.name=Gi,a}return e}(zt);ae.MismatchedTokenException=gs;var As=function(t){gt(e,t);function e(r,n,i){var a=t.call(this,r,n)||this;return a.previousToken=i,a.name=Wi,a}return e}(zt);ae.NoViableAltException=As;var Rs=function(t){gt(e,t);function e(r,n){var i=t.call(this,r,n)||this;return i.name=qi,i}return e}(zt);ae.NotAllInputParsedException=Rs;var Os=function(t){gt(e,t);function e(r,n,i){var a=t.call(this,r,n)||this;return a.previousToken=i,a.name=Bi,a}return e}(zt);ae.EarlyExitException=Os});var zr=R($=>{\"use strict\";Object.defineProperty($,\"__esModule\",{value:!0});$.attemptInRepetitionRecovery=$.Recoverable=$.InRuleRecoveryException=$.IN_RULE_RECOVERY_EXCEPTION=$.EOF_FOLLOW_KEY=void 0;var Ht=Ue(),de=k(),Ns=et(),Is=Mr(),ks=ce();$.EOF_FOLLOW_KEY={};$.IN_RULE_RECOVERY_EXCEPTION=\"InRuleRecoveryException\";function Kr(t){this.name=$.IN_RULE_RECOVERY_EXCEPTION,this.message=t}$.InRuleRecoveryException=Kr;Kr.prototype=Error.prototype;var Ps=function(){function t(){}return t.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=de.has(e,\"recoveryEnabled\")?e.recoveryEnabled:ks.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=Vi)},t.prototype.getTokenToInsert=function(e){var r=Ht.createTokenInstance(e,\"\",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r},t.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},t.prototype.tryInRepetitionRecovery=function(e,r,n,i){for(var a=this,o=this.findReSyncTokenType(),s=this.exportLexerState(),c=[],f=!1,p=this.LA(1),l=this.LA(1),m=function(){var v=a.LA(0),u=a.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:p,previous:v,ruleName:a.getCurrRuleFullName()}),d=new Ns.MismatchedTokenException(u,p,a.LA(0));d.resyncedTokens=de.dropRight(c),a.SAVE_ERROR(d)};!f;)if(this.tokenMatcher(l,i)){m();return}else if(n.call(this)){m(),e.apply(this,r);return}else this.tokenMatcher(l,o)?f=!0:(l=this.SKIP_TOKEN(),this.addToResyncTokens(l,c));this.importLexerState(s)},t.prototype.shouldInRepetitionRecoveryBeTried=function(e,r,n){return!(n===!1||e===void 0||r===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))},t.prototype.getFollowsForInRuleRecovery=function(e,r){var n=this.getCurrentGrammarPath(e,r),i=this.getNextPossibleTokenTypes(n);return i},t.prototype.tryInRuleRecovery=function(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r)){var n=this.getTokenToInsert(e);return n}if(this.canRecoverWithSingleTokenDeletion(e)){var i=this.SKIP_TOKEN();return this.consumeToken(),i}throw new Kr(\"sad sad panda\")},t.prototype.canPerformInRuleRecovery=function(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)},t.prototype.canRecoverWithSingleTokenInsertion=function(e,r){var n=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||de.isEmpty(r))return!1;var i=this.LA(1),a=de.find(r,function(o){return n.tokenMatcher(i,o)})!==void 0;return a},t.prototype.canRecoverWithSingleTokenDeletion=function(e){var r=this.tokenMatcher(this.LA(2),e);return r},t.prototype.isInCurrentRuleReSyncSet=function(e){var r=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(r);return de.contains(n,e)},t.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),r=this.LA(1),n=2;;){var i=r.tokenType;if(de.contains(e,i))return i;r=this.LA(n),n++}},t.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return $.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(n)}},t.prototype.buildFullFollowKeyStack=function(){var e=this,r=this.RULE_STACK,n=this.RULE_OCCURRENCE_STACK;return de.map(r,function(i,a){return a===0?$.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(i),idxInCallingRule:n[a],inRule:e.shortRuleNameToFullName(r[a-1])}})},t.prototype.flattenFollowSet=function(){var e=this,r=de.map(this.buildFullFollowKeyStack(),function(n){return e.getFollowSetFromFollowKey(n)});return de.flatten(r)},t.prototype.getFollowSetFromFollowKey=function(e){if(e===$.EOF_FOLLOW_KEY)return[Ht.EOF];var r=e.ruleName+e.idxInCallingRule+Is.IN+e.inRule;return this.resyncFollows[r]},t.prototype.addToResyncTokens=function(e,r){return this.tokenMatcher(e,Ht.EOF)||r.push(e),r},t.prototype.reSyncTo=function(e){for(var r=[],n=this.LA(1);this.tokenMatcher(n,e)===!1;)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,r);return de.dropRight(r)},t.prototype.attemptInRepetitionRecovery=function(e,r,n,i,a,o,s){},t.prototype.getCurrentGrammarPath=function(e,r){var n=this.getHumanReadableRuleStack(),i=de.cloneArr(this.RULE_OCCURRENCE_STACK),a={ruleStack:n,occurrenceStack:i,lastTok:e,lastTokOccurrence:r};return a},t.prototype.getHumanReadableRuleStack=function(){var e=this;return de.map(this.RULE_STACK,function(r){return e.shortRuleNameToFullName(r)})},t}();$.Recoverable=Ps;function Vi(t,e,r,n,i,a,o){var s=this.getKeyForAutomaticLookahead(n,i),c=this.firstAfterRepMap[s];if(c===void 0){var f=this.getCurrRuleFullName(),p=this.getGAstProductions()[f],l=new a(p,i);c=l.startWalking(),this.firstAfterRepMap[s]=c}var m=c.token,v=c.occurrence,u=c.isEndOfRule;this.RULE_STACK.length===1&&u&&m===void 0&&(m=Ht.EOF,v=1),this.shouldInRepetitionRecoveryBeTried(m,v,o)&&this.tryInRepetitionRecovery(t,e,r,m)}$.attemptInRepetitionRecovery=Vi});var Yt=R(P=>{\"use strict\";Object.defineProperty(P,\"__esModule\",{value:!0});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(t,e,r){return r|e|t}P.getKeyForAutomaticLookahead=Ss;var ic=32-P.BITS_FOR_ALT_IDX});var zi=R(Xt=>{\"use strict\";Object.defineProperty(Xt,\"__esModule\",{value:!0});Xt.LooksAhead=void 0;var be=yt(),ge=k(),Ki=ce(),Fe=Yt(),Ve=vt(),xs=function(){function t(){}return t.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()?new Map:[],ge.isES2015MapSupported()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},t.prototype.preComputeLookaheadFunctions=function(e){var r=this;ge.forEach(e,function(n){r.TRACE_INIT(n.name+\" Rule Lookahead\",function(){var i=Ve.collectMethods(n),a=i.alternation,o=i.repetition,s=i.option,c=i.repetitionMandatory,f=i.repetitionMandatoryWithSeparator,p=i.repetitionWithSeparator;ge.forEach(a,function(l){var m=l.idx===0?\"\":l.idx;r.TRACE_INIT(\"\"+Ve.getProductionDslName(l)+m,function(){var v=be.buildLookaheadFuncForOr(l.idx,n,l.maxLookahead||r.maxLookahead,l.hasPredicates,r.dynamicTokensEnabled,r.lookAheadBuilderForAlternatives),u=Fe.getKeyForAutomaticLookahead(r.fullRuleNameToShort[n.name],Fe.OR_IDX,l.idx);r.setLaFuncCache(u,v)})}),ge.forEach(o,function(l){r.computeLookaheadFunc(n,l.idx,Fe.MANY_IDX,be.PROD_TYPE.REPETITION,l.maxLookahead,Ve.getProductionDslName(l))}),ge.forEach(s,function(l){r.computeLookaheadFunc(n,l.idx,Fe.OPTION_IDX,be.PROD_TYPE.OPTION,l.maxLookahead,Ve.getProductionDslName(l))}),ge.forEach(c,function(l){r.computeLookaheadFunc(n,l.idx,Fe.AT_LEAST_ONE_IDX,be.PROD_TYPE.REPETITION_MANDATORY,l.maxLookahead,Ve.getProductionDslName(l))}),ge.forEach(f,function(l){r.computeLookaheadFunc(n,l.idx,Fe.AT_LEAST_ONE_SEP_IDX,be.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,l.maxLookahead,Ve.getProductionDslName(l))}),ge.forEach(p,function(l){r.computeLookaheadFunc(n,l.idx,Fe.MANY_SEP_IDX,be.PROD_TYPE.REPETITION_WITH_SEPARATOR,l.maxLookahead,Ve.getProductionDslName(l))})})})},t.prototype.computeLookaheadFunc=function(e,r,n,i,a,o){var s=this;this.TRACE_INIT(\"\"+o+(r===0?\"\":r),function(){var c=be.buildLookaheadFuncForOptionalProd(r,e,a||s.maxLookahead,s.dynamicTokensEnabled,i,s.lookAheadBuilderForOptional),f=Fe.getKeyForAutomaticLookahead(s.fullRuleNameToShort[e.name],n,r);s.setLaFuncCache(f,c)})},t.prototype.lookAheadBuilderForOptional=function(e,r,n){return be.buildSingleAlternativeLookaheadFunction(e,r,n)},t.prototype.lookAheadBuilderForAlternatives=function(e,r,n,i){return be.buildAlternativesLookAheadFunc(e,r,n,i)},t.prototype.getKeyForAutomaticLookahead=function(e,r){var n=this.getLastExplicitRuleShortName();return Fe.getKeyForAutomaticLookahead(n,e,r)},t.prototype.getLaFuncFromCache=function(e){},t.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},t.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},t.prototype.setLaFuncCache=function(e,r){},t.prototype.setLaFuncCacheUsingMap=function(e,r){this.lookAheadFuncsCache.set(e,r)},t.prototype.setLaFuncUsingObj=function(e,r){this.lookAheadFuncsCache[e]=r},t}();Xt.LooksAhead=xs});var Hi=R(ke=>{\"use strict\";Object.defineProperty(ke,\"__esModule\",{value:!0});ke.addNoneTerminalToCst=ke.addTerminalToCst=ke.setNodeLocationFull=ke.setNodeLocationOnlyOffset=void 0;function Cs(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset<e.endOffset&&(t.endOffset=e.endOffset)}ke.setNodeLocationOnlyOffset=Cs;function Ls(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.startColumn=e.startColumn,t.startLine=e.startLine,t.endOffset=e.endOffset,t.endColumn=e.endColumn,t.endLine=e.endLine):t.endOffset<e.endOffset&&(t.endOffset=e.endOffset,t.endColumn=e.endColumn,t.endLine=e.endLine)}ke.setNodeLocationFull=Ls;function Ms(t,e,r){t.children[r]===void 0?t.children[r]=[e]:t.children[r].push(e)}ke.addTerminalToCst=Ms;function bs(t,e,r){t.children[e]===void 0?t.children[e]=[r]:t.children[e].push(r)}ke.addNoneTerminalToCst=bs});var Hr=R(Be=>{\"use strict\";Object.defineProperty(Be,\"__esModule\",{value:!0});Be.defineNameProp=Be.functionName=Be.classNameFromInstance=void 0;var Fs=k();function ws(t){return Yi(t.constructor)}Be.classNameFromInstance=ws;var Xi=\"name\";function Yi(t){var e=t.name;return e||\"anonymous\"}Be.functionName=Yi;function Ds(t,e){var r=Object.getOwnPropertyDescriptor(t,Xi);return Fs.isUndefined(r)||r.configurable?(Object.defineProperty(t,Xi,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}Be.defineNameProp=Ds});var ea=R(Y=>{\"use strict\";Object.defineProperty(Y,\"__esModule\",{value:!0});Y.validateRedundantMethods=Y.validateMissingCstMethods=Y.validateVisitor=Y.CstVisitorDefinitionError=Y.createBaseVisitorConstructorWithDefaults=Y.createBaseSemanticVisitorConstructor=Y.defaultVisit=void 0;var ve=k(),At=Hr();function $i(t,e){for(var r=ve.keys(t),n=r.length,i=0;i<n;i++)for(var a=r[i],o=t[a],s=o.length,c=0;c<s;c++){var f=o[c];f.tokenTypeIdx===void 0&&this[f.name](f.children,e)}}Y.defaultVisit=$i;function Us(t,e){var r=function(){};At.defineNameProp(r,t+\"BaseSemantics\");var n={visit:function(i,a){if(ve.isArray(i)&&(i=i[0]),!ve.isUndefined(i))return this[i.name](i.children,a)},validateVisitor:function(){var i=Zi(this,e);if(!ve.isEmpty(i)){var a=ve.map(i,function(o){return o.msg});throw Error(\"Errors Detected in CST Visitor <\"+At.functionName(this.constructor)+`>:\n\t`+(\"\"+a.join(`\n\n`).replace(/\\n/g,`\n\t`)))}}};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=e,r}Y.createBaseSemanticVisitorConstructor=Us;function Gs(t,e,r){var n=function(){};At.defineNameProp(n,t+\"BaseSemanticsWithDefaults\");var i=Object.create(r.prototype);return ve.forEach(e,function(a){i[a]=$i}),n.prototype=i,n.prototype.constructor=n,n}Y.createBaseVisitorConstructorWithDefaults=Gs;var Yr;(function(t){t[t.REDUNDANT_METHOD=0]=\"REDUNDANT_METHOD\",t[t.MISSING_METHOD=1]=\"MISSING_METHOD\"})(Yr=Y.CstVisitorDefinitionError||(Y.CstVisitorDefinitionError={}));function Zi(t,e){var r=Qi(t,e),n=Ji(t,e);return r.concat(n)}Y.validateVisitor=Zi;function Qi(t,e){var r=ve.map(e,function(n){if(!ve.isFunction(t[n]))return{msg:\"Missing visitor method: <\"+n+\"> on \"+At.functionName(t.constructor)+\" CST Visitor.\",type:Yr.MISSING_METHOD,methodName:n}});return ve.compact(r)}Y.validateMissingCstMethods=Qi;var Ws=[\"constructor\",\"visit\",\"validateVisitor\"];function Ji(t,e){var r=[];for(var n in t)ve.isFunction(t[n])&&!ve.contains(Ws,n)&&!ve.contains(e,n)&&r.push({msg:\"Redundant visitor method: <\"+n+\"> on \"+At.functionName(t.constructor)+` CST Visitor\nThere is no Grammar Rule corresponding to this method's name.\n`,type:Yr.REDUNDANT_METHOD,methodName:n});return r}Y.validateRedundantMethods=Ji});var ra=R($t=>{\"use strict\";Object.defineProperty($t,\"__esModule\",{value:!0});$t.TreeBuilder=void 0;var tt=Hi(),K=k(),ta=ea(),Bs=ce(),qs=function(){function t(){}return t.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 <nodeLocationTracking> config option: \"'+e.nodeLocationTracking+'\"')},t.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},t.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},t.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.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}},t.prototype.cstInvocationStateUpdate=function(e,r){var n={name:e,children:{}};this.setInitialNodeLocation(n),this.CST_STACK.push(n)},t.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},t.prototype.cstPostRuleFull=function(e){var r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?(n.endOffset=r.endOffset,n.endLine=r.endLine,n.endColumn=r.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)},t.prototype.cstPostRuleOnlyOffset=function(e){var r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?n.endOffset=r.endOffset:n.startOffset=NaN},t.prototype.cstPostTerminal=function(e,r){var n=this.CST_STACK[this.CST_STACK.length-1];tt.addTerminalToCst(n,r,e),this.setNodeLocationFromToken(n.location,r)},t.prototype.cstPostNonTerminal=function(e,r){var n=this.CST_STACK[this.CST_STACK.length-1];tt.addNoneTerminalToCst(n,r,e),this.setNodeLocationFromNode(n.location,e.location)},t.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},t.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},t.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},t.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},t.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},t}();$t.TreeBuilder=qs});var ia=R(Zt=>{\"use strict\";Object.defineProperty(Zt,\"__esModule\",{value:!0});Zt.LexerAdapter=void 0;var na=ce(),js=function(){function t(){}return t.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(t.prototype,\"input\",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error(\"Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.\");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),t.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):na.END_OF_FILE},t.prototype.LA=function(e){var r=this.currIdx+e;return r<0||this.tokVectorLength<=r?na.END_OF_FILE:this.tokVector[r]},t.prototype.consumeToken=function(){this.currIdx++},t.prototype.exportLexerState=function(){return this.currIdx},t.prototype.importLexerState=function(e){this.currIdx=e},t.prototype.resetLexerState=function(){this.currIdx=-1},t.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},t.prototype.getLexerPosition=function(){return this.exportLexerState()},t}();Zt.LexerAdapter=js});var oa=R(Qt=>{\"use strict\";Object.defineProperty(Qt,\"__esModule\",{value:!0});Qt.RecognizerApi=void 0;var aa=k(),Vs=et(),Xr=ce(),Ks=mt(),zs=jr(),Hs=ne(),Ys=function(){function t(){}return t.prototype.ACTION=function(e){return e.call(this)},t.prototype.consume=function(e,r,n){return this.consumeInternal(r,e,n)},t.prototype.subrule=function(e,r,n){return this.subruleInternal(r,e,n)},t.prototype.option=function(e,r){return this.optionInternal(r,e)},t.prototype.or=function(e,r){return this.orInternal(r,e)},t.prototype.many=function(e,r){return this.manyInternal(e,r)},t.prototype.atLeastOne=function(e,r){return this.atLeastOneInternal(e,r)},t.prototype.CONSUME=function(e,r){return this.consumeInternal(e,0,r)},t.prototype.CONSUME1=function(e,r){return this.consumeInternal(e,1,r)},t.prototype.CONSUME2=function(e,r){return this.consumeInternal(e,2,r)},t.prototype.CONSUME3=function(e,r){return this.consumeInternal(e,3,r)},t.prototype.CONSUME4=function(e,r){return this.consumeInternal(e,4,r)},t.prototype.CONSUME5=function(e,r){return this.consumeInternal(e,5,r)},t.prototype.CONSUME6=function(e,r){return this.consumeInternal(e,6,r)},t.prototype.CONSUME7=function(e,r){return this.consumeInternal(e,7,r)},t.prototype.CONSUME8=function(e,r){return this.consumeInternal(e,8,r)},t.prototype.CONSUME9=function(e,r){return this.consumeInternal(e,9,r)},t.prototype.SUBRULE=function(e,r){return this.subruleInternal(e,0,r)},t.prototype.SUBRULE1=function(e,r){return this.subruleInternal(e,1,r)},t.prototype.SUBRULE2=function(e,r){return this.subruleInternal(e,2,r)},t.prototype.SUBRULE3=function(e,r){return this.subruleInternal(e,3,r)},t.prototype.SUBRULE4=function(e,r){return this.subruleInternal(e,4,r)},t.prototype.SUBRULE5=function(e,r){return this.subruleInternal(e,5,r)},t.prototype.SUBRULE6=function(e,r){return this.subruleInternal(e,6,r)},t.prototype.SUBRULE7=function(e,r){return this.subruleInternal(e,7,r)},t.prototype.SUBRULE8=function(e,r){return this.subruleInternal(e,8,r)},t.prototype.SUBRULE9=function(e,r){return this.subruleInternal(e,9,r)},t.prototype.OPTION=function(e){return this.optionInternal(e,0)},t.prototype.OPTION1=function(e){return this.optionInternal(e,1)},t.prototype.OPTION2=function(e){return this.optionInternal(e,2)},t.prototype.OPTION3=function(e){return this.optionInternal(e,3)},t.prototype.OPTION4=function(e){return this.optionInternal(e,4)},t.prototype.OPTION5=function(e){return this.optionInternal(e,5)},t.prototype.OPTION6=function(e){return this.optionInternal(e,6)},t.prototype.OPTION7=function(e){return this.optionInternal(e,7)},t.prototype.OPTION8=function(e){return this.optionInternal(e,8)},t.prototype.OPTION9=function(e){return this.optionInternal(e,9)},t.prototype.OR=function(e){return this.orInternal(e,0)},t.prototype.OR1=function(e){return this.orInternal(e,1)},t.prototype.OR2=function(e){return this.orInternal(e,2)},t.prototype.OR3=function(e){return this.orInternal(e,3)},t.prototype.OR4=function(e){return this.orInternal(e,4)},t.prototype.OR5=function(e){return this.orInternal(e,5)},t.prototype.OR6=function(e){return this.orInternal(e,6)},t.prototype.OR7=function(e){return this.orInternal(e,7)},t.prototype.OR8=function(e){return this.orInternal(e,8)},t.prototype.OR9=function(e){return this.orInternal(e,9)},t.prototype.MANY=function(e){this.manyInternal(0,e)},t.prototype.MANY1=function(e){this.manyInternal(1,e)},t.prototype.MANY2=function(e){this.manyInternal(2,e)},t.prototype.MANY3=function(e){this.manyInternal(3,e)},t.prototype.MANY4=function(e){this.manyInternal(4,e)},t.prototype.MANY5=function(e){this.manyInternal(5,e)},t.prototype.MANY6=function(e){this.manyInternal(6,e)},t.prototype.MANY7=function(e){this.manyInternal(7,e)},t.prototype.MANY8=function(e){this.manyInternal(8,e)},t.prototype.MANY9=function(e){this.manyInternal(9,e)},t.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},t.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},t.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},t.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},t.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},t.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},t.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},t.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},t.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},t.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},t.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},t.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},t.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},t.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},t.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},t.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},t.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},t.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},t.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},t.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},t.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},t.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},t.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},t.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},t.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},t.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},t.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},t.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},t.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},t.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},t.prototype.RULE=function(e,r,n){if(n===void 0&&(n=Xr.DEFAULT_RULE_CONFIG),aa.contains(this.definedRulesNames,e)){var i=Ks.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),a={message:i,type:Xr.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(a)}this.definedRulesNames.push(e);var o=this.defineRule(e,r,n);return this[e]=o,o},t.prototype.OVERRIDE_RULE=function(e,r,n){n===void 0&&(n=Xr.DEFAULT_RULE_CONFIG);var i=[];i=i.concat(zs.validateRuleIsOverridden(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(i);var a=this.defineRule(e,r,n);return this[e]=a,a},t.prototype.BACKTRACK=function(e,r){return function(){this.isBackTrackingStack.push(1);var n=this.saveRecogState();try{return e.apply(this,r),!0}catch(i){if(Vs.isRecognitionException(i))return!1;throw i}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}},t.prototype.getGAstProductions=function(){return this.gastProductionsCache},t.prototype.getSerializedGastProductions=function(){return Hs.serializeGrammar(aa.values(this.gastProductionsCache))},t}();Qt.RecognizerApi=Ys});var la=R(Jt=>{\"use strict\";Object.defineProperty(Jt,\"__esModule\",{value:!0});Jt.RecognizerEngine=void 0;var q=k(),le=Yt(),er=et(),sa=yt(),rt=Tt(),ua=ce(),Xs=zr(),ca=Ue(),Rt=Xe(),$s=Hr(),Zs=function(){function t(){}return t.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={},q.has(r,\"serializedGrammar\"))throw Error(`The Parser's configuration can no longer contain a <serializedGrammar> property.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\n\tFor Further details.`);if(q.isArray(e)){if(q.isEmpty(e))throw Error(`A Token Vocabulary cannot be empty.\n\tNote that the first argument for the parser constructor\n\tis 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.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\n\tFor Further details.`)}if(q.isArray(e))this.tokensMap=q.reduce(e,function(o,s){return o[s.name]=s,o},{});else if(q.has(e,\"modes\")&&q.every(q.flatten(q.values(e.modes)),Rt.isTokenType)){var n=q.flatten(q.values(e.modes)),i=q.uniq(n);this.tokensMap=q.reduce(i,function(o,s){return o[s.name]=s,o},{})}else if(q.isObject(e))this.tokensMap=q.cloneObj(e);else throw new Error(\"<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition\");this.tokensMap.EOF=ca.EOF;var a=q.every(q.values(e),function(o){return q.isEmpty(o.categoryMatches)});this.tokenMatcher=a?Rt.tokenStructuredMatcherNoCategories:Rt.tokenStructuredMatcher,Rt.augmentTokenTypes(q.values(this.tokensMap))},t.prototype.defineRule=function(e,r,n){if(this.selfAnalysisDone)throw Error(\"Grammar rule <\"+e+`> may not be defined after the 'performSelfAnalysis' method has been called'\nMake sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var i=q.has(n,\"resyncEnabled\")?n.resyncEnabled:ua.DEFAULT_RULE_CONFIG.resyncEnabled,a=q.has(n,\"recoveryValueFunc\")?n.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(p){try{if(this.outputCst===!0){r.apply(this,p);var l=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(l),l}else return r.apply(this,p)}catch(m){return this.invokeRuleCatch(m,i,a)}finally{this.ruleFinallyStateUpdate()}}var c=function(p,l){return p===void 0&&(p=0),this.ruleInvocationStateUpdate(o,e,p),s.call(this,l)},f=\"ruleName\";return c[f]=e,c.originalGrammarAction=r,c},t.prototype.invokeRuleCatch=function(e,r,n){var i=this.RULE_STACK.length===1,a=r&&!this.isBackTracking()&&this.recoveryEnabled;if(er.isRecognitionException(e)){var o=e;if(a){var s=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(s))if(o.resyncedTokens=this.reSyncTo(s),this.outputCst){var c=this.CST_STACK[this.CST_STACK.length-1];return c.recoveredNode=!0,c}else return n();else{if(this.outputCst){var c=this.CST_STACK[this.CST_STACK.length-1];c.recoveredNode=!0,o.partialCstResult=c}throw o}}else{if(i)return this.moveToTerminatedState(),n();throw o}}else throw e},t.prototype.optionInternal=function(e,r){var n=this.getKeyForAutomaticLookahead(le.OPTION_IDX,r);return this.optionInternalLogic(e,r,n)},t.prototype.optionInternalLogic=function(e,r,n){var i=this,a=this.getLaFuncFromCache(n),o,s;if(e.DEF!==void 0){if(o=e.DEF,s=e.GATE,s!==void 0){var c=a;a=function(){return s.call(i)&&c.call(i)}}}else o=e;if(a.call(this)===!0)return o.call(this)},t.prototype.atLeastOneInternal=function(e,r){var n=this.getKeyForAutomaticLookahead(le.AT_LEAST_ONE_IDX,e);return this.atLeastOneInternalLogic(e,r,n)},t.prototype.atLeastOneInternalLogic=function(e,r,n){var i=this,a=this.getLaFuncFromCache(n),o,s;if(r.DEF!==void 0){if(o=r.DEF,s=r.GATE,s!==void 0){var c=a;a=function(){return s.call(i)&&c.call(i)}}}else o=r;if(a.call(this)===!0)for(var f=this.doSingleRepetition(o);a.call(this)===!0&&f===!0;)f=this.doSingleRepetition(o);else throw this.raiseEarlyExitException(e,sa.PROD_TYPE.REPETITION_MANDATORY,r.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,r],a,le.AT_LEAST_ONE_IDX,e,rt.NextTerminalAfterAtLeastOneWalker)},t.prototype.atLeastOneSepFirstInternal=function(e,r){var n=this.getKeyForAutomaticLookahead(le.AT_LEAST_ONE_SEP_IDX,e);this.atLeastOneSepFirstInternalLogic(e,r,n)},t.prototype.atLeastOneSepFirstInternalLogic=function(e,r,n){var i=this,a=r.DEF,o=r.SEP,s=this.getLaFuncFromCache(n);if(s.call(this)===!0){a.call(this);for(var c=function(){return i.tokenMatcher(i.LA(1),o)};this.tokenMatcher(this.LA(1),o)===!0;)this.CONSUME(o),a.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,o,c,a,rt.NextTerminalAfterAtLeastOneSepWalker],c,le.AT_LEAST_ONE_SEP_IDX,e,rt.NextTerminalAfterAtLeastOneSepWalker)}else throw this.raiseEarlyExitException(e,sa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,r.ERR_MSG)},t.prototype.manyInternal=function(e,r){var n=this.getKeyForAutomaticLookahead(le.MANY_IDX,e);return this.manyInternalLogic(e,r,n)},t.prototype.manyInternalLogic=function(e,r,n){var i=this,a=this.getLaFuncFromCache(n),o,s;if(r.DEF!==void 0){if(o=r.DEF,s=r.GATE,s!==void 0){var c=a;a=function(){return s.call(i)&&c.call(i)}}}else o=r;for(var f=!0;a.call(this)===!0&&f===!0;)f=this.doSingleRepetition(o);this.attemptInRepetitionRecovery(this.manyInternal,[e,r],a,le.MANY_IDX,e,rt.NextTerminalAfterManyWalker,f)},t.prototype.manySepFirstInternal=function(e,r){var n=this.getKeyForAutomaticLookahead(le.MANY_SEP_IDX,e);this.manySepFirstInternalLogic(e,r,n)},t.prototype.manySepFirstInternalLogic=function(e,r,n){var i=this,a=r.DEF,o=r.SEP,s=this.getLaFuncFromCache(n);if(s.call(this)===!0){a.call(this);for(var c=function(){return i.tokenMatcher(i.LA(1),o)};this.tokenMatcher(this.LA(1),o)===!0;)this.CONSUME(o),a.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,o,c,a,rt.NextTerminalAfterManySepWalker],c,le.MANY_SEP_IDX,e,rt.NextTerminalAfterManySepWalker)}},t.prototype.repetitionSepSecondInternal=function(e,r,n,i,a){for(;n();)this.CONSUME(r),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,r,n,i,a],n,le.AT_LEAST_ONE_SEP_IDX,e,a)},t.prototype.doSingleRepetition=function(e){var r=this.getLexerPosition();e.call(this);var n=this.getLexerPosition();return n>r},t.prototype.orInternal=function(e,r){var n=this.getKeyForAutomaticLookahead(le.OR_IDX,r),i=q.isArray(e)?e:e.DEF,a=this.getLaFuncFromCache(n),o=a.call(this,i);if(o!==void 0){var s=i[o];return s.ALT.call(this)}this.raiseNoAltException(r,e.ERR_MSG)},t.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new er.NotAllInputParsedException(r,e))}},t.prototype.subruleInternal=function(e,r,n){var i;try{var a=n!==void 0?n.ARGS:void 0;return i=e.call(this,r,a),this.cstPostNonTerminal(i,n!==void 0&&n.LABEL!==void 0?n.LABEL:e.ruleName),i}catch(o){this.subruleInternalError(o,n,e.ruleName)}},t.prototype.subruleInternalError=function(e,r,n){throw er.isRecognitionException(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:n),delete e.partialCstResult),e},t.prototype.consumeInternal=function(e,r,n){var i;try{var a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),i=a):this.consumeInternalError(e,a,n)}catch(o){i=this.consumeInternalRecovery(e,r,o)}return this.cstPostTerminal(n!==void 0&&n.LABEL!==void 0?n.LABEL:e.name,i),i},t.prototype.consumeInternalError=function(e,r,n){var i,a=this.LA(0);throw n!==void 0&&n.ERR_MSG?i=n.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new er.MismatchedTokenException(i,r,a))},t.prototype.consumeInternalRecovery=function(e,r,n){if(this.recoveryEnabled&&n.name===\"MismatchedTokenException\"&&!this.isBackTracking()){var i=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,i)}catch(a){throw a.name===Xs.IN_RULE_RECOVERY_EXCEPTION?n:a}}else throw n},t.prototype.saveRecogState=function(){var e=this.errors,r=q.cloneArr(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}},t.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},t.prototype.ruleInvocationStateUpdate=function(e,r,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r,e)},t.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},t.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},t.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},t.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),ca.EOF)},t.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},t}();Jt.RecognizerEngine=Zs});var pa=R(tr=>{\"use strict\";Object.defineProperty(tr,\"__esModule\",{value:!0});tr.ErrorHandler=void 0;var $r=et(),Zr=k(),fa=yt(),Qs=ce(),Js=function(){function t(){}return t.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=Zr.has(e,\"errorMessageProvider\")?e.errorMessageProvider:Qs.DEFAULT_PARSER_CONFIG.errorMessageProvider},t.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(t.prototype,\"errors\",{get:function(){return Zr.cloneArr(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),t.prototype.raiseEarlyExitException=function(e,r,n){for(var i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],o=fa.getLookaheadPathsForOptionalProd(e,a,r,this.maxLookahead),s=o[0],c=[],f=1;f<=this.maxLookahead;f++)c.push(this.LA(f));var p=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:s,actual:c,previous:this.LA(0),customUserDescription:n,ruleName:i});throw this.SAVE_ERROR(new $r.EarlyExitException(p,this.LA(1),this.LA(0)))},t.prototype.raiseNoAltException=function(e,r){for(var n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],a=fa.getLookaheadPathsForOr(e,i,this.maxLookahead),o=[],s=1;s<=this.maxLookahead;s++)o.push(this.LA(s));var c=this.LA(0),f=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:o,previous:c,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new $r.NoViableAltException(f,this.LA(1),c))},t}();tr.ErrorHandler=Js});var va=R(rr=>{\"use strict\";Object.defineProperty(rr,\"__esModule\",{value:!0});rr.ContentAssist=void 0;var ha=Tt(),da=k(),eu=function(){function t(){}return t.prototype.initContentAssist=function(){},t.prototype.computeContentAssist=function(e,r){var n=this.gastProductionsCache[e];if(da.isUndefined(n))throw Error(\"Rule ->\"+e+\"<- does not exist in this grammar.\");return ha.nextPossibleTokensAfter([n],r,this.tokenMatcher,this.maxLookahead)},t.prototype.getNextPossibleTokenTypes=function(e){var r=da.first(e.ruleStack),n=this.getGAstProductions(),i=n[r],a=new ha.NextAfterTokenWalker(i,e).startWalking();return a},t}();rr.ContentAssist=eu});var Ra=R(nr=>{\"use strict\";Object.defineProperty(nr,\"__esModule\",{value:!0});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=!0,ya=Math.pow(2,nu.BITS_FOR_OCCURRENCE_IDX)-1,_a=Ea.createToken({name:\"RECORDING_PHASE_TOKEN\",pattern:tu.Lexer.NA});ma.augmentTokenTypes([_a]);var ga=Ea.createTokenInstance(_a,`This IToken indicates the Parser is in Recording Phase\n\tSee: 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\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},ou=function(){function t(){}return t.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},t.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT(\"Enable Recording\",function(){for(var r=function(i){var a=i>0?i:\"\";e[\"CONSUME\"+a]=function(o,s){return this.consumeInternalRecord(o,i,s)},e[\"SUBRULE\"+a]=function(o,s){return this.subruleInternalRecord(o,i,s)},e[\"OPTION\"+a]=function(o){return this.optionInternalRecord(o,i)},e[\"OR\"+a]=function(o){return this.orInternalRecord(o,i)},e[\"MANY\"+a]=function(o){this.manyInternalRecord(i,o)},e[\"MANY_SEP\"+a]=function(o){this.manySepFirstInternalRecord(i,o)},e[\"AT_LEAST_ONE\"+a]=function(o){this.atLeastOneInternalRecord(i,o)},e[\"AT_LEAST_ONE_SEP\"+a]=function(o){this.atLeastOneSepFirstInternalRecord(i,o)}},n=0;n<10;n++)r(n);e.consume=function(i,a,o){return this.consumeInternalRecord(a,i,o)},e.subrule=function(i,a,o){return this.subruleInternalRecord(a,i,o)},e.option=function(i,a){return this.optionInternalRecord(a,i)},e.or=function(i,a){return this.orInternalRecord(a,i)},e.many=function(i,a){this.manyInternalRecord(i,a)},e.atLeastOne=function(i,a){this.atLeastOneInternalRecord(i,a)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},t.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT(\"Deleting Recording methods\",function(){for(var r=0;r<10;r++){var n=r>0?r:\"\";delete e[\"CONSUME\"+n],delete e[\"SUBRULE\"+n],delete e[\"OPTION\"+n],delete e[\"OR\"+n],delete e[\"MANY\"+n],delete e[\"MANY_SEP\"+n],delete e[\"AT_LEAST_ONE\"+n],delete e[\"AT_LEAST_ONE_SEP\"+n]}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})},t.prototype.ACTION_RECORD=function(e){},t.prototype.BACKTRACK_RECORD=function(e,r){return function(){return!0}},t.prototype.LA_RECORD=function(e){return ru.END_OF_FILE},t.prototype.topLevelRuleRecord=function(e,r){try{var n=new Pe.Rule({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),r.call(this),this.recordingProdStack.pop(),n}catch(i){if(i.KNOWN_RECORDER_ERROR!==!0)try{i.message=i.message+`\n\t This error was thrown during the \"grammar recording phase\" For more info see:\n\thttps://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch(a){throw i}throw i}},t.prototype.optionInternalRecord=function(e,r){return Ot.call(this,Pe.Option,e,r)},t.prototype.atLeastOneInternalRecord=function(e,r){Ot.call(this,Pe.RepetitionMandatory,r,e)},t.prototype.atLeastOneSepFirstInternalRecord=function(e,r){Ot.call(this,Pe.RepetitionMandatoryWithSeparator,r,e,Ta)},t.prototype.manyInternalRecord=function(e,r){Ot.call(this,Pe.Repetition,r,e)},t.prototype.manySepFirstInternalRecord=function(e,r){Ot.call(this,Pe.RepetitionWithSeparator,r,e,Ta)},t.prototype.orInternalRecord=function(e,r){return au.call(this,e,r)},t.prototype.subruleInternalRecord=function(e,r,n){if(ar(r),!e||oe.has(e,\"ruleName\")===!1){var i=new Error(\"<SUBRULE\"+Aa(r)+\"> argument is invalid\"+(\" expecting a Parser method reference but got: <\"+JSON.stringify(e)+\">\")+(`\n inside top level rule: <`+this.recordingProdStack[0].name+\">\"));throw i.KNOWN_RECORDER_ERROR=!0,i}var a=oe.peek(this.recordingProdStack),o=e.ruleName,s=new Pe.NonTerminal({idx:r,nonTerminalName:o,referencedRule:void 0});return a.definition.push(s),this.outputCst?iu:ir},t.prototype.consumeInternalRecord=function(e,r,n){if(ar(r),!ma.hasShortKeyProperty(e)){var i=new Error(\"<CONSUME\"+Aa(r)+\"> argument is invalid\"+(\" expecting a TokenType reference but got: <\"+JSON.stringify(e)+\">\")+(`\n inside top level rule: <`+this.recordingProdStack[0].name+\">\"));throw i.KNOWN_RECORDER_ERROR=!0,i}var a=oe.peek(this.recordingProdStack),o=new Pe.Terminal({idx:r,terminalType:e});return a.definition.push(o),ga},t}();nr.GastRecorder=ou;function Ot(t,e,r,n){n===void 0&&(n=!1),ar(r);var i=oe.peek(this.recordingProdStack),a=oe.isFunction(e)?e:e.DEF,o=new t({definition:[],idx:r});return n&&(o.separator=e.SEP),oe.has(e,\"MAX_LOOKAHEAD\")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),a.call(this),i.definition.push(o),this.recordingProdStack.pop(),ir}function au(t,e){var r=this;ar(e);var n=oe.peek(this.recordingProdStack),i=oe.isArray(t)===!1,a=i===!1?t:t.DEF,o=new Pe.Alternation({definition:[],idx:e,ignoreAmbiguities:i&&t.IGNORE_AMBIGUITIES===!0});oe.has(t,\"MAX_LOOKAHEAD\")&&(o.maxLookahead=t.MAX_LOOKAHEAD);var s=oe.some(a,function(c){return oe.isFunction(c.GATE)});return o.hasPredicates=s,n.definition.push(o),oe.forEach(a,function(c){var f=new Pe.Alternative({definition:[]});o.definition.push(f),oe.has(c,\"IGNORE_AMBIGUITIES\")?f.ignoreAmbiguities=c.IGNORE_AMBIGUITIES:oe.has(c,\"GATE\")&&(f.ignoreAmbiguities=!0),r.recordingProdStack.push(f),c.ALT.call(r),r.recordingProdStack.pop()}),ir}function Aa(t){return t===0?\"\":\"\"+t}function ar(t){if(t<0||t>ya){var e=new Error(\"Invalid DSL Method idx value: <\"+t+`>\n\t`+(\"Idx value must be a none negative value smaller than \"+(ya+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var Na=R(or=>{\"use strict\";Object.defineProperty(or,\"__esModule\",{value:!0});or.PerformanceTracer=void 0;var Oa=k(),su=ce(),uu=function(){function t(){}return t.prototype.initPerformanceTracer=function(e){if(Oa.has(e,\"traceInitPerf\")){var r=e.traceInitPerf,n=typeof r==\"number\";this.traceInitMaxIdent=n?r:Infinity,this.traceInitPerf=n?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=su.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},t.prototype.TRACE_INIT=function(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;var n=new Array(this.traceInitIndent+1).join(\"\t\");this.traceInitIndent<this.traceInitMaxIdent&&console.log(n+\"--> <\"+e+\">\");var i=Oa.timer(r),a=i.time,o=i.value,s=a>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(n+\"<-- <\"+e+\"> time: \"+a+\"ms\"),this.traceInitIndent--,o}else return r()},t}();or.PerformanceTracer=uu});var Ia=R(sr=>{\"use strict\";Object.defineProperty(sr,\"__esModule\",{value:!0});sr.applyMixins=void 0;function cu(t,e){e.forEach(function(r){var n=r.prototype;Object.getOwnPropertyNames(n).forEach(function(i){if(i!==\"constructor\"){var a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(t.prototype,i,a):t.prototype[i]=r.prototype[i]}})})}sr.applyMixins=cu});var ce=R(U=>{\"use strict\";var ka=U&&U.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(U,\"__esModule\",{value:!0});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=zi(),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:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Sa.defaultParserErrorProvider,nodeLocationTracking:\"none\",traceInitPerf:!1,skipValidations:!1});U.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var Au;(function(t){t[t.INVALID_RULE_NAME=0]=\"INVALID_RULE_NAME\",t[t.DUPLICATE_RULE_NAME=1]=\"DUPLICATE_RULE_NAME\",t[t.INVALID_RULE_OVERRIDE=2]=\"INVALID_RULE_OVERRIDE\",t[t.DUPLICATE_PRODUCTIONS=3]=\"DUPLICATE_PRODUCTIONS\",t[t.UNRESOLVED_SUBRULE_REF=4]=\"UNRESOLVED_SUBRULE_REF\",t[t.LEFT_RECURSION=5]=\"LEFT_RECURSION\",t[t.NONE_LAST_EMPTY_ALT=6]=\"NONE_LAST_EMPTY_ALT\",t[t.AMBIGUOUS_ALTS=7]=\"AMBIGUOUS_ALTS\",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]=\"CONFLICT_TOKENS_RULES_NAMESPACE\",t[t.INVALID_TOKEN_NAME=9]=\"INVALID_TOKEN_NAME\",t[t.NO_NON_EMPTY_LOOKAHEAD=10]=\"NO_NON_EMPTY_LOOKAHEAD\",t[t.AMBIGUOUS_PREFIX_ALTS=11]=\"AMBIGUOUS_PREFIX_ALTS\",t[t.TOO_MANY_ALTS=12]=\"TOO_MANY_ALTS\"})(Au=U.ParserDefinitionErrorType||(U.ParserDefinitionErrorType={}));function Ru(t){return t===void 0&&(t=void 0),function(){return t}}U.EMPTY_ALT=Ru;var ur=function(){function t(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;var n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(e,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),ee.has(r,\"ignoredIssues\"))throw new Error(`The <ignoredIssues> IParserConfig property has been deprecated.\n\tPlease use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.\n\tSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\n\tFor further details.`);this.skipValidations=ee.has(r,\"skipValidations\")?r.skipValidations:U.DEFAULT_PARSER_CONFIG.skipValidations}return t.performSelfAnalysis=function(e){throw Error(\"The **static** `performSelfAnalysis` method has been deprecated.\t\\nUse the **instance** method with the same name instead.\")},t.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT(\"performSelfAnalysis\",function(){var r;e.selfAnalysisDone=!0;var n=e.className;e.TRACE_INIT(\"toFastProps\",function(){ee.toFastProperties(e)}),e.TRACE_INIT(\"Grammar Recording\",function(){try{e.enableRecording(),ee.forEach(e.definedRulesNames,function(a){var o=e[a],s=o.originalGrammarAction,c=void 0;e.TRACE_INIT(a+\" Rule\",function(){c=e.topLevelRuleRecord(a,s)}),e.gastProductionsCache[a]=c})}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===!1){var a=xa.validateGrammar({rules:ee.values(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:ee.values(e.tokensMap),errMsgProvider:Sa.defaultGrammarValidatorErrorProvider,grammarName:n});e.definitionErrors=e.definitionErrors.concat(a)}}),ee.isEmpty(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT(\"computeAllProdsFollows\",function(){var a=lu.computeAllProdsFollows(ee.values(e.gastProductionsCache));e.resyncFollows=a}),e.TRACE_INIT(\"ComputeLookaheadFunctions\",function(){e.preComputeLookaheadFunctions(ee.values(e.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!ee.isEmpty(e.definitionErrors))throw r=ee.map(e.definitionErrors,function(a){return a.message}),new Error(`Parser Definition Errors detected:\n `+r.join(`\n-------------------------------\n`))})},t.DEFER_DEFINITION_ERRORS_HANDLING=!1,t}();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(t){ka(e,t);function e(r,n){n===void 0&&(n=U.DEFAULT_PARSER_CONFIG);var i=this,a=ee.cloneObj(n);return a.outputCst=!0,i=t.call(this,r,a)||this,i}return e}(ur);U.CstParser=Ou;var Nu=function(t){ka(e,t);function e(r,n){n===void 0&&(n=U.DEFAULT_PARSER_CONFIG);var i=this,a=ee.cloneObj(n);return a.outputCst=!1,i=t.call(this,r,a)||this,i}return e}(ur);U.EmbeddedActionsParser=Nu});var La=R(cr=>{\"use strict\";Object.defineProperty(cr,\"__esModule\",{value:!0});cr.createSyntaxDiagramsCode=void 0;var Ca=Er();function Iu(t,e){var r=e===void 0?{}:e,n=r.resourceBase,i=n===void 0?\"https://unpkg.com/chevrotain@\"+Ca.VERSION+\"/diagrams/\":n,a=r.css,o=a===void 0?\"https://unpkg.com/chevrotain@\"+Ca.VERSION+\"/diagrams/diagrams.css\":a,s=`\n<!-- This is a generated file -->\n<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<style>\n body {\n background-color: hsl(30, 20%, 95%)\n }\n</style>\n\n`,c=`\n<link rel='stylesheet' href='`+o+`'>\n`,f=`\n<script src='`+i+`vendor/railroad-diagrams.js'></script>\n<script src='`+i+`src/diagrams_builder.js'></script>\n<script src='`+i+`src/diagrams_behavior.js'></script>\n<script src='`+i+`src/main.js'></script>\n`,p=`\n<div id=\"diagrams\" align=\"center\"></div>\n`,l=`\n<script>\n window.serializedGrammar = `+JSON.stringify(t,null,\" \")+`;\n</script>\n`,m=`\n<script>\n var diagramsDiv = document.getElementById(\"diagrams\");\n main.drawDiagramsFromSerializedGrammar(serializedGrammar, diagramsDiv);\n</script>\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\tColorManagement,\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/**\n * A loader for the VRML format.\n *\n * ```js\n * const loader = new VRMLLoader();\n * const object = await loader.loadAsync( 'models/vrml/house.wrl' );\n * scene.add( object );\n * ```\n *\n * @augments Loader\n * @three_import import { VRMLLoader } from 'three/addons/loaders/VRMLLoader.js';\n */\nclass VRMLLoader extends Loader {\n\n\t/**\n\t * Constructs a new VRML loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded VRML asset\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Scene)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\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\t/**\n\t * Parses the given VRML data and returns the resulting scene.\n\t *\n\t * @param {string} data - The raw VRML data as a string.\n\t * @param {string} path - The URL base path.\n\t * @return {Scene} The parsed scene.\n\t */\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 dynamically 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 ], SRGBColorSpace );\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().setRGB( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ], SRGBColorSpace );\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().setRGB( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ], SRGBColorSpace );\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().setRGB( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ], SRGBColorSpace );\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 primitive)\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 primitive\n\t\t\t\t\t\tconst expandedLineColors = expandLineData( flattenLineColors, coordIndex ); // compute colors for each line segment (rendering primitive)\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 primitive)\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 definitions 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\n\t\t\t\tColorManagement.colorSpaceToWorking( color, SRGBColorSpace );\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 interpolating 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 );\n\n\t\t\t\tColorManagement.colorSpaceToWorking( color, SRGBColorSpace );\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\tAnimationClip,\n\tBone,\n\tFileLoader,\n\tLoader,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tSkeleton,\n\tVector3,\n\tVectorKeyframeTrack\n} from 'three';\n\n/**\n * A loader for the BVH format.\n *\n * Imports BVH files and outputs a single {@link Skeleton} and {@link AnimationClip}.\n * The loader only supports BVH files containing a single root right now.\n *\n * ```js\n * const loader = new BVHLoader();\n * const result = await loader.loadAsync( 'models/bvh/pirouette.bvh' );\n *\n * // visualize skeleton\n * const skeletonHelper = new THREE.SkeletonHelper( result.skeleton.bones[ 0 ] );\n * scene.add( result.skeleton.bones[ 0 ] );\n * scene.add( skeletonHelper );\n *\n * // play animation clip\n * mixer = new THREE.AnimationMixer( result.skeleton.bones[ 0 ] );\n * mixer.clipAction( result.clip ).play();\n * ```\n *\n * @augments Loader\n * @three_import import { BVHLoader } from 'three/addons/loaders/BVHLoader.js';\n */\nclass BVHLoader extends Loader {\n\n\t/**\n\t * Constructs a new BVH loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\t/**\n\t\t * Whether to animate bone positions or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.animateBonePositions = true;\n\n\t\t/**\n\t\t * Whether to animate bone rotations or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.animateBoneRotations = true;\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded BVH asset\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function({skeleton:Skeleton,clip:AnimationClip})} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\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( 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\t/**\n\t * Parses the given BVH data and returns the resulting data.\n\t *\n\t * @param {string} text - The raw BVH data as a string.\n\t * @return {{skeleton:Skeleton,clip:AnimationClip}} An object representing the parsed asset.\n\t */\n\tparse( text ) {\n\n\t\t// reads a string array (lines) from a BVH file\n\t\t// and outputs a skeleton structure including motion data\n\n\t\t// returns thee root node:\n\t\t// { name: '', channels: [], children: [] }\n\t\tfunction readBvh( lines ) {\n\n\t\t\t// read model structure\n\n\t\t\tif ( nextLine( lines ) !== 'HIERARCHY' ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader: HIERARCHY expected.' );\n\n\t\t\t}\n\n\t\t\tconst list = []; // collects flat array of all bones\n\t\t\tconst root = readNode( lines, nextLine( lines ), list );\n\n\t\t\t// read motion data\n\n\t\t\tif ( nextLine( lines ) !== 'MOTION' ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader: MOTION expected.' );\n\n\t\t\t}\n\n\t\t\t// number of frames\n\n\t\t\tlet tokens = nextLine( lines ).split( /[\\s]+/ );\n\t\t\tconst numFrames = parseInt( tokens[ 1 ] );\n\n\t\t\tif ( isNaN( numFrames ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader: Failed to read number of frames.' );\n\n\t\t\t}\n\n\t\t\t// frame time\n\n\t\t\ttokens = nextLine( lines ).split( /[\\s]+/ );\n\t\t\tconst frameTime = parseFloat( tokens[ 2 ] );\n\n\t\t\tif ( isNaN( frameTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader: Failed to read frame time.' );\n\n\t\t\t}\n\n\t\t\t// read frame data line by line\n\n\t\t\tfor ( let i = 0; i < numFrames; i ++ ) {\n\n\t\t\t\ttokens = nextLine( lines ).split( /[\\s]+/ );\n\t\t\t\treadFrameData( tokens, i * frameTime, root );\n\n\t\t\t}\n\n\t\t\treturn list;\n\n\t\t}\n\n\t\t/*\n\t\t\tRecursively reads data from a single frame into the bone hierarchy.\n\t\t\tThe passed bone hierarchy has to be structured in the same order as the BVH file.\n\t\t\tkeyframe data is stored in bone.frames.\n\n\t\t\t- data: splitted string array (frame values), values are shift()ed so\n\t\t\tthis should be empty after parsing the whole hierarchy.\n\t\t\t- frameTime: playback time for this keyframe.\n\t\t\t- bone: the bone to read frame data from.\n\t\t*/\n\t\tfunction readFrameData( data, frameTime, bone ) {\n\n\t\t\t// end sites have no motion data\n\n\t\t\tif ( bone.type === 'ENDSITE' ) return;\n\n\t\t\t// add keyframe\n\n\t\t\tconst keyframe = {\n\t\t\t\ttime: frameTime,\n\t\t\t\tposition: new Vector3(),\n\t\t\t\trotation: new Quaternion()\n\t\t\t};\n\n\t\t\tbone.frames.push( keyframe );\n\n\t\t\tconst quat = new Quaternion();\n\n\t\t\tconst vx = new Vector3( 1, 0, 0 );\n\t\t\tconst vy = new Vector3( 0, 1, 0 );\n\t\t\tconst vz = new Vector3( 0, 0, 1 );\n\n\t\t\t// parse values for each channel in node\n\n\t\t\tfor ( let i = 0; i < bone.channels.length; i ++ ) {\n\n\t\t\t\tswitch ( bone.channels[ i ] ) {\n\n\t\t\t\t\tcase 'Xposition':\n\t\t\t\t\t\tkeyframe.position.x = parseFloat( data.shift().trim() );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Yposition':\n\t\t\t\t\t\tkeyframe.position.y = parseFloat( data.shift().trim() );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Zposition':\n\t\t\t\t\t\tkeyframe.position.z = parseFloat( data.shift().trim() );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Xrotation':\n\t\t\t\t\t\tquat.setFromAxisAngle( vx, parseFloat( data.shift().trim() ) * Math.PI / 180 );\n\t\t\t\t\t\tkeyframe.rotation.multiply( quat );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Yrotation':\n\t\t\t\t\t\tquat.setFromAxisAngle( vy, parseFloat( data.shift().trim() ) * Math.PI / 180 );\n\t\t\t\t\t\tkeyframe.rotation.multiply( quat );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Zrotation':\n\t\t\t\t\t\tquat.setFromAxisAngle( vz, parseFloat( data.shift().trim() ) * Math.PI / 180 );\n\t\t\t\t\t\tkeyframe.rotation.multiply( quat );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.BVHLoader: Invalid channel type.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// parse child nodes\n\n\t\t\tfor ( let i = 0; i < bone.children.length; i ++ ) {\n\n\t\t\t\treadFrameData( data, frameTime, bone.children[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t/*\n\t\t Recursively parses the HIERARCHY section of the BVH file\n\n\t\t - lines: all lines of the file. lines are consumed as we go along.\n\t\t - firstline: line containing the node type and name e.g. 'JOINT hip'\n\t\t - list: collects a flat list of nodes\n\n\t\t returns: a BVH node including children\n\t\t*/\n\t\tfunction readNode( lines, firstline, list ) {\n\n\t\t\tconst node = { name: '', type: '', frames: [] };\n\t\t\tlist.push( node );\n\n\t\t\t// parse node type and name\n\n\t\t\tlet tokens = firstline.split( /[\\s]+/ );\n\n\t\t\tif ( tokens[ 0 ].toUpperCase() === 'END' && tokens[ 1 ].toUpperCase() === 'SITE' ) {\n\n\t\t\t\tnode.type = 'ENDSITE';\n\t\t\t\tnode.name = 'ENDSITE'; // bvh end sites have no name\n\n\t\t\t} else {\n\n\t\t\t\tnode.name = tokens[ 1 ];\n\t\t\t\tnode.type = tokens[ 0 ].toUpperCase();\n\n\t\t\t}\n\n\t\t\tif ( nextLine( lines ) !== '{' ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader: Expected opening { after type & name' );\n\n\t\t\t}\n\n\t\t\t// parse OFFSET\n\n\t\t\ttokens = nextLine( lines ).split( /[\\s]+/ );\n\n\t\t\tif ( tokens[ 0 ] !== 'OFFSET' ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader: Expected OFFSET but got: ' + tokens[ 0 ] );\n\n\t\t\t}\n\n\t\t\tif ( tokens.length !== 4 ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader: Invalid number of values for OFFSET.' );\n\n\t\t\t}\n\n\t\t\tconst offset = new Vector3(\n\t\t\t\tparseFloat( tokens[ 1 ] ),\n\t\t\t\tparseFloat( tokens[ 2 ] ),\n\t\t\t\tparseFloat( tokens[ 3 ] )\n\t\t\t);\n\n\t\t\tif ( isNaN( offset.x ) || isNaN( offset.y ) || isNaN( offset.z ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader: Invalid values of OFFSET.' );\n\n\t\t\t}\n\n\t\t\tnode.offset = offset;\n\n\t\t\t// parse CHANNELS definitions\n\n\t\t\tif ( node.type !== 'ENDSITE' ) {\n\n\t\t\t\ttokens = nextLine( lines ).split( /[\\s]+/ );\n\n\t\t\t\tif ( tokens[ 0 ] !== 'CHANNELS' ) {\n\n\t\t\t\t\tconsole.error( 'THREE.BVHLoader: Expected CHANNELS definition.' );\n\n\t\t\t\t}\n\n\t\t\t\tconst numChannels = parseInt( tokens[ 1 ] );\n\t\t\t\tnode.channels = tokens.splice( 2, numChannels );\n\t\t\t\tnode.children = [];\n\n\t\t\t}\n\n\t\t\t// read children\n\n\t\t\twhile ( true ) {\n\n\t\t\t\tconst line = nextLine( lines );\n\n\t\t\t\tif ( line === '}' ) {\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnode.children.push( readNode( lines, line, list ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/*\n\t\t\trecursively converts the internal bvh node structure to a Bone hierarchy\n\n\t\t\tsource: the bvh root node\n\t\t\tlist: pass an empty array, collects a flat list of all converted THREE.Bones\n\n\t\t\treturns the root Bone\n\t\t*/\n\t\tfunction toTHREEBone( source, list ) {\n\n\t\t\tconst bone = new Bone();\n\t\t\tlist.push( bone );\n\n\t\t\tbone.position.add( source.offset );\n\t\t\tbone.name = source.name;\n\n\t\t\tif ( source.type !== 'ENDSITE' ) {\n\n\t\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\t\tbone.add( toTHREEBone( source.children[ i ], list ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bone;\n\n\t\t}\n\n\t\t/*\n\t\t\tbuilds an AnimationClip from the keyframe data saved in each bone.\n\n\t\t\tbone: bvh root node\n\n\t\t\treturns: an AnimationClip containing position and quaternion tracks\n\t\t*/\n\t\tfunction toTHREEAnimation( bones ) {\n\n\t\t\tconst tracks = [];\n\n\t\t\t// create a position and quaternion animation track for each node\n\n\t\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\t\tconst bone = bones[ i ];\n\n\t\t\t\tif ( bone.type === 'ENDSITE' )\n\t\t\t\t\tcontinue;\n\n\t\t\t\t// track data\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst positions = [];\n\t\t\t\tconst rotations = [];\n\n\t\t\t\tfor ( let j = 0; j < bone.frames.length; j ++ ) {\n\n\t\t\t\t\tconst frame = bone.frames[ j ];\n\n\t\t\t\t\ttimes.push( frame.time );\n\n\t\t\t\t\t// the animation system animates the position property,\n\t\t\t\t\t// so we have to add the joint offset to all values\n\n\t\t\t\t\tpositions.push( frame.position.x + bone.offset.x );\n\t\t\t\t\tpositions.push( frame.position.y + bone.offset.y );\n\t\t\t\t\tpositions.push( frame.position.z + bone.offset.z );\n\n\t\t\t\t\trotations.push( frame.rotation.x );\n\t\t\t\t\trotations.push( frame.rotation.y );\n\t\t\t\t\trotations.push( frame.rotation.z );\n\t\t\t\t\trotations.push( frame.rotation.w );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scope.animateBonePositions ) {\n\n\t\t\t\t\ttracks.push( new VectorKeyframeTrack( bone.name + '.position', times, positions ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scope.animateBoneRotations ) {\n\n\t\t\t\t\ttracks.push( new QuaternionKeyframeTrack( bone.name + '.quaternion', times, rotations ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new AnimationClip( 'animation', - 1, tracks );\n\n\t\t}\n\n\t\t/*\n\t\t\treturns the next non-empty line in lines\n\t\t*/\n\t\tfunction nextLine( lines ) {\n\n\t\t\tlet line;\n\t\t\t// skip empty lines\n\t\t\twhile ( ( line = lines.shift().trim() ).length === 0 ) { }\n\n\t\t\treturn line;\n\n\t\t}\n\n\t\tconst scope = this;\n\n\t\tconst lines = text.split( /[\\r\\n]+/g );\n\n\t\tconst bones = readBvh( lines );\n\n\t\tconst threeBones = [];\n\t\ttoTHREEBone( bones[ 0 ], threeBones );\n\n\t\tconst threeClip = toTHREEAnimation( bones );\n\n\t\treturn {\n\t\t\tskeleton: new Skeleton( threeBones ),\n\t\t\tclip: threeClip\n\t\t};\n\n\t}\n\n}\n\nexport { BVHLoader };\n","import * as THREE from 'three';\nimport { readBlobFromUnzipped,\n readStringFromUnzipped } from '../utils/math';\nimport { VRMLLoader } from 'three/addons/loaders/VRMLLoader.js';\nimport { BVHLoader } from 'three/addons/loaders/BVHLoader.js';\nimport type { BVH } from 'three/addons/loaders/BVHLoader.js';\nimport type { Unzipped } from 'fflate'; // 'three/addons/libs/fflate.module.js';\n\nlet vrmlLoader: VRMLLoader;\nexport async function loadVrmlInUnzipped(unzipped: Unzipped, vrmlFile: string): Promise<THREE.Object3D> {\n if (!vrmlLoader)\n vrmlLoader = new VRMLLoader();\n // URLModifierでVRML内のテクスチャ参照をBlob URLに置換\n vrmlLoader.manager.setURLModifier((url) => {\n if (url.startsWith('./'))\n url = url.substring(2);\n return URL.createObjectURL(readBlobFromUnzipped(unzipped,url));\n });\n\n const mesh = await vrmlLoader.loadAsync(vrmlFile);\n return mesh;\n}\n\nlet bvhLoader: BVHLoader;\nexport async function loadBvhInUnzipped(unzipped: Unzipped, bvhFile: string): Promise<BVH> {\n if (!bvhLoader)\n bvhLoader = new BVHLoader();\n const bvhStr = readStringFromUnzipped(unzipped,bvhFile);\n const obj = await bvhLoader.parse(bvhStr);\n return obj;\n}\n","import * as THREE from 'three';\nimport { ObjectA3 } from './ObjectA3';\nimport type { AsyncInitRequired } from './AsyncInitRequired';\nimport { Vec3 } from './Vec3';\nimport { unzipAsync, readStringFromUnzipped } from '../utils/math';\nimport { loadVrmlInUnzipped,\n loadBvhInUnzipped} from '../three/threeUtils';\nimport type { BVH } from 'three/addons/loaders/BVHLoader.js';\nimport * as TG from '../utils/TypeGuard';\n\ninterface Part {\n wrl: THREE.Object3D;\n}\n\ninterface Action {\n bvh: BVH | null;\n mixer: THREE.AnimationMixer | null;\n clipAction: THREE.AnimationAction | null;\n parts: Record<string,Part>;\n root: THREE.Object3D | null;\n scale: number;\n offset: Vec3;\n}\n\n/**\n * まだ適当。\n */\nexport class Acerola3D extends ObjectA3 implements AsyncInitRequired<Acerola3D> {\n readonly ready: Promise<Acerola3D>;\n private actions: Record<string,Action>;\n private currentAction: Action | null = null;\n comment: string | null = null; // CATALOG.XMLの<c>の中\n bvhs: Record<string,BVH> = {}; // 同じ物、2度読まないように\n vrmls: Record<string,THREE.Object3D> = {}; // 同じ物、2度読まないように\n\n constructor(url: string) {\n super();\n this.ready = this.asyncInit(url);\n this.actions = {};\n }\n\n initObject() {\n // ルートとなるObject3Dだけ用意して後でその中に\n // ロードしたモデルをaddする。\n return new THREE.Object3D();\n }\n\n async asyncInit(url: string) {\n const unzipped = await unzipAsync(url);\n const xmlParser = new DOMParser();\n const xmlStr = readStringFromUnzipped(unzipped,'CATALOG.XML');\n const xmlDoc = xmlParser.parseFromString(xmlStr, \"application/xml\");\n if (xmlDoc.querySelector('parsererror')) {\n console.error(`Acerola3D.asyncInit(): CATALOG.XML parse error.`);\n return this;\n }\n const ns = 'http://acerola3d.sourceforge.jp/a3/catalog';\n const cs = xmlDoc.getElementsByTagNameNS(ns,'c');\n if (cs[0]) this.comment = cs[0].textContent;\n const as = xmlDoc.getElementsByTagNameNS(ns,'a');\n const promises: Promise<any>[] = [];\n Array.from(as).forEach((a) => {\n const actionName = a.getAttribute('an');\n const actionBVH = a.getAttribute('bvh'); // 確か無いときもあった\n const actionScale = a.getAttribute('scale');\n const actionOffset = a.getAttribute('offset');\n if (actionName) {\n const action: Action = {\n bvh: null,\n mixer: null,\n clipAction: null,\n parts: {},\n root: null,\n scale: 1.0,\n offset: new Vec3()\n };\n this.actions[actionName] = action;\n if (actionBVH) {\n if (this.bvhs[actionBVH]) {\n action.bvh = this.bvhs[actionBVH];\n } else {\n const p = loadBvhInUnzipped(unzipped, actionBVH);\n promises.push(p);\n p.then((bvh)=>{action.bvh = bvh;});\n }\n }\n action.scale = actionScale ? Number(actionScale) : 1.0;\n if (actionOffset) {\n const as = actionOffset.split(\" \");\n action.offset.set(Number(as[0]),Number(as[1]),Number(as[2]));\n }\n const parts = a.getElementsByTagNameNS(ns,'p');\n Array.from(parts).forEach((p) => {\n const partName = p.getAttribute('name');\n const wrl = p.getAttribute('wrl');\n if (partName && wrl) {\n if (this.vrmls[wrl]) {\n action.parts[partName] = { wrl: this.vrmls[wrl] };\n } else {\n const p = loadVrmlInUnzipped(unzipped,wrl);\n promises.push(p)\n p.then((wrl)=>{action.parts[partName] = { wrl };});\n }\n }\n });\n }\n });\n await Promise.all(promises);\n for (const action of Object.values(this.actions)) {\n if (action.bvh) {\n action.root = action.bvh.skeleton.bones[0];\n action.root.scale.set(action.scale,action.scale,action.scale);\n action.root.position.set(action.offset.x,action.offset.y,action.offset.z);\n appendPartToBone(action.root,action.parts);\n action.mixer = new THREE.AnimationMixer(action.root);\n action.clipAction = action.mixer.clipAction(action.bvh.clip);\n }\n }\n\n for (const action of Object.values(this.actions)) {\n if (action.root) {\n this.object.add(action.root);\n action.clipAction?.play();\n this.currentAction = action;\n break;\n }\n }\n return this;\n }\n\n action(actionName: string) {\n const a = this.actions[actionName];\n if (a) {\n this.currentAction?.clipAction?.stop();\n if (this.currentAction?.root)\n this.object.remove(this.currentAction?.root);\n this.currentAction = a;\n if (this.currentAction?.root)\n this.object.add(this.currentAction.root);\n this.currentAction?.clipAction?.play();\n }\n }\n\n update(dt: number) {\n super.update(dt);\n if (this.currentAction?.mixer) {\n this.currentAction?.mixer.update(dt);\n }\n }\n}\n\nfunction appendPartToBone(obj: THREE.Object3D, parts: Record<string,Part>) {\n if (TG.isBone(obj)) {\n const part = parts[obj.name];\n if (part)\n obj.add(part.wrl);\n }\n if (obj.children) {\n obj.children.forEach( o => {\n appendPartToBone(o,parts);\n });\n }\n}\n\n","import * as THREE from 'three';\nimport { ObjectA3 } from '../core/ObjectA3';\n\n/**\n * Three.jsで作ったTHREE.MeshなどのObject3Dを\n * a3jsで使うためのA3Object。\n */\nexport class ThreeJS extends ObjectA3 {\n constructor(data: THREE.Object3D) {\n super(data);\n }\n\n initObject(data: THREE.Object3D) {\n return data;\n }\n}\n","import * as THREE from 'three';\nimport { ObjectA3 } from '../core/ObjectA3';\n\n/**\n * BoxGeometryとMeshStandardMaterialでBoxを作る。\n */\nexport class Box extends ObjectA3 {\n constructor(...args: (number | string)[]) {\n super(args);\n }\n\n // 引数が上とあってなさそうだけど、こうするのが正解\n initObject(args: (number | string)[]) {\n const nums = args.filter((a): a is number => typeof a === \"number\");\n const strs = args.filter((a): a is string => typeof a === \"string\");\n const geo = new THREE.BoxGeometry(...nums);\n const c = strs.length > 0 ? strs[0] : \"rgb(128,128,128)\";\n const mat = new THREE.MeshStandardMaterial({color:c});\n const mesh = new THREE.Mesh(geo, mat);\n return mesh;\n }\n}\n","import * as THREE from 'three';\nimport { ObjectA3 } from '../core/ObjectA3';\n\n/**\n * SphereGeometryとMeshStandardMaterialでBoxを作る。\n */\nexport class Sphere extends ObjectA3 {\n constructor(...args: (number | string)[]) {\n super(args);\n }\n\n // 引数が上とあってなさそうだけど、こうするのが正解\n initObject(args: (number | string)[]) {\n const nums = args.filter((a): a is number => typeof a === \"number\");\n const strs = args.filter((a): a is string => typeof a === \"string\");\n const geo = new THREE.SphereGeometry(...nums);\n const c = strs.length > 0 ? strs[0] : \"rgb(128,128,128)\";\n const mat = new THREE.MeshStandardMaterial({color:c});\n const mesh = new THREE.Mesh(geo, mat);\n return mesh;\n }\n}\n","//import * as THREE from 'three';\nimport { ObjectA3 } from '../core/ObjectA3';\nimport { CSS2DObject } from 'three/addons/renderers/CSS2DRenderer.js';\n\n/**\n * HTMLElementを受け取りViewに2D表示する。\n */\nexport class HTML extends ObjectA3 {\n constructor(element: HTMLElement) {\n super(element);\n }\n\n // 引数が上とあってなさそうだけど、こうするのが正解\n initObject(element: HTMLElement) {\n return new CSS2DObject(element);\n }\n}\n"],"names":["isString","value","isMesh","isRoundedBoxGeometry","isBoxGeometry","isSphereGeometry","isIcosahedronGeometry","isCylinderGeometry","isCapsuleGeometry","isBone","isPerspectiveCamera","obj","PhysicsEntity","object","option","RAPIER","RapierPhysicsEngine","R","timestep","world","RapierPhysicsWorld","entity","isRapierPhysicsEntity","dt","n","collisions","handle1","handle2","started","objA","RapierPhysicsEntity","objB","RapierDefaultPhysicsEntity","opt","volumes","TG.isMesh","cv","getShapeAndVolumeFromPrimitive","collisionGroups","v","createTriMeshColliderDesc","computeGeometryVolume","createConvexHullColliderDesc","volumeSum","sum","vol","i","r","colliderDesc","collider","q","mesh","geom","pos","idx","count","geometry","position","index","array","volume","p0","THREE","p1","p2","indices","i0","i1","i2","TG.isRoundedBoxGeometry","ps","sx","sy","sz","radius","TG.isBoxGeometry","TG.isSphereGeometry","TG.isIcosahedronGeometry","TG.isCylinderGeometry","length","TG.isCapsuleGeometry","physicsEngineInstance","initPhysics","Scene","func","c","Quat","xOrQ","y","z","w","l0","l1","q1","q2","t","cosR","tt","w1","w2","s","getQuatOfLookAt","camera","target","up","forward","right","Vec3","trueUp","m00","m01","m02","m10","m11","m12","m20","m21","m22","trace","vec3EulerToQuat","rot","order","quat","xOrV","v1","v2","argY","argZ","argW","q_inv","ObjectA3","data","o","mode","Interpolation","child","message","BalloonInfo","myPartNo","yourPartNo","newLoc","newQuat","newScale","xVO","t0","Camera","ControllerBase","view","event","OrbitController","epsilon","dx","dy","sinX","cosX","sinY","cosY","vecX","vecY","quatX","quatY","newCameraLoc","newCameraQuat","f","times2","x","asyncSleep","time","resolve","unzipAsync","url","arrayBuffer","reject","unzip","err","readStringFromUnzipped","unzipped","path","strFromU8","readBlobFromUnzipped","mime_type","mimeTypeFromPath","mt","re","deepMerge","base","override","result","key","defaultSoundOptions","initSound","Sound","soundFile","options","sound","d","buffer","ViewBase","newScene","oldScene","controller","loc","depth","GeneralCamera","listener","aspect","b","CSS2DObject","Object3D","element","Vector2","source","recursive","_vector","Vector3","_viewMatrix","Matrix4","_viewProjectionMatrix","_a","_b","CSS2DRenderer","parameters","_this","_width","_height","_widthHalf","_heightHalf","cache","domElement","scene","renderObject","zOrder","width","height","hideObject","visible","objectData","getDistanceToSquared","l","object1","object2","filterAndFlatten","sorted","a","distanceA","distanceB","zMax","Canvas","e","dpr","h","size","ndc","dir","worldPos","vec","raycaster","mouse","rect","intersects","objs","o1","a3js","div","p","btn","Window","content","cssWidth","cssHeight","labelCSS","Test","geo","mat","label","TestPhysicsEntity","FontLoader","Loader","manager","onLoad","onProgress","onError","scope","loader","FileLoader","text","font","json","Font","direction","shapes","paths","createPaths","pl","chars","scale","line_height","offsetX","offsetY","char","ret","createPath","glyph","ShapePath","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","TextGeometry","ExtrudeGeometry","initFont","path2","zip","jsonStr","Text3D","str","toTrianglesDrawMode","drawMode","TrianglesDrawMode","TriangleFanDrawMode","TriangleStripDrawMode","numberOfTriangles","newIndices","newGeometry","GLTFLoader","parser","GLTFMaterialsClearcoatExtension","GLTFMaterialsDispersionExtension","GLTFTextureBasisUExtension","GLTFTextureWebPExtension","GLTFTextureAVIFExtension","GLTFMaterialsSheenExtension","GLTFMaterialsTransmissionExtension","GLTFMaterialsVolumeExtension","GLTFMaterialsIorExtension","GLTFMaterialsEmissiveStrengthExtension","GLTFMaterialsSpecularExtension","GLTFMaterialsIridescenceExtension","GLTFMaterialsAnisotropyExtension","GLTFMaterialsBumpExtension","GLTFLightsExtension","GLTFMeshoptCompression","GLTFMeshGpuInstancing","resourcePath","relativeUrl","LoaderUtils","_onError","gltf","dracoLoader","ktx2Loader","meshoptDecoder","callback","extensions","plugins","textDecoder","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","GLTFBinaryExtension","error","GLTFParser","plugin","extensionName","extensionsRequired","GLTFMaterialsUnlitExtension","GLTFDracoMeshCompressionExtension","GLTFTextureTransformExtension","GLTFMeshQuantizationExtension","GLTFRegistry","objects","nodeDefs","nodeIndex","nodeLength","nodeDef","lightIndex","cacheKey","dependency","lightDef","lightNode","color","Color","LinearSRGBColorSpace","range","DirectionalLight","PointLight","SpotLight","assignExtrasToUserData","type","self","light","MeshBasicMaterial","materialParams","materialDef","pending","metallicRoughness","SRGBColorSpace","materialIndex","emissiveStrength","MeshPhysicalMaterial","extension","colorFactor","colorArray","textureIndex","textureDef","name","handler","bufferView","extensionDef","decoder","res","byteOffset","byteLength","stride","meshDef","primitive","WEBGL_CONSTANTS","attributesDef","attributes","accessor","results","nodeObject","meshes","instancedMeshes","Quaternion","instancedMesh","InstancedMesh","attributeName","attr","InstancedBufferAttribute","BINARY_EXTENSION_HEADER_LENGTH","BINARY_EXTENSION_CHUNK_TYPES","headerView","chunkContentsLength","chunkView","chunkIndex","chunkLength","chunkType","contentArray","bufferViewIndex","gltfAttributeMap","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","threeAttributeName","ATTRIBUTES","accessorDef","componentType","WEBGL_COMPONENT_TYPES","attribute","normalized","texture","transform","GLTFCubicSplineInterpolant","Interpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","values","valueSize","offset","t1","stride2","stride3","td","pp","ppp","offset1","offset0","s2","s3","s0","s1","m0","m1","_quaternion","GLTFCubicSplineQuaternionInterpolant","WEBGL_FILTERS","NearestFilter","LinearFilter","NearestMipmapNearestFilter","LinearMipmapNearestFilter","NearestMipmapLinearFilter","LinearMipmapLinearFilter","WEBGL_WRAPPINGS","ClampToEdgeWrapping","MirroredRepeatWrapping","RepeatWrapping","WEBGL_TYPE_SIZES","PATH_PROPERTIES","INTERPOLATION","InterpolateLinear","InterpolateDiscrete","ALPHA_MODES","createDefaultMaterial","MeshStandardMaterial","FrontSide","addUnknownExtensionsToUserData","knownExtensions","objectDef","gltfDef","addMorphTargets","targets","hasMorphPosition","hasMorphNormal","hasMorphColor","il","pendingPositionAccessors","pendingNormalAccessors","pendingColorAccessors","pendingAccessor","accessors","morphPositions","morphNormals","morphColors","updateMorphTargets","targetNames","createPrimitiveKey","primitiveDef","geometryKey","dracoExtension","createAttributesKey","attributesKey","keys","getNormalizedComponentScale","constructor","getImageURIMimeType","uri","_identityMatrix","isSafari","safariVersion","isFirefox","firefoxVersion","userAgent","safariMatch","TextureLoader","ImageBitmapLoader","ext","dependencies","skinDefs","meshDefs","skinIndex","skinLength","joints","ref","updateMappings","original","clone","mappings","defs","def","bufferIndex","bufferDef","bufferViewDef","accessorIndex","itemSize","TypedArray","BufferAttribute","pendingBufferViews","bufferViews","elementBytes","itemBytes","byteStride","bufferAttribute","ibSlice","ibCacheKey","ib","InterleavedBuffer","InterleavedBufferAttribute","itemSizeIndices","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","sourceIndex","sourceDef","promise","sampler","URL","sourceURI","isObjectURL","blob","imageBitmap","Texture","mapName","mapDef","colorSpace","gltfReference","material","useDerivativeTangents","useVertexColors","useFlatShading","pointsMaterial","PointsMaterial","Material","lineMaterial","LineBasicMaterial","cachedMaterial","materialType","materialExtensions","kmuExtension","DoubleSide","alphaMode","emissiveFactor","originalName","sanitizedName","PropertyBinding","primitives","createDracoPrimitive","addPrimitiveAttributes","cached","geometryPromise","BufferGeometry","meshIndex","materials","geometries","SkinnedMesh","Mesh","LineSegments","Line","LineLoop","Points","group","Group","cameraIndex","cameraDef","params","PerspectiveCamera","MathUtils","OrthographicCamera","skinDef","inverseBindMatrices","jointNodes","bones","boneInverses","jointNode","Skeleton","animationIndex","animationDef","animationName","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","channel","input","output","nodes","inputAccessors","outputAccessors","samplers","tracks","node","inputAccessor","outputAccessor","createdTracks","k","animation","AnimationClip","nodePending","childPending","childrenDef","skeletonPending","children","skeleton","nodeName","meshPromise","Bone","matrix","mapping","sceneIndex","sceneDef","nodeIds","reduceAssociations","reducedAssociations","targetName","TypedKeyframeTrack","NumberKeyframeTrack","QuaternionKeyframeTrack","VectorKeyframeTrack","interpolation","outputArray","j","jl","track","scaled","interpolantType","computeBounds","box","Box3","min","max","boxScale","maxDisplacement","vector","sphere","Sphere","assignAttributeAccessor","gltfAttributeName","ColorManagement","_taskCache","DRACOLoader","config","workerLimit","attributeIDs","attributeTypes","vertexColorSpace","taskConfig","taskKey","cachedTask","worker","taskID","taskCost","geometryPending","_worker","geometryData","inputColorSpace","_color","responseType","useJS","librariesPending","libraries","jsContent","fn","DRACOWorker","body","decoderConfig","decoderPending","draco","module","decodeGeometry","buffers","dracoGeometry","decodingStatus","geometryType","attributeType","attributeID","attributeResult","decodeAttribute","decodeIndex","numIndices","ptr","dracoDataType","getDracoDataType","srcByteStride","dstByteStride","dstStride","srcByteLength","dstByteLength","srcArray","dstArray","dstOffset","hasMorphTargets","gltfLoader","GLTFA3","mixer","actions","clip","action","morphs","morphTargetDictionary","morphTargetInfluences","morphName","actionName","Er","Pt","exports","__spreadArray","isEmpty","mapValues","map","flatten","first","last","forEach","isObject","isUndefined","isFunction","drop","dropRight","filter","pick","has","contains","find","cloneArr","cloneObj","findAll","reduce","compact","uniq","partial","isArray","isRegExp","every","difference","some","indexOf","sortBy","zipObject","assign","assignNoOverwrite","defaults","groupBy","merge","NOOP","IDENTITY","packArray","PRINT_ERROR","PRINT_WARNING","isES2015MapSupported","peek","timer","toFastProperties","toBecomeFast","FakeConstructor","fakeInstance","fakeAccess","xt","sn","St","u","A","_","g","m","Lt","He","Ga","Ct","Wa","Ba","qa","pn","ja","un","pe","cn","Ce","Tr","ln","Va","Mt","bt","yr","Ka","za","Ha","T","hn","dn","F","ft","Ye","vn","Ae","Ya","Xa","Za","$a","gr","_r","L","se","Tn","En","Ar","mn","Or","Rr","fe","ue","Q","te","Z","Ja","yn","_n","Qa","gn","An","Rn","On","In","kn","Pn","Nn","eo","to","no","ro","io","ao","Sn","oo","Ft","Xe","N","V","so","uo","co","xn","Cn","Mn","Ln","bn","Nr","Fn","wn","Ir","lo","kr","wt","qe","Ee","fo","po","ho","pt","mo","xe","it","at","Ke","we","ot","It","Qr","st","Jr","en","J","lt","ze","wa","Ua","tn","me","rn","nn","Da","De","ut","fr","pr","kt","hr","dr","vr","an","on","ct","mr","Ue","H","Te","Eo","Pr","To","Dn","yo","_o","Un","Gn","Wn","Bn","qn","jn","Vn","Kn","zn","go","Ao","Ro","ne","S","Le","G","Oo","Re","Hn","Yn","Xn","$n","Zn","Qn","Jn","ei","ti","Dt","No","ht","Gt","Ut","Sr","ie","Io","ri","$e","Wt","Oe","ko","vt","X","Po","W","So","xo","xr","Co","Lo","ni","Bt","Mo","Lr","Ne","qt","ii","Cr","jt","si","ai","oi","Mr","Vt","pi","he","bo","Fo","wo","ui","ci","Do","fi","li","Uo","Go","Me","Ze","Wo","ye","br","hi","mi","Ge","Bo","qo","ce","di","jo","Vo","vi","je","Ei","I","Ko","O","Ti","zo","Et","Ho","Yo","Xo","$o","yi","Qo","Zo","yt","C","_i","D","gi","Jo","Kt","We","es","ts","rs","Ai","Fr","ns","Ri","is","as","os","Oi","Ni","wr","ss","Dr","Ii","us","jr","Ur","M","B","Ie","Gr","Qe","cs","_e","Wr","ls","Br","Pi","Si","Ci","fs","xi","ki","bi","Li","Mi","hs","_t","qr","ds","Fi","wi","Ui","Je","Vr","vs","ms","Di","Es","Ts","et","ae","gt","ys","Gi","Wi","Bi","qi","ji","_s","zt","gs","As","Rs","Os","zr","$","Ht","de","Ns","Is","ks","Kr","Ps","Vi","Yt","P","Ss","zi","Xt","be","ge","Ki","Fe","Ve","xs","Hi","ke","Cs","Ls","Ms","bs","Hr","Be","Fs","ws","Yi","Xi","Ds","ea","Y","ve","At","$i","Us","Zi","Gs","Yr","Qi","Ji","Ws","ra","$t","K","ta","Bs","qs","ia","Zt","na","js","oa","Qt","aa","Vs","Xr","Ks","zs","Hs","Ys","la","Jt","le","er","sa","rt","ua","Xs","ca","Rt","$s","Zs","pa","tr","$r","Zr","fa","Qs","Js","va","rr","ha","da","eu","Ra","nr","oe","Pe","tu","ma","Ea","ru","nu","ir","Ta","ya","ga","iu","ou","Ot","au","ar","Aa","Na","or","Oa","su","uu","Ia","sr","cu","U","ka","ee","lu","Pa","Sa","xa","fu","pu","hu","du","vu","mu","Eu","Tu","yu","_u","gu","Ru","ur","Ou","Nu","La","cr","Ca","Iu","Fa","E","ku","lr","Ma","nt","Pu","Nt","Su","Se","ba","xu","Cu","Lu","Mu","chevrotain","VRMLLoader","nodeMap","generateVRMLTree","tokenData","createTokens","lexer","VRMLLexer","VRMLParser","visitor","createVisitor","lexingResult","cstOutput","createToken","RouteIdentifier","Identifier","nodeTypes","Version","NodeName","DEF","USE","ROUTE","TO","StringLiteral","HexLiteral","NumberLiteral","TrueLiteral","FalseLiteral","NullLiteral","LSquare","RSquare","LCurly","RCurly","Comment","tokens","tokenVocabulary","token","BaseVRMLVisitor","VRMLToASTVisitor","ctx","route","field","processField","use","stringLiteral","numberLiteral","hexLiteral","parseTree","tree","buildNodeMap","getNode","fields","fieldValues","resolveUSE","buildNode","build","buildGroupingNode","buildBackgroundNode","buildShapeNode","buildAppearanceNode","buildMaterialNode","buildImageTextureNode","buildPixelTextureNode","buildTextureTransformNode","buildIndexedFaceSetNode","buildIndexedLineSetNode","buildPointSetNode","buildBoxNode","buildConeNode","buildCylinderNode","buildSphereNode","buildElevationGridNode","buildExtrusionNode","buildGeometricNode","buildWorldInfoNode","fieldName","parseFieldChildren","axis","angle","groundAngle","groundColor","skyAngle","skyColor","skyGeometry","SphereGeometry","skyMaterial","BackSide","paintFaces","toColorArray","sky","groundGeometry","groundMaterial","ground","MeshPhongMaterial","transformData","materialData","textureNode","TEXTURE_TYPE","parseHexColor","hex","textureType","getTextureType","num_components","wrapS","wrapT","DataTexture","textureLoader","worldInfo","coord","normal","texCoord","ccw","solid","creaseAngle","colorIndex","coordIndex","normalIndex","texCoordIndex","colorPerVertex","normalPerVertex","colorNode","coordNode","normalNode","texCoordNode","triangulatedCoordIndex","triangulateFaceIndex","colorAttribute","normalAttribute","uvAttribute","triangulatedColorIndex","computeAttributeFromIndexedData","toNonIndexedAttribute","Float32BufferAttribute","flattenFaceColors","flattenData","triangulatedFaceColors","triangulateFaceData","computeAttributeFromFaceData","convertColorsToLinearSRGB","triangulatedNormalIndex","flattenFaceNormals","triangulatedFaceNormals","computeNormalAttribute","triangulatedTexCoordIndex","positionAttribute","expandedLineIndex","expandLineIndex","expandedColorIndex","flattenLineColors","expandedLineColors","expandLineData","computeAttributeFromLineData","BoxGeometry","openEnded","ConeGeometry","CylinderGeometry","xDimension","zDimension","xSpacing","zSpacing","vertices","normals","colors","uvs","crossSection","spine","orientation","beginCap","endCap","crossSectionClosed","spineVector","scaling","vertex","quaternion","kl","spineCount","crossSectionCount","contour","faces","ShapeUtils","capIndices","face","indexOffset","identifier","owner","start","i3","triangulatedData","vA","vB","vC","uvA","uvB","uvC","faceData","lineData","array2","index2","ab","cb","vertexNormals","Face","nA","weightedNormal","nB","nC","angles","topDown","thresholds","startAngle","point","thresholdIndexA","thresholdIndexB","thresholdA","thresholdB","colorA","colorB","inputText","CstParser","BVHLoader","readBvh","lines","nextLine","list","root","readNode","numFrames","frameTime","readFrameData","bone","keyframe","vx","vy","vz","firstline","numChannels","line","toTHREEBone","toTHREEAnimation","times","positions","rotations","frame","threeBones","threeClip","vrmlLoader","loadVrmlInUnzipped","vrmlFile","bvhLoader","loadBvhInUnzipped","bvhFile","bvhStr","Acerola3D","xmlParser","xmlStr","xmlDoc","promises","actionBVH","actionScale","actionOffset","bvh","parts","partName","wrl","appendPartToBone","TG.isBone","part","ThreeJS","Box","args","nums","strs","HTML"],"mappings":"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","x_google_ignoreList":[13,17,18,20,21,22,24,25,26]}
|
|
1
|
+
{"version":3,"file":"a3js.cjs.js","sources":["../src/utils/TypeGuard.ts","../src/core/Physics.ts","../src/core/Quat.ts","../src/core/Vec3.ts","../src/core/Motion.ts","../src/rapier/RapierPhysics.ts","../src/core/Scene.ts","../src/core/ObjectA3.ts","../src/core/Camera.ts","../src/core/Controller.ts","../src/utils/math.ts","../src/three/Sound.ts","../src/core/ViewBase.ts","../src/core/GeneralCamera.ts","../node_modules/three/examples/jsm/renderers/CSS2DRenderer.js","../src/core/Canvas.ts","../src/core/Window.ts","../src/core/Test.ts","../node_modules/three/examples/jsm/loaders/FontLoader.js","../node_modules/three/examples/jsm/geometries/TextGeometry.js","../src/core/Text3D.ts","../node_modules/three/examples/jsm/utils/BufferGeometryUtils.js","../node_modules/three/examples/jsm/loaders/GLTFLoader.js","../node_modules/three/examples/jsm/loaders/DRACOLoader.js","../src/core/GLTFA3.ts","../node_modules/three/examples/jsm/libs/chevrotain.module.min.js","../node_modules/three/examples/jsm/loaders/VRMLLoader.js","../src/three/BVHLoader2.js","../src/three/threeUtils.ts","../src/core/Acerola3D.ts","../src/three/ThreeJS.ts","../src/three/Box.ts","../src/three/Sphere.ts","../src/three/HTML.ts"],"sourcesContent":["import * as THREE from 'three';\nimport { RoundedBoxGeometry } from 'three/addons/geometries/RoundedBoxGeometry.js';\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\";\n}\n\nexport function isMesh(value: any): value is THREE.Mesh {\n return (value as any).isMesh === true;\n}\n\n// このisBufferGeometryはBufferGeometryだけでなくBoxGeometryなどの\n// サブクラスもOKと判定するっぽい。\nexport function isBufferGeometry(value: any): value is THREE.BufferGeometry {\n return (value as any).isBufferGeometry === true;\n}\n\n// なぜか色々なGeometryが普通の方法(isXXX === \"true\")で\n// 上手く判定できない?まだ全部調べてないから他のGeometryが\n// どう判定されるか不安。今のところthree.jsのRapierPhysicsの\n// 中の判定方法と同じ方法で書いておく。(BufferGeometryは例外!?)\n\nexport function isRoundedBoxGeometry(value: any): value is RoundedBoxGeometry {\n return (value as any).type === \"RoundedBoxGeometry\";\n //return (value as any).isRoundedBoxGeometry === true;\n}\n\nexport function isBoxGeometry(value: any): value is THREE.BoxGeometry {\n return (value as any).type === \"BoxGeometry\";\n //return (value as any).isBoxGeometry === true;\n}\n\nexport function isSphereGeometry(value: any): value is THREE.SphereGeometry {\n return (value as any).type === \"SphereGeometry\";\n //return (value as any).isSphereGeometry === true;\n}\n\nexport function isIcosahedronGeometry(value: any): value is THREE.IcosahedronGeometry {\n return (value as any).type === \"IcosahedronGeometry\";\n //return (value as any).isIcosahedronGeometry === true;\n}\n\nexport function isCylinderGeometry(value: any): value is THREE.CylinderGeometry {\n return (value as any).type === \"CylinderGeometry\";\n //return (value as any).isCylinderGeometry === true;\n}\n\nexport function isCapsuleGeometry(value: any): value is THREE.CapsuleGeometry {\n return (value as any).type === \"CapsuleGeometry\";\n //return (value as any).isCapsuleGeometry === true;\n}\n\n// ほね\nexport function isBone(value: any): value is THREE.Bone {\n return (value as any).isBone === true;\n}\n\n// TypeScriptにobjがSpotLightであることを教えてあげる関数。\n/* function isSpotLight(obj: THREE.Object3D): obj is THREE.SpotLight {\n return (obj as any).isSpotLight === true;\n} */\n// TypeScriptにobjがCameraであることを教えてあげる関数。\n/* function isCamera(obj: any): obj is THREE.Camera {\n return obj.isCamera === true;\n} */\n// TypeScriptにobjがPerspectiveCameraであることを教えてあげる関数。\nexport function isPerspectiveCamera(obj: THREE.Camera): obj is THREE.PerspectiveCamera {\n return (obj as any).isPerspectiveCamera === true;\n}\n","\nimport type { ObjectA3 } from './ObjectA3';\nimport type { MutableVec3 } from './Vec3';\nimport type { MutableQuat } from './Quat';\n\n\n/*\n * 念のため、物理エンジンが変更されてもa3jsへの影響が少なくなるよう\n * 物理エンジンのインターフェースを作っておく。3Dグラフィック側は\n * Three.jsを信じて、ここのインターフェースで使ってしまおう。\n */\n\n/**\n * 物理エンジン全体を管理するインターフェース\n * Sceneのstaticなプロパティのphysicsに一つだけ\n * 生成される。\n */\nexport interface PhysicsEngine {\n readonly isInitialized: boolean;\n\n /**\n * 物理エンジンを初期化する。最初は必要な時に自動で\n * 初期化させることを目指したけど、難しいのであきらめた。\n * 物理演算が必要な場合は、ユーザがこれを実行することになる。\n * 現在のところ初期化の処理は以下のようなプログラムになる。\n * await Scene.physics.init();\n */\n init(): Promise<void>;\n\n /**\n * 物理演算用のWorldを生成して返す。\n */\n createWorld(option: PhysicsWorldOption): PhysicsWorld;\n}\n\n/**\n * PhysicsWorldを生成する時に必要となる情報をまとめたもの。\n * 物理エンジンの実装ごとに拡張可能。\n */\nexport interface PhysicsWorldOption {\n gravity: { x: number; y: number; z: number };\n}\n\n/**\n * 物理演算が行われる空間を表すクラス。物理演算のステップを\n * 進めるupdate、PhysicsEntityを追加・削除するためのadd、remove\n * メソッドを持つ。\n */\nexport interface PhysicsWorld {\n add(entity: PhysicsEntity): void;\n remove(entity: PhysicsEntity): void;\n update(dt: number): void;\n getCollisions(): Collision[];\n}\n\nexport type RigidBodyType = \"dynamic\" | \"kinematic\" | \"fixed\";\nexport type ColliderKind = \"solid\" | \"sensor\";\nexport type MeshColliderKind = \"tri_mesh\" | \"convex_hull\";\n/**\n * PhysicsEngityを生成する時に必要な情報をまとめたもの。\n * 物理エンジンや個別のPhysicsEntityごとに拡張可能。\n */\nexport interface PhysicsEntityOption {\n rigidBody: RigidBodyType;\n collider: ColliderKind;\n meshCollider: MeshColliderKind;\n mass: number;\n friction: number;\n restitution: number;\n membership: number;\n filter: number;\n collisionDetection: boolean\n}\n\nexport const defaultPhysicsEntityOption: PhysicsEntityOption = {\n rigidBody: \"dynamic\",\n collider: \"solid\",\n meshCollider: \"convex_hull\",\n mass: 1.0,\n friction: 0.5,\n restitution: 0.5,\n membership: 0b0000000000000001,\n filter: 0b0000000000000001,\n collisionDetection: false\n};\n\n/**\n * RigidBodyなどの個別のObjectA3に必要な物理計算のための\n * 色々な実体が含まれる物のインターフェース。\n */\nexport abstract class PhysicsEntity {\n object: ObjectA3;\n option: PhysicsEntityOption;\n\n constructor(object: ObjectA3, option: PhysicsEntityOption) {\n this.object = object;\n this.option = option;\n }\n \n /**\n * 物理演算の結果をObjectA3の位置や回転に反映させる。\n */\n abstract synchronize(obj: ObjectA3): void;\n\n /**\n * 物理演算対象であっても位置を外部から操作できるようにする。\n */\n abstract setLocationNow(v: MutableVec3): void;\n\n /**\n * 物理演算対象であっても回転を外部から操作できるようにする。\n */\n abstract setQuatNow(q: MutableQuat): void;\n\n /**\n * 物理演算対象であっても拡大率を外部から操作できるようにする。\n * ただ、これは普通難しいかも。\n */\n abstract setScaleNow(v: MutableVec3): void;\n}\n\n/**\n * 衝突の情報を保持するオブジェクトのインタフェース。\n * もうRapierと独立に設計するのが難しいのでRapierベースで\n * 設計する。\n */\nexport interface Collision {\n objectA: ObjectA3;\n partOfA: number;\n objectB: ObjectA3;\n partOfB: number;\n started: boolean;\n}\n","import { Vec3 } from './Vec3';\n\n/**\n * オイラー角(ラジアン)を四元数に変換する時に、軸の回転順番を\n * 指定するための型。\n */\nexport type RotationOrder = \"XYZ\" | \"XZY\" | \"YXZ\" | \"YZX\" | \"ZXY\" | \"ZYX\";\n\n/**\n * Readonlyな四元数のインタフェース。\n * a3.QuatもTHREE.QuaternionもRapierの{x,y,z,w}にも\n * あてはめられる型。\n */\nexport interface MutableQuat {\n readonly x: number;\n readonly y: number;\n readonly z: number;\n readonly w: number;\n}\n\n/**\n * 四元数\n */\nexport class Quat implements MutableQuat {\n private _x: number;\n private _y: number;\n private _z: number;\n private _w: number;\n\n get x() { return this._x; }\n get y() { return this._y; }\n get z() { return this._z; }\n get w() { return this._w; }\n\n constructor();\n constructor(q: MutableQuat);\n constructor(x: number, y: number, z: number, w: number);\n constructor(xOrQ?: undefined | MutableQuat | number, y?: number, z?: number, w?: number) {\n if (typeof xOrQ === \"number\") {\n this._x = xOrQ;\n this._y = y!;\n this._z = z!;\n this._w = w!;\n } else if (typeof xOrQ === \"undefined\") {\n this._x = this._y = this._z = 0;\n this._w = 1;\n } else {\n this._x = xOrQ.x;\n this._y = xOrQ.y;\n this._z = xOrQ.z;\n this._w = xOrQ.w;\n }\n }\n\n clone() {\n return new Quat(this);\n }\n\n normalize() {\n const l0 = this._x*this._x + this._y*this._y + this._z*this._z + this._w*this._w;\n const l1 = Math.sqrt(l0);\n if (l1 !== 0) {\n this._x /= l1;\n this._y /= l1;\n this._z /= l1;\n this._w /= l1;\n } else {\n console.warn(`Quat.normalize.`);\n }\n return this;\n }\n\n conjugate() {\n this._x *= -1;\n this._y *= -1;\n this._z *= -1;\n // wはそのまま\n return this;\n }\n\n set(q: MutableQuat): Quat;\n set(x: number, y: number, z: number, w: number): Quat;\n set(xOrQ: MutableQuat | number, y?: number, z?: number, w?: number): Quat {\n if (typeof xOrQ === \"number\") {\n this._x = xOrQ;\n this._y = y!;\n this._z = z!;\n this._w = w!;\n } else {\n this._x = xOrQ.x;\n this._y = xOrQ.y;\n this._z = xOrQ.z;\n this._w = xOrQ.w;\n }\n return this;\n }\n\n mul(x: number, y: number, z: number, w: number): Quat;\n mul(q: MutableQuat): Quat;\n mul(xOrQ: number | MutableQuat, y?: number, z?: number, w?: number): Quat {\n const q1 = new Quat(this);\n const q2 = new Quat();\n if (typeof xOrQ === \"number\")\n q2.set(xOrQ, y!, z!, w!);\n else\n q2.set(xOrQ);\n\n this._x = q1.w*q2.x + q1.x*q2.w + q1.y*q2.z - q1.z*q2.y;\n this._y = q1.w*q2.y - q1.x*q2.z + q1.y*q2.w + q1.z*q2.x;\n this._z = q1.w*q2.z + q1.x*q2.y - q1.y*q2.x + q1.z*q2.w;\n this._w = q1.w*q2.w - q1.x*q2.x - q1.y*q2.y - q1.z*q2.z;\n\n return this;\n }\n\n // 線形補間\n lerp(q1: MutableQuat, q2: MutableQuat, t: number) {\n this._x = (1-t)*q1.x + t*q2.x;\n this._y = (1-t)*q1.y + t*q2.y;\n this._z = (1-t)*q1.z + t*q2.z;\n this._w = (1-t)*q1.w + t*q2.w;\n }\n\n // 球面線形補間\n slerp(q1: MutableQuat, q2: MutableQuat, t: number) {\n if (t<0 || t>1) {\n console.warn('Quat.slerp(): t must be in [0,1]');\n return;\n }\n const cosR =\n q1.x * q2.x\n + q1.y * q2.y\n + q1.z * q2.z\n + q1.w * q2.w;\n if (cosR < 0.9995) {\n const tt = Math.acos(cosR);\n const w1 = Math.sin((1-t)*tt) / Math.sin(tt);\n const w2 = Math.sin(t*tt) / Math.sin(tt);\n this._x = w1*q1.x + w2*q2.x;\n this._y = w1*q1.y + w2*q2.y;\n this._z = w1*q1.z + w2*q2.z;\n this._w = w1*q1.w + w2*q2.w;\n } else {\n \n this._x = (1-t)*q1.x + t*q2.x;\n this._y = (1-t)*q1.y + t*q2.y;\n this._z = (1-t)*q1.z + t*q2.z;\n this._w = (1-t)*q1.w + t*q2.w;\n const s = Math.sqrt(\n this._x * this._x\n + this._y * this._y\n + this._z * this._z\n + this._w * this._w\n );\n if (s<0.0001) { // かなりダメな時\n console.warn(\"Quat.slerp(); ???!\");\n this._x = q1.x;\n this._y = q1.y;\n this._z = q1.z;\n this._w = q1.w;\n } else {\n this._x *= 1/s;\n this._y *= 1/s;\n this._z *= 1/s;\n this._w *= 1/s;\n }\n }\n }\n}\n\nexport function getQuatOfLookAt(camera: Vec3,target: Vec3,up: Vec3) {\n up.normalize();\n const forward = target.clone().sub(camera).normalize();\n const right = new Vec3().cross(forward,up).normalize();\n const trueUp = new Vec3().cross(right, forward);\n\n const m00 = right.x; const m01 = trueUp.x; const m02 = -forward.x;\n const m10 = right.y; const m11 = trueUp.y; const m12 = -forward.y;\n const m20 = right.z; const m21 = trueUp.z; const m22 = -forward.z;\n\n const trace = m00 + m11 + m22;\n if (trace > 0) {\n const s = Math.sqrt(trace+1.0)*2.0;\n return new Quat(\n (m21-m12)/s,\n (m02-m20)/s,\n (m10-m01)/s,\n 0.25*s\n );\n } else {\n if ((m00>m11) && (m00>m22)) {\n const s = Math.sqrt(1.0+m00-m11-m22) * 2.0;\n return new Quat(\n 0.25*s,\n (m01+m10)/s,\n (m02+m20)/s,\n (m21-m12)/s\n );\n } else if (m11>m22) {\n const s = Math.sqrt(1.0+m11-m00-m22) * 2.0;\n return new Quat(\n (m01+m10)/s,\n 0.25*s,\n (m12+m21)/s,\n (m02-m20)/s\n );\n } else {\n const s = Math.sqrt(1.0+m22-m00-m11) * 2.0;\n return new Quat(\n (m02+m20)/s,\n (m12+m21)/s,\n 0.25*s,\n (m10-m01)/s\n );\n }\n }\n}\n\n\n/**\n * オイラー角(ラジアン)を四元数に変換する関数、2番目の引数は\n * 軸の回転順番を指定するRotationOrder。\n */\nexport function vec3EulerToQuat(rot: Vec3, order: RotationOrder = \"XYZ\" ): Quat {\n const quat = new Quat(0,0,0,1);\n for (let i=0;i<3;i++) {\n const c = order.charAt(i);\n switch(c) {\n case 'X':\n quat.mul(new Quat(Math.sin(rot.x),0,0,Math.cos(rot.x)))\n break;\n case 'Y':\n quat.mul(new Quat(0,Math.sin(rot.y),0,Math.cos(rot.y)))\n break;\n case 'Z':\n quat.mul(new Quat(0,0,Math.sin(rot.z),Math.cos(rot.z)))\n break;\n }\n }\n return quat;\n}\n","import { Quat, type MutableQuat } from './Quat';\n\n/**\n * Readonlyな3次元ベクトルのインタフェース。\n * a3.Vec3もTHREE.Vector3もRapierの{x,y,z}にも\n * あてはめられる型。\n */\nexport interface MutableVec3 {\n readonly x: number;\n readonly y: number;\n readonly z: number;\n}\n\n/**\n * 3次元ベクトル\n */\nexport class Vec3 implements MutableVec3 {\n private _x: number;\n private _y: number;\n private _z: number;\n\n get x() { return this._x; }\n get y() { return this._y; }\n get z() { return this._z; }\n\n constructor();\n constructor(v: MutableVec3);\n constructor(x: number,y: number,z: number)\n constructor(xOrV?: undefined | MutableVec3 | number, y?: number, z?: number) {\n if (typeof xOrV === \"number\") {\n this._x = xOrV;\n this._y = y!;\n this._z = z!;\n } else if (typeof xOrV === \"undefined\") {\n this._x = this._y = this._z = 0;\n } else {\n this._x = xOrV.x;\n this._y = xOrV.y;\n this._z = xOrV.z;\n }\n }\n\n clone() {\n return new Vec3(this);\n }\n\n normalize() {\n const l0 = this._x*this._x + this._y*this._y + this._z*this._z;\n const l1 = Math.sqrt(l0);\n if (l1 !== 0) {\n this._x /= l1;\n this._y /= l1;\n this._z /= l1;\n } else {\n console.warn(`Vec3.normalize.`);\n }\n return this;\n }\n\n negate() {\n this._x *= -1;\n this._y *= -1;\n this._z *= -1;\n return this;\n }\n\n length() {\n return Math.sqrt(this._x*this._x + this._y*this._y + this._z*this._z);\n }\n\n set(v: MutableVec3): Vec3;\n set(x: number, y: number, z: number): Vec3;\n set(xOrV: MutableVec3 | number, y?: number, z?: number): Vec3 {\n if (typeof xOrV === \"number\") {\n this._x = xOrV;\n this._y = y!;\n this._z = z!;\n } else {\n this._x = xOrV.x;\n this._y = xOrV.y;\n this._z = xOrV.z;\n }\n return this;\n }\n\n add(x: number, y: number, z: number): Vec3;\n add(v: MutableVec3): Vec3;\n add(xOrV: number | MutableVec3, y?: number, z?: number) {\n if (typeof xOrV === \"number\") {\n this._x += xOrV;\n this._y += y!;\n this._z += z!;\n } else {\n this._x += xOrV.x;\n this._y += xOrV.y;\n this._z += xOrV.z;\n }\n return this;\n }\n \n sub(x: number, y: number, z: number): Vec3;\n sub(v: MutableVec3): Vec3;\n sub(xOrV: number | MutableVec3, y?: number, z?: number) {\n if (typeof xOrV === \"number\") {\n this._x -= xOrV;\n this._y -= y!;\n this._z -= z!;\n } else {\n this._x -= xOrV.x;\n this._y -= xOrV.y;\n this._z -= xOrV.z;\n }\n return this;\n }\n\n scale(s: number) {\n this._x *= s;\n this._y *= s;\n this._z *= s;\n return this;\n }\n\n // 自分自身ん引数に与えるとダメな実装\n cross(v1: MutableVec3, v2: MutableVec3) {\n this._x = v1.y*v2.z - v1.z*v2.y;\n this._y = v1.z*v2.x - v1.x*v2.z;\n this._z = v1.x*v2.y - v1.y*v2.x;\n return this;\n }\n\n apply(x: number, y: number, z: number, w: number): Vec3;\n apply(q: MutableQuat): Vec3;\n apply(xOrQ: number | MutableQuat, argY?: number, argZ?: number, argW?: number): Vec3 {\n const q = new Quat();\n if (typeof xOrQ === \"number\")\n q.set(xOrQ,argY!,argZ!,argW!);\n else\n q.set(xOrQ);\n\n const v = new Quat(this._x,this._y,this._z,0);\n const q_inv = new Quat(q).conjugate();\n\n q.mul(v).mul(q_inv);\n\n this._x = q.x;\n this._y = q.y;\n this._z = q.z;\n\n return this;\n }\n\n // 線形補間\n lerp(v1: MutableVec3, v2: MutableVec3, t: number) {\n this._x = (1-t)*v1.x + t*v2.x;\n this._y = (1-t)*v1.y + t*v2.y;\n this._z = (1-t)*v1.z + t*v2.z;\n }\n}\n","import * as THREE from \"three\";\nimport { Vec3 } from './Vec3';\nimport type { MutableVec3 } from './Vec3';\nimport { Quat, getQuatOfLookAt } from './Quat';\nimport type { MutableQuat } from './Quat';\nimport type { RapierPhysicsWorld } from \"../rapier/RapierPhysics\";\nimport { ObjectA3 } from \"./ObjectA3\";\n\n/**\n * ObjectA3が何らかの方法で自動的に動かなければならない\n * 場合に、その動きをコントロールするプログラムを実装する\n * ベースとなるクラス。3Dオブジェクトの移動や回転、3Dキャラ\n * クターのジェスチャーなどがMotionのコントロール対象に含ま\n * れる。例えばモーションキャプチャデータに従う動き、物理\n * エンジンに従う動き、その他プログラムで動きをコントロール\n * したい場合に使われる。\n *\n * このベースとなるMotionクラスでは全てのMotionに実装しておいて\n * 欲しいInterpolation(指定した位置に急に移動せず1秒ほどのCSS\n * アニメーションのように動く機能)、Billboard(常に指定した物体に\n * 向かって正面を向くように回転する機能)の2つを実装しており、\n * 必要に応じて有効化できる。(デフォルトは無効)この2つは両方\n * とも3DオブジェクトのルートとなるTHREE.Object3Dの位置・回転・\n * 拡大のみを操作するもので、それ以外は操作しない。個別の目的の\n * 実装はMotionを継承したクラスが担当する。\n * \n * また、モーションキャプチャデータにもとづく動きのようなものを\n * 実装することを想定して、それを扱うためのメソッド(changeMotion()\n * メソッドなど)が最初から用意されているが、このMotionクラスでは\n * 実装は空であり、継承したクラスで必要としないかぎり、実装\n * しなくても良い。\n * \n * 物理演算の結果にもとづいて動く物体のようなMotionにおいては、\n * InterpolationやBillboardの機能は邪魔である場合もある。\n * このような時にはメソッドをオーバーライドして、Interpolationや\n * Billboardの機能を有効化できないようにすることも許可される。\n * \n * MotionにはObjectA3の同名のメソッドと対応するsetLocation(),\n * setLocationNow()、setQuat()などのメソッドがあり、実際に\n * ObjectA3のメソッドはMotionの同名メソッドを呼び出すラッパー\n * でしかない。Motionの状態や実装によって様々な、状況が考え\n * られるが、他のプログラマがObjectA3のsetLocation()や\n * setLocationNow()などのメソッドでObjectA3を操作することは\n * 可能なかぎり許可されるべきなので、Motionを継承したプログラム\n * 作成者はこれについて考慮して欲しい。例えば物理演算に従う\n * ObjectA3は、基本的に物理演算の結果に従って動くべきなので\n * setLocation()は無効化しても、setLocationNow()が呼び出された\n * 時には強制的に位置を変更できるようにするのが良い。\n * \n * また、物理演算に由来する物理対象を物理空間に加えたり\n * 取り除いたりするためのメソッドとしてaddOnselfToPhysicsと\n * removeOnselfFromPhysicsのメソッドもあるが、これも関係の\n * 無い場合は空実装で良い。\n * \n * ちなみにMotionを実装する時には既存の2つ以上のモーションを\n * 組み合わせて実装すると、楽な場合があるのでメモしておく。\n */\nexport class Motion {\n objectA3: ObjectA3;\n object3D: THREE.Object3D;\n private interpolation?: Interpolation;\n private billboard?: Billboard;\n\n constructor(objectA3: ObjectA3) {\n this.objectA3 = objectA3;\n this.object3D = objectA3.object;\n }\n\n /**\n * Motionが生成された後に動きをコントロールする対象となる\n * a3.ObjectA3(THREE.Object3Dが入ってる)を変更する。\n * @param objectA3 動きをコントロールする対象となるa3.ObjectA3\n */\n setObject(objectA3: ObjectA3) {\n this.objectA3 = objectA3;\n this.object3D = objectA3.object;\n }\n\n /**\n * 補間モードのON,OFFを切り替えます。\n */\n enableInterpolation(on_off: boolean) {\n if (on_off && !this.interpolation)\n this.interpolation = new Interpolation(this.object3D);\n else if (!on_off && this.interpolation)\n this.interpolation = undefined;\n }\n\n /**\n * ビルボード機能のON,OFFを切り替えます。\n * ONにするには対象となるObjectA3を指定し、\n * OFFにするには引数無し(undefined)で呼び出して下さい。\n * すでにビルボード機能がONだが、新しい\n * ビルボードの対象を指定しなおす場合にも、\n * 対象を指定して呼び出して下さい。\n */\n enableBillboard(target?: ObjectA3) {\n if (target && this.billboard)\n this.billboard.setTarget(target.object);\n else if (target && !this.billboard)\n this.billboard = new Billboard(this.objectA3,target.object);\n else\n this.billboard = undefined;\n }\n \n /**\n * \n * @param dt 前のフレームからの経過時間\n */\n update(dt: number) {\n if (this.interpolation)\n this.interpolation.update(dt);\n if (this.billboard) {\n this.billboard.update();\n }\n }\n\n setLocation(loc: MutableVec3) {\n if (this.interpolation)\n this.interpolation.setLocation(loc);\n else\n this.object3D.position.set(loc.x,loc.y,loc.z);\n if (this.billboard)\n this.billboard.update();\n }\n setLocationNow(loc: MutableVec3) {\n if (this.interpolation)\n this.interpolation.setLocationNow(loc);\n else\n this.object3D.position.set(loc.x,loc.y,loc.z);\n if (this.billboard)\n this.billboard.update();\n }\n setQuat(quat: MutableQuat) {\n if (this.billboard)\n return;\n if (this.interpolation)\n this.interpolation.setQuat(quat);\n else\n this.object3D.quaternion.set(quat.x,quat.y,quat.z,quat.w);\n }\n setQuatNow(quat: MutableQuat) {\n if (this.billboard)\n return;\n if (this.interpolation)\n this.interpolation.setQuatNow(quat);\n else\n this.object3D.quaternion.set(quat.x,quat.y,quat.z,quat.w);\n }\n setScale(scale: MutableVec3) {\n if (this.interpolation)\n this.interpolation.setScale(scale);\n else\n this.object3D.scale.set(scale.x,scale.y,scale.z);\n }\n setScaleNow(scale: MutableVec3) {\n if (this.interpolation)\n this.interpolation.setScaleNow(scale);\n else\n this.object3D.scale.set(scale.x,scale.y,scale.z);\n }\n\n changeMotion(_motionName: string) {}\n setPause(_p: boolean) {}\n setTime(_time: number) {}\n\n addOnselfToPhysics(_world: RapierPhysicsWorld) {}\n removeOnselfFromPhysics(_world: RapierPhysicsWorld) {}\n}\n\n/*\n * 補間のための情報と処理を実装したクラス。\n * 必要な時だけMotionに追加される。\n */\nclass Interpolation {\n obj: THREE.Object3D\n firstLoc: Vec3;\n firstRot: Quat;\n firstScale: Vec3;\n nowLoc: Vec3;\n nowRot: Quat;\n nowScale: Vec3;\n lastLoc: Vec3;\n lastRot: Quat;\n lastScale: Vec3;\n nowTime: number;\n duration: number;\n\n constructor(obj: THREE.Object3D) {\n this.obj = obj;\n this.firstLoc = new Vec3(obj.position);\n this.firstRot = new Quat(obj.quaternion);\n this.firstScale = new Vec3(obj.scale);\n this.nowLoc = new Vec3(obj.position);\n this.nowRot = new Quat(obj.quaternion);\n this.nowScale = new Vec3(obj.scale);\n this.lastLoc = new Vec3(obj.position);\n this.lastRot = new Quat(obj.quaternion);\n this.lastScale = new Vec3(obj.scale);\n this.nowTime = 0;\n this.duration = 1;\n }\n\n setLocation(newLoc: MutableVec3) {\n this.firstLoc.set(this.obj.position);\n this.firstRot.set(this.obj.quaternion);\n this.firstScale.set(this.obj.scale);\n this.lastLoc.set(newLoc);\n //this.lastRot.set(this.obj.quaternion);\n //this.lastScale.set(this.obj.scale);\n this.nowTime = 0;\n }\n\n setLocationNow(newLoc: MutableVec3) {\n this.setLocation(newLoc);\n this.nowTime = 1;\n }\n\n setQuat(newQuat: MutableQuat) {\n this.firstLoc.set(this.obj.position);\n this.firstRot.set(this.obj.quaternion);\n this.firstScale.set(this.obj.scale);\n //this.lastLoc.set(this.obj.position);\n this.lastRot.set(newQuat);\n //this.lastScale.set(this.obj.scale);\n this.nowTime = 0;\n }\n\n setQuatNow(newQuat: MutableQuat) {\n this.setQuat(newQuat);\n this.nowTime = 1;\n }\n\n setScale(newScale: MutableVec3) {\n this.firstLoc.set(this.obj.position);\n this.firstRot.set(this.obj.quaternion);\n this.firstScale.set(this.obj.scale);\n //this.lastLoc.set(this.obj.position);\n //this.lastRot.set(this.obj.quaternion);\n this.lastScale.set(newScale);\n this.nowTime = 0;\n }\n\n setScaleNow(newScale: MutableVec3) {\n this.setScale(newScale);\n this.nowTime = 1;\n }\n\n // cssのanimation-timing-functionみたいに\n // 切り替えられるようにしたいね。\n smoothstep(t: number): number {\n return t * t * (3 - 2 * t);\n }\n\n update(dt: number) {\n this.nowTime += dt;\n if (this.nowTime > this.duration) this.nowTime = this.duration;\n const t0 = this.nowTime/this.duration;\n const t = this.smoothstep(t0);\n\n this.nowLoc.lerp(this.firstLoc,this.lastLoc,t);\n // 以下、たぶん球面線形補間。重いけど必要な時ある。\n this.nowRot.slerp(this.firstRot,this.lastRot,t);\n this.nowScale.lerp(this.firstScale,this.lastScale,t);\n\n this.obj.position.set(this.nowLoc.x,this.nowLoc.y,this.nowLoc.z);\n this.obj.quaternion.set(this.nowRot.x,this.nowRot.y,this.nowRot.z,this.nowRot.w);\n this.obj.scale.set(this.nowScale.x,this.nowScale.y,this.nowScale.z);\n }\n}\n\nclass Billboard {\n up: Vec3;\n obj: THREE.Object3D;\n target: THREE.Object3D;\n tmpObjLoc: Vec3 = new Vec3();\n tmpTargetLoc: Vec3 = new Vec3();\n\n constructor(objectA3: ObjectA3, target: THREE.Object3D) {\n this.up = new Vec3();\n if (objectA3.upVector)\n this.up.set(objectA3.upVector);\n else\n this.up.set(ObjectA3.defaultUpVector);\n this.obj = objectA3.object;\n this.target = target;\n }\n\n setTarget(target: THREE.Object3D) {\n this.target = target;\n }\n\n update() {\n this.tmpObjLoc.set(this.obj.position);\n this.tmpTargetLoc.set(this.target.position);\n const quat = getQuatOfLookAt(this.tmpObjLoc,this.tmpTargetLoc,this.up);\n this.obj.quaternion.set(quat.x,quat.y,quat.z,quat.w);\n }\n}\n","//import RAPIER from '@dimforge/rapier3d-compat';\nimport type * as Rapier from '@dimforge/rapier3d-compat';\nimport * as THREE from 'three';\nimport * as TG from '../utils/TypeGuard';\n\nimport { ObjectA3 } from '../core/ObjectA3';\nimport type { MutableVec3 } from '../core/Vec3';\nimport type { MutableQuat } from '../core/Quat';\nimport { PhysicsEntity, defaultPhysicsEntityOption } from '../core/Physics';\nimport type { PhysicsEngine, PhysicsWorld, PhysicsWorldOption,\n PhysicsEntityOption, Collision } from '../core/Physics';\nimport { Motion } from '../core/Motion';\n\nlet RAPIER: typeof import('@dimforge/rapier3d-compat');\n\n\nexport class RapierPhysicsEngine implements PhysicsEngine {\n static RAPIER: typeof import('@dimforge/rapier3d-compat');\n isInitialized: boolean = false;\n constructor() {\n // 物理エンジンを使用しない場合もあることを考えて、\n // コンストラクタでは初期化処理をしないでおくこと。\n }\n\n /**\n * RAPIER物理エンジンの初期化が済んでない時に初期化する\n * 動的インポート使う。\n */\n async init(): Promise<void> {\n if (!RapierPhysicsEngine.RAPIER) {\n const R = await import('@dimforge/rapier3d-compat');\n await R.init(); // using deprecated parameters for the initialization function; pass a single object instead\n RapierPhysicsEngine.RAPIER = R;\n RAPIER = R;\n this.isInitialized = true;\n }\n }\n\n /**\n * RapierWorldを作って返す。\n */\n createWorld(option: RapierPhysicsWorldOption): PhysicsWorld {\n let timestep = 1/60;\n if (this.isRapierWorldOption(option))\n timestep = option.timestep;\n const world = new RAPIER.World(option.gravity);\n return new RapierPhysicsWorld(world,timestep);\n }\n\n private isRapierWorldOption(option: PhysicsWorldOption): option is RapierPhysicsWorldOption {\n return ( /* \"enableCCD\" in option && */ \"timestep\" in option );\n }\n}\n\nexport interface RapierPhysicsWorldOption extends PhysicsWorldOption {\n //enableCCD: boolean;\n timestep: number;\n}\n\nexport class RapierPhysicsWorld implements PhysicsWorld {\n world: Rapier.World;\n timestep: number;\n collisionEventQueue: Rapier.EventQueue;\n\n constructor(world:Rapier.World, timestep:number) {\n this.world = world;\n this.timestep = timestep;\n this.collisionEventQueue = new RAPIER.EventQueue(true);\n this.world.integrationParameters.dt = this.timestep;\n }\n\n add(entity: PhysicsEntity) {\n if (isRapierPhysicsEntity(entity)) {\n entity.addOneself(this);\n } else {\n ; // 何もしない\n }\n }\n\n remove(entity: PhysicsEntity) {\n if (isRapierPhysicsEntity(entity)) {\n entity.removeOneself(this);\n } else {\n ; // 何もしない\n }\n }\n\n update(dt: number) {\n // ここの実装は良く考えた方が良い。今は適当\n const n = Math.ceil(dt / this.timestep);\n for (let i=0;i<n;i++)\n this.world.step(this.collisionEventQueue);\n }\n\n getCollisions(): Collision[] {\n const collisions: Collision[] = [];\n this.collisionEventQueue.drainCollisionEvents((handle1, handle2, started) => {\n const objA = RapierPhysicsEntity.collisionMap.get(handle1);\n const objB = RapierPhysicsEntity.collisionMap.get(handle2);\n if ( objA && objB) {\n collisions.push({\n objectA: objA,\n partOfA: handle1,\n objectB: objB,\n partOfB: handle2,\n started\n });\n }\n });\n return collisions;\n }\n}\n\nexport abstract class RapierPhysicsEntity extends PhysicsEntity {\n static collisionMap: Map<number,ObjectA3> = new Map();\n abstract addOneself(world: RapierPhysicsWorld): void;\n abstract removeOneself(world: RapierPhysicsWorld): void;\n}\n\nfunction isRapierPhysicsEntity(obj: PhysicsEntity): obj is RapierPhysicsEntity {\n return \"addOneself\" in obj && \"removeOneself\" in obj;\n}\n\nexport class RapierDefaultMotion extends Motion {\n bodyDesc: Rapier.RigidBodyDesc;\n body?: Rapier.RigidBody;\n colliderDescs: Rapier.ColliderDesc[] = [];\n colliders: Rapier.Collider[] = [];\n\n constructor(objectA3: ObjectA3,option: Partial<PhysicsEntityOption>) {\n super(objectA3);\n const opt: PhysicsEntityOption = {\n ...defaultPhysicsEntityOption,\n ...option\n };\n switch(opt.rigidBody) {\n case \"dynamic\":\n this.bodyDesc = RAPIER.RigidBodyDesc.dynamic();\n break;\n case \"kinematic\":\n this.bodyDesc = RAPIER.RigidBodyDesc.kinematicPositionBased();\n //this.bodyDesc = RAPIER.RigidBodyDesc.kinematicVelocityBased(); // GAHAこれあったか!\n break;\n case \"fixed\":\n this.bodyDesc = RAPIER.RigidBodyDesc.fixed();\n break;\n }\n this.bodyDesc.setTranslation(\n this.object3D.position.x,\n this.object3D.position.y,\n this.object3D.position.z\n );\n this.bodyDesc.setRotation({\n x: this.object3D.quaternion.x,\n y: this.object3D.quaternion.y,\n z: this.object3D.quaternion.z,\n w: this.object3D.quaternion.w\n });\n const volumes: number[] = [];\n this.object3D.traverse((obj)=>{\n if (TG.isMesh(obj)) {\n const cv = getShapeAndVolumeFromPrimitive(obj.geometry);\n const collisionGroups = (opt.membership << 16) | opt.filter;\n if (cv) {\n cv.colliderDesc.setCollisionGroups(collisionGroups);\n if (opt.collisionDetection)\n cv.colliderDesc.setActiveEvents(RAPIER.ActiveEvents.COLLISION_EVENTS);\n this.colliderDescs.push(cv.colliderDesc);\n cv.colliderDesc.setRestitution(opt.restitution).setFriction(opt.friction);\n volumes.push(cv.volume);\n } else {\n let c: Rapier.ColliderDesc | null, v: number;\n switch(opt.meshCollider) {\n case \"tri_mesh\":\n c = createTriMeshColliderDesc(obj);\n v = computeGeometryVolume(obj.geometry);\n break;\n case \"convex_hull\":\n c = createConvexHullColliderDesc(obj);\n v = computeGeometryVolume(obj.geometry);\n break;\n }\n if (c) {\n c.setCollisionGroups(collisionGroups);\n if (opt.collisionDetection)\n c.setActiveEvents(RAPIER.ActiveEvents.COLLISION_EVENTS);\n this.colliderDescs.push(c);\n volumes.push(v);\n }\n }\n }\n });\n let volumeSum = volumes.reduce((sum,vol)=>sum+vol,0);\n for (let i=0;i<this.colliderDescs.length;i++) {\n this.colliderDescs[i].setRestitution(opt.restitution);\n this.colliderDescs[i].setFriction(opt.friction);\n this.colliderDescs[i].setMass(opt.mass*(volumes[i]/volumeSum));\n }\n }\n setObject(objectA3: ObjectA3): void {\n this.objectA3 = objectA3;\n this.object3D = objectA3.object;\n }\n\n update(_: number) {\n if (this.body) {\n const t = this.body.translation();\n this.object3D.position.set(t.x, t.y, t.z);\n const r = this.body.rotation();\n this.object3D.quaternion.set(r.x, r.y, r.z, r.w);\n }\n }\n\n enableInterpolation(_: boolean) {}\n changeMotion(_: string) {}\n setPause(_: boolean): void {}\n setTime(_: number): void {}\n\n setLocation(_: MutableVec3): void {\n // これはできない物とする\n }\n setLocationNow(v: MutableVec3): void {\n if (this.body)\n this.body.setTranslation(v,true); // true? false?\n }\n\n setQuat(_: MutableQuat): void {\n // これはできない物とする\n }\n setQuatNow(q: MutableQuat): void {\n if (this.body)\n this.body.setRotation(q,true); // true? false?\n }\n\n setScale(_: MutableVec3): void {\n // これはできない物とする\n }\n setScaleNow(_: MutableVec3): void {\n // 簡単ではないのでとりあえず保留\n }\n\n addOnselfToPhysics(world: RapierPhysicsWorld): void {\n this.body = world.world.createRigidBody(this.bodyDesc);\n this.colliderDescs.forEach((colliderDesc)=>{\n const collider = world.world.createCollider(colliderDesc,this.body);\n this.colliders.push(collider);\n RapierPhysicsEntity.collisionMap.set(collider.handle,this.objectA3);\n });\n }\n removeOnselfFromPhysics(world: RapierPhysicsWorld): void {\n if (this.body)\n world.world.removeRigidBody(this.body);\n this.colliders.forEach((collider) => {\n world.world.removeCollider(collider,false); // true? false?\n });\n }\n}\n\n// ------------------------------------\n\nexport function createTriMeshColliderDesc(obj: THREE.Object3D): Rapier.ColliderDesc | null {\n let colliderDesc = null;\n if (TG.isMesh(obj)) {\n const mesh = obj;\n\n // ワールド変換を頂点に焼き込み(スケール/回転/位置を反映)\n mesh.updateWorldMatrix(true, true);\n const geom = mesh.geometry.clone();\n geom.applyMatrix4(mesh.matrixWorld);\n\n // 頂点(Float32Array)とインデックス(Uint32Array)を用意\n const pos = geom.attributes.position.array;\n let idx = geom.index ? geom.index.array : null;\n if (!idx) {\n // 非インデックスの場合は 0..N-1 を生成\n const count = geom.attributes.position.count;\n idx = new Uint32Array(count);\n for (let i = 0; i < count; i++) idx[i] = i;\n } else if (!(idx instanceof Uint32Array)) {\n idx = new Uint32Array(idx); // Rapier 側の型に合わせる\n }\n\n if (pos instanceof Float32Array)\n colliderDesc = RAPIER.ColliderDesc.trimesh(pos, idx);\n }\n return colliderDesc;\n}\n\nexport function createConvexHullColliderDesc(obj: THREE.Object3D): Rapier.ColliderDesc | null {\n let colliderDesc = null;\n if (TG.isMesh(obj)) {\n const mesh = obj;\n\n // ワールド変換を頂点に焼き込み(スケール/回転/位置を反映)\n mesh.updateWorldMatrix(true, true);\n const geom = mesh.geometry.clone();\n geom.applyMatrix4(mesh.matrixWorld);\n\n // 頂点(Float32Array)とインデックス(Uint32Array)を用意\n const pos = geom.attributes.position.array; // Float32Array\n if (pos instanceof Float32Array) {\n // 凸包を Rapier に自動生成させる\n colliderDesc = RAPIER.ColliderDesc.convexHull(pos);\n }\n }\n return colliderDesc;\n}\n\n// -------------------\n\n/**\n * BufferGeometry の体積を計算する\n * - インデックス付き / 非インデックス両対応\n * - 閉じたメッシュ前提\n * made by チャッピー\n */\nexport function computeGeometryVolume(\n geometry: THREE.BufferGeometry\n): number {\n const position = geometry.attributes.position;\n if (!position) {\n throw new Error(\"position attribute not found\");\n }\n\n const index = geometry.index;\n const array = position.array;\n let volume = 0;\n\n const p0 = new THREE.Vector3();\n const p1 = new THREE.Vector3();\n const p2 = new THREE.Vector3();\n\n if (index) {\n // --- インデックス付きジオメトリ ---\n const indices = index.array;\n\n for (let i = 0; i < indices.length; i += 3) {\n const i0 = indices[i] * 3;\n const i1 = indices[i + 1] * 3;\n const i2 = indices[i + 2] * 3;\n\n p0.set(array[i0], array[i0 + 1], array[i0 + 2]);\n p1.set(array[i1], array[i1 + 1], array[i1 + 2]);\n p2.set(array[i2], array[i2 + 1], array[i2 + 2]);\n\n volume += p0.dot(p1.clone().cross(p2));\n }\n } else {\n // --- 非インデックスジオメトリ ---\n for (let i = 0; i < array.length; i += 9) {\n p0.set(array[i], array[i + 1], array[i + 2]);\n p1.set(array[i + 3], array[i + 4], array[i + 5]);\n p2.set(array[i + 6], array[i + 7], array[i + 8]);\n\n volume += p0.dot(p1.clone().cross(p2));\n }\n }\n\n return Math.abs(volume) / 6;\n}\n\n//----------------------------------\n\n/**\n * BufferGeometryからColliderDescを生成する関数。\n * この関数はThree.jsのexamples/jsm/physics/RapierPhysics.jsに\n * かかれていたgetShapeをベースにしている。\n */\nexport function getShapeAndVolumeFromPrimitive( geometry: THREE.BufferGeometry ): {colliderDesc: Rapier.ColliderDesc, volume: number} | null {\n if (TG.isRoundedBoxGeometry(geometry)) {\n const ps = geometry.parameters;\n const sx = typeof ps?.width === \"number\" ? ps.width / 2 : 0.5;\n const sy = typeof ps?.height === \"number\" ? ps.height / 2 : 0.5;\n const sz = typeof ps?.depth === \"number\" ? ps.depth / 2 : 0.5;\n //const radius = typeof ps?.radius === \"number\" ? ps.radius : 0.1; // GAHAなぜ???\n const radius = 0.1;\n return {\n colliderDesc: RAPIER.ColliderDesc.roundCuboid( sx - radius, sy - radius, sz - radius, radius ),\n volume: 2*sx * 2*sy * 2*sz // GAHA radiusも取れないし、不正確な体積\n };\n } else if (TG.isBoxGeometry(geometry)) {\n const ps = geometry.parameters;\n const sx = typeof ps?.width === \"number\" ? ps.width / 2 : 0.5;\n const sy = typeof ps?.height === \"number\" ? ps.height / 2 : 0.5;\n const sz = typeof ps?.depth === \"number\" ? ps.depth / 2 : 0.5;\n return {\n colliderDesc: RAPIER.ColliderDesc.cuboid( sx, sy, sz ),\n volume: 2*sx * 2*sy * 2*sz\n };\n } else if (TG.isSphereGeometry(geometry)) {\n const ps = geometry.parameters;\n const radius = typeof ps?.radius === \"number\" ? ps.radius : 1;\n return {\n colliderDesc: RAPIER.ColliderDesc.ball( radius ),\n volume: 4/3*Math.PI*radius*radius*radius\n };\n } else if (TG.isIcosahedronGeometry(geometry)) {\n const ps = geometry.parameters;\n const radius = typeof ps?.radius === \"number\" ? ps.radius : 1;\n return {\n colliderDesc: RAPIER.ColliderDesc.ball( radius ),\n volume: 4/3*Math.PI*radius*radius*radius\n };\n } else if (TG.isCylinderGeometry(geometry)) {\n const ps = geometry.parameters;\n const radius = typeof ps?.radiusBottom === \"number\" ? ps.radiusBottom : 0.5;\n const length = typeof ps?.height === \"number\" ? ps.height : 0.5;\n return {\n colliderDesc: RAPIER.ColliderDesc.cylinder( length / 2, radius ),\n volume: (Math.PI*radius*radius)*length\n };\n } else if (TG.isCapsuleGeometry(geometry)) {\n const ps = geometry.parameters;\n const radius = typeof ps?.radius === \"number\" ? ps.radius : 0.5;\n const length = typeof ps?.height === \"number\" ? ps.height : 0.5;\n return {\n colliderDesc: RAPIER.ColliderDesc.capsule( length / 2, radius ),\n volume: 4/3*Math.PI*radius*radius*radius + (Math.PI*radius*radius)*length\n };\n }\n return null;\n}\n\nexport const physicsEngineInstance: RapierPhysicsEngine = new RapierPhysicsEngine();\n\nexport async function initPhysics(): Promise<void> {\n await physicsEngineInstance.init();\n}\n\n","import * as THREE from 'three';\nimport { ObjectA3 } from './ObjectA3';\nimport { physicsEngineInstance, RapierPhysicsWorld } from '../rapier/RapierPhysics';\nimport type { PhysicsWorld, Collision } from './Physics';\n\n/**\n * 3D仮想空間を表すクラス。THREE.Sceneを内包していて\n * アップデート処理とかも、ここで行う。\n */\nexport class Scene {\n scene: THREE.Scene;\n objects: ObjectA3[];\n physicsWorld: PhysicsWorld | null = null;\n physicsDt = 1/60;\n collisionListener?: (cs: Collision[]) => void;\n\n constructor() {\n this.scene = new THREE.Scene();\n this.objects = [];\n if (physicsEngineInstance.isInitialized) {\n this.physicsWorld = physicsEngineInstance.createWorld({\n gravity: {x:0.0, y: -9.81, z:0.0},\n timestep: this.physicsDt\n });\n }\n }\n\n add(object: ObjectA3) {\n this.scene.add(object.object);\n this.objects.push(object);\n object.scene = this;\n if (this.physicsWorld instanceof RapierPhysicsWorld)\n object.motion.addOnselfToPhysics(this.physicsWorld);\n }\n\n remove(object: ObjectA3) {\n this.scene.remove(object.object);\n {\n // やりたいのはthis.objects.remove(object);なんだけど無い\n // そして順番は変になるけど以下の方法はゲーム系では速くて\n // 良いらしい。\n const i = this.objects.indexOf(object);\n this.objects[i] = this.objects[this.objects.length-1];\n this.objects.pop();\n }\n object.scene = null;\n if (this.physicsWorld instanceof RapierPhysicsWorld)\n object.motion.removeOnselfFromPhysics(this.physicsWorld);\n }\n\n setCollisionListener(func: (cs: Collision[]) => void) {\n this.collisionListener = func;\n }\n\n update(dt: number) {\n if (this.physicsWorld) {\n this.physicsWorld.update(dt);\n const collisions = this.physicsWorld.getCollisions();\n collisions.forEach((c)=>{\n c.objectA.handleCollision(c.objectB, c.started, c.partOfA, c.partOfB);\n c.objectB.handleCollision(c.objectA, c.started, c.partOfB, c.partOfA);\n });\n if (this.collisionListener && collisions.length>0)\n this.collisionListener(collisions);\n }\n for (const obj of this.objects) {\n obj.update(dt);\n }\n }\n}\n","\nimport * as THREE from 'three';\nimport { Scene } from './Scene';\nimport { Motion } from './Motion';\nimport { defaultPhysicsEntityOption } from './Physics';\nimport type { PhysicsEntityOption } from './Physics';\nimport { RapierDefaultMotion } from '../rapier/RapierPhysics';\nimport { Vec3 } from './Vec3';\nimport type { MutableVec3 } from './Vec3';\nimport { Quat, getQuatOfLookAt, vec3EulerToQuat } from './Quat';\nimport type { MutableQuat, RotationOrder } from './Quat';\n\n/**\n * スクリーン上における方向を表します。\n * オブジェクトに吹き出しを出す場合の方向で使いますが、\n * それ以外でも使うかも。\n */\nexport type Dir =\n | \"TOP\"\n | \"RIGHT\"\n | \"LEFT\"\n | \"BOTTOM\";\n\n// BalloonInfoとInterpolationの実装は長いので一番下に移動した。\n\n/**\n * シーンの中に配置される全てのオブジェクトのベース\n * となるアブストラクトクラス。シーンの中の表示対象\n * はもちろん、カメラやライトなどもこのクラスのサブ\n * クラスにしないといけない。特に、このアブストラクト\n * クラスでは、3D空間内での移動や、物理演算に関する\n * 必要なメソッドを実装する。\n */\nexport abstract class ObjectA3 {\n static defaultRotationOrder: RotationOrder = \"XYZ\";\n static defaultUpVector: Vec3 = new Vec3(0,1,0);\n rotationOrder: RotationOrder | null = null;\n upVector: Vec3 | null = null;\n object: THREE.Object3D;\n scene: Scene | null = null;\n private balloon: BalloonInfo | null = null;\n motion: Motion;\n parent: ObjectA3 | null = null;\n children: ObjectA3[] = [];\n clickListener?: (o: ObjectA3)=>void;\n\n constructor(data?: any) {\n this.object = this.initObject(data);\n this.object.traverse((o)=>{\n o.userData['a3js'] = { objectA3: this };\n });\n this.motion = this.initMotion();\n }\n\n // 非同期でないと無理な場合などはとりあえず\n // 空のTHREE.Object3Dだけ返しておいて後で、\n // そのObject3DにaddすればOK。\n abstract initObject(data?: any): THREE.Object3D;\n\n /**\n * このObjectA3で使用されるMotionを返す。\n * デフォルトではMotionなのだが、\n * このメソッドをオーバーライドすることで\n * Motionを継承した物に変更可能。\n * @param _data コンストラクタから渡された情報\n * @returns このObjectA3で使用されるMotion\n */\n initMotion(_data?: any): Motion {\n return new Motion(this);\n }\n setMotion(motion: Motion) {\n motion.setObject(this);\n this.motion = motion;\n }\n action(actionName: string) {\n this.motion.changeMotion(actionName);\n }\n enableInterpolation(i: boolean) {\n this.motion.enableInterpolation(i);\n }\n initDefaultPhysics(option: PhysicsEntityOption) {\n const opt = {\n ...defaultPhysicsEntityOption,\n ...option\n };\n this.motion = new RapierDefaultMotion(this,opt);\n }\n\n update(dt: number) {\n this.motion.update(dt);\n this.children.forEach((child)=>{\n child.update(dt);\n });\n }\n\n add(obj: ObjectA3) {\n if (obj.scene) {console.warn('ObjectA3.add(obj) is ignored.');return;}\n if (obj.parent) {console.warn('ObjectA3.add(obj) is ignored.');return;}\n // if (this.children.includes(obj)) return; // ちゃんと管理されてれば必要ない\n this.children.push(obj);\n obj.parent = this;\n this.object.add(obj.object);\n }\n\n remove(obj: ObjectA3) {\n if (obj.parent !== this) {console.warn('ObjectA3.remove(obj) is ignored.');return;}\n // if (!this.children.includes(obj)) return; // ちゃんと管理されてれば必要ない\n const idx = this.children.indexOf(obj);\n this.children.splice(idx,1);\n obj.parent = null;\n this.object.remove(obj.object);\n }\n\n setBalloon(message: string) {\n if (!this.balloon)\n this.balloon = new BalloonInfo(message);\n else\n this.balloon.message = message;\n }\n\n /**\n * リスナーは1個しか登録されません。2つ\n * 登録しようとすると、最初のリスナーは\n * 捨てられます。\n */\n setClickListener(func: (o: ObjectA3)=>void) {\n this.clickListener = func;\n }\n\n /**\n * 物理エンジンにより衝突が検知されたら呼び出される。\n * @param obj 衝突相手\n * @param started 衝突開始の時true、衝突終了の時false\n * @param myPartNo ぶつかったパーツのColliderの番号\n * @param yourPartNo 相手のぶつかったパーツのClliderの番号\n */\n handleCollision(obj: ObjectA3, started: boolean, myPartNo: number, yourPartNo: number) {\n obj; started; myPartNo; yourPartNo;\n }\n\n async clicked() {\n if (this.clickListener)\n await this.clickListener(this);\n }\n\n get locX(): number { return this.object.position.x; }\n get locY(): number { return this.object.position.y; }\n get locZ(): number { return this.object.position.z; }\n setLocation(x: number, y: number, z: number): void;\n setLocation(v: MutableVec3): void;\n setLocation(xOrV: number | MutableVec3, y?: number, z?: number): void {\n const newLoc = new Vec3();\n if (typeof xOrV === \"number\") {\n newLoc.set(xOrV, y!, z!);\n } else {\n newLoc.set(xOrV);\n }\n this.motion.setLocation(newLoc);\n }\n\n setLocationNow(x: number, y: number, z: number): void;\n setLocationNow(v: MutableVec3): void;\n setLocationNow(xOrV: number | MutableVec3, y?: number, z?: number): void {\n const newLoc = new Vec3();\n if (typeof xOrV === \"number\") {\n newLoc.set(xOrV, y!, z!);\n } else {\n newLoc.set(xOrV);\n }\n this.motion.setLocationNow(newLoc);\n this.object.position.set(newLoc.x,newLoc.y,newLoc.z);\n }\n\n\n\n\n get quatX(): number { return this.object.quaternion.x; }\n get quatY(): number { return this.object.quaternion.y; }\n get quatZ(): number { return this.object.quaternion.z; }\n get quatW(): number { return this.object.quaternion.w; }\n setQuat(x: number, y: number, z: number, w: number): void;\n setQuat(q: MutableQuat): void;\n setQuat(xOrQ: number | MutableQuat, y?: number, z?: number, w?: number): void {\n const newQuat = new Quat();\n if (typeof xOrQ === \"number\") {\n newQuat.set(xOrQ, y!, z!, w!);\n } else {\n newQuat.set(xOrQ);\n }\n this.motion.setQuat(newQuat);\n }\n\n setQuatNow(x: number, y: number, z: number, w: number): void;\n setQuatNow(q: MutableQuat): void;\n setQuatNow(xOrQ: number | MutableQuat, y?: number, z?: number, w?: number): void {\n const newQuat = new Quat();\n if (typeof xOrQ === \"number\") {\n newQuat.set(xOrQ, y!, z!, w!);\n } else {\n newQuat.set(xOrQ);\n }\n this.motion.setQuatNow(newQuat);\n }\n\n get scaleX(): number { return this.object.scale.x; }\n get scaleY(): number { return this.object.scale.y; }\n get scaleZ(): number { return this.object.scale.z; }\n setScale(x: number, y: number, z: number): void;\n setScale(v: MutableVec3): void;\n setScale(xOrV: number | MutableVec3, y?: number, z?: number): void {\n const newScale = new Vec3();\n if (typeof xOrV === \"number\") {\n newScale.set(xOrV, y!, z!);\n } else {\n newScale.set(xOrV);\n }\n this.motion.setScale(newScale);\n }\n\n setScaleNow(x: number, y: number, z: number): void;\n setScaleNow(v: MutableVec3): void;\n setScaleNow(xOrV: number | MutableVec3, y?: number, z?: number): void {\n const newScale = new Vec3();\n if (typeof xOrV === \"number\") {\n newScale.set(xOrV, y!, z!);\n } else {\n newScale.set(xOrV);\n }\n this.motion.setScaleNow(newScale);\n }\n\n /**\n * オイラー角で回転を設定。単位はラジアンではなくデグリー\n * (360度で1回転)とする。回転の合成の順番はthis.rotationOrderの\n * 設定によるが、それがnullの時はObject3D.defaultRotationOrderの\n * 順番になる。\n */\n setRotation(x: number, y: number, z: number): void;\n setRotation(v: MutableVec3): void;\n setRotation(xOrV: number | MutableVec3, y?: number, z?: number): void {\n const rot = new Vec3();\n if (typeof xOrV === \"number\")\n rot.set(xOrV, y!, z!);\n else\n rot.set(xOrV);\n rot.scale(Math.PI/360); // デグリー to ラジアン & t to t/2\n const order = this.rotationOrder ? this.rotationOrder : ObjectA3.defaultRotationOrder;\n const quat = vec3EulerToQuat(rot,order);\n this.setQuat(quat);\n }\n\n setRotationNow(x: number, y: number, z: number): void;\n setRotationNow(v: MutableVec3): void;\n setRotationNow(xOrV: number | MutableVec3, y?: number, z?: number): void {\n const rot = new Vec3();\n if (typeof xOrV === \"number\")\n rot.set(xOrV, y!, z!);\n else\n rot.set(xOrV);\n const order = this.rotationOrder ? this.rotationOrder : ObjectA3.defaultRotationOrder;\n const quat = new Quat(0,0,0,1);\n for (let i=0;i<3;i++) {\n const c = order.charAt(i);\n switch(c) {\n case 'X':\n quat.mul(new Quat(Math.sin(rot.x),0,0,Math.cos(rot.x)))\n break;\n case 'Y':\n quat.mul(new Quat(0,Math.sin(rot.y),0,Math.cos(rot.y)))\n break;\n case 'Z':\n quat.mul(new Quat(0,0,Math.sin(rot.z),Math.cos(rot.z)))\n break;\n }\n }\n this.setQuatNow(quat);\n }\n\n lookAt(x: number, y: number, z: number): void;\n lookAt(v: MutableVec3): void;\n lookAt(o: ObjectA3): void;\n lookAt(xVO: number | MutableVec3 | ObjectA3, y?: number, z?: number) {\n const target = new Vec3();\n if (typeof xVO === \"number\") {\n target.set(xVO,y!,z!);\n } else if (xVO instanceof ObjectA3) {\n target.set(xVO.locX,xVO.locY,xVO.locZ);\n } else {\n target.set(xVO);\n }\n const up = this.upVector ? this.upVector : ObjectA3.defaultUpVector;\n const newQuat = getQuatOfLookAt(new Vec3(this.object.position),target,up);\n this.setQuat(newQuat);\n }\n\n lookAtNow(x: number, y: number, z: number): void;\n lookAtNow(v: MutableVec3): void;\n lookAtNow(o: ObjectA3): void;\n lookAtNow(xVO: number | MutableVec3 | ObjectA3, y?: number, z?: number) {\n const target = new Vec3();\n if (typeof xVO === \"number\") {\n target.set(xVO,y!,z!);\n } else if (xVO instanceof ObjectA3) {\n target.set(xVO.locX,xVO.locY,xVO.locZ);\n } else {\n target.set(xVO);\n }\n const up = this.upVector ? this.upVector : ObjectA3.defaultUpVector;\n const newQuat = getQuatOfLookAt(new Vec3(this.object.position),target,up);\n this.setQuatNow(newQuat);\n }\n\n getUnitVecX(): Vec3 {\n const vecX = new Vec3(1,0,0);\n return vecX.apply(this.object.quaternion);\n }\n getUnitVecY(): Vec3 {\n const vecY = new Vec3(0,1,0);\n return vecY.apply(this.object.quaternion);\n }\n getUnitVecZ(): Vec3 {\n const vecZ = new Vec3(0,0,1);\n return vecZ.apply(this.object.quaternion);\n }\n}\n\n/*\n * 吹き出しの情報。必要な時だけObjectA3に\n * 吹き出しの情報を入れるために使用。\n */\nclass BalloonInfo {\n message: string;\n dir: Dir;\n offsetTop: {x: number, y: number};\n offsetRight: {x: number, y: number};\n offsetLeft: {x: number, y: number};\n offsetBottom: {x: number, y: number};\n\n constructor(message: string) {\n this.message = message;\n this.dir = \"RIGHT\";\n this.offsetTop = {x:0,y:2};\n this.offsetRight = {x:1,y:1};\n this.offsetLeft = {x:-1,y:1};\n this.offsetBottom = {x:0,y:0};\n }\n}\n","import * as THREE from 'three';\nimport { ObjectA3 } from './ObjectA3';\nimport type { Controller } from './Controller';\nimport type { MutableVec3 } from './Vec3';\n\n/**\n * a3jsのカメラのベーストなるアブストラクトクラス。\n * a3jsのカメラはデフォルトでヘッドライトがONの状態\n * で持ってないといけないので、それもカメラに含まれる\n * ものとする。\n */\nexport abstract class Camera extends ObjectA3 {\n controller?: Controller;\n\n /**\n * 耳の役割を持つTHREE.AudioListenerをカメラに\n * 取り付ける。普通にTHREE.Cameraだったら、Object3D\n * のサブクラスなんで、それにaddすればOK。\n */\n abstract setAudioListener(listener: THREE.AudioListener): void;\n\n /**\n * ワールド座標 → 正規化デバイス座標(NDC)\n */\n abstract calcNDC(loc: MutableVec3): {x: number, y: number}; \n\n abstract setHeadLightEnable(b: boolean): void;\n\n setController(controller: Controller) {\n this.controller = controller;\n }\n\n setLocation(x: number, y: number, z: number): void;\n setLocation(v: MutableVec3): void;\n setLocation(xOrV: number | MutableVec3, y?: number, z?: number): void {\n if (typeof xOrV === 'number')\n super.setLocation(xOrV,y!,z!);\n else\n super.setLocation(xOrV);\n this.controller?.setCameraLocation(this.object.position);\n }\n}\n","import type { View } from './View';\nimport { Vec3 } from './Vec3';\nimport type { MutableVec3 } from './Vec3';\nimport { Quat, getQuatOfLookAt } from './Quat';\nimport type { MutableQuat } from './Quat';\n\n/**\n * キーやマウスなどの様々なイベントを受け取り\n * ナビゲーションなどを行うコントローラのインターフェース。\n * 必ずコンストラクタでViewを受け取りプロパティに保存する。\n * コンストラクタで自分自身を受け取ったViewに登録する処理が\n * 必要。\n */\nexport interface Controller {\n view: View;\n update(dt: number): void;\n activate(): void;\n deactivate(): void;\n keyDown(event: KeyboardEvent): void;\n keyUp(event: KeyboardEvent): void;\n keyPress(event: KeyboardEvent): void;\n mouseDown(event: MouseEvent): void;\n mouseUp(event: MouseEvent): void;\n mouseMove(event: MouseEvent): void;\n mouseClick(event: MouseEvent): void;\n mouseEnter(event: MouseEvent): void;\n mouseLeave(event: MouseEvent): void;\n mouseWheel(event: WheelEvent): void;\n touchStart(event: TouchEvent): void;\n touchEnd(event: TouchEvent): void;\n touchMove(event: TouchEvent): void;\n touchCancel(event: TouchEvent): void;\n\n setCameraLocation(loc: MutableVec3): void;\n setCameraLocationNow(loc: MutableVec3): void;\n setCameraQuat(quat: MutableQuat): void;\n setCameraQuatNow(quat: MutableQuat): void;\n setCameraScale(scale: MutableVec3): void;\n setCameraScaleNow(scale: MutableVec3): void;\n}\n\n/**\n * まったく何もしないController。不要なメソッドを\n * 実装しなくて良いように、これを継承して実用的な\n * Controllerを作ると良い。\n */\nexport class ControllerBase implements Controller {\n view: View;\n constructor(view: View) {\n this.view = view;\n view.setController(this);\n }\n update(dt: number): void {dt;}\n activate(): void {}\n deactivate(): void {}\n keyDown(_event: KeyboardEvent): void {}\n keyUp(_event: KeyboardEvent): void {}\n keyPress(_event: KeyboardEvent): void {}\n mouseDown(_event: MouseEvent): void {}\n mouseUp(_event: MouseEvent): void {}\n mouseMove(_event: MouseEvent): void {}\n mouseClick(_event: MouseEvent): void {}\n mouseEnter(_event: MouseEvent): void {}\n mouseLeave(_event: MouseEvent): void {}\n mouseWheel(_event: WheelEvent): void {}\n touchStart(_event: TouchEvent): void {}\n touchEnd(_event: TouchEvent): void {}\n touchMove(_event: TouchEvent): void {}\n touchCancel(_event: TouchEvent): void {}\n setCameraLocation(_loc: MutableVec3): void {}\n setCameraLocationNow(_loc: MutableVec3): void {}\n setCameraQuat(_quat: MutableQuat): void {}\n setCameraQuatNow(_quat: MutableQuat): void {}\n setCameraScale(_scale: MutableVec3): void {}\n setCameraScaleNow(_scale: MutableVec3): void {}\n}\n\n/**\n * とりあえず適当\n */\nexport class OrbitController extends ControllerBase {\n preMouse: {x:number,y:number};\n leftClick: boolean = false;\n target: Vec3;\n cameraLoc: Vec3 = new Vec3(0,0,3);\n cameraQuat: Quat = new Quat(0,0,0,1);\n\n constructor(view: View,target: MutableVec3);\n constructor(view: View,tx: number, ty: number, tz: number);\n constructor(view: View,xOrV: number | MutableVec3, y?: number, z?: number) {\n super(view);\n this.preMouse = {x:0,y:0};\n if (typeof xOrV === \"number\") {\n this.target = new Vec3(xOrV,y!,z!);\n } else {\n this.target = new Vec3(xOrV);\n }\n }\n\n update(dt: number): void {\n dt;\n this.view.camera.setLocation(this.cameraLoc);\n this.view.camera.setQuat(this.cameraQuat);\n }\n\n mouseDown(e: MouseEvent): void {\n if (e.button === 0) {\n this.leftClick = true;\n this.preMouse.x = e.clientX;\n this.preMouse.y = e.clientY;\n }\n }\n mouseMove(e: MouseEvent): void {\n if (this.leftClick === false)\n return;\n const epsilon = 0.01;\n const dx = epsilon*(e.clientX - this.preMouse.x);\n const dy = epsilon*(e.clientY - this.preMouse.y);\n const sinX = Math.sin(-dx); const cosX = Math.cos(-dx);\n const sinY = Math.sin(-dy); const cosY = Math.cos(-dy);\n const vecX = new Vec3(1,0,0).apply(this.cameraQuat);\n const vecY = new Vec3(0,1,0).apply(this.cameraQuat);\n const quatX = new Quat(vecX.x*sinY,vecX.y*sinY,vecX.z*sinY,cosY);\n const quatY = new Quat(vecY.x*sinX,vecY.y*sinX,vecY.z*sinX,cosX);\n const newCameraLoc = new Vec3(this.cameraLoc);\n newCameraLoc.sub(this.target);\n newCameraLoc.apply(quatX);\n newCameraLoc.apply(quatY);\n newCameraLoc.add(this.target);\n this.cameraLoc.set(newCameraLoc);\n const newCameraQuat = getQuatOfLookAt(this.cameraLoc,this.target,new Vec3(0,1,0));\n this.cameraQuat.set(newCameraQuat);\n this.preMouse.x = e.clientX;\n this.preMouse.y = e.clientY;\n }\n mouseUp(e: MouseEvent): void {\n if (e.button === 0) {\n this.leftClick = false;\n }\n }\n mouseWheel(e: WheelEvent): void {\n const f = new Vec3(this.target).sub(this.cameraLoc)\n\n if (e.deltaY > 0)\n f.scale(0.05);\n else if (e.deltaY < 0)\n f.scale(-0.05);\n\n this.cameraLoc.add(f);\n }\n/*\n touchStart(e: TouchEvent): void {\nconsole.log(`GAHA: touchStart()`,event);\n const loc = new Vec3(this.view.camera.location);\n loc.add(new Vec3(0.1,0,0));\n this.view.camera.setLocation(loc);\n }\n*/\n setCameraLocation(loc: MutableVec3): void {\n this.cameraLoc.set(loc);\n }\n setCameraLocationNow(loc: MutableVec3): void {\n this.cameraLoc.set(loc);\n }\n //setCameraQuat(quat: MutableQuat): void {}\n //setCameraQuatNow(quat: MutableQuat): void {}\n}\n\n\n","import { unzip, strFromU8 } from 'fflate'; // 'three/addons/libs/fflate.module.js';\nimport type { Unzipped } from 'fflate'; // 'three/addons/libs/fflate.module.js';\n\nexport function times2(x: number): number {\n return 2*x;\n}\n\nexport function asyncSleep(time: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(()=>{resolve();},time);\n });\n}\n\nexport async function unzipAsync(url: string): Promise<Unzipped> {\n const res = await fetch(url);\n const arrayBuffer = await res.arrayBuffer();\n const ret = await new Promise<Unzipped>((resolve, reject) => {\n unzip(new Uint8Array(arrayBuffer),(err,data) => {\n if (!err)\n resolve(data);\n else\n reject(err)\n });\n });\n return ret;\n}\n\nexport function readStringFromUnzipped(unzipped: Unzipped, path: string): string {\n path = path.replace(/^\\.\\//,'').replace(/^\\//,'');\n if (unzipped[path]) {\n return strFromU8(unzipped[path]);\n } else {\n throw new Error(`readStringFromUnzipped(): no file at ${path}`);\n }\n}\n\nexport function readBlobFromUnzipped(unzipped: Unzipped, path: string): Blob {\n path = path.replace(/^\\.\\//,'').replace(/^\\//,'');\n if (unzipped[path]) {\n const mime_type = mimeTypeFromPath(path);\n return new Blob([new Uint8Array(unzipped[path])],{type: mime_type});\n } else {\n throw new Error(`readBlobFromUnzipped(): no file at ${path}`);\n }\n}\n\n\nconst mime_type = {\n 'image/png': /\\.png$/i,\n 'image/jpeg': /\\.(jpg|jpeg)$/i,\n 'image/gif': /\\.gif$/i,\n 'model/vrml': /\\.wrl$/i,\n 'application/xml': /\\.xml$/i,\n 'application/octet-stream': /\\.bvh/i, // まあ。\n 'audio/x-wav': /\\.wav/i,\n 'audio/mpeg': /\\.mp3/i,\n 'audio/ogg': /\\.ogg/i,\n 'text/plain': /\\.(txt|text)$/i,\n 'model/gltf+json': /\\.gltf$/i,\n 'model/gltf-binary': /\\.glb$/i,\n};\n\nexport function mimeTypeFromPath(path: string): string {\n for (const [mt, re] of Object.entries(mime_type))\n if (re.test(path))\n return mt;\n return 'application/octet-stream';\n}\n\n// ChatGPTに教えてもらったマージできる設定の型とマージ関数。\n// 抜けのない完璧な設定の型(例えばXOption)を定義した後、\n// 完璧なデフォルトの設定を用意(例えばdefaultXOption)。\n// ユーザにはその型のDeepPartial<XOption>を要求することで\n// 全ての設定を指定しなくて良くなって、\n// deepMarge<XOption>(defaultXOption,userOption);で完璧な\n// 設定が用意できるという仕組み。\n\nexport type DeepPartial<T> = {\n [K in keyof T]?: T[K] extends object\n ? DeepPartial<T[K]>\n : T[K];\n};\n\nexport function deepMerge<T>(base: T, override?: DeepPartial<T>): T {\n if (!override) return base;\n\n const result = { ...base } as any;\n for (const key in override) {\n if (\n typeof base[key] === \"object\" &&\n typeof override[key] === \"object\"\n ) {\n result[key] = deepMerge(base[key], override[key]!);\n } else {\n result[key] = override[key];\n }\n }\n return result;\n}\n\n","import * as THREE from 'three';\nimport { ObjectA3 } from '../core/ObjectA3';\nimport type { AsyncInitRequired } from '../core/AsyncInitRequired';\nimport type { DeepPartial } from '../utils/math';\nimport { deepMerge } from '../utils/math';\n\nexport type SoundType = \"audio\" | \"positional\";\n\nexport interface SoundOptions {\n type: SoundType; // audio / positional\n autoplay: boolean;\n loop: boolean;\n volume: number;\n\n positional: PositionalOptions;\n}\n\nexport interface PositionalOptions {\n refDistance: number;\n maxDistance: number;\n rolloffFactor: number;\n\n directional: {\n coneInnerAngle: number;\n coneOuterAngle: number;\n coneOuterGain: number;\n };\n}\n\nconst defaultSoundOptions: SoundOptions = {\n type: \"audio\",\n autoplay: false,\n loop: false,\n volume: 1.0,\n\n positional: {\n refDistance: 1,\n maxDistance: 1000,\n rolloffFactor: 1,\n directional: {\n coneInnerAngle: 360,\n coneOuterAngle: 360,\n coneOuterGain: 0,\n },\n },\n};\n\nexport type SoundOptionInput = DeepPartial<SoundOptions>;\n\n/**\n * サウンドの初期化を行います。必ずユーザジェスチャを起点とする\n * スレッドから呼び出される必要があります。この初期化が完了しな\n * なければ音声が再生されない可能性が高いです。\n */\nexport async function initSound() {\n try {\n if (Sound.listener.context.state !== \"running\")\n await Sound.listener.context.resume();\n } catch(e) {\n console.warn(\"AudioContext resume failed. Did you call on user gesture?\");\n }\n}\n\nexport class Sound extends ObjectA3 implements AsyncInitRequired<Sound> {\n static listener: THREE.AudioListener = new THREE.AudioListener();\n static audioLoader: THREE.AudioLoader = new THREE.AudioLoader();\n\n readonly ready: Promise<Sound>;\n private config: SoundOptions;\n private sound?: THREE.PositionalAudio | THREE.Audio<GainNode | PannerNode>;\n constructor(soundFile: string, options: SoundOptionInput = {}) {\n super();\n this.config = deepMerge(defaultSoundOptions, options);\n this.ready = this.asyncInit(soundFile);\n }\n\n initObject() {\n return new THREE.Object3D();\n }\n\n async asyncInit(soundFile: string): Promise<Sound> {\n if (this.config.type === \"positional\") {\n const sound = new THREE.PositionalAudio(Sound.listener);\n sound.setRefDistance(this.config.positional.refDistance);\n sound.setMaxDistance(this.config.positional.maxDistance);\n sound.setRolloffFactor(this.config.positional.rolloffFactor);\n const d = this.config.positional.directional;\n sound.setDirectionalCone(\n d.coneInnerAngle,\n d.coneOuterAngle,\n d.coneOuterGain\n );\n sound.setVolume(this.config.volume);\n sound.setLoop(this.config.loop);\n this.sound = sound;\n } else {\n const sound = new THREE.Audio(Sound.listener);\n sound.setVolume(this.config.volume);\n sound.setLoop(this.config.loop);\n this.sound = sound;\n }\n this.object.add(this.sound);\n return new Promise((resolve)=>{\n Sound.audioLoader.load(soundFile, (buffer) => {\n if (this.sound)\n this.sound.setBuffer(buffer);\n resolve(this);\n });\n });\n }\n\n play() {\n this.sound?.play();\n }\n}\n","//import * as THREE from 'three';\n//import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\nimport { Scene } from './Scene';\nimport { Camera } from './Camera';\nimport type { View } from './View';\nimport { OrbitController } from './Controller';\nimport type { Controller } from './Controller';\nimport type { MutableVec3 } from './Vec3';\nimport { Sound } from '../three/Sound';\n\n/**\n * Viewに必須な機能だけを実装したクラス。\n * これを拡張して新しい表示クラスを作っても良い。\n * CanvasなどはHTMLElementのサブクラスとして実装\n * しないといけないので、このViewBaseのインスタンスを\n * プロパティに保存してラッパーとして実装している。\n */\nexport class ViewBase implements View {\n scene: Scene;\n camera: Camera;\n controller: Controller;\n \n constructor(camera: Camera) {\n this.scene = new Scene();\n this.camera = camera;\n this.camera.setAudioListener(Sound.listener);\n this.scene.scene.add(this.camera.object);\n this.camera.setLocation(0, 0, 3);\n this.controller = new OrbitController(this,0,0,0);\n this.camera.setController(this.controller);\n }\n\n replaceScene(newScene: Scene): Scene {\n this.scene.scene.remove(this.camera.object);\n newScene.scene.add(this.camera.object);\n const oldScene = this.scene;\n this.scene = newScene;\n return oldScene;\n }\n\n updateScene(dt: number) {\n this.scene.update(dt);\n this.controller?.update(dt);\n this.camera.update(dt);\n }\n\n setController(controller: Controller) {\n this.controller?.deactivate();\n this.controller = controller;\n this.controller.activate();\n this.camera.setController(controller);\n }\n\n /**\n * ViewBaseはworldToScreen()を実装することは不可能なので、\n * サブクラスで必ずオーバーライドして自分で実装して下さい。\n * ViewBaseをラップして使っている場合も同様です。\n */\n worldToScreen(loc: MutableVec3): { x: number, y: number } {\n throw new Error(`ViewBaseはworldToScreen()は実装していません`);\n loc;\n return {x:0, y:0};\n }\n /**\n * ViewBaseはscreenToWorld()を実装することは不可能なので、\n * サブクラスで必ずオーバーライドして自分で実装して下さい。\n * ViewBaseをラップして使っている場合も同様です。\n */\n screenToWorld(x: number, y: number, depth: number): MutableVec3 {\n throw new Error(`ViewBaseはscreenToWorld()は実装していません`);\n x; y; depth;\n return {x:0,y:0,z:0};\n }\n /**\n * ViewBaseはcameraToScreen()を実装することは不可能なので、\n * サブクラスで必ずオーバーライドして自分で実装して下さい。\n * ViewBaseをラップして使っている場合も同様です。\n */\n cameraToScreen(loc: MutableVec3): { x: number, y: number } {\n throw new Error(`ViewBaseはcameraToScreen()は実装していません`);\n loc;\n return {x:0,y:0};\n }\n /**\n * ViewBaseはscreenToCamera()を実装することは不可能なので、\n * サブクラスで必ずオーバーライドして自分で実装して下さい。\n * ViewBaseをラップして使っている場合も同様です。\n */\n screenToCamera(x: number, y: number, depth: number): MutableVec3 {\n throw new Error(`ViewBaseはscreenToCamera()は実装していません`);\n x; y; depth;\n return {x:0,y:0,z:0};\n }\n}\n","import * as THREE from 'three';\nimport { Camera } from './Camera';\nimport { isPerspectiveCamera } from '../utils/TypeGuard';\nimport type { MutableVec3 } from './Vec3';\n\n/**\n * Three.jsのPerspectiveCameraとかの一般的なカメラを\n * a3jsのカメラにするためのラッパー。ヘッドライトは\n * SpotLightで実装。\n */\nexport class GeneralCamera extends Camera {\n camera: THREE.Camera;\n headLight: THREE.SpotLight;\n\n constructor(camera: THREE.Camera) {\n super();\n this.camera = camera;\n this.headLight = new THREE.SpotLight(0xffffff,1,0,Math.PI/3,0,0);\n this.headLight.rotation.x = 3.14/2;\n this.object.add(this.camera);\n this.object.add(this.headLight);\n }\n\n initObject() {\n return new THREE.Object3D();\n }\n\n setAudioListener(listener: THREE.AudioListener) {\n this.camera.add(listener);\n }\n\n getHeadLight() { return this.headLight; }\n\n setAspect(aspect: number) {\n if (isPerspectiveCamera(this.camera)) {\n this.camera.aspect = aspect;\n this.camera.updateProjectionMatrix();\n }\n }\n\n setHeadLightEnable(b: boolean) {\n if (b)\n this.headLight.intensity = 1;\n else\n this.headLight.intensity = 0;\n }\n\n calcNDC(loc: MutableVec3) {\n const v = new THREE.Vector3(loc.x,loc.y,loc.z);\n v.project(this.camera);\n return { x: v.x, y: v.y };\n }\n}\n\n","import {\n\tMatrix4,\n\tObject3D,\n\tVector2,\n\tVector3\n} from 'three';\n\n/**\n * The only type of 3D object that is supported by {@link CSS2DRenderer}.\n *\n * @augments Object3D\n * @three_import import { CSS2DObject } from 'three/addons/renderers/CSS2DRenderer.js';\n */\nclass CSS2DObject extends Object3D {\n\n\t/**\n\t * Constructs a new CSS2D object.\n\t *\n\t * @param {HTMLElement} [element] - The DOM element.\n\t */\n\tconstructor( element = document.createElement( 'div' ) ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCSS2DObject = true;\n\n\t\t/**\n\t\t * The DOM element which defines the appearance of this 3D object.\n\t\t *\n\t\t * @type {HTMLElement}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\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\t/**\n\t\t * The 3D objects center point.\n\t\t * `( 0, 0 )` is the lower left, `( 1, 1 )` is the top right.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (0.5,0.5)\n\t\t */\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t\tthis.addEventListener( 'removed', function () {\n\n\t\t\tthis.traverse( function ( object ) {\n\n\t\t\t\tif (\n\t\t\t\t\tobject.element &&\n\t\t\t\t\tobject.element instanceof object.element.ownerDocument.defaultView.Element &&\n\t\t\t\t\tobject.element.parentNode !== null\n\t\t\t\t) {\n\n\t\t\t\t\tobject.element.remove();\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\n/**\n * This renderer is a simplified version of {@link CSS3DRenderer}. The only transformation that is\n * supported is translation.\n *\n * The renderer is very useful if you want to combine HTML based labels with 3D objects. Here too,\n * the respective DOM elements are wrapped into an instance of {@link CSS2DObject} and added to the\n * scene graph. All other types of renderable 3D objects (like meshes or point clouds) are ignored.\n *\n * `CSS2DRenderer` only supports 100% browser and display zoom.\n *\n * @three_import import { CSS2DRenderer } from 'three/addons/renderers/CSS2DRenderer.js';\n */\nclass CSS2DRenderer {\n\n\t/**\n\t * Constructs a new CSS2D renderer.\n\t *\n\t * @param {CSS2DRenderer~Parameters} [parameters] - The parameters.\n\t */\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\t/**\n\t\t * The DOM where the renderer appends its child-elements.\n\t\t *\n\t\t * @type {HTMLElement}\n\t\t */\n\t\tthis.domElement = domElement;\n\n\t\t/**\n\t\t * Controls whether the renderer assigns `z-index` values to CSS2DObject DOM elements.\n\t\t * If set to `true`, z-index values are assigned first based on the `renderOrder`\n\t\t * and secondly - the distance to the camera. If set to `false`, no z-index values are assigned.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.sortObjects = true;\n\n\t\t/**\n\t\t * Returns an object containing the width and height of the renderer.\n\t\t *\n\t\t * @return {{width:number,height:number}} The size of the renderer.\n\t\t */\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\t/**\n\t\t * Renders the given scene using the given camera.\n\t\t *\n\t\t * @param {Object3D} scene - A scene or any other type of 3D object.\n\t\t * @param {Camera} camera - The camera.\n\t\t */\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\tif ( this.sortObjects ) zOrder( scene );\n\n\t\t};\n\n\t\t/**\n\t\t * Resizes the renderer to the given width and height.\n\t\t *\n\t\t * @param {number} width - The width of the renderer.\n\t\t * @param {number} height - The height of the renderer.\n\t\t */\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\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\n/**\n * Constructor parameters of `CSS2DRenderer`.\n *\n * @typedef {Object} CSS2DRenderer~Parameters\n * @property {HTMLElement} [element] - A DOM element where the renderer appends its child-elements.\n * If not passed in here, a new div element will be created.\n **/\n\nexport { CSS2DObject, CSS2DRenderer };\n","import * as THREE from 'three';\nimport { ObjectA3 } from './ObjectA3';\nimport { Scene } from './Scene';\nimport { Camera } from './Camera';\nimport type { View } from './View';\nimport { ViewBase } from './ViewBase';\nimport { GeneralCamera } from './GeneralCamera';\nimport type { Controller } from './Controller';\nimport type { MutableVec3 } from './Vec3';\nimport { CSS2DRenderer } from 'three/addons/renderers/CSS2DRenderer.js';\n\nexport interface CanvasOption {\n camera?: THREE.Camera;\n antialias?: boolean;\n transparent?: boolean;\n}\n\n/**\n * HTMLのエレメント(a3-canvas)として使えるView。\n */\nexport class Canvas extends HTMLElement implements View {\n private ro?: ResizeObserver;\n base: ViewBase;\n renderer;\n css2DRenderer: CSS2DRenderer;\n scene: Scene;\n camera: Camera;\n controller: Controller;\n camera3js: THREE.Camera;\n clock: THREE.Clock;\n private _canvas: HTMLCanvasElement;\n private _css2DCanvas: HTMLElement;\n \n constructor(opt?: CanvasOption) {\n super();\n\n // ########## WebComponent関係のセットアップ ##########\n this.attachShadow({ mode: \"open\" });\n this.shadowRoot!.innerHTML = `\n <style>\n :host {\n width: 100%;\n height: 100%;\n display: block;\n padding: 0;\n margin: 0;\n position: relative;\n background: rgba(0,0,0,0);\n box-sizing:\n border-box;\n }\n\n :host canvas {\n width: 100%;\n height: 100%;\n display: block;\n margin: 0;\n padding: 0;\n }\n </style>\n <slot></slog>\n`;\n\n if (!opt) opt = {};\n if (!opt.camera) opt.camera = new THREE.PerspectiveCamera(75, 300/150, 0.1, 1000);\n this.camera3js = opt.camera;\n const camera = new GeneralCamera(opt.camera);\n this.base = new ViewBase(camera);\n this.scene = this.base.scene;\n this.camera = this.base.camera;\n this.controller = this.base.controller;\n this.clock = new THREE.Clock();\n const o = {\n antialias: (opt.antialias?opt.antialias:false),\n alpha: (opt.transparent?opt.transparent:false)\n };\n this.renderer = new THREE.WebGLRenderer(o);\n this.renderer.setSize(600,300);\n if ('opaque' in opt) this.renderer.setClearAlpha(0);\n this._canvas = this.renderer.domElement;\n this._canvas.width = 600;\n this._canvas.height = 300;\n this.appendChild(this._canvas);\n this.css2DRenderer = new CSS2DRenderer();\n this._css2DCanvas = this.css2DRenderer.domElement;\n this._css2DCanvas.style.position='absolute';\n this._css2DCanvas.style.top='0px';\n this.appendChild(this._css2DCanvas);\n this.animationFrameId = requestAnimationFrame(this.renderingLoop);\n\n this._css2DCanvas.addEventListener('click',this.myMouseClickedListener);\n\n window.addEventListener('keydown',(e)=>{this.controller?.keyDown(e);});\n window.addEventListener('keyup',(e)=>{this.controller?.keyUp(e);});\n window.addEventListener('keypress',(e)=>{this.controller?.keyPress(e);});\n this._css2DCanvas.addEventListener('mousedown',(e)=>{this.controller?.mouseDown(e);});\n this._css2DCanvas.addEventListener('mouseup',(e)=>{this.controller?.mouseUp(e);});\n this._css2DCanvas.addEventListener('mousemove',(e)=>{this.controller?.mouseMove(e);});\n this._css2DCanvas.addEventListener('click',(e:MouseEvent)=>{this.controller?.mouseClick(e);});\n this._css2DCanvas.addEventListener('mouseenter',(e)=>{this.controller?.mouseEnter(e);});\n this._css2DCanvas.addEventListener('mouseleave',(e)=>{this.controller?.mouseLeave(e);});\n this._css2DCanvas.addEventListener('wheel',(e)=>{this.controller?.mouseWheel(e);});\n this._css2DCanvas.addEventListener('touchstart',(e)=>{this.controller?.touchStart(e);});\n this._css2DCanvas.addEventListener('touchmove',(e)=>{this.controller?.touchMove(e);});\n this._css2DCanvas.addEventListener('touchend',(e)=>{this.controller?.touchEnd(e);});\n this._css2DCanvas.addEventListener('touchcancel',(e)=>{this.controller?.touchCancel(e);});\n }\n\n connectedCallback() {\n this.ro = new ResizeObserver(() => {\n const dpr = window.devicePixelRatio || 1;\n const w = Math.floor(this.clientWidth * dpr);\n const h = Math.floor(this.clientHeight * dpr);\n if (this._canvas.width !== w\n || this._canvas.height !== h) {\n this._canvas.width = w;\n this._canvas.height = h;\n if (isPerspectiveCamera(this.camera3js)) {\n this.camera3js.aspect = w / h;\n this.camera3js.updateProjectionMatrix();\n }\n this.renderer.setSize(w, h);\n this.css2DRenderer.setSize(w, h);\n }\n });\n this.ro.observe(this);\n }\n disconnectedCallback() {\n this.ro?.disconnect();\n }\n\n replaceScene(newScene: Scene): Scene {\n this.scene = newScene; // baseのとは別だから\n return this.base.replaceScene(newScene);\n }\n\n setController(controller: Controller) {\n this.controller = controller; // baseのとは別だから\n this.base.setController(controller);\n }\n\n animationFrameId: number = -1;\n renderingLoop = () => {\n this.animationFrameId = requestAnimationFrame(this.renderingLoop);\n const dt = this.clock.getDelta();\n this.base.updateScene(dt);\n this.renderer.render(this.scene.scene, this.camera3js);\n this.css2DRenderer.render(this.scene.scene, this.camera3js);\n };\n\n worldToScreen(loc: MutableVec3): { x: number, y: number } {\n const v = new THREE.Vector3(loc.x, loc.y, loc.z);\n v.project(this.camera3js);\n const size = new THREE.Vector2();\n this.renderer.getSize(size);\n const x = (v.x + 1) / 2 * size.x;\n const y = (1 - v.y) / 2 * size.y;\n return { x, y };\n }\n\n screenToWorld(x: number, y: number, depth: number): MutableVec3 {\n const ndc = new THREE.Vector3(\n (x / this._canvas.clientWidth) * 2 -1,\n -(y / this._canvas.clientHeight) * 2 + 1,\n 0.5\n );\n ndc.unproject(this.camera3js);\n const dir = ndc.sub(this.camera3js.position).normalize();\n return this.camera3js.position.clone().add(dir.multiplyScalar(depth));\n }\n\n cameraToScreen(loc: MutableVec3): { x: number, y: number } {\n const v = new THREE.Vector3(loc.x,loc.y,loc.z);\n const worldPos = v.applyMatrix4(this.camera3js.matrixWorld);\n return this.worldToScreen(worldPos);\n }\n\n screenToCamera(x: number, y: number, depth: number): MutableVec3 {\n const vec = this.screenToWorld(x,y,depth);\n const worldPos = new THREE.Vector3(vec.x,vec.y,vec.z);\n return worldPos.applyMatrix4(this.camera3js.matrixWorldInverse);\n }\n\n//----------------------------------\n\n // このクラスはHTMLElementのスーパークラスだから\n // EventTargetを継承してるので、this.dispatchEvent()で\n // イベントを発生させられる。addEventListener()とか、\n // 自分で作らなくてOK。\n myMouseClickedListener = (e: any) => {\n if (this.camera instanceof GeneralCamera) {\n const raycaster = new THREE.Raycaster();\n const mouse = new THREE.Vector2();\n const rect = e.target.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n mouse.x = 2*(x / rect.width) - 1;\n mouse.y = -2*(y / rect.height) + 1;\n raycaster.setFromCamera(mouse,this.camera.camera);\n const intersects = raycaster.intersectObjects(this.scene.scene.children);\n const objs: {three:THREE.Object3D,a3js:ObjectA3}[] = [];\n intersects.forEach((o1)=>{\n const a3js: ObjectA3 = o1.object.userData['a3js']?.objectA3;\n objs.push({three:o1.object,a3js});\n });\n if (objs.length>0)\n objs[0].a3js.clicked();\n this.dispatchEvent(new CustomEvent('click3d',{detail: { value: objs }}));\n }\n }\n\n alert(message: string, func?: ()=>void): Promise<void> {\n return new Promise((resolve) => {\n const div = document.createElement('div');\n div.style.cssText = 'position: absolute; top: 0px; width: 100%; height: 100%; display: flex; flex-direction: column;';\n const p = document.createElement('p');\n p.style.cssText = 'width: 80%; margin: 0 auto; color: red; text-align: center; border: 3px solid red;';\n p.textContent = message;\n div.appendChild(p);\n const btn = document.createElement('button');\n btn.textContent = 'OK!';\n div.appendChild(btn);\n this.appendChild(div);\n \n btn.addEventListener('click',async ()=>{\n if (func)\n await func();\n this.removeChild(div);\n resolve();\n });\n });\n }\n}\n\ncustomElements.define(\"canvas-a3\", Canvas);\n\n// TypeScriptにobjがPerspectiveCameraであることを教えてあげる関数。\nfunction isPerspectiveCamera(obj: THREE.Camera): obj is THREE.PerspectiveCamera {\n return (obj as any).isPerspectiveCamera === true;\n}\n","import * as THREE from 'three';\nimport { ObjectA3 } from './ObjectA3';\nimport { Scene } from './Scene';\nimport { Camera } from './Camera';\nimport type { View } from './View';\nimport { ViewBase } from './ViewBase';\nimport { GeneralCamera } from './GeneralCamera';\nimport type { Controller } from './Controller';\nimport type { MutableVec3 } from './Vec3';\nimport { CSS2DRenderer } from 'three/addons/renderers/CSS2DRenderer.js';\n\nexport interface WindowOption {\n width: number;\n height: number;\n top: number;\n left: number;\n}\n\n//type ResizeDir = \"\" | \"n\" | \"s\" | \"e\" | \"w\" | \"ne\" | \"sw\" | \"nw\" | \"se\";\n\nexport class Window extends HTMLElement implements View {\n // ########## WebComponent関係のセットアップ ##########\n private _resizeObserver?: ResizeObserver;\n private _dragging = false;\n private _resizing = false;\n private _resizeDir = \"\";\n private _startMouseX = 0;\n private _startMouseY = 0;\n private _startLeft = 0;\n private _startTop = 0;\n private _startWidth = 0;\n private _startHeight = 0;\n private _borderSize = 5;\n private _canvas: HTMLCanvasElement;\n private _css2DCanvas: HTMLElement;\n private _titleEl: HTMLElement | null = null;\n private _titleBar: HTMLElement | null = null;\n private _closeBtn: HTMLElement | null = null;\n // ########## WebComponent関係のセットアップ終り ##########\n\n base: ViewBase;\n renderer;\n css2DRenderer: CSS2DRenderer;\n scene: Scene;\n camera: Camera;\n controller: Controller;\n camera3js: THREE.PerspectiveCamera;\n clock: THREE.Clock;\n\n constructor(width=600, height=300) {\n super();\n\n // ########## WebComponent関係のセットアップ ##########\n this.attachShadow({ mode: \"open\" });\n this.shadowRoot!.innerHTML = `\n <style>\n :host {\n position: absolute;\n display: flex;\n flex-direction: column;\n background: #fff;\n border: 1px solid #444;\n box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);\n font-family: sans-serif;\n user-select: none;\n }\n\n .titlebar {\n flex: 0 0 28px;\n background: #444;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 6px;\n cursor: move;\n }\n\n .content {\n flex: 1 1 auto;\n min-height: 0;\n padding: 0;\n box-sizing: border-box;\n overflow: auto;\n user-select: text;\n }\n\n .close {\n cursor: pointer;\n font-weight: bold;\n }\n </style>\n <div class=\"titlebar\">\n <span class=\"title\"></span>\n <span class=\"close\">✕</span>\n </div>\n <div class=\"content\">\n <slot></slot>\n </div>\n`;\n // ########## WebComponent関係のセットアップ終り ##########\n\n // ここからようやく3D関係\n this.camera3js = new THREE.PerspectiveCamera(75, width/height, 0.1, 1000);\n this.camera3js.aspect = width / height;\n const camera = new GeneralCamera(this.camera3js);\n this.base = new ViewBase(camera);\n this.scene = this.base.scene;\n this.camera = this.base.camera;\n this.controller = this.base.controller;\n this.clock = new THREE.Clock();\n this.renderer = new THREE.WebGLRenderer();\n this.renderer.setSize(width, height);\n this._canvas = this.renderer.domElement;\n this._canvas.width = width;\n this._canvas.width = height;\n this.appendChild(this._canvas);\n this.css2DRenderer = new CSS2DRenderer();\n this.css2DRenderer.setSize(width, height);\n this._css2DCanvas = this.css2DRenderer.domElement;\n this._css2DCanvas.style.position='absolute';\n this._css2DCanvas.style.top='28px';\n this.appendChild(this._css2DCanvas);\n\n this._css2DCanvas.addEventListener('click',this.myMouseClickedListener);\n\n // コントローラに対するイベントの登録\n window.addEventListener('keydown',(e)=>{this.controller?.keyDown(e);});\n window.addEventListener('keyup',(e)=>{this.controller?.keyUp(e);});\n window.addEventListener('keypress',(e)=>{this.controller?.keyPress(e);});\n this._css2DCanvas.addEventListener('mousedown',(e)=>{this.controller?.mouseDown(e);});\n this._css2DCanvas.addEventListener('mouseup',(e)=>{this.controller?.mouseUp(e);});\n this._css2DCanvas.addEventListener('mousemove',(e)=>{this.controller?.mouseMove(e);});\n this._css2DCanvas.addEventListener('click',(e:MouseEvent)=>{this.controller?.mouseClick(e);});\n this._css2DCanvas.addEventListener('mouseenter',(e)=>{this.controller?.mouseEnter(e);});\n this._css2DCanvas.addEventListener('mouseleave',(e)=>{this.controller?.mouseLeave(e);});\n this._css2DCanvas.addEventListener('wheel',(e)=>{this.controller?.mouseWheel(e);});\n this._css2DCanvas.addEventListener('touchstart',(e)=>{this.controller?.touchStart(e);});\n this._css2DCanvas.addEventListener('touchmove',(e)=>{this.controller?.touchMove(e);});\n this._css2DCanvas.addEventListener('touchend',(e)=>{this.controller?.touchEnd(e);});\n this._css2DCanvas.addEventListener('touchcancel',(e)=>{this.controller?.touchCancel(e);});\n\n // 生成されたら、かってにdocument.bodyにappendChildする!\n if (document.body) {\n document.body.appendChild(this);\n } else {\n document.addEventListener(\"DOMContentLoaded\",()=>{\n document.body.append(this);\n },{once: true});\n }\n // アニメーション開始させちゃう\n this.animationFrameId = requestAnimationFrame(this.renderingLoop);\n }\n // コンストラクタ終り\n\n // ########## まずはWebComponent関係のメソッドを用意する ##########\n\n\n _resizeCanvasToContent() {\n // <div class=\"content\">のpaddingは0という前提\n // そうでなかったら以下のコメントをはずすべし。\n const content = this.shadowRoot!.querySelector(\".content\");\n //const style = getComputedStyle(content!);\n\n let cssWidth = content!.clientWidth;\n //cssWidth -= parseFloat(style.paddingLeft);\n //cssWidth -= parseFloat(style.paddingRight);\n\n let cssHeight = content!.clientHeight;\n //cssHeight -= parseFloat(style.paddingTop);\n //cssHeight -= parseFloat(style.paddingBottom);\n\n const dpr = window.devicePixelRatio || 1;\n const w = Math.floor(cssWidth * dpr);\n const h = Math.floor(cssHeight * dpr);\n\n if (this._canvas.width !== w || this._canvas.height !== h) {\n this._canvas.width = w;\n this._canvas.height = h;\n this.camera3js.aspect = w / h;\n this.camera3js.updateProjectionMatrix();\n this.renderer.setSize(w, h);\n //-----\n this.css2DRenderer.setSize(w, h);\n }\n }\n\n connectedCallback() {\n this._titleEl = this.shadowRoot!.querySelector(\".title\");\n this._titleEl!.textContent = this.getAttribute(\"title\") ?? \"Window\";\n\n this._titleBar = this.shadowRoot!.querySelector(\".titlebar\");\n this._closeBtn = this.shadowRoot!.querySelector(\".close\");\n\n this._titleBar!.addEventListener(\"mousedown\", this._onDragStart);\n this._closeBtn!.addEventListener(\"click\", () => this.remove());\n\n this.addEventListener(\"mousemove\", this._onHover);\n this.addEventListener(\"mousedown\", this._onResizeStart);\n\n document.addEventListener(\"mousemove\", this._onMouseMove);\n document.addEventListener(\"mouseup\", this._onMouseUp);\n\n this._resizeObserver = new ResizeObserver(() => {\n if (this._canvas) {\n this._resizeCanvasToContent();\n }\n });\n\n const content = this.shadowRoot!.querySelector(\".content\");\n this._resizeObserver.observe(content!);\n this._resizeCanvasToContent();\n }\n disconnectedCallback() {\n document.removeEventListener(\"mousemove\", this._onMouseMove);\n document.removeEventListener(\"mouseup\", this._onMouseUp);\n this._resizeObserver?.disconnect();\n }\n // Drag ------------------------------------\n _onDragStart = (e: MouseEvent) => {\n if (this._resizeDir) return;\n\n this._dragging = true;\n this._startMouseX = e.clientX;\n this._startMouseY = e.clientY;\n this._startLeft = this.offsetLeft;\n this._startTop = this.offsetTop;\n };\n // Resize detection ------------------------------------\n _onHover = (e: MouseEvent) => {\n if (this._dragging || this._resizing) return;\n\n const rect = this.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const b = this._borderSize;\n\n let dir = \"\";\n\n if (y < b) dir += \"n\";\n else if (y > rect.height - b) dir += \"s\";\n\n if (x < b) dir += \"w\";\n else if (x > rect.width - b) dir += \"e\";\n\n this._resizeDir = dir;\n this.style.cursor = this._cursorFromDir(dir);\n };\n\n _cursorFromDir(dir: string) {\n switch (dir) {\n case \"n\": return \"ns-resize\";\n case \"s\": return \"ns-resize\";\n case \"e\": return \"ew-resize\";\n case \"w\": return \"ew-resize\";\n case \"ne\": return \"nesw-resize\";\n case \"sw\": return \"nesw-resize\";\n case \"nw\": return \"nwse-resize\";\n case \"se\": return \"nwse-resize\";\n default: return \"default\";\n }\n }\n // Resize ------------------------------------\n _onResizeStart = (e: MouseEvent) => {\n if (!this._resizeDir) return;\n\n this._resizing = true;\n this._startMouseX = e.clientX;\n this._startMouseY = e.clientY;\n this._startLeft = this.offsetLeft;\n this._startTop = this.offsetTop;\n this._startWidth = this.offsetWidth;\n this._startHeight = this.offsetHeight;\n };\n\n _onMouseMove = (e: MouseEvent) => {\n if (this._dragging) {\n this.style.left = `${this._startLeft + (e.clientX - this._startMouseX)}px`;\n this.style.top = `${this._startTop + (e.clientY - this._startMouseY)}px`;\n }\n\n if (this._resizing) {\n const dx = e.clientX - this._startMouseX;\n const dy = e.clientY - this._startMouseY;\n\n if (this._resizeDir.includes(\"e\"))\n this.style.width = `${this._startWidth + dx}px`;\n\n if (this._resizeDir.includes(\"s\"))\n this.style.height = `${this._startHeight + dy}px`;\n\n if (this._resizeDir.includes(\"w\")) {\n this.style.width = `${this._startWidth - dx}px`;\n this.style.left = `${this._startLeft + dx}px`;\n }\n\n if (this._resizeDir.includes(\"n\")) {\n this.style.height = `${this._startHeight - dy}px`;\n this.style.top = `${this._startTop + dy}px`;\n }\n }\n };\n\n _onMouseUp = () => {\n this._dragging = false;\n this._resizing = false;\n };\n // ########## WebComponent関係のメソッドはここで終り ##########\n\n // 以下3D関係\n replaceScene(newScene: Scene): Scene {\n this.scene = newScene; // baseのとは別だから\n return this.base.replaceScene(newScene);\n }\n\n setController(controller: Controller) {\n this.controller = controller; // baseのとは別だから\n this.base.setController(controller);\n }\n\n animationFrameId: number = -1;\n renderingLoop = () => {\n this.animationFrameId = requestAnimationFrame(this.renderingLoop);\n const dt = this.clock.getDelta();\n this.base.updateScene(dt);\n this.renderer.render(this.scene.scene, this.camera3js);\n this.css2DRenderer.render(this.scene.scene, this.camera3js);\n };\n\n worldToScreen(loc: MutableVec3): { x: number, y: number } {\n const v = new THREE.Vector3(loc.x, loc.y, loc.z);\n v.project(this.camera3js);\n const size = new THREE.Vector2();\n this.renderer.getSize(size);\n const x = (v.x + 1) / 2 * size.x;\n const y = (1 - v.y) / 2 * size.y;\n return { x, y };\n }\n\n screenToWorld(x: number, y: number, depth: number): MutableVec3 {\n const ndc = new THREE.Vector3(\n (x / this._canvas.clientWidth) * 2 -1,\n -(y / this._canvas.clientHeight) * 2 + 1,\n 0.5\n );\n ndc.unproject(this.camera3js);\n const dir = ndc.sub(this.camera3js.position).normalize();\n return this.camera3js.position.clone().add(dir.multiplyScalar(depth));\n }\n\n cameraToScreen(loc: MutableVec3): { x: number, y: number } {\n const v = new THREE.Vector3(loc.x,loc.y,loc.z);\n const worldPos = v.applyMatrix4(this.camera3js.matrixWorld);\n return this.worldToScreen(worldPos);\n }\n\n screenToCamera(x: number, y: number, depth: number): MutableVec3 {\n const vec = this.screenToWorld(x,y,depth);\n const worldPos = new THREE.Vector3(vec.x,vec.y,vec.z);\n return worldPos.applyMatrix4(this.camera3js.matrixWorldInverse);\n }\n\n//----------------------------------\n\n // このクラスはHTMLElementのスーパークラスだから\n // EventTargetを継承してるので、this.dispatchEvent()で\n // イベントを発生させられる。addEventListener()とか、\n // 自分で作らなくてOK。\n myMouseClickedListener = (e: any) => {\n if (this.camera instanceof GeneralCamera) {\n const raycaster = new THREE.Raycaster();\n const mouse = new THREE.Vector2();\n const rect = e.target.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n mouse.x = 2*(x / rect.width) - 1;\n mouse.y = -2*(y / rect.height) + 1;\n raycaster.setFromCamera(mouse,this.camera.camera);\n const intersects = raycaster.intersectObjects(this.scene.scene.children);\n const objs: {three:THREE.Object3D,a3js:ObjectA3}[] = [];\n intersects.forEach((o1)=>{\n const a3js: ObjectA3 = o1.object.userData['a3js']?.objectA3;\n objs.push({three:o1.object,a3js});\n });\n if (objs.length>0)\n objs[0].a3js.clicked();\n this.dispatchEvent(new CustomEvent('click3d',{detail: { value: objs }}));\n }\n }\n\n alert(message: string, func?: ()=>void): Promise<void> {\n return new Promise((resolve) => {\n const div = document.createElement('div');\n div.style.cssText = 'position: absolute; top: 28px; width: 100%; height: 100%; display: flex; flex-direction: column;';\n const p = document.createElement('p');\n p.style.cssText = 'width: 80%; margin: 0 auto; color: red; text-align: center; border: 3px solid red;';\n p.textContent = message;\n div.appendChild(p);\n const btn = document.createElement('button');\n btn.textContent = 'OK!';\n div.appendChild(btn);\n this.appendChild(div);\n \n btn.addEventListener('click',async ()=>{\n if (func)\n await func();\n this.removeChild(div);\n resolve();\n });\n });\n }\n}\n\ncustomElements.define(\"window-a3\", Window);\n","import * as THREE from 'three';\nimport { ObjectA3 } from './ObjectA3';\nimport { Motion } from './Motion';\nimport { CSS2DObject } from 'three/addons/renderers/CSS2DRenderer.js';\nimport { deepMerge } from '../utils/math';\nimport type { DeepPartial } from '../utils/math';\n\nconst labelCSS = `\n color: white;\n padding: 5px 10px;\n background: rgba(0, 0, 0, 0.6);\n border: 1px solid #fff;\n border-radius: 5px;\n font-family: sans-serif;\n font-size: 14px;\n pointer-events: none; /* マウスイベントを透過させて背後の操作を邪魔しない */\n`;\n\nexport interface TestOption {\n testMode: boolean;\n}\n\nexport const defaultTestOption: TestOption = {\n testMode: true,\n}\n\nexport class Test extends ObjectA3 {\n constructor(opt: DeepPartial<TestOption>) {\n super(opt);\n }\n\n initObject() {\n const geo = new THREE.BoxGeometry();\n const mat = new THREE.MeshStandardMaterial({ color: 0x00ff00 });\n const mesh = new THREE.Mesh(geo, mat);\n const div = document.createElement('div');\n div.textContent = 'Hello Box!';\n div.style.cssText = labelCSS;\n const label = new CSS2DObject(div);\n label.position.set(0, 0.8, 0); // 少し上に配置\n mesh.add(label);\n return mesh;\n }\n\n initMotion(option: DeepPartial<TestOption>): Motion {\n const opt = deepMerge<TestOption>(defaultTestOption,option);\n return new TestMotion(this,opt);\n }\n}\n\nclass TestMotion extends Motion {\n testMode: boolean = true;\n constructor(obj: ObjectA3,opt: TestOption) {\n super(obj);\n this.testMode = opt.testMode;\n }\n\n update(dt: number) {\n if (this.testMode) {\n this.object3D.rotation.x += dt;\n this.object3D.rotation.y += dt;\n this.object3D.rotation.z += dt;\n } else {\n super.update(dt);\n }\n }\n}\n","import {\n\tFileLoader,\n\tLoader,\n\tShapePath\n} from 'three';\n\n/**\n * A loader for loading fonts.\n *\n * You can convert fonts online using [facetype.js](https://gero3.github.io/facetype.js/).\n *\n * ```js\n * const loader = new FontLoader();\n * const font = await loader.loadAsync( 'fonts/helvetiker_regular.typeface.json' );\n * ```\n *\n * @augments Loader\n * @three_import import { FontLoader } from 'three/addons/loaders/FontLoader.js';\n */\nclass FontLoader extends Loader {\n\n\t/**\n\t * Constructs a new font loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded font\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Font)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\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\tconst font = scope.parse( JSON.parse( text ) );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Parses the given font data and returns the resulting font.\n\t *\n\t * @param {Object} json - The raw font data as a JSON object.\n\t * @return {Font} The font.\n\t */\n\tparse( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n}\n\n/**\n * Class representing a font.\n */\nclass Font {\n\n\t/**\n\t * Constructs a new font.\n\t *\n\t * @param {Object} data - The font data as JSON.\n\t */\n\tconstructor( data ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isFont = true;\n\n\t\tthis.type = 'Font';\n\n\t\t/**\n\t\t * The font data as JSON.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.data = data;\n\n\t}\n\n\t/**\n\t * Generates geometry shapes from the given text and size. The result of this method\n\t * should be used with {@link ShapeGeometry} to generate the actual geometry data.\n\t *\n\t * @param {string} text - The text.\n\t * @param {number} [size=100] - The text size.\n\t * @param {string} [direction='ltr'] - Char direction: ltr(left to right), rtl(right to left) & tb(top bottom).\n\t * @return {Array<Shape>} An array of shapes representing the text.\n\t */\n\tgenerateShapes( text, size = 100, direction = 'ltr' ) {\n\n\t\tconst shapes = [];\n\t\tconst paths = createPaths( text, size, this.data, direction );\n\n\t\tfor ( let p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tshapes.push( ...paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n}\n\nfunction createPaths( text, size, data, direction ) {\n\n\tconst chars = Array.from( text );\n\tconst scale = size / data.resolution;\n\tconst line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tconst paths = [];\n\n\tlet offsetX = 0, offsetY = 0;\n\n\tif ( direction == 'rtl' || direction == 'tb' ) {\n\n\t\tchars.reverse();\n\n\t}\n\n\tfor ( let i = 0; i < chars.length; i ++ ) {\n\n\t\tconst char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tconst ret = createPath( char, scale, offsetX, offsetY, data );\n\n\t\t\tif ( direction == 'tb' ) {\n\n\t\t\t\toffsetX = 0;\n\t\t\t\toffsetY += data.ascender * scale;\n\n\t\t\t} else {\n\n\t\t\t\toffsetX += ret.offsetX;\n\n\t\t\t}\n\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tconst glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tconst path = new ShapePath();\n\n\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tconst outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( let i = 0, l = outline.length; i < l; ) {\n\n\t\t\tconst action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\nexport { FontLoader, Font };\n","import {\n\tExtrudeGeometry\n} from 'three';\n\n/**\n * A class for generating text as a single geometry. It is constructed by providing a string of text, and a set of\n * parameters consisting of a loaded font and extrude settings.\n *\n * See the {@link FontLoader} page for additional details.\n *\n * `TextGeometry` uses [typeface.json](http://gero3.github.io/facetype.js/) generated fonts.\n * Some existing fonts can be found located in `/examples/fonts`.\n *\n * ```js\n * const loader = new FontLoader();\n * const font = await loader.loadAsync( 'fonts/helvetiker_regular.typeface.json' );\n * const geometry = new TextGeometry( 'Hello three.js!', {\n * \tfont: font,\n * \tsize: 80,\n * \tdepth: 5,\n * \tcurveSegments: 12\n * } );\n * ```\n *\n * @augments ExtrudeGeometry\n * @three_import import { TextGeometry } from 'three/addons/geometries/TextGeometry.js';\n */\nclass TextGeometry extends ExtrudeGeometry {\n\n\t/**\n\t * Constructs a new text geometry.\n\t *\n\t * @param {string} text - The text that should be transformed into a geometry.\n\t * @param {TextGeometry~Options} [parameters] - The text settings.\n\t */\n\tconstructor( text, parameters = {} ) {\n\n\t\tconst font = parameters.font;\n\n\t\tif ( font === undefined ) {\n\n\t\t\tsuper(); // generate default extrude geometry\n\n\t\t} else {\n\n\t\t\tconst shapes = font.generateShapes( text, parameters.size, parameters.direction );\n\n\t\t\t// defaults\n\n\t\t\tif ( parameters.depth === undefined ) parameters.depth = 50;\n\t\t\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\t\t\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\t\t\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\t\t\tsuper( shapes, parameters );\n\n\t\t}\n\n\t\tthis.type = 'TextGeometry';\n\n\t}\n\n}\n\n/**\n * Represents the `options` type of the geometry's constructor.\n *\n * @typedef {Object} TextGeometry~Options\n * @property {Font} [font] - The font.\n * @property {number} [size=100] - The text size.\n * @property {number} [depth=50] - Depth to extrude the shape.\n * @property {number} [curveSegments=12] - Number of points on the curves.\n * @property {number} [steps=1] - Number of points used for subdividing segments along the depth of the extruded spline.\n * @property {boolean} [bevelEnabled=false] - Whether to beveling to the shape or not.\n * @property {number} [bevelThickness=10] - How deep into the original shape the bevel goes.\n * @property {number} [bevelSize=8] - Distance from the shape outline that the bevel extends.\n * @property {number} [bevelOffset=0] - Distance from the shape outline that the bevel starts.\n * @property {number} [bevelSegments=3] - Number of bevel layers.\n * @property {string} [direction='ltr'] - Char direction: ltr(left to right), rtl(right to left) & tb(top bottom).\n * @property {?Curve} [extrudePath=null] - A 3D spline path along which the shape should be extruded. Bevels not supported for path extrusion.\n * @property {Object} [UVGenerator] - An object that provides UV generator functions for custom UV generation.\n **/\n\nexport { TextGeometry };\n","import * as THREE from 'three';\nimport { Font, FontLoader } from 'three/examples/jsm/loaders/FontLoader.js';\nimport { TextGeometry } from 'three/examples/jsm/geometries/TextGeometry.js';\nimport { ObjectA3 } from './ObjectA3';\nimport { isString } from '../utils/TypeGuard';\n//import { unzipSync, strFromU8 } from 'three/addons/libs/fflate.module.js';\nimport { unzipAsync, readStringFromUnzipped } from '../utils/math';\n\nlet font: Font | null = null;\n/**\n * Text3Dを使う前にフォントを初期化しなければならないので、\n * この関数で初期化する。フォントはttfファイルから\n * TypeFace.js (https://gero3.github.io/facetype.js/) を\n * 使ってJSONファイルにする。日本語フォントとかだとサイズが\n * 大きくなるので、そのZIP圧縮ファイルにも対応させた。もと\n * もとのフォントファイルのファイル名がabcdefg.jsonの時は、\n * `zip abcdefg.json.zip abcdefg.json`として圧縮ファイルを\n * 作って下さい。(つまりその圧縮ファイルの中に含まれている\n * もとのファイルのファイル名が圧縮ファイルのファイル名から\n * 予測できるようにする。)\n */ \nexport async function initFont(path: string) {\n if (path.match(/.zip$/i)) {\n let path2 = path.substring(path.lastIndexOf('/')); // zipファイル前のpathを削る\n path2 = path2.substring(0,path2.length-4); // '.zip'を削る\n const zip = await unzipAsync(path)\n const jsonStr = readStringFromUnzipped(zip, path2);\n\n font = new Font(JSON.parse(jsonStr));\n } else {\n const fontLoader = new FontLoader();\n font = await fontLoader.loadAsync(path);\n }\n}\n\nexport class Text3D extends ObjectA3 {\n initObject(data: any) {\n let str;\n if (isString(data)) {\n str = data;\n } else {\n str = \"ERROR\";\n }\n if (font == null) {\n const geo = new THREE.BoxGeometry();\n const mat = new THREE.MeshStandardMaterial({ color: 0xff0000 });\n const mesh = new THREE.Mesh(geo, mat);\n return mesh;\n } else {\n const opt = {font: font,size: 1,depth: 0.5,curveSegments: 12};\n const geo = new TextGeometry(str,opt);\n geo.center();\n const mat = new THREE.MeshStandardMaterial({ color: 0x00ff00 });\n const mesh = new THREE.Mesh(geo, mat);\n return mesh;\n }\n }\n}\n","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\n/**\n * @module BufferGeometryUtils\n * @three_import import * as BufferGeometryUtils from 'three/addons/utils/BufferGeometryUtils.js';\n */\n\n/**\n * Computes vertex tangents using the MikkTSpace algorithm. MikkTSpace generates the same tangents consistently,\n * and is used in most modelling tools and normal map bakers. Use MikkTSpace for materials with normal maps,\n * because inconsistent tangents may lead to subtle visual issues in the normal map, particularly around mirrored\n * UV seams.\n *\n * In comparison to this method, {@link BufferGeometry#computeTangents} (a custom algorithm) generates tangents that\n * probably will not match the tangents in other software. The custom algorithm is sufficient for general use with a\n * custom material, and may be faster than MikkTSpace.\n *\n * Returns the original BufferGeometry. Indexed geometries will be de-indexed. Requires position, normal, and uv attributes.\n *\n * @param {BufferGeometry} geometry - The geometry to compute tangents for.\n * @param {Object} MikkTSpace - Instance of `examples/jsm/libs/mikktspace.module.js`, or `mikktspace` npm package.\n * Await `MikkTSpace.ready` before use.\n * @param {boolean} [negateSign=true] - Whether to negate the sign component (.w) of each tangent.\n * Required for normal map conventions in some formats, including glTF.\n * @return {BufferGeometry} The updated geometry.\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 * Merges a set of geometries into a single instance. All geometries must have compatible attributes.\n *\n * @param {Array<BufferGeometry>} geometries - The geometries to merge.\n * @param {boolean} [useGroups=false] - Whether to use groups or not.\n * @return {?BufferGeometry} The merged geometry. Returns `null` if the merge does not succeed.\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 * Merges a set of attributes into a single instance. All attributes must have compatible properties and types.\n * Instances of {@link InterleavedBufferAttribute} are not supported.\n *\n * @param {Array<BufferAttribute>} attributes - The attributes to merge.\n * @return {?BufferAttribute} The merged attribute. Returns `null` if the merge does not succeed.\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 * Performs a deep clone of the given buffer attribute.\n *\n * @param {BufferAttribute} attribute - The attribute to clone.\n * @return {BufferAttribute} The cloned attribute.\n */\nfunction 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 * Interleaves a set of attributes and returns a new array of corresponding attributes that share a\n * single {@link InterleavedBuffer} instance. All attributes must have compatible types.\n *\n * @param {Array<BufferAttribute>} attributes - The attributes to interleave.\n * @return {?Array<InterleavedBufferAttribute>} An array of interleaved attributes. If interleave does not succeed, the method returns `null`.\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/**\n * Returns a new, non-interleaved version of the given attribute.\n *\n * @param {InterleavedBufferAttribute} attribute - The interleaved attribute.\n * @return {BufferAttribute} The non-interleaved attribute.\n */\nfunction 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/**\n * Deinterleaves all attributes on the given geometry.\n *\n * @param {BufferGeometry} geometry - The geometry to deinterleave.\n */\nfunction 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 * Returns the amount of bytes used by all attributes to represent the geometry.\n *\n * @param {BufferGeometry} geometry - The geometry.\n * @return {number} The estimate bytes used.\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 * Returns a new geometry with vertices for which all similar vertex attributes (within tolerance) are merged.\n *\n * @param {BufferGeometry} geometry - The geometry to merge vertices for.\n * @param {number} [tolerance=1e-4] - The tolerance value.\n * @return {BufferGeometry} - The new geometry with merged vertices.\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 * Returns a new indexed geometry based on `TrianglesDrawMode` draw mode.\n * This mode corresponds to the `gl.TRIANGLES` primitive in WebGL.\n *\n * @param {BufferGeometry} geometry - The geometry to convert.\n * @param {number} drawMode - The current draw mode.\n * @return {BufferGeometry} The new geometry using `TrianglesDrawMode`.\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 *\n * Helpful for Raytracing or Decals (i.e. a `DecalGeometry` applied to a morphed Object with a `BufferGeometry`\n * will use the original `BufferGeometry`, not the morphed/skinned one, generating an incorrect result.\n * Using this function to create a shadow `Object3`D the `DecalGeometry` can be correctly generated).\n *\n * @param {Mesh|Line|Points} object - The 3D object to compute morph attributes for.\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\n/**\n * Merges the {@link BufferGeometry#groups} for the given geometry.\n *\n * @param {BufferGeometry} geometry - The geometry to modify.\n * @return {BufferGeometry} - The updated geometry\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 * 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 - The geometry to modify.\n * @param {number} [creaseAngle=Math.PI/3] - The crease angle in radians.\n * @return {BufferGeometry} - The updated geometry\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\tdeepCloneAttribute,\n\tdeinterleaveAttribute,\n\tdeinterleaveGeometry,\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\n/**\n * A loader for the glTF 2.0 format.\n *\n * [glTF](https://www.khronos.org/gltf/} (GL Transmission Format) is an [open format specification]{@link https://github.com/KhronosGroup/glTF/tree/main/specification/2.0)\n * for efficient delivery and loading of 3D content. Assets may be provided either in JSON (.gltf) or binary (.glb)\n * format. External files store textures (.jpg, .png) and additional binary data (.bin). A glTF asset may deliver\n * one or more scenes, including meshes, materials, textures, skins, skeletons, morph targets, animations, lights,\n * and/or cameras.\n *\n * `GLTFLoader` uses {@link ImageBitmapLoader} whenever possible. Be advised that image bitmaps are not\n * automatically GC-collected when they are no longer referenced, and they require special handling during\n * the disposal process.\n *\n * `GLTFLoader` supports the following glTF 2.0 extensions:\n * - KHR_draco_mesh_compression\n * - KHR_materials_clearcoat\n * - KHR_materials_dispersion\n * - KHR_materials_ior\n * - KHR_materials_specular\n * - KHR_materials_transmission\n * - KHR_materials_iridescence\n * - KHR_materials_unlit\n * - KHR_materials_volume\n * - KHR_mesh_quantization\n * - KHR_lights_punctual\n * - KHR_texture_basisu\n * - KHR_texture_transform\n * - EXT_texture_webp\n * - EXT_meshopt_compression\n * - EXT_mesh_gpu_instancing\n *\n * The following glTF 2.0 extension is supported by an external user plugin:\n * - [KHR_materials_variants](https://github.com/takahirox/three-gltf-extensions)\n * - [MSFT_texture_dds](https://github.com/takahirox/three-gltf-extensions)\n * - [KHR_animation_pointer](https://github.com/needle-tools/three-animation-pointer)\n * - [NEEDLE_progressive](https://github.com/needle-tools/gltf-progressive)\n *\n * ```js\n * const loader = new GLTFLoader();\n *\n * // Optional: Provide a DRACOLoader instance to decode compressed mesh data\n * const dracoLoader = new DRACOLoader();\n * dracoLoader.setDecoderPath( '/examples/jsm/libs/draco/' );\n * loader.setDRACOLoader( dracoLoader );\n *\n * const gltf = await loader.loadAsync( 'models/gltf/duck/duck.gltf' );\n * scene.add( gltf.scene );\n * ```\n *\n * @augments Loader\n * @three_import import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';\n */\nclass GLTFLoader extends Loader {\n\n\t/**\n\t * Constructs a new glTF loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\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\t/**\n\t * Starts loading from the given URL and passes the loaded glTF asset\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(GLTFLoader~LoadObject)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\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\t/**\n\t * Sets the given Draco loader to this loader. Required for decoding assets\n\t * compressed with the `KHR_draco_mesh_compression` extension.\n\t *\n\t * @param {DRACOLoader} dracoLoader - The Draco loader to set.\n\t * @return {GLTFLoader} A reference to this loader.\n\t */\n\tsetDRACOLoader( dracoLoader ) {\n\n\t\tthis.dracoLoader = dracoLoader;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given KTX2 loader to this loader. Required for loading KTX2\n\t * compressed textures.\n\t *\n\t * @param {KTX2Loader} ktx2Loader - The KTX2 loader to set.\n\t * @return {GLTFLoader} A reference to this loader.\n\t */\n\tsetKTX2Loader( ktx2Loader ) {\n\n\t\tthis.ktx2Loader = ktx2Loader;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given meshopt decoder. Required for decoding assets\n\t * compressed with the `EXT_meshopt_compression` extension.\n\t *\n\t * @param {Object} meshoptDecoder - The meshopt decoder to set.\n\t * @return {GLTFLoader} A reference to this loader.\n\t */\n\tsetMeshoptDecoder( meshoptDecoder ) {\n\n\t\tthis.meshoptDecoder = meshoptDecoder;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Registers a plugin callback. This API is internally used to implement the various\n\t * glTF extensions but can also used by third-party code to add additional logic\n\t * to the loader.\n\t *\n\t * @param {function(parser:GLTFParser)} callback - The callback function to register.\n\t * @return {GLTFLoader} A reference to this loader.\n\t */\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\t/**\n\t * Unregisters a plugin callback.\n\t *\n\t * @param {Function} callback - The callback function to unregister.\n\t * @return {GLTFLoader} A reference to this loader.\n\t */\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\t/**\n\t * Parses the given FBX data and returns the resulting group.\n\t *\n\t * @param {string|ArrayBuffer} data - The raw glTF data.\n\t * @param {string} path - The URL base path.\n\t * @param {function(GLTFLoader~LoadObject)} onLoad - Executed when the loading process has been finished.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\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\t/**\n\t * Async version of {@link GLTFLoader#parse}.\n\t *\n\t * @async\n\t * @param {string|ArrayBuffer} data - The raw glTF data.\n\t * @param {string} path - The URL base path.\n\t * @return {Promise<GLTFLoader~LoadObject>} A Promise that resolves with the loaded glTF when the parsing has been finished.\n\t */\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 *\n * @private\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\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\n */\nclass GLTFTextureWebPExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_WEBP;\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 parser.loadTextureImage( textureIndex, extension.source, loader );\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 *\n * @private\n */\nclass GLTFTextureAVIFExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_AVIF;\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 parser.loadTextureImage( textureIndex, extension.source, loader );\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 *\n * @private\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 * @private\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 *\n * @private\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 *\n * @private\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 *\n * @private\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 _quaternion = 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_quaternion.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 *\n * @private\n * @param {Object<string, Material>} cache\n * @return {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 *\n * @private\n * @param {Object3D|Material|BufferGeometry|Object|AnimationClip} 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 * @private\n * @param {BufferGeometry} geometry\n * @param {Array<GLTF.Target>} targets\n * @param {GLTFParser} parser\n * @return {Promise<BufferGeometry>}\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 *\n * @private\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\tif ( uri.search( /\\.ktx2($|\\?)/i ) > 0 || uri.search( /^data\\:image\\/ktx2/ ) === 0 ) return 'image/ktx2';\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 * @private\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 * @private\n\t * @param {Object} cache\n\t * @param {Object3D} index\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/**\n\t * Returns a reference to a shared resource, cloning it if necessary.\n\t *\n\t * @private\n\t * @param {Object} cache\n\t * @param {number} index\n\t * @param {Object} object\n\t * @return {Object}\n\t */\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 *\n\t * @private\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise<Object3D|Material|Texture|AnimationClip|ArrayBuffer|Object>}\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 *\n\t * @private\n\t * @param {string} type\n\t * @return {Promise<Array<Object>>}\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 *\n\t * @private\n\t * @param {number} bufferIndex\n\t * @return {Promise<ArrayBuffer>}\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 *\n\t * @private\n\t * @param {number} bufferViewIndex\n\t * @return {Promise<ArrayBuffer>}\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 *\n\t * @private\n\t * @param {number} accessorIndex\n\t * @return {Promise<BufferAttribute|InterleavedBufferAttribute>}\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\t// Ignore normalized since we copy from sparse\n\t\t\t\tbufferAttribute.normalized = false;\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\tbufferAttribute.normalized = normalized;\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 *\n\t * @private\n\t * @param {number} textureIndex\n\t * @return {Promise<?Texture>}\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\t\t\ttexture.generateMipmaps = ! texture.isCompressedTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\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 *\n\t * @private\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @param {string} [colorSpace]\n\t * @return {Promise<Texture>}\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 *\n\t * @private\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 *\n\t * @private\n\t * @param {number} materialIndex\n\t * @return {Promise<Material>}\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/**\n\t * When Object3D instances are targeted by animation, they need unique names.\n\t *\n\t * @private\n\t * @param {string} originalName\n\t * @return {string}\n\t */\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 * @private\n\t * @param {Array<GLTF.Primitive>} primitives\n\t * @return {Promise<Array<BufferGeometry>>}\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 *\n\t * @private\n\t * @param {number} meshIndex\n\t * @return {Promise<Group|Mesh|SkinnedMesh|Line|Points>}\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 *\n\t * @private\n\t * @param {number} cameraIndex\n\t * @return {Promise<Camera>|undefined}\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 *\n\t * @private\n\t * @param {number} skinIndex\n\t * @return {Promise<Skeleton>}\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 *\n\t * @private\n\t * @param {number} animationIndex\n\t * @return {Promise<AnimationClip>}\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\tconst animation = new AnimationClip( animationName, undefined, tracks );\n\n\t\t\tassignExtrasToUserData( animation, animationDef );\n\n\t\t\treturn animation;\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 *\n\t * @private\n\t * @param {number} nodeIndex\n\t * @return {Promise<Object3D>}\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} else if ( nodeDef.mesh !== undefined && parser.meshCache.refs[ nodeDef.mesh ] > 1 ) {\n\n\t\t\t\tconst mapping = parser.associations.get( node );\n\t\t\t\tparser.associations.set( node, { ...mapping } );\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 *\n\t * @private\n\t * @param {number} sceneIndex\n\t * @return {Promise<Group>}\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.translation:\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 *\n * @private\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 *\n * @private\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n * @return {Promise<BufferGeometry>}\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\n/**\n * Loader result of `GLTFLoader`.\n *\n * @typedef {Object} GLTFLoader~LoadObject\n * @property {Array<AnimationClip>} animations - An array of animation clips.\n * @property {Object} asset - Meta data about the loaded asset.\n * @property {Array<Camera>} cameras - An array of cameras.\n * @property {GLTFParser} parser - A reference to the internal parser.\n * @property {Group} scene - The default scene.\n * @property {Array<Group>} scenes - glTF assets might define multiple scenes.\n * @property {Object} userData - Additional data.\n **/\n\nexport { GLTFLoader };\n","import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tColor,\n\tColorManagement,\n\tFileLoader,\n\tLoader,\n\tLinearSRGBColorSpace,\n\tSRGBColorSpace,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute\n} from 'three';\n\nconst _taskCache = new WeakMap();\n\n/**\n * A loader for the Draco format.\n *\n * [Draco](https://google.github.io/draco/) is an open source library for compressing\n * and decompressing 3D meshes and point clouds. Compressed geometry can be significantly smaller,\n * at the cost of additional decoding time on the client device.\n *\n * Standalone Draco files have a `.drc` extension, and contain vertex positions, normals, colors,\n * and other attributes. Draco files do not contain materials, textures, animation, or node hierarchies –\n * to use these features, embed Draco geometry inside of a glTF file. A normal glTF file can be converted\n * to a Draco-compressed glTF file using [glTF-Pipeline](https://github.com/CesiumGS/gltf-pipeline).\n * When using Draco with glTF, an instance of `DRACOLoader` will be used internally by {@link GLTFLoader}.\n *\n * It is recommended to create one DRACOLoader instance and reuse it to avoid loading and creating\n * multiple decoder instances.\n *\n * `DRACOLoader` will automatically use either the JS or the WASM decoding library, based on\n * browser capabilities.\n *\n * ```js\n * const loader = new DRACOLoader();\n * loader.setDecoderPath( '/examples/jsm/libs/draco/' );\n *\n * const geometry = await dracoLoader.loadAsync( 'models/draco/bunny.drc' );\n * geometry.computeVertexNormals(); // optional\n *\n * dracoLoader.dispose();\n * ```\n *\n * @augments Loader\n * @three_import import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';\n */\nclass DRACOLoader extends Loader {\n\n\t/**\n\t * Constructs a new Draco loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.decoderPath = '';\n\t\tthis.decoderConfig = {};\n\t\tthis.decoderBinary = null;\n\t\tthis.decoderPending = null;\n\n\t\tthis.workerLimit = 4;\n\t\tthis.workerPool = [];\n\t\tthis.workerNextTaskID = 1;\n\t\tthis.workerSourceURL = '';\n\n\t\tthis.defaultAttributeIDs = {\n\t\t\tposition: 'POSITION',\n\t\t\tnormal: 'NORMAL',\n\t\t\tcolor: 'COLOR',\n\t\t\tuv: 'TEX_COORD'\n\t\t};\n\t\tthis.defaultAttributeTypes = {\n\t\t\tposition: 'Float32Array',\n\t\t\tnormal: 'Float32Array',\n\t\t\tcolor: 'Float32Array',\n\t\t\tuv: 'Float32Array'\n\t\t};\n\n\t}\n\n\t/**\n\t * Provides configuration for the decoder libraries. Configuration cannot be changed after decoding begins.\n\t *\n\t * @param {string} path - The decoder path.\n\t * @return {DRACOLoader} A reference to this loader.\n\t */\n\tsetDecoderPath( path ) {\n\n\t\tthis.decoderPath = path;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Provides configuration for the decoder libraries. Configuration cannot be changed after decoding begins.\n\t *\n\t * @param {{type:('js'|'wasm')}} config - The decoder config.\n\t * @return {DRACOLoader} A reference to this loader.\n\t */\n\tsetDecoderConfig( config ) {\n\n\t\tthis.decoderConfig = config;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the maximum number of Web Workers to be used during decoding.\n\t * A lower limit may be preferable if workers are also for other tasks in the application.\n\t *\n\t * @param {number} workerLimit - The worker limit.\n\t * @return {DRACOLoader} A reference to this loader.\n\t */\n\tsetWorkerLimit( workerLimit ) {\n\n\t\tthis.workerLimit = workerLimit;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded Draco asset\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\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, ( buffer ) => {\n\n\t\t\tthis.parse( buffer, onLoad, onError );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Parses the given Draco data.\n\t *\n\t * @param {ArrayBuffer} buffer - The raw Draco data as an array buffer.\n\t * @param {function(BufferGeometry)} onLoad - Executed when the loading/parsing process has been finished.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tparse( buffer, onLoad, onError = ()=>{} ) {\n\n\t\tthis.decodeDracoFile( buffer, onLoad, null, null, SRGBColorSpace, onError ).catch( onError );\n\n\t}\n\n\t//\n\n\tdecodeDracoFile( buffer, callback, attributeIDs, attributeTypes, vertexColorSpace = LinearSRGBColorSpace, onError = () => {} ) {\n\n\t\tconst taskConfig = {\n\t\t\tattributeIDs: attributeIDs || this.defaultAttributeIDs,\n\t\t\tattributeTypes: attributeTypes || this.defaultAttributeTypes,\n\t\t\tuseUniqueIDs: !! attributeIDs,\n\t\t\tvertexColorSpace: vertexColorSpace,\n\t\t};\n\n\t\treturn this.decodeGeometry( buffer, taskConfig ).then( callback ).catch( onError );\n\n\t}\n\n\tdecodeGeometry( buffer, taskConfig ) {\n\n\t\tconst taskKey = JSON.stringify( taskConfig );\n\n\t\t// Check for an existing task using this buffer. A transferred buffer cannot be transferred\n\t\t// again from this thread.\n\t\tif ( _taskCache.has( buffer ) ) {\n\n\t\t\tconst cachedTask = _taskCache.get( buffer );\n\n\t\t\tif ( cachedTask.key === taskKey ) {\n\n\t\t\t\treturn cachedTask.promise;\n\n\t\t\t} else if ( buffer.byteLength === 0 ) {\n\n\t\t\t\t// Technically, it would be possible to wait for the previous task to complete,\n\t\t\t\t// transfer the buffer back, and decode again with the second configuration. That\n\t\t\t\t// is complex, and I don't know of any reason to decode a Draco buffer twice in\n\t\t\t\t// different ways, so this is left unimplemented.\n\t\t\t\tthrow new Error(\n\n\t\t\t\t\t'THREE.DRACOLoader: Unable to re-decode a buffer with different ' +\n\t\t\t\t\t'settings. Buffer has already been transferred.'\n\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet worker;\n\t\tconst taskID = this.workerNextTaskID ++;\n\t\tconst taskCost = buffer.byteLength;\n\n\t\t// Obtain a worker and assign a task, and construct a geometry instance\n\t\t// when the task completes.\n\t\tconst geometryPending = this._getWorker( taskID, taskCost )\n\t\t\t.then( ( _worker ) => {\n\n\t\t\t\tworker = _worker;\n\n\t\t\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\t\t\tworker._callbacks[ taskID ] = { resolve, reject };\n\n\t\t\t\t\tworker.postMessage( { type: 'decode', id: taskID, taskConfig, buffer }, [ buffer ] );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t} );\n\n\t\t\t} )\n\t\t\t.then( ( message ) => this._createGeometry( message.geometry ) );\n\n\t\t// Remove task from the task list.\n\t\t// Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)\n\t\tgeometryPending\n\t\t\t.catch( () => true )\n\t\t\t.then( () => {\n\n\t\t\t\tif ( worker && taskID ) {\n\n\t\t\t\t\tthis._releaseTask( worker, taskID );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t// Cache the task result.\n\t\t_taskCache.set( buffer, {\n\n\t\t\tkey: taskKey,\n\t\t\tpromise: geometryPending\n\n\t\t} );\n\n\t\treturn geometryPending;\n\n\t}\n\n\t_createGeometry( geometryData ) {\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tif ( geometryData.index ) {\n\n\t\t\tgeometry.setIndex( new BufferAttribute( geometryData.index.array, 1 ) );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < geometryData.attributes.length; i ++ ) {\n\n\t\t\tconst { name, array, itemSize, stride, vertexColorSpace } = geometryData.attributes[ i ];\n\n\t\t\tlet attribute;\n\n\t\t\tif ( itemSize === stride ) {\n\n\t\t\t\tattribute = new BufferAttribute( array, itemSize );\n\n\t\t\t} else {\n\n\t\t\t\tconst buffer = new InterleavedBuffer( array, stride );\n\n\t\t\t\tattribute = new InterleavedBufferAttribute( buffer, itemSize, 0 );\n\n\t\t\t}\n\n\t\t\tif ( name === 'color' ) {\n\n\t\t\t\tthis._assignVertexColorSpace( attribute, vertexColorSpace );\n\n\t\t\t\tattribute.normalized = ( array instanceof Float32Array ) === false;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( name, attribute );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n\t_assignVertexColorSpace( attribute, inputColorSpace ) {\n\n\t\t// While .drc files do not specify colorspace, the only 'official' tooling\n\t\t// is PLY and OBJ converters, which use sRGB. We'll assume sRGB when a .drc\n\t\t// file is passed into .load() or .parse(). GLTFLoader uses internal APIs\n\t\t// to decode geometry, and vertex colors are already Linear-sRGB in there.\n\n\t\tif ( inputColorSpace !== SRGBColorSpace ) return;\n\n\t\tconst _color = new Color();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\t_color.fromBufferAttribute( attribute, i );\n\t\t\tColorManagement.colorSpaceToWorking( _color, SRGBColorSpace );\n\t\t\tattribute.setXYZ( i, _color.r, _color.g, _color.b );\n\n\t\t}\n\n\t}\n\n\t_loadLibrary( url, responseType ) {\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.decoderPath );\n\t\tloader.setResponseType( responseType );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\tloader.load( url, resolve, undefined, reject );\n\n\t\t} );\n\n\t}\n\n\tpreload() {\n\n\t\tthis._initDecoder();\n\n\t\treturn this;\n\n\t}\n\n\t_initDecoder() {\n\n\t\tif ( this.decoderPending ) return this.decoderPending;\n\n\t\tconst useJS = typeof WebAssembly !== 'object' || this.decoderConfig.type === 'js';\n\t\tconst librariesPending = [];\n\n\t\tif ( useJS ) {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.js', 'text' ) );\n\n\t\t} else {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_wasm_wrapper.js', 'text' ) );\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.wasm', 'arraybuffer' ) );\n\n\t\t}\n\n\t\tthis.decoderPending = Promise.all( librariesPending )\n\t\t\t.then( ( libraries ) => {\n\n\t\t\t\tconst jsContent = libraries[ 0 ];\n\n\t\t\t\tif ( ! useJS ) {\n\n\t\t\t\t\tthis.decoderConfig.wasmBinary = libraries[ 1 ];\n\n\t\t\t\t}\n\n\t\t\t\tconst fn = DRACOWorker.toString();\n\n\t\t\t\tconst body = [\n\t\t\t\t\t'/* draco decoder */',\n\t\t\t\t\tjsContent,\n\t\t\t\t\t'',\n\t\t\t\t\t'/* worker */',\n\t\t\t\t\tfn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) )\n\t\t\t\t].join( '\\n' );\n\n\t\t\t\tthis.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) );\n\n\t\t\t} );\n\n\t\treturn this.decoderPending;\n\n\t}\n\n\t_getWorker( taskID, taskCost ) {\n\n\t\treturn this._initDecoder().then( () => {\n\n\t\t\tif ( this.workerPool.length < this.workerLimit ) {\n\n\t\t\t\tconst worker = new Worker( this.workerSourceURL );\n\n\t\t\t\tworker._callbacks = {};\n\t\t\t\tworker._taskCosts = {};\n\t\t\t\tworker._taskLoad = 0;\n\n\t\t\t\tworker.postMessage( { type: 'init', decoderConfig: this.decoderConfig } );\n\n\t\t\t\tworker.onmessage = function ( e ) {\n\n\t\t\t\t\tconst message = e.data;\n\n\t\t\t\t\tswitch ( message.type ) {\n\n\t\t\t\t\t\tcase 'decode':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].resolve( message );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'error':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].reject( message );\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.DRACOLoader: Unexpected message, \"' + message.type + '\"' );\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t\tthis.workerPool.push( worker );\n\n\t\t\t} else {\n\n\t\t\t\tthis.workerPool.sort( function ( a, b ) {\n\n\t\t\t\t\treturn a._taskLoad > b._taskLoad ? - 1 : 1;\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tconst worker = this.workerPool[ this.workerPool.length - 1 ];\n\t\t\tworker._taskCosts[ taskID ] = taskCost;\n\t\t\tworker._taskLoad += taskCost;\n\t\t\treturn worker;\n\n\t\t} );\n\n\t}\n\n\t_releaseTask( worker, taskID ) {\n\n\t\tworker._taskLoad -= worker._taskCosts[ taskID ];\n\t\tdelete worker._callbacks[ taskID ];\n\t\tdelete worker._taskCosts[ taskID ];\n\n\t}\n\n\tdebug() {\n\n\t\tconsole.log( 'Task load: ', this.workerPool.map( ( worker ) => worker._taskLoad ) );\n\n\t}\n\n\tdispose() {\n\n\t\tfor ( let i = 0; i < this.workerPool.length; ++ i ) {\n\n\t\t\tthis.workerPool[ i ].terminate();\n\n\t\t}\n\n\t\tthis.workerPool.length = 0;\n\n\t\tif ( this.workerSourceURL !== '' ) {\n\n\t\t\tURL.revokeObjectURL( this.workerSourceURL );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/* WEB WORKER */\n\nfunction DRACOWorker() {\n\n\tlet decoderConfig;\n\tlet decoderPending;\n\n\tonmessage = function ( e ) {\n\n\t\tconst message = e.data;\n\n\t\tswitch ( message.type ) {\n\n\t\t\tcase 'init':\n\t\t\t\tdecoderConfig = message.decoderConfig;\n\t\t\t\tdecoderPending = new Promise( function ( resolve/*, reject*/ ) {\n\n\t\t\t\t\tdecoderConfig.onModuleLoaded = function ( draco ) {\n\n\t\t\t\t\t\t// Module is Promise-like. Wrap before resolving to avoid loop.\n\t\t\t\t\t\tresolve( { draco: draco } );\n\n\t\t\t\t\t};\n\n\t\t\t\t\tDracoDecoderModule( decoderConfig ); // eslint-disable-line no-undef\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t\tcase 'decode':\n\t\t\t\tconst buffer = message.buffer;\n\t\t\t\tconst taskConfig = message.taskConfig;\n\t\t\t\tdecoderPending.then( ( module ) => {\n\n\t\t\t\t\tconst draco = module.draco;\n\t\t\t\t\tconst decoder = new draco.Decoder();\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tconst geometry = decodeGeometry( draco, decoder, new Int8Array( buffer ), taskConfig );\n\n\t\t\t\t\t\tconst buffers = geometry.attributes.map( ( attr ) => attr.array.buffer );\n\n\t\t\t\t\t\tif ( geometry.index ) buffers.push( geometry.index.array.buffer );\n\n\t\t\t\t\t\tself.postMessage( { type: 'decode', id: message.id, geometry }, buffers );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tconsole.error( error );\n\n\t\t\t\t\t\tself.postMessage( { type: 'error', id: message.id, error: error.message } );\n\n\t\t\t\t\t} finally {\n\n\t\t\t\t\t\tdraco.destroy( decoder );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t};\n\n\tfunction decodeGeometry( draco, decoder, array, taskConfig ) {\n\n\t\tconst attributeIDs = taskConfig.attributeIDs;\n\t\tconst attributeTypes = taskConfig.attributeTypes;\n\n\t\tlet dracoGeometry;\n\t\tlet decodingStatus;\n\n\t\tconst geometryType = decoder.GetEncodedGeometryType( array );\n\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\tdracoGeometry = new draco.Mesh();\n\t\t\tdecodingStatus = decoder.DecodeArrayToMesh( array, array.byteLength, dracoGeometry );\n\n\t\t} else if ( geometryType === draco.POINT_CLOUD ) {\n\n\t\t\tdracoGeometry = new draco.PointCloud();\n\t\t\tdecodingStatus = decoder.DecodeArrayToPointCloud( array, array.byteLength, dracoGeometry );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Unexpected geometry type.' );\n\n\t\t}\n\n\t\tif ( ! decodingStatus.ok() || dracoGeometry.ptr === 0 ) {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Decoding failed: ' + decodingStatus.error_msg() );\n\n\t\t}\n\n\t\tconst geometry = { index: null, attributes: [] };\n\n\t\t// Gather all vertex attributes.\n\t\tfor ( const attributeName in attributeIDs ) {\n\n\t\t\tconst attributeType = self[ attributeTypes[ attributeName ] ];\n\n\t\t\tlet attribute;\n\t\t\tlet attributeID;\n\n\t\t\t// A Draco file may be created with default vertex attributes, whose attribute IDs\n\t\t\t// are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively,\n\t\t\t// a Draco file may contain a custom set of attributes, identified by known unique\n\t\t\t// IDs. glTF files always do the latter, and `.drc` files typically do the former.\n\t\t\tif ( taskConfig.useUniqueIDs ) {\n\n\t\t\t\tattributeID = attributeIDs[ attributeName ];\n\t\t\t\tattribute = decoder.GetAttributeByUniqueId( dracoGeometry, attributeID );\n\n\t\t\t} else {\n\n\t\t\t\tattributeID = decoder.GetAttributeId( dracoGeometry, draco[ attributeIDs[ attributeName ] ] );\n\n\t\t\t\tif ( attributeID === - 1 ) continue;\n\n\t\t\t\tattribute = decoder.GetAttribute( dracoGeometry, attributeID );\n\n\t\t\t}\n\n\t\t\tconst attributeResult = decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute );\n\n\t\t\tif ( attributeName === 'color' ) {\n\n\t\t\t\tattributeResult.vertexColorSpace = taskConfig.vertexColorSpace;\n\n\t\t\t}\n\n\t\t\tgeometry.attributes.push( attributeResult );\n\n\t\t}\n\n\t\t// Add index.\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\tgeometry.index = decodeIndex( draco, decoder, dracoGeometry );\n\n\t\t}\n\n\t\tdraco.destroy( dracoGeometry );\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction decodeIndex( draco, decoder, dracoGeometry ) {\n\n\t\tconst numFaces = dracoGeometry.num_faces();\n\t\tconst numIndices = numFaces * 3;\n\t\tconst byteLength = numIndices * 4;\n\n\t\tconst ptr = draco._malloc( byteLength );\n\t\tdecoder.GetTrianglesUInt32Array( dracoGeometry, byteLength, ptr );\n\t\tconst index = new Uint32Array( draco.HEAPF32.buffer, ptr, numIndices ).slice();\n\t\tdraco._free( ptr );\n\n\t\treturn { array: index, itemSize: 1 };\n\n\t}\n\n\tfunction decodeAttribute( draco, decoder, dracoGeometry, attributeName, TypedArray, attribute ) {\n\n\t\tconst count = dracoGeometry.num_points();\n\t\tconst itemSize = attribute.num_components();\n\t\tconst dracoDataType = getDracoDataType( draco, TypedArray );\n\n\t\t// Reference: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#data-alignment\n\t\tconst srcByteStride = itemSize * TypedArray.BYTES_PER_ELEMENT;\n\t\tconst dstByteStride = Math.ceil( srcByteStride / 4 ) * 4;\n\n\t\tconst dstStride = dstByteStride / TypedArray.BYTES_PER_ELEMENT;\n\n\t\tconst srcByteLength = count * srcByteStride;\n\t\tconst dstByteLength = count * dstByteStride;\n\n\t\tconst ptr = draco._malloc( srcByteLength );\n\t\tdecoder.GetAttributeDataArrayForAllPoints( dracoGeometry, attribute, dracoDataType, srcByteLength, ptr );\n\n\t\tconst srcArray = new TypedArray( draco.HEAPF32.buffer, ptr, srcByteLength / TypedArray.BYTES_PER_ELEMENT );\n\t\tlet dstArray;\n\n\t\tif ( srcByteStride === dstByteStride ) {\n\n\t\t\t// THREE.BufferAttribute\n\n\t\t\tdstArray = srcArray.slice();\n\n\t\t} else {\n\n\t\t\t// THREE.InterleavedBufferAttribute\n\n\t\t\tdstArray = new TypedArray( dstByteLength / TypedArray.BYTES_PER_ELEMENT );\n\n\t\t\tlet dstOffset = 0;\n\n\t\t\tfor ( let i = 0, il = srcArray.length; i < il; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tdstArray[ dstOffset + j ] = srcArray[ i * itemSize + j ];\n\n\t\t\t\t}\n\n\t\t\t\tdstOffset += dstStride;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdraco._free( ptr );\n\n\t\treturn {\n\t\t\tname: attributeName,\n\t\t\tcount: count,\n\t\t\titemSize: itemSize,\n\t\t\tarray: dstArray,\n\t\t\tstride: dstStride\n\t\t};\n\n\t}\n\n\tfunction getDracoDataType( draco, TypedArray ) {\n\n\t\tswitch ( TypedArray ) {\n\n\t\t\tcase Float32Array: return draco.DT_FLOAT32;\n\t\t\tcase Int8Array: return draco.DT_INT8;\n\t\t\tcase Int16Array: return draco.DT_INT16;\n\t\t\tcase Int32Array: return draco.DT_INT32;\n\t\t\tcase Uint8Array: return draco.DT_UINT8;\n\t\t\tcase Uint16Array: return draco.DT_UINT16;\n\t\t\tcase Uint32Array: return draco.DT_UINT32;\n\n\t\t}\n\n\t}\n\n}\n\nexport { DRACOLoader };\n","import * as THREE from 'three';\nimport { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';\nimport type { GLTF } from 'three/addons/loaders/GLTFLoader.js';\nimport { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';\nimport { ObjectA3 } from './ObjectA3';\nimport type { AsyncInitRequired } from './AsyncInitRequired';\nimport { Motion } from './Motion';\nimport { isString } from '../utils/TypeGuard';\n\ntype MorphTargetObject =\n | THREE.Mesh\n | THREE.Line\n | THREE.Points;\n\ntype MorphTargetCapable = MorphTargetObject & {\n morphTargetDictionary: Record<string, number>;\n morphTargetInfluences: number[];\n};\n\nfunction hasMorphTargets(\n obj: THREE.Object3D\n): obj is MorphTargetCapable {\n return (\n 'morphTargetDictionary' in obj &&\n obj.morphTargetDictionary !== undefined &&\n 'morphTargetInfluences' in obj &&\n Array.isArray(obj.morphTargetInfluences)\n );\n}\n\n\nconst gltfLoader = new GLTFLoader();\nconst dracoLoader = new DRACOLoader();\ndracoLoader.setDecoderPath('/examples/jsm/libs/draco/');\ngltfLoader.setDRACOLoader(dracoLoader);\n\ninterface Model {\n gltf: GLTF;\n mixer: THREE.AnimationMixer;\n actions: Record<string, THREE.AnimationAction>;\n morphs: Record<string, {array: Array<number>, idx: number}>;\n}\n\n/**\n * glTFモデルを読み込み表示するためのクラス。\n */\nexport class GLTFA3 extends ObjectA3 implements AsyncInitRequired<GLTFA3> {\n readonly ready: Promise<GLTFA3>;\n model?: Model;\n\n constructor(data: any) {\n super();\n this.ready = this.asyncInit(data);\n }\n\n initObject() {\n // ルートとなるObject3Dだけ用意して後でその中に\n // ロードしたglTFのscene(モデル)をaddする。\n return new THREE.Object3D();\n }\n\n initMotion() {\n return new GLTFMotion(this);\n }\n\n async asyncInit(data: any) {\n if (isString(data)) {\n const gltf = await gltfLoader.loadAsync(data);\n const mixer = new THREE.AnimationMixer(gltf.scene);\n const actions: Record<string,THREE.AnimationAction> = {};\nconsole.log(`File: ${data}`);\nconsole.log(` actions:`);\n for (let i=0;i<gltf.animations.length;i++) {\n const clip = gltf.animations[i];\n const action = mixer.clipAction(clip);\n actions[clip.name] = action;\nconsole.log(` ${clip.name}`);\n }\nconsole.log(` morphs:`);\n const morphs: Record<string,{array:Array<number>,idx:number}> = {};\n gltf.scene.traverse((obj)=>{\n if (hasMorphTargets(obj)) {\n const { morphTargetDictionary, morphTargetInfluences } = obj;\n Object.keys(morphTargetDictionary).forEach((e)=>{\n const morphName = obj.name+'.'+e; // 一意の名前になんない可能性少しある\n const idx = morphTargetDictionary[e];\n morphs[morphName] = {array: morphTargetInfluences, idx: idx};\nconsole.log(` ${morphName}`);\n })\n }\n });\n this.model = {\n gltf: gltf,\n mixer: mixer,\n actions: actions,\n morphs: morphs\n };\n this.model.gltf.scene.traverse((o)=>{\n o.userData['a3js'] = { objectA3: this };\n });\n this.object.add(this.model.gltf.scene);\n if (this.motion instanceof GLTFMotion)\n this.motion.setModel(this.model);\n } else {\n const geo = new THREE.BoxGeometry();\n const mat = new THREE.MeshStandardMaterial({ color: 0xff0000 });\n const mesh = new THREE.Mesh(geo, mat);\n this.object.add(mesh);\n }\n return this;\n }\n\n morph(morphName: string, value: number) {\n if (this.model) {\n if (morphName in this.model.morphs) {\n const { array, idx } = this.model.morphs[morphName]\n array[idx] = value;\n }\n }\n }\n}\n\nclass GLTFMotion extends Motion {\n model?: Model;\n isPaused: boolean;\n\n constructor(objectA3: ObjectA3) {\n super(objectA3);\n this.isPaused = false;\n }\n\n setModel(model: Model) {\n this.model = model;\n }\n\n setObject(objectA3: ObjectA3) {\n if (objectA3 instanceof GLTFA3) {\n super.setObject(objectA3);\n this.model = objectA3.model;\n } else {\n console.warn('GLTFMotion can set only GLTFA3 object.');\n }\n }\n\n update(dt: number) {\n super.update(dt);\n if (!this.isPaused && this.model)\n this.model.mixer.update(dt);\n }\n\n changeMotion(actionName: string) {\n this.model?.mixer.stopAllAction();\n const action = this.model?.actions[actionName];\n if (action) {\n action.play();\n }\n }\n\n setPause(p: boolean) {\n this.isPaused = p;\n }\n\n setTime(time: number) {\n this.model?.mixer.setTime(time);\n }\n}","/*! chevrotain - v9.0.1 */\nvar R=(t,e)=>()=>(e||(e={exports:{}},t(e.exports,e)),e.exports);var Er=R(Pt=>{\"use strict\";Object.defineProperty(Pt,\"__esModule\",{value:!0});Pt.VERSION=void 0;Pt.VERSION=\"9.0.1\"});var k=R((exports,module)=>{\"use strict\";var __spreadArray=exports&&exports.__spreadArray||function(t,e){for(var r=0,n=e.length,i=t.length;r<n;r++,i++)t[i]=e[r];return t};Object.defineProperty(exports,\"__esModule\",{value:!0});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(t){return t&&t.length===0}exports.isEmpty=isEmpty;function keys(t){return t==null?[]:Object.keys(t)}exports.keys=keys;function values(t){for(var e=[],r=Object.keys(t),n=0;n<r.length;n++)e.push(t[r[n]]);return e}exports.values=values;function mapValues(t,e){for(var r=[],n=keys(t),i=0;i<n.length;i++){var a=n[i];r.push(e.call(null,t[a],a))}return r}exports.mapValues=mapValues;function map(t,e){for(var r=[],n=0;n<t.length;n++)r.push(e.call(null,t[n],n));return r}exports.map=map;function flatten(t){for(var e=[],r=0;r<t.length;r++){var n=t[r];Array.isArray(n)?e=e.concat(flatten(n)):e.push(n)}return e}exports.flatten=flatten;function first(t){return isEmpty(t)?void 0:t[0]}exports.first=first;function last(t){var e=t&&t.length;return e?t[e-1]:void 0}exports.last=last;function forEach(t,e){if(Array.isArray(t))for(var r=0;r<t.length;r++)e.call(null,t[r],r);else if(isObject(t))for(var n=keys(t),r=0;r<n.length;r++){var i=n[r],a=t[i];e.call(null,a,i)}else throw Error(\"non exhaustive match\")}exports.forEach=forEach;function isString(t){return typeof t==\"string\"}exports.isString=isString;function isUndefined(t){return t===void 0}exports.isUndefined=isUndefined;function isFunction(t){return t instanceof Function}exports.isFunction=isFunction;function drop(t,e){return e===void 0&&(e=1),t.slice(e,t.length)}exports.drop=drop;function dropRight(t,e){return e===void 0&&(e=1),t.slice(0,t.length-e)}exports.dropRight=dropRight;function filter(t,e){var r=[];if(Array.isArray(t))for(var n=0;n<t.length;n++){var i=t[n];e.call(null,i)&&r.push(i)}return r}exports.filter=filter;function reject(t,e){return filter(t,function(r){return!e(r)})}exports.reject=reject;function pick(t,e){for(var r=Object.keys(t),n={},i=0;i<r.length;i++){var a=r[i],o=t[a];e(o)&&(n[a]=o)}return n}exports.pick=pick;function has(t,e){return isObject(t)?t.hasOwnProperty(e):!1}exports.has=has;function contains(t,e){return find(t,function(r){return r===e})!==void 0}exports.contains=contains;function cloneArr(t){for(var e=[],r=0;r<t.length;r++)e.push(t[r]);return e}exports.cloneArr=cloneArr;function cloneObj(t){var e={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}exports.cloneObj=cloneObj;function find(t,e){for(var r=0;r<t.length;r++){var n=t[r];if(e.call(null,n))return n}}exports.find=find;function findAll(t,e){for(var r=[],n=0;n<t.length;n++){var i=t[n];e.call(null,i)&&r.push(i)}return r}exports.findAll=findAll;function reduce(t,e,r){for(var n=Array.isArray(t),i=n?t:values(t),a=n?[]:keys(t),o=r,s=0;s<i.length;s++)o=e.call(null,o,i[s],n?s:a[s]);return o}exports.reduce=reduce;function compact(t){return reject(t,function(e){return e==null})}exports.compact=compact;function uniq(t,e){e===void 0&&(e=function(n){return n});var r=[];return reduce(t,function(n,i){var a=e(i);return contains(r,a)?n:(r.push(a),n.concat(i))},[])}exports.uniq=uniq;function partial(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var n=[null],i=n.concat(e);return Function.bind.apply(t,i)}exports.partial=partial;function isArray(t){return Array.isArray(t)}exports.isArray=isArray;function isRegExp(t){return t instanceof RegExp}exports.isRegExp=isRegExp;function isObject(t){return t instanceof Object}exports.isObject=isObject;function every(t,e){for(var r=0;r<t.length;r++)if(!e(t[r],r))return!1;return!0}exports.every=every;function difference(t,e){return reject(t,function(r){return contains(e,r)})}exports.difference=difference;function some(t,e){for(var r=0;r<t.length;r++)if(e(t[r]))return!0;return!1}exports.some=some;function indexOf(t,e){for(var r=0;r<t.length;r++)if(t[r]===e)return r;return-1}exports.indexOf=indexOf;function sortBy(t,e){var r=cloneArr(t);return r.sort(function(n,i){return e(n)-e(i)}),r}exports.sortBy=sortBy;function zipObject(t,e){if(t.length!==e.length)throw Error(\"can't zipObject with different number of keys and values!\");for(var r={},n=0;n<t.length;n++)r[t[n]]=e[n];return r}exports.zipObject=zipObject;function assign(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];for(var n=0;n<e.length;n++)for(var i=e[n],a=keys(i),o=0;o<a.length;o++){var s=a[o];t[s]=i[s]}return t}exports.assign=assign;function assignNoOverwrite(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];for(var n=0;n<e.length;n++)for(var i=e[n],a=keys(i),o=0;o<a.length;o++){var s=a[o];has(t,s)||(t[s]=i[s])}return t}exports.assignNoOverwrite=assignNoOverwrite;function defaults(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return assignNoOverwrite.apply(void 0,__spreadArray([{}],t))}exports.defaults=defaults;function groupBy(t,e){var r={};return forEach(t,function(n){var i=e(n),a=r[i];a?a.push(n):r[i]=[n]}),r}exports.groupBy=groupBy;function merge(t,e){for(var r=cloneObj(t),n=keys(e),i=0;i<n.length;i++){var a=n[i],o=e[a];r[a]=o}return r}exports.merge=merge;function NOOP(){}exports.NOOP=NOOP;function IDENTITY(t){return t}exports.IDENTITY=IDENTITY;function packArray(t){for(var e=[],r=0;r<t.length;r++){var n=t[r];e.push(n!==void 0?n:void 0)}return e}exports.packArray=packArray;function PRINT_ERROR(t){console&&console.error&&console.error(\"Error: \"+t)}exports.PRINT_ERROR=PRINT_ERROR;function PRINT_WARNING(t){console&&console.warn&&console.warn(\"Warning: \"+t)}exports.PRINT_WARNING=PRINT_WARNING;function isES2015MapSupported(){return typeof Map==\"function\"}exports.isES2015MapSupported=isES2015MapSupported;function peek(t){return t[t.length-1]}exports.peek=peek;function timer(t){var e=new Date().getTime(),r=t(),n=new Date().getTime(),i=n-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=R((sn,St)=>{(function(t,e){typeof define==\"function\"&&define.amd?define([],e):typeof St==\"object\"&&St.exports?St.exports=e():t.regexpToAst=e()})(typeof self!=\"undefined\"?self:sn,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(u){this.idx=u.idx,this.input=u.input,this.groupIdx=u.groupIdx},t.prototype.pattern=function(u){this.idx=0,this.input=u,this.groupIdx=0,this.consumeChar(\"/\");var d=this.disjunction();this.consumeChar(\"/\");for(var A={type:\"Flags\",loc:{begin:this.idx,end:u.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case\"g\":o(A,\"global\");break;case\"i\":o(A,\"ignoreCase\");break;case\"m\":o(A,\"multiLine\");break;case\"u\":o(A,\"unicode\");break;case\"y\":o(A,\"sticky\");break}if(this.idx!==this.input.length)throw Error(\"Redundant input: \"+this.input.substring(this.idx));return{type:\"Pattern\",flags:A,value:d,loc:this.loc(0)}},t.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)}},t.prototype.alternative=function(){for(var u=[],d=this.idx;this.isTerm();)u.push(this.term());return{type:\"Alternative\",value:u,loc:this.loc(d)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.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 A=this.disjunction();return this.consumeChar(\")\"),{type:d,value:A,loc:this.loc(u)}}c()},t.prototype.quantifier=function(u){var d,A=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 g;this.isDigit()?(g=this.integerIncludingZero(),d={atLeast:_,atMost:g}):d={atLeast:_,atMost:Infinity},this.consumeChar(\"}\");break}if(u===!0&&d===void 0)return;s(d);break}if(!(u===!0&&d===void 0))return s(d),this.peekChar(0)===\"?\"?(this.consumeChar(\"?\"),d.greedy=!1):d.greedy=!0,d.type=\"Quantifier\",d.loc=this.loc(A),d},t.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},t.prototype.dotAll=function(){return this.consumeChar(\".\"),{type:\"Set\",complement:!0,value:[i(`\n`),i(\"\\r\"),i(\"\\u2028\"),i(\"\\u2029\")]}},t.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()}},t.prototype.decimalEscapeAtom=function(){var u=this.positiveInteger();return{type:\"GroupBackReference\",value:u}},t.prototype.characterClassEscape=function(){var u,d=!1;switch(this.popChar()){case\"d\":u=p;break;case\"D\":u=p,d=!0;break;case\"s\":u=m;break;case\"S\":u=m,d=!0;break;case\"w\":u=l;break;case\"W\":u=l,d=!0;break}return s(u),{type:\"Set\",value:u,complement:d}},t.prototype.controlEscapeAtom=function(){var u;switch(this.popChar()){case\"f\":u=i(\"\\f\");break;case\"n\":u=i(`\n`);break;case\"r\":u=i(\"\\r\");break;case\"t\":u=i(\"\t\");break;case\"v\":u=i(\"\\v\");break}return s(u),{type:\"Character\",value:u}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar(\"c\");var u=this.popChar();if(/[a-zA-Z]/.test(u)===!1)throw Error(\"Invalid \");var d=u.toUpperCase().charCodeAt(0)-64;return{type:\"Character\",value:d}},t.prototype.nulCharacterAtom=function(){return this.consumeChar(\"0\"),{type:\"Character\",value:i(\"\\0\")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar(\"x\"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar(\"u\"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var u=this.popChar();return{type:\"Character\",value:i(u)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case`\n`:case\"\\r\":case\"\\u2028\":case\"\\u2029\":case\"\\\\\":case\"]\":throw Error(\"TBD\");default:var u=this.popChar();return{type:\"Character\",value:i(u)}}},t.prototype.characterClass=function(){var u=[],d=!1;for(this.consumeChar(\"[\"),this.peekChar(0)===\"^\"&&(this.consumeChar(\"^\"),d=!0);this.isClassAtom();){var A=this.classAtom(),_=A.type===\"Character\";if(_&&this.isRangeDash()){this.consumeChar(\"-\");var g=this.classAtom(),y=g.type===\"Character\";if(y){if(g.value<A.value)throw Error(\"Range out of order in character class\");u.push({from:A.value,to:g.value})}else a(A.value,u),u.push(i(\"-\")),a(g.value,u)}else a(A.value,u)}return this.consumeChar(\"]\"),{type:\"Set\",complement:d,value:u}},t.prototype.classAtom=function(){switch(this.peekChar()){case\"]\":case`\n`:case\"\\r\":case\"\\u2028\":case\"\\u2029\":throw Error(\"TBD\");case\"\\\\\":return this.classEscape();default:return this.classPatternCharacterAtom()}},t.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()}},t.prototype.group=function(){var u=!0;switch(this.consumeChar(\"(\"),this.peekChar(0)){case\"?\":this.consumeChar(\"?\"),this.consumeChar(\":\"),u=!1;break;default:this.groupIdx++;break}var d=this.disjunction();this.consumeChar(\")\");var A={type:\"Group\",capturing:u,value:d};return u&&(A.idx=this.groupIdx),A},t.prototype.positiveInteger=function(){var u=this.popChar();if(n.test(u)===!1)throw Error(\"Expecting a positive integer\");for(;r.test(this.peekChar(0));)u+=this.popChar();return parseInt(u,10)},t.prototype.integerIncludingZero=function(){var u=this.popChar();if(r.test(u)===!1)throw Error(\"Expecting an integer\");for(;r.test(this.peekChar(0));)u+=this.popChar();return parseInt(u,10)},t.prototype.patternCharacter=function(){var u=this.popChar();switch(u){case`\n`: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)}}},t.prototype.isRegExpFlag=function(){switch(this.peekChar(0)){case\"g\":case\"i\":case\"m\":case\"u\":case\"y\":return!0;default:return!1}},t.prototype.isRangeDash=function(){return this.peekChar()===\"-\"&&this.isClassAtom(1)},t.prototype.isDigit=function(){return r.test(this.peekChar(0))},t.prototype.isClassAtom=function(u){switch(u===void 0&&(u=0),this.peekChar(u)){case\"]\":case`\n`:case\"\\r\":case\"\\u2028\":case\"\\u2029\":return!1;default:return!0}},t.prototype.isTerm=function(){return this.isAtom()||this.isAssertion()},t.prototype.isAtom=function(){if(this.isPatternCharacter())return!0;switch(this.peekChar(0)){case\".\":case\"\\\\\":case\"[\":case\"(\":return!0;default:return!1}},t.prototype.isAssertion=function(){switch(this.peekChar(0)){case\"^\":case\"$\":return!0;case\"\\\\\":switch(this.peekChar(1)){case\"b\":case\"B\":return!0;default:return!1}case\"(\":return this.peekChar(1)===\"?\"&&(this.peekChar(2)===\"=\"||this.peekChar(2)===\"!\");default:return!1}},t.prototype.isQuantifier=function(){var u=this.saveState();try{return this.quantifier(!0)!==void 0}catch(d){return!1}finally{this.restoreState(u)}},t.prototype.isPatternCharacter=function(){switch(this.peekChar()){case\"^\":case\"$\":case\"\\\\\":case\".\":case\"*\":case\"+\":case\"?\":case\"(\":case\")\":case\"[\":case\"|\":case\"/\":case`\n`:case\"\\r\":case\"\\u2028\":case\"\\u2029\":return!1;default:return!0}},t.prototype.parseHexDigits=function(u){for(var d=\"\",A=0;A<u;A++){var _=this.popChar();if(e.test(_)===!1)throw Error(\"Expecting a HexDecimal digits\");d+=_}var g=parseInt(d,16);return{type:\"Character\",value:g}},t.prototype.peekChar=function(u){return u===void 0&&(u=0),this.input[this.idx+u]},t.prototype.popChar=function(){var u=this.peekChar(0);return this.consumeChar(),u},t.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++},t.prototype.loc=function(u){return{begin:u,end:this.idx}};var e=/[0-9a-fA-F]/,r=/[0-9]/,n=/[1-9]/;function i(u){return u.charCodeAt(0)}function a(u,d){u.length!==void 0?u.forEach(function(A){d.push(A)}):d.push(u)}function o(u,d){if(u[d]===!0)throw\"duplicate flag \"+d;u[d]=!0}function s(u){if(u===void 0)throw Error(\"Internal Error - Should never get here!\")}function c(){throw Error(\"Internal Error - Should never get here!\")}var f,p=[];for(f=i(\"0\");f<=i(\"9\");f++)p.push(f);var l=[i(\"_\")].concat(p);for(f=i(\"a\");f<=i(\"z\");f++)l.push(f);for(f=i(\"A\");f<=i(\"Z\");f++)l.push(f);var m=[i(\" \"),i(\"\\f\"),i(`\n`),i(\"\\r\"),i(\"\t\"),i(\"\\v\"),i(\"\t\"),i(\"\\xA0\"),i(\"\\u1680\"),i(\"\\u2000\"),i(\"\\u2001\"),i(\"\\u2002\"),i(\"\\u2003\"),i(\"\\u2004\"),i(\"\\u2005\"),i(\"\\u2006\"),i(\"\\u2007\"),i(\"\\u2008\"),i(\"\\u2009\"),i(\"\\u200A\"),i(\"\\u2028\"),i(\"\\u2029\"),i(\"\\u202F\"),i(\"\\u205F\"),i(\"\\u3000\"),i(\"\\uFEFF\")];function v(){}return v.prototype.visitChildren=function(u){for(var d in u){var A=u[d];u.hasOwnProperty(d)&&(A.type!==void 0?this.visit(A):Array.isArray(A)&&A.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:t,BaseRegExpVisitor:v,VERSION:\"0.5.0\"}})});var Lt=R(He=>{\"use strict\";Object.defineProperty(He,\"__esModule\",{value:!0});He.clearRegExpParserCache=He.getRegExpAst=void 0;var Ga=xt(),Ct={},Wa=new Ga.RegExpParser;function Ba(t){var e=t.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=R(re=>{\"use strict\";var ja=re&&re.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(re,\"__esModule\",{value:!0});re.canMatchCharCode=re.firstCharOptimizedIndices=re.getOptimizedStartCodesIndices=re.failedOptimizationPrefixMsg=void 0;var un=xt(),pe=k(),cn=Lt(),Ce=Tr(),ln=\"Complement Sets are not supported for first char optimization\";re.failedOptimizationPrefixMsg=`Unable to use \"first char\" lexer optimizations:\n`;function Va(t,e){e===void 0&&(e=!1);try{var r=cn.getRegExpAst(t),n=Mt(r.value,{},r.flags.ignoreCase);return n}catch(a){if(a.message===ln)e&&pe.PRINT_WARNING(\"\"+re.failedOptimizationPrefixMsg+(\"\tUnable to optimize: < \"+t.toString()+` >\n`)+`\tComplement Sets cannot be automatically optimized.\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var i=\"\";e&&(i=`\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),pe.PRINT_ERROR(re.failedOptimizationPrefixMsg+`\n`+(\"\tFailed parsing: < \"+t.toString()+` >\n`)+(\"\tUsing the regexp-to-ast library version: \"+un.VERSION+`\n`)+\"\tPlease open an issue at: https://github.com/bd82/regexp-to-ast/issues\"+i)}}return[]}re.getOptimizedStartCodesIndices=Va;function Mt(t,e,r){switch(t.type){case\"Disjunction\":for(var n=0;n<t.value.length;n++)Mt(t.value[n],e,r);break;case\"Alternative\":for(var i=t.value,n=0;n<i.length;n++){var a=i[n];switch(a.type){case\"EndAnchor\":case\"GroupBackReference\":case\"Lookahead\":case\"NegativeLookahead\":case\"StartAnchor\":case\"WordBoundary\":case\"NonWordBoundary\":continue}var o=a;switch(o.type){case\"Character\":bt(o.value,e,r);break;case\"Set\":if(o.complement===!0)throw Error(ln);pe.forEach(o.value,function(f){if(typeof f==\"number\")bt(f,e,r);else{var p=f;if(r===!0)for(var l=p.from;l<=p.to;l++)bt(l,e,r);else{for(var l=p.from;l<=p.to&&l<Ce.minOptimizationVal;l++)bt(l,e,r);if(p.to>=Ce.minOptimizationVal)for(var m=p.from>=Ce.minOptimizationVal?p.from:Ce.minOptimizationVal,v=p.to,u=Ce.charCodeToOptimizedIndex(m),d=Ce.charCodeToOptimizedIndex(v),A=u;A<=d;A++)e[A]=A}}});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)===!1||o.type!==\"Group\"&&s===!1)break}break;default:throw Error(\"non exhaustive match!\")}return pe.values(e)}re.firstCharOptimizedIndices=Mt;function bt(t,e,r){var n=Ce.charCodeToOptimizedIndex(t);e[n]=n,r===!0&&Ka(t,e)}function Ka(t,e){var r=String.fromCharCode(t),n=r.toUpperCase();if(n!==r){var i=Ce.charCodeToOptimizedIndex(n.charCodeAt(0));e[i]=i}else{var a=r.toLowerCase();if(a!==r){var i=Ce.charCodeToOptimizedIndex(a.charCodeAt(0));e[i]=i}}}function fn(t,e){return pe.find(t.value,function(r){if(typeof r==\"number\")return pe.contains(e,r);var n=r;return pe.find(e,function(i){return n.from<=i&&i<=n.to})!==void 0})}function yr(t){return t.quantifier&&t.quantifier.atLeast===0?!0:t.value?pe.isArray(t.value)?pe.every(t.value,yr):yr(t.value):!1}var za=function(t){ja(e,t);function e(r){var n=t.call(this)||this;return n.targetCharCodes=r,n.found=!1,n}return e.prototype.visitChildren=function(r){if(this.found!==!0){switch(r.type){case\"Lookahead\":this.visitLookahead(r);return;case\"NegativeLookahead\":this.visitNegativeLookahead(r);return}t.prototype.visitChildren.call(this,r)}},e.prototype.visitCharacter=function(r){pe.contains(this.targetCharCodes,r.value)&&(this.found=!0)},e.prototype.visitSet=function(r){r.complement?fn(r,this.targetCharCodes)===void 0&&(this.found=!0):fn(r,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(un.BaseRegExpVisitor);function Ha(t,e){if(e instanceof RegExp){var r=cn.getRegExpAst(e),n=new za(t);return n.visit(r),n.found}else return pe.find(e,function(i){return pe.contains(t,i.charCodeAt(0))})!==void 0}re.canMatchCharCode=Ha});var Tr=R(T=>{\"use strict\";var hn=T&&T.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(T,\"__esModule\",{value:!0});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(),F=ft(),h=k(),Ye=pn(),vn=Lt(),Ae=\"PATTERN\";T.DEFAULT_MODE=\"defaultMode\";T.MODES=\"modes\";T.SUPPORT_STICKY=typeof new RegExp(\"(?:)\").sticky==\"boolean\";function Ya(){T.SUPPORT_STICKY=!1}T.disableSticky=Ya;function Xa(){T.SUPPORT_STICKY=!0}T.enableSticky=Xa;function Za(t,e){e=h.defaults(e,{useSticky:T.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:\"full\",lineTerminatorCharacters:[\"\\r\",`\n`],tracer:function(g,y){return y()}});var r=e.tracer;r(\"initCharCodeToOptimizedIndexMap\",function(){$a()});var n;r(\"Reject Lexer.NA\",function(){n=h.reject(t,function(g){return g[Ae]===F.Lexer.NA})});var i=!1,a;r(\"Transform Patterns\",function(){i=!1,a=h.map(n,function(g){var y=g[Ae];if(h.isRegExp(y)){var b=y.source;return b.length===1&&b!==\"^\"&&b!==\"$\"&&b!==\".\"&&!y.ignoreCase?b:b.length===2&&b[0]===\"\\\\\"&&!h.contains([\"d\",\"D\",\"s\",\"S\",\"t\",\"r\",\"n\",\"t\",\"0\",\"c\",\"b\",\"B\",\"f\",\"v\",\"w\",\"W\"],b[1])?b[1]:e.useSticky?gr(y):_r(y)}else{if(h.isFunction(y))return i=!0,{exec:y};if(h.has(y,\"exec\"))return i=!0,y;if(typeof y==\"string\"){if(y.length===1)return y;var L=y.replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\"),se=new RegExp(L);return e.useSticky?gr(se):_r(se)}else throw Error(\"non exhaustive match\")}})});var o,s,c,f,p;r(\"misc mapping\",function(){o=h.map(n,function(g){return g.tokenTypeIdx}),s=h.map(n,function(g){var y=g.GROUP;if(y!==F.Lexer.SKIPPED){if(h.isString(y))return y;if(h.isUndefined(y))return!1;throw Error(\"non exhaustive match\")}}),c=h.map(n,function(g){var y=g.LONGER_ALT;if(y){var b=h.indexOf(n,y);return b}}),f=h.map(n,function(g){return g.PUSH_MODE}),p=h.map(n,function(g){return h.has(g,\"POP_MODE\")})});var l;r(\"Line Terminator Handling\",function(){var g=Tn(e.lineTerminatorCharacters);l=h.map(n,function(y){return!1}),e.positionTracking!==\"onlyOffset\"&&(l=h.map(n,function(y){if(h.has(y,\"LINE_BREAKS\"))return y.LINE_BREAKS;if(En(y,g)===!1)return Ye.canMatchCharCode(g,y.PATTERN)}))});var m,v,u,d;r(\"Misc Mapping #2\",function(){m=h.map(n,Ar),v=h.map(a,mn),u=h.reduce(n,function(g,y){var b=y.GROUP;return h.isString(b)&&b!==F.Lexer.SKIPPED&&(g[b]=[]),g},{}),d=h.map(a,function(g,y){return{pattern:a[y],longerAlt:c[y],canLineTerminator:l[y],isCustom:m[y],short:v[y],group:s[y],push:f[y],pop:p[y],tokenTypeIdx:o[y],tokenType:n[y]}})});var A=!0,_=[];return e.safeMode||r(\"First Char Optimization\",function(){_=h.reduce(n,function(g,y,b){if(typeof y.PATTERN==\"string\"){var L=y.PATTERN.charCodeAt(0),se=Or(L);Rr(g,se,d[b])}else if(h.isArray(y.START_CHARS_HINT)){var fe;h.forEach(y.START_CHARS_HINT,function(ue){var Q=typeof ue==\"string\"?ue.charCodeAt(0):ue,te=Or(Q);fe!==te&&(fe=te,Rr(g,te,d[b]))})}else if(h.isRegExp(y.PATTERN))if(y.PATTERN.unicode)A=!1,e.ensureOptimizations&&h.PRINT_ERROR(\"\"+Ye.failedOptimizationPrefixMsg+(\"\tUnable to analyze < \"+y.PATTERN.toString()+` > pattern.\n`)+`\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var Z=Ye.getOptimizedStartCodesIndices(y.PATTERN,e.ensureOptimizations);h.isEmpty(Z)&&(A=!1),h.forEach(Z,function(ue){Rr(g,ue,d[b])})}else e.ensureOptimizations&&h.PRINT_ERROR(\"\"+Ye.failedOptimizationPrefixMsg+(\"\tTokenType: <\"+y.name+`> is using a custom token pattern without providing <start_chars_hint> parameter.\n`)+`\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),A=!1;return g},[])}),r(\"ArrayPacking\",function(){_=h.packArray(_)}),{emptyGroups:u,patternIdxToConfig:d,charCodeToPatternIdxToConfig:_,hasCustom:i,canBeOptimized:A}}T.analyzeTokenTypes=Za;function Ja(t,e){var r=[],n=yn(t);r=r.concat(n.errors);var i=_n(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(Qa(a)),r=r.concat(gn(a)),r=r.concat(An(a,e)),r=r.concat(Rn(a)),r}T.validatePatterns=Ja;function Qa(t){var e=[],r=h.filter(t,function(n){return h.isRegExp(n[Ae])});return e=e.concat(On(r)),e=e.concat(In(r)),e=e.concat(kn(r)),e=e.concat(Pn(r)),e=e.concat(Nn(r)),e}function yn(t){var e=h.filter(t,function(i){return!h.has(i,Ae)}),r=h.map(e,function(i){return{message:\"Token Type: ->\"+i.name+\"<- missing static 'PATTERN' property\",type:F.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[i]}}),n=h.difference(t,e);return{errors:r,valid:n}}T.findMissingPatterns=yn;function _n(t){var e=h.filter(t,function(i){var a=i[Ae];return!h.isRegExp(a)&&!h.isFunction(a)&&!h.has(a,\"exec\")&&!h.isString(a)}),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:F.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[i]}}),n=h.difference(t,e);return{errors:r,valid:n}}T.findInvalidPatterns=_n;var eo=/[^\\\\][\\$]/;function On(t){var e=function(i){hn(a,i);function a(){var o=i!==null&&i.apply(this,arguments)||this;return o.found=!1,o}return a.prototype.visitEndAnchor=function(o){this.found=!0},a}(dn.BaseRegExpVisitor),r=h.filter(t,function(i){var a=i[Ae];try{var o=vn.getRegExpAst(a),s=new e;return s.visit(o),s.found}catch(c){return eo.test(a.source)}}),n=h.map(r,function(i){return{message:`Unexpected RegExp Anchor Error:\n\tToken Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$'\n\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.`,type:F.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[i]}});return n}T.findEndOfInputAnchor=On;function Nn(t){var e=h.filter(t,function(n){var i=n[Ae];return i.test(\"\")}),r=h.map(e,function(n){return{message:\"Token Type: ->\"+n.name+\"<- static 'PATTERN' must not match an empty string\",type:F.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[n]}});return r}T.findEmptyMatchRegExps=Nn;var to=/[^\\\\[][\\^]|^\\^/;function In(t){var e=function(i){hn(a,i);function a(){var o=i!==null&&i.apply(this,arguments)||this;return o.found=!1,o}return a.prototype.visitStartAnchor=function(o){this.found=!0},a}(dn.BaseRegExpVisitor),r=h.filter(t,function(i){var a=i[Ae];try{var o=vn.getRegExpAst(a),s=new e;return s.visit(o),s.found}catch(c){return to.test(a.source)}}),n=h.map(r,function(i){return{message:`Unexpected RegExp Anchor Error:\n\tToken Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^'\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.`,type:F.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[i]}});return n}T.findStartOfInputAnchor=In;function kn(t){var e=h.filter(t,function(n){var i=n[Ae];return i instanceof RegExp&&(i.multiline||i.global)}),r=h.map(e,function(n){return{message:\"Token Type: ->\"+n.name+\"<- static 'PATTERN' may NOT contain global('g') or multiline('m')\",type:F.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}});return r}T.findUnsupportedFlags=kn;function Pn(t){var e=[],r=h.map(t,function(a){return h.reduce(t,function(o,s){return a.PATTERN.source===s.PATTERN.source&&!h.contains(e,s)&&s.PATTERN!==F.Lexer.NA&&(e.push(s),o.push(s)),o},[])});r=h.compact(r);var n=h.filter(r,function(a){return a.length>1}),i=h.map(n,function(a){var o=h.map(a,function(c){return c.name}),s=h.first(a).PATTERN;return{message:\"The same RegExp pattern ->\"+s+\"<-\"+(\"has been used in all of the following Token Types: \"+o.join(\", \")+\" <-\"),type:F.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}});return i}T.findDuplicatePatterns=Pn;function gn(t){var e=h.filter(t,function(n){if(!h.has(n,\"GROUP\"))return!1;var i=n.GROUP;return i!==F.Lexer.SKIPPED&&i!==F.Lexer.NA&&!h.isString(i)}),r=h.map(e,function(n){return{message:\"Token Type: ->\"+n.name+\"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String\",type:F.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}});return r}T.findInvalidGroupType=gn;function An(t,e){var r=h.filter(t,function(i){return i.PUSH_MODE!==void 0&&!h.contains(e,i.PUSH_MODE)}),n=h.map(r,function(i){var a=\"Token Type: ->\"+i.name+\"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->\"+i.PUSH_MODE+\"<-which does not exist\";return{message:a,type:F.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}});return n}T.findModesThatDoNotExist=An;function Rn(t){var e=[],r=h.reduce(t,function(n,i,a){var o=i.PATTERN;return o===F.Lexer.NA||(h.isString(o)?n.push({str:o,idx:a,tokenType:i}):h.isRegExp(o)&&no(o)&&n.push({str:o.source,idx:a,tokenType:i})),n},[]);return h.forEach(t,function(n,i){h.forEach(r,function(a){var o=a.str,s=a.idx,c=a.tokenType;if(i<s&&ro(o,n.PATTERN)){var f=\"Token: ->\"+c.name+`<- can never be matched.\n`+(\"Because it appears AFTER the Token Type ->\"+n.name+\"<-\")+`in the lexer's definition.\nSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:f,type:F.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[n,c]})}})}),e}T.findUnreachablePatterns=Rn;function ro(t,e){if(h.isRegExp(e)){var r=e.exec(t);return r!==null&&r.index===0}else{if(h.isFunction(e))return e(t,0,[],{});if(h.has(e,\"exec\"))return e.exec(t,0,[],{});if(typeof e==\"string\")return e===t;throw Error(\"non exhaustive match\")}}function no(t){var e=[\".\",\"\\\\\",\"[\",\"]\",\"|\",\"^\",\"$\",\"(\",\")\",\"?\",\"*\",\"+\",\"{\"];return h.find(e,function(r){return t.source.indexOf(r)!==-1})===void 0}function _r(t){var e=t.ignoreCase?\"i\":\"\";return new RegExp(\"^(?:\"+t.source+\")\",e)}T.addStartOfInput=_r;function gr(t){var e=t.ignoreCase?\"iy\":\"y\";return new RegExp(\"\"+t.source,e)}T.addStickyFlag=gr;function io(t,e,r){var n=[];return h.has(t,T.DEFAULT_MODE)||n.push({message:\"A MultiMode Lexer cannot be initialized without a <\"+T.DEFAULT_MODE+`> property in its definition\n`,type:F.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),h.has(t,T.MODES)||n.push({message:\"A MultiMode Lexer cannot be initialized without a <\"+T.MODES+`> property in its definition\n`,type:F.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),h.has(t,T.MODES)&&h.has(t,T.DEFAULT_MODE)&&!h.has(t.modes,t.defaultMode)&&n.push({message:\"A MultiMode Lexer cannot be initialized with a \"+T.DEFAULT_MODE+\": <\"+t.defaultMode+`>which does not exist\n`,type:F.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),h.has(t,T.MODES)&&h.forEach(t.modes,function(i,a){h.forEach(i,function(o,s){h.isUndefined(o)&&n.push({message:\"A Lexer cannot be initialized using an undefined Token Type. Mode:\"+(\"<\"+a+\"> at index: <\"+s+`>\n`),type:F.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),n}T.performRuntimeChecks=io;function ao(t,e,r){var n=[],i=!1,a=h.compact(h.flatten(h.mapValues(t.modes,function(c){return c}))),o=h.reject(a,function(c){return c[Ae]===F.Lexer.NA}),s=Tn(r);return e&&h.forEach(o,function(c){var f=En(c,s);if(f!==!1){var p=Sn(c,f),l={message:p,type:f.issue,tokenType:c};n.push(l)}else h.has(c,\"LINE_BREAKS\")?c.LINE_BREAKS===!0&&(i=!0):Ye.canMatchCharCode(s,c.PATTERN)&&(i=!0)}),e&&!i&&n.push({message:`Warning: No LINE_BREAKS Found.\n\tThis Lexer has been defined to track line and column information,\n\tBut none of the Token Types can be identified as matching a line terminator.\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS\n\tfor details.`,type:F.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),n}T.performWarningRuntimeChecks=ao;function oo(t){var e={},r=h.keys(t);return h.forEach(r,function(n){var i=t[n];if(h.isArray(i))e[n]=[];else throw Error(\"non exhaustive match\")}),e}T.cloneEmptyGroups=oo;function Ar(t){var e=t.PATTERN;if(h.isRegExp(e))return!1;if(h.isFunction(e))return!0;if(h.has(e,\"exec\"))return!0;if(h.isString(e))return!1;throw Error(\"non exhaustive match\")}T.isCustomPattern=Ar;function mn(t){return h.isString(t)&&t.length===1?t.charCodeAt(0):!1}T.isShortPattern=mn;T.LineTerminatorOptimizedTester={test:function(t){for(var e=t.length,r=this.lastIndex;r<e;r++){var n=t.charCodeAt(r);if(n===10)return this.lastIndex=r+1,!0;if(n===13)return t.charCodeAt(r+1)===10?this.lastIndex=r+2:this.lastIndex=r+1,!0}return!1},lastIndex:0};function En(t,e){if(h.has(t,\"LINE_BREAKS\"))return!1;if(h.isRegExp(t.PATTERN)){try{Ye.canMatchCharCode(e,t.PATTERN)}catch(r){return{issue:F.LexerDefinitionErrorType.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(h.isString(t.PATTERN))return!1;if(Ar(t))return{issue:F.LexerDefinitionErrorType.CUSTOM_LINE_BREAK};throw Error(\"non exhaustive match\")}}function Sn(t,e){if(e.issue===F.LexerDefinitionErrorType.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern.\n`+(\"\tThe problem is in the <\"+t.name+`> Token Type\n`)+(\"\t Root cause: \"+e.errMsg+`.\n`)+\"\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR\";if(e.issue===F.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the <line_breaks> option.\n`+(\"\tThe problem is in the <\"+t.name+`> Token Type\n`)+\"\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK\";throw Error(\"non exhaustive match\")}T.buildLineBreakIssueMessage=Sn;function Tn(t){var e=h.map(t,function(r){return h.isString(r)&&r.length>0?r.charCodeAt(0):r});return e}function Rr(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}T.minOptimizationVal=256;var Ft=[];function Or(t){return t<T.minOptimizationVal?t:Ft[t]}T.charCodeToOptimizedIndex=Or;function $a(){if(h.isEmpty(Ft)){Ft=new Array(65536);for(var t=0;t<65536;t++)Ft[t]=t>255?255+~~(t/255):t}}});var Xe=R(N=>{\"use strict\";Object.defineProperty(N,\"__esModule\",{value:!0});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(t,e){var r=t.tokenTypeIdx;return r===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[r]===!0}N.tokenStructuredMatcher=so;function uo(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}N.tokenStructuredMatcherNoCategories=uo;N.tokenShortNameIdx=1;N.tokenIdxToClass={};function co(t){var e=xn(t);Cn(e),Mn(e),Ln(e),V.forEach(e,function(r){r.isParent=r.categoryMatches.length>0})}N.augmentTokenTypes=co;function xn(t){for(var e=V.cloneArr(t),r=t,n=!0;n;){r=V.compact(V.flatten(V.map(r,function(a){return a.CATEGORIES})));var i=V.difference(r,e);e=e.concat(i),V.isEmpty(i)?n=!1:r=i}return e}N.expandCategories=xn;function Cn(t){V.forEach(t,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(t){V.forEach(t,function(e){e.categoryMatches=[],V.forEach(e.categoryMatchesMap,function(r,n){e.categoryMatches.push(N.tokenIdxToClass[n].tokenTypeIdx)})})}N.assignCategoriesTokensProp=Ln;function Mn(t){V.forEach(t,function(e){Ir([],e)})}N.assignCategoriesMapProp=Mn;function Ir(t,e){V.forEach(t,function(r){e.categoryMatchesMap[r.tokenTypeIdx]=!0}),V.forEach(e.CATEGORIES,function(r){var n=t.concat(e);V.contains(n,r)||Ir(n,r)})}N.singleAssignCategoriesToksMap=Ir;function bn(t){return V.has(t,\"tokenTypeIdx\")}N.hasShortKeyProperty=bn;function Nr(t){return V.has(t,\"CATEGORIES\")}N.hasCategoriesProperty=Nr;function Fn(t){return V.has(t,\"categoryMatches\")}N.hasExtendingTokensTypesProperty=Fn;function wn(t){return V.has(t,\"categoryMatchesMap\")}N.hasExtendingTokensTypesMapProperty=wn;function lo(t){return V.has(t,\"tokenTypeIdx\")}N.isTokenType=lo});var kr=R(wt=>{\"use strict\";Object.defineProperty(wt,\"__esModule\",{value:!0});wt.defaultLexerErrorProvider=void 0;wt.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(t){return\"Unable to pop Lexer Mode after encountering Token ->\"+t.image+\"<- The Mode Stack is empty\"},buildUnexpectedCharactersMessage:function(t,e,r,n,i){return\"unexpected character: ->\"+t.charAt(e)+\"<- at offset: \"+e+\",\"+(\" skipped \"+r+\" characters.\")}}});var ft=R(qe=>{\"use strict\";Object.defineProperty(qe,\"__esModule\",{value:!0});qe.Lexer=qe.LexerDefinitionErrorType=void 0;var Ee=Tr(),w=k(),fo=Xe(),po=kr(),ho=Lt(),vo;(function(t){t[t.MISSING_PATTERN=0]=\"MISSING_PATTERN\",t[t.INVALID_PATTERN=1]=\"INVALID_PATTERN\",t[t.EOI_ANCHOR_FOUND=2]=\"EOI_ANCHOR_FOUND\",t[t.UNSUPPORTED_FLAGS_FOUND=3]=\"UNSUPPORTED_FLAGS_FOUND\",t[t.DUPLICATE_PATTERNS_FOUND=4]=\"DUPLICATE_PATTERNS_FOUND\",t[t.INVALID_GROUP_TYPE_FOUND=5]=\"INVALID_GROUP_TYPE_FOUND\",t[t.PUSH_MODE_DOES_NOT_EXIST=6]=\"PUSH_MODE_DOES_NOT_EXIST\",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]=\"MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]=\"MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]=\"MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]=\"LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\",t[t.SOI_ANCHOR_FOUND=11]=\"SOI_ANCHOR_FOUND\",t[t.EMPTY_MATCH_PATTERN=12]=\"EMPTY_MATCH_PATTERN\",t[t.NO_LINE_BREAKS_FLAGS=13]=\"NO_LINE_BREAKS_FLAGS\",t[t.UNREACHABLE_PATTERN=14]=\"UNREACHABLE_PATTERN\",t[t.IDENTIFY_TERMINATOR=15]=\"IDENTIFY_TERMINATOR\",t[t.CUSTOM_LINE_BREAK=16]=\"CUSTOM_LINE_BREAK\"})(vo=qe.LexerDefinitionErrorType||(qe.LexerDefinitionErrorType={}));var pt={deferDefinitionErrorsHandling:!1,positionTracking:\"full\",lineTerminatorsPattern:/\\n|\\r\\n?/g,lineTerminatorCharacters:[`\n`,\"\\r\"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:po.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(pt);var mo=function(){function t(e,r){var n=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=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof r==\"boolean\")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object.\na boolean 2nd argument is no longer supported`);this.config=w.merge(pt,r);var i=this.config.traceInitPerf;i===!0?(this.traceInitMaxIdent=Infinity,this.traceInitPerf=!0):typeof i==\"number\"&&(this.traceInitMaxIdent=i,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT(\"Lexer Constructor\",function(){var a,o=!0;n.TRACE_INIT(\"Lexer Config handling\",function(){if(n.config.lineTerminatorsPattern===pt.lineTerminatorsPattern)n.config.lineTerminatorsPattern=Ee.LineTerminatorOptimizedTester;else if(n.config.lineTerminatorCharacters===pt.lineTerminatorCharacters)throw Error(`Error: Missing <lineTerminatorCharacters> property on the Lexer config.\n\tFor 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.');n.trackStartLines=/full|onlyStart/i.test(n.config.positionTracking),n.trackEndLines=/full/i.test(n.config.positionTracking),w.isArray(e)?(a={modes:{}},a.modes[Ee.DEFAULT_MODE]=w.cloneArr(e),a[Ee.DEFAULT_MODE]=Ee.DEFAULT_MODE):(o=!1,a=w.cloneObj(e))}),n.config.skipValidations===!1&&(n.TRACE_INIT(\"performRuntimeChecks\",function(){n.lexerDefinitionErrors=n.lexerDefinitionErrors.concat(Ee.performRuntimeChecks(a,n.trackStartLines,n.config.lineTerminatorCharacters))}),n.TRACE_INIT(\"performWarningRuntimeChecks\",function(){n.lexerDefinitionWarning=n.lexerDefinitionWarning.concat(Ee.performWarningRuntimeChecks(a,n.trackStartLines,n.config.lineTerminatorCharacters))})),a.modes=a.modes?a.modes:{},w.forEach(a.modes,function(p,l){a.modes[l]=w.reject(p,function(m){return w.isUndefined(m)})});var s=w.keys(a.modes);if(w.forEach(a.modes,function(p,l){n.TRACE_INIT(\"Mode: <\"+l+\"> processing\",function(){if(n.modes.push(l),n.config.skipValidations===!1&&n.TRACE_INIT(\"validatePatterns\",function(){n.lexerDefinitionErrors=n.lexerDefinitionErrors.concat(Ee.validatePatterns(p,s))}),w.isEmpty(n.lexerDefinitionErrors)){fo.augmentTokenTypes(p);var m;n.TRACE_INIT(\"analyzeTokenTypes\",function(){m=Ee.analyzeTokenTypes(p,{lineTerminatorCharacters:n.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:n.TRACE_INIT.bind(n)})}),n.patternIdxToConfig[l]=m.patternIdxToConfig,n.charCodeToPatternIdxToConfig[l]=m.charCodeToPatternIdxToConfig,n.emptyGroups=w.merge(n.emptyGroups,m.emptyGroups),n.hasCustom=m.hasCustom||n.hasCustom,n.canModeBeOptimized[l]=m.canBeOptimized}})}),n.defaultMode=a.defaultMode,!w.isEmpty(n.lexerDefinitionErrors)&&!n.config.deferDefinitionErrorsHandling){var c=w.map(n.lexerDefinitionErrors,function(p){return p.message}),f=c.join(`-----------------------\n`);throw new Error(`Errors detected in definition of Lexer:\n`+f)}w.forEach(n.lexerDefinitionWarning,function(p){w.PRINT_WARNING(p.message)}),n.TRACE_INIT(\"Choosing sub-methods implementations\",function(){if(Ee.SUPPORT_STICKY?(n.chopInput=w.IDENTITY,n.match=n.matchWithTest):(n.updateLastIndex=w.NOOP,n.match=n.matchWithExec),o&&(n.handleModes=w.NOOP),n.trackStartLines===!1&&(n.computeNewColumn=w.IDENTITY),n.trackEndLines===!1&&(n.updateTokenEndLineColumnLocation=w.NOOP),/full/i.test(n.config.positionTracking))n.createTokenInstance=n.createFullToken;else if(/onlyStart/i.test(n.config.positionTracking))n.createTokenInstance=n.createStartOnlyToken;else if(/onlyOffset/i.test(n.config.positionTracking))n.createTokenInstance=n.createOffsetOnlyToken;else throw Error('Invalid <positionTracking> config option: \"'+n.config.positionTracking+'\"');n.hasCustom?(n.addToken=n.addTokenUsingPush,n.handlePayload=n.handlePayloadWithCustom):(n.addToken=n.addTokenUsingMemberAccess,n.handlePayload=n.handlePayloadNoCustom)}),n.TRACE_INIT(\"Failed Optimization Warnings\",function(){var p=w.reduce(n.canModeBeOptimized,function(l,m,v){return m===!1&&l.push(v),l},[]);if(r.ensureOptimizations&&!w.isEmpty(p))throw Error(\"Lexer Modes: < \"+p.join(\", \")+` > cannot be optimized.\n\t Disable the \"ensureOptimizations\" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\n\t Or inspect the console log for details on how to resolve these issues.`)}),n.TRACE_INIT(\"clearRegExpParserCache\",function(){ho.clearRegExpParserCache()}),n.TRACE_INIT(\"toFastProperties\",function(){w.toFastProperties(n)})})}return t.prototype.tokenize=function(e,r){if(r===void 0&&(r=this.defaultMode),!w.isEmpty(this.lexerDefinitionErrors)){var n=w.map(this.lexerDefinitionErrors,function(o){return o.message}),i=n.join(`-----------------------\n`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer:\n`+i)}var a=this.tokenizeInternal(e,r);return a},t.prototype.tokenizeInternal=function(e,r){var n=this,i,a,o,s,c,f,p,l,m,v,u,d,A,_,g,y=e,b=y.length,L=0,se=0,fe=this.hasCustom?0:Math.floor(e.length/10),Z=new Array(fe),ue=[],Q=this.trackStartLines?1:void 0,te=this.trackStartLines?1:void 0,xe=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=n.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=n.patternIdxToConfig[ze],ot=n.charCodeToPatternIdxToConfig[ze],Ke=we.length;var Ua=n.canModeBeOptimized[ze]&&n.config.safeMode===!1;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===!1;ot&<?st=en:st=Jr}tn.call(this,r);for(var me;L<b;){c=null;var rn=y.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!==!1?rn===ut&&(c=De):me.isCustom===!0?(g=De.exec(y,L,Z,xe),g!==null?(c=g[0],g.payload!==void 0&&(f=g.payload)):c=null):(this.updateLastIndex(De,L),c=this.match(De,e,L)),c!==null){if(s=me.longerAlt,s!==void 0){var fr=we[s],pr=fr.pattern;p=null,fr.isCustom===!0?(g=pr.exec(y,L,Z,xe),g!==null?(o=g[0],g.payload!==void 0&&(p=g.payload)):o=null):(this.updateLastIndex(pr,L),o=this.match(pr,e,L)),o&&o.length>c.length&&(c=o,f=p,me=fr)}break}}if(c!==null){if(l=c.length,m=me.group,m!==void 0&&(v=me.tokenTypeIdx,u=this.createTokenInstance(c,L,v,me.tokenType,Q,te,l),this.handlePayload(u,f),m===!1?se=this.addToken(Z,se,u):xe[m].push(u)),e=this.chopInput(e,l),L=L+l,te=this.computeNewColumn(te,l),it===!0&&me.canLineTerminator===!0){var kt=0,hr=void 0,dr=void 0;at.lastIndex=0;do hr=at.test(c),hr===!0&&(dr=at.lastIndex-1,kt++);while(hr===!0);kt!==0&&(Q=Q+kt,te=l-dr,this.updateTokenEndLineColumnLocation(u,m,dr,kt,Q,te,l))}this.handleModes(me,wa,tn,u)}else{for(var vr=L,an=Q,on=te,ct=!1;!ct&&L<b;)for(A=y.charCodeAt(L),e=this.chopInput(e,1),L++,a=0;a<Ke;a++){var mr=we[a],De=mr.pattern,ut=mr.short;if(ut!==!1?y.charCodeAt(L)===ut&&(ct=!0):mr.isCustom===!0?ct=De.exec(y,L,Z,xe)!==null:(this.updateLastIndex(De,L),ct=De.exec(e)!==null),ct===!0)break}d=L-vr,_=this.config.errorMessageProvider.buildUnexpectedCharactersMessage(y,vr,d,an,on),ue.push({offset:vr,line:an,column:on,length:d,message:_})}}return this.hasCustom||(Z.length=se),{tokens:Z,groups:xe,errors:ue}},t.prototype.handleModes=function(e,r,n,i){if(e.pop===!0){var a=e.push;r(i),a!==void 0&&n.call(this,a)}else e.push!==void 0&&n.call(this,e.push)},t.prototype.chopInput=function(e,r){return e.substring(r)},t.prototype.updateLastIndex=function(e,r){e.lastIndex=r},t.prototype.updateTokenEndLineColumnLocation=function(e,r,n,i,a,o,s){var c,f;r!==void 0&&(c=n===s-1,f=c?-1:0,i===1&&c===!0||(e.endLine=a+f,e.endColumn=o-1+-f))},t.prototype.computeNewColumn=function(e,r){return e+r},t.prototype.createTokenInstance=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return null},t.prototype.createOffsetOnlyToken=function(e,r,n,i){return{image:e,startOffset:r,tokenTypeIdx:n,tokenType:i}},t.prototype.createStartOnlyToken=function(e,r,n,i,a,o){return{image:e,startOffset:r,startLine:a,startColumn:o,tokenTypeIdx:n,tokenType:i}},t.prototype.createFullToken=function(e,r,n,i,a,o,s){return{image:e,startOffset:r,endOffset:r+s-1,startLine:a,endLine:a,startColumn:o,endColumn:o+s-1,tokenTypeIdx:n,tokenType:i}},t.prototype.addToken=function(e,r,n){return 666},t.prototype.addTokenUsingPush=function(e,r,n){return e.push(n),r},t.prototype.addTokenUsingMemberAccess=function(e,r,n){return e[r]=n,r++,r},t.prototype.handlePayload=function(e,r){},t.prototype.handlePayloadNoCustom=function(e,r){},t.prototype.handlePayloadWithCustom=function(e,r){r!==null&&(e.payload=r)},t.prototype.match=function(e,r,n){return null},t.prototype.matchWithTest=function(e,r,n){var i=e.test(r);return i===!0?r.substring(n,e.lastIndex):null},t.prototype.matchWithExec=function(e,r){var n=e.exec(r);return n!==null?n[0]:n},t.prototype.TRACE_INIT=function(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;var n=new Array(this.traceInitIndent+1).join(\"\t\");this.traceInitIndent<this.traceInitMaxIdent&&console.log(n+\"--> <\"+e+\">\");var i=w.timer(r),a=i.time,o=i.value,s=a>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(n+\"<-- <\"+e+\"> time: \"+a+\"ms\"),this.traceInitIndent--,o}else return r()},t.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.\",t.NA=/NOT_APPLICABLE/,t}();qe.Lexer=mo});var Ue=R(H=>{\"use strict\";Object.defineProperty(H,\"__esModule\",{value:!0});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(t){return Dn(t)?t.LABEL:t.name}H.tokenLabel=To;function yo(t){return t.name}H.tokenName=yo;function Dn(t){return Te.isString(t.LABEL)&&t.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(t){return go(t)}H.createToken=zn;function go(t){var e=t.pattern,r={};if(r.name=t.name,Te.isUndefined(e)||(r.PATTERN=e),Te.has(t,_o))throw`The parent property is no longer supported.\nSee: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return Te.has(t,Un)&&(r.CATEGORIES=t[Un]),Pr.augmentTokenTypes([r]),Te.has(t,Gn)&&(r.LABEL=t[Gn]),Te.has(t,Wn)&&(r.GROUP=t[Wn]),Te.has(t,qn)&&(r.POP_MODE=t[qn]),Te.has(t,Bn)&&(r.PUSH_MODE=t[Bn]),Te.has(t,jn)&&(r.LONGER_ALT=t[jn]),Te.has(t,Vn)&&(r.LINE_BREAKS=t[Vn]),Te.has(t,Kn)&&(r.START_CHARS_HINT=t[Kn]),r}H.EOF=zn({name:\"EOF\",pattern:Eo.Lexer.NA});Pr.augmentTokenTypes([H.EOF]);function Ao(t,e,r,n,i,a,o,s){return{image:e,startOffset:r,endOffset:n,startLine:i,endLine:a,startColumn:o,endColumn:s,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}H.createTokenInstance=Ao;function Ro(t,e){return Pr.tokenStructuredMatcher(t,e)}H.tokenMatcher=Ro});var ne=R(S=>{\"use strict\";var Le=S&&S.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(S,\"__esModule\",{value:!0});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 t(e){this._definition=e}return Object.defineProperty(t.prototype,\"definition\",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this),G.forEach(this.definition,function(r){r.accept(e)})},t}();S.AbstractProduction=Re;var Hn=function(t){Le(e,t);function e(r){var n=t.call(this,[])||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return Object.defineProperty(e.prototype,\"definition\",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(r){},enumerable:!1,configurable:!0}),e.prototype.accept=function(r){r.visit(this)},e}(Re);S.NonTerminal=Hn;var Yn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.orgText=\"\",G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.Rule=Yn;var Xn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.ignoreAmbiguities=!1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.Alternative=Xn;var $n=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.Option=$n;var Zn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.RepetitionMandatory=Zn;var Qn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.RepetitionMandatoryWithSeparator=Qn;var Jn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.Repetition=Jn;var ei=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.RepetitionWithSeparator=ei;var ti=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,n.ignoreAmbiguities=!1,n.hasPredicates=!1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return Object.defineProperty(e.prototype,\"definition\",{get:function(){return this._definition},set:function(r){this._definition=r},enumerable:!1,configurable:!0}),e}(Re);S.Alternation=ti;var Dt=function(){function t(e){this.idx=1,G.assign(this,G.pick(e,function(r){return r!==void 0}))}return t.prototype.accept=function(e){e.visit(this)},t}();S.Terminal=Dt;function No(t){return G.map(t,ht)}S.serializeGrammar=No;function ht(t){function e(i){return G.map(i,ht)}if(t instanceof Hn)return{type:\"NonTerminal\",name:t.nonTerminalName,idx:t.idx};if(t instanceof Xn)return{type:\"Alternative\",definition:e(t.definition)};if(t instanceof $n)return{type:\"Option\",idx:t.idx,definition:e(t.definition)};if(t instanceof Zn)return{type:\"RepetitionMandatory\",idx:t.idx,definition:e(t.definition)};if(t instanceof Qn)return{type:\"RepetitionMandatoryWithSeparator\",idx:t.idx,separator:ht(new Dt({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof ei)return{type:\"RepetitionWithSeparator\",idx:t.idx,separator:ht(new Dt({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof Jn)return{type:\"Repetition\",idx:t.idx,definition:e(t.definition)};if(t instanceof ti)return{type:\"Alternation\",idx:t.idx,definition:e(t.definition)};if(t instanceof Dt){var r={type:\"Terminal\",name:t.terminalType.name,label:Oo.tokenLabel(t.terminalType),idx:t.idx},n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(r.pattern=G.isRegExp(n)?n.source:n),r}else{if(t instanceof Yn)return{type:\"Rule\",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error(\"non exhaustive match\")}}S.serializeProduction=ht});var Gt=R(Ut=>{\"use strict\";Object.defineProperty(Ut,\"__esModule\",{value:!0});Ut.RestWalker=void 0;var Sr=k(),ie=ne(),Io=function(){function t(){}return t.prototype.walk=function(e,r){var n=this;r===void 0&&(r=[]),Sr.forEach(e.definition,function(i,a){var o=Sr.drop(e.definition,a+1);if(i instanceof ie.NonTerminal)n.walkProdRef(i,o,r);else if(i instanceof ie.Terminal)n.walkTerminal(i,o,r);else if(i instanceof ie.Alternative)n.walkFlat(i,o,r);else if(i instanceof ie.Option)n.walkOption(i,o,r);else if(i instanceof ie.RepetitionMandatory)n.walkAtLeastOne(i,o,r);else if(i instanceof ie.RepetitionMandatoryWithSeparator)n.walkAtLeastOneSep(i,o,r);else if(i instanceof ie.RepetitionWithSeparator)n.walkManySep(i,o,r);else if(i instanceof ie.Repetition)n.walkMany(i,o,r);else if(i instanceof ie.Alternation)n.walkOr(i,o,r);else throw Error(\"non exhaustive match\")})},t.prototype.walkTerminal=function(e,r,n){},t.prototype.walkProdRef=function(e,r,n){},t.prototype.walkFlat=function(e,r,n){var i=r.concat(n);this.walk(e,i)},t.prototype.walkOption=function(e,r,n){var i=r.concat(n);this.walk(e,i)},t.prototype.walkAtLeastOne=function(e,r,n){var i=[new ie.Option({definition:e.definition})].concat(r,n);this.walk(e,i)},t.prototype.walkAtLeastOneSep=function(e,r,n){var i=ri(e,r,n);this.walk(e,i)},t.prototype.walkMany=function(e,r,n){var i=[new ie.Option({definition:e.definition})].concat(r,n);this.walk(e,i)},t.prototype.walkManySep=function(e,r,n){var i=ri(e,r,n);this.walk(e,i)},t.prototype.walkOr=function(e,r,n){var i=this,a=r.concat(n);Sr.forEach(e.definition,function(o){var s=new ie.Alternative({definition:[o]});i.walk(s,a)})},t}();Ut.RestWalker=Io;function ri(t,e,r){var n=[new ie.Option({definition:[new ie.Terminal({terminalType:t.separator})].concat(t.definition)})],i=n.concat(e,r);return i}});var $e=R(Wt=>{\"use strict\";Object.defineProperty(Wt,\"__esModule\",{value:!0});Wt.GAstVisitor=void 0;var Oe=ne(),ko=function(){function t(){}return t.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\")}},t.prototype.visitNonTerminal=function(e){},t.prototype.visitAlternative=function(e){},t.prototype.visitOption=function(e){},t.prototype.visitRepetition=function(e){},t.prototype.visitRepetitionMandatory=function(e){},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){},t.prototype.visitRepetitionWithSeparator=function(e){},t.prototype.visitAlternation=function(e){},t.prototype.visitTerminal=function(e){},t.prototype.visitRule=function(e){},t}();Wt.GAstVisitor=ko});var vt=R(X=>{\"use strict\";var Po=X&&X.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(X,\"__esModule\",{value:!0});X.collectMethods=X.DslMethodsCollectorVisitor=X.getProductionDslName=X.isBranchingProd=X.isOptionalProd=X.isSequenceProd=void 0;var dt=k(),W=ne(),So=$e();function xo(t){return t instanceof W.Alternative||t instanceof W.Option||t instanceof W.Repetition||t instanceof W.RepetitionMandatory||t instanceof W.RepetitionMandatoryWithSeparator||t instanceof W.RepetitionWithSeparator||t instanceof W.Terminal||t instanceof W.Rule}X.isSequenceProd=xo;function xr(t,e){e===void 0&&(e=[]);var r=t instanceof W.Option||t instanceof W.Repetition||t instanceof W.RepetitionWithSeparator;return r?!0:t instanceof W.Alternation?dt.some(t.definition,function(n){return xr(n,e)}):t instanceof W.NonTerminal&&dt.contains(e,t)?!1:t instanceof W.AbstractProduction?(t instanceof W.NonTerminal&&e.push(t),dt.every(t.definition,function(n){return xr(n,e)})):!1}X.isOptionalProd=xr;function Co(t){return t instanceof W.Alternation}X.isBranchingProd=Co;function Lo(t){if(t instanceof W.NonTerminal)return\"SUBRULE\";if(t instanceof W.Option)return\"OPTION\";if(t instanceof W.Alternation)return\"OR\";if(t instanceof W.RepetitionMandatory)return\"AT_LEAST_ONE\";if(t instanceof W.RepetitionMandatoryWithSeparator)return\"AT_LEAST_ONE_SEP\";if(t instanceof W.RepetitionWithSeparator)return\"MANY_SEP\";if(t instanceof W.Repetition)return\"MANY\";if(t instanceof W.Terminal)return\"CONSUME\";throw Error(\"non exhaustive match\")}X.getProductionDslName=Lo;var ni=function(t){Po(e,t);function e(){var r=t!==null&&t.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 n=r.terminalType.name+this.separator+\"Terminal\";dt.has(this.dslMethods,n)||(this.dslMethods[n]=[]),this.dslMethods[n].push(r)},e.prototype.visitNonTerminal=function(r){var n=r.nonTerminalName+this.separator+\"Terminal\";dt.has(this.dslMethods,n)||(this.dslMethods[n]=[]),this.dslMethods[n].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);X.DslMethodsCollectorVisitor=ni;var Bt=new ni;function Mo(t){Bt.reset(),t.accept(Bt);var e=Bt.dslMethods;return Bt.reset(),e}X.collectMethods=Mo});var Lr=R(Ne=>{\"use strict\";Object.defineProperty(Ne,\"__esModule\",{value:!0});Ne.firstForTerminal=Ne.firstForBranching=Ne.firstForSequence=Ne.first=void 0;var qt=k(),ii=ne(),Cr=vt();function jt(t){if(t instanceof ii.NonTerminal)return jt(t.referencedRule);if(t instanceof ii.Terminal)return si(t);if(Cr.isSequenceProd(t))return ai(t);if(Cr.isBranchingProd(t))return oi(t);throw Error(\"non exhaustive match\")}Ne.first=jt;function ai(t){for(var e=[],r=t.definition,n=0,i=r.length>n,a,o=!0;i&&o;)a=r[n],o=Cr.isOptionalProd(a),e=e.concat(jt(a)),n=n+1,i=r.length>n;return qt.uniq(e)}Ne.firstForSequence=ai;function oi(t){var e=qt.map(t.definition,function(r){return jt(r)});return qt.uniq(qt.flatten(e))}Ne.firstForBranching=oi;function si(t){return[t.terminalType]}Ne.firstForTerminal=si});var Mr=R(Vt=>{\"use strict\";Object.defineProperty(Vt,\"__esModule\",{value:!0});Vt.IN=void 0;Vt.IN=\"_~IN~_\"});var pi=R(he=>{\"use strict\";var bo=he&&he.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(he,\"__esModule\",{value:!0});he.buildInProdFollowPrefix=he.buildBetweenProdsFollowPrefix=he.computeAllProdsFollows=he.ResyncFollowsWalker=void 0;var Fo=Gt(),wo=Lr(),ui=k(),ci=Mr(),Do=ne(),fi=function(t){bo(e,t);function e(r){var n=t.call(this)||this;return n.topProd=r,n.follows={},n}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(r,n,i){},e.prototype.walkProdRef=function(r,n,i){var a=li(r.referencedRule,r.idx)+this.topProd.name,o=n.concat(i),s=new Do.Alternative({definition:o}),c=wo.first(s);this.follows[a]=c},e}(Fo.RestWalker);he.ResyncFollowsWalker=fi;function Uo(t){var e={};return ui.forEach(t,function(r){var n=new fi(r).startWalking();ui.assign(e,n)}),e}he.computeAllProdsFollows=Uo;function li(t,e){return t.name+e+ci.IN}he.buildBetweenProdsFollowPrefix=li;function Go(t){var e=t.terminalType.name;return e+t.idx+ci.IN}he.buildInProdFollowPrefix=Go});var mt=R(Me=>{\"use strict\";Object.defineProperty(Me,\"__esModule\",{value:!0});Me.defaultGrammarValidatorErrorProvider=Me.defaultGrammarResolverErrorProvider=Me.defaultParserErrorProvider=void 0;var Ze=Ue(),Wo=k(),ye=k(),br=ne(),hi=vt();Me.defaultParserErrorProvider={buildMismatchTokenMessage:function(t){var e=t.expected,r=t.actual,n=t.previous,i=t.ruleName,a=Ze.hasTokenLabel(e),o=a?\"--> \"+Ze.tokenLabel(e)+\" <--\":\"token of type --> \"+e.name+\" <--\",s=\"Expecting \"+o+\" but found --> '\"+r.image+\"' <--\";return s},buildNotAllInputParsedMessage:function(t){var e=t.firstRedundant,r=t.ruleName;return\"Redundant input, expecting EOF but found: \"+e.image},buildNoViableAltMessage:function(t){var e=t.expectedPathsPerAlt,r=t.actual,n=t.previous,i=t.customUserDescription,a=t.ruleName,o=\"Expecting: \",s=ye.first(r).image,c=`\nbut found: '`+s+\"'\";if(i)return o+i+c;var f=ye.reduce(e,function(v,u){return v.concat(u)},[]),p=ye.map(f,function(v){return\"[\"+ye.map(v,function(u){return Ze.tokenLabel(u)}).join(\", \")+\"]\"}),l=ye.map(p,function(v,u){return\" \"+(u+1)+\". \"+v}),m=`one of these possible Token sequences:\n`+l.join(`\n`);return o+m+c},buildEarlyExitMessage:function(t){var e=t.expectedIterationPaths,r=t.actual,n=t.customUserDescription,i=t.ruleName,a=\"Expecting: \",o=ye.first(r).image,s=`\nbut found: '`+o+\"'\";if(n)return a+n+s;var c=ye.map(e,function(p){return\"[\"+ye.map(p,function(l){return Ze.tokenLabel(l)}).join(\",\")+\"]\"}),f=`expecting at least one iteration which starts with one of these possible Token sequences::\n `+(\"<\"+c.join(\" ,\")+\">\");return a+f+s}};Object.freeze(Me.defaultParserErrorProvider);Me.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(t,e){var r=\"Invalid grammar, reference to a rule which is not defined: ->\"+e.nonTerminalName+`<-\ninside top level rule: ->`+t.name+\"<-\";return r}};Me.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(t,e){function r(p){return p instanceof br.Terminal?p.terminalType.name:p instanceof br.NonTerminal?p.nonTerminalName:\"\"}var n=t.name,i=ye.first(e),a=i.idx,o=hi.getProductionDslName(i),s=r(i),c=a>0,f=\"->\"+o+(c?a:\"\")+\"<- \"+(s?\"with argument: ->\"+s+\"<-\":\"\")+`\n appears more than once (`+e.length+\" times) in the top level rule: ->\"+n+`<-.\n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES\n `;return f=f.replace(/[ \\t]+/g,\" \"),f=f.replace(/\\s\\s+/g,`\n`),f},buildNamespaceConflictError:function(t){var e=`Namespace conflict found in grammar.\n`+(\"The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <\"+t.name+`>.\n`)+`To resolve this make sure each Terminal and Non-Terminal names are unique\nThis is easy to accomplish by using the convention that Terminal names start with an uppercase letter\nand Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(t){var e=ye.map(t.prefixPath,function(i){return Ze.tokenLabel(i)}).join(\", \"),r=t.alternation.idx===0?\"\":t.alternation.idx,n=\"Ambiguous alternatives: <\"+t.ambiguityIndices.join(\" ,\")+`> due to common lookahead prefix\n`+(\"in <OR\"+r+\"> inside <\"+t.topLevelRule.name+`> Rule,\n`)+(\"<\"+e+`> may appears as a prefix path in all these alternatives.\n`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\nFor Further details.`;return n},buildAlternationAmbiguityError:function(t){var e=ye.map(t.prefixPath,function(i){return Ze.tokenLabel(i)}).join(\", \"),r=t.alternation.idx===0?\"\":t.alternation.idx,n=\"Ambiguous Alternatives Detected: <\"+t.ambiguityIndices.join(\" ,\")+\"> in <OR\"+r+\">\"+(\" inside <\"+t.topLevelRule.name+`> Rule,\n`)+(\"<\"+e+`> may appears as a prefix path in all these alternatives.\n`);return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.`,n},buildEmptyRepetitionError:function(t){var e=hi.getProductionDslName(t.repetition);t.repetition.idx!==0&&(e+=t.repetition.idx);var r=\"The repetition <\"+e+\"> within Rule <\"+t.topLevelRule.name+`> can never consume any tokens.\nThis could lead to an infinite loop.`;return r},buildTokenNameError:function(t){return\"deprecated\"},buildEmptyAlternationError:function(t){var e=\"Ambiguous empty alternative: <\"+(t.emptyChoiceIdx+1)+\">\"+(\" in <OR\"+t.alternation.idx+\"> inside <\"+t.topLevelRule.name+`> Rule.\n`)+\"Only the last alternative may be an empty alternative.\";return e},buildTooManyAlternativesError:function(t){var e=`An Alternation cannot have more than 256 alternatives:\n`+(\"<OR\"+t.alternation.idx+\"> inside <\"+t.topLevelRule.name+`> Rule.\n has `+(t.alternation.definition.length+1)+\" alternatives.\");return e},buildLeftRecursionError:function(t){var e=t.topLevelRule.name,r=Wo.map(t.leftRecursionPath,function(a){return a.name}),n=e+\" --> \"+r.concat([e]).join(\" --> \"),i=`Left Recursion found in grammar.\n`+(\"rule: <\"+e+`> can be invoked from itself (directly or indirectly)\n`)+(`without consuming any Tokens. The grammar path that causes this is:\n `+n+`\n`)+` To fix this refactor your grammar to remove the left recursion.\nsee: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return i},buildInvalidRuleNameError:function(t){return\"deprecated\"},buildDuplicateRuleNameError:function(t){var e;t.topLevelRule instanceof br.Rule?e=t.topLevelRule.name:e=t.topLevelRule;var r=\"Duplicate definition, rule: ->\"+e+\"<- is already defined in the grammar: ->\"+t.grammarName+\"<-\";return r}}});var mi=R(Ge=>{\"use strict\";var Bo=Ge&&Ge.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Ge,\"__esModule\",{value:!0});Ge.GastRefResolverVisitor=Ge.resolveGrammar=void 0;var qo=ce(),di=k(),jo=$e();function Vo(t,e){var r=new vi(t,e);return r.resolveRefs(),r.errors}Ge.resolveGrammar=Vo;var vi=function(t){Bo(e,t);function e(r,n){var i=t.call(this)||this;return i.nameToTopRule=r,i.errMsgProvider=n,i.errors=[],i}return e.prototype.resolveRefs=function(){var r=this;di.forEach(di.values(this.nameToTopRule),function(n){r.currTopLevel=n,n.accept(r)})},e.prototype.visitNonTerminal=function(r){var n=this.nameToTopRule[r.nonTerminalName];if(n)r.referencedRule=n;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=R(j=>{\"use strict\";var je=j&&j.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(j,\"__esModule\",{value:!0});j.nextPossibleTokensAfter=j.possiblePathsFrom=j.NextTerminalAfterAtLeastOneSepWalker=j.NextTerminalAfterAtLeastOneWalker=j.NextTerminalAfterManySepWalker=j.NextTerminalAfterManyWalker=j.AbstractNextTerminalAfterProductionWalker=j.NextAfterTokenWalker=j.AbstractNextPossibleTokensWalker=void 0;var Ei=Gt(),I=k(),Ko=Lr(),O=ne(),Ti=function(t){je(e,t);function e(r,n){var i=t.call(this)||this;return i.topProd=r,i.path=n,i.possibleTokTypes=[],i.nextProductionName=\"\",i.nextProductionOccurrence=0,i.found=!1,i.isAtEndOfPath=!1,i}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error(\"The path does not start with the walker's top Rule!\");return this.ruleStack=I.cloneArr(this.path.ruleStack).reverse(),this.occurrenceStack=I.cloneArr(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(r,n){n===void 0&&(n=[]),this.found||t.prototype.walk.call(this,r,n)},e.prototype.walkProdRef=function(r,n,i){if(r.referencedRule.name===this.nextProductionName&&r.idx===this.nextProductionOccurrence){var a=n.concat(i);this.updateExpectedNext(),this.walk(r.referencedRule,a)}},e.prototype.updateExpectedNext=function(){I.isEmpty(this.ruleStack)?(this.nextProductionName=\"\",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(Ei.RestWalker);j.AbstractNextPossibleTokensWalker=Ti;var zo=function(t){je(e,t);function e(r,n){var i=t.call(this,r,n)||this;return i.path=n,i.nextTerminalName=\"\",i.nextTerminalOccurrence=0,i.nextTerminalName=i.path.lastTok.name,i.nextTerminalOccurrence=i.path.lastTokOccurrence,i}return e.prototype.walkTerminal=function(r,n,i){if(this.isAtEndOfPath&&r.terminalType.name===this.nextTerminalName&&r.idx===this.nextTerminalOccurrence&&!this.found){var a=n.concat(i),o=new O.Alternative({definition:a});this.possibleTokTypes=Ko.first(o),this.found=!0}},e}(Ti);j.NextAfterTokenWalker=zo;var Et=function(t){je(e,t);function e(r,n){var i=t.call(this)||this;return i.topRule=r,i.occurrence=n,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}(Ei.RestWalker);j.AbstractNextTerminalAfterProductionWalker=Et;var Ho=function(t){je(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkMany=function(r,n,i){if(r.idx===this.occurrence){var a=I.first(n.concat(i));this.result.isEndOfRule=a===void 0,a instanceof O.Terminal&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkMany.call(this,r,n,i)},e}(Et);j.NextTerminalAfterManyWalker=Ho;var Yo=function(t){je(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkManySep=function(r,n,i){if(r.idx===this.occurrence){var a=I.first(n.concat(i));this.result.isEndOfRule=a===void 0,a instanceof O.Terminal&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkManySep.call(this,r,n,i)},e}(Et);j.NextTerminalAfterManySepWalker=Yo;var Xo=function(t){je(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(r,n,i){if(r.idx===this.occurrence){var a=I.first(n.concat(i));this.result.isEndOfRule=a===void 0,a instanceof O.Terminal&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkAtLeastOne.call(this,r,n,i)},e}(Et);j.NextTerminalAfterAtLeastOneWalker=Xo;var $o=function(t){je(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(r,n,i){if(r.idx===this.occurrence){var a=I.first(n.concat(i));this.result.isEndOfRule=a===void 0,a instanceof O.Terminal&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkAtLeastOneSep.call(this,r,n,i)},e}(Et);j.NextTerminalAfterAtLeastOneSepWalker=$o;function yi(t,e,r){r===void 0&&(r=[]),r=I.cloneArr(r);var n=[],i=0;function a(f){return f.concat(I.drop(t,i+1))}function o(f){var p=yi(a(f),e,r);return n.concat(p)}for(;r.length<e&&i<t.length;){var s=t[i];if(s instanceof O.Alternative)return o(s.definition);if(s instanceof O.NonTerminal)return o(s.definition);if(s instanceof O.Option)n=o(s.definition);else if(s instanceof O.RepetitionMandatory){var c=s.definition.concat([new O.Repetition({definition:s.definition})]);return o(c)}else if(s instanceof O.RepetitionMandatoryWithSeparator){var c=[new O.Alternative({definition:s.definition}),new O.Repetition({definition:[new O.Terminal({terminalType:s.separator})].concat(s.definition)})];return o(c)}else if(s instanceof O.RepetitionWithSeparator){var c=s.definition.concat([new O.Repetition({definition:[new O.Terminal({terminalType:s.separator})].concat(s.definition)})]);n=o(c)}else if(s instanceof O.Repetition){var c=s.definition.concat([new O.Repetition({definition:s.definition})]);n=o(c)}else{if(s instanceof O.Alternation)return I.forEach(s.definition,function(f){I.isEmpty(f.definition)===!1&&(n=o(f.definition))}),n;if(s instanceof O.Terminal)r.push(s.terminalType);else throw Error(\"non exhaustive match\")}i++}return n.push({partialPath:r,suffixDef:I.drop(t,i)}),n}j.possiblePathsFrom=yi;function Qo(t,e,r,n){var i=\"EXIT_NONE_TERMINAL\",a=[i],o=\"EXIT_ALTERNATIVE\",s=!1,c=e.length,f=c-n-1,p=[],l=[];for(l.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!I.isEmpty(l);){var m=l.pop();if(m===o){s&&I.last(l).idx<=f&&l.pop();continue}var v=m.def,u=m.idx,d=m.ruleStack,A=m.occurrenceStack;if(!I.isEmpty(v)){var _=v[0];if(_===i){var g={idx:u,def:I.drop(v),ruleStack:I.dropRight(d),occurrenceStack:I.dropRight(A)};l.push(g)}else if(_ instanceof O.Terminal)if(u<c-1){var y=u+1,b=e[y];if(r(b,_.terminalType)){var g={idx:y,def:I.drop(v),ruleStack:d,occurrenceStack:A};l.push(g)}}else if(u===c-1)p.push({nextTokenType:_.terminalType,nextTokenOccurrence:_.idx,ruleStack:d,occurrenceStack:A}),s=!0;else throw Error(\"non exhaustive match\");else if(_ instanceof O.NonTerminal){var L=I.cloneArr(d);L.push(_.nonTerminalName);var se=I.cloneArr(A);se.push(_.idx);var g={idx:u,def:_.definition.concat(a,I.drop(v)),ruleStack:L,occurrenceStack:se};l.push(g)}else if(_ instanceof O.Option){var fe={idx:u,def:I.drop(v),ruleStack:d,occurrenceStack:A};l.push(fe),l.push(o);var Z={idx:u,def:_.definition.concat(I.drop(v)),ruleStack:d,occurrenceStack:A};l.push(Z)}else if(_ instanceof O.RepetitionMandatory){var ue=new O.Repetition({definition:_.definition,idx:_.idx}),Q=_.definition.concat([ue],I.drop(v)),g={idx:u,def:Q,ruleStack:d,occurrenceStack:A};l.push(g)}else if(_ instanceof O.RepetitionMandatoryWithSeparator){var te=new O.Terminal({terminalType:_.separator}),ue=new O.Repetition({definition:[te].concat(_.definition),idx:_.idx}),Q=_.definition.concat([ue],I.drop(v)),g={idx:u,def:Q,ruleStack:d,occurrenceStack:A};l.push(g)}else if(_ instanceof O.RepetitionWithSeparator){var fe={idx:u,def:I.drop(v),ruleStack:d,occurrenceStack:A};l.push(fe),l.push(o);var te=new O.Terminal({terminalType:_.separator}),xe=new O.Repetition({definition:[te].concat(_.definition),idx:_.idx}),Q=_.definition.concat([xe],I.drop(v)),Z={idx:u,def:Q,ruleStack:d,occurrenceStack:A};l.push(Z)}else if(_ instanceof O.Repetition){var fe={idx:u,def:I.drop(v),ruleStack:d,occurrenceStack:A};l.push(fe),l.push(o);var xe=new O.Repetition({definition:_.definition,idx:_.idx}),Q=_.definition.concat([xe],I.drop(v)),Z={idx:u,def:Q,ruleStack:d,occurrenceStack:A};l.push(Z)}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(I.drop(v)),ruleStack:d,occurrenceStack:A};l.push(Ke),l.push(o)}else if(_ instanceof O.Alternative)l.push({idx:u,def:_.definition.concat(I.drop(v)),ruleStack:d,occurrenceStack:A});else if(_ instanceof O.Rule)l.push(Zo(_,u,d,A));else throw Error(\"non exhaustive match\")}}return p}j.nextPossibleTokensAfter=Qo;function Zo(t,e,r,n){var i=I.cloneArr(r);i.push(t.name);var a=I.cloneArr(n);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}});var yt=R(C=>{\"use strict\";var _i=C&&C.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(C,\"__esModule\",{value:!0});C.areTokenCategoriesNotUsed=C.isStrictPrefixOfPath=C.containsPath=C.getLookaheadPathsForOptionalProd=C.getLookaheadPathsForOr=C.lookAheadSequenceFromAlternatives=C.buildSingleAlternativeLookaheadFunction=C.buildAlternativesLookAheadFunc=C.buildLookaheadFuncForOptionalProd=C.buildLookaheadFuncForOr=C.getProdType=C.PROD_TYPE=void 0;var D=k(),gi=Tt(),Jo=Gt(),Kt=Xe(),We=ne(),es=$e(),z;(function(t){t[t.OPTION=0]=\"OPTION\",t[t.REPETITION=1]=\"REPETITION\",t[t.REPETITION_MANDATORY=2]=\"REPETITION_MANDATORY\",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]=\"REPETITION_MANDATORY_WITH_SEPARATOR\",t[t.REPETITION_WITH_SEPARATOR=4]=\"REPETITION_WITH_SEPARATOR\",t[t.ALTERNATION=5]=\"ALTERNATION\"})(z=C.PROD_TYPE||(C.PROD_TYPE={}));function ts(t){if(t instanceof We.Option)return z.OPTION;if(t instanceof We.Repetition)return z.REPETITION;if(t instanceof We.RepetitionMandatory)return z.REPETITION_MANDATORY;if(t instanceof We.RepetitionMandatoryWithSeparator)return z.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof We.RepetitionWithSeparator)return z.REPETITION_WITH_SEPARATOR;if(t instanceof We.Alternation)return z.ALTERNATION;throw Error(\"non exhaustive match\")}C.getProdType=ts;function rs(t,e,r,n,i,a){var o=Ai(t,e,r),s=Fr(o)?Kt.tokenStructuredMatcherNoCategories:Kt.tokenStructuredMatcher;return a(o,n,s,i)}C.buildLookaheadFuncForOr=rs;function ns(t,e,r,n,i,a){var o=Ri(t,e,i,r),s=Fr(o)?Kt.tokenStructuredMatcherNoCategories:Kt.tokenStructuredMatcher;return a(o[0],s,n)}C.buildLookaheadFuncForOptionalProd=ns;function is(t,e,r,n){var i=t.length,a=D.every(t,function(c){return D.every(c,function(f){return f.length===1})});if(e)return function(c){for(var f=D.map(c,function(y){return y.GATE}),p=0;p<i;p++){var l=t[p],m=l.length,v=f[p];if(v!==void 0&&v.call(this)===!1)continue;e:for(var u=0;u<m;u++){for(var d=l[u],A=d.length,_=0;_<A;_++){var g=this.LA(_+1);if(r(g,d[_])===!1)continue e}return p}}};if(a&&!n){var o=D.map(t,function(c){return D.flatten(c)}),s=D.reduce(o,function(c,f,p){return D.forEach(f,function(l){D.has(c,l.tokenTypeIdx)||(c[l.tokenTypeIdx]=p),D.forEach(l.categoryMatches,function(m){D.has(c,m)||(c[m]=p)})}),c},[]);return function(){var c=this.LA(1);return s[c.tokenTypeIdx]}}else return function(){for(var c=0;c<i;c++){var f=t[c],p=f.length;e:for(var l=0;l<p;l++){for(var m=f[l],v=m.length,u=0;u<v;u++){var d=this.LA(u+1);if(r(d,m[u])===!1)continue e}return c}}}}C.buildAlternativesLookAheadFunc=is;function as(t,e,r){var n=D.every(t,function(f){return f.length===1}),i=t.length;if(n&&!r){var a=D.flatten(t);if(a.length===1&&D.isEmpty(a[0].categoryMatches)){var o=a[0],s=o.tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===s}}else{var c=D.reduce(a,function(f,p,l){return f[p.tokenTypeIdx]=!0,D.forEach(p.categoryMatches,function(m){f[m]=!0}),f},[]);return function(){var f=this.LA(1);return c[f.tokenTypeIdx]===!0}}}else return function(){e:for(var f=0;f<i;f++){for(var p=t[f],l=p.length,m=0;m<l;m++){var v=this.LA(m+1);if(e(v,p[m])===!1)continue e}return!0}return!1}}C.buildSingleAlternativeLookaheadFunction=as;var os=function(t){_i(e,t);function e(r,n,i){var a=t.call(this)||this;return a.topProd=r,a.targetOccurrence=n,a.targetProdType=i,a}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.restDef},e.prototype.checkIsTarget=function(r,n,i,a){return r.idx===this.targetOccurrence&&this.targetProdType===n?(this.restDef=i.concat(a),!0):!1},e.prototype.walkOption=function(r,n,i){this.checkIsTarget(r,z.OPTION,n,i)||t.prototype.walkOption.call(this,r,n,i)},e.prototype.walkAtLeastOne=function(r,n,i){this.checkIsTarget(r,z.REPETITION_MANDATORY,n,i)||t.prototype.walkOption.call(this,r,n,i)},e.prototype.walkAtLeastOneSep=function(r,n,i){this.checkIsTarget(r,z.REPETITION_MANDATORY_WITH_SEPARATOR,n,i)||t.prototype.walkOption.call(this,r,n,i)},e.prototype.walkMany=function(r,n,i){this.checkIsTarget(r,z.REPETITION,n,i)||t.prototype.walkOption.call(this,r,n,i)},e.prototype.walkManySep=function(r,n,i){this.checkIsTarget(r,z.REPETITION_WITH_SEPARATOR,n,i)||t.prototype.walkOption.call(this,r,n,i)},e}(Jo.RestWalker),Oi=function(t){_i(e,t);function e(r,n,i){var a=t.call(this)||this;return a.targetOccurrence=r,a.targetProdType=n,a.targetRef=i,a.result=[],a}return e.prototype.checkIsTarget=function(r,n){r.idx===this.targetOccurrence&&this.targetProdType===n&&(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(t){for(var e=new Array(t),r=0;r<t;r++)e[r]=[];return e}function wr(t){for(var e=[\"\"],r=0;r<t.length;r++){for(var n=t[r],i=[],a=0;a<e.length;a++){var o=e[a];i.push(o+\"_\"+n.tokenTypeIdx);for(var s=0;s<n.categoryMatches.length;s++){var c=\"_\"+n.categoryMatches[s];i.push(o+c)}}e=i}return e}function ss(t,e,r){for(var n=0;n<t.length;n++)if(n!==r)for(var i=t[n],a=0;a<e.length;a++){var o=e[a];if(i[o]===!0)return!1}return!0}function Dr(t,e){for(var r=D.map(t,function(p){return gi.possiblePathsFrom([p],1)}),n=Ni(r.length),i=D.map(r,function(p){var l={};return D.forEach(p,function(m){var v=wr(m.partialPath);D.forEach(v,function(u){l[u]=!0})}),l}),a=r,o=1;o<=e;o++){var s=a;a=Ni(s.length);for(var c=function(p){for(var l=s[p],m=0;m<l.length;m++){var v=l[m].partialPath,u=l[m].suffixDef,d=wr(v),A=ss(i,d,p);if(A||D.isEmpty(u)||v.length===e){var _=n[p];if(Ii(_,v)===!1){_.push(v);for(var g=0;g<d.length;g++){var y=d[g];i[p][y]=!0}}}else{var b=gi.possiblePathsFrom(u,o+1,v);a[p]=a[p].concat(b),D.forEach(b,function(L){var se=wr(L.partialPath);D.forEach(se,function(fe){i[p][fe]=!0})})}}},f=0;f<s.length;f++)c(f)}return n}C.lookAheadSequenceFromAlternatives=Dr;function Ai(t,e,r,n){var i=new Oi(t,z.ALTERNATION,n);return e.accept(i),Dr(i.result,r)}C.getLookaheadPathsForOr=Ai;function Ri(t,e,r,n){var i=new Oi(t,r);e.accept(i);var a=i.result,o=new os(e,t,r),s=o.startWalking(),c=new We.Alternative({definition:a}),f=new We.Alternative({definition:s});return Dr([c,f],n)}C.getLookaheadPathsForOptionalProd=Ri;function Ii(t,e){e:for(var r=0;r<t.length;r++){var n=t[r];if(n.length===e.length){for(var i=0;i<n.length;i++){var a=e[i],o=n[i],s=a===o||o.categoryMatchesMap[a.tokenTypeIdx]!==void 0;if(s===!1)continue e}return!0}}return!1}C.containsPath=Ii;function us(t,e){return t.length<e.length&&D.every(t,function(r,n){var i=e[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}C.isStrictPrefixOfPath=us;function Fr(t){return D.every(t,function(e){return D.every(e,function(r){return D.every(r,function(n){return D.isEmpty(n.categoryMatches)})})})}C.areTokenCategoriesNotUsed=Fr});var jr=R(x=>{\"use strict\";var Ur=x&&x.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(x,\"__esModule\",{value:!0});x.checkPrefixAlternativesAmbiguities=x.validateSomeNonEmptyLookaheadPath=x.validateTooManyAlts=x.RepetionCollector=x.validateAmbiguousAlternationAlternatives=x.validateEmptyOrAlternative=x.getFirstNoneTerminal=x.validateNoLeftRecursion=x.validateRuleIsOverridden=x.validateRuleDoesNotAlreadyExist=x.OccurrenceValidationCollector=x.identifyProductionForDuplicates=x.validateGrammar=void 0;var M=k(),B=k(),Ie=ce(),Gr=vt(),Qe=yt(),cs=Tt(),_e=ne(),Wr=$e();function ps(t,e,r,n,i){var a=M.map(t,function(v){return ls(v,n)}),o=M.map(t,function(v){return Br(v,v,n)}),s=[],c=[],f=[];B.every(o,B.isEmpty)&&(s=B.map(t,function(v){return Pi(v,n)}),c=B.map(t,function(v){return Si(v,e,n)}),f=Ci(t,e,n));var p=fs(t,r,n),l=B.map(t,function(v){return xi(v,n)}),m=B.map(t,function(v){return ki(v,t,i,n)});return M.flatten(a.concat(f,o,s,c,p,l,m))}x.validateGrammar=ps;function ls(t,e){var r=new bi;t.accept(r);var n=r.allProductions,i=M.groupBy(n,Li),a=M.pick(i,function(s){return s.length>1}),o=M.map(M.values(a),function(s){var c=M.first(s),f=e.buildDuplicateFoundError(t,s),p=Gr.getProductionDslName(c),l={message:f,type:Ie.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:p,occurrence:c.idx},m=Mi(c);return m&&(l.parameter=m),l});return o}function Li(t){return Gr.getProductionDslName(t)+\"_#_\"+t.idx+\"_#_\"+Mi(t)}x.identifyProductionForDuplicates=Li;function Mi(t){return t instanceof _e.Terminal?t.terminalType.name:t instanceof _e.NonTerminal?t.nonTerminalName:\"\"}var bi=function(t){Ur(e,t);function e(){var r=t!==null&&t.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);x.OccurrenceValidationCollector=bi;function ki(t,e,r,n){var i=[],a=B.reduce(e,function(s,c){return c.name===t.name?s+1:s},0);if(a>1){var o=n.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});i.push({message:o,type:Ie.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}x.validateRuleDoesNotAlreadyExist=ki;function hs(t,e,r){var n=[],i;return M.contains(e,t)||(i=\"Invalid rule override, rule: ->\"+t+\"<- cannot be overridden in the grammar: ->\"+r+\"<-as it is not defined in any of the super grammars \",n.push({message:i,type:Ie.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:t})),n}x.validateRuleIsOverridden=hs;function Br(t,e,r,n){n===void 0&&(n=[]);var i=[],a=_t(e.definition);if(M.isEmpty(a))return[];var o=t.name,s=M.contains(a,t);s&&i.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:n}),type:Ie.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var c=M.difference(a,n.concat([t])),f=M.map(c,function(p){var l=M.cloneArr(n);return l.push(p),Br(t,p,r,l)});return i.concat(M.flatten(f))}x.validateNoLeftRecursion=Br;function _t(t){var e=[];if(M.isEmpty(t))return e;var r=M.first(t);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 n=Gr.isOptionalProd(r),i=t.length>1;if(n&&i){var a=M.drop(t);return e.concat(_t(a))}else return e}x.getFirstNoneTerminal=_t;var qr=function(t){Ur(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.alternations=[],r}return e.prototype.visitAlternation=function(r){this.alternations.push(r)},e}(Wr.GAstVisitor);function Pi(t,e){var r=new qr;t.accept(r);var n=r.alternations,i=M.reduce(n,function(a,o){var s=M.dropRight(o.definition),c=M.map(s,function(f,p){var l=cs.nextPossibleTokensAfter([f],[],null,1);return M.isEmpty(l)?{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:o,emptyChoiceIdx:p}),type:Ie.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:o.idx,alternative:p+1}:null});return a.concat(M.compact(c))},[]);return i}x.validateEmptyOrAlternative=Pi;function Si(t,e,r){var n=new qr;t.accept(n);var i=n.alternations;i=B.reject(i,function(o){return o.ignoreAmbiguities===!0});var a=M.reduce(i,function(o,s){var c=s.idx,f=s.maxLookahead||e,p=Qe.getLookaheadPathsForOr(c,t,f,s),l=ds(p,s,t,r),m=Fi(p,s,t,r);return o.concat(l,m)},[]);return a}x.validateAmbiguousAlternationAlternatives=Si;var wi=function(t){Ur(e,t);function e(){var r=t!==null&&t.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);x.RepetionCollector=wi;function xi(t,e){var r=new qr;t.accept(r);var n=r.alternations,i=M.reduce(n,function(a,o){return o.definition.length>255&&a.push({message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:o}),type:Ie.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:t.name,occurrence:o.idx}),a},[]);return i}x.validateTooManyAlts=xi;function Ci(t,e,r){var n=[];return B.forEach(t,function(i){var a=new wi;i.accept(a);var o=a.allProductions;B.forEach(o,function(s){var c=Qe.getProdType(s),f=s.maxLookahead||e,p=s.idx,l=Qe.getLookaheadPathsForOptionalProd(p,i,c,f),m=l[0];if(B.isEmpty(B.flatten(m))){var v=r.buildEmptyRepetitionError({topLevelRule:i,repetition:s});n.push({message:v,type:Ie.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}x.validateSomeNonEmptyLookaheadPath=Ci;function ds(t,e,r,n){var i=[],a=B.reduce(t,function(s,c,f){return e.definition[f].ignoreAmbiguities===!0||B.forEach(c,function(p){var l=[f];B.forEach(t,function(m,v){f!==v&&Qe.containsPath(m,p)&&e.definition[v].ignoreAmbiguities!==!0&&l.push(v)}),l.length>1&&!Qe.containsPath(i,p)&&(i.push(p),s.push({alts:l,path:p}))}),s},[]),o=M.map(a,function(s){var c=B.map(s.alts,function(p){return p+1}),f=n.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:c,prefixPath:s.path});return{message:f,type:Ie.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:[s.alts]}});return o}function Fi(t,e,r,n){var i=[],a=B.reduce(t,function(o,s,c){var f=B.map(s,function(p){return{idx:c,path:p}});return o.concat(f)},[]);return B.forEach(a,function(o){var s=e.definition[o.idx];if(s.ignoreAmbiguities!==!0){var c=o.idx,f=o.path,p=B.findAll(a,function(m){return e.definition[m.idx].ignoreAmbiguities!==!0&&m.idx<c&&Qe.isStrictPrefixOfPath(m.path,f)}),l=B.map(p,function(m){var v=[m.idx+1,c+1],u=e.idx===0?\"\":e.idx,d=n.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(l)}}),i}x.checkPrefixAlternativesAmbiguities=Fi;function fs(t,e,r){var n=[],i=B.map(e,function(a){return a.name});return B.forEach(t,function(a){var o=a.name;if(B.contains(i,o)){var s=r.buildNamespaceConflictError(a);n.push({message:s,type:Ie.ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:o})}}),n}});var Ui=R(Je=>{\"use strict\";Object.defineProperty(Je,\"__esModule\",{value:!0});Je.validateGrammar=Je.resolveGrammar=void 0;var Vr=k(),vs=mi(),ms=jr(),Di=mt();function Es(t){t=Vr.defaults(t,{errMsgProvider:Di.defaultGrammarResolverErrorProvider});var e={};return Vr.forEach(t.rules,function(r){e[r.name]=r}),vs.resolveGrammar(e,t.errMsgProvider)}Je.resolveGrammar=Es;function Ts(t){return t=Vr.defaults(t,{errMsgProvider:Di.defaultGrammarValidatorErrorProvider}),ms.validateGrammar(t.rules,t.maxLookahead,t.tokenTypes,t.errMsgProvider,t.grammarName)}Je.validateGrammar=Ts});var et=R(ae=>{\"use strict\";var gt=ae&&ae.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(ae,\"__esModule\",{value:!0});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(t){return ys.contains(ji,t.name)}ae.isRecognitionException=_s;var zt=function(t){gt(e,t);function e(r,n){var i=this.constructor,a=t.call(this,r)||this;return a.token=n,a.resyncedTokens=[],Object.setPrototypeOf(a,i.prototype),Error.captureStackTrace&&Error.captureStackTrace(a,a.constructor),a}return e}(Error),gs=function(t){gt(e,t);function e(r,n,i){var a=t.call(this,r,n)||this;return a.previousToken=i,a.name=Gi,a}return e}(zt);ae.MismatchedTokenException=gs;var As=function(t){gt(e,t);function e(r,n,i){var a=t.call(this,r,n)||this;return a.previousToken=i,a.name=Wi,a}return e}(zt);ae.NoViableAltException=As;var Rs=function(t){gt(e,t);function e(r,n){var i=t.call(this,r,n)||this;return i.name=qi,i}return e}(zt);ae.NotAllInputParsedException=Rs;var Os=function(t){gt(e,t);function e(r,n,i){var a=t.call(this,r,n)||this;return a.previousToken=i,a.name=Bi,a}return e}(zt);ae.EarlyExitException=Os});var zr=R($=>{\"use strict\";Object.defineProperty($,\"__esModule\",{value:!0});$.attemptInRepetitionRecovery=$.Recoverable=$.InRuleRecoveryException=$.IN_RULE_RECOVERY_EXCEPTION=$.EOF_FOLLOW_KEY=void 0;var Ht=Ue(),de=k(),Ns=et(),Is=Mr(),ks=ce();$.EOF_FOLLOW_KEY={};$.IN_RULE_RECOVERY_EXCEPTION=\"InRuleRecoveryException\";function Kr(t){this.name=$.IN_RULE_RECOVERY_EXCEPTION,this.message=t}$.InRuleRecoveryException=Kr;Kr.prototype=Error.prototype;var Ps=function(){function t(){}return t.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=de.has(e,\"recoveryEnabled\")?e.recoveryEnabled:ks.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=Vi)},t.prototype.getTokenToInsert=function(e){var r=Ht.createTokenInstance(e,\"\",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r},t.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},t.prototype.tryInRepetitionRecovery=function(e,r,n,i){for(var a=this,o=this.findReSyncTokenType(),s=this.exportLexerState(),c=[],f=!1,p=this.LA(1),l=this.LA(1),m=function(){var v=a.LA(0),u=a.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:p,previous:v,ruleName:a.getCurrRuleFullName()}),d=new Ns.MismatchedTokenException(u,p,a.LA(0));d.resyncedTokens=de.dropRight(c),a.SAVE_ERROR(d)};!f;)if(this.tokenMatcher(l,i)){m();return}else if(n.call(this)){m(),e.apply(this,r);return}else this.tokenMatcher(l,o)?f=!0:(l=this.SKIP_TOKEN(),this.addToResyncTokens(l,c));this.importLexerState(s)},t.prototype.shouldInRepetitionRecoveryBeTried=function(e,r,n){return!(n===!1||e===void 0||r===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))},t.prototype.getFollowsForInRuleRecovery=function(e,r){var n=this.getCurrentGrammarPath(e,r),i=this.getNextPossibleTokenTypes(n);return i},t.prototype.tryInRuleRecovery=function(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r)){var n=this.getTokenToInsert(e);return n}if(this.canRecoverWithSingleTokenDeletion(e)){var i=this.SKIP_TOKEN();return this.consumeToken(),i}throw new Kr(\"sad sad panda\")},t.prototype.canPerformInRuleRecovery=function(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)},t.prototype.canRecoverWithSingleTokenInsertion=function(e,r){var n=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||de.isEmpty(r))return!1;var i=this.LA(1),a=de.find(r,function(o){return n.tokenMatcher(i,o)})!==void 0;return a},t.prototype.canRecoverWithSingleTokenDeletion=function(e){var r=this.tokenMatcher(this.LA(2),e);return r},t.prototype.isInCurrentRuleReSyncSet=function(e){var r=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(r);return de.contains(n,e)},t.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),r=this.LA(1),n=2;;){var i=r.tokenType;if(de.contains(e,i))return i;r=this.LA(n),n++}},t.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return $.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(n)}},t.prototype.buildFullFollowKeyStack=function(){var e=this,r=this.RULE_STACK,n=this.RULE_OCCURRENCE_STACK;return de.map(r,function(i,a){return a===0?$.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(i),idxInCallingRule:n[a],inRule:e.shortRuleNameToFullName(r[a-1])}})},t.prototype.flattenFollowSet=function(){var e=this,r=de.map(this.buildFullFollowKeyStack(),function(n){return e.getFollowSetFromFollowKey(n)});return de.flatten(r)},t.prototype.getFollowSetFromFollowKey=function(e){if(e===$.EOF_FOLLOW_KEY)return[Ht.EOF];var r=e.ruleName+e.idxInCallingRule+Is.IN+e.inRule;return this.resyncFollows[r]},t.prototype.addToResyncTokens=function(e,r){return this.tokenMatcher(e,Ht.EOF)||r.push(e),r},t.prototype.reSyncTo=function(e){for(var r=[],n=this.LA(1);this.tokenMatcher(n,e)===!1;)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,r);return de.dropRight(r)},t.prototype.attemptInRepetitionRecovery=function(e,r,n,i,a,o,s){},t.prototype.getCurrentGrammarPath=function(e,r){var n=this.getHumanReadableRuleStack(),i=de.cloneArr(this.RULE_OCCURRENCE_STACK),a={ruleStack:n,occurrenceStack:i,lastTok:e,lastTokOccurrence:r};return a},t.prototype.getHumanReadableRuleStack=function(){var e=this;return de.map(this.RULE_STACK,function(r){return e.shortRuleNameToFullName(r)})},t}();$.Recoverable=Ps;function Vi(t,e,r,n,i,a,o){var s=this.getKeyForAutomaticLookahead(n,i),c=this.firstAfterRepMap[s];if(c===void 0){var f=this.getCurrRuleFullName(),p=this.getGAstProductions()[f],l=new a(p,i);c=l.startWalking(),this.firstAfterRepMap[s]=c}var m=c.token,v=c.occurrence,u=c.isEndOfRule;this.RULE_STACK.length===1&&u&&m===void 0&&(m=Ht.EOF,v=1),this.shouldInRepetitionRecoveryBeTried(m,v,o)&&this.tryInRepetitionRecovery(t,e,r,m)}$.attemptInRepetitionRecovery=Vi});var Yt=R(P=>{\"use strict\";Object.defineProperty(P,\"__esModule\",{value:!0});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(t,e,r){return r|e|t}P.getKeyForAutomaticLookahead=Ss;var ic=32-P.BITS_FOR_ALT_IDX});var zi=R(Xt=>{\"use strict\";Object.defineProperty(Xt,\"__esModule\",{value:!0});Xt.LooksAhead=void 0;var be=yt(),ge=k(),Ki=ce(),Fe=Yt(),Ve=vt(),xs=function(){function t(){}return t.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()?new Map:[],ge.isES2015MapSupported()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},t.prototype.preComputeLookaheadFunctions=function(e){var r=this;ge.forEach(e,function(n){r.TRACE_INIT(n.name+\" Rule Lookahead\",function(){var i=Ve.collectMethods(n),a=i.alternation,o=i.repetition,s=i.option,c=i.repetitionMandatory,f=i.repetitionMandatoryWithSeparator,p=i.repetitionWithSeparator;ge.forEach(a,function(l){var m=l.idx===0?\"\":l.idx;r.TRACE_INIT(\"\"+Ve.getProductionDslName(l)+m,function(){var v=be.buildLookaheadFuncForOr(l.idx,n,l.maxLookahead||r.maxLookahead,l.hasPredicates,r.dynamicTokensEnabled,r.lookAheadBuilderForAlternatives),u=Fe.getKeyForAutomaticLookahead(r.fullRuleNameToShort[n.name],Fe.OR_IDX,l.idx);r.setLaFuncCache(u,v)})}),ge.forEach(o,function(l){r.computeLookaheadFunc(n,l.idx,Fe.MANY_IDX,be.PROD_TYPE.REPETITION,l.maxLookahead,Ve.getProductionDslName(l))}),ge.forEach(s,function(l){r.computeLookaheadFunc(n,l.idx,Fe.OPTION_IDX,be.PROD_TYPE.OPTION,l.maxLookahead,Ve.getProductionDslName(l))}),ge.forEach(c,function(l){r.computeLookaheadFunc(n,l.idx,Fe.AT_LEAST_ONE_IDX,be.PROD_TYPE.REPETITION_MANDATORY,l.maxLookahead,Ve.getProductionDslName(l))}),ge.forEach(f,function(l){r.computeLookaheadFunc(n,l.idx,Fe.AT_LEAST_ONE_SEP_IDX,be.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,l.maxLookahead,Ve.getProductionDslName(l))}),ge.forEach(p,function(l){r.computeLookaheadFunc(n,l.idx,Fe.MANY_SEP_IDX,be.PROD_TYPE.REPETITION_WITH_SEPARATOR,l.maxLookahead,Ve.getProductionDslName(l))})})})},t.prototype.computeLookaheadFunc=function(e,r,n,i,a,o){var s=this;this.TRACE_INIT(\"\"+o+(r===0?\"\":r),function(){var c=be.buildLookaheadFuncForOptionalProd(r,e,a||s.maxLookahead,s.dynamicTokensEnabled,i,s.lookAheadBuilderForOptional),f=Fe.getKeyForAutomaticLookahead(s.fullRuleNameToShort[e.name],n,r);s.setLaFuncCache(f,c)})},t.prototype.lookAheadBuilderForOptional=function(e,r,n){return be.buildSingleAlternativeLookaheadFunction(e,r,n)},t.prototype.lookAheadBuilderForAlternatives=function(e,r,n,i){return be.buildAlternativesLookAheadFunc(e,r,n,i)},t.prototype.getKeyForAutomaticLookahead=function(e,r){var n=this.getLastExplicitRuleShortName();return Fe.getKeyForAutomaticLookahead(n,e,r)},t.prototype.getLaFuncFromCache=function(e){},t.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},t.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},t.prototype.setLaFuncCache=function(e,r){},t.prototype.setLaFuncCacheUsingMap=function(e,r){this.lookAheadFuncsCache.set(e,r)},t.prototype.setLaFuncUsingObj=function(e,r){this.lookAheadFuncsCache[e]=r},t}();Xt.LooksAhead=xs});var Hi=R(ke=>{\"use strict\";Object.defineProperty(ke,\"__esModule\",{value:!0});ke.addNoneTerminalToCst=ke.addTerminalToCst=ke.setNodeLocationFull=ke.setNodeLocationOnlyOffset=void 0;function Cs(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset<e.endOffset&&(t.endOffset=e.endOffset)}ke.setNodeLocationOnlyOffset=Cs;function Ls(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.startColumn=e.startColumn,t.startLine=e.startLine,t.endOffset=e.endOffset,t.endColumn=e.endColumn,t.endLine=e.endLine):t.endOffset<e.endOffset&&(t.endOffset=e.endOffset,t.endColumn=e.endColumn,t.endLine=e.endLine)}ke.setNodeLocationFull=Ls;function Ms(t,e,r){t.children[r]===void 0?t.children[r]=[e]:t.children[r].push(e)}ke.addTerminalToCst=Ms;function bs(t,e,r){t.children[e]===void 0?t.children[e]=[r]:t.children[e].push(r)}ke.addNoneTerminalToCst=bs});var Hr=R(Be=>{\"use strict\";Object.defineProperty(Be,\"__esModule\",{value:!0});Be.defineNameProp=Be.functionName=Be.classNameFromInstance=void 0;var Fs=k();function ws(t){return Yi(t.constructor)}Be.classNameFromInstance=ws;var Xi=\"name\";function Yi(t){var e=t.name;return e||\"anonymous\"}Be.functionName=Yi;function Ds(t,e){var r=Object.getOwnPropertyDescriptor(t,Xi);return Fs.isUndefined(r)||r.configurable?(Object.defineProperty(t,Xi,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}Be.defineNameProp=Ds});var ea=R(Y=>{\"use strict\";Object.defineProperty(Y,\"__esModule\",{value:!0});Y.validateRedundantMethods=Y.validateMissingCstMethods=Y.validateVisitor=Y.CstVisitorDefinitionError=Y.createBaseVisitorConstructorWithDefaults=Y.createBaseSemanticVisitorConstructor=Y.defaultVisit=void 0;var ve=k(),At=Hr();function $i(t,e){for(var r=ve.keys(t),n=r.length,i=0;i<n;i++)for(var a=r[i],o=t[a],s=o.length,c=0;c<s;c++){var f=o[c];f.tokenTypeIdx===void 0&&this[f.name](f.children,e)}}Y.defaultVisit=$i;function Us(t,e){var r=function(){};At.defineNameProp(r,t+\"BaseSemantics\");var n={visit:function(i,a){if(ve.isArray(i)&&(i=i[0]),!ve.isUndefined(i))return this[i.name](i.children,a)},validateVisitor:function(){var i=Zi(this,e);if(!ve.isEmpty(i)){var a=ve.map(i,function(o){return o.msg});throw Error(\"Errors Detected in CST Visitor <\"+At.functionName(this.constructor)+`>:\n\t`+(\"\"+a.join(`\n\n`).replace(/\\n/g,`\n\t`)))}}};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=e,r}Y.createBaseSemanticVisitorConstructor=Us;function Gs(t,e,r){var n=function(){};At.defineNameProp(n,t+\"BaseSemanticsWithDefaults\");var i=Object.create(r.prototype);return ve.forEach(e,function(a){i[a]=$i}),n.prototype=i,n.prototype.constructor=n,n}Y.createBaseVisitorConstructorWithDefaults=Gs;var Yr;(function(t){t[t.REDUNDANT_METHOD=0]=\"REDUNDANT_METHOD\",t[t.MISSING_METHOD=1]=\"MISSING_METHOD\"})(Yr=Y.CstVisitorDefinitionError||(Y.CstVisitorDefinitionError={}));function Zi(t,e){var r=Qi(t,e),n=Ji(t,e);return r.concat(n)}Y.validateVisitor=Zi;function Qi(t,e){var r=ve.map(e,function(n){if(!ve.isFunction(t[n]))return{msg:\"Missing visitor method: <\"+n+\"> on \"+At.functionName(t.constructor)+\" CST Visitor.\",type:Yr.MISSING_METHOD,methodName:n}});return ve.compact(r)}Y.validateMissingCstMethods=Qi;var Ws=[\"constructor\",\"visit\",\"validateVisitor\"];function Ji(t,e){var r=[];for(var n in t)ve.isFunction(t[n])&&!ve.contains(Ws,n)&&!ve.contains(e,n)&&r.push({msg:\"Redundant visitor method: <\"+n+\"> on \"+At.functionName(t.constructor)+` CST Visitor\nThere is no Grammar Rule corresponding to this method's name.\n`,type:Yr.REDUNDANT_METHOD,methodName:n});return r}Y.validateRedundantMethods=Ji});var ra=R($t=>{\"use strict\";Object.defineProperty($t,\"__esModule\",{value:!0});$t.TreeBuilder=void 0;var tt=Hi(),K=k(),ta=ea(),Bs=ce(),qs=function(){function t(){}return t.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 <nodeLocationTracking> config option: \"'+e.nodeLocationTracking+'\"')},t.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},t.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},t.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.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}},t.prototype.cstInvocationStateUpdate=function(e,r){var n={name:e,children:{}};this.setInitialNodeLocation(n),this.CST_STACK.push(n)},t.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},t.prototype.cstPostRuleFull=function(e){var r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?(n.endOffset=r.endOffset,n.endLine=r.endLine,n.endColumn=r.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)},t.prototype.cstPostRuleOnlyOffset=function(e){var r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?n.endOffset=r.endOffset:n.startOffset=NaN},t.prototype.cstPostTerminal=function(e,r){var n=this.CST_STACK[this.CST_STACK.length-1];tt.addTerminalToCst(n,r,e),this.setNodeLocationFromToken(n.location,r)},t.prototype.cstPostNonTerminal=function(e,r){var n=this.CST_STACK[this.CST_STACK.length-1];tt.addNoneTerminalToCst(n,r,e),this.setNodeLocationFromNode(n.location,e.location)},t.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},t.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},t.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},t.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},t.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},t}();$t.TreeBuilder=qs});var ia=R(Zt=>{\"use strict\";Object.defineProperty(Zt,\"__esModule\",{value:!0});Zt.LexerAdapter=void 0;var na=ce(),js=function(){function t(){}return t.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(t.prototype,\"input\",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error(\"Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.\");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),t.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):na.END_OF_FILE},t.prototype.LA=function(e){var r=this.currIdx+e;return r<0||this.tokVectorLength<=r?na.END_OF_FILE:this.tokVector[r]},t.prototype.consumeToken=function(){this.currIdx++},t.prototype.exportLexerState=function(){return this.currIdx},t.prototype.importLexerState=function(e){this.currIdx=e},t.prototype.resetLexerState=function(){this.currIdx=-1},t.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},t.prototype.getLexerPosition=function(){return this.exportLexerState()},t}();Zt.LexerAdapter=js});var oa=R(Qt=>{\"use strict\";Object.defineProperty(Qt,\"__esModule\",{value:!0});Qt.RecognizerApi=void 0;var aa=k(),Vs=et(),Xr=ce(),Ks=mt(),zs=jr(),Hs=ne(),Ys=function(){function t(){}return t.prototype.ACTION=function(e){return e.call(this)},t.prototype.consume=function(e,r,n){return this.consumeInternal(r,e,n)},t.prototype.subrule=function(e,r,n){return this.subruleInternal(r,e,n)},t.prototype.option=function(e,r){return this.optionInternal(r,e)},t.prototype.or=function(e,r){return this.orInternal(r,e)},t.prototype.many=function(e,r){return this.manyInternal(e,r)},t.prototype.atLeastOne=function(e,r){return this.atLeastOneInternal(e,r)},t.prototype.CONSUME=function(e,r){return this.consumeInternal(e,0,r)},t.prototype.CONSUME1=function(e,r){return this.consumeInternal(e,1,r)},t.prototype.CONSUME2=function(e,r){return this.consumeInternal(e,2,r)},t.prototype.CONSUME3=function(e,r){return this.consumeInternal(e,3,r)},t.prototype.CONSUME4=function(e,r){return this.consumeInternal(e,4,r)},t.prototype.CONSUME5=function(e,r){return this.consumeInternal(e,5,r)},t.prototype.CONSUME6=function(e,r){return this.consumeInternal(e,6,r)},t.prototype.CONSUME7=function(e,r){return this.consumeInternal(e,7,r)},t.prototype.CONSUME8=function(e,r){return this.consumeInternal(e,8,r)},t.prototype.CONSUME9=function(e,r){return this.consumeInternal(e,9,r)},t.prototype.SUBRULE=function(e,r){return this.subruleInternal(e,0,r)},t.prototype.SUBRULE1=function(e,r){return this.subruleInternal(e,1,r)},t.prototype.SUBRULE2=function(e,r){return this.subruleInternal(e,2,r)},t.prototype.SUBRULE3=function(e,r){return this.subruleInternal(e,3,r)},t.prototype.SUBRULE4=function(e,r){return this.subruleInternal(e,4,r)},t.prototype.SUBRULE5=function(e,r){return this.subruleInternal(e,5,r)},t.prototype.SUBRULE6=function(e,r){return this.subruleInternal(e,6,r)},t.prototype.SUBRULE7=function(e,r){return this.subruleInternal(e,7,r)},t.prototype.SUBRULE8=function(e,r){return this.subruleInternal(e,8,r)},t.prototype.SUBRULE9=function(e,r){return this.subruleInternal(e,9,r)},t.prototype.OPTION=function(e){return this.optionInternal(e,0)},t.prototype.OPTION1=function(e){return this.optionInternal(e,1)},t.prototype.OPTION2=function(e){return this.optionInternal(e,2)},t.prototype.OPTION3=function(e){return this.optionInternal(e,3)},t.prototype.OPTION4=function(e){return this.optionInternal(e,4)},t.prototype.OPTION5=function(e){return this.optionInternal(e,5)},t.prototype.OPTION6=function(e){return this.optionInternal(e,6)},t.prototype.OPTION7=function(e){return this.optionInternal(e,7)},t.prototype.OPTION8=function(e){return this.optionInternal(e,8)},t.prototype.OPTION9=function(e){return this.optionInternal(e,9)},t.prototype.OR=function(e){return this.orInternal(e,0)},t.prototype.OR1=function(e){return this.orInternal(e,1)},t.prototype.OR2=function(e){return this.orInternal(e,2)},t.prototype.OR3=function(e){return this.orInternal(e,3)},t.prototype.OR4=function(e){return this.orInternal(e,4)},t.prototype.OR5=function(e){return this.orInternal(e,5)},t.prototype.OR6=function(e){return this.orInternal(e,6)},t.prototype.OR7=function(e){return this.orInternal(e,7)},t.prototype.OR8=function(e){return this.orInternal(e,8)},t.prototype.OR9=function(e){return this.orInternal(e,9)},t.prototype.MANY=function(e){this.manyInternal(0,e)},t.prototype.MANY1=function(e){this.manyInternal(1,e)},t.prototype.MANY2=function(e){this.manyInternal(2,e)},t.prototype.MANY3=function(e){this.manyInternal(3,e)},t.prototype.MANY4=function(e){this.manyInternal(4,e)},t.prototype.MANY5=function(e){this.manyInternal(5,e)},t.prototype.MANY6=function(e){this.manyInternal(6,e)},t.prototype.MANY7=function(e){this.manyInternal(7,e)},t.prototype.MANY8=function(e){this.manyInternal(8,e)},t.prototype.MANY9=function(e){this.manyInternal(9,e)},t.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},t.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},t.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},t.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},t.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},t.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},t.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},t.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},t.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},t.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},t.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},t.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},t.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},t.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},t.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},t.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},t.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},t.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},t.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},t.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},t.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},t.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},t.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},t.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},t.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},t.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},t.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},t.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},t.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},t.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},t.prototype.RULE=function(e,r,n){if(n===void 0&&(n=Xr.DEFAULT_RULE_CONFIG),aa.contains(this.definedRulesNames,e)){var i=Ks.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),a={message:i,type:Xr.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(a)}this.definedRulesNames.push(e);var o=this.defineRule(e,r,n);return this[e]=o,o},t.prototype.OVERRIDE_RULE=function(e,r,n){n===void 0&&(n=Xr.DEFAULT_RULE_CONFIG);var i=[];i=i.concat(zs.validateRuleIsOverridden(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(i);var a=this.defineRule(e,r,n);return this[e]=a,a},t.prototype.BACKTRACK=function(e,r){return function(){this.isBackTrackingStack.push(1);var n=this.saveRecogState();try{return e.apply(this,r),!0}catch(i){if(Vs.isRecognitionException(i))return!1;throw i}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}},t.prototype.getGAstProductions=function(){return this.gastProductionsCache},t.prototype.getSerializedGastProductions=function(){return Hs.serializeGrammar(aa.values(this.gastProductionsCache))},t}();Qt.RecognizerApi=Ys});var la=R(Jt=>{\"use strict\";Object.defineProperty(Jt,\"__esModule\",{value:!0});Jt.RecognizerEngine=void 0;var q=k(),le=Yt(),er=et(),sa=yt(),rt=Tt(),ua=ce(),Xs=zr(),ca=Ue(),Rt=Xe(),$s=Hr(),Zs=function(){function t(){}return t.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={},q.has(r,\"serializedGrammar\"))throw Error(`The Parser's configuration can no longer contain a <serializedGrammar> property.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\n\tFor Further details.`);if(q.isArray(e)){if(q.isEmpty(e))throw Error(`A Token Vocabulary cannot be empty.\n\tNote that the first argument for the parser constructor\n\tis 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.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\n\tFor Further details.`)}if(q.isArray(e))this.tokensMap=q.reduce(e,function(o,s){return o[s.name]=s,o},{});else if(q.has(e,\"modes\")&&q.every(q.flatten(q.values(e.modes)),Rt.isTokenType)){var n=q.flatten(q.values(e.modes)),i=q.uniq(n);this.tokensMap=q.reduce(i,function(o,s){return o[s.name]=s,o},{})}else if(q.isObject(e))this.tokensMap=q.cloneObj(e);else throw new Error(\"<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition\");this.tokensMap.EOF=ca.EOF;var a=q.every(q.values(e),function(o){return q.isEmpty(o.categoryMatches)});this.tokenMatcher=a?Rt.tokenStructuredMatcherNoCategories:Rt.tokenStructuredMatcher,Rt.augmentTokenTypes(q.values(this.tokensMap))},t.prototype.defineRule=function(e,r,n){if(this.selfAnalysisDone)throw Error(\"Grammar rule <\"+e+`> may not be defined after the 'performSelfAnalysis' method has been called'\nMake sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var i=q.has(n,\"resyncEnabled\")?n.resyncEnabled:ua.DEFAULT_RULE_CONFIG.resyncEnabled,a=q.has(n,\"recoveryValueFunc\")?n.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(p){try{if(this.outputCst===!0){r.apply(this,p);var l=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(l),l}else return r.apply(this,p)}catch(m){return this.invokeRuleCatch(m,i,a)}finally{this.ruleFinallyStateUpdate()}}var c=function(p,l){return p===void 0&&(p=0),this.ruleInvocationStateUpdate(o,e,p),s.call(this,l)},f=\"ruleName\";return c[f]=e,c.originalGrammarAction=r,c},t.prototype.invokeRuleCatch=function(e,r,n){var i=this.RULE_STACK.length===1,a=r&&!this.isBackTracking()&&this.recoveryEnabled;if(er.isRecognitionException(e)){var o=e;if(a){var s=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(s))if(o.resyncedTokens=this.reSyncTo(s),this.outputCst){var c=this.CST_STACK[this.CST_STACK.length-1];return c.recoveredNode=!0,c}else return n();else{if(this.outputCst){var c=this.CST_STACK[this.CST_STACK.length-1];c.recoveredNode=!0,o.partialCstResult=c}throw o}}else{if(i)return this.moveToTerminatedState(),n();throw o}}else throw e},t.prototype.optionInternal=function(e,r){var n=this.getKeyForAutomaticLookahead(le.OPTION_IDX,r);return this.optionInternalLogic(e,r,n)},t.prototype.optionInternalLogic=function(e,r,n){var i=this,a=this.getLaFuncFromCache(n),o,s;if(e.DEF!==void 0){if(o=e.DEF,s=e.GATE,s!==void 0){var c=a;a=function(){return s.call(i)&&c.call(i)}}}else o=e;if(a.call(this)===!0)return o.call(this)},t.prototype.atLeastOneInternal=function(e,r){var n=this.getKeyForAutomaticLookahead(le.AT_LEAST_ONE_IDX,e);return this.atLeastOneInternalLogic(e,r,n)},t.prototype.atLeastOneInternalLogic=function(e,r,n){var i=this,a=this.getLaFuncFromCache(n),o,s;if(r.DEF!==void 0){if(o=r.DEF,s=r.GATE,s!==void 0){var c=a;a=function(){return s.call(i)&&c.call(i)}}}else o=r;if(a.call(this)===!0)for(var f=this.doSingleRepetition(o);a.call(this)===!0&&f===!0;)f=this.doSingleRepetition(o);else throw this.raiseEarlyExitException(e,sa.PROD_TYPE.REPETITION_MANDATORY,r.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,r],a,le.AT_LEAST_ONE_IDX,e,rt.NextTerminalAfterAtLeastOneWalker)},t.prototype.atLeastOneSepFirstInternal=function(e,r){var n=this.getKeyForAutomaticLookahead(le.AT_LEAST_ONE_SEP_IDX,e);this.atLeastOneSepFirstInternalLogic(e,r,n)},t.prototype.atLeastOneSepFirstInternalLogic=function(e,r,n){var i=this,a=r.DEF,o=r.SEP,s=this.getLaFuncFromCache(n);if(s.call(this)===!0){a.call(this);for(var c=function(){return i.tokenMatcher(i.LA(1),o)};this.tokenMatcher(this.LA(1),o)===!0;)this.CONSUME(o),a.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,o,c,a,rt.NextTerminalAfterAtLeastOneSepWalker],c,le.AT_LEAST_ONE_SEP_IDX,e,rt.NextTerminalAfterAtLeastOneSepWalker)}else throw this.raiseEarlyExitException(e,sa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,r.ERR_MSG)},t.prototype.manyInternal=function(e,r){var n=this.getKeyForAutomaticLookahead(le.MANY_IDX,e);return this.manyInternalLogic(e,r,n)},t.prototype.manyInternalLogic=function(e,r,n){var i=this,a=this.getLaFuncFromCache(n),o,s;if(r.DEF!==void 0){if(o=r.DEF,s=r.GATE,s!==void 0){var c=a;a=function(){return s.call(i)&&c.call(i)}}}else o=r;for(var f=!0;a.call(this)===!0&&f===!0;)f=this.doSingleRepetition(o);this.attemptInRepetitionRecovery(this.manyInternal,[e,r],a,le.MANY_IDX,e,rt.NextTerminalAfterManyWalker,f)},t.prototype.manySepFirstInternal=function(e,r){var n=this.getKeyForAutomaticLookahead(le.MANY_SEP_IDX,e);this.manySepFirstInternalLogic(e,r,n)},t.prototype.manySepFirstInternalLogic=function(e,r,n){var i=this,a=r.DEF,o=r.SEP,s=this.getLaFuncFromCache(n);if(s.call(this)===!0){a.call(this);for(var c=function(){return i.tokenMatcher(i.LA(1),o)};this.tokenMatcher(this.LA(1),o)===!0;)this.CONSUME(o),a.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,o,c,a,rt.NextTerminalAfterManySepWalker],c,le.MANY_SEP_IDX,e,rt.NextTerminalAfterManySepWalker)}},t.prototype.repetitionSepSecondInternal=function(e,r,n,i,a){for(;n();)this.CONSUME(r),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,r,n,i,a],n,le.AT_LEAST_ONE_SEP_IDX,e,a)},t.prototype.doSingleRepetition=function(e){var r=this.getLexerPosition();e.call(this);var n=this.getLexerPosition();return n>r},t.prototype.orInternal=function(e,r){var n=this.getKeyForAutomaticLookahead(le.OR_IDX,r),i=q.isArray(e)?e:e.DEF,a=this.getLaFuncFromCache(n),o=a.call(this,i);if(o!==void 0){var s=i[o];return s.ALT.call(this)}this.raiseNoAltException(r,e.ERR_MSG)},t.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new er.NotAllInputParsedException(r,e))}},t.prototype.subruleInternal=function(e,r,n){var i;try{var a=n!==void 0?n.ARGS:void 0;return i=e.call(this,r,a),this.cstPostNonTerminal(i,n!==void 0&&n.LABEL!==void 0?n.LABEL:e.ruleName),i}catch(o){this.subruleInternalError(o,n,e.ruleName)}},t.prototype.subruleInternalError=function(e,r,n){throw er.isRecognitionException(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:n),delete e.partialCstResult),e},t.prototype.consumeInternal=function(e,r,n){var i;try{var a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),i=a):this.consumeInternalError(e,a,n)}catch(o){i=this.consumeInternalRecovery(e,r,o)}return this.cstPostTerminal(n!==void 0&&n.LABEL!==void 0?n.LABEL:e.name,i),i},t.prototype.consumeInternalError=function(e,r,n){var i,a=this.LA(0);throw n!==void 0&&n.ERR_MSG?i=n.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new er.MismatchedTokenException(i,r,a))},t.prototype.consumeInternalRecovery=function(e,r,n){if(this.recoveryEnabled&&n.name===\"MismatchedTokenException\"&&!this.isBackTracking()){var i=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,i)}catch(a){throw a.name===Xs.IN_RULE_RECOVERY_EXCEPTION?n:a}}else throw n},t.prototype.saveRecogState=function(){var e=this.errors,r=q.cloneArr(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}},t.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},t.prototype.ruleInvocationStateUpdate=function(e,r,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r,e)},t.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},t.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},t.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},t.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),ca.EOF)},t.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},t}();Jt.RecognizerEngine=Zs});var pa=R(tr=>{\"use strict\";Object.defineProperty(tr,\"__esModule\",{value:!0});tr.ErrorHandler=void 0;var $r=et(),Zr=k(),fa=yt(),Qs=ce(),Js=function(){function t(){}return t.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=Zr.has(e,\"errorMessageProvider\")?e.errorMessageProvider:Qs.DEFAULT_PARSER_CONFIG.errorMessageProvider},t.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(t.prototype,\"errors\",{get:function(){return Zr.cloneArr(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),t.prototype.raiseEarlyExitException=function(e,r,n){for(var i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],o=fa.getLookaheadPathsForOptionalProd(e,a,r,this.maxLookahead),s=o[0],c=[],f=1;f<=this.maxLookahead;f++)c.push(this.LA(f));var p=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:s,actual:c,previous:this.LA(0),customUserDescription:n,ruleName:i});throw this.SAVE_ERROR(new $r.EarlyExitException(p,this.LA(1),this.LA(0)))},t.prototype.raiseNoAltException=function(e,r){for(var n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],a=fa.getLookaheadPathsForOr(e,i,this.maxLookahead),o=[],s=1;s<=this.maxLookahead;s++)o.push(this.LA(s));var c=this.LA(0),f=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:o,previous:c,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new $r.NoViableAltException(f,this.LA(1),c))},t}();tr.ErrorHandler=Js});var va=R(rr=>{\"use strict\";Object.defineProperty(rr,\"__esModule\",{value:!0});rr.ContentAssist=void 0;var ha=Tt(),da=k(),eu=function(){function t(){}return t.prototype.initContentAssist=function(){},t.prototype.computeContentAssist=function(e,r){var n=this.gastProductionsCache[e];if(da.isUndefined(n))throw Error(\"Rule ->\"+e+\"<- does not exist in this grammar.\");return ha.nextPossibleTokensAfter([n],r,this.tokenMatcher,this.maxLookahead)},t.prototype.getNextPossibleTokenTypes=function(e){var r=da.first(e.ruleStack),n=this.getGAstProductions(),i=n[r],a=new ha.NextAfterTokenWalker(i,e).startWalking();return a},t}();rr.ContentAssist=eu});var Ra=R(nr=>{\"use strict\";Object.defineProperty(nr,\"__esModule\",{value:!0});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=!0,ya=Math.pow(2,nu.BITS_FOR_OCCURRENCE_IDX)-1,_a=Ea.createToken({name:\"RECORDING_PHASE_TOKEN\",pattern:tu.Lexer.NA});ma.augmentTokenTypes([_a]);var ga=Ea.createTokenInstance(_a,`This IToken indicates the Parser is in Recording Phase\n\tSee: 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\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},ou=function(){function t(){}return t.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},t.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT(\"Enable Recording\",function(){for(var r=function(i){var a=i>0?i:\"\";e[\"CONSUME\"+a]=function(o,s){return this.consumeInternalRecord(o,i,s)},e[\"SUBRULE\"+a]=function(o,s){return this.subruleInternalRecord(o,i,s)},e[\"OPTION\"+a]=function(o){return this.optionInternalRecord(o,i)},e[\"OR\"+a]=function(o){return this.orInternalRecord(o,i)},e[\"MANY\"+a]=function(o){this.manyInternalRecord(i,o)},e[\"MANY_SEP\"+a]=function(o){this.manySepFirstInternalRecord(i,o)},e[\"AT_LEAST_ONE\"+a]=function(o){this.atLeastOneInternalRecord(i,o)},e[\"AT_LEAST_ONE_SEP\"+a]=function(o){this.atLeastOneSepFirstInternalRecord(i,o)}},n=0;n<10;n++)r(n);e.consume=function(i,a,o){return this.consumeInternalRecord(a,i,o)},e.subrule=function(i,a,o){return this.subruleInternalRecord(a,i,o)},e.option=function(i,a){return this.optionInternalRecord(a,i)},e.or=function(i,a){return this.orInternalRecord(a,i)},e.many=function(i,a){this.manyInternalRecord(i,a)},e.atLeastOne=function(i,a){this.atLeastOneInternalRecord(i,a)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},t.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT(\"Deleting Recording methods\",function(){for(var r=0;r<10;r++){var n=r>0?r:\"\";delete e[\"CONSUME\"+n],delete e[\"SUBRULE\"+n],delete e[\"OPTION\"+n],delete e[\"OR\"+n],delete e[\"MANY\"+n],delete e[\"MANY_SEP\"+n],delete e[\"AT_LEAST_ONE\"+n],delete e[\"AT_LEAST_ONE_SEP\"+n]}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})},t.prototype.ACTION_RECORD=function(e){},t.prototype.BACKTRACK_RECORD=function(e,r){return function(){return!0}},t.prototype.LA_RECORD=function(e){return ru.END_OF_FILE},t.prototype.topLevelRuleRecord=function(e,r){try{var n=new Pe.Rule({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),r.call(this),this.recordingProdStack.pop(),n}catch(i){if(i.KNOWN_RECORDER_ERROR!==!0)try{i.message=i.message+`\n\t This error was thrown during the \"grammar recording phase\" For more info see:\n\thttps://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch(a){throw i}throw i}},t.prototype.optionInternalRecord=function(e,r){return Ot.call(this,Pe.Option,e,r)},t.prototype.atLeastOneInternalRecord=function(e,r){Ot.call(this,Pe.RepetitionMandatory,r,e)},t.prototype.atLeastOneSepFirstInternalRecord=function(e,r){Ot.call(this,Pe.RepetitionMandatoryWithSeparator,r,e,Ta)},t.prototype.manyInternalRecord=function(e,r){Ot.call(this,Pe.Repetition,r,e)},t.prototype.manySepFirstInternalRecord=function(e,r){Ot.call(this,Pe.RepetitionWithSeparator,r,e,Ta)},t.prototype.orInternalRecord=function(e,r){return au.call(this,e,r)},t.prototype.subruleInternalRecord=function(e,r,n){if(ar(r),!e||oe.has(e,\"ruleName\")===!1){var i=new Error(\"<SUBRULE\"+Aa(r)+\"> argument is invalid\"+(\" expecting a Parser method reference but got: <\"+JSON.stringify(e)+\">\")+(`\n inside top level rule: <`+this.recordingProdStack[0].name+\">\"));throw i.KNOWN_RECORDER_ERROR=!0,i}var a=oe.peek(this.recordingProdStack),o=e.ruleName,s=new Pe.NonTerminal({idx:r,nonTerminalName:o,referencedRule:void 0});return a.definition.push(s),this.outputCst?iu:ir},t.prototype.consumeInternalRecord=function(e,r,n){if(ar(r),!ma.hasShortKeyProperty(e)){var i=new Error(\"<CONSUME\"+Aa(r)+\"> argument is invalid\"+(\" expecting a TokenType reference but got: <\"+JSON.stringify(e)+\">\")+(`\n inside top level rule: <`+this.recordingProdStack[0].name+\">\"));throw i.KNOWN_RECORDER_ERROR=!0,i}var a=oe.peek(this.recordingProdStack),o=new Pe.Terminal({idx:r,terminalType:e});return a.definition.push(o),ga},t}();nr.GastRecorder=ou;function Ot(t,e,r,n){n===void 0&&(n=!1),ar(r);var i=oe.peek(this.recordingProdStack),a=oe.isFunction(e)?e:e.DEF,o=new t({definition:[],idx:r});return n&&(o.separator=e.SEP),oe.has(e,\"MAX_LOOKAHEAD\")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),a.call(this),i.definition.push(o),this.recordingProdStack.pop(),ir}function au(t,e){var r=this;ar(e);var n=oe.peek(this.recordingProdStack),i=oe.isArray(t)===!1,a=i===!1?t:t.DEF,o=new Pe.Alternation({definition:[],idx:e,ignoreAmbiguities:i&&t.IGNORE_AMBIGUITIES===!0});oe.has(t,\"MAX_LOOKAHEAD\")&&(o.maxLookahead=t.MAX_LOOKAHEAD);var s=oe.some(a,function(c){return oe.isFunction(c.GATE)});return o.hasPredicates=s,n.definition.push(o),oe.forEach(a,function(c){var f=new Pe.Alternative({definition:[]});o.definition.push(f),oe.has(c,\"IGNORE_AMBIGUITIES\")?f.ignoreAmbiguities=c.IGNORE_AMBIGUITIES:oe.has(c,\"GATE\")&&(f.ignoreAmbiguities=!0),r.recordingProdStack.push(f),c.ALT.call(r),r.recordingProdStack.pop()}),ir}function Aa(t){return t===0?\"\":\"\"+t}function ar(t){if(t<0||t>ya){var e=new Error(\"Invalid DSL Method idx value: <\"+t+`>\n\t`+(\"Idx value must be a none negative value smaller than \"+(ya+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var Na=R(or=>{\"use strict\";Object.defineProperty(or,\"__esModule\",{value:!0});or.PerformanceTracer=void 0;var Oa=k(),su=ce(),uu=function(){function t(){}return t.prototype.initPerformanceTracer=function(e){if(Oa.has(e,\"traceInitPerf\")){var r=e.traceInitPerf,n=typeof r==\"number\";this.traceInitMaxIdent=n?r:Infinity,this.traceInitPerf=n?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=su.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},t.prototype.TRACE_INIT=function(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;var n=new Array(this.traceInitIndent+1).join(\"\t\");this.traceInitIndent<this.traceInitMaxIdent&&console.log(n+\"--> <\"+e+\">\");var i=Oa.timer(r),a=i.time,o=i.value,s=a>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(n+\"<-- <\"+e+\"> time: \"+a+\"ms\"),this.traceInitIndent--,o}else return r()},t}();or.PerformanceTracer=uu});var Ia=R(sr=>{\"use strict\";Object.defineProperty(sr,\"__esModule\",{value:!0});sr.applyMixins=void 0;function cu(t,e){e.forEach(function(r){var n=r.prototype;Object.getOwnPropertyNames(n).forEach(function(i){if(i!==\"constructor\"){var a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(t.prototype,i,a):t.prototype[i]=r.prototype[i]}})})}sr.applyMixins=cu});var ce=R(U=>{\"use strict\";var ka=U&&U.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(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\");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(U,\"__esModule\",{value:!0});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=zi(),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:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Sa.defaultParserErrorProvider,nodeLocationTracking:\"none\",traceInitPerf:!1,skipValidations:!1});U.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var Au;(function(t){t[t.INVALID_RULE_NAME=0]=\"INVALID_RULE_NAME\",t[t.DUPLICATE_RULE_NAME=1]=\"DUPLICATE_RULE_NAME\",t[t.INVALID_RULE_OVERRIDE=2]=\"INVALID_RULE_OVERRIDE\",t[t.DUPLICATE_PRODUCTIONS=3]=\"DUPLICATE_PRODUCTIONS\",t[t.UNRESOLVED_SUBRULE_REF=4]=\"UNRESOLVED_SUBRULE_REF\",t[t.LEFT_RECURSION=5]=\"LEFT_RECURSION\",t[t.NONE_LAST_EMPTY_ALT=6]=\"NONE_LAST_EMPTY_ALT\",t[t.AMBIGUOUS_ALTS=7]=\"AMBIGUOUS_ALTS\",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]=\"CONFLICT_TOKENS_RULES_NAMESPACE\",t[t.INVALID_TOKEN_NAME=9]=\"INVALID_TOKEN_NAME\",t[t.NO_NON_EMPTY_LOOKAHEAD=10]=\"NO_NON_EMPTY_LOOKAHEAD\",t[t.AMBIGUOUS_PREFIX_ALTS=11]=\"AMBIGUOUS_PREFIX_ALTS\",t[t.TOO_MANY_ALTS=12]=\"TOO_MANY_ALTS\"})(Au=U.ParserDefinitionErrorType||(U.ParserDefinitionErrorType={}));function Ru(t){return t===void 0&&(t=void 0),function(){return t}}U.EMPTY_ALT=Ru;var ur=function(){function t(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;var n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(e,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),ee.has(r,\"ignoredIssues\"))throw new Error(`The <ignoredIssues> IParserConfig property has been deprecated.\n\tPlease use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.\n\tSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\n\tFor further details.`);this.skipValidations=ee.has(r,\"skipValidations\")?r.skipValidations:U.DEFAULT_PARSER_CONFIG.skipValidations}return t.performSelfAnalysis=function(e){throw Error(\"The **static** `performSelfAnalysis` method has been deprecated.\t\\nUse the **instance** method with the same name instead.\")},t.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT(\"performSelfAnalysis\",function(){var r;e.selfAnalysisDone=!0;var n=e.className;e.TRACE_INIT(\"toFastProps\",function(){ee.toFastProperties(e)}),e.TRACE_INIT(\"Grammar Recording\",function(){try{e.enableRecording(),ee.forEach(e.definedRulesNames,function(a){var o=e[a],s=o.originalGrammarAction,c=void 0;e.TRACE_INIT(a+\" Rule\",function(){c=e.topLevelRuleRecord(a,s)}),e.gastProductionsCache[a]=c})}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===!1){var a=xa.validateGrammar({rules:ee.values(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:ee.values(e.tokensMap),errMsgProvider:Sa.defaultGrammarValidatorErrorProvider,grammarName:n});e.definitionErrors=e.definitionErrors.concat(a)}}),ee.isEmpty(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT(\"computeAllProdsFollows\",function(){var a=lu.computeAllProdsFollows(ee.values(e.gastProductionsCache));e.resyncFollows=a}),e.TRACE_INIT(\"ComputeLookaheadFunctions\",function(){e.preComputeLookaheadFunctions(ee.values(e.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!ee.isEmpty(e.definitionErrors))throw r=ee.map(e.definitionErrors,function(a){return a.message}),new Error(`Parser Definition Errors detected:\n `+r.join(`\n-------------------------------\n`))})},t.DEFER_DEFINITION_ERRORS_HANDLING=!1,t}();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(t){ka(e,t);function e(r,n){n===void 0&&(n=U.DEFAULT_PARSER_CONFIG);var i=this,a=ee.cloneObj(n);return a.outputCst=!0,i=t.call(this,r,a)||this,i}return e}(ur);U.CstParser=Ou;var Nu=function(t){ka(e,t);function e(r,n){n===void 0&&(n=U.DEFAULT_PARSER_CONFIG);var i=this,a=ee.cloneObj(n);return a.outputCst=!1,i=t.call(this,r,a)||this,i}return e}(ur);U.EmbeddedActionsParser=Nu});var La=R(cr=>{\"use strict\";Object.defineProperty(cr,\"__esModule\",{value:!0});cr.createSyntaxDiagramsCode=void 0;var Ca=Er();function Iu(t,e){var r=e===void 0?{}:e,n=r.resourceBase,i=n===void 0?\"https://unpkg.com/chevrotain@\"+Ca.VERSION+\"/diagrams/\":n,a=r.css,o=a===void 0?\"https://unpkg.com/chevrotain@\"+Ca.VERSION+\"/diagrams/diagrams.css\":a,s=`\n<!-- This is a generated file -->\n<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<style>\n body {\n background-color: hsl(30, 20%, 95%)\n }\n</style>\n\n`,c=`\n<link rel='stylesheet' href='`+o+`'>\n`,f=`\n<script src='`+i+`vendor/railroad-diagrams.js'></script>\n<script src='`+i+`src/diagrams_builder.js'></script>\n<script src='`+i+`src/diagrams_behavior.js'></script>\n<script src='`+i+`src/main.js'></script>\n`,p=`\n<div id=\"diagrams\" align=\"center\"></div>\n`,l=`\n<script>\n window.serializedGrammar = `+JSON.stringify(t,null,\" \")+`;\n</script>\n`,m=`\n<script>\n var diagramsDiv = document.getElementById(\"diagrams\");\n main.drawDiagramsFromSerializedGrammar(serializedGrammar, diagramsDiv);\n</script>\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\tColorManagement,\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/**\n * A loader for the VRML format.\n *\n * ```js\n * const loader = new VRMLLoader();\n * const object = await loader.loadAsync( 'models/vrml/house.wrl' );\n * scene.add( object );\n * ```\n *\n * @augments Loader\n * @three_import import { VRMLLoader } from 'three/addons/loaders/VRMLLoader.js';\n */\nclass VRMLLoader extends Loader {\n\n\t/**\n\t * Constructs a new VRML loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded VRML asset\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Scene)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\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\t/**\n\t * Parses the given VRML data and returns the resulting scene.\n\t *\n\t * @param {string} data - The raw VRML data as a string.\n\t * @param {string} path - The URL base path.\n\t * @return {Scene} The parsed scene.\n\t */\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 dynamically 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 ], SRGBColorSpace );\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().setRGB( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ], SRGBColorSpace );\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().setRGB( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ], SRGBColorSpace );\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().setRGB( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ], SRGBColorSpace );\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 primitive)\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 primitive\n\t\t\t\t\t\tconst expandedLineColors = expandLineData( flattenLineColors, coordIndex ); // compute colors for each line segment (rendering primitive)\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 primitive)\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 definitions 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\n\t\t\t\tColorManagement.colorSpaceToWorking( color, SRGBColorSpace );\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 interpolating 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 );\n\n\t\t\t\tColorManagement.colorSpaceToWorking( color, SRGBColorSpace );\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\tAnimationClip,\n\tBone,\n\tFileLoader,\n\tLoader,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tSkeleton,\n\tVector3,\n\tVectorKeyframeTrack\n} from 'three';\n\n/**\n * Three.jsのBVHLoader.jsに少し手を加えてXscale,Yscale,Zscaleというチャンネルを\n * 含んだBVHファイルを読み込むことができるものにした。BVHの規格にはXscale,Yscale,\n * Zscaleはないわけだけど、使えると表現力が上るということでAcerola3Dで採用している。\n * \n * A loader for the BVH format.\n *\n * Imports BVH files and outputs a single {@link Skeleton} and {@link AnimationClip}.\n * The loader only supports BVH files containing a single root right now.\n *\n * ```js\n * const loader = new BVHLoader2();\n * const result = await loader.loadAsync( 'models/bvh/pirouette.bvh' );\n *\n * // visualize skeleton\n * const skeletonHelper = new THREE.SkeletonHelper( result.skeleton.bones[ 0 ] );\n * scene.add( result.skeleton.bones[ 0 ] );\n * scene.add( skeletonHelper );\n *\n * // play animation clip\n * mixer = new THREE.AnimationMixer( result.skeleton.bones[ 0 ] );\n * mixer.clipAction( result.clip ).play();\n * ```\n *\n * @augments Loader\n * @three_import import { BVHLoader2 } from 'three/addons/loaders/BVHLoader2.js';\n */\nclass BVHLoader2 extends Loader {\n\n\t/**\n\t * Constructs a new BVH loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\t/**\n\t\t * Whether to animate bone positions or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.animateBonePositions = true;\n\n\t\t/**\n\t\t * Whether to animate bone rotations or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.animateBoneRotations = true;\n\n\t\t/**\n\t\t * Whether to animate bone scales or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.animateBoneScales = true;\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded BVH asset\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function({skeleton:Skeleton,clip:AnimationClip})} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\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( 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\t/**\n\t * Parses the given BVH data and returns the resulting data.\n\t *\n\t * @param {string} text - The raw BVH data as a string.\n\t * @return {{skeleton:Skeleton,clip:AnimationClip}} An object representing the parsed asset.\n\t */\n\tparse( text ) {\n\n\t\t// reads a string array (lines) from a BVH file\n\t\t// and outputs a skeleton structure including motion data\n\n\t\t// returns thee root node:\n\t\t// { name: '', channels: [], children: [] }\n\t\tfunction readBvh( lines ) {\n\n\t\t\t// read model structure\n\n\t\t\tif ( nextLine( lines ) !== 'HIERARCHY' ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader2: HIERARCHY expected.' );\n\n\t\t\t}\n\n\t\t\tconst list = []; // collects flat array of all bones\n\t\t\tconst root = readNode( lines, nextLine( lines ), list );\n\n\t\t\t// read motion data\n\n\t\t\tif ( nextLine( lines ) !== 'MOTION' ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader2: MOTION expected.' );\n\n\t\t\t}\n\n\t\t\t// number of frames\n\n\t\t\tlet tokens = nextLine( lines ).split( /[\\s]+/ );\n\t\t\tconst numFrames = parseInt( tokens[ 1 ] );\n\n\t\t\tif ( isNaN( numFrames ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader2: Failed to read number of frames.' );\n\n\t\t\t}\n\n\t\t\t// frame time\n\n\t\t\ttokens = nextLine( lines ).split( /[\\s]+/ );\n\t\t\tconst frameTime = parseFloat( tokens[ 2 ] );\n\n\t\t\tif ( isNaN( frameTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader2: Failed to read frame time.' );\n\n\t\t\t}\n\n\t\t\t// read frame data line by line\n\n\t\t\tfor ( let i = 0; i < numFrames; i ++ ) {\n\n\t\t\t\ttokens = nextLine( lines ).split( /[\\s]+/ );\n\t\t\t\treadFrameData( tokens, i * frameTime, root );\n\n\t\t\t}\n\n\t\t\treturn list;\n\n\t\t}\n\n\t\t/*\n\t\t\tRecursively reads data from a single frame into the bone hierarchy.\n\t\t\tThe passed bone hierarchy has to be structured in the same order as the BVH file.\n\t\t\tkeyframe data is stored in bone.frames.\n\n\t\t\t- data: splitted string array (frame values), values are shift()ed so\n\t\t\tthis should be empty after parsing the whole hierarchy.\n\t\t\t- frameTime: playback time for this keyframe.\n\t\t\t- bone: the bone to read frame data from.\n\t\t*/\n\t\tfunction readFrameData( data, frameTime, bone ) {\n\n\t\t\t// end sites have no motion data\n\n\t\t\tif ( bone.type === 'ENDSITE' ) return;\n\n\t\t\t// add keyframe\n\n\t\t\tconst keyframe = {\n\t\t\t\ttime: frameTime,\n\t\t\t\tposition: new Vector3(),\n\t\t\t\trotation: new Quaternion(),\n\t\t\t\tscale: new Vector3(1,1,1)\n\t\t\t};\n\n\t\t\tbone.frames.push( keyframe );\n\n\t\t\tconst quat = new Quaternion();\n\n\t\t\tconst vx = new Vector3( 1, 0, 0 );\n\t\t\tconst vy = new Vector3( 0, 1, 0 );\n\t\t\tconst vz = new Vector3( 0, 0, 1 );\n\n\t\t\t// parse values for each channel in node\n\n\t\t\tfor ( let i = 0; i < bone.channels.length; i ++ ) {\n\n\t\t\t\tswitch ( bone.channels[ i ] ) {\n\n\t\t\t\t\tcase 'Xposition':\n\t\t\t\t\t\tkeyframe.position.x = parseFloat( data.shift().trim() );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Yposition':\n\t\t\t\t\t\tkeyframe.position.y = parseFloat( data.shift().trim() );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Zposition':\n\t\t\t\t\t\tkeyframe.position.z = parseFloat( data.shift().trim() );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Xrotation':\n\t\t\t\t\t\tquat.setFromAxisAngle( vx, parseFloat( data.shift().trim() ) * Math.PI / 180 );\n\t\t\t\t\t\tkeyframe.rotation.multiply( quat );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Yrotation':\n\t\t\t\t\t\tquat.setFromAxisAngle( vy, parseFloat( data.shift().trim() ) * Math.PI / 180 );\n\t\t\t\t\t\tkeyframe.rotation.multiply( quat );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Zrotation':\n\t\t\t\t\t\tquat.setFromAxisAngle( vz, parseFloat( data.shift().trim() ) * Math.PI / 180 );\n\t\t\t\t\t\tkeyframe.rotation.multiply( quat );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Xscale':\n\t\t\t\t\t\tkeyframe.scale.x = parseFloat( data.shift().trim() );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Yscale':\n\t\t\t\t\t\tkeyframe.scale.y = parseFloat( data.shift().trim() );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Zscale':\n\t\t\t\t\t\tkeyframe.scale.z = parseFloat( data.shift().trim() );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.BVHLoader2: Invalid channel type.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// parse child nodes\n\n\t\t\tfor ( let i = 0; i < bone.children.length; i ++ ) {\n\n\t\t\t\treadFrameData( data, frameTime, bone.children[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t/*\n\t\t Recursively parses the HIERARCHY section of the BVH file\n\n\t\t - lines: all lines of the file. lines are consumed as we go along.\n\t\t - firstline: line containing the node type and name e.g. 'JOINT hip'\n\t\t - list: collects a flat list of nodes\n\n\t\t returns: a BVH node including children\n\t\t*/\n\t\tfunction readNode( lines, firstline, list ) {\n\n\t\t\tconst node = { name: '', type: '', frames: [] };\n\t\t\tlist.push( node );\n\n\t\t\t// parse node type and name\n\n\t\t\tlet tokens = firstline.split( /[\\s]+/ );\n\n\t\t\tif ( tokens[ 0 ].toUpperCase() === 'END' && tokens[ 1 ].toUpperCase() === 'SITE' ) {\n\n\t\t\t\tnode.type = 'ENDSITE';\n\t\t\t\tnode.name = 'ENDSITE'; // bvh end sites have no name\n\n\t\t\t} else {\n\n\t\t\t\tnode.name = tokens[ 1 ];\n\t\t\t\tnode.type = tokens[ 0 ].toUpperCase();\n\n\t\t\t}\n\n\t\t\tif ( nextLine( lines ) !== '{' ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader2: Expected opening { after type & name' );\n\n\t\t\t}\n\n\t\t\t// parse OFFSET\n\n\t\t\ttokens = nextLine( lines ).split( /[\\s]+/ );\n\n\t\t\tif ( tokens[ 0 ] !== 'OFFSET' ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader2: Expected OFFSET but got: ' + tokens[ 0 ] );\n\n\t\t\t}\n\n\t\t\tif ( tokens.length !== 4 ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader2: Invalid number of values for OFFSET.' );\n\n\t\t\t}\n\n\t\t\tconst offset = new Vector3(\n\t\t\t\tparseFloat( tokens[ 1 ] ),\n\t\t\t\tparseFloat( tokens[ 2 ] ),\n\t\t\t\tparseFloat( tokens[ 3 ] )\n\t\t\t);\n\n\t\t\tif ( isNaN( offset.x ) || isNaN( offset.y ) || isNaN( offset.z ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BVHLoader2: Invalid values of OFFSET.' );\n\n\t\t\t}\n\n\t\t\tnode.offset = offset;\n\n\t\t\t// parse CHANNELS definitions\n\n\t\t\tif ( node.type !== 'ENDSITE' ) {\n\n\t\t\t\ttokens = nextLine( lines ).split( /[\\s]+/ );\n\n\t\t\t\tif ( tokens[ 0 ] !== 'CHANNELS' ) {\n\n\t\t\t\t\tconsole.error( 'THREE.BVHLoader2: Expected CHANNELS definition.' );\n\n\t\t\t\t}\n\n\t\t\t\tconst numChannels = parseInt( tokens[ 1 ] );\n\t\t\t\tnode.channels = tokens.splice( 2, numChannels );\n\t\t\t\tnode.children = [];\n\n\t\t\t}\n\n\t\t\t// read children\n\n\t\t\twhile ( true ) {\n\n\t\t\t\tconst line = nextLine( lines );\n\n\t\t\t\tif ( line === '}' ) {\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnode.children.push( readNode( lines, line, list ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/*\n\t\t\trecursively converts the internal bvh node structure to a Bone hierarchy\n\n\t\t\tsource: the bvh root node\n\t\t\tlist: pass an empty array, collects a flat list of all converted THREE.Bones\n\n\t\t\treturns the root Bone\n\t\t*/\n\t\tfunction toTHREEBone( source, list ) {\n\n\t\t\tconst bone = new Bone();\n\t\t\tlist.push( bone );\n\n\t\t\tbone.position.add( source.offset );\n\t\t\tbone.name = source.name;\n\n\t\t\tif ( source.type !== 'ENDSITE' ) {\n\n\t\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\t\tbone.add( toTHREEBone( source.children[ i ], list ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bone;\n\n\t\t}\n\n\t\t/*\n\t\t\tbuilds an AnimationClip from the keyframe data saved in each bone.\n\n\t\t\tbone: bvh root node\n\n\t\t\treturns: an AnimationClip containing position and quaternion tracks\n\t\t*/\n\t\tfunction toTHREEAnimation( bones ) {\n\n\t\t\tconst tracks = [];\n\n\t\t\t// create a position and quaternion animation track for each node\n\n\t\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\t\tconst bone = bones[ i ];\n\n\t\t\t\tif ( bone.type === 'ENDSITE' )\n\t\t\t\t\tcontinue;\n\n\t\t\t\t// track data\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst positions = [];\n\t\t\t\tconst rotations = [];\n\t\t\t\tconst scales = [];\n\n\t\t\t\tfor ( let j = 0; j < bone.frames.length; j ++ ) {\n\n\t\t\t\t\tconst frame = bone.frames[ j ];\n\n\t\t\t\t\ttimes.push( frame.time );\n\n\t\t\t\t\t// the animation system animates the position property,\n\t\t\t\t\t// so we have to add the joint offset to all values\n\n\t\t\t\t\tpositions.push( frame.position.x + bone.offset.x );\n\t\t\t\t\tpositions.push( frame.position.y + bone.offset.y );\n\t\t\t\t\tpositions.push( frame.position.z + bone.offset.z );\n\n\t\t\t\t\trotations.push( frame.rotation.x );\n\t\t\t\t\trotations.push( frame.rotation.y );\n\t\t\t\t\trotations.push( frame.rotation.z );\n\t\t\t\t\trotations.push( frame.rotation.w );\n\n\t\t\t\t\tscales.push( frame.scale.x );\n\t\t\t\t\tscales.push( frame.scale.y );\n\t\t\t\t\tscales.push( frame.scale.z );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scope.animateBonePositions ) {\n\n\t\t\t\t\ttracks.push( new VectorKeyframeTrack( bone.name + '.position', times, positions ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scope.animateBoneRotations ) {\n\n\t\t\t\t\ttracks.push( new QuaternionKeyframeTrack( bone.name + '.quaternion', times, rotations ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scope.animateBoneScales ) {\n\n\t\t\t\t\ttracks.push( new VectorKeyframeTrack( bone.name + '.scale', times, scales ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new AnimationClip( 'animation', - 1, tracks );\n\n\t\t}\n\n\t\t/*\n\t\t\treturns the next non-empty line in lines\n\t\t*/\n\t\tfunction nextLine( lines ) {\n\n\t\t\tlet line;\n\t\t\t// skip empty lines\n\t\t\twhile ( ( line = lines.shift().trim() ).length === 0 ) { }\n\n\t\t\treturn line;\n\n\t\t}\n\n\t\tconst scope = this;\n\n\t\tconst lines = text.split( /[\\r\\n]+/g );\n\n\t\tconst bones = readBvh( lines );\n\n\t\tconst threeBones = [];\n\t\ttoTHREEBone( bones[ 0 ], threeBones );\n\n\t\tconst threeClip = toTHREEAnimation( bones );\n\n\t\treturn {\n\t\t\tskeleton: new Skeleton( threeBones ),\n\t\t\tclip: threeClip\n\t\t};\n\n\t}\n\n}\n\nexport { BVHLoader2 };\n","import * as THREE from 'three';\nimport { readBlobFromUnzipped,\n readStringFromUnzipped } from '../utils/math';\nimport { VRMLLoader } from 'three/addons/loaders/VRMLLoader.js';\n//import { BVHLoader } from 'three/addons/loaders/BVHLoader.js';\nimport { BVHLoader2 } from '../three/BVHLoader2.js';\n//import type { BVH } from 'three/addons/loaders/BVHLoader.js';\nimport type { BVH } from '../three/BVHLoader2.js';\nimport type { Unzipped } from 'fflate'; // 'three/addons/libs/fflate.module.js';\n\nlet vrmlLoader: VRMLLoader;\nexport async function loadVrmlInUnzipped(unzipped: Unzipped, vrmlFile: string): Promise<THREE.Object3D> {\n if (!vrmlLoader)\n vrmlLoader = new VRMLLoader();\n // URLModifierでVRML内のテクスチャ参照をBlob URLに置換\n vrmlLoader.manager.setURLModifier((url) => {\n if (url.startsWith('./'))\n url = url.substring(2);\n return URL.createObjectURL(readBlobFromUnzipped(unzipped,url));\n });\n\n const mesh = await vrmlLoader.loadAsync(vrmlFile);\n return mesh;\n}\n\nlet bvhLoader: BVHLoader2;\nexport async function loadBvhInUnzipped(unzipped: Unzipped, bvhFile: string): Promise<BVH> {\n if (!bvhLoader)\n bvhLoader = new BVHLoader2();\n const bvhStr = readStringFromUnzipped(unzipped,bvhFile);\n const obj = await bvhLoader.parse(bvhStr);\n return obj;\n}\n","import * as THREE from 'three';\nimport { ObjectA3 } from './ObjectA3';\nimport type { AsyncInitRequired } from './AsyncInitRequired';\nimport { Vec3 } from './Vec3';\nimport { unzipAsync, readStringFromUnzipped } from '../utils/math';\nimport { loadVrmlInUnzipped,\n loadBvhInUnzipped} from '../three/threeUtils';\nimport type { BVH } from 'three/addons/loaders/BVHLoader.js';\n//import type { BVH } from '../three/BVHLoader2.js';\nimport * as TG from '../utils/TypeGuard';\n//import * as SkeletonUtils from 'three/examples/jsm/utils/SkeletonUtils.js';\n\ninterface Part {\n wrl: THREE.Object3D;\n}\n\ninterface Action {\n bvh: BVH | null;\n mixer: THREE.AnimationMixer | null;\n clipAction: THREE.AnimationAction | null;\n parts: Record<string,Part>;\n root: THREE.Object3D | null;\n scale: number;\n offset: Vec3;\n}\n\n/**\n * まだ適当。\n */\nexport class Acerola3D extends ObjectA3 implements AsyncInitRequired<Acerola3D> {\n readonly ready: Promise<Acerola3D>;\n private actions: Record<string,Action>;\n private currentAction: Action | null = null;\n comment: string | null = null; // CATALOG.XMLの<c>の中\n // bvhs: Record<string,BVH> = {}; // 同じ物、2度読まないように(cloneが無理かも)\n vrmls: Record<string,THREE.Object3D> = {}; // 同じ物、2度読まないように\n\n constructor(url: string) {\n super();\n this.ready = this.asyncInit(url);\n this.actions = {};\n }\n\n initObject() {\n // ルートとなるObject3Dだけ用意して後でその中に\n // ロードしたモデルをaddする。\n return new THREE.Object3D();\n }\n\n async asyncInit(url: string) {\n const unzipped = await unzipAsync(url);\n const xmlParser = new DOMParser();\n const xmlStr = readStringFromUnzipped(unzipped,'CATALOG.XML');\n const xmlDoc = xmlParser.parseFromString(xmlStr, \"application/xml\");\n if (xmlDoc.querySelector('parsererror')) {\n console.error(`Acerola3D.asyncInit(): CATALOG.XML parse error.`);\n return this;\n }\n const ns = 'http://acerola3d.sourceforge.jp/a3/catalog';\n const cs = xmlDoc.getElementsByTagNameNS(ns,'c');\n if (cs[0]) this.comment = cs[0].textContent;\n const as = xmlDoc.getElementsByTagNameNS(ns,'a');\n for (const a of Array.from(as)) {\n const actionName = a.getAttribute('an');\n const actionBVH = a.getAttribute('bvh'); // 確か無いときもあった\n const actionScale = a.getAttribute('scale');\n const actionOffset = a.getAttribute('offset');\n if (actionName) {\n const action: Action = {\n bvh: null,\n mixer: null,\n clipAction: null,\n parts: {},\n root: null,\n scale: 1.0,\n offset: new Vec3()\n };\n this.actions[actionName] = action;\n if (actionBVH) {\n //if (this.bvhs[actionBVH]) {\n // const bvh = this.bvhs[actionBVH];\n // const clone = {\n // clip: bvh.clip.clone(),\n // skeleton: SkeletonUtils.clone(bvh.skeleton)\n // };\n // action.bvh = clone;\n //} else {\n const bvh = await loadBvhInUnzipped(unzipped, actionBVH);\n action.bvh = bvh;\n //this.bvhs[actionBVH] = bvh;\n //}\n }\n action.scale = actionScale ? Number(actionScale) : 1.0;\n if (actionOffset) {\n const as = actionOffset.split(\" \");\n action.offset.set(Number(as[0]),Number(as[1]),Number(as[2]));\n }\n const parts = a.getElementsByTagNameNS(ns,'p');\n for (const p of Array.from(parts)) {\n const partName = p.getAttribute('name');\n const wrl = p.getAttribute('wrl');\n if (partName && wrl) {\n if (this.vrmls[wrl]) {\n const vrmlClone = this.vrmls[wrl].clone();\n action.parts[partName] = { wrl: vrmlClone };\n } else {\n const vrml = await loadVrmlInUnzipped(unzipped,wrl);\n action.parts[partName] = { wrl:vrml };\n this.vrmls[wrl] = vrml;\n }\n }\n }\n }\n }\n for (const action of Object.values(this.actions)) {\n if (action.bvh) {\n action.root = new THREE.Object3D();\n action.root.add(action.bvh.skeleton.bones[0]);\n action.root.scale.set(action.scale,action.scale,action.scale);\n action.root.position.set(action.offset.x,action.offset.y,action.offset.z);\n appendPartToBone(action.root,action.parts);\n action.mixer = new THREE.AnimationMixer(action.root);\n action.clipAction = action.mixer.clipAction(action.bvh.clip);\n action.root.traverse((o)=>{\n o.userData['a3js'] = { objectA3: this };\n });\n }\n }\n\n for (const action of Object.values(this.actions)) {\n if (action.root) {\n this.object.add(action.root);\n action.clipAction?.play();\n this.currentAction = action;\n break;\n }\n }\n return this;\n }\n\n action(actionName: string) {\n const a = this.actions[actionName];\n if (a) {\n this.currentAction?.clipAction?.stop();\n if (this.currentAction?.root)\n this.object.remove(this.currentAction?.root);\n this.currentAction = a;\n if (this.currentAction?.root)\n this.object.add(this.currentAction.root);\n this.currentAction?.clipAction?.play();\n }\n }\n\n update(dt: number) {\n super.update(dt);\n if (this.currentAction?.mixer) {\n this.currentAction?.mixer.update(dt);\n }\n }\n}\n\nfunction appendPartToBone(obj: THREE.Object3D, parts: Record<string,Part>) {\n if (TG.isBone(obj)) {\n const part = parts[obj.name]; \n if (part)\n obj.add(part.wrl);\n }\n if (obj.children) {\n obj.children.forEach( o => {\n appendPartToBone(o,parts);\n });\n }\n}\n\n","import * as THREE from 'three';\nimport { ObjectA3 } from '../core/ObjectA3';\n\n/**\n * Three.jsで作ったTHREE.MeshなどのObject3Dを\n * a3jsで使うためのA3Object。\n */\nexport class ThreeJS extends ObjectA3 {\n constructor(data: THREE.Object3D) {\n super(data);\n }\n\n initObject(data: THREE.Object3D) {\n return data;\n }\n}\n","import * as THREE from 'three';\nimport { ObjectA3 } from '../core/ObjectA3';\n\n/**\n * BoxGeometryとMeshStandardMaterialでBoxを作る。\n */\nexport class Box extends ObjectA3 {\n constructor(...args: (number | string)[]) {\n super(args);\n }\n\n // 引数が上とあってなさそうだけど、こうするのが正解\n initObject(args: (number | string)[]) {\n const nums = args.filter((a): a is number => typeof a === \"number\");\n const strs = args.filter((a): a is string => typeof a === \"string\");\n const geo = new THREE.BoxGeometry(...nums);\n const c = strs.length > 0 ? strs[0] : \"rgb(128,128,128)\";\n const mat = new THREE.MeshStandardMaterial({color:c});\n const mesh = new THREE.Mesh(geo, mat);\n return mesh;\n }\n}\n","import * as THREE from 'three';\nimport { ObjectA3 } from '../core/ObjectA3';\n\n/**\n * SphereGeometryとMeshStandardMaterialでBoxを作る。\n */\nexport class Sphere extends ObjectA3 {\n constructor(...args: (number | string)[]) {\n super(args);\n }\n\n // 引数が上とあってなさそうだけど、こうするのが正解\n initObject(args: (number | string)[]) {\n const nums = args.filter((a): a is number => typeof a === \"number\");\n const strs = args.filter((a): a is string => typeof a === \"string\");\n const geo = new THREE.SphereGeometry(...nums);\n const c = strs.length > 0 ? strs[0] : \"rgb(128,128,128)\";\n const mat = new THREE.MeshStandardMaterial({color:c});\n const mesh = new THREE.Mesh(geo, mat);\n return mesh;\n }\n}\n","//import * as THREE from 'three';\nimport { ObjectA3 } from '../core/ObjectA3';\nimport { CSS2DObject } from 'three/addons/renderers/CSS2DRenderer.js';\n\n/**\n * HTMLElementを受け取りViewに2D表示する。\n */\nexport class HTML extends ObjectA3 {\n constructor(element: HTMLElement) {\n super(element);\n }\n\n // 引数が上とあってなさそうだけど、こうするのが正解\n initObject(element: HTMLElement) {\n return new CSS2DObject(element);\n }\n}\n"],"names":["isString","value","isMesh","isRoundedBoxGeometry","isBoxGeometry","isSphereGeometry","isIcosahedronGeometry","isCylinderGeometry","isCapsuleGeometry","isBone","isPerspectiveCamera","obj","defaultPhysicsEntityOption","PhysicsEntity","object","option","Quat","xOrQ","y","z","w","l0","l1","q1","q2","t","cosR","tt","w1","w2","s","getQuatOfLookAt","camera","target","up","forward","right","Vec3","trueUp","m00","m01","m02","m10","m11","m12","m20","m21","m22","trace","vec3EulerToQuat","rot","order","quat","xOrV","v1","v2","argY","argZ","argW","q","v","q_inv","Motion","objectA3","on_off","Interpolation","Billboard","dt","loc","scale","_motionName","_p","_time","_world","newLoc","newQuat","newScale","t0","ObjectA3","RAPIER","RapierPhysicsEngine","R","timestep","world","RapierPhysicsWorld","entity","isRapierPhysicsEntity","n","collisions","handle1","handle2","started","objA","RapierPhysicsEntity","objB","RapierDefaultMotion","opt","volumes","TG.isMesh","cv","getShapeAndVolumeFromPrimitive","collisionGroups","c","createTriMeshColliderDesc","computeGeometryVolume","createConvexHullColliderDesc","volumeSum","sum","vol","i","_","r","colliderDesc","collider","mesh","geom","pos","idx","count","geometry","position","index","array","volume","p0","THREE","p1","p2","indices","i0","i1","i2","TG.isRoundedBoxGeometry","ps","sx","sy","sz","radius","TG.isBoxGeometry","TG.isSphereGeometry","TG.isIcosahedronGeometry","TG.isCylinderGeometry","length","TG.isCapsuleGeometry","physicsEngineInstance","initPhysics","Scene","func","data","o","_data","motion","actionName","child","message","BalloonInfo","myPartNo","yourPartNo","xVO","Camera","controller","ControllerBase","view","_event","_loc","_quat","_scale","OrbitController","epsilon","dx","dy","sinX","cosX","sinY","cosY","vecX","vecY","quatX","quatY","newCameraLoc","newCameraQuat","f","times2","x","asyncSleep","time","resolve","unzipAsync","url","arrayBuffer","reject","unzip","err","readStringFromUnzipped","unzipped","path","strFromU8","readBlobFromUnzipped","mime_type","mimeTypeFromPath","mt","re","deepMerge","base","override","result","key","defaultSoundOptions","initSound","Sound","soundFile","options","sound","d","buffer","ViewBase","newScene","oldScene","depth","GeneralCamera","listener","aspect","b","CSS2DObject","Object3D","element","Vector2","source","recursive","_vector","Vector3","_viewMatrix","Matrix4","_viewProjectionMatrix","_a","_b","CSS2DRenderer","parameters","_this","_width","_height","_widthHalf","_heightHalf","cache","domElement","scene","renderObject","zOrder","width","height","hideObject","visible","objectData","getDistanceToSquared","l","object1","object2","filterAndFlatten","sorted","a","distanceA","distanceB","zMax","Canvas","e","dpr","h","size","ndc","dir","worldPos","vec","raycaster","mouse","rect","intersects","objs","o1","a3js","div","p","btn","Window","content","cssWidth","cssHeight","labelCSS","defaultTestOption","Test","geo","mat","label","TestMotion","FontLoader","Loader","manager","onLoad","onProgress","onError","scope","loader","FileLoader","text","font","json","Font","direction","shapes","paths","createPaths","pl","chars","line_height","offsetX","offsetY","char","ret","createPath","glyph","ShapePath","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","TextGeometry","ExtrudeGeometry","initFont","path2","zip","jsonStr","Text3D","str","toTrianglesDrawMode","drawMode","TrianglesDrawMode","TriangleFanDrawMode","TriangleStripDrawMode","numberOfTriangles","newIndices","newGeometry","GLTFLoader","parser","GLTFMaterialsClearcoatExtension","GLTFMaterialsDispersionExtension","GLTFTextureBasisUExtension","GLTFTextureWebPExtension","GLTFTextureAVIFExtension","GLTFMaterialsSheenExtension","GLTFMaterialsTransmissionExtension","GLTFMaterialsVolumeExtension","GLTFMaterialsIorExtension","GLTFMaterialsEmissiveStrengthExtension","GLTFMaterialsSpecularExtension","GLTFMaterialsIridescenceExtension","GLTFMaterialsAnisotropyExtension","GLTFMaterialsBumpExtension","GLTFLightsExtension","GLTFMeshoptCompression","GLTFMeshGpuInstancing","resourcePath","relativeUrl","LoaderUtils","_onError","gltf","dracoLoader","ktx2Loader","meshoptDecoder","callback","extensions","plugins","textDecoder","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","GLTFBinaryExtension","error","GLTFParser","plugin","extensionName","extensionsRequired","GLTFMaterialsUnlitExtension","GLTFDracoMeshCompressionExtension","GLTFTextureTransformExtension","GLTFMeshQuantizationExtension","GLTFRegistry","objects","nodeDefs","nodeIndex","nodeLength","nodeDef","lightIndex","cacheKey","dependency","lightDef","lightNode","color","Color","LinearSRGBColorSpace","range","DirectionalLight","PointLight","SpotLight","assignExtrasToUserData","type","self","light","MeshBasicMaterial","materialParams","materialDef","pending","metallicRoughness","SRGBColorSpace","materialIndex","emissiveStrength","MeshPhysicalMaterial","extension","colorFactor","colorArray","textureIndex","textureDef","name","handler","bufferView","extensionDef","decoder","res","byteOffset","byteLength","stride","meshDef","primitive","WEBGL_CONSTANTS","attributesDef","attributes","accessor","results","nodeObject","meshes","instancedMeshes","m","Quaternion","instancedMesh","InstancedMesh","attributeName","attr","InstancedBufferAttribute","BINARY_EXTENSION_HEADER_LENGTH","BINARY_EXTENSION_CHUNK_TYPES","headerView","chunkContentsLength","chunkView","chunkIndex","chunkLength","chunkType","contentArray","bufferViewIndex","gltfAttributeMap","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","threeAttributeName","ATTRIBUTES","accessorDef","componentType","WEBGL_COMPONENT_TYPES","attribute","normalized","texture","transform","GLTFCubicSplineInterpolant","Interpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","values","valueSize","offset","t1","stride2","stride3","td","pp","ppp","offset1","offset0","s2","s3","s0","s1","m0","m1","_quaternion","GLTFCubicSplineQuaternionInterpolant","WEBGL_FILTERS","NearestFilter","LinearFilter","NearestMipmapNearestFilter","LinearMipmapNearestFilter","NearestMipmapLinearFilter","LinearMipmapLinearFilter","WEBGL_WRAPPINGS","ClampToEdgeWrapping","MirroredRepeatWrapping","RepeatWrapping","WEBGL_TYPE_SIZES","PATH_PROPERTIES","INTERPOLATION","InterpolateLinear","InterpolateDiscrete","ALPHA_MODES","createDefaultMaterial","MeshStandardMaterial","FrontSide","addUnknownExtensionsToUserData","knownExtensions","objectDef","gltfDef","addMorphTargets","targets","hasMorphPosition","hasMorphNormal","hasMorphColor","il","pendingPositionAccessors","pendingNormalAccessors","pendingColorAccessors","pendingAccessor","accessors","morphPositions","morphNormals","morphColors","updateMorphTargets","targetNames","createPrimitiveKey","primitiveDef","geometryKey","dracoExtension","createAttributesKey","attributesKey","keys","getNormalizedComponentScale","constructor","getImageURIMimeType","uri","_identityMatrix","isSafari","safariVersion","isFirefox","firefoxVersion","userAgent","safariMatch","TextureLoader","ImageBitmapLoader","ext","dependencies","skinDefs","meshDefs","skinIndex","skinLength","joints","ref","updateMappings","original","clone","mappings","defs","def","bufferIndex","bufferDef","bufferViewDef","accessorIndex","itemSize","TypedArray","BufferAttribute","pendingBufferViews","bufferViews","elementBytes","itemBytes","byteStride","bufferAttribute","ibSlice","ibCacheKey","ib","InterleavedBuffer","InterleavedBufferAttribute","itemSizeIndices","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","sourceIndex","sourceDef","promise","sampler","URL","sourceURI","isObjectURL","blob","imageBitmap","Texture","mapName","mapDef","colorSpace","gltfReference","material","useDerivativeTangents","useVertexColors","useFlatShading","pointsMaterial","PointsMaterial","Material","lineMaterial","LineBasicMaterial","cachedMaterial","materialType","materialExtensions","kmuExtension","DoubleSide","alphaMode","emissiveFactor","originalName","sanitizedName","PropertyBinding","primitives","createDracoPrimitive","addPrimitiveAttributes","cached","geometryPromise","BufferGeometry","meshIndex","materials","geometries","SkinnedMesh","Mesh","LineSegments","Line","LineLoop","Points","group","Group","cameraIndex","cameraDef","params","PerspectiveCamera","MathUtils","OrthographicCamera","skinDef","inverseBindMatrices","jointNodes","bones","boneInverses","jointNode","Skeleton","animationIndex","animationDef","animationName","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","channel","input","output","nodes","inputAccessors","outputAccessors","samplers","tracks","node","inputAccessor","outputAccessor","createdTracks","k","animation","AnimationClip","nodePending","childPending","childrenDef","skeletonPending","children","skeleton","nodeName","meshPromise","Bone","matrix","mapping","sceneIndex","sceneDef","nodeIds","reduceAssociations","reducedAssociations","targetName","TypedKeyframeTrack","NumberKeyframeTrack","QuaternionKeyframeTrack","VectorKeyframeTrack","interpolation","outputArray","j","jl","track","scaled","interpolantType","computeBounds","box","Box3","min","max","boxScale","maxDisplacement","vector","sphere","Sphere","assignAttributeAccessor","gltfAttributeName","ColorManagement","_taskCache","DRACOLoader","config","workerLimit","attributeIDs","attributeTypes","vertexColorSpace","taskConfig","taskKey","cachedTask","worker","taskID","taskCost","geometryPending","_worker","geometryData","inputColorSpace","_color","responseType","useJS","librariesPending","libraries","jsContent","fn","DRACOWorker","body","decoderConfig","decoderPending","draco","module","decodeGeometry","buffers","dracoGeometry","decodingStatus","geometryType","attributeType","attributeID","attributeResult","decodeAttribute","decodeIndex","numIndices","ptr","dracoDataType","getDracoDataType","srcByteStride","dstByteStride","dstStride","srcByteLength","dstByteLength","srcArray","dstArray","dstOffset","hasMorphTargets","gltfLoader","GLTFA3","GLTFMotion","mixer","actions","clip","action","morphs","morphTargetDictionary","morphTargetInfluences","morphName","model","Er","Pt","exports","__spreadArray","isEmpty","mapValues","map","flatten","first","last","forEach","isObject","isUndefined","isFunction","drop","dropRight","filter","pick","has","contains","find","cloneArr","cloneObj","findAll","reduce","compact","uniq","partial","isArray","isRegExp","every","difference","some","indexOf","sortBy","zipObject","assign","assignNoOverwrite","defaults","groupBy","merge","NOOP","IDENTITY","packArray","PRINT_ERROR","PRINT_WARNING","isES2015MapSupported","peek","timer","toFastProperties","toBecomeFast","FakeConstructor","fakeInstance","fakeAccess","xt","sn","St","u","A","g","Lt","He","Ga","Ct","Wa","Ba","qa","pn","ja","un","pe","cn","Ce","Tr","ln","Va","Mt","bt","yr","Ka","za","Ha","T","hn","dn","F","ft","Ye","vn","Ae","Ya","Xa","Za","$a","gr","_r","L","se","Tn","En","Ar","mn","Or","Rr","fe","ue","Q","te","Z","Ja","yn","_n","Qa","gn","An","Rn","On","In","kn","Pn","Nn","eo","to","no","ro","io","ao","Sn","oo","Ft","Xe","N","V","so","uo","co","xn","Cn","Mn","Ln","bn","Nr","Fn","wn","Ir","lo","kr","wt","qe","Ee","fo","po","ho","pt","mo","xe","it","at","Ke","we","ot","It","Qr","st","Jr","en","J","lt","ze","wa","Ua","tn","me","rn","nn","Da","De","ut","fr","pr","kt","hr","dr","vr","an","on","ct","mr","Ue","H","Te","Eo","Pr","To","Dn","yo","_o","Un","Gn","Wn","Bn","qn","jn","Vn","Kn","zn","go","Ao","Ro","ne","S","Le","G","Oo","Re","Hn","Yn","Xn","$n","Zn","Qn","Jn","ei","ti","Dt","No","ht","Gt","Ut","Sr","ie","Io","ri","$e","Wt","Oe","ko","vt","X","Po","W","So","xo","xr","Co","Lo","ni","Bt","Mo","Lr","Ne","qt","ii","Cr","jt","si","ai","oi","Mr","Vt","pi","he","bo","Fo","wo","ui","ci","Do","fi","li","Uo","Go","Me","Ze","Wo","ye","br","hi","mi","Ge","Bo","qo","ce","di","jo","Vo","vi","Tt","je","Ei","I","Ko","O","Ti","zo","Et","Ho","Yo","Xo","$o","yi","Qo","Zo","yt","C","_i","D","gi","Jo","Kt","We","es","ts","rs","Ai","Fr","ns","Ri","is","as","os","Oi","Ni","wr","ss","Dr","Ii","us","jr","Ur","M","B","Ie","Gr","Qe","cs","_e","Wr","ls","Br","Pi","Si","Ci","fs","xi","ki","bi","Li","Mi","hs","_t","qr","ds","Fi","wi","Ui","Je","Vr","vs","ms","Di","Es","Ts","et","ae","gt","ys","Gi","Wi","Bi","qi","ji","_s","zt","gs","As","Rs","Os","zr","$","Ht","de","Ns","Is","ks","Kr","Ps","Vi","Yt","P","Ss","zi","Xt","be","ge","Ki","Fe","Ve","xs","Hi","ke","Cs","Ls","Ms","bs","Hr","Be","Fs","ws","Yi","Xi","Ds","ea","Y","ve","At","$i","Us","Zi","Gs","Yr","Qi","Ji","Ws","ra","$t","K","ta","Bs","qs","ia","Zt","na","js","oa","Qt","aa","Vs","Xr","Ks","zs","Hs","Ys","la","Jt","le","er","sa","rt","ua","Xs","ca","Rt","$s","Zs","pa","tr","$r","Zr","fa","Qs","Js","va","rr","ha","da","eu","Ra","nr","oe","Pe","tu","ma","Ea","ru","nu","ir","Ta","ya","ga","iu","ou","Ot","au","ar","Aa","Na","or","Oa","su","uu","Ia","sr","cu","U","ka","ee","lu","Pa","Sa","xa","fu","pu","hu","du","vu","mu","Eu","Tu","yu","_u","gu","Ru","ur","Ou","Nu","La","cr","Ca","Iu","Fa","E","ku","lr","Ma","nt","Pu","Nt","Su","Se","ba","xu","Cu","Lu","Mu","chevrotain","VRMLLoader","nodeMap","generateVRMLTree","tokenData","createTokens","lexer","VRMLLexer","VRMLParser","visitor","createVisitor","lexingResult","cstOutput","createToken","RouteIdentifier","Identifier","nodeTypes","Version","NodeName","DEF","USE","ROUTE","TO","StringLiteral","HexLiteral","NumberLiteral","TrueLiteral","FalseLiteral","NullLiteral","LSquare","RSquare","LCurly","RCurly","Comment","tokens","tokenVocabulary","token","BaseVRMLVisitor","VRMLToASTVisitor","ctx","route","field","processField","use","stringLiteral","numberLiteral","hexLiteral","parseTree","tree","buildNodeMap","getNode","fields","fieldValues","resolveUSE","buildNode","build","buildGroupingNode","buildBackgroundNode","buildShapeNode","buildAppearanceNode","buildMaterialNode","buildImageTextureNode","buildPixelTextureNode","buildTextureTransformNode","buildIndexedFaceSetNode","buildIndexedLineSetNode","buildPointSetNode","buildBoxNode","buildConeNode","buildCylinderNode","buildSphereNode","buildElevationGridNode","buildExtrusionNode","buildGeometricNode","buildWorldInfoNode","fieldName","parseFieldChildren","axis","angle","groundAngle","groundColor","skyAngle","skyColor","skyGeometry","SphereGeometry","skyMaterial","BackSide","paintFaces","toColorArray","sky","groundGeometry","groundMaterial","ground","MeshPhongMaterial","transformData","materialData","textureNode","TEXTURE_TYPE","parseHexColor","hex","textureType","getTextureType","num_components","wrapS","wrapT","DataTexture","textureLoader","worldInfo","coord","normal","texCoord","ccw","solid","creaseAngle","colorIndex","coordIndex","normalIndex","texCoordIndex","colorPerVertex","normalPerVertex","colorNode","coordNode","normalNode","texCoordNode","triangulatedCoordIndex","triangulateFaceIndex","colorAttribute","normalAttribute","uvAttribute","triangulatedColorIndex","computeAttributeFromIndexedData","toNonIndexedAttribute","Float32BufferAttribute","flattenFaceColors","flattenData","triangulatedFaceColors","triangulateFaceData","computeAttributeFromFaceData","convertColorsToLinearSRGB","triangulatedNormalIndex","flattenFaceNormals","triangulatedFaceNormals","computeNormalAttribute","triangulatedTexCoordIndex","positionAttribute","expandedLineIndex","expandLineIndex","expandedColorIndex","flattenLineColors","expandedLineColors","expandLineData","computeAttributeFromLineData","BoxGeometry","openEnded","ConeGeometry","CylinderGeometry","xDimension","zDimension","xSpacing","zSpacing","vertices","normals","colors","uvs","crossSection","spine","orientation","beginCap","endCap","crossSectionClosed","spineVector","scaling","vertex","quaternion","kl","spineCount","crossSectionCount","contour","faces","ShapeUtils","capIndices","face","indexOffset","identifier","owner","start","i3","triangulatedData","vA","vB","vC","uvA","uvB","uvC","faceData","lineData","array2","index2","ab","cb","vertexNormals","Face","nA","weightedNormal","nB","nC","angles","topDown","thresholds","startAngle","point","thresholdIndexA","thresholdIndexB","thresholdA","thresholdB","colorA","colorB","inputText","CstParser","BVHLoader2","readBvh","lines","nextLine","list","root","readNode","numFrames","frameTime","readFrameData","bone","keyframe","vx","vy","vz","firstline","numChannels","line","toTHREEBone","toTHREEAnimation","times","positions","rotations","scales","frame","threeBones","threeClip","vrmlLoader","loadVrmlInUnzipped","vrmlFile","bvhLoader","loadBvhInUnzipped","bvhFile","bvhStr","Acerola3D","xmlParser","xmlStr","xmlDoc","actionBVH","actionScale","actionOffset","bvh","parts","partName","wrl","vrmlClone","vrml","appendPartToBone","TG.isBone","part","ThreeJS","Box","args","nums","strs","HTML"],"mappings":"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","x_google_ignoreList":[14,18,19,21,22,23,25,26]}
|