diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..8725a696
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,47 @@
+EXAMPLE ?= src
+SOURCES := $(shell find .. -type f -name "*.ts")
+
+all: index.html
+ @printf "Size gzipped: %s bytes\n" $(shell gzip index.html --stdout | wc -c)
+
+game.esbuild.js: $(SOURCES)
+# Remove --noEmit to emit *.js files next to the source *.ts files. index.ts
+# will then import the emitted *.js files. This may produce a smaller build
+# because the bundle will be ordered differently.
+ npx tsc --noEmit
+ npx esbuild ../$(EXAMPLE)/index.ts \
+ --preserve-symlinks \
+ --define:DEBUG=false \
+ --target=es2022 \
+ --bundle \
+ --analyze \
+ > $@
+
+game.sed.js: game.esbuild.js sed.txt
+ sed -f sed.txt $< > $@
+
+game.terser.js: game.sed.js terser_compress.txt node_modules
+ npx --quiet terser $< \
+ --ecma 2022 \
+ --mangle toplevel \
+ --mangle-props keep_quoted,regex=/^[A-Z]/ \
+ --compress $(shell paste -sd, terser_compress.txt) \
+ > $@
+
+game.roadroller.js: game.terser.js node_modules
+# Set -O2 for better (and longer) compression.
+ npx --quiet roadroller -O1 --dirty $< -o $@
+
+index.html: game.html game.roadroller.js game.css debug.css posthtml.cjs node_modules
+ node posthtml.cjs $< > $@
+
+# On Ubuntu, install p7zip-full. See https://www.7-zip.org/download.html.
+index.zip: index.html
+ 7z a -mx=9 -mfb=256 -mpass=15 $@ $^
+
+.PHONY: clean
+clean:
+ rm -f *.js index.html index.zip
+
+node_modules:
+ npm install
diff --git a/debug.css b/debug.css
new file mode 100644
index 00000000..6e62ba16
--- /dev/null
+++ b/debug.css
@@ -0,0 +1,23 @@
+#debug {
+ display: flex;
+ flex-flow: column nowrap;
+ align-items: flex-end;
+ position: absolute;
+ top: 0;
+ right: 0;
+ color: #fff;
+ font-family: monospace;
+}
+#debug button {
+ cursor: pointer;
+ padding: 0;
+ background: none;
+ border: none;
+ font: inherit;
+ color: inherit;
+}
+#debug div {
+ width: max-content;
+ background: #000;
+ color: #fff;
+}
diff --git a/game.css b/game.css
new file mode 100644
index 00000000..18cc8ac0
--- /dev/null
+++ b/game.css
@@ -0,0 +1,24 @@
+html,
+body {
+ overflow: hidden;
+ margin: 0;
+}
+canvas,
+main {
+ position: absolute;
+ width: 100vw;
+ height: 100vh;
+ overflow: hidden;
+ word-break: break-word;
+ user-select: none;
+ touch-action: none;
+}
+[hidden] {
+ display: none;
+}
+[onclick] {
+ cursor: pointer;
+}
+.grabbing {
+ cursor: grabbing;
+}
diff --git a/game.esbuild.js b/game.esbuild.js
new file mode 100644
index 00000000..af3d91f5
--- /dev/null
+++ b/game.esbuild.js
@@ -0,0 +1,3867 @@
+"use strict";
+(() => {
+ // ../lib/input.ts
+ function input_pointer_lock(game2) {
+ game2.Ui.addEventListener("click", () => game2.Ui.requestPointerLock());
+ }
+
+ // ../lib/webgl.ts
+ var GL_DEPTH_BUFFER_BIT = 256;
+ var GL_COLOR_BUFFER_BIT = 16384;
+ var GL_POINTS = 0;
+ var GL_LINE_LOOP = 2;
+ var GL_TRIANGLES = 4;
+ var GL_SRC_ALPHA = 770;
+ var GL_ONE_MINUS_SRC_ALPHA = 771;
+ var GL_STATIC_DRAW = 35044;
+ var GL_DYNAMIC_DRAW = 35048;
+ var GL_ARRAY_BUFFER = 34962;
+ var GL_ELEMENT_ARRAY_BUFFER = 34963;
+ var GL_CULL_FACE = 2884;
+ var GL_BLEND = 3042;
+ var GL_DEPTH_TEST = 2929;
+ var GL_CW = 2304;
+ var GL_DATA_UNSIGNED_BYTE = 5121;
+ var GL_DATA_UNSIGNED_INT = 5125;
+ var GL_DATA_FLOAT = 5126;
+ var GL_DEPTH_COMPONENT = 6402;
+ var GL_RGBA = 6408;
+ var GL_FRAGMENT_SHADER = 35632;
+ var GL_VERTEX_SHADER = 35633;
+ var GL_NEAREST = 9728;
+ var GL_LINEAR = 9729;
+ var GL_TEXTURE_MAG_FILTER = 10240;
+ var GL_TEXTURE_MIN_FILTER = 10241;
+ var GL_TEXTURE_WRAP_S = 10242;
+ var GL_TEXTURE_WRAP_T = 10243;
+ var GL_TEXTURE_2D = 3553;
+ var GL_TEXTURE0 = 33984;
+ var GL_TEXTURE1 = 33985;
+ var GL_TEXTURE2 = 33986;
+ var GL_TEXTURE3 = 33987;
+ var GL_CLAMP_TO_EDGE = 33071;
+ var GL_FRAMEBUFFER = 36160;
+ var GL_RGBA8 = 32856;
+ var GL_TEXTURE_COMPARE_MODE = 34892;
+ var GL_COMPARE_REF_TO_TEXTURE = 34894;
+ var GL_RGBA32F = 34836;
+ var GL_RGBA16F = 34842;
+ var GL_DEPTH_COMPONENT24 = 33190;
+ var GL_UNSIGNED_SHORT = 5123;
+ var GL_FLOAT = 5126;
+
+ // ../lib/world.ts
+ var WorldImpl = class {
+ Capacity;
+ Signature = [];
+ Graveyard = [];
+ constructor(capacity = 1e4) {
+ this.Capacity = capacity;
+ }
+ };
+ function create_entity(world) {
+ if (world.Graveyard.length > 0) {
+ return world.Graveyard.pop();
+ }
+ if (false) {
+ throw new Error("No more entities available.");
+ }
+ return world.Signature.push(0) - 1;
+ }
+ function destroy_entity(world, entity) {
+ world.Signature[entity] = 0;
+ if (false) {
+ throw new Error("Entity already in graveyard.");
+ }
+ world.Graveyard.push(entity);
+ }
+ function first_having(world, query, start_at = 0) {
+ for (let i = start_at; i < world.Signature.length; i++) {
+ if ((world.Signature[i] & query) === query) {
+ return i;
+ }
+ }
+ }
+
+ // ../lib/game.ts
+ var update_span = document.getElementById("update");
+ var delta_span = document.getElementById("delta");
+ var fps_span = document.getElementById("fps");
+ var step = 1 / 60;
+ var GameImpl = class {
+ Running = 0;
+ Now = 0;
+ ViewportWidth = window.innerWidth;
+ ViewportHeight = window.innerHeight;
+ ViewportResized = true;
+ // State of input during this frame.
+ // 1 = down, 0 = up, or any number for analog inputs.
+ InputState = {
+ MouseX: 0,
+ MouseY: 0
+ };
+ // Changes of InputState that happened right before this frame.
+ // 1 = pressed, -1 = released, 0 = no change.
+ InputDelta = {
+ MouseX: 0,
+ MouseY: 0
+ };
+ // Pixels traveled while mouse/touch was down.
+ InputDistance = {
+ Mouse: 0,
+ Mouse0: 0,
+ Mouse1: 0,
+ Mouse2: 0,
+ Touch0: 0,
+ Touch1: 0
+ };
+ // Map of touch ids to touch indices. In particular, Firefox assigns high
+ // ints as ids. Chrome usually starts at 0, so id === index.
+ InputTouches = {};
+ Ui = document.querySelector("main");
+ constructor() {
+ document.addEventListener(
+ "visibilitychange",
+ () => document.hidden ? this.Stop() : this.Start()
+ );
+ this.Ui.addEventListener("contextmenu", (evt) => evt.preventDefault());
+ this.Ui.addEventListener("mousedown", (evt) => {
+ this.InputState[`Mouse${evt.button}`] = 1;
+ this.InputDelta[`Mouse${evt.button}`] = 1;
+ });
+ this.Ui.addEventListener("mouseup", (evt) => {
+ this.InputState[`Mouse${evt.button}`] = 0;
+ this.InputDelta[`Mouse${evt.button}`] = -1;
+ });
+ this.Ui.addEventListener("mousemove", (evt) => {
+ this.InputState["MouseX"] = evt.clientX;
+ this.InputState["MouseY"] = evt.clientY;
+ this.InputDelta["MouseX"] = evt.movementX;
+ this.InputDelta["MouseY"] = evt.movementY;
+ });
+ this.Ui.addEventListener("wheel", (evt) => {
+ evt.preventDefault();
+ this.InputDelta["WheelY"] = evt.deltaY;
+ });
+ this.Ui.addEventListener("touchstart", (evt) => {
+ if (evt.target === this.Ui) {
+ evt.preventDefault();
+ }
+ if (evt.touches.length === 1) {
+ this.InputTouches = {};
+ }
+ for (let i = 0; i < evt.touches.length; i++) {
+ let touch = evt.touches[i];
+ this.InputTouches[touch.identifier] = i;
+ }
+ for (let i = 0; i < evt.changedTouches.length; i++) {
+ let touch = evt.changedTouches[i];
+ let index = this.InputTouches[touch.identifier];
+ this.InputState[`Touch${index}`] = 1;
+ this.InputState[`Touch${index}X`] = touch.clientX;
+ this.InputState[`Touch${index}Y`] = touch.clientY;
+ this.InputDelta[`Touch${index}`] = 1;
+ this.InputDelta[`Touch${index}X`] = 0;
+ this.InputDelta[`Touch${index}Y`] = 0;
+ }
+ });
+ this.Ui.addEventListener("touchmove", (evt) => {
+ if (evt.target === this.Ui) {
+ evt.preventDefault();
+ }
+ for (let i = 0; i < evt.changedTouches.length; i++) {
+ let touch = evt.changedTouches[i];
+ let index = this.InputTouches[touch.identifier];
+ this.InputDelta[`Touch${index}X`] = touch.clientX - this.InputState[`Touch${index}X`];
+ this.InputDelta[`Touch${index}Y`] = touch.clientY - this.InputState[`Touch${index}Y`];
+ this.InputState[`Touch${index}X`] = touch.clientX;
+ this.InputState[`Touch${index}Y`] = touch.clientY;
+ }
+ });
+ this.Ui.addEventListener("touchend", (evt) => {
+ if (evt.target === this.Ui) {
+ evt.preventDefault();
+ }
+ for (let i = 0; i < evt.changedTouches.length; i++) {
+ let touch = evt.changedTouches[i];
+ let index = this.InputTouches[touch.identifier];
+ this.InputState[`Touch${index}`] = 0;
+ this.InputDelta[`Touch${index}`] = -1;
+ }
+ });
+ this.Ui.addEventListener("touchcancel", (evt) => {
+ for (let i = 0; i < evt.changedTouches.length; i++) {
+ let touch = evt.changedTouches[i];
+ let index = this.InputTouches[touch.identifier];
+ this.InputState[`Touch${index}`] = 0;
+ this.InputDelta[`Touch${index}`] = -1;
+ }
+ });
+ window.addEventListener("keydown", (evt) => {
+ if (!evt.repeat) {
+ this.InputState[evt.code] = 1;
+ this.InputDelta[evt.code] = 1;
+ }
+ });
+ window.addEventListener("keyup", (evt) => {
+ this.InputState[evt.code] = 0;
+ this.InputDelta[evt.code] = -1;
+ });
+ }
+ Start() {
+ let last = performance.now();
+ let tick = (now) => {
+ let delta = (now - last) / 1e3;
+ last = now;
+ this.Running = requestAnimationFrame(tick);
+ this.FrameSetup(delta);
+ this.FrameUpdate(delta);
+ this.FrameReset(delta);
+ };
+ requestAnimationFrame(tick);
+ }
+ Stop() {
+ cancelAnimationFrame(this.Running);
+ this.Running = 0;
+ }
+ FrameSetup(delta) {
+ this.Now = performance.now();
+ let mouse_distance = Math.abs(this.InputDelta["MouseX"]) + Math.abs(this.InputDelta["MouseY"]);
+ this.InputDistance["Mouse"] += mouse_distance;
+ if (this.InputState["Mouse0"] === 1) {
+ this.InputDistance["Mouse0"] += mouse_distance;
+ }
+ if (this.InputState["Mouse1"] === 1) {
+ this.InputDistance["Mouse1"] += mouse_distance;
+ }
+ if (this.InputState["Mouse2"] === 1) {
+ this.InputDistance["Mouse2"] += mouse_distance;
+ }
+ if (this.InputState["Touch0"] === 1) {
+ this.InputDistance["Touch0"] += Math.abs(this.InputDelta["Touch0X"]) + Math.abs(this.InputDelta["Touch0Y"]);
+ }
+ if (this.InputState["Touch1"] === 1) {
+ this.InputDistance["Touch1"] += Math.abs(this.InputDelta["Touch1X"]) + Math.abs(this.InputDelta["Touch1Y"]);
+ }
+ }
+ FrameUpdate(delta) {
+ }
+ FrameReset(delta) {
+ this.ViewportResized = false;
+ if (this.InputDelta["Mouse0"] === -1) {
+ this.InputDistance["Mouse0"] = 0;
+ }
+ if (this.InputDelta["Mouse1"] === -1) {
+ this.InputDistance["Mouse1"] = 0;
+ }
+ if (this.InputDelta["Mouse2"] === -1) {
+ this.InputDistance["Mouse2"] = 0;
+ }
+ if (this.InputDelta["Touch0"] === -1) {
+ this.InputDistance["Touch0"] = 0;
+ }
+ if (this.InputDelta["Touch1"] === -1) {
+ this.InputDistance["Touch1"] = 0;
+ }
+ for (let name in this.InputDelta) {
+ this.InputDelta[name] = 0;
+ }
+ let update22 = performance.now() - this.Now;
+ if (update_span) {
+ update_span.textContent = update22.toFixed(1);
+ }
+ if (delta_span) {
+ delta_span.textContent = (delta * 1e3).toFixed(1);
+ }
+ if (fps_span) {
+ fps_span.textContent = (1 / delta).toFixed();
+ }
+ }
+ };
+ var Game3D = class extends GameImpl {
+ BackgroundCanvas = document.querySelector("#background");
+ BackgroundContext = this.BackgroundCanvas.getContext("2d");
+ ForegroundCanvas = document.querySelector("#foreground");
+ ForegroundContext = this.ForegroundCanvas.getContext("2d");
+ SceneCanvas = document.querySelector("#scene");
+ Gl = this.SceneCanvas.getContext("webgl2");
+ Audio = new AudioContext();
+ Cameras = [];
+ Targets = {};
+ constructor() {
+ super();
+ this.Gl.enable(GL_DEPTH_TEST);
+ this.Gl.enable(GL_CULL_FACE);
+ this.Gl.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ }
+ };
+ function instantiate(game2, blueprint) {
+ let entity = create_entity(game2.World);
+ for (let mixin of blueprint) {
+ mixin(game2, entity);
+ }
+ return entity;
+ }
+
+ // ../src/world.ts
+ var World = class extends WorldImpl {
+ Animate = [];
+ AudioSource = [];
+ Camera = [];
+ Children = [];
+ Collide = [];
+ ControlAlways = [];
+ ControlPlayer = [];
+ Draw = [];
+ EmitParticles = [];
+ Lifespan = [];
+ Light = [];
+ Mimic = [];
+ Move = [];
+ Named = [];
+ Render = [];
+ RigidBody = [];
+ Shake = [];
+ Spawn = [];
+ Task = [];
+ Toggle = [];
+ Transform = [];
+ Trigger = [];
+ };
+
+ // ../src/components/com_children.ts
+ function children(...blueprints) {
+ return (game2, entity) => {
+ if (game2.World.Signature[entity] & 16 /* Children */) {
+ } else {
+ game2.World.Signature[entity] |= 16 /* Children */;
+ game2.World.Children[entity] = {
+ Children: []
+ };
+ }
+ let child_entities = game2.World.Children[entity].Children;
+ for (let blueprint of blueprints) {
+ let child = instantiate(game2, blueprint);
+ child_entities.push(child);
+ }
+ };
+ }
+ function* query_down(world, entity, mask) {
+ if ((world.Signature[entity] & mask) === mask) {
+ yield entity;
+ }
+ if (world.Signature[entity] & 16 /* Children */) {
+ for (let child of world.Children[entity].Children) {
+ yield* query_down(world, child, mask);
+ }
+ }
+ }
+ function destroy_all(world, entity) {
+ if (world.Signature[entity] & 16 /* Children */) {
+ for (let child of world.Children[entity].Children) {
+ destroy_all(world, child);
+ }
+ }
+ if (world.Signature[entity] === 0 /* None */) {
+ } else {
+ destroy_entity(world, entity);
+ }
+ }
+
+ // ../src/actions.ts
+ function dispatch(game2, action, payload) {
+ switch (action) {
+ case 0 /* ToggleFullscreen */: {
+ if (document.fullscreenElement) {
+ document.exitFullscreen();
+ } else {
+ document.body.requestFullscreen();
+ }
+ break;
+ }
+ case 1 /* CollectItem */: {
+ let [item_entity] = payload;
+ destroy_all(game2.World, item_entity);
+ game2.ItemsCollected++;
+ break;
+ }
+ case 2 /* ExpireItem */: {
+ game2.ItemsMissed++;
+ break;
+ }
+ }
+ }
+
+ // ../materials/light.ts
+ var MAX_FORWARD_LIGHTS = 8;
+ var INCLUDE_GAMMA_CORRECTION = `
+ // Expand (decode) an sRGB color to linear color space, similar to how the
+ // monitor does it when displaying pixels to the user.
+
+ // Convert ~sRGB to linear.
+ vec3 GAMMA_DECODE(vec3 rgb) {
+ return pow(rgb, vec3(2.2));
+ }
+
+ // Convert ~sRGBA to linear.
+ vec4 GAMMA_DECODE(vec4 color) {
+ return vec4(pow(color.rgb, vec3(2.2)), color.a);
+ }
+
+ // Compress (encode) a linear RGB color to sRGB. Usually this is done after
+ // lighting computations and just before sending the color to the canvas, to
+ // compensate for the loss in brightness caused by the monitor.
+
+ // Convert linear to ~sRGB.
+ vec3 GAMMA_ENCODE(vec3 rgb) {
+ return pow(rgb, vec3(1.0 / 2.2));
+ }
+
+ // Convert linear to ~sRGBA.
+ vec4 GAMMA_ENCODE(vec4 color) {
+ return vec4(pow(color.rgb, vec3(1.0 / 2.2)), color.a);
+ }
+`;
+
+ // ../lib/material.ts
+ function link(gl, vertex4, fragment4) {
+ let program = gl.createProgram();
+ gl.attachShader(program, compile(gl, GL_VERTEX_SHADER, vertex4));
+ gl.attachShader(program, compile(gl, GL_FRAGMENT_SHADER, fragment4));
+ gl.linkProgram(program);
+ if (false) {
+ throw new Error(gl.getProgramInfoLog(program));
+ }
+ return program;
+ }
+ function compile(gl, type, source) {
+ let shader = gl.createShader(type);
+ gl.shaderSource(shader, source);
+ gl.compileShader(shader);
+ if (false) {
+ throw new Error(gl.getShaderInfoLog(shader));
+ }
+ return shader;
+ }
+
+ // ../materials/mat_forward_colored_phong.ts
+ var vertex = `#version 300 es
+
+ uniform mat4 pv;
+ uniform mat4 world;
+ uniform mat4 self;
+
+ layout(location=${0 /* Position */}) in vec4 attr_position;
+ layout(location=${1 /* Normal */}) in vec3 attr_normal;
+
+ out vec4 vert_position;
+ out vec3 vert_normal;
+
+ void main() {
+ vert_position = world * attr_position;
+ vert_normal = (vec4(attr_normal, 0.0) * self).xyz;
+ gl_Position = pv * vert_position;
+ }
+`;
+ var fragment = `#version 300 es
+
+ precision mediump float;
+
+ uniform vec3 eye;
+ uniform vec4 diffuse_color;
+ uniform vec4 specular_color;
+ uniform vec4 emissive_color;
+ uniform vec4 light_positions[${MAX_FORWARD_LIGHTS}];
+ uniform vec4 light_details[${MAX_FORWARD_LIGHTS}];
+
+ in vec4 vert_position;
+ in vec3 vert_normal;
+
+ out vec4 frag_color;
+
+ ${INCLUDE_GAMMA_CORRECTION}
+
+ void main() {
+ vec3 world_normal = normalize(vert_normal);
+
+ vec3 view_dir = eye - vert_position.xyz;
+ vec3 view_normal = normalize(view_dir);
+
+ // Ambient light.
+ vec3 light_acc = GAMMA_DECODE(diffuse_color.rgb) * 0.1;
+
+ for (int i = 0; i < ${MAX_FORWARD_LIGHTS}; i++) {
+ int light_kind = int(light_positions[i].w);
+ if (light_kind == ${0 /* Inactive */}) {
+ break;
+ }
+
+ vec3 light_rgb = GAMMA_DECODE(light_details[i].rgb);
+ float light_intensity = light_details[i].a;
+
+ vec3 light_normal;
+ if (light_kind == ${2 /* Directional */}) {
+ light_normal = light_positions[i].xyz;
+ } else if (light_kind == ${3 /* Point */}) {
+ vec3 light_dir = light_positions[i].xyz - vert_position.xyz;
+ float light_dist = length(light_dir);
+ light_normal = light_dir / light_dist;
+ // Distance attenuation.
+ light_intensity /= (light_dist * light_dist);
+ }
+
+ float diffuse_factor = dot(world_normal, light_normal);
+ if (diffuse_factor > 0.0) {
+ // Diffuse color.
+ light_acc += GAMMA_DECODE(diffuse_color.rgb) * diffuse_factor * light_rgb * light_intensity;
+
+ if (specular_color.a > 0.0) {
+ // Phong reflection model.
+ // vec3 r = reflect(-light_normal, world_normal);
+ // float specular_angle = max(dot(r, view_normal), 0.0);
+ // float specular_factor = pow(specular_angle, specular_color.a);
+
+ // Blinn-Phong reflection model.
+ vec3 h = normalize(light_normal + view_normal);
+ float specular_angle = max(dot(h, world_normal), 0.0);
+ float specular_factor = pow(specular_angle, specular_color.a);
+
+ // Specular color.
+ light_acc += GAMMA_DECODE(specular_color.rgb) * specular_factor * light_rgb * light_intensity;
+ }
+ }
+ }
+
+ vec3 emissive_rgb = GAMMA_DECODE(emissive_color.rgb) * emissive_color.a;
+ frag_color = vec4(GAMMA_ENCODE(light_acc + emissive_rgb), diffuse_color.a);
+ }
+`;
+ function mat_forward_colored_phong(gl) {
+ let program = link(gl, vertex, fragment);
+ return {
+ Mode: GL_TRIANGLES,
+ Program: program,
+ Locations: {
+ Pv: gl.getUniformLocation(program, "pv"),
+ World: gl.getUniformLocation(program, "world"),
+ Self: gl.getUniformLocation(program, "self"),
+ DiffuseColor: gl.getUniformLocation(program, "diffuse_color"),
+ SpecularColor: gl.getUniformLocation(program, "specular_color"),
+ EmissiveColor: gl.getUniformLocation(program, "emissive_color"),
+ Eye: gl.getUniformLocation(program, "eye"),
+ LightPositions: gl.getUniformLocation(program, "light_positions"),
+ LightDetails: gl.getUniformLocation(program, "light_details")
+ }
+ };
+ }
+
+ // ../materials/mat_forward_colored_unlit.ts
+ var vertex2 = `#version 300 es
+
+ uniform mat4 pv;
+ uniform mat4 world;
+
+ layout(location=${0 /* Position */}) in vec4 attr_position;
+
+ void main() {
+ gl_Position = pv * world * attr_position;
+ }
+`;
+ var fragment2 = `#version 300 es
+
+ precision mediump float;
+
+ uniform vec4 color;
+
+ out vec4 frag_color;
+
+ void main() {
+ frag_color = color;
+ }
+`;
+ function mat_forward_colored_unlit(gl, mode = GL_TRIANGLES) {
+ let program = link(gl, vertex2, fragment2);
+ return {
+ Mode: mode,
+ Program: program,
+ Locations: {
+ Pv: gl.getUniformLocation(program, "pv"),
+ World: gl.getUniformLocation(program, "world"),
+ Color: gl.getUniformLocation(program, "color")
+ }
+ };
+ }
+ function mat_forward_colored_wireframe(gl) {
+ return mat_forward_colored_unlit(gl, GL_LINE_LOOP);
+ }
+
+ // ../materials/mat_forward_particles_colored.ts
+ var vertex3 = `#version 300 es
+
+ uniform mat4 pv;
+ uniform vec4 color_start;
+ uniform vec4 color_end;
+ // [x: lifespan, y: speed, z: size_start, w: size_end];
+ uniform vec4 details;
+
+ // [x, y, z, w: age]
+ in vec4 attr_origin_age;
+ in vec3 attr_direction;
+
+ out vec4 vert_color;
+
+ void main() {
+ // Move the particle along the direction axis.
+ vec3 velocity = attr_direction * details.y;
+ gl_Position = pv * vec4(attr_origin_age.xyz + velocity * attr_origin_age.w, 1.0);
+
+ // Interpolate color and size.
+ float t = attr_origin_age.w / details.x;
+ gl_PointSize = mix(details.z, details.w, t);
+ vert_color = mix(color_start, color_end, t);
+ }
+`;
+ var fragment3 = `#version 300 es
+
+ precision mediump float;
+
+ in vec4 vert_color;
+
+ out vec4 frag_color;
+
+ void main() {
+ frag_color = vert_color;
+ }
+`;
+ function mat_forward_particles_colored(gl) {
+ let program = link(gl, vertex3, fragment3);
+ return {
+ Mode: GL_POINTS,
+ Program: program,
+ Locations: {
+ Pv: gl.getUniformLocation(program, "pv"),
+ ColorStart: gl.getUniformLocation(program, "color_start"),
+ ColorEnd: gl.getUniformLocation(program, "color_end"),
+ Details: gl.getUniformLocation(program, "details"),
+ OriginAge: gl.getAttribLocation(program, "attr_origin_age"),
+ Direction: gl.getAttribLocation(program, "attr_direction")
+ }
+ };
+ }
+
+ // ../meshes/cube.ts
+ function mesh_cube(gl) {
+ let vao = gl.createVertexArray();
+ gl.bindVertexArray(vao);
+ let vertex_buf = gl.createBuffer();
+ gl.bindBuffer(GL_ARRAY_BUFFER, vertex_buf);
+ gl.bufferData(GL_ARRAY_BUFFER, vertex_arr, GL_STATIC_DRAW);
+ gl.enableVertexAttribArray(0 /* Position */);
+ gl.vertexAttribPointer(0 /* Position */, 3, GL_FLOAT, false, 0, 0);
+ let normal_buf = gl.createBuffer();
+ gl.bindBuffer(GL_ARRAY_BUFFER, normal_buf);
+ gl.bufferData(GL_ARRAY_BUFFER, normal_arr, GL_STATIC_DRAW);
+ gl.enableVertexAttribArray(1 /* Normal */);
+ gl.vertexAttribPointer(1 /* Normal */, 3, GL_FLOAT, false, 0, 0);
+ let texcoord_buf = gl.createBuffer();
+ gl.bindBuffer(GL_ARRAY_BUFFER, texcoord_buf);
+ gl.bufferData(GL_ARRAY_BUFFER, texcoord_arr, GL_STATIC_DRAW);
+ gl.enableVertexAttribArray(2 /* TexCoord */);
+ gl.vertexAttribPointer(2 /* TexCoord */, 2, GL_FLOAT, false, 0, 0);
+ let weights_buf = gl.createBuffer();
+ gl.bindBuffer(GL_ARRAY_BUFFER, weights_buf);
+ gl.bufferData(GL_ARRAY_BUFFER, weights_arr, GL_STATIC_DRAW);
+ gl.enableVertexAttribArray(5 /* Weights */);
+ gl.vertexAttribPointer(5 /* Weights */, 4, GL_FLOAT, false, 0, 0);
+ let index_buf = gl.createBuffer();
+ gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER, index_buf);
+ gl.bufferData(GL_ELEMENT_ARRAY_BUFFER, index_arr, GL_STATIC_DRAW);
+ gl.bindVertexArray(null);
+ return {
+ Vao: vao,
+ VertexBuffer: vertex_buf,
+ VertexArray: vertex_arr,
+ NormalBuffer: normal_buf,
+ NormalArray: normal_arr,
+ TexCoordBuffer: texcoord_buf,
+ TexCoordArray: texcoord_arr,
+ WeightsBuffer: weights_buf,
+ WeightsArray: weights_arr,
+ IndexBuffer: index_buf,
+ IndexArray: index_arr,
+ IndexCount: index_arr.length
+ };
+ }
+ var vertex_arr = Float32Array.from([
+ -0.5,
+ -0.5,
+ 0.5,
+ -0.5,
+ -0.5,
+ 0.5,
+ -0.5,
+ -0.5,
+ 0.5,
+ -0.5,
+ 0.5,
+ 0.5,
+ -0.5,
+ 0.5,
+ 0.5,
+ -0.5,
+ 0.5,
+ 0.5,
+ -0.5,
+ -0.5,
+ -0.5,
+ -0.5,
+ -0.5,
+ -0.5,
+ -0.5,
+ -0.5,
+ -0.5,
+ -0.5,
+ 0.5,
+ -0.5,
+ -0.5,
+ 0.5,
+ -0.5,
+ -0.5,
+ 0.5,
+ -0.5,
+ 0.5,
+ -0.5,
+ 0.5,
+ 0.5,
+ -0.5,
+ 0.5,
+ 0.5,
+ -0.5,
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5,
+ -0.5,
+ -0.5,
+ 0.5,
+ -0.5,
+ -0.5,
+ 0.5,
+ -0.5,
+ -0.5,
+ 0.5,
+ 0.5,
+ -0.5,
+ 0.5,
+ 0.5,
+ -0.5,
+ 0.5,
+ 0.5,
+ -0.5
+ ]);
+ var normal_arr = Float32Array.from([
+ -1,
+ 0,
+ 0,
+ 0,
+ -1,
+ 0,
+ 0,
+ 0,
+ 1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 1,
+ 0,
+ -1,
+ 0,
+ 0,
+ 0,
+ -1,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ 0,
+ 1,
+ 0,
+ 0,
+ -1,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 1,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0,
+ -1,
+ 0,
+ 0,
+ 0,
+ -1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ 0,
+ 1,
+ 0,
+ 1,
+ 0,
+ 0
+ ]);
+ var texcoord_arr = Float32Array.from([
+ 0.67,
+ 0.67,
+ 1,
+ 1,
+ 0.67,
+ 0.33,
+ 0.33,
+ 0.67,
+ 0.67,
+ 0.67,
+ 0,
+ 0,
+ 0.67,
+ 1,
+ 1,
+ 0.67,
+ 0.33,
+ 0.33,
+ 0.33,
+ 1,
+ 0,
+ 0.33,
+ 0.33,
+ 0,
+ 0.67,
+ 1,
+ 0.33,
+ 0.33,
+ 0.33,
+ 1,
+ 0.33,
+ 0.67,
+ 0,
+ 0.33,
+ 0,
+ 1,
+ 0.67,
+ 0.67,
+ 0.33,
+ 0.67,
+ 0.33,
+ 0.67,
+ 0,
+ 0.67,
+ 0.33,
+ 0.33,
+ 0,
+ 0.67
+ ]);
+ var weights_arr = Float32Array.from([]);
+ var index_arr = Uint16Array.from([
+ 16,
+ 5,
+ 22,
+ 5,
+ 11,
+ 22,
+ 1,
+ 12,
+ 7,
+ 12,
+ 18,
+ 7,
+ 2,
+ 4,
+ 13,
+ 4,
+ 15,
+ 13,
+ 14,
+ 17,
+ 20,
+ 17,
+ 23,
+ 20,
+ 19,
+ 21,
+ 8,
+ 21,
+ 10,
+ 8,
+ 6,
+ 9,
+ 0,
+ 9,
+ 3,
+ 0
+ ]);
+
+ // ../lib/math.ts
+ var EPSILON = 1e-6;
+ var DEG_TO_RAD = Math.PI / 180;
+ var RAD_TO_DEG = 180 / Math.PI;
+
+ // ../lib/number.ts
+ function clamp(min, max, num) {
+ return Math.max(min, Math.min(max, num));
+ }
+
+ // ../lib/vec3.ts
+ function vec3_set(out, x, y, z) {
+ out[0] = x;
+ out[1] = y;
+ out[2] = z;
+ return out;
+ }
+ function vec3_copy(out, a2) {
+ out[0] = a2[0];
+ out[1] = a2[1];
+ out[2] = a2[2];
+ return out;
+ }
+ function vec3_add(out, a2, b) {
+ out[0] = a2[0] + b[0];
+ out[1] = a2[1] + b[1];
+ out[2] = a2[2] + b[2];
+ return out;
+ }
+ function vec3_subtract(out, a2, b) {
+ out[0] = a2[0] - b[0];
+ out[1] = a2[1] - b[1];
+ out[2] = a2[2] - b[2];
+ return out;
+ }
+ function vec3_scale(out, a2, b) {
+ out[0] = a2[0] * b;
+ out[1] = a2[1] * b;
+ out[2] = a2[2] * b;
+ return out;
+ }
+ function vec3_negate(out, a2) {
+ out[0] = -a2[0];
+ out[1] = -a2[1];
+ out[2] = -a2[2];
+ return out;
+ }
+ function vec3_normalize(out, a2) {
+ let x = a2[0];
+ let y = a2[1];
+ let z = a2[2];
+ let len = x * x + y * y + z * z;
+ if (len > 0) {
+ len = 1 / Math.sqrt(len);
+ }
+ out[0] = a2[0] * len;
+ out[1] = a2[1] * len;
+ out[2] = a2[2] * len;
+ return out;
+ }
+ function vec3_dot(a2, b) {
+ return a2[0] * b[0] + a2[1] * b[1] + a2[2] * b[2];
+ }
+ function vec3_cross(out, a2, b) {
+ let ax = a2[0], ay = a2[1], az = a2[2];
+ let bx = b[0], by = b[1], bz = b[2];
+ out[0] = ay * bz - az * by;
+ out[1] = az * bx - ax * bz;
+ out[2] = ax * by - ay * bx;
+ return out;
+ }
+ function vec3_transform_position(out, a2, m) {
+ let x = a2[0];
+ let y = a2[1];
+ let z = a2[2];
+ let w = m[3] * x + m[7] * y + m[11] * z + m[15] || 1;
+ out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;
+ out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;
+ out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;
+ return out;
+ }
+ function vec3_transform_direction(out, a2, m) {
+ let x = a2[0];
+ let y = a2[1];
+ let z = a2[2];
+ out[0] = m[0] * x + m[4] * y + m[8] * z;
+ out[1] = m[1] * x + m[5] * y + m[9] * z;
+ out[2] = m[2] * x + m[6] * y + m[10] * z;
+ return out;
+ }
+ function vec3_length(a2) {
+ let x = a2[0];
+ let y = a2[1];
+ let z = a2[2];
+ return Math.hypot(x, y, z);
+ }
+ function vec3_lerp(out, a2, b, t) {
+ let ax = a2[0];
+ let ay = a2[1];
+ let az = a2[2];
+ out[0] = ax + t * (b[0] - ax);
+ out[1] = ay + t * (b[1] - ay);
+ out[2] = az + t * (b[2] - az);
+ return out;
+ }
+
+ // ../lib/quat.ts
+ function quat_set(out, x, y, z, w) {
+ out[0] = x;
+ out[1] = y;
+ out[2] = z;
+ out[3] = w;
+ return out;
+ }
+ function quat_copy(out, a2) {
+ out[0] = a2[0];
+ out[1] = a2[1];
+ out[2] = a2[2];
+ out[3] = a2[3];
+ return out;
+ }
+ function quat_normalize(out, a2) {
+ let x = a2[0];
+ let y = a2[1];
+ let z = a2[2];
+ let w = a2[3];
+ let len = x * x + y * y + z * z + w * w;
+ if (len > 0) {
+ len = 1 / Math.sqrt(len);
+ }
+ out[0] = x * len;
+ out[1] = y * len;
+ out[2] = z * len;
+ out[3] = w * len;
+ return out;
+ }
+ function quat_multiply(out, a2, b) {
+ let ax = a2[0], ay = a2[1], az = a2[2], aw = a2[3];
+ let bx = b[0], by = b[1], bz = b[2], bw = b[3];
+ out[0] = ax * bw + aw * bx + ay * bz - az * by;
+ out[1] = ay * bw + aw * by + az * bx - ax * bz;
+ out[2] = az * bw + aw * bz + ax * by - ay * bx;
+ out[3] = aw * bw - ax * bx - ay * by - az * bz;
+ return out;
+ }
+ function quat_from_euler(out, x, y, z) {
+ let sx = Math.sin(x / 2 * DEG_TO_RAD);
+ let cx = Math.cos(x / 2 * DEG_TO_RAD);
+ let sy = Math.sin(y / 2 * DEG_TO_RAD);
+ let cy = Math.cos(y / 2 * DEG_TO_RAD);
+ let sz = Math.sin(z / 2 * DEG_TO_RAD);
+ let cz = Math.cos(z / 2 * DEG_TO_RAD);
+ out[0] = sx * cy * cz + cx * sy * sz;
+ out[1] = cx * sy * cz - sx * cy * sz;
+ out[2] = cx * cy * sz - sx * sy * cz;
+ out[3] = cx * cy * cz + sx * sy * sz;
+ return out;
+ }
+ function quat_get_pitch(quat) {
+ let x = quat[0];
+ let y = quat[1];
+ let z = quat[2];
+ let w = quat[3];
+ let m23 = 2 * (y * z - w * x);
+ return Math.asin(-clamp(-1, 1, m23)) * RAD_TO_DEG;
+ }
+ function quat_from_axis(out, axis, angle) {
+ let half = angle / 2;
+ out[0] = Math.sin(half) * axis[0];
+ out[1] = Math.sin(half) * axis[1];
+ out[2] = Math.sin(half) * axis[2];
+ out[3] = Math.cos(half);
+ return out;
+ }
+ var quat_rotation_to = function() {
+ let tmpvec3 = [0, 0, 0];
+ let xUnitVec3 = [1, 0, 0];
+ let yUnitVec3 = [0, 1, 0];
+ return function(out, a2, b) {
+ let d = vec3_dot(a2, b);
+ if (d < -0.999999) {
+ vec3_cross(tmpvec3, xUnitVec3, a2);
+ if (vec3_length(tmpvec3) < 1e-6)
+ vec3_cross(tmpvec3, yUnitVec3, a2);
+ vec3_normalize(tmpvec3, tmpvec3);
+ quat_from_axis(out, tmpvec3, Math.PI);
+ return out;
+ } else if (d > 0.999999) {
+ out[0] = 0;
+ out[1] = 0;
+ out[2] = 0;
+ out[3] = 1;
+ return out;
+ } else {
+ vec3_cross(tmpvec3, a2, b);
+ out[0] = tmpvec3[0];
+ out[1] = tmpvec3[1];
+ out[2] = tmpvec3[2];
+ out[3] = 1 + d;
+ return quat_normalize(out, out);
+ }
+ };
+ }();
+ function quat_slerp(out, a2, b, t) {
+ let ax = a2[0], ay = a2[1], az = a2[2], aw = a2[3];
+ let bx = b[0], by = b[1], bz = b[2], bw = b[3];
+ let omega, cosom, sinom, scale0, scale1;
+ cosom = ax * bx + ay * by + az * bz + aw * bw;
+ if (cosom < 0) {
+ cosom = -cosom;
+ bx = -bx;
+ by = -by;
+ bz = -bz;
+ bw = -bw;
+ }
+ if (1 - cosom > EPSILON) {
+ omega = Math.acos(cosom);
+ sinom = Math.sin(omega);
+ scale0 = Math.sin((1 - t) * omega) / sinom;
+ scale1 = Math.sin(t * omega) / sinom;
+ } else {
+ scale0 = 1 - t;
+ scale1 = t;
+ }
+ out[0] = scale0 * ax + scale1 * bx;
+ out[1] = scale0 * ay + scale1 * by;
+ out[2] = scale0 * az + scale1 * bz;
+ out[3] = scale0 * aw + scale1 * bw;
+ return out;
+ }
+
+ // ../src/components/com_animate.ts
+ function animate(clips) {
+ return (game2, entity) => {
+ let States = {};
+ for (let name in clips) {
+ let { Keyframes, Flags = 7 /* Default */ } = clips[name];
+ let duration = Keyframes[Keyframes.length - 1].Timestamp;
+ States[name] = {
+ // One-level-deep copy of the clip's keyframes. When
+ // AnimationFlag.Alternate is set, sys_animate recalculates
+ // keyframes' timestamps after each alternation. We want to
+ // modify copies of the timestamps defined in the clip. It's OK
+ // to copy other keyframe properties by reference.
+ Keyframes: Keyframes.map((keyframe) => ({ ...keyframe })),
+ Flags,
+ Duration: duration,
+ Time: 0
+ };
+ }
+ game2.World.Signature[entity] |= 1 /* Animate */;
+ game2.World.Animate[entity] = {
+ States,
+ Current: States["idle"]
+ };
+ };
+ }
+
+ // ../src/systems/sys_animate.ts
+ var QUERY = 4194304 /* Transform */ | 1 /* Animate */;
+ function sys_animate(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY) === QUERY) {
+ update(game2, i, delta);
+ }
+ }
+ }
+ function update(game2, entity, delta) {
+ let transform2 = game2.World.Transform[entity];
+ let animate2 = game2.World.Animate[entity];
+ if (animate2.Trigger) {
+ let next = animate2.States[animate2.Trigger];
+ if (next && next !== animate2.Current) {
+ if (animate2.Current.Time === 0) {
+ animate2.Current = next;
+ } else if (animate2.Current.Flags & 1 /* EarlyExit */) {
+ animate2.Current.Time = 0;
+ animate2.Current = next;
+ }
+ }
+ animate2.Trigger = void 0;
+ }
+ let current_keyframe = null;
+ let next_keyframe = null;
+ for (let keyframe of animate2.Current.Keyframes) {
+ if (animate2.Current.Time < keyframe.Timestamp) {
+ next_keyframe = keyframe;
+ break;
+ } else {
+ current_keyframe = keyframe;
+ }
+ }
+ if (current_keyframe && next_keyframe) {
+ let keyframe_duration = next_keyframe.Timestamp - current_keyframe.Timestamp;
+ let current_keyframe_time = animate2.Current.Time - current_keyframe.Timestamp;
+ let interpolant = current_keyframe_time / keyframe_duration;
+ if (next_keyframe.Ease) {
+ interpolant = next_keyframe.Ease(interpolant);
+ }
+ if (current_keyframe.Translation && next_keyframe.Translation) {
+ vec3_lerp(
+ transform2.Translation,
+ current_keyframe.Translation,
+ next_keyframe.Translation,
+ interpolant
+ );
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ }
+ if (current_keyframe.Rotation && next_keyframe.Rotation) {
+ quat_slerp(
+ transform2.Rotation,
+ current_keyframe.Rotation,
+ next_keyframe.Rotation,
+ interpolant
+ );
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ }
+ if (current_keyframe.Scale && next_keyframe.Scale) {
+ vec3_lerp(transform2.Scale, current_keyframe.Scale, next_keyframe.Scale, interpolant);
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ }
+ }
+ let new_time = animate2.Current.Time + delta;
+ if (new_time < animate2.Current.Duration) {
+ animate2.Current.Time = new_time;
+ return;
+ } else {
+ animate2.Current.Time = 0;
+ }
+ if (animate2.Current.Flags & 4 /* Alternate */) {
+ for (let keyframe of animate2.Current.Keyframes.reverse()) {
+ keyframe.Timestamp = animate2.Current.Duration - keyframe.Timestamp;
+ }
+ }
+ if (!(animate2.Current.Flags & 2 /* Loop */)) {
+ animate2.Current = animate2.States["idle"];
+ }
+ }
+
+ // ../lib/mat4.ts
+ function mat4_create() {
+ return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
+ }
+ function mat4_copy(out, a2) {
+ out[0] = a2[0];
+ out[1] = a2[1];
+ out[2] = a2[2];
+ out[3] = a2[3];
+ out[4] = a2[4];
+ out[5] = a2[5];
+ out[6] = a2[6];
+ out[7] = a2[7];
+ out[8] = a2[8];
+ out[9] = a2[9];
+ out[10] = a2[10];
+ out[11] = a2[11];
+ out[12] = a2[12];
+ out[13] = a2[13];
+ out[14] = a2[14];
+ out[15] = a2[15];
+ return out;
+ }
+ function mat4_invert(out, a2) {
+ let a00 = a2[0], a01 = a2[1], a02 = a2[2], a03 = a2[3];
+ let a10 = a2[4], a11 = a2[5], a12 = a2[6], a13 = a2[7];
+ let a20 = a2[8], a21 = a2[9], a22 = a2[10], a23 = a2[11];
+ let a30 = a2[12], a31 = a2[13], a32 = a2[14], a33 = a2[15];
+ let b00 = a00 * a11 - a01 * a10;
+ let b01 = a00 * a12 - a02 * a10;
+ let b02 = a00 * a13 - a03 * a10;
+ let b03 = a01 * a12 - a02 * a11;
+ let b04 = a01 * a13 - a03 * a11;
+ let b05 = a02 * a13 - a03 * a12;
+ let b06 = a20 * a31 - a21 * a30;
+ let b07 = a20 * a32 - a22 * a30;
+ let b08 = a20 * a33 - a23 * a30;
+ let b09 = a21 * a32 - a22 * a31;
+ let b10 = a21 * a33 - a23 * a31;
+ let b11 = a22 * a33 - a23 * a32;
+ let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
+ if (!det) {
+ return null;
+ }
+ det = 1 / det;
+ out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;
+ out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;
+ out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;
+ out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;
+ out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;
+ out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;
+ out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;
+ out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;
+ out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;
+ out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;
+ out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;
+ out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;
+ out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;
+ out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;
+ out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;
+ out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;
+ return out;
+ }
+ function mat4_multiply(out, a2, b) {
+ let a00 = a2[0], a01 = a2[1], a02 = a2[2], a03 = a2[3];
+ let a10 = a2[4], a11 = a2[5], a12 = a2[6], a13 = a2[7];
+ let a20 = a2[8], a21 = a2[9], a22 = a2[10], a23 = a2[11];
+ let a30 = a2[12], a31 = a2[13], a32 = a2[14], a33 = a2[15];
+ let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
+ out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
+ out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
+ out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
+ out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
+ b0 = b[4];
+ b1 = b[5];
+ b2 = b[6];
+ b3 = b[7];
+ out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
+ out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
+ out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
+ out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
+ b0 = b[8];
+ b1 = b[9];
+ b2 = b[10];
+ b3 = b[11];
+ out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
+ out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
+ out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
+ out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
+ b0 = b[12];
+ b1 = b[13];
+ b2 = b[14];
+ b3 = b[15];
+ out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
+ out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
+ out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
+ out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
+ return out;
+ }
+ function mat4_compose(out, q, v, s) {
+ let x = q[0], y = q[1], z = q[2], w = q[3];
+ let x2 = x + x;
+ let y2 = y + y;
+ let z2 = z + z;
+ let xx = x * x2;
+ let xy = x * y2;
+ let xz = x * z2;
+ let yy = y * y2;
+ let yz = y * z2;
+ let zz = z * z2;
+ let wx = w * x2;
+ let wy = w * y2;
+ let wz = w * z2;
+ let sx = s[0];
+ let sy = s[1];
+ let sz = s[2];
+ out[0] = (1 - (yy + zz)) * sx;
+ out[1] = (xy + wz) * sx;
+ out[2] = (xz - wy) * sx;
+ out[3] = 0;
+ out[4] = (xy - wz) * sy;
+ out[5] = (1 - (xx + zz)) * sy;
+ out[6] = (yz + wx) * sy;
+ out[7] = 0;
+ out[8] = (xz + wy) * sz;
+ out[9] = (yz - wx) * sz;
+ out[10] = (1 - (xx + yy)) * sz;
+ out[11] = 0;
+ out[12] = v[0];
+ out[13] = v[1];
+ out[14] = v[2];
+ out[15] = 1;
+ return out;
+ }
+ function mat4_from_perspective(out, fovy, aspect, near, far) {
+ let f = 1 / Math.tan(fovy / 2), nf;
+ out[0] = f / aspect;
+ out[1] = 0;
+ out[2] = 0;
+ out[3] = 0;
+ out[4] = 0;
+ out[5] = f;
+ out[6] = 0;
+ out[7] = 0;
+ out[8] = 0;
+ out[9] = 0;
+ out[11] = -1;
+ out[12] = 0;
+ out[13] = 0;
+ out[15] = 0;
+ if (far != null && far !== Infinity) {
+ nf = 1 / (near - far);
+ out[10] = (far + near) * nf;
+ out[14] = 2 * far * near * nf;
+ } else {
+ out[10] = -1;
+ out[14] = -2 * near;
+ }
+ return out;
+ }
+ function mat4_from_ortho(out, top, right, bottom, left, near, far) {
+ let lr = 1 / (left - right);
+ let bt = 1 / (bottom - top);
+ let nf = 1 / (near - far);
+ out[0] = -2 * lr;
+ out[1] = 0;
+ out[2] = 0;
+ out[3] = 0;
+ out[4] = 0;
+ out[5] = -2 * bt;
+ out[6] = 0;
+ out[7] = 0;
+ out[8] = 0;
+ out[9] = 0;
+ out[10] = 2 * nf;
+ out[11] = 0;
+ out[12] = (left + right) * lr;
+ out[13] = (top + bottom) * bt;
+ out[14] = (far + near) * nf;
+ out[15] = 1;
+ return out;
+ }
+ function mat4_get_up(out, mat) {
+ out[0] = mat[4];
+ out[1] = mat[5];
+ out[2] = mat[6];
+ return vec3_normalize(out, out);
+ }
+ function mat4_get_forward(out, mat) {
+ out[0] = mat[8];
+ out[1] = mat[9];
+ out[2] = mat[10];
+ return vec3_normalize(out, out);
+ }
+ function mat4_get_translation(out, mat) {
+ out[0] = mat[12];
+ out[1] = mat[13];
+ out[2] = mat[14];
+ return out;
+ }
+ function mat4_get_scaling(out, mat) {
+ let m11 = mat[0];
+ let m12 = mat[1];
+ let m13 = mat[2];
+ let m21 = mat[4];
+ let m22 = mat[5];
+ let m23 = mat[6];
+ let m31 = mat[8];
+ let m32 = mat[9];
+ let m33 = mat[10];
+ out[0] = Math.hypot(m11, m12, m13);
+ out[1] = Math.hypot(m21, m22, m23);
+ out[2] = Math.hypot(m31, m32, m33);
+ return out;
+ }
+ function mat4_get_rotation(out, mat) {
+ let scaling = mat4_get_scaling([0, 0, 0], mat);
+ let is1 = 1 / scaling[0];
+ let is2 = 1 / scaling[1];
+ let is3 = 1 / scaling[2];
+ let sm11 = mat[0] * is1;
+ let sm12 = mat[1] * is2;
+ let sm13 = mat[2] * is3;
+ let sm21 = mat[4] * is1;
+ let sm22 = mat[5] * is2;
+ let sm23 = mat[6] * is3;
+ let sm31 = mat[8] * is1;
+ let sm32 = mat[9] * is2;
+ let sm33 = mat[10] * is3;
+ let trace = sm11 + sm22 + sm33;
+ let S = 0;
+ if (trace > 0) {
+ S = Math.sqrt(trace + 1) * 2;
+ out[3] = 0.25 * S;
+ out[0] = (sm23 - sm32) / S;
+ out[1] = (sm31 - sm13) / S;
+ out[2] = (sm12 - sm21) / S;
+ } else if (sm11 > sm22 && sm11 > sm33) {
+ S = Math.sqrt(1 + sm11 - sm22 - sm33) * 2;
+ out[3] = (sm23 - sm32) / S;
+ out[0] = 0.25 * S;
+ out[1] = (sm12 + sm21) / S;
+ out[2] = (sm31 + sm13) / S;
+ } else if (sm22 > sm33) {
+ S = Math.sqrt(1 + sm22 - sm11 - sm33) * 2;
+ out[3] = (sm31 - sm13) / S;
+ out[0] = (sm12 + sm21) / S;
+ out[1] = 0.25 * S;
+ out[2] = (sm23 + sm32) / S;
+ } else {
+ S = Math.sqrt(1 + sm33 - sm11 - sm22) * 2;
+ out[3] = (sm12 - sm21) / S;
+ out[0] = (sm31 + sm13) / S;
+ out[1] = (sm23 + sm32) / S;
+ out[2] = 0.25 * S;
+ }
+ return out;
+ }
+ function mat4_distance_squared_from_point(m, v) {
+ let x = m[12] - v[0];
+ let y = m[13] - v[1];
+ let z = m[14] - v[2];
+ return x * x + y * y + z * z;
+ }
+
+ // ../src/systems/sys_audio_listener.ts
+ var QUERY2 = 2 /* AudioListener */ | 4194304 /* Transform */;
+ function sys_audio_listener(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY2) === QUERY2) {
+ update2(game2, i);
+ }
+ }
+ }
+ var position = [0, 0, 0];
+ var forward = [0, 0, 0];
+ var up = [0, 0, 0];
+ function update2(game2, entity) {
+ let transform2 = game2.World.Transform[entity];
+ mat4_get_translation(position, transform2.World);
+ mat4_get_forward(forward, transform2.World);
+ mat4_get_up(up, transform2.World);
+ let listener = game2.Audio.listener;
+ if (listener.positionX) {
+ listener.positionX.value = position[0];
+ listener.positionY.value = position[1];
+ listener.positionZ.value = position[2];
+ listener.forwardX.value = forward[0];
+ listener.forwardY.value = forward[1];
+ listener.forwardZ.value = forward[2];
+ listener.upX.value = up[0];
+ listener.upY.value = up[1];
+ listener.upZ.value = up[2];
+ } else {
+ listener.setPosition(...position);
+ listener.setOrientation(...forward, ...up);
+ }
+ }
+
+ // ../lib/random.ts
+ var seed = 1;
+ function rand() {
+ seed = seed * 16807 % 2147483647;
+ return (seed - 1) / 2147483646;
+ }
+ function float(min = 0, max = 1) {
+ return rand() * (max - min) + min;
+ }
+
+ // ../lib/audio.ts
+ function play_note(audio, panner, instr, note, offset) {
+ let time = audio.currentTime + offset;
+ let total_duration = 0;
+ if (panner) {
+ panner.connect(audio.destination);
+ }
+ let master = audio.createGain();
+ master.gain.value = (instr[0 /* MasterGainAmount */] / 9) ** 3;
+ let lfa, lfo;
+ if (instr[5 /* LFOType */]) {
+ lfo = audio.createOscillator();
+ lfo.type = instr[5 /* LFOType */];
+ lfo.frequency.value = (instr[7 /* LFOFreq */] / 3) ** 3;
+ lfa = audio.createGain();
+ lfa.gain.value = (instr[6 /* LFOAmount */] + 3) ** 3;
+ lfo.connect(lfa);
+ }
+ if (instr[1 /* FilterType */]) {
+ let filter = audio.createBiquadFilter();
+ filter.type = instr[1 /* FilterType */];
+ filter.frequency.value = 2 ** instr[2 /* FilterFreq */];
+ filter.Q.value = instr[3 /* FilterQ */] ** 1.5;
+ if (lfa && instr[4 /* FilterDetuneLFO */]) {
+ lfa.connect(filter.detune);
+ }
+ master.connect(filter);
+ if (panner) {
+ filter.connect(panner);
+ } else {
+ filter.connect(audio.destination);
+ }
+ } else if (panner) {
+ master.connect(panner);
+ } else {
+ master.connect(audio.destination);
+ }
+ for (let source of instr[8 /* Sources */]) {
+ let amp = audio.createGain();
+ amp.connect(master);
+ let gain_amount = (source[1 /* GainAmount */] / 9) ** 3;
+ let gain_attack = (source[2 /* GainAttack */] / 9) ** 3;
+ let gain_sustain = (source[3 /* GainSustain */] / 9) ** 3;
+ let gain_release = (source[4 /* GainRelease */] / 6) ** 3;
+ let gain_duration = gain_attack + gain_sustain + gain_release;
+ amp.gain.setValueAtTime(0, time);
+ amp.gain.linearRampToValueAtTime(gain_amount, time + gain_attack);
+ amp.gain.setValueAtTime(gain_amount, time + gain_attack + gain_sustain);
+ amp.gain.exponentialRampToValueAtTime(1e-5, time + gain_duration);
+ if (source[0]) {
+ let hfo = audio.createOscillator();
+ hfo.type = source[0 /* SourceType */];
+ hfo.connect(amp);
+ hfo.detune.value = 3 * (source[5 /* DetuneAmount */] - 7.5) ** 3;
+ if (lfa && source[6 /* DetuneLFO */]) {
+ lfa.connect(hfo.detune);
+ }
+ let freq = 440 * 2 ** ((note - 69) / 12);
+ if (source[7 /* FreqEnabled */]) {
+ let freq_attack = (source[8 /* FreqAttack */] / 9) ** 3;
+ let freq_sustain = (source[9 /* FreqSustain */] / 9) ** 3;
+ let freq_release = (source[10 /* FreqRelease */] / 6) ** 3;
+ hfo.frequency.linearRampToValueAtTime(0, time);
+ hfo.frequency.linearRampToValueAtTime(freq, time + freq_attack);
+ hfo.frequency.setValueAtTime(freq, time + freq_attack + freq_sustain);
+ hfo.frequency.exponentialRampToValueAtTime(
+ 1e-5,
+ time + freq_attack + freq_sustain + freq_release
+ );
+ } else {
+ hfo.frequency.setValueAtTime(freq, time);
+ }
+ hfo.start(time);
+ hfo.stop(time + gain_duration);
+ } else {
+ let noise = audio.createBufferSource();
+ noise.buffer = lazy_noise_buffer(audio);
+ noise.loop = true;
+ noise.connect(amp);
+ noise.start(time);
+ noise.stop(time + gain_duration);
+ }
+ if (gain_duration > total_duration) {
+ total_duration = gain_duration;
+ }
+ }
+ if (lfo) {
+ lfo.start(time);
+ lfo.stop(time + total_duration);
+ }
+ }
+ var noise_buffer;
+ function lazy_noise_buffer(audio) {
+ if (!noise_buffer) {
+ noise_buffer = audio.createBuffer(1, audio.sampleRate * 2, audio.sampleRate);
+ let channel = noise_buffer.getChannelData(0);
+ for (let i = 0; i < channel.length; i++) {
+ channel[i] = Math.random() * 2 - 1;
+ }
+ }
+ return noise_buffer;
+ }
+ function play_synth_clip(audio, panner, clip) {
+ let spb = 60 / (clip.BPM || 120);
+ let interval = spb / 4;
+ for (let track of clip.Tracks) {
+ for (let i = 0; i < track.Notes.length; i++) {
+ if (track.Notes[i]) {
+ play_note(audio, panner, track.Instrument, track.Notes[i], i * interval);
+ }
+ }
+ }
+ }
+ function play_buffer_clip(audio, panner, clip) {
+ let source = audio.createBufferSource();
+ source.buffer = clip.Buffer;
+ if (panner) {
+ source.connect(panner);
+ panner.connect(audio.destination);
+ } else {
+ source.connect(audio.destination);
+ }
+ source.start();
+ }
+
+ // ../src/systems/sys_audio_source.ts
+ var QUERY3 = 4 /* AudioSource */ | 4194304 /* Transform */;
+ function sys_audio_source(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY3) === QUERY3) {
+ update3(game2, i, delta);
+ }
+ }
+ }
+ function update3(game2, entity, delta) {
+ let audio_source2 = game2.World.AudioSource[entity];
+ let transform2 = game2.World.Transform[entity];
+ if (audio_source2.Current) {
+ audio_source2.Time += delta;
+ if (audio_source2.Time > audio_source2.Current.Exit) {
+ audio_source2.Current = void 0;
+ } else if (audio_source2.Panner) {
+ update_panner(audio_source2.Panner, transform2);
+ }
+ }
+ if (audio_source2.Trigger && !audio_source2.Current) {
+ switch (audio_source2.Trigger.Kind) {
+ case 0 /* Buffer */:
+ play_buffer_clip(game2.Audio, audio_source2.Panner, audio_source2.Trigger);
+ break;
+ case 1 /* Synth */:
+ play_synth_clip(game2.Audio, audio_source2.Panner, audio_source2.Trigger);
+ break;
+ }
+ audio_source2.Current = audio_source2.Trigger;
+ audio_source2.Time = 0;
+ if (audio_source2.Panner) {
+ update_panner(audio_source2.Panner, transform2);
+ }
+ }
+ audio_source2.Trigger = audio_source2.Idle;
+ }
+ var position2 = [0, 0, 0];
+ var forward2 = [0, 0, 0];
+ function update_panner(panner, transform2) {
+ mat4_get_translation(position2, transform2.World);
+ mat4_get_forward(forward2, transform2.World);
+ if (panner.positionX) {
+ panner.positionX.value = position2[0];
+ panner.positionY.value = position2[1];
+ panner.positionZ.value = position2[2];
+ panner.orientationX.value = forward2[0];
+ panner.orientationY.value = forward2[1];
+ panner.orientationZ.value = forward2[2];
+ } else {
+ panner.setPosition(...position2);
+ panner.setOrientation(...forward2);
+ }
+ }
+
+ // ../src/components/com_camera.ts
+ function camera_canvas(projection, clear_color = [0.9, 0.9, 0.9, 1], clear_mask = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 8 /* Camera */;
+ game2.World.Camera[entity] = {
+ Kind: 0 /* Canvas */,
+ Projection: projection,
+ World: mat4_create(),
+ ViewportWidth: 0,
+ ViewportHeight: 0,
+ Pv: mat4_create(),
+ Position: [0, 0, 0],
+ FogColor: clear_color,
+ FogDistance: projection.Far,
+ ClearColor: clear_color,
+ ClearMask: clear_mask
+ };
+ };
+ }
+
+ // ../src/systems/sys_camera.ts
+ var QUERY4 = 4194304 /* Transform */ | 8 /* Camera */;
+ function sys_camera(game2, delta) {
+ game2.Cameras = [];
+ for (let ent = 0; ent < game2.World.Signature.length; ent++) {
+ if ((game2.World.Signature[ent] & QUERY4) === QUERY4) {
+ let camera = game2.World.Camera[ent];
+ let transform2 = game2.World.Transform[ent];
+ mat4_copy(camera.World, transform2.World);
+ switch (camera.Kind) {
+ case 0 /* Canvas */:
+ case 1 /* Target */:
+ update_camera(game2, ent, camera);
+ game2.Cameras.push(ent);
+ break;
+ }
+ }
+ }
+ }
+ function update_camera(game2, entity, camera) {
+ let transform2 = game2.World.Transform[entity];
+ let projection = camera.Projection;
+ mat4_multiply(camera.Pv, projection.Projection, transform2.Self);
+ mat4_get_translation(camera.Position, transform2.World);
+ }
+
+ // ../lib/aabb.ts
+ var BOX = [
+ [0.5, 0.5, 0.5],
+ [0.5, 0.5, -0.5],
+ [-0.5, 0.5, -0.5],
+ [-0.5, 0.5, 0.5],
+ [0.5, -0.5, 0.5],
+ [0.5, -0.5, -0.5],
+ [-0.5, -0.5, -0.5],
+ [-0.5, -0.5, 0.5]
+ ];
+ function compute_aabb(world, aabb) {
+ mat4_get_translation(aabb.Center, world);
+ let min_x, min_y, min_z, max_x, max_y, max_z;
+ min_x = max_x = aabb.Center[0];
+ min_y = max_y = aabb.Center[1];
+ min_z = max_z = aabb.Center[2];
+ let world_vertex = [0, 0, 0];
+ for (let i = 0; i < 8; i++) {
+ let bb_vertex = BOX[i];
+ world_vertex[0] = bb_vertex[0] * aabb.Size[0];
+ world_vertex[1] = bb_vertex[1] * aabb.Size[1];
+ world_vertex[2] = bb_vertex[2] * aabb.Size[2];
+ vec3_transform_position(world_vertex, world_vertex, world);
+ if (world_vertex[0] < min_x) {
+ min_x = world_vertex[0];
+ }
+ if (world_vertex[0] > max_x) {
+ max_x = world_vertex[0];
+ }
+ if (world_vertex[1] < min_y) {
+ min_y = world_vertex[1];
+ }
+ if (world_vertex[1] > max_y) {
+ max_y = world_vertex[1];
+ }
+ if (world_vertex[2] < min_z) {
+ min_z = world_vertex[2];
+ }
+ if (world_vertex[2] > max_z) {
+ max_z = world_vertex[2];
+ }
+ }
+ aabb.Min = [min_x, min_y, min_z];
+ aabb.Max = [max_x, max_y, max_z];
+ aabb.Half[0] = (max_x - min_x) / 2;
+ aabb.Half[1] = (max_y - min_y) / 2;
+ aabb.Half[2] = (max_z - min_z) / 2;
+ }
+ function penetrate_aabb(a2, b) {
+ let distance_x = a2.Center[0] - b.Center[0];
+ let penetration_x = a2.Half[0] + b.Half[0] - Math.abs(distance_x);
+ let distance_y = a2.Center[1] - b.Center[1];
+ let penetration_y = a2.Half[1] + b.Half[1] - Math.abs(distance_y);
+ let distance_z = a2.Center[2] - b.Center[2];
+ let penetration_z = a2.Half[2] + b.Half[2] - Math.abs(distance_z);
+ if (penetration_x < penetration_y && penetration_x < penetration_z) {
+ return [penetration_x * Math.sign(distance_x), 0, 0];
+ } else if (penetration_y < penetration_z) {
+ return [0, penetration_y * Math.sign(distance_y), 0];
+ } else {
+ return [0, 0, penetration_z * Math.sign(distance_z)];
+ }
+ }
+ function intersect_aabb(a2, b) {
+ return a2.Min[0] < b.Max[0] && a2.Max[0] > b.Min[0] && a2.Min[1] < b.Max[1] && a2.Max[1] > b.Min[1] && a2.Min[2] < b.Max[2] && a2.Max[2] > b.Min[2];
+ }
+
+ // ../src/systems/sys_collide.ts
+ var QUERY5 = 4194304 /* Transform */ | 32 /* Collide */;
+ function sys_collide(game2, delta) {
+ let static_colliders = [];
+ let dynamic_colliders = [];
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY5) === QUERY5) {
+ let transform2 = game2.World.Transform[i];
+ let collider = game2.World.Collide[i];
+ collider.Collisions = [];
+ if (collider.New) {
+ collider.New = false;
+ compute_aabb(transform2.World, collider);
+ } else if (collider.Dynamic) {
+ compute_aabb(transform2.World, collider);
+ dynamic_colliders.push(collider);
+ } else {
+ static_colliders.push(collider);
+ }
+ }
+ }
+ for (let i = 0; i < dynamic_colliders.length; i++) {
+ check_collisions(dynamic_colliders[i], static_colliders, static_colliders.length);
+ check_collisions(dynamic_colliders[i], dynamic_colliders, i);
+ }
+ }
+ function check_collisions(collider, colliders, length) {
+ for (let i = 0; i < length; i++) {
+ let other = colliders[i];
+ let collider_can_intersect = collider.Mask & other.Layers;
+ let other_can_intersect = other.Mask & collider.Layers;
+ if (collider_can_intersect || other_can_intersect) {
+ if (intersect_aabb(collider, other)) {
+ let hit = penetrate_aabb(collider, other);
+ if (collider_can_intersect) {
+ collider.Collisions.push({
+ Other: other.EntityId,
+ Hit: hit
+ });
+ }
+ if (other_can_intersect) {
+ other.Collisions.push({
+ Other: collider.EntityId,
+ Hit: vec3_negate([0, 0, 0], hit)
+ });
+ }
+ }
+ }
+ }
+ }
+
+ // ../src/systems/sys_control_always.ts
+ var QUERY6 = 64 /* ControlAlways */ | 4194304 /* Transform */ | 16384 /* Move */;
+ function sys_control_always(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY6) === QUERY6) {
+ update4(game2, i);
+ }
+ }
+ }
+ function update4(game2, entity) {
+ let control = game2.World.ControlAlways[entity];
+ let move2 = game2.World.Move[entity];
+ if (control.Direction) {
+ vec3_add(move2.Direction, move2.Direction, control.Direction);
+ }
+ if (control.Rotation) {
+ quat_multiply(move2.LocalRotation, move2.LocalRotation, control.Rotation);
+ }
+ if (control.Animation) {
+ for (let ent of query_down(game2.World, entity, 1 /* Animate */)) {
+ let animate2 = game2.World.Animate[ent];
+ animate2.Trigger = control.Animation;
+ }
+ }
+ }
+
+ // ../src/systems/sys_control_jump.ts
+ var QUERY7 = 128 /* ControlPlayer */ | 131072 /* RigidBody */;
+ function sys_control_jump(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY7) === QUERY7) {
+ update5(game2, i);
+ }
+ }
+ }
+ function update5(game2, entity) {
+ let control = game2.World.ControlPlayer[entity];
+ let rigid_body2 = game2.World.RigidBody[entity];
+ if (control.Move) {
+ if (game2.InputState["Space"]) {
+ if (rigid_body2.IsGrounded) {
+ rigid_body2.Acceleration[1] = 300;
+ for (let ent of query_down(game2.World, entity, 1 /* Animate */)) {
+ game2.World.Animate[ent].Trigger = "jump";
+ }
+ }
+ }
+ }
+ }
+
+ // ../src/systems/sys_control_keyboard.ts
+ var QUERY8 = 16384 /* Move */ | 128 /* ControlPlayer */;
+ function sys_control_keyboard(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY8) === QUERY8) {
+ update6(game2, i);
+ }
+ }
+ }
+ function update6(game2, entity) {
+ let control = game2.World.ControlPlayer[entity];
+ if (control.Move) {
+ let move2 = game2.World.Move[entity];
+ if (game2.InputState["KeyW"]) {
+ move2.Direction[2] += 1;
+ }
+ if (game2.InputState["KeyA"]) {
+ move2.Direction[0] += 1;
+ }
+ if (game2.InputState["KeyS"]) {
+ move2.Direction[2] -= 1;
+ }
+ if (game2.InputState["KeyD"]) {
+ move2.Direction[0] -= 1;
+ }
+ }
+ if (control.Yaw) {
+ let move2 = game2.World.Move[entity];
+ if (game2.InputState["ArrowLeft"]) {
+ quat_multiply(move2.LocalRotation, move2.LocalRotation, [0, 1, 0, 0]);
+ }
+ if (game2.InputState["ArrowRight"]) {
+ quat_multiply(move2.LocalRotation, move2.LocalRotation, [0, -1, 0, 0]);
+ }
+ }
+ if (control.Pitch) {
+ let transform2 = game2.World.Transform[entity];
+ let move2 = game2.World.Move[entity];
+ let current_pitch = quat_get_pitch(transform2.Rotation);
+ if (game2.InputState["ArrowUp"] && current_pitch > control.MinPitch) {
+ quat_multiply(move2.SelfRotation, move2.SelfRotation, [-1, 0, 0, 0]);
+ }
+ if (game2.InputState["ArrowDown"] && current_pitch < control.MaxPitch) {
+ quat_multiply(move2.SelfRotation, move2.SelfRotation, [1, 0, 0, 0]);
+ }
+ }
+ }
+
+ // ../src/systems/sys_control_mouse_move.ts
+ var QUERY9 = 4194304 /* Transform */ | 16384 /* Move */ | 128 /* ControlPlayer */;
+ var AXIS_X = [1, 0, 0];
+ var AXIS_Y = [0, 1, 0];
+ function sys_control_mouse_move(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY9) === QUERY9) {
+ update7(game2, i);
+ }
+ }
+ }
+ var rotation = [0, 0, 0, 0];
+ function update7(game2, entity) {
+ let control = game2.World.ControlPlayer[entity];
+ let transform2 = game2.World.Transform[entity];
+ if (control.Yaw && game2.InputDelta.MouseX) {
+ let amount = game2.InputDelta.MouseX * control.Yaw * DEG_TO_RAD;
+ quat_from_axis(rotation, AXIS_Y, -amount);
+ quat_multiply(transform2.Rotation, rotation, transform2.Rotation);
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ }
+ if (control.Pitch && game2.InputDelta.MouseY) {
+ let current_pitch = quat_get_pitch(transform2.Rotation);
+ let min_amount = control.MinPitch - current_pitch;
+ let max_amount = control.MaxPitch - current_pitch;
+ let amount = clamp(min_amount, max_amount, game2.InputDelta.MouseY * control.Pitch);
+ quat_from_axis(rotation, AXIS_X, amount * DEG_TO_RAD);
+ quat_multiply(transform2.Rotation, transform2.Rotation, rotation);
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ }
+ }
+
+ // ../src/systems/sys_control_touch_move.ts
+ var QUERY10 = 16384 /* Move */ | 128 /* ControlPlayer */;
+ var AXIS_Y2 = [0, 1, 0];
+ var AXIS_X2 = [1, 0, 0];
+ var DEAD_ZONE = 0.01;
+ var TOUCH_SENSITIVITY = 10;
+ var joystick = [0, 0];
+ var rotation2 = [0, 0, 0, 0];
+ function sys_control_touch_move(game2, delta) {
+ if (game2.InputDelta["Touch0"] === 1) {
+ joystick[0] = game2.InputState["Touch0X"];
+ joystick[1] = game2.InputState["Touch0Y"];
+ }
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY10) === QUERY10) {
+ update8(game2, i);
+ }
+ }
+ }
+ function update8(game2, entity) {
+ let transform2 = game2.World.Transform[entity];
+ let control = game2.World.ControlPlayer[entity];
+ let move2 = game2.World.Move[entity];
+ if (control.Move && game2.InputState["Touch0"] === 1) {
+ let divisor = Math.min(game2.ViewportWidth, game2.ViewportHeight) / 4;
+ let amount_x = (game2.InputState["Touch0X"] - joystick[0]) / divisor;
+ let amount_y = (game2.InputState["Touch0Y"] - joystick[1]) / divisor;
+ if (Math.abs(amount_x) > DEAD_ZONE) {
+ move2.Direction[0] += clamp(-1, 1, -amount_x);
+ }
+ if (Math.abs(amount_y) > DEAD_ZONE) {
+ move2.Direction[2] += clamp(-1, 1, -amount_y);
+ }
+ }
+ if (control.Yaw && game2.InputDelta["Touch1X"]) {
+ let amount = game2.InputDelta["Touch1X"] * control.Yaw * TOUCH_SENSITIVITY * DEG_TO_RAD;
+ quat_from_axis(rotation2, AXIS_Y2, -amount);
+ quat_multiply(transform2.Rotation, rotation2, transform2.Rotation);
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ }
+ if (control.Pitch && game2.InputDelta["Touch1Y"]) {
+ let current_pitch = quat_get_pitch(transform2.Rotation);
+ let min_amount = control.MinPitch - current_pitch;
+ let max_amount = control.MaxPitch - current_pitch;
+ let amount = clamp(
+ min_amount,
+ max_amount,
+ game2.InputDelta["Touch1Y"] * control.Pitch * TOUCH_SENSITIVITY
+ );
+ quat_from_axis(rotation2, AXIS_X2, amount * DEG_TO_RAD);
+ quat_multiply(transform2.Rotation, transform2.Rotation, rotation2);
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ }
+ }
+
+ // ../src/systems/sys_control_xbox.ts
+ var QUERY11 = 16384 /* Move */ | 128 /* ControlPlayer */;
+ var AXIS_Y3 = [0, 1, 0];
+ var AXIS_X3 = [1, 0, 0];
+ var DEAD_ZONE2 = 0.1;
+ function sys_control_xbox(game2, delta) {
+ for (let pad of navigator.getGamepads()) {
+ if (pad) {
+ game2.InputDelta[`pad${pad.index}_axis_1`] = pad.axes[0];
+ game2.InputDelta[`pad${pad.index}_axis_2`] = pad.axes[1];
+ game2.InputDelta[`pad${pad.index}_axis_3`] = pad.axes[2];
+ game2.InputDelta[`pad${pad.index}_axis_4`] = pad.axes[3];
+ }
+ }
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY11) === QUERY11) {
+ update9(game2, i);
+ }
+ }
+ }
+ function update9(game2, entity) {
+ let control = game2.World.ControlPlayer[entity];
+ if (control.Move) {
+ let move2 = game2.World.Move[entity];
+ if (Math.abs(game2.InputDelta["pad0_axis_1"]) > DEAD_ZONE2) {
+ move2.Direction[0] -= game2.InputDelta["pad0_axis_1"];
+ }
+ if (Math.abs(game2.InputDelta["pad0_axis_2"]) > DEAD_ZONE2) {
+ move2.Direction[2] -= game2.InputDelta["pad0_axis_2"];
+ }
+ }
+ if (control.Yaw && Math.abs(game2.InputDelta["pad0_axis_3"]) > DEAD_ZONE2) {
+ let move2 = game2.World.Move[entity];
+ let amount = game2.InputDelta["pad0_axis_3"] * Math.PI;
+ quat_multiply(
+ move2.LocalRotation,
+ move2.LocalRotation,
+ quat_from_axis([0, 0, 0, 1], AXIS_Y3, -amount)
+ );
+ }
+ if (control.Pitch && Math.abs(game2.InputDelta["pad0_axis_4"]) > DEAD_ZONE2) {
+ let transform2 = game2.World.Transform[entity];
+ let move2 = game2.World.Move[entity];
+ let amount = game2.InputDelta["pad0_axis_4"] * Math.PI;
+ let current_pitch = quat_get_pitch(transform2.Rotation);
+ if (amount < 0 && current_pitch > control.MinPitch || amount > 0 && current_pitch < control.MaxPitch) {
+ quat_multiply(
+ move2.SelfRotation,
+ move2.SelfRotation,
+ quat_from_axis([0, 0, 0, 1], AXIS_X3, amount)
+ );
+ }
+ }
+ }
+
+ // ../src/components/com_render.ts
+ function render_colored_shaded(material, mesh, diffuse_color, shininess = 0, emission = 0, specular_rgb = [1, 1, 1], front_face = GL_CW) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 65536 /* Render */;
+ game2.World.Render[entity] = {
+ Kind: 1 /* ColoredShaded */,
+ Material: material,
+ Mesh: mesh,
+ Phase: diffuse_color[3] < 1 ? 1 /* Transparent */ : 0 /* Opaque */,
+ FrontFace: front_face,
+ DiffuseColor: diffuse_color,
+ SpecularColor: [...specular_rgb, shininess],
+ EmissiveColor: [diffuse_color[0], diffuse_color[1], diffuse_color[2], emission]
+ };
+ };
+ }
+ var FLOATS_PER_PARTICLE = 8;
+ var MAX_PARTICLES = 200;
+ function render_particles_colored(material, start_color, start_size, end_color, end_size) {
+ return (game2, entity) => {
+ let buffer = game2.Gl.createBuffer();
+ game2.Gl.bindBuffer(GL_ARRAY_BUFFER, buffer);
+ game2.Gl.bufferData(
+ GL_ARRAY_BUFFER,
+ MAX_PARTICLES * FLOATS_PER_PARTICLE * 4,
+ GL_DYNAMIC_DRAW
+ );
+ game2.World.Signature[entity] |= 65536 /* Render */;
+ game2.World.Render[entity] = {
+ Kind: 8 /* ParticlesColored */,
+ Material: material,
+ Phase: start_color[3] < 1 || end_color[3] < 1 ? 1 /* Transparent */ : 0 /* Opaque */,
+ Buffer: buffer,
+ ColorStart: start_color,
+ ColorEnd: end_color,
+ Size: [start_size, end_size],
+ FrontFace: GL_CW
+ };
+ };
+ }
+
+ // ../src/components/com_transform.ts
+ function transform(translation = [0, 0, 0], rotation3 = [0, 0, 0, 1], scale = [1, 1, 1], is_gyroscope = false) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 4194304 /* Transform */ | 256 /* Dirty */;
+ game2.World.Transform[entity] = {
+ World: mat4_create(),
+ Self: mat4_create(),
+ Translation: translation,
+ Rotation: rotation3,
+ Scale: scale,
+ IsGyroscope: is_gyroscope
+ };
+ };
+ }
+ function set_position(x, y, z) {
+ return (game2, entity) => {
+ let local = game2.World.Transform[entity];
+ local.Translation[0] = x;
+ local.Translation[1] = y;
+ local.Translation[2] = z;
+ };
+ }
+ function copy_position(translation) {
+ return (game2, entity) => {
+ let local = game2.World.Transform[entity];
+ vec3_copy(local.Translation, translation);
+ };
+ }
+ function set_rotation(x, y, z) {
+ return (game2, entity) => {
+ let local = game2.World.Transform[entity];
+ quat_from_euler(local.Rotation, x, y, z);
+ };
+ }
+ function copy_rotation(rotation3) {
+ return (game2, entity) => {
+ let local = game2.World.Transform[entity];
+ quat_copy(local.Rotation, rotation3);
+ };
+ }
+ function set_scale(x, y, z) {
+ return (game2, entity) => {
+ let local = game2.World.Transform[entity];
+ local.Scale[0] = x;
+ local.Scale[1] = y;
+ local.Scale[2] = z;
+ };
+ }
+
+ // ../src/systems/sys_draw.ts
+ var QUERY12 = 4194304 /* Transform */ | 512 /* Draw */;
+ function sys_draw(game2, delta) {
+ game2.ForegroundContext.resetTransform();
+ game2.ForegroundContext.clearRect(0, 0, game2.ViewportWidth, game2.ViewportHeight);
+ let position3 = [0, 0, 0];
+ let camera_entity = game2.Cameras[0];
+ let main_camera = game2.World.Camera[camera_entity];
+ if (!main_camera || main_camera.Kind === 2 /* Xr */) {
+ return;
+ }
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY12) == QUERY12) {
+ mat4_get_translation(position3, game2.World.Transform[i].World);
+ vec3_transform_position(position3, position3, main_camera.Pv);
+ if (position3[2] < -1 || position3[2] > 1) {
+ continue;
+ }
+ game2.ForegroundContext.setTransform(
+ 1,
+ 0,
+ 0,
+ 1,
+ 0.5 * (position3[0] + 1) * game2.ViewportWidth,
+ 0.5 * (-position3[1] + 1) * game2.ViewportHeight
+ );
+ let draw = game2.World.Draw[i];
+ switch (draw.Kind) {
+ case 0 /* Text */:
+ draw_text(game2, draw);
+ break;
+ case 3 /* Selection */:
+ draw_selection(game2, draw);
+ break;
+ }
+ }
+ }
+ }
+ function draw_text(game2, draw) {
+ game2.ForegroundContext.textAlign = "center";
+ game2.ForegroundContext.font = draw.Font;
+ game2.ForegroundContext.fillStyle = draw.FillStyle;
+ game2.ForegroundContext.fillText(draw.Text, 0, 0);
+ }
+ function draw_selection(game2, draw) {
+ game2.ForegroundContext.strokeStyle = draw.Color;
+ game2.ForegroundContext.strokeRect(-draw.Size / 2, -draw.Size / 2, draw.Size, draw.Size);
+ }
+
+ // ../src/systems/sys_lifespan.ts
+ var QUERY13 = 2048 /* Lifespan */;
+ function sys_lifespan(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY13) == QUERY13) {
+ update10(game2, i, delta);
+ }
+ }
+ }
+ function update10(game2, entity, delta) {
+ let lifespan2 = game2.World.Lifespan[entity];
+ lifespan2.Remaining -= delta;
+ if (lifespan2.Remaining < 0) {
+ if (lifespan2.Action) {
+ dispatch(game2, lifespan2.Action, entity);
+ }
+ destroy_all(game2.World, entity);
+ }
+ }
+
+ // ../src/systems/sys_light.ts
+ var QUERY14 = 4194304 /* Transform */ | 4096 /* Light */;
+ function sys_light(game2, delta) {
+ game2.LightPositions.fill(0);
+ game2.LightDetails.fill(0);
+ let counter = 0;
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY14) === QUERY14) {
+ update11(game2, i, counter++);
+ }
+ }
+ }
+ var world_pos = [0, 0, 0];
+ function update11(game2, entity, idx) {
+ let light = game2.World.Light[entity];
+ let transform2 = game2.World.Transform[entity];
+ if (light.Kind === 2 /* Directional */) {
+ mat4_get_forward(world_pos, transform2.World);
+ } else {
+ mat4_get_translation(world_pos, transform2.World);
+ }
+ game2.LightPositions[4 * idx + 0] = world_pos[0];
+ game2.LightPositions[4 * idx + 1] = world_pos[1];
+ game2.LightPositions[4 * idx + 2] = world_pos[2];
+ game2.LightPositions[4 * idx + 3] = light.Kind;
+ game2.LightDetails[4 * idx + 0] = light.Color[0];
+ game2.LightDetails[4 * idx + 1] = light.Color[1];
+ game2.LightDetails[4 * idx + 2] = light.Color[2];
+ game2.LightDetails[4 * idx + 3] = light.Intensity;
+ }
+
+ // ../src/systems/sys_mimic.ts
+ var QUERY15 = 4194304 /* Transform */ | 8192 /* Mimic */;
+ function sys_mimic(game2, delta) {
+ for (let ent = 0; ent < game2.World.Signature.length; ent++) {
+ if ((game2.World.Signature[ent] & QUERY15) === QUERY15) {
+ update12(game2, ent);
+ }
+ }
+ }
+ var target_position = [0, 0, 0];
+ var target_rotation = [0, 0, 0, 1];
+ function update12(game2, entity) {
+ let transform2 = game2.World.Transform[entity];
+ let mimic2 = game2.World.Mimic[entity];
+ let target_transform = game2.World.Transform[mimic2.Target];
+ mat4_get_translation(target_position, target_transform.World);
+ mat4_get_rotation(target_rotation, target_transform.World);
+ vec3_lerp(transform2.Translation, transform2.Translation, target_position, mimic2.Stiffness);
+ quat_slerp(transform2.Rotation, transform2.Rotation, target_rotation, mimic2.Stiffness);
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ }
+
+ // ../src/systems/sys_move.ts
+ var QUERY16 = 4194304 /* Transform */ | 16384 /* Move */;
+ function sys_move(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY16) === QUERY16) {
+ update13(game2, i, delta);
+ }
+ }
+ }
+ function update13(game2, entity, delta) {
+ let transform2 = game2.World.Transform[entity];
+ let move2 = game2.World.Move[entity];
+ if (move2.Direction[0] !== 0 || move2.Direction[1] !== 0 || move2.Direction[2] !== 0) {
+ let amount = Math.min(1, vec3_length(move2.Direction));
+ vec3_transform_direction(move2.Direction, move2.Direction, transform2.World);
+ if (transform2.Parent !== void 0) {
+ let parent = game2.World.Transform[transform2.Parent];
+ vec3_transform_direction(move2.Direction, move2.Direction, parent.Self);
+ }
+ vec3_normalize(move2.Direction, move2.Direction);
+ vec3_scale(move2.Direction, move2.Direction, amount * move2.MoveSpeed * delta);
+ vec3_add(transform2.Translation, transform2.Translation, move2.Direction);
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ vec3_set(move2.Direction, 0, 0, 0);
+ }
+ if (move2.LocalRotation[3] < 1) {
+ quat_multiply(move2.LocalRotation, move2.LocalRotation, transform2.Rotation);
+ let t = Math.min(1, move2.RotationSpeed / Math.PI * delta);
+ quat_slerp(transform2.Rotation, transform2.Rotation, move2.LocalRotation, t);
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ quat_set(move2.LocalRotation, 0, 0, 0, 1);
+ }
+ if (move2.SelfRotation[3] < 1) {
+ quat_multiply(move2.SelfRotation, transform2.Rotation, move2.SelfRotation);
+ let t = Math.min(1, move2.RotationSpeed / Math.PI * delta);
+ quat_slerp(transform2.Rotation, transform2.Rotation, move2.SelfRotation, t);
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ quat_set(move2.SelfRotation, 0, 0, 0, 1);
+ }
+ }
+
+ // ../src/systems/sys_particles.ts
+ var QUERY17 = 4194304 /* Transform */ | 1024 /* EmitParticles */;
+ function sys_particles(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY17) == QUERY17) {
+ update14(game2, i, delta);
+ }
+ }
+ }
+ var origin = [0, 0, 0];
+ var forward3 = [0, 0, 0];
+ function update14(game2, entity, delta) {
+ let emitter = game2.World.EmitParticles[entity];
+ let transform2 = game2.World.Transform[entity];
+ emitter.SinceLast += delta;
+ if (emitter.SinceLast > emitter.Frequency) {
+ emitter.SinceLast = 0;
+ mat4_get_translation(origin, transform2.World);
+ mat4_get_forward(forward3, transform2.World);
+ emitter.Instances.push(...origin, 0);
+ emitter.Instances.push(...forward3, Math.random());
+ }
+ for (let i = 0; i < emitter.Instances.length; ) {
+ emitter.Instances[i + 3] += delta;
+ if (emitter.Instances[i + 3] > emitter.Lifespan) {
+ emitter.Instances.splice(i, FLOATS_PER_PARTICLE);
+ } else {
+ i += FLOATS_PER_PARTICLE;
+ }
+ }
+ }
+
+ // ../src/components/com_rigid_body.ts
+ function rigid_body(kind, bounciness = 0.5) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 131072 /* RigidBody */;
+ game2.World.RigidBody[entity] = {
+ Kind: kind,
+ ColliderId: entity,
+ Bounciness: bounciness,
+ Acceleration: [0, 0, 0],
+ VelocityLinear: [0, 0, 0],
+ VelocityResolved: [0, 0, 0],
+ LastPosition: [0, 0, 0],
+ IsGrounded: false
+ };
+ };
+ }
+
+ // ../src/systems/sys_physics_integrate.ts
+ var QUERY18 = 4194304 /* Transform */ | 131072 /* RigidBody */;
+ var GRAVITY = -9.81;
+ function sys_physics_integrate(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY18) === QUERY18) {
+ update15(game2, i, delta);
+ }
+ }
+ }
+ var velocity_delta = [0, 0, 0];
+ function update15(game2, entity, delta) {
+ let transform2 = game2.World.Transform[entity];
+ let rigid_body2 = game2.World.RigidBody[entity];
+ if (rigid_body2.Kind === 1 /* Dynamic */) {
+ rigid_body2.VelocityLinear[1] += GRAVITY * delta;
+ vec3_scale(rigid_body2.Acceleration, rigid_body2.Acceleration, delta);
+ vec3_add(rigid_body2.VelocityLinear, rigid_body2.VelocityLinear, rigid_body2.Acceleration);
+ vec3_scale(velocity_delta, rigid_body2.VelocityLinear, delta);
+ vec3_add(transform2.Translation, transform2.Translation, velocity_delta);
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ vec3_set(rigid_body2.Acceleration, 0, 0, 0);
+ }
+ }
+
+ // ../src/systems/sys_physics_kinematic.ts
+ var QUERY19 = 4194304 /* Transform */ | 131072 /* RigidBody */;
+ function sys_physics_kinematic(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY19) === QUERY19) {
+ update16(game2, i, delta);
+ }
+ }
+ }
+ var current_position = [0, 0, 0];
+ var movement_delta = [0, 0, 0];
+ function update16(game2, entity, delta) {
+ let transform2 = game2.World.Transform[entity];
+ let rigid_body2 = game2.World.RigidBody[entity];
+ mat4_get_translation(current_position, transform2.World);
+ if (rigid_body2.Kind === 2 /* Kinematic */) {
+ vec3_subtract(movement_delta, current_position, rigid_body2.LastPosition);
+ vec3_scale(rigid_body2.VelocityLinear, movement_delta, 1 / delta);
+ }
+ vec3_copy(rigid_body2.LastPosition, current_position);
+ }
+
+ // ../src/systems/sys_physics_resolve.ts
+ var QUERY20 = 4194304 /* Transform */ | 32 /* Collide */ | 131072 /* RigidBody */;
+ function sys_physics_resolve(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY20) === QUERY20) {
+ update17(game2, i);
+ }
+ }
+ for (let ent = 0; ent < game2.World.Signature.length; ent++) {
+ if ((game2.World.Signature[ent] & QUERY20) === QUERY20) {
+ let rigid_body2 = game2.World.RigidBody[ent];
+ if (rigid_body2.Kind === 1 /* Dynamic */) {
+ vec3_copy(rigid_body2.VelocityLinear, rigid_body2.VelocityResolved);
+ }
+ }
+ }
+ }
+ var a = [0, 0, 0];
+ var response = [0, 0, 0];
+ function update17(game2, entity) {
+ let transform2 = game2.World.Transform[entity];
+ let rigid_body2 = game2.World.RigidBody[entity];
+ let collide2 = game2.World.Collide[rigid_body2.ColliderId];
+ if (rigid_body2.Kind === 1 /* Dynamic */) {
+ rigid_body2.IsGrounded = false;
+ vec3_set(response, 0, 0, 0);
+ for (let i = 0; i < collide2.Collisions.length; i++) {
+ let collision = collide2.Collisions[i];
+ if (game2.World.Signature[collision.Other] & 131072 /* RigidBody */) {
+ let other_body = game2.World.RigidBody[collision.Other];
+ switch (other_body.Kind) {
+ case 0 /* Static */:
+ vec3_extend(response, collision.Hit, response);
+ vec3_normalize(a, collision.Hit);
+ vec3_scale(a, a, -2 * vec3_dot(rigid_body2.VelocityLinear, a));
+ vec3_add(rigid_body2.VelocityResolved, rigid_body2.VelocityLinear, a);
+ break;
+ case 1 /* Dynamic */:
+ case 2 /* Kinematic */:
+ vec3_extend(response, response, collision.Hit);
+ vec3_copy(rigid_body2.VelocityResolved, other_body.VelocityLinear);
+ break;
+ }
+ vec3_scale(
+ rigid_body2.VelocityResolved,
+ rigid_body2.VelocityResolved,
+ rigid_body2.Bounciness
+ );
+ if (collision.Hit[1] > 0) {
+ rigid_body2.IsGrounded = true;
+ }
+ }
+ }
+ if (response[0] || response[1] || response[2]) {
+ if (Math.abs(response[0]) < 0.1) {
+ response[0] = 0;
+ }
+ if (Math.abs(response[2]) < 0.1) {
+ response[2] = 0;
+ }
+ vec3_add(transform2.Translation, transform2.Translation, response);
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ } else {
+ vec3_copy(rigid_body2.VelocityResolved, rigid_body2.VelocityLinear);
+ }
+ }
+ }
+ function vec3_extend(out, a2, b) {
+ if (a2[0] >= 0 && b[0] >= 0) {
+ out[0] = Math.max(a2[0], b[0]);
+ } else if (a2[0] <= 0 && b[0] <= 0) {
+ out[0] = Math.min(a2[0], b[0]);
+ } else {
+ out[0] = a2[0];
+ }
+ if (a2[1] >= 0 && b[1] >= 0) {
+ out[1] = Math.max(a2[1], b[1]);
+ } else if (a2[1] <= 0 && b[1] <= 0) {
+ out[1] = Math.min(a2[1], b[1]);
+ } else if (a2[1] > b[1]) {
+ out[1] = a2[1];
+ }
+ if (a2[2] >= 0 && b[2] >= 0) {
+ out[2] = Math.max(a2[2], b[2]);
+ } else if (a2[0] <= 0 && b[0] <= 0) {
+ out[2] = Math.min(a2[2], b[2]);
+ } else {
+ out[2] = a2[2];
+ }
+ }
+
+ // ../src/components/com_task.ts
+ function task_delay(duration) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 1048576 /* Task */;
+ game2.World.Task[entity] = {
+ Kind: 1 /* Delay */,
+ Remaining: duration
+ };
+ };
+ }
+ function task_then(callback2) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 1048576 /* Task */;
+ game2.World.Task[entity] = {
+ Kind: 2 /* Then */,
+ Callback: callback2
+ };
+ };
+ }
+
+ // ../src/systems/sys_poll.ts
+ var QUERY21 = 1048576 /* Task */;
+ function sys_poll(game2, delta) {
+ let tasks_to_complete = [];
+ for (let ent = 0; ent < game2.World.Signature.length; ent++) {
+ if ((game2.World.Signature[ent] & QUERY21) === QUERY21) {
+ if (has_blocking_dependencies(game2.World, ent)) {
+ continue;
+ }
+ let task = game2.World.Task[ent];
+ switch (task.Kind) {
+ case 0 /* When */: {
+ if (task.Predicate(ent)) {
+ tasks_to_complete.push(ent);
+ }
+ break;
+ }
+ case 1 /* Delay */: {
+ task.Remaining -= delta;
+ if (task.Remaining < 0) {
+ tasks_to_complete.push(ent);
+ }
+ break;
+ }
+ case 2 /* Then */: {
+ tasks_to_complete.push(ent);
+ break;
+ }
+ }
+ }
+ }
+ for (let ent of tasks_to_complete) {
+ let task = game2.World.Task[ent];
+ switch (task.Kind) {
+ case 2 /* Then */:
+ task.Callback(ent);
+ case 0 /* When */:
+ case 1 /* Delay */:
+ destroy_entity(game2.World, ent);
+ }
+ delete game2.World.Task[ent];
+ }
+ }
+ function has_blocking_dependencies(world, entity) {
+ if (world.Signature[entity] & 16 /* Children */) {
+ let children2 = world.Children[entity];
+ for (let child of children2.Children) {
+ if (world.Signature[child] & 1048576 /* Task */) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ // ../lib/texture.ts
+ function resize_texture_rgba8(gl, texture, width, height) {
+ gl.bindTexture(GL_TEXTURE_2D, texture);
+ gl.texImage2D(
+ GL_TEXTURE_2D,
+ 0,
+ GL_RGBA8,
+ width,
+ height,
+ 0,
+ GL_RGBA,
+ GL_DATA_UNSIGNED_BYTE,
+ null
+ );
+ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ return texture;
+ }
+ function resize_texture_rgba16f(gl, texture, width, height) {
+ gl.bindTexture(GL_TEXTURE_2D, texture);
+ gl.texImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, width, height, 0, GL_RGBA, GL_DATA_FLOAT, null);
+ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ return texture;
+ }
+ function resize_texture_rgba32f(gl, texture, width, height) {
+ gl.bindTexture(GL_TEXTURE_2D, texture);
+ gl.texImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, width, height, 0, GL_RGBA, GL_DATA_FLOAT, null);
+ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ return texture;
+ }
+ function resize_texture_depth24(gl, texture, width, height) {
+ gl.bindTexture(GL_TEXTURE_2D, texture);
+ gl.texImage2D(
+ GL_TEXTURE_2D,
+ 0,
+ GL_DEPTH_COMPONENT24,
+ width,
+ height,
+ 0,
+ GL_DEPTH_COMPONENT,
+ GL_DATA_UNSIGNED_INT,
+ null
+ );
+ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
+ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ return texture;
+ }
+
+ // ../lib/framebuffer.ts
+ function resize_forward_target(gl, target, width, height) {
+ target.Width = width;
+ target.Height = height;
+ resize_texture_rgba8(gl, target.ColorTexture, target.Width, target.Height);
+ resize_texture_depth24(gl, target.DepthTexture, target.Width, target.Height);
+ }
+ function resize_hdr_target(gl, target, width, height) {
+ target.Width = width;
+ target.Height = height;
+ resize_texture_rgba16f(gl, target.ColorTexture, target.Width, target.Height);
+ resize_texture_depth24(gl, target.DepthTexture, target.Width, target.Height);
+ }
+ function resize_deferred_target(gl, target, width, height) {
+ target.Width = width;
+ target.Height = height;
+ resize_texture_rgba32f(gl, target.DiffuseTexture, target.Width, target.Height);
+ resize_texture_rgba32f(gl, target.SpecularTexture, target.Width, target.Height);
+ resize_texture_rgba32f(gl, target.PositionTexture, target.Width, target.Height);
+ resize_texture_rgba32f(gl, target.NormalTexture, target.Width, target.Height);
+ resize_texture_depth24(gl, target.DepthTexture, target.Width, target.Height);
+ }
+
+ // ../src/systems/sys_render_forward.ts
+ var QUERY22 = 4194304 /* Transform */ | 65536 /* Render */;
+ function sys_render_forward(game2, delta) {
+ for (let camera_entity of game2.Cameras) {
+ let camera = game2.World.Camera[camera_entity];
+ switch (camera.Kind) {
+ case 0 /* Canvas */:
+ game2.Gl.bindFramebuffer(GL_FRAMEBUFFER, null);
+ game2.Gl.viewport(0, 0, camera.ViewportWidth, camera.ViewportHeight);
+ game2.Gl.clearColor(...camera.ClearColor);
+ game2.Gl.clear(camera.ClearMask);
+ render_all(game2, camera);
+ break;
+ case 1 /* Target */:
+ if (camera.Target.Kind === 0 /* Forward */) {
+ game2.Gl.bindFramebuffer(GL_FRAMEBUFFER, camera.Target.Framebuffer);
+ game2.Gl.viewport(0, 0, camera.Target.Width, camera.Target.Height);
+ game2.Gl.clearColor(...camera.ClearColor);
+ game2.Gl.clear(camera.ClearMask);
+ render_all(game2, camera, camera.Target.ColorTexture);
+ }
+ break;
+ }
+ }
+ }
+ function render_all(game2, eye, current_target) {
+ let current_material = null;
+ let current_front_face = null;
+ let transparent_entities = [];
+ for (let ent = 0; ent < game2.World.Signature.length; ent++) {
+ if ((game2.World.Signature[ent] & QUERY22) === QUERY22) {
+ let render = game2.World.Render[ent];
+ if (render.Phase === 1 /* Transparent */) {
+ transparent_entities.push(ent);
+ continue;
+ }
+ if (render.Material !== current_material) {
+ current_material = render.Material;
+ use_material(game2, render, eye);
+ }
+ if (render.FrontFace !== current_front_face) {
+ current_front_face = render.FrontFace;
+ game2.Gl.frontFace(render.FrontFace);
+ }
+ draw_entity(game2, ent, current_target);
+ }
+ }
+ transparent_entities.sort((a2, b) => {
+ let transform_a = game2.World.Transform[a2];
+ let transform_b = game2.World.Transform[b];
+ return mat4_distance_squared_from_point(transform_b.World, eye.Position) - mat4_distance_squared_from_point(transform_a.World, eye.Position);
+ });
+ game2.Gl.enable(GL_BLEND);
+ for (let i = 0; i < transparent_entities.length; i++) {
+ let ent = transparent_entities[i];
+ let render = game2.World.Render[ent];
+ if (render.Material !== current_material) {
+ current_material = render.Material;
+ use_material(game2, render, eye);
+ }
+ if (render.FrontFace !== current_front_face) {
+ current_front_face = render.FrontFace;
+ game2.Gl.frontFace(render.FrontFace);
+ }
+ draw_entity(game2, ent, current_target);
+ }
+ game2.Gl.disable(GL_BLEND);
+ }
+ function use_material(game2, render, eye) {
+ switch (render.Kind) {
+ case 0 /* ColoredUnlit */:
+ game2.Gl.useProgram(render.Material.Program);
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+ break;
+ case 1 /* ColoredShaded */:
+ game2.Gl.useProgram(render.Material.Program);
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+ game2.Gl.uniform3fv(render.Material.Locations.Eye, eye.Position);
+ game2.Gl.uniform4fv(render.Material.Locations.LightPositions, game2.LightPositions);
+ game2.Gl.uniform4fv(render.Material.Locations.LightDetails, game2.LightDetails);
+ break;
+ case 2 /* ColoredShadows */:
+ game2.Gl.useProgram(render.Material.Program);
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+ game2.Gl.uniform3fv(render.Material.Locations.Eye, eye.Position);
+ game2.Gl.uniform4fv(render.Material.Locations.LightPositions, game2.LightPositions);
+ game2.Gl.uniform4fv(render.Material.Locations.LightDetails, game2.LightDetails);
+ game2.Gl.activeTexture(GL_TEXTURE0);
+ game2.Gl.bindTexture(GL_TEXTURE_2D, game2.Targets.Sun.DepthTexture);
+ game2.Gl.uniform1i(render.Material.Locations.ShadowMap, 0);
+ let light_entity = first_having(game2.World, 8 /* Camera */ | 4096 /* Light */);
+ if (light_entity) {
+ let light_camera = game2.World.Camera[light_entity];
+ if (light_camera.Kind === 2 /* Xr */) {
+ throw new Error("XR cameras cannot be shadow sources.");
+ }
+ game2.Gl.uniformMatrix4fv(
+ render.Material.Locations.ShadowSpace,
+ false,
+ light_camera.Pv
+ );
+ }
+ break;
+ case 4 /* TexturedUnlit */:
+ game2.Gl.useProgram(render.Material.Program);
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+ break;
+ case 5 /* TexturedShaded */:
+ game2.Gl.useProgram(render.Material.Program);
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+ game2.Gl.uniform3fv(render.Material.Locations.Eye, eye.Position);
+ game2.Gl.uniform4fv(render.Material.Locations.LightPositions, game2.LightPositions);
+ game2.Gl.uniform4fv(render.Material.Locations.LightDetails, game2.LightDetails);
+ break;
+ case 6 /* MappedShaded */:
+ game2.Gl.useProgram(render.Material.Program);
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+ game2.Gl.uniform3fv(render.Material.Locations.Eye, eye.Position);
+ game2.Gl.uniform4fv(render.Material.Locations.LightPositions, game2.LightPositions);
+ game2.Gl.uniform4fv(render.Material.Locations.LightDetails, game2.LightDetails);
+ break;
+ case 7 /* Vertices */:
+ case 8 /* ParticlesColored */:
+ case 9 /* ParticlesTextured */:
+ game2.Gl.useProgram(render.Material.Program);
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+ break;
+ }
+ }
+ function draw_entity(game2, entity, current_target) {
+ let transform2 = game2.World.Transform[entity];
+ let render = game2.World.Render[entity];
+ switch (render.Kind) {
+ case 0 /* ColoredUnlit */:
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+ game2.Gl.uniform4fv(render.Material.Locations.Color, render.Color);
+ game2.Gl.bindVertexArray(render.Mesh.Vao);
+ game2.Gl.drawElements(
+ render.Material.Mode,
+ render.Mesh.IndexCount,
+ GL_UNSIGNED_SHORT,
+ 0
+ );
+ game2.Gl.bindVertexArray(null);
+ break;
+ case 1 /* ColoredShaded */:
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.Self, false, transform2.Self);
+ game2.Gl.uniform4fv(render.Material.Locations.DiffuseColor, render.DiffuseColor);
+ game2.Gl.uniform4fv(render.Material.Locations.SpecularColor, render.SpecularColor);
+ game2.Gl.uniform4fv(render.Material.Locations.EmissiveColor, render.EmissiveColor);
+ game2.Gl.bindVertexArray(render.Mesh.Vao);
+ game2.Gl.drawElements(
+ render.Material.Mode,
+ render.Mesh.IndexCount,
+ GL_UNSIGNED_SHORT,
+ 0
+ );
+ game2.Gl.bindVertexArray(null);
+ break;
+ case 2 /* ColoredShadows */:
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.Self, false, transform2.Self);
+ game2.Gl.uniform4fv(render.Material.Locations.DiffuseColor, render.DiffuseColor);
+ game2.Gl.uniform4fv(render.Material.Locations.SpecularColor, render.SpecularColor);
+ game2.Gl.uniform4fv(render.Material.Locations.EmissiveColor, render.EmissiveColor);
+ game2.Gl.bindVertexArray(render.Mesh.Vao);
+ game2.Gl.drawElements(
+ render.Material.Mode,
+ render.Mesh.IndexCount,
+ GL_UNSIGNED_SHORT,
+ 0
+ );
+ game2.Gl.bindVertexArray(null);
+ break;
+ case 4 /* TexturedUnlit */:
+ if (render.Texture === current_target) {
+ break;
+ }
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+ game2.Gl.uniform4fv(render.Material.Locations.Color, render.Color);
+ game2.Gl.activeTexture(GL_TEXTURE0);
+ game2.Gl.bindTexture(GL_TEXTURE_2D, render.Texture);
+ game2.Gl.uniform1i(render.Material.Locations.TextureMap, 0);
+ game2.Gl.bindVertexArray(render.Mesh.Vao);
+ game2.Gl.drawElements(
+ render.Material.Mode,
+ render.Mesh.IndexCount,
+ GL_UNSIGNED_SHORT,
+ 0
+ );
+ game2.Gl.bindVertexArray(null);
+ break;
+ case 5 /* TexturedShaded */:
+ if (render.Texture === current_target) {
+ break;
+ }
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.Self, false, transform2.Self);
+ game2.Gl.uniform4fv(render.Material.Locations.DiffuseColor, render.DiffuseColor);
+ game2.Gl.uniform4fv(render.Material.Locations.SpecularColor, render.SpecularColor);
+ game2.Gl.uniform4fv(render.Material.Locations.EmissiveColor, render.EmissiveColor);
+ game2.Gl.activeTexture(GL_TEXTURE0);
+ game2.Gl.bindTexture(GL_TEXTURE_2D, render.Texture);
+ game2.Gl.uniform1i(render.Material.Locations.DiffuseMap, 0);
+ game2.Gl.bindVertexArray(render.Mesh.Vao);
+ game2.Gl.drawElements(
+ render.Material.Mode,
+ render.Mesh.IndexCount,
+ GL_UNSIGNED_SHORT,
+ 0
+ );
+ game2.Gl.bindVertexArray(null);
+ break;
+ case 6 /* MappedShaded */:
+ if (render.DiffuseMap === current_target) {
+ break;
+ }
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.Self, false, transform2.Self);
+ game2.Gl.uniform4fv(render.Material.Locations.DiffuseColor, render.DiffuseColor);
+ game2.Gl.activeTexture(GL_TEXTURE1);
+ game2.Gl.bindTexture(GL_TEXTURE_2D, render.DiffuseMap);
+ game2.Gl.uniform1i(render.Material.Locations.DiffuseMap, 1);
+ game2.Gl.activeTexture(GL_TEXTURE2);
+ game2.Gl.bindTexture(GL_TEXTURE_2D, render.NormalMap);
+ game2.Gl.uniform1i(render.Material.Locations.NormalMap, 2);
+ game2.Gl.activeTexture(GL_TEXTURE3);
+ game2.Gl.bindTexture(GL_TEXTURE_2D, render.RoughnessMap);
+ game2.Gl.uniform1i(render.Material.Locations.RoughnessMap, 3);
+ game2.Gl.bindVertexArray(render.Mesh.Vao);
+ game2.Gl.drawElements(
+ render.Material.Mode,
+ render.Mesh.IndexCount,
+ GL_UNSIGNED_SHORT,
+ 0
+ );
+ game2.Gl.bindVertexArray(null);
+ break;
+ case 7 /* Vertices */:
+ game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+ game2.Gl.uniform4fv(render.Material.Locations.Color, render.Color);
+ game2.Gl.bindBuffer(GL_ARRAY_BUFFER, render.VertexBuffer);
+ game2.Gl.enableVertexAttribArray(0 /* Position */);
+ game2.Gl.vertexAttribPointer(0 /* Position */, 3, GL_FLOAT, false, 0, 0);
+ game2.Gl.drawArrays(render.Material.Mode, 0, render.IndexCount);
+ break;
+ case 8 /* ParticlesColored */: {
+ let emitter = game2.World.EmitParticles[entity];
+ game2.Gl.uniform4fv(render.Material.Locations.ColorStart, render.ColorStart);
+ game2.Gl.uniform4fv(render.Material.Locations.ColorEnd, render.ColorEnd);
+ game2.Gl.uniform4f(
+ render.Material.Locations.Details,
+ emitter.Lifespan,
+ emitter.Speed,
+ ...render.Size
+ );
+ let instances = Float32Array.from(emitter.Instances);
+ game2.Gl.bindBuffer(GL_ARRAY_BUFFER, render.Buffer);
+ game2.Gl.bufferSubData(GL_ARRAY_BUFFER, 0, instances);
+ game2.Gl.enableVertexAttribArray(render.Material.Locations.OriginAge);
+ game2.Gl.vertexAttribPointer(
+ render.Material.Locations.OriginAge,
+ 4,
+ GL_FLOAT,
+ false,
+ FLOATS_PER_PARTICLE * 4,
+ 0
+ );
+ game2.Gl.enableVertexAttribArray(render.Material.Locations.Direction);
+ game2.Gl.vertexAttribPointer(
+ render.Material.Locations.Direction,
+ 3,
+ GL_FLOAT,
+ false,
+ FLOATS_PER_PARTICLE * 4,
+ 4 * 4
+ );
+ game2.Gl.drawArrays(
+ render.Material.Mode,
+ 0,
+ emitter.Instances.length / FLOATS_PER_PARTICLE
+ );
+ break;
+ }
+ }
+ }
+
+ // ../lib/projection.ts
+ function perspective(fov_y, near, far) {
+ return {
+ Kind: 0 /* Perspective */,
+ FovY: fov_y,
+ Near: near,
+ Far: far,
+ Projection: mat4_create(),
+ Inverse: mat4_create()
+ };
+ }
+
+ // ../src/systems/sys_resize.ts
+ var QUERY23 = 8 /* Camera */;
+ function sys_resize(game2, delta) {
+ if (game2.ViewportWidth != window.innerWidth || game2.ViewportHeight != window.innerHeight) {
+ game2.ViewportResized = true;
+ }
+ if (game2.ViewportResized) {
+ game2.ViewportWidth = game2.BackgroundCanvas.width = game2.SceneCanvas.width = game2.ForegroundCanvas.width = window.innerWidth;
+ game2.ViewportHeight = game2.BackgroundCanvas.height = game2.SceneCanvas.height = game2.ForegroundCanvas.height = window.innerHeight;
+ for (let target of Object.values(game2.Targets)) {
+ if (target.ResizeToViewport) {
+ switch (target.Kind) {
+ case 0 /* Forward */:
+ resize_forward_target(
+ game2.Gl,
+ target,
+ game2.ViewportWidth,
+ game2.ViewportHeight
+ );
+ break;
+ case 1 /* Hdr */:
+ resize_hdr_target(game2.Gl, target, game2.ViewportWidth, game2.ViewportHeight);
+ break;
+ case 2 /* Deferred */:
+ resize_deferred_target(
+ game2.Gl,
+ target,
+ game2.ViewportWidth,
+ game2.ViewportHeight
+ );
+ break;
+ }
+ }
+ }
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY23) === QUERY23) {
+ let camera = game2.World.Camera[i];
+ switch (camera.Kind) {
+ case 0 /* Canvas */:
+ camera.ViewportWidth = game2.ViewportWidth;
+ camera.ViewportHeight = game2.ViewportHeight;
+ update_projection(
+ camera.Projection,
+ game2.ViewportWidth / game2.ViewportHeight
+ );
+ break;
+ case 1 /* Target */:
+ camera.ViewportWidth = game2.ViewportWidth;
+ camera.ViewportHeight = game2.ViewportHeight;
+ update_projection(
+ camera.Projection,
+ camera.Target.Width / camera.Target.Height
+ );
+ break;
+ case 2 /* Xr */:
+ break;
+ }
+ }
+ }
+ }
+ }
+ function update_projection(projection, aspect) {
+ switch (projection.Kind) {
+ case 0 /* Perspective */: {
+ if (aspect < 1) {
+ mat4_from_perspective(
+ projection.Projection,
+ projection.FovY / aspect,
+ aspect,
+ projection.Near,
+ projection.Far
+ );
+ } else {
+ mat4_from_perspective(
+ projection.Projection,
+ projection.FovY,
+ aspect,
+ projection.Near,
+ projection.Far
+ );
+ }
+ break;
+ }
+ case 1 /* Orthographic */:
+ let target_aspect = projection.Radius[0] / projection.Radius[1];
+ if (aspect < target_aspect) {
+ mat4_from_ortho(
+ projection.Projection,
+ projection.Radius[0] / aspect,
+ projection.Radius[0],
+ -projection.Radius[0] / aspect,
+ -projection.Radius[0],
+ projection.Near,
+ projection.Far
+ );
+ } else {
+ mat4_from_ortho(
+ projection.Projection,
+ projection.Radius[1],
+ projection.Radius[1] * aspect,
+ -projection.Radius[1],
+ -projection.Radius[1] * aspect,
+ projection.Near,
+ projection.Far
+ );
+ }
+ break;
+ }
+ mat4_invert(projection.Inverse, projection.Projection);
+ }
+
+ // ../src/systems/sys_shake.ts
+ var QUERY24 = 4194304 /* Transform */ | 262144 /* Shake */;
+ function sys_shake(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY24) == QUERY24) {
+ update18(game2, i);
+ }
+ }
+ }
+ function update18(game2, entity) {
+ let shake2 = game2.World.Shake[entity];
+ let transform2 = game2.World.Transform[entity];
+ transform2.Translation[0] = (Math.random() - 0.5) * shake2.Radius * 2;
+ transform2.Translation[1] = (Math.random() - 0.5) * shake2.Radius * 2;
+ transform2.Translation[2] = (Math.random() - 0.5) * shake2.Radius * 2;
+ game2.World.Signature[entity] |= 256 /* Dirty */;
+ }
+
+ // ../src/systems/sys_spawn.ts
+ var QUERY25 = 4194304 /* Transform */ | 524288 /* Spawn */;
+ function sys_spawn(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY25) == QUERY25) {
+ update19(game2, i, delta);
+ }
+ }
+ }
+ var world_position = [0, 0, 0];
+ var world_rotation = [0, 0, 0, 0];
+ function update19(game2, entity, delta) {
+ let spawn2 = game2.World.Spawn[entity];
+ spawn2.SinceLast += delta;
+ if (spawn2.SinceLast > spawn2.Interval) {
+ spawn2.SinceLast = 0;
+ let entity_transform = game2.World.Transform[entity];
+ mat4_get_translation(world_position, entity_transform.World);
+ mat4_get_rotation(world_rotation, entity_transform.World);
+ instantiate(game2, [
+ ...spawn2.Creator(game2),
+ copy_position(world_position),
+ copy_rotation(world_rotation)
+ ]);
+ }
+ }
+
+ // ../src/systems/sys_toggle.ts
+ var QUERY26 = 2097152 /* Toggle */;
+ function sys_toggle(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY26) == QUERY26) {
+ update20(game2, i, delta);
+ }
+ }
+ }
+ function update20(game2, entity, delta) {
+ let toggle2 = game2.World.Toggle[entity];
+ toggle2.SinceLast += delta;
+ if (toggle2.SinceLast > toggle2.Frequency) {
+ toggle2.SinceLast = 0;
+ if ((game2.World.Signature[entity] & toggle2.Mask) === toggle2.Mask) {
+ game2.World.Signature[entity] &= ~toggle2.Mask;
+ } else {
+ game2.World.Signature[entity] |= toggle2.Mask;
+ }
+ }
+ }
+
+ // ../src/systems/sys_transform.ts
+ var QUERY27 = 4194304 /* Transform */ | 256 /* Dirty */;
+ function sys_transform(game2, delta) {
+ for (let ent = 0; ent < game2.World.Signature.length; ent++) {
+ if ((game2.World.Signature[ent] & QUERY27) === QUERY27) {
+ let transform2 = game2.World.Transform[ent];
+ update_transform(game2.World, ent, transform2);
+ }
+ }
+ }
+ var world_position2 = [0, 0, 0];
+ function update_transform(world, entity, transform2) {
+ world.Signature[entity] &= ~256 /* Dirty */;
+ mat4_compose(transform2.World, transform2.Rotation, transform2.Translation, transform2.Scale);
+ if (transform2.Parent !== void 0) {
+ let parent_transform = world.Transform[transform2.Parent];
+ mat4_multiply(transform2.World, parent_transform.World, transform2.World);
+ if (transform2.IsGyroscope) {
+ mat4_get_translation(world_position2, transform2.World);
+ mat4_compose(transform2.World, transform2.Rotation, world_position2, transform2.Scale);
+ }
+ }
+ mat4_invert(transform2.Self, transform2.World);
+ if (world.Signature[entity] & 16 /* Children */) {
+ let children2 = world.Children[entity];
+ for (let i = 0; i < children2.Children.length; i++) {
+ let child = children2.Children[i];
+ if (world.Signature[child] & 4194304 /* Transform */) {
+ let child_transform = world.Transform[child];
+ child_transform.Parent = entity;
+ update_transform(world, child, child_transform);
+ }
+ }
+ }
+ }
+
+ // ../src/systems/sys_trigger.ts
+ var QUERY28 = 4194304 /* Transform */ | 32 /* Collide */ | 8388608 /* Trigger */;
+ function sys_trigger(game2, delta) {
+ for (let i = 0; i < game2.World.Signature.length; i++) {
+ if ((game2.World.Signature[i] & QUERY28) === QUERY28) {
+ update21(game2, i);
+ }
+ }
+ }
+ function update21(game2, entity) {
+ let collide2 = game2.World.Collide[entity];
+ let trigger2 = game2.World.Trigger[entity];
+ for (let collision of collide2.Collisions) {
+ let other_collide = game2.World.Collide[collision.Other];
+ if (trigger2.Mask & other_collide.Layers) {
+ dispatch(game2, trigger2.Action, [entity, collision.Other]);
+ }
+ }
+ }
+
+ // ../lib/html.ts
+ function shift(values) {
+ let value = values.shift();
+ if (typeof value === "boolean" || value == void 0) {
+ return "";
+ } else if (Array.isArray(value)) {
+ return value.join("");
+ } else {
+ return value;
+ }
+ }
+ function html(strings, ...values) {
+ return strings.reduce((out, cur) => out + shift(values) + cur);
+ }
+
+ // ../src/ui/Fullscreen.ts
+ function Fullscreen() {
+ return html`
+
+
+
+ `;
+ }
+
+ // ../src/ui/Score.ts
+ function Score(game2) {
+ return html`
+
+
Collected: ${game2.ItemsCollected}
+
Missed: ${game2.ItemsMissed}
+
+ `;
+ }
+
+ // ../src/ui/App.ts
+ function App(game2) {
+ return html`${Fullscreen()} ${Score(game2)}
`;
+ }
+
+ // ../src/systems/sys_ui.ts
+ var prev;
+ function sys_ui(game2, delta) {
+ let next = App(game2);
+ if (next !== prev) {
+ game2.Ui.innerHTML = prev = next;
+ }
+ }
+
+ // ../src/game.ts
+ var Game = class extends Game3D {
+ World = new World();
+ MaterialWireframe = mat_forward_colored_wireframe(this.Gl);
+ MaterialColoredShaded = mat_forward_colored_phong(this.Gl);
+ MaterialParticlesColored = mat_forward_particles_colored(this.Gl);
+ MeshCube = mesh_cube(this.Gl);
+ LightPositions = new Float32Array(4 * MAX_FORWARD_LIGHTS);
+ LightDetails = new Float32Array(4 * MAX_FORWARD_LIGHTS);
+ ItemsCollected = 0;
+ ItemsMissed = 0;
+ FrameUpdate(delta) {
+ sys_poll(this, delta);
+ sys_physics_integrate(this, delta);
+ sys_transform(this, delta);
+ sys_physics_kinematic(this, delta);
+ sys_collide(this, delta);
+ sys_physics_resolve(this, delta);
+ sys_transform(this, delta);
+ sys_trigger(this, delta);
+ sys_resize(this, delta);
+ sys_camera(this, delta);
+ sys_control_keyboard(this, delta);
+ sys_control_mouse_move(this, delta);
+ sys_control_touch_move(this, delta);
+ sys_control_xbox(this, delta);
+ sys_control_jump(this, delta);
+ sys_control_always(this, delta);
+ sys_animate(this, delta);
+ sys_move(this, delta);
+ sys_mimic(this, delta);
+ sys_lifespan(this, delta);
+ sys_shake(this, delta);
+ sys_toggle(this, delta);
+ sys_spawn(this, delta);
+ sys_particles(this, delta);
+ sys_transform(this, delta);
+ if (false) {
+ sys_debug(this, delta);
+ }
+ sys_audio_listener(this, delta);
+ sys_audio_source(this, delta);
+ sys_light(this, delta);
+ sys_render_forward(this, delta);
+ sys_draw(this, delta);
+ sys_ui(this, delta);
+ }
+ };
+
+ // ../src/components/com_mimic.ts
+ function mimic(target, stiffness = 0.1) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 8192 /* Mimic */;
+ game2.World.Mimic[entity] = {
+ Target: target,
+ Stiffness: stiffness
+ };
+ };
+ }
+
+ // ../src/components/com_named.ts
+ function named(name) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 32768 /* Named */;
+ game2.World.Named[entity] = { Name: name };
+ };
+ }
+ function first_named(world, name, start_at = 0) {
+ for (let i = start_at; i < world.Signature.length; i++) {
+ if (world.Signature[i] & 32768 /* Named */ && world.Named[i].Name === name) {
+ return i;
+ }
+ }
+ throw `No entity named ${name}.`;
+ }
+
+ // ../src/blueprints/blu_camera_follow.ts
+ function blueprint_camera_follow(game2) {
+ return [
+ transform(),
+ mimic(first_named(game2.World, "camera anchor")),
+ children([
+ transform([0, 1, -6], [0, 1, 0, 0]),
+ camera_canvas(perspective(1, 0.1, 1e3), [0.1, 0.5, 0.8, 1])
+ ])
+ ];
+ }
+
+ // ../src/components/com_collide.ts
+ function collide(dynamic, layers, mask, size = [1, 1, 1]) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 32 /* Collide */;
+ game2.World.Collide[entity] = {
+ EntityId: entity,
+ New: true,
+ Dynamic: dynamic,
+ Layers: layers,
+ Mask: mask,
+ Size: size,
+ Min: [0, 0, 0],
+ Max: [0, 0, 0],
+ Center: [0, 0, 0],
+ Half: [0, 0, 0],
+ Collisions: []
+ };
+ };
+ }
+
+ // ../src/blueprints/blu_ground.ts
+ function blueprint_ground(game2) {
+ return [
+ transform(),
+ collide(false, 2 /* Terrain */, 0 /* None */),
+ rigid_body(0 /* Static */),
+ children([
+ transform([0, float(-0.2, 0.2), 0]),
+ render_colored_shaded(game2.MaterialColoredShaded, game2.MeshCube, [0, 1, 0.1, 1])
+ ])
+ ];
+ }
+
+ // ../src/components/com_audio_source.ts
+ function audio_source(spatial, idle) {
+ return (game2, entity) => {
+ let panner = spatial ? game2.Audio.createPanner() : void 0;
+ game2.World.Signature[entity] |= 4 /* AudioSource */;
+ game2.World.AudioSource[entity] = {
+ Panner: panner,
+ Idle: idle,
+ Time: 0
+ };
+ };
+ }
+
+ // ../src/components/com_callback.ts
+ function callback(fn) {
+ return (game2, entity) => {
+ fn(game2, entity);
+ };
+ }
+
+ // ../src/components/com_control_always.ts
+ function control_always(direction, rotation3, animation) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 64 /* ControlAlways */;
+ game2.World.ControlAlways[entity] = {
+ Direction: direction,
+ Rotation: rotation3,
+ Animation: animation
+ };
+ };
+ }
+
+ // ../src/components/com_disable.ts
+ function disable(mask) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] &= ~mask;
+ };
+ }
+
+ // ../src/components/com_emit_particles.ts
+ function emit_particles(lifespan2, frequency, speed) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 1024 /* EmitParticles */;
+ game2.World.EmitParticles[entity] = {
+ Lifespan: lifespan2,
+ Frequency: frequency,
+ Speed: speed,
+ Instances: [],
+ SinceLast: 0
+ };
+ };
+ }
+
+ // ../src/components/com_lifespan.ts
+ function lifespan(remaining, action) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 2048 /* Lifespan */;
+ game2.World.Lifespan[entity] = {
+ Remaining: remaining,
+ Action: action
+ };
+ };
+ }
+
+ // ../src/components/com_light.ts
+ function light_directional(color = [1, 1, 1], intensity = 1) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 4096 /* Light */;
+ game2.World.Light[entity] = {
+ Kind: 2 /* Directional */,
+ Color: color,
+ Intensity: intensity
+ };
+ };
+ }
+ function light_point(color = [1, 1, 1], intensity = 1) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 4096 /* Light */;
+ game2.World.Light[entity] = {
+ Kind: 3 /* Point */,
+ Color: color,
+ Intensity: intensity
+ };
+ };
+ }
+
+ // ../src/components/com_move.ts
+ function move(move_speed, rotation_speed) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 16384 /* Move */;
+ game2.World.Move[entity] = {
+ MoveSpeed: move_speed,
+ RotationSpeed: rotation_speed,
+ Direction: [0, 0, 0],
+ LocalRotation: [0, 0, 0, 1],
+ SelfRotation: [0, 0, 0, 1]
+ };
+ };
+ }
+
+ // ../src/components/com_shake.ts
+ function shake(radius) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 262144 /* Shake */;
+ game2.World.Shake[entity] = {
+ Radius: radius
+ };
+ };
+ }
+
+ // ../src/components/com_toggle.ts
+ function toggle(mask, frequency) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 2097152 /* Toggle */;
+ game2.World.Toggle[entity] = {
+ Mask: mask,
+ Frequency: frequency,
+ SinceLast: 0
+ };
+ };
+ }
+
+ // ../src/components/com_trigger.ts
+ function trigger(mask, action) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 8388608 /* Trigger */;
+ game2.World.Trigger[entity] = {
+ Mask: mask,
+ Action: action
+ };
+ };
+ }
+
+ // ../src/blueprints/blu_item.ts
+ function blueprint_item(game2) {
+ let item_entity;
+ let shaker_entity;
+ let particles_entity;
+ return [
+ transform(),
+ callback((game3, entity) => item_entity = entity),
+ collide(true, 8 /* Collectable */, 2 /* Terrain */ | 1 /* Player */),
+ trigger(1 /* Player */, 1 /* CollectItem */),
+ rigid_body(1 /* Dynamic */, 0.3),
+ audio_source(true),
+ lifespan(5, 2 /* ExpireItem */),
+ disable(2048 /* Lifespan */),
+ children(
+ [
+ callback((game3, entity) => shaker_entity = entity),
+ transform(void 0, void 0, [0.5, 0.7, 0.1]),
+ control_always(null, [0, 1, 0, 0]),
+ move(0, 0.2),
+ shake(0.05),
+ toggle(262144 /* Shake */, 1),
+ disable(262144 /* Shake */ | 2097152 /* Toggle */),
+ children([
+ transform([0, 1, 0]),
+ render_colored_shaded(game2.MaterialColoredShaded, game2.MeshCube, [5, 3, 0, 1]),
+ children([transform([0, 1, 0]), light_point([1, 0.5, 0], 3)])
+ ])
+ ],
+ [
+ transform([0, 1.5, 0]),
+ control_always(null, [0, 1, 0, 0]),
+ move(0, 2),
+ children([
+ transform([0, 0, 0.2], quat_from_euler([0, 0, 0, 1], -90, 0, 0)),
+ children([
+ callback((game3, entity) => particles_entity = entity),
+ transform(),
+ shake(0.05),
+ emit_particles(2, 0.2, 1),
+ render_particles_colored(
+ game2.MaterialParticlesColored,
+ [1, 1, 1, 1],
+ 5,
+ [1, 1, 1, 0],
+ 1
+ )
+ ])
+ ])
+ ],
+ [
+ children([task_delay(10)]),
+ task_then(() => {
+ game2.World.Signature[item_entity] |= 2048 /* Lifespan */;
+ game2.World.Signature[shaker_entity] |= 262144 /* Shake */ | 2097152 /* Toggle */;
+ let particles_shake = game2.World.Shake[particles_entity];
+ particles_shake.Radius = 0.1;
+ let particles_emit = game2.World.EmitParticles[particles_entity];
+ particles_emit.Lifespan = 1;
+ particles_emit.Frequency = 0.1;
+ let particles_render = game2.World.Render[particles_entity];
+ particles_render.ColorStart = [1, 1, 0, 1];
+ particles_render.ColorEnd = [1, 0, 0, 0];
+ particles_render.Size = [10, 5];
+ })
+ ]
+ )
+ ];
+ }
+
+ // ../src/blueprints/blu_obstacle.ts
+ function blueprint_obstacle(game2) {
+ return [
+ transform(),
+ collide(true, 4 /* Obstacle */, 2 /* Terrain */ | 1 /* Player */),
+ rigid_body(1 /* Dynamic */, 0.3),
+ children([
+ transform(),
+ render_colored_shaded(game2.MaterialColoredShaded, game2.MeshCube, [0.5, 0.5, 0.5, 0.3])
+ ])
+ ];
+ }
+
+ // ../lib/easing.ts
+ function ease_in_quad(t) {
+ return t * t;
+ }
+ function ease_out_quad(t) {
+ return 1 - (1 - t) ** 2;
+ }
+ function ease_in_out_quad(t) {
+ return t < 0.5 ? 2 * t * t : 1 - (-2 * t + 2) ** 2 / 2;
+ }
+
+ // ../src/components/com_audio_listener.ts
+ function audio_listener() {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 2 /* AudioListener */;
+ };
+ }
+
+ // ../src/components/com_control_player.ts
+ function control_player(move2, yaw, pitch, min_pitch = 0, max_pitch = 0) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 128 /* ControlPlayer */;
+ game2.World.ControlPlayer[entity] = {
+ Move: move2,
+ Yaw: yaw,
+ Pitch: pitch,
+ MinPitch: min_pitch,
+ MaxPitch: max_pitch
+ };
+ };
+ }
+
+ // ../src/blueprints/blu_player.ts
+ function blueprint_player(game2) {
+ return [
+ transform(),
+ control_player(true, 0.2, 0),
+ move(10, 3),
+ collide(true, 1 /* Player */, 2 /* Terrain */),
+ rigid_body(1 /* Dynamic */),
+ audio_source(false),
+ audio_listener(),
+ children(
+ // Body.
+ [
+ transform(),
+ render_colored_shaded(game2.MaterialColoredShaded, game2.MeshCube, [1, 0.3, 0.2, 1]),
+ animate({
+ idle: {
+ Keyframes: [
+ {
+ Timestamp: 0,
+ Rotation: quat_from_euler([0, 0, 0, 1], 0, -5, 0),
+ Ease: ease_in_out_quad
+ },
+ {
+ Timestamp: 1,
+ Rotation: quat_from_euler([0, 0, 0, 1], 0, 5, 0),
+ Ease: ease_in_out_quad
+ }
+ ]
+ },
+ jump: {
+ Keyframes: [
+ {
+ Timestamp: 0,
+ Rotation: [0, 0, 0, 1]
+ },
+ {
+ Timestamp: 0.5,
+ Rotation: [1, 0, 0, 0],
+ Ease: ease_in_quad
+ },
+ {
+ Timestamp: 1,
+ Rotation: [0, 0, 0, -1],
+ Ease: ease_out_quad
+ }
+ ],
+ Flags: 0 /* None */
+ }
+ })
+ ],
+ // Camera rig anchor.
+ [
+ transform(),
+ named("camera anchor"),
+ move(0, 3),
+ control_player(false, 0, 0.2, -10, 80)
+ ],
+ // Overhead light.
+ [transform([0, 2, 0]), light_point([1, 1, 1], 5)]
+ )
+ ];
+ }
+
+ // ../src/components/com_spawn.ts
+ function spawn(creator, interval) {
+ return (game2, entity) => {
+ game2.World.Signature[entity] |= 524288 /* Spawn */;
+ game2.World.Spawn[entity] = {
+ Creator: creator,
+ Interval: interval,
+ SinceLast: interval
+ };
+ };
+ }
+
+ // ../src/scenes/sce_stage.ts
+ function scene_stage(game2) {
+ game2.World = new World();
+ game2.ViewportResized = true;
+ let map_size = 10;
+ let tile_size = 5;
+ for (let z = 0; z < map_size; z++) {
+ for (let x = 0; x < map_size; x++) {
+ instantiate(game2, [
+ ...blueprint_ground(game2),
+ set_position(tile_size * (x - map_size / 2), 0, tile_size * (z - map_size / 2)),
+ set_scale(tile_size, 1, tile_size)
+ ]);
+ }
+ }
+ instantiate(game2, [transform(), set_rotation(-30, 30, 0), light_directional([1, 1, 1], 0.1)]);
+ instantiate(game2, [...blueprint_player(game2), set_position(0, 1, 0), set_rotation(0, 180, 0)]);
+ instantiate(game2, [
+ ...blueprint_camera_follow(game2),
+ set_position(0, 1e3, 1e3),
+ set_rotation(0, 180, 0)
+ ]);
+ instantiate(game2, [
+ transform([0, 15, 0]),
+ control_always(null, [0, 1, 0, 0]),
+ move(0, 1),
+ children([
+ transform([0, 0, 10]),
+ children([transform(), shake(10), spawn(blueprint_item, 3)])
+ ])
+ ]);
+ for (let i = 0; i < 100; i++) {
+ instantiate(game2, [
+ ...blueprint_obstacle(game2),
+ set_position(float(-10, 10), 1, float(-10, 10)),
+ set_scale(float(0.5, 1.5), float(0.5, 1.5), float(0.5, 1.5))
+ ]);
+ }
+ }
+
+ // ../src/index.ts
+ var game = new Game();
+ input_pointer_lock(game);
+ scene_stage(game);
+ game.Start();
+ window.$ = dispatch.bind(null, game);
+ window.game = game;
+})();
diff --git a/game.html b/game.html
new file mode 100644
index 00000000..c8361280
--- /dev/null
+++ b/game.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+GoodLuck (opt)
+
+
+
+
+
+
+
diff --git a/game.roadroller.js b/game.roadroller.js
new file mode 100644
index 00000000..1e3c939e
--- /dev/null
+++ b/game.roadroller.js
@@ -0,0 +1 @@
+M='EpxGVVKRItSM]TLMXBq`lpN|^jmgFd^DB_fLOQbzpzWlZ?U_VS|b^ozumcwey{maONQPOvkt`|YorA?WeFBzapzUCnLSI_iUCO]VY]~n{OnwDRB[Ckk~pOBTnqprniqCkmRT@GykePdIvjLpZCv|lxGQwVL|HdBrXLmHAcPgvmmkS?}mseCqiq}}[@OXU??qeGdfSUNrO~pPTzHdaSwtZY|DgzPPPYJ@m}}PandL^CkBL_vkAg_SlvqoOKnhpQHhAHkzDsJCh_w[{bl`u_V{RsroEw?NiLaweZlsXAl|P]U?yXKWs[Tr?Kvb`scSzScJouMVa@UqrMISHCklU~LEUjfgJ?PvzN{Es{lgxCbnhj]rWhTyaovN}`zIYowqb|q]BIfpcn~zCOKAPx]q]_w}bIPPY}QcqYMqPesXVYrXtd]PhDDQrVTmaLoOYLuwbdoo}Ml?O]fzcdJ}CJ[JxLFh^^ZCW_Ln[UXsTv^|IAOKxvZjJnahdnY~?fNXCq~c]OVMOOjg`rnG^M`FptGUZxz{cIpshGgsydjYyHdlZg`QoKc_S@uCLgCwKs@GeUCugD]Ljev@^hyMTZDznUa|gV}?tDDN_{_GczLVOHXTkESpsdvU{ffh_`mT^rxpEasTkOXYsOLSlJsfmzDMyMQru`x}nlUg}BSWEBefZ|][]Kp{FkQPKpfqDIWn^XVGuyowdalOfE@AkMfEmEYcJheRq}FG}R]ZGi[xn[x?[PJ]ySoAQCFLSbHUX[?vNOL{ILiQ|Le?|ucbDiWy|Z^QlksnXQfYQnJzLrFCtEknbTYU?voQCDOD]Z_TXJl|{UN@kx?[yzawBxmnfKg}eK^jYH`~socmH?d~rOkIjHK^qeTMXL][EgA{slyMXd?EDlJMV@OhKPAa{KlQYIOqhqWUI{}NVCI{eIIKYbiWDVWSkb|VYUYVKdD{e`ZrH]eShfy|K~BZZG^nYjIciVayCVhRZg_kJlTv`}cDTvAGY|ahuVEeR@{MNBOlQJqCLemkniOnhnAl[GBJeXVBcq@?UpS}JxAVRQ[YqFdVmoYdcwaypsGqbrPK~ejMUeZlouqq}Y}dBvrvH?x?SaYwJ[pjHheRdbXQpx|uZQn]{GzKkw[b{W@iC_VjNcKNQqs^l|?}TRN_PN?fTETOL{t{YP@fM~j]BMoHoWNYL_Ee~kfrRGSd~WoNJchSIp}LdQ[}MDnGn`QLLg|JdVEl~EbomOrXbgtGxE|YfOx}}RCVrbIfWGIaNBNFJHraSfGbBm{fzU`CwrcrW^hVpWaRpFGKsdZTGHt~@Nm^AuJt{}GHpPpnGpb~KW}iuzGvsdzh{~whS@sNrPPKusrwlyP{lUc|vK{L`i^|j_KxDtNhhyNgdtAIyY^_is}gcl_HB?}AlS|P|^uokqaa?xYDlt{|bqaF?I]CeM_|FhyQbP^fwpeijki]rok[MkhSQvtXQZaam~r]^CxPJBHAA~HawWuxrj{?bK_WmM]ZMiQl__U_?BvQvVo|LJ}{pdm}YCGNJxNPE^TqXTcsy{DvUYW]?v?W]|aMyGGzb`Pyuk?oRvijIX~CEgAflTjVr``IMpa]Fa_DWv~RGknahX@QieBvmGY|Bcf]gfyvbfIFe``[YdtYQ~QgM`agPrdwImIUf@QPIfJu]QoNvvg`ytW}hJgwvf@^gKX}^bTv}I^mgtJnVWtg[nW~oWsMkLZNRcQdbiXRRenyhxOFZAzdKKnDRJLlMVYcrbO[RRaIVL|NTOamsPT@{]LLyu[NnDTkP}FFs_cNpiLrNRIhmu^@ZGDbtlUypMjoNWs|SMGQgkY_p|AbOmIRXsqMUVl^[rbHo]p|]x^NlZaUQp?YZ][WmAbCxyAOQ}NcFG?mzKEnUmVfgzJkDz^^X}geSze[I?aYKMrPZqvCdgtAEtGDGY{J[NbGD_BxrSQvW^FsOOjoQ{?}nKZkdpLKTf}PU}OVJMBRfjR~[AY[NG^kv?P{~_E`?[|fsh}Oe{kRofyFrvI]yDSsoK`vdrx@wHuRtZfaiJuMQWFkIIEEEAt[SIL@Cm~cT}o}@fn~nZinUNzVzSIF@eYZ]KICydsb~VU{V?uHuu|]v~dLlFDm`ZxyAzm~LhjQhkahhnKwUrjTE[CbserCzgCtAhN}^BqQU@@m|`QEQVNOhIUGx^|jezJObGdenpgblXmHYGoNMj~TAz?LjoH|AC|[X|kpoK]ESEL~|rRM~IhooSsJvmLUBrvGb?vutcp]oiCGh_TaLmgasEdrnYiWgAsOLBEu_ZX?WrH`oW]{}[^tRhVTEo[PSbKKA@A}mxoS_@h`}hn~N`VTVnkOgWcl[nzSd`x`MazU|IEncxe}eJDqZ@tjiXGo|r?wZ]BjNk}liTMpixN{^~AEcz}]wEp|{Htc[qhIfg}[jOwlo|H~Oc`kdj}^NQHlEXNDNo_aPUy|lcqK{MTEDhVufDEh?UrF@Xp`yy^yngGzqVTeIkB{OpOS?cStaMtrFN^sSKZqrc_}eusqM[KR^gxR?kTzrv~aZ^NfhWcInKVHCcrVIpQuBSUectR`rEtBuo{g`V^nj[eDbhBCrqPvxspL@eWXvLHpUaNdAtJGWCSMcxLxzvJX?I[jHp|jNTQyiuH@ph[vJB?JgzQwDIzWhXqBeCyjNF?VZNHAaRTVlzdtlmFNgiieR?BOPOjoSoJUI?DMHZ{~CIGvIFqIJKlZOlDf~lA?UK}ww@MFhkOsGGuvDG^}P[mmHvewt@VqDyGgTzuEFhXEzkrmckfodtCV|x~H}`cNJQsIReEhLdtu~uRgVgeISFoYNPnpfH|sSaDBD?`Z^qoJXzdRBZBirYXt]pd`Op}MTwdVtgfHdLuN?JYiPF}Xm[eGQz_yzlbiFs?ODgLQwO]F|v}tWwfQqnzZZPtm`RHP~{d[{vrK{qv@ma^yi[aV{uglfcCarJttUjMfjNHHFPpXFYmSTZ^}ZyVYwZ}PpRsuzDeww`qXooQXU_lkRXcdvWdin_tnsJ[|GSWilwpfR@s[Z]GMglCP`c^f`gFzeFNocCWBUwmR[kwaQDF^HC_IY{hZby_VO@qtoh}U[rdrOQREvpJqpV~_t@MjqcQ|PoqAZZAQqiTgOCc}N_yIRGbEVSny_WJbMK_czrk[gJerknoMQMR[Aax{HMut{A[eM]|o`?GsJc[Qgc]YJq^ZhgrsjEOATsCayK@TeoMm}LbIw~NvgEOMHjEZV]iNspontaL[OYukbuRR?nraNS^ziLIN^iGrfDLXbbTk}|nZFrE{@lMrZSaJYUwOLQLasjPhRsTAAlZE_XhUIDjFzg_YKOJzsYOl[r}kE}nnFUf?r]fEaxTTDPMqXswwyNKvu}NrGAaTAILXBrZMRIDLLkk^_?sKpv~]BH~?No_Ez]lto@ppa]vmYmfmvBq?WpFKleHv@Kt_OFSe{bUMtjsVEXey^NRFEMcWvScdqzKPOlqs}QUoC`oHWnp^HTe_hOJZ`GWeOyI`NNp@MAo?qv]@tpY{_EL?S]zEd^zRlAAda`KS~k{@z}KoRBny~BEJ?TJGkFRtIlaF?wQVR@fiihXLhsKOuAix@k[UyoTsnUn@sgd_AFOyWGs@MfAvDK@akaYLV]]zo?mRo}QHbb?DznHkSHICzav?mcKDHUdO}WU^nGJxPvtJoAnzlEZhXKxLGQ@qMTIayF|iy`mtf@B|nurhpQ`JH|wCxoSsw]zn}]G?]WO|cj~TNrtFIk`[auzZe~QriaTjPjEpBgUbV~joNY_Yxvkk_KtomRc@HVnsfsetVmgaPNLwgC?ZLASYQPVL[pRp~[HlB|IYdyA`erYIQibM?HDm}vLLec|tPQi@xHiEWtZuCRQo?tiZHm]t]{X?RIWxaDBo?LYz?lllDg~R]e[@qCap?N]mZMUQtpPeBTjnJhwqyZTuH~~|nkMXvIsgACt`CGzLDOnG_MTR]EeUJWrB`quX}fzZqb?tpdAxNGivqQB[HKC[ulkIT{S|~VLbmq|pTxINTdPZXAPo[tk_SEl|ne]kCVRWOxliASAR~gdmx`khwV`n_YD^lLY~}z_ASd^jrNPc?qLgrRpOzzFnukyNIT_aBdgKM[@hpsyDiI^rOG|cI@ZmwWfntfAAJwz^_uNTb[nMAFbqD{HAMzrmYoV]Hg|z`RFw]W|]cBIGVjUKdXVAkJ`sECJSODQMG|IW~ZcL?Zlh`plrBe?Aj^QlytrVqxyKYxZjg{KeGvQiOu_]YEhgU@nb^MjI`^PuxpbsV`THXlPUwVtuH|At[ozdKHmrb`mHFYeHKPz|teZGwB`s`KM?_xx]JkAWtYOLjjAA^H|Q|Eld]H~cpX|iqYpF^hlovR{vTgn_mgyM?{V}pRmwdxBtkbuaA|H{oXHg?bYOHiiDyqfc{Lm}Yjd[VEKrqlxouEuS?aQ?YzS}kU{UwfAhGn_E@m]IEhxZPQp{UT{@YWsQZ@qd`kv^HduaVuZ}ostaEn}FrNCR{qbYQRasIPnUoLy]mYOCbkD{?rvhwwvYFfVvUPLR`^aOlLwXuHwdg`]x[BlDXS_SgcHxLaXYry{lyuVN?rfiQLckVUvD_L{GXLg|Z]kxffb`B}mhTsFzMzLqYgMP_YyqqnWalikzm@sIlnDAmEcS]uigohSTUmfFdnfZFU}@UqV?~ptmPM[qvNkINFonE[b^OyPToRLEie|`yD@spg`GMKRsiZm{fvL?n?JGrPaeouGJYMJeX_caFn@A@oA~wSdXDQFDzEybmkYaiT?Mukv[MknrbpUMdA`ytZfO?kFXRSgLhgg^h^LeCBqtDtvgbzYxfzokLZTbzPOT@IjJxANMjnKVZ?{^R]buLY{kwi}SCMibbVghDrO|U}wAW]O[UD`w`?EXQ`Eqtdwi~QfUxmBb?FtqumZmhP?R_KAamEtfKiwHTUVNBlVFz]RIvA`wHTBI?os`EctuAou~Z?`}XSfSpcP]aB@dsgeHzNx[Zf@m@@e}OKVClQuWOFkliBfGSSMx}~hUXvkctiIrM[g~jTguwZw~v}[uZaXVDOz?M`xIvBqBL]BoqRf^Qhuh[tIksD^cNwh|rSOfofiH^pS@g?j]MD|C[]@dn`eCvKYaUZXMV~GWrE}xUAPsX?NHhMvncdlZj?]m[m^}_Y{CnQjbIN]Lk]JmmSh^R_ESIsni}akVK~vIHExxlkrBQhGt^heZPPNBjYjnHxgA|]xIkwZfbGS~`Z^bbaaIsXi[qjc`vd@`kp^QcSI~rdGrHRzhQz{tNvZOMdiYFbby@wGUJBszVf{{jCPM~hkoUM^qiaCqbNfB|[GINUvDuqrn||aB@xrRP~|wskI~gTRNcVsSZBDsEDB_OY]Id{G}SEI{uFSYxbXyIgAb?L`BKAnndG]CUh@SHGhkd[uWMuRoz}ST{LyjE~tjwm]hrol_GV@OgPwTEPmGoJXSiHuxx@n{VQa|rIcHQceOn~cSutaWd_VDN|ReStgrA?WCi@?]TwPJ][peqBRuoi`y@z~iltag^czskc|i@qFiDScsE|~|CUVq~^UbtwTJnGv`WRiVgwAr[|sT`jvHxYOy}jNSUdkP{qf}unP}PAcdSHiyAcnqaTVDQYc^[wMUx{l{NeiUaqcb]kGEeZSTjHtWnzSKMA`Vs@OeLAvaB^@eZLL|aR~[zBIFza}~HtlBkno~|PRcOdLb?Z~lGmUdoZtDHYBVEiyYuLok|[KGsCF?_{_hZblq]gZ{ukEAUr`eDEMqydRCOgo@gZxLD}vpd}MH?BJ~x[^}Je~d^SdXEyLx}V_n}N{XTAJBGvfo?mdXjErDJe_ieenxHE|LNJZedKb?QL}NC@qxu@VqAxHN~UG}zwVhAnRhFF~veko_]aSAtAznBfBQZFVmloWd]Gwm[GiUQOKX`i?NhxUxNXIXXGHueNW]yynUO?xVcyJ}@ntGNOmtTo]`HtxuLUr@_MndkF?U?[^sj~VguSPBjyYUHE|jGjb_fJP[@~MV[el@|oFmxsgEL]c`ZZ[?{h^Vv[@zMw]xaJJTzDvEh@{M@MJjwypwoYmoFR@IfkkNR~swowy|??@JsAfkhEQJbzcZkinTt{`KVPQVmXxroPDuLKcwlMQSkJuO~goAv@}_hT_vHAp`aCgT{s{dP}euwnlXe}vV}[@I|AAud}AF[sf~ZrBis@wZvoYX}WGZ^TDO~SXKz~yBBwd?tkDVsPH_Oiu]kUg~YbMXtsKI~n?IT@cPtVitFeyLJY~W]oMxpBJ{M^JaDCzj|J?y_cprHAQS?zrxHHy@n}]bHHbFBEA?ioaG@pJYfM`xMSEPr~pISmy_|cSHyfu``D~K]R`j?ulUB|lHy[uO~CvH_NV}n]VguNyQ`ddnkPz|AYJzdIExM@UGyghHi@wg`nmwdNYyvFamAHAvnrPaFQzBzKDXeObMciC{DRrZdXyFYCchW^i?h~VB`SKbv}myPbmorbiosN[UsPhzrITVSHfetn{|_~GVLdYtaDV~yySKgzO?}sIY~w^MA~Ea{XgrrKw^nwwusF`fbtaWAsSNDiSswiBcS|o}z`TBQmySFSC`S@}ruJjcb]MFrJPzXI^BKfkqKgGO^ZZW|FvSrloIGP^FSyIK|eFy]q[jRSE{rSLF{FCjuTVoLVNlSdvCrcBNKHx[oaCb^ekpo^w`fuQQ[O]xps|maXKgevJzoY^AACbwHfOkFix[d]BANMNMdusvNJFq`R}gyfwqru|[omiy_@UMUCWcQ~uDnsWk}jfldfO]mEkFljHISAmMDdAVggQqGMaNYhNIxhJ?]pVd|U?mR{bk}kf[{ak`B@Xe`yJ|PmZNr{Hc@bL?vru[cqh|RAAenC}`GejeU~AmR[SZOW{v[}MjQhJFS`bUTyiKfCy^XRGeKAzUwrc[HXrnFD]JcGKwjPI_SyQ_qXe|]NOlRGdqz^PozjQdX~HkU@yyo}cHYQ~FFTeDlCygpgEoDd{~R{Bn@lYOnSDo_Ga^n}P@mdXszAdARhGFX]|TOeHBXhvo?[n]?ryEaM}Z[P|A}HJzuupmNHNI^kIeirBFLYUu~JEyKHJK_tGaulIbtVE^?JAaMMcgjsukEmbV]eFD]xkxu[fvYHyWxXIXe~wHzXTTgEUZ^E`nWl?ElYO@@ygcix|Vm~NsE|VbaAbWNW_TmHd`hbOiXW?UnyEmFtoHtkyu@QNpCRC?ORF[fEQsPYNnnjsURdIk]]oZyPFXB{wlxmYM^yebetsb|jkJVViSr{IwCSs`DMdhwnMjy`jKBMN^HJddJlhIeCrFfPRd_q_POLXM]Jwd}ThnFolsHkTQXi@T}gM]KrEmbRMNI}_puvql_LSsn_ndxRsunJu~VuDM}~]{BnWaeXN~?nY^nAJUwesi[|iNcEP]zvPRN_NKCV|VNqanZBqO}rHDLm?OapKIXEesCZ@PWgXT[hni^@aIuopfisl``bCblWCK@Z~_ufN~{@Pn@|ZokSQ^XAQ}GQKqNfH^ZdEU}AmLbyMAoVX@Qi^ra}D]A@N_CuLAo}DGZFe^]bGmRpJ`zZ`Up_BxEMVAfm}{WDAiVuWuCREVx{]PX]gqEYNCNzE[v|TRtWTRNBt}VkqK[VvvmSJDQ`cHB~IXnlBcUjYzoWWS{WIEkggiWS{ygmTfCIa@StXozTAYATentniJOhpirAiyt`FxLGXUO|EOLU~MnJlJTMJ?r_nPpsGDEMMSFAlKXPfZVlCrI|?}Mg?lNAI]JP~D@FGPZeYalRYNfouFsMs`afpNQNREog_M_sIMsG_[``R`icSGwLjCZZtQrWkUDIdLXVJpctrHhFar[W~vTopWuCzZ@ogZUzAdlOo{LC`yMGGI?[lti@^P?e|zuaVLAElRn_npgmhYJ~~VdSw~TC?X`cHWq_Zb?~ZnXWxOGlVHfHun[]Xs_qCqX@owx]JGT^SsV^y?MIKuF?UuLQc[~`bJIfOV}Ka@lZW]E}[jgxf|Ctv}a|]KcKB_Oj}DpJjvwkmkl_FusFGrHxOq`JXlJrpw|e{ohSOaMypuMLOsLpDmVDYw}Q|k_nuRbkOwdSzpZF]}uxrBpct]B?AwYERb}ooCaJSqBAl|Y^D`E~Uu`xakegEAHW^ilz_TYrKHmg|Afeh[aKR_yJgtkwkFutYgqazEtva~dT@@qxSU^ZRDll`_y]sK}r[q@LMemXP]JAxyLBttQpMJyLfu@C{f|@W{vFEYbEYjLuErpcnazPCx?FiBRi@xl}QShflBR`zgmcY^WcJu]x}NoHp|YdkYcDY|_}ZP{gaTZm]y^S`q@{_vYo?hcCUTIn{FbTSQC~GhHyjBdC`WoJVZIoj~VWOKHH]B|wH[udvHd?yLuUytuBvc}wgrfNac]jadKFO~g|SLtWCM][]WKZwJGAM~lvwNg_NP@_kvfSxOJzsoiltpeKDbRKwWo]U|tOh]ezKbkxp`WtUIEqjDXWl~bVN_lhuKL_MJO{cm}{LGKELByQBKmCiKZyw^rCX{S`H?bg{ENjYFK^rYIyfTBcGyGoc_nN~ngveyHV_?ZfXm{vxVyD]}uxwz_xETSd_WI^l~YNK]`cX[hpA`FtC_|Mc}y`iRTPn]kjQYlWJFTAcVOG_nnq}dtHhqC~XnT||lA?^YML?TxJdFVWDVWgJ{NRFtTqfpL?lfXDqyzmX]OAnKKgajSVPiPX_ExFwRHmy?dM`m~sO{H{?ifD]Ov^SsmiqM@svaQbczvu?YxyDdYqTGLbyOWKl_q_lRBvhyoBiPOmwpBnoZAs~UMhAlzuqPyFQxmoDAhQzkb~NK}Dg]jhP^THy_[QFsDtP_z[TAUoIBMQoCCEoZybqQBDOWuxmGglGLRhm_j@_DRfSNYwzDxthw~tHVjGOz}uwjJD_s`nmlNLxY]QSuRKGfuULKBYKXE?P}AYUPV{F`?CBvW`X}AwYKDR@Zq]d~POvWQBHfyfbcjgUXkUVvESXMBb}ITz@pRU~YcWhOSXTvtLVSG_Da_rVXwPXTzY~xy}K[psR~d]qOc}ZXufsa?JjxR_{|TTMMdde?vbNL^mY|rMJGQmINlqnGDCXvWcBWZUigFjKA_XwLPGumKCvNqwgrqUgxeoJjSTMqkZGu`MtA^`{e~u_dL~[RNVYiTVvZDxQVGgPK_^x`tpMgEtLE[ddlcnJh[EQw_`fnh]|vG{IRyEztUca^~Yz]bBARaaZ^CK{[oEXnTPEAmVX|Dn[zVfikJTqgWH[uP`UdnkGUAJR`~@`b}KvZQC`_zBzHGP^wCaFZ]LNk{?zbFRr|aqy[u]sUkA|hkyI^bsdrcVB~Oa?pn|hgL{idj[{QpxzKIjocQdbU~ZaOkGEqMo^qle[I]Zy{iI?JrquwmuiVmzEWEKgOjCCea`dterul}IUcJVyxSmH~qQiIjdeJBO|^hGWThbyVurq[|G_UTZJSoxTwMV`sPIpOiE~sG[~AnrVRKdH{{HVJSF}cXB?F]BhqVsOEtyWK{@XIjxnvYeOAMon`pGInu[bA?I^PnxUJXRejEyTc`uyGQmY}p]iLwZftO]OSS|{rB^deLRWubUgcver~GvWWePhfsQ^?`|UogN}vz~m]ZZifQGdF^E]RDfPiI`OCvbMwZQBB?YY^mv|JgrWXMlA?NgFIH@d]Z~Tq`lzVBrxUlZv{RquJPUFEq}@Df_NnSJUj@yasE]WB]vNk}gXBkUU?WH^kHPe`XttBu`ec?ZxUXERY|`GQqHWOlmVSirXYFCeuyOdxsxNsFi|pbxtaCfys{moQ[~UVqgUuGsGzYFFH^tpbbaK{NOKyt}f~Kw@WWghB?v}ySEabjsZMrwWyzSzDNNGstx]l^CbOyJi?bqc^mJZlSz[]FspJH?zMtgV?{TalNadqjwM{cpmTub}lDw@[jlb^x]PAuiI|j]Ia[t}wyJSX?yVDJ`mSy[skPJ}]eTxYjA`ahkYx@VNzmP}zDANzuBFX~pEE}[MCMu?MoipQ}|{RJ_lATc^Xra^n@IK`hnyTUN_}TCxBgq]NxZVwi^?uPHBxb]oQsjKDtR]{wzhcKkBQRMt@Ciw`udpVwFiq|DEKef}bbsaaOFcjVMxraucj{XWEXjxQZuvBe@jlwi^ugTUXKxYd_sE{aoCVcSXVE?nywxbSsCLlpxsYhJ^SfAdoK`bxssMVNfIFPqYEorUxbdkN^xJhnhg^nwogRSWbu|tvHGyEHRito]fBB[xAo{UkITGegyuNLWcQiwm]o___RnxNMaE{_LdFcDDKkmcVG]JpXQZYY|airWB[vlw`ZF^LZaSJwOV}Vq`y_}VyGkMPYlJFLjk{gPyDuZb}~cMfQFYzmx^]BEDJgbSJTIpF_DmRkb[zFl`rgghPhC@vor|ZGhPHEnIFvM`~~kkB{RYWwymO^[F@lhZEcWGEp^uk~kI|B}NH_j{[aE`Qko`lpBErNRn`XCuwZs|Gn|XPmZR}x{YPbQoqAnOGA?Xy}NMxta{EuvivRw_{gho|_MLnQNpxCnfaEhnCafx~HUaskdpydP@nRH}^zd`@z[zp_FzZfXIssEE[kf`UmCPeT~BD~dFSQP|ez_[lS[IL@eN[TVhoV`IxbGzfOcT]q{bGrR~G{cNQaKY@oDK^KbIBN~~hVOfaqh`UspYsBOnnyygbIIcsiK{~`I[hkZAWcbdeLl|zkMTdYHKoXpLbkYt}q_ZrUuhIa[LXeLMzNEPHnrSzmiQK`A]}_D`pfpOzFj@WlCAhLLv]I]IpHbIB[CUANSvJIj|hlipZiYyf}Qen~XUAt^n?OVIr`@O}EJIRfvYyCXyN_d^QzA[f{Lw^NZmH}KJvVDsmAMC{yLn^MRyU_nQm_~iLyR_gas[NzzgQms}opqPvnDoX`zaqmm^wH}aOJAXRwUpSi}snfktOpgDDmWdUQrSwP?a_vZTqHS]b@vXQ[Q[kG?h{IrrPFI~@tiP|TuR_IxqbxB]ZzIF]G_CB[~|?FIpl?]@[{bgGeMwgOqtDz}xJalPfb[@WY}k@eWNrODlTRIjkspnmwFhiQ{WDERg?vwT{aTJPMu@cvtXyjhpUtKvHjptiHUzOGIpFWe]uhZJ~d~CLsQBMUlXHvxAuBK]T?J~HS[HJD`bj|Pyan@~ExXYMlWayaBuDHzn?dRaaKzSGb`blRukK@Zn|DrIa[j[QxOlBhK{bC@|`cRqNVrRnyiDV}nQ^WwtewPWKiF}ldrpgTAaTUrN@Gu@q}aQrwjhYr^^fi{LWOH_@v]wKeIh?dtAw|QRpCFjnK?Ytg{Af^CZ?JmY_}VEL?KlDOyxan~nm`jGgBeWNPZ{yTkrIgGpHaS@C}`bbUFNz^@leI|]fAktnbidVUJprajVd^MTmRPXIFeDcod{K^HW]a~Lu{?QuVdg_SVn^]^EoL]FsYYaLWkZsw^Do]BThWDijEqu]yncT@@{~D`Jq^[xr[}h@yukHO|~T~}U}itoDwg[@bc|yLB{K[eZYZj_?xQVyf_uDRRZDYBghjakz]LjAvf]?zsLQo_fRR?k_wb^EwVfNwIEAve[B@qW?Np}oxgu{iPJvd~jubNsCn[tKfRfgIgsq?AcsD}Nnhav|SbyTr^LPjPlcuh{GneojiW}irBhF@IqYL^?XkHxaEYtrdpfL{@OuuZknws`pddEgWuH][IVcoJtAPRkNrwHPV]TOrXg]jPtxnK``SDEK?~YJLuAIvzvya?yVqei}TbZDWgCPBipvsMMOHssG~pBgMXOIxAvRoa^DRWhWgsrLWWEFZlbmMiZanZy~C]@}qU_}Mm^ZxIOEdDdMRRvbl@uVtw[?q|ueW`lAtJjE|ykmSmmbzIlNFEqxakN`y{AFWB{iwSLjDu`Z`IOUx@_kHIYvOkBqgbHZ_KIB_O`tgg}HUJolA_lj^KcE{ud}H|nzxkljiTyLV[tJpvXmYksO}P@nimWF|UarodfMv}h{ygY?[eYXpjtKIriwO~eCgYgrH|r`JJ_hUf}DON[QZ~Qa?lDIrQV]A~P@DCOS[hkz@ngWGWoX`ryVQ}LtmiGAlLjQh|pVfWIcbhG`Hpkdh|uQ_iGfhqrFG]rNjNq]jK}dElU~wmvcU@c~EPlTcX_r}{uWzlVGh@CwMQEZEVxfhmFPUeh}}_qYgW?lqLNC`DI@pN_YsM?CDb`SyhjRRB_mCZDnHLqyL@^{zsEnDN{VocL`VEfcODZ`cdpCRANRL`@]v|K{o^ock[c~QHFFwfULUpRLatvx@xPIZuUTUXmDm?~fxP|ePwMDkBRoNzG^dJsiG?o^xZP`VyksIl}PHHUa}Yf|[_Rp@`OEfUIyD^YxeWtouJn|o{tHkBEI|dGOzSO{C]g]EXFaOiJknHWMgGJngw]Tafeg]sEBGlLYg_mNaSDZAoMOdL|dy}aP{KzKW@VVoFUt|hdsrEKfAW|ztWK[hqeYmlvFTe{Br`O[WU?hlF^k?YnaXiBDmy_z~^SJQvKEUp@qMKY^wYN}wrmxvOE`H}S|eokFoKLe}|AE{l^xv]pBQjWkE?_qJ~XaXuuIwwqIHdp{oz}NjW|dSC?LaLuhHuydMyNEMjbtlWThBMeC}~REig@}vD[gKpvQfbGbPoh@XRjNQRk]MXoYD?[FlEp_IUXYYksSDSaawCL~|jK[B{THI|qUkruZkBf`qzg|[EM]qNiCqjIcjJcLYqyJoEKcbZKkDN@JRh?ytjvQuS{b]TC|pSu@CddbJ|VtR|bB@xPiEcrTnWgXpnFvHnxzwviXNoH~KXgBF?xcKTpGsccFgWs^fwIsBXLVeLCGQdHLiKQxCoxofgiFP{]r[~[OjE}LVTDFJOxjj`~yhbymHOHC[Hcdj[j[EFtewY^KiaLRoF}ZGqt`lpT~xUCSQpfDUUBXKVJID|aATr]o?WuLercqM[rDf[}H_h_CwCGSONXSAoTnP`kJblMKxyDf?asGNMI]XwKC}UIS}fE^fbwtj_|d?iUwD~jYgdQgywqD]c|@[MQkRpXED?fFQgChJ|yuGoqjDf[a@d_wQP^`W|]FYksxLni_rMDr^RO[OIMNAAadoqtmMvKXanjyK}VOCtseHvRwCzY|GprnqbQkYio^iJOmhVEjRzGLHU@eSP`oCDnAAzZrNoUaDlasd}SzgKu@rMdiOAjXOVVuZUOmcBJh[TY]oEWn}kEJd^WjdYhkJ~uMNLK@?v`cgq?}nv}ToGgcdz}akhjsPh_kMyFnzgn^}VJPMrJzquOe|[rRyeXWeyIKDEkzUOZwcCujIi~]opDBi^LbCyBpeHtQ^[GlSWa}iGg|FiNE@RbzwR`mfa}bVLnJMmqqbo_bfrbdgXcJMWLbPt|dkJdUZAn{|eXyQtKMB}oWaLPqUFAUZUQgv{l@Bl@vDUAhxdzPAYGGHOSUgmEX^W}Fa{}pZLDbcgkUkhX@^{A?jzs}ud{[axEQxczO_|~U^VQEBfm?MhSEfVkWVdc_~GapnIirUmpGL|RZPFXDuhxoP]pgJRWACIhF@TBrsyiWHUcdX]tXMNadBnb}hTBAJZBtmPdXfJWtODfIfmsmLhq^PvoR^`aUX^RhfHIvmpzdPieARzsLgAlAb]xXpo[FpsAaVj|?D`VSzc?@SnrGMabRNWjcN?hk~XNsxmJl|JdILYoR^{s{LhNs~fof{AGzQEfsQlgD[xZQaGam~XWTjcUAwgC`dhKn]mAzmF@uWwj_?OYtTbOlR``ABtVjXPeBbP|eiSryG^YyhsFaAqzI~czdHpdFRE?nIWuJ~AQ^{Ee[kwiB{XDpfu}XHptiLe{erFOr`DTFhH]|nocKpAngh[S~lFX}JVT]rosc]E@KSqHMk{tlHpk@YfcJctijadIu[WErDkqdDanM}n^fpEU]^CwQXICc_ZQIucw[UUEcSQ';c=1<<15;h=[0,0,0,0,0,0,0,0,0,0,0,0];a=new Uint16Array(51e6).fill(1<<13);r=new Uint8Array(51e6);for(n=[x=y=t=f=0];t<35699;n[t++]=i-=128,f=f?i-f&&f:(i==34|i==96)&&i)for(i=1;i<128;A=p.map((e,U)=>(o=a[e]*2+1,o=Math.log(o/(c-o)),C-=h[U]*o,o/1250)),C=~-c/(1+Math.exp(C))|1,d=x%c>15)-!d*C,p.map((e,U)=>(o=a[e]+=(d*c/2-a[e]<<15)/((r[e]+=r[e]<4)+1/20)>>15,h[U]+=A[U]*(d-C/c))),i=i*2+d)for(p='010202103203210431054106420652065410963'.split(C=0).map((e,U)=>(o=0,[...e].map((e,U)=>(o=o*997+(n[t-e]|0)|0)),c*128-1&o*997+i+!!f*129)*12+U);x {
+
+function input_pointer_lock(game2) {
+game2.Ui.addEventListener("click", () => game2.Ui.requestPointerLock());
+}
+
+
+var GL_DEPTH_BUFFER_BIT = 256;
+var GL_COLOR_BUFFER_BIT = 16384;
+var GL_POINTS = 0;
+var GL_LINE_LOOP = 2;
+var GL_TRIANGLES = 4;
+var GL_SRC_ALPHA = 770;
+var GL_ONE_MINUS_SRC_ALPHA = 771;
+var GL_STATIC_DRAW = 35044;
+var GL_DYNAMIC_DRAW = 35048;
+var GL_ARRAY_BUFFER = 34962;
+var GL_ELEMENT_ARRAY_BUFFER = 34963;
+var GL_CULL_FACE = 2884;
+var GL_BLEND = 3042;
+var GL_DEPTH_TEST = 2929;
+var GL_CW = 2304;
+var GL_DATA_UNSIGNED_BYTE = 5121;
+var GL_DATA_UNSIGNED_INT = 5125;
+var GL_DATA_FLOAT = 5126;
+var GL_DEPTH_COMPONENT = 6402;
+var GL_RGBA = 6408;
+var GL_FRAGMENT_SHADER = 35632;
+var GL_VERTEX_SHADER = 35633;
+var GL_NEAREST = 9728;
+var GL_LINEAR = 9729;
+var GL_TEXTURE_MAG_FILTER = 10240;
+var GL_TEXTURE_MIN_FILTER = 10241;
+var GL_TEXTURE_WRAP_S = 10242;
+var GL_TEXTURE_WRAP_T = 10243;
+var GL_TEXTURE_2D = 3553;
+var GL_TEXTURE0 = 33984;
+var GL_TEXTURE1 = 33985;
+var GL_TEXTURE2 = 33986;
+var GL_TEXTURE3 = 33987;
+var GL_CLAMP_TO_EDGE = 33071;
+var GL_FRAMEBUFFER = 36160;
+var GL_RGBA8 = 32856;
+var GL_TEXTURE_COMPARE_MODE = 34892;
+var GL_COMPARE_REF_TO_TEXTURE = 34894;
+var GL_RGBA32F = 34836;
+var GL_RGBA16F = 34842;
+var GL_DEPTH_COMPONENT24 = 33190;
+var GL_UNSIGNED_SHORT = 5123;
+var GL_FLOAT = 5126;
+
+
+var WorldImpl = class {
+Capacity;
+Signature = [];
+Graveyard = [];
+constructor(capacity = 1e4) {
+this.Capacity = capacity;
+}
+};
+function create_entity(world) {
+if (world.Graveyard.length > 0) {
+return world.Graveyard.pop();
+}
+if (false) {
+throw new Error("No more entities available.");
+}
+return world.Signature.push(0) - 1;
+}
+function destroy_entity(world, entity) {
+world.Signature[entity] = 0;
+if (false) {
+throw new Error("Entity already in graveyard.");
+}
+world.Graveyard.push(entity);
+}
+function first_having(world, query, start_at = 0) {
+for (let i = start_at; i < world.Signature.length; i++) {
+if ((world.Signature[i] & query) === query) {
+return i;
+}
+}
+}
+
+
+var update_span = document.getElementById("update");
+var delta_span = document.getElementById("delta");
+var fps_span = document.getElementById("fps");
+var step = 1 / 60;
+var GameImpl = class {
+Running = 0;
+Now = 0;
+ViewportWidth = window.innerWidth;
+ViewportHeight = window.innerHeight;
+ViewportResized = true;
+
+
+InputState = {
+MouseX: 0,
+MouseY: 0
+};
+
+
+InputDelta = {
+MouseX: 0,
+MouseY: 0
+};
+
+InputDistance = {
+Mouse: 0,
+Mouse0: 0,
+Mouse1: 0,
+Mouse2: 0,
+Touch0: 0,
+Touch1: 0
+};
+
+
+InputTouches = {};
+Ui = document.querySelector("main");
+constructor() {
+document.addEventListener(
+"visibilitychange",
+() => document.hidden ? this.Stop() : this.Start()
+);
+this.Ui.addEventListener("contextmenu", (evt) => evt.preventDefault());
+this.Ui.addEventListener("mousedown", (evt) => {
+this.InputState[`Mouse${evt.button}`] = 1;
+this.InputDelta[`Mouse${evt.button}`] = 1;
+});
+this.Ui.addEventListener("mouseup", (evt) => {
+this.InputState[`Mouse${evt.button}`] = 0;
+this.InputDelta[`Mouse${evt.button}`] = -1;
+});
+this.Ui.addEventListener("mousemove", (evt) => {
+this.InputState["MouseX"] = evt.clientX;
+this.InputState["MouseY"] = evt.clientY;
+this.InputDelta["MouseX"] = evt.movementX;
+this.InputDelta["MouseY"] = evt.movementY;
+});
+this.Ui.addEventListener("wheel", (evt) => {
+evt.preventDefault();
+this.InputDelta["WheelY"] = evt.deltaY;
+});
+this.Ui.addEventListener("touchstart", (evt) => {
+if (evt.target === this.Ui) {
+evt.preventDefault();
+}
+if (evt.touches.length === 1) {
+this.InputTouches = {};
+}
+for (let i = 0; i < evt.touches.length; i++) {
+let touch = evt.touches[i];
+this.InputTouches[touch.identifier] = i;
+}
+for (let i = 0; i < evt.changedTouches.length; i++) {
+let touch = evt.changedTouches[i];
+let index = this.InputTouches[touch.identifier];
+this.InputState[`Touch${index}`] = 1;
+this.InputState[`Touch${index}X`] = touch.clientX;
+this.InputState[`Touch${index}Y`] = touch.clientY;
+this.InputDelta[`Touch${index}`] = 1;
+this.InputDelta[`Touch${index}X`] = 0;
+this.InputDelta[`Touch${index}Y`] = 0;
+}
+});
+this.Ui.addEventListener("touchmove", (evt) => {
+if (evt.target === this.Ui) {
+evt.preventDefault();
+}
+for (let i = 0; i < evt.changedTouches.length; i++) {
+let touch = evt.changedTouches[i];
+let index = this.InputTouches[touch.identifier];
+this.InputDelta[`Touch${index}X`] = touch.clientX - this.InputState[`Touch${index}X`];
+this.InputDelta[`Touch${index}Y`] = touch.clientY - this.InputState[`Touch${index}Y`];
+this.InputState[`Touch${index}X`] = touch.clientX;
+this.InputState[`Touch${index}Y`] = touch.clientY;
+}
+});
+this.Ui.addEventListener("touchend", (evt) => {
+if (evt.target === this.Ui) {
+evt.preventDefault();
+}
+for (let i = 0; i < evt.changedTouches.length; i++) {
+let touch = evt.changedTouches[i];
+let index = this.InputTouches[touch.identifier];
+this.InputState[`Touch${index}`] = 0;
+this.InputDelta[`Touch${index}`] = -1;
+}
+});
+this.Ui.addEventListener("touchcancel", (evt) => {
+for (let i = 0; i < evt.changedTouches.length; i++) {
+let touch = evt.changedTouches[i];
+let index = this.InputTouches[touch.identifier];
+this.InputState[`Touch${index}`] = 0;
+this.InputDelta[`Touch${index}`] = -1;
+}
+});
+window.addEventListener("keydown", (evt) => {
+if (!evt.repeat) {
+this.InputState[evt.code] = 1;
+this.InputDelta[evt.code] = 1;
+}
+});
+window.addEventListener("keyup", (evt) => {
+this.InputState[evt.code] = 0;
+this.InputDelta[evt.code] = -1;
+});
+}
+Start() {
+let last = performance.now();
+let tick = (now) => {
+let delta = (now - last) / 1e3;
+last = now;
+this.Running = requestAnimationFrame(tick);
+this.FrameSetup(delta);
+this.FrameUpdate(delta);
+this.FrameReset(delta);
+};
+requestAnimationFrame(tick);
+}
+Stop() {
+cancelAnimationFrame(this.Running);
+this.Running = 0;
+}
+FrameSetup(delta) {
+this.Now = performance.now();
+let mouse_distance = Math.abs(this.InputDelta["MouseX"]) + Math.abs(this.InputDelta["MouseY"]);
+this.InputDistance["Mouse"] += mouse_distance;
+if (this.InputState["Mouse0"] === 1) {
+this.InputDistance["Mouse0"] += mouse_distance;
+}
+if (this.InputState["Mouse1"] === 1) {
+this.InputDistance["Mouse1"] += mouse_distance;
+}
+if (this.InputState["Mouse2"] === 1) {
+this.InputDistance["Mouse2"] += mouse_distance;
+}
+if (this.InputState["Touch0"] === 1) {
+this.InputDistance["Touch0"] += Math.abs(this.InputDelta["Touch0X"]) + Math.abs(this.InputDelta["Touch0Y"]);
+}
+if (this.InputState["Touch1"] === 1) {
+this.InputDistance["Touch1"] += Math.abs(this.InputDelta["Touch1X"]) + Math.abs(this.InputDelta["Touch1Y"]);
+}
+}
+FrameUpdate(delta) {
+}
+FrameReset(delta) {
+this.ViewportResized = false;
+if (this.InputDelta["Mouse0"] === -1) {
+this.InputDistance["Mouse0"] = 0;
+}
+if (this.InputDelta["Mouse1"] === -1) {
+this.InputDistance["Mouse1"] = 0;
+}
+if (this.InputDelta["Mouse2"] === -1) {
+this.InputDistance["Mouse2"] = 0;
+}
+if (this.InputDelta["Touch0"] === -1) {
+this.InputDistance["Touch0"] = 0;
+}
+if (this.InputDelta["Touch1"] === -1) {
+this.InputDistance["Touch1"] = 0;
+}
+for (let name in this.InputDelta) {
+this.InputDelta[name] = 0;
+}
+let update22 = performance.now() - this.Now;
+if (update_span) {
+update_span.textContent = update22.toFixed(1);
+}
+if (delta_span) {
+delta_span.textContent = (delta * 1e3).toFixed(1);
+}
+if (fps_span) {
+fps_span.textContent = (1 / delta).toFixed();
+}
+}
+};
+var Game3D = class extends GameImpl {
+BackgroundCanvas = document.querySelector("#background");
+BackgroundContext = this.BackgroundCanvas.getContext("2d");
+ForegroundCanvas = document.querySelector("#foreground");
+ForegroundContext = this.ForegroundCanvas.getContext("2d");
+SceneCanvas = document.querySelector("#scene");
+Gl = this.SceneCanvas.getContext("webgl2");
+Audio = new AudioContext();
+Cameras = [];
+Targets = {};
+constructor() {
+super();
+this.Gl.enable(GL_DEPTH_TEST);
+this.Gl.enable(GL_CULL_FACE);
+this.Gl.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+}
+};
+function instantiate(game2, blueprint) {
+let entity = create_entity(game2.World);
+for (let mixin of blueprint) {
+mixin(game2, entity);
+}
+return entity;
+}
+
+
+var World = class extends WorldImpl {
+Animate = [];
+AudioSource = [];
+Camera = [];
+Children = [];
+Collide = [];
+ControlAlways = [];
+ControlPlayer = [];
+Draw = [];
+EmitParticles = [];
+Lifespan = [];
+Light = [];
+Mimic = [];
+Move = [];
+Named = [];
+Render = [];
+RigidBody = [];
+Shake = [];
+Spawn = [];
+Task = [];
+Toggle = [];
+Transform = [];
+Trigger = [];
+};
+
+
+function children(...blueprints) {
+return (game2, entity) => {
+if (game2.World.Signature[entity] & 16 /* Children */) {
+} else {
+game2.World.Signature[entity] |= 16 /* Children */;
+game2.World.Children[entity] = {
+Children: []
+};
+}
+let child_entities = game2.World.Children[entity].Children;
+for (let blueprint of blueprints) {
+let child = instantiate(game2, blueprint);
+child_entities.push(child);
+}
+};
+}
+function* query_down(world, entity, mask) {
+if ((world.Signature[entity] & mask) === mask) {
+yield entity;
+}
+if (world.Signature[entity] & 16 /* Children */) {
+for (let child of world.Children[entity].Children) {
+yield* query_down(world, child, mask);
+}
+}
+}
+function destroy_all(world, entity) {
+if (world.Signature[entity] & 16 /* Children */) {
+for (let child of world.Children[entity].Children) {
+destroy_all(world, child);
+}
+}
+if (world.Signature[entity] === 0 /* None */) {
+} else {
+destroy_entity(world, entity);
+}
+}
+
+
+function dispatch(game2, action, payload) {
+switch (action) {
+case 0 /* ToggleFullscreen */: {
+if (document.fullscreenElement) {
+document.exitFullscreen();
+} else {
+document.body.requestFullscreen();
+}
+break;
+}
+case 1 /* CollectItem */: {
+let [item_entity] = payload;
+destroy_all(game2.World, item_entity);
+game2.ItemsCollected++;
+break;
+}
+case 2 /* ExpireItem */: {
+game2.ItemsMissed++;
+break;
+}
+}
+}
+
+
+var MAX_FORWARD_LIGHTS = 8;
+var INCLUDE_GAMMA_CORRECTION = `
+
+
+
+
+vec3 GAMMA_DECODE(vec3 rgb) {
+return pow(rgb, vec3(2.2));
+}
+
+
+vec4 GAMMA_DECODE(vec4 color) {
+return vec4(pow(color.rgb, vec3(2.2)), color.a);
+}
+
+
+
+
+
+
+vec3 GAMMA_ENCODE(vec3 rgb) {
+return pow(rgb, vec3(1.0 / 2.2));
+}
+
+
+vec4 GAMMA_ENCODE(vec4 color) {
+return vec4(pow(color.rgb, vec3(1.0 / 2.2)), color.a);
+}
+`;
+
+
+function link(gl, vertex4, fragment4) {
+let program = gl.createProgram();
+gl.attachShader(program, compile(gl, GL_VERTEX_SHADER, vertex4));
+gl.attachShader(program, compile(gl, GL_FRAGMENT_SHADER, fragment4));
+gl.linkProgram(program);
+if (false) {
+throw new Error(gl.getProgramInfoLog(program));
+}
+return program;
+}
+function compile(gl, type, source) {
+let shader = gl.createShader(type);
+gl.shaderSource(shader, source);
+gl.compileShader(shader);
+if (false) {
+throw new Error(gl.getShaderInfoLog(shader));
+}
+return shader;
+}
+
+
+var vertex = `#version 300 es
+
+uniform mat4 pv;
+uniform mat4 world;
+uniform mat4 self;
+
+layout(location=${0 /* Position */}) in vec4 attr_position;
+layout(location=${1 /* Normal */}) in vec3 attr_normal;
+
+out vec4 vert_position;
+out vec3 vert_normal;
+
+void main() {
+vert_position = world * attr_position;
+vert_normal = (vec4(attr_normal, 0.0) * self).xyz;
+gl_Position = pv * vert_position;
+}
+`;
+var fragment = `#version 300 es
+
+precision mediump float;
+
+uniform vec3 eye;
+uniform vec4 diffuse_color;
+uniform vec4 specular_color;
+uniform vec4 emissive_color;
+uniform vec4 light_positions[${MAX_FORWARD_LIGHTS}];
+uniform vec4 light_details[${MAX_FORWARD_LIGHTS}];
+
+in vec4 vert_position;
+in vec3 vert_normal;
+
+out vec4 frag_color;
+
+${INCLUDE_GAMMA_CORRECTION}
+
+void main() {
+vec3 world_normal = normalize(vert_normal);
+
+vec3 view_dir = eye - vert_position.xyz;
+vec3 view_normal = normalize(view_dir);
+
+
+vec3 light_acc = GAMMA_DECODE(diffuse_color.rgb) * 0.1;
+
+for (int i = 0; i < ${MAX_FORWARD_LIGHTS}; i++) {
+int light_kind = int(light_positions[i].w);
+if (light_kind == ${0 /* Inactive */}) {
+break;
+}
+
+vec3 light_rgb = GAMMA_DECODE(light_details[i].rgb);
+float light_intensity = light_details[i].a;
+
+vec3 light_normal;
+if (light_kind == ${2 /* Directional */}) {
+light_normal = light_positions[i].xyz;
+} else if (light_kind == ${3 /* Point */}) {
+vec3 light_dir = light_positions[i].xyz - vert_position.xyz;
+float light_dist = length(light_dir);
+light_normal = light_dir / light_dist;
+
+light_intensity /= (light_dist * light_dist);
+}
+
+float diffuse_factor = dot(world_normal, light_normal);
+if (diffuse_factor > 0.0) {
+
+light_acc += GAMMA_DECODE(diffuse_color.rgb) * diffuse_factor * light_rgb * light_intensity;
+
+if (specular_color.a > 0.0) {
+
+
+
+
+
+
+vec3 h = normalize(light_normal + view_normal);
+float specular_angle = max(dot(h, world_normal), 0.0);
+float specular_factor = pow(specular_angle, specular_color.a);
+
+
+light_acc += GAMMA_DECODE(specular_color.rgb) * specular_factor * light_rgb * light_intensity;
+}
+}
+}
+
+vec3 emissive_rgb = GAMMA_DECODE(emissive_color.rgb) * emissive_color.a;
+frag_color = vec4(GAMMA_ENCODE(light_acc + emissive_rgb), diffuse_color.a);
+}
+`;
+function mat_forward_colored_phong(gl) {
+let program = link(gl, vertex, fragment);
+return {
+Mode: GL_TRIANGLES,
+Program: program,
+Locations: {
+Pv: gl.getUniformLocation(program, "pv"),
+World: gl.getUniformLocation(program, "world"),
+Self: gl.getUniformLocation(program, "self"),
+DiffuseColor: gl.getUniformLocation(program, "diffuse_color"),
+SpecularColor: gl.getUniformLocation(program, "specular_color"),
+EmissiveColor: gl.getUniformLocation(program, "emissive_color"),
+Eye: gl.getUniformLocation(program, "eye"),
+LightPositions: gl.getUniformLocation(program, "light_positions"),
+LightDetails: gl.getUniformLocation(program, "light_details")
+}
+};
+}
+
+
+var vertex2 = `#version 300 es
+
+uniform mat4 pv;
+uniform mat4 world;
+
+layout(location=${0 /* Position */}) in vec4 attr_position;
+
+void main() {
+gl_Position = pv * world * attr_position;
+}
+`;
+var fragment2 = `#version 300 es
+
+precision mediump float;
+
+uniform vec4 color;
+
+out vec4 frag_color;
+
+void main() {
+frag_color = color;
+}
+`;
+function mat_forward_colored_unlit(gl, mode = GL_TRIANGLES) {
+let program = link(gl, vertex2, fragment2);
+return {
+Mode: mode,
+Program: program,
+Locations: {
+Pv: gl.getUniformLocation(program, "pv"),
+World: gl.getUniformLocation(program, "world"),
+Color: gl.getUniformLocation(program, "color")
+}
+};
+}
+function mat_forward_colored_wireframe(gl) {
+return mat_forward_colored_unlit(gl, GL_LINE_LOOP);
+}
+
+
+var vertex3 = `#version 300 es
+
+uniform mat4 pv;
+uniform vec4 color_start;
+uniform vec4 color_end;
+
+uniform vec4 details;
+
+
+in vec4 attr_origin_age;
+in vec3 attr_direction;
+
+out vec4 vert_color;
+
+void main() {
+
+vec3 velocity = attr_direction * details.y;
+gl_Position = pv * vec4(attr_origin_age.xyz + velocity * attr_origin_age.w, 1.0);
+
+
+float t = attr_origin_age.w / details.x;
+gl_PointSize = mix(details.z, details.w, t);
+vert_color = mix(color_start, color_end, t);
+}
+`;
+var fragment3 = `#version 300 es
+
+precision mediump float;
+
+in vec4 vert_color;
+
+out vec4 frag_color;
+
+void main() {
+frag_color = vert_color;
+}
+`;
+function mat_forward_particles_colored(gl) {
+let program = link(gl, vertex3, fragment3);
+return {
+Mode: GL_POINTS,
+Program: program,
+Locations: {
+Pv: gl.getUniformLocation(program, "pv"),
+ColorStart: gl.getUniformLocation(program, "color_start"),
+ColorEnd: gl.getUniformLocation(program, "color_end"),
+Details: gl.getUniformLocation(program, "details"),
+OriginAge: gl.getAttribLocation(program, "attr_origin_age"),
+Direction: gl.getAttribLocation(program, "attr_direction")
+}
+};
+}
+
+
+function mesh_cube(gl) {
+let vao = gl.createVertexArray();
+gl.bindVertexArray(vao);
+let vertex_buf = gl.createBuffer();
+gl.bindBuffer(GL_ARRAY_BUFFER, vertex_buf);
+gl.bufferData(GL_ARRAY_BUFFER, vertex_arr, GL_STATIC_DRAW);
+gl.enableVertexAttribArray(0 /* Position */);
+gl.vertexAttribPointer(0 /* Position */, 3, GL_FLOAT, false, 0, 0);
+let normal_buf = gl.createBuffer();
+gl.bindBuffer(GL_ARRAY_BUFFER, normal_buf);
+gl.bufferData(GL_ARRAY_BUFFER, normal_arr, GL_STATIC_DRAW);
+gl.enableVertexAttribArray(1 /* Normal */);
+gl.vertexAttribPointer(1 /* Normal */, 3, GL_FLOAT, false, 0, 0);
+let texcoord_buf = gl.createBuffer();
+gl.bindBuffer(GL_ARRAY_BUFFER, texcoord_buf);
+gl.bufferData(GL_ARRAY_BUFFER, texcoord_arr, GL_STATIC_DRAW);
+gl.enableVertexAttribArray(2 /* TexCoord */);
+gl.vertexAttribPointer(2 /* TexCoord */, 2, GL_FLOAT, false, 0, 0);
+let weights_buf = gl.createBuffer();
+gl.bindBuffer(GL_ARRAY_BUFFER, weights_buf);
+gl.bufferData(GL_ARRAY_BUFFER, weights_arr, GL_STATIC_DRAW);
+gl.enableVertexAttribArray(5 /* Weights */);
+gl.vertexAttribPointer(5 /* Weights */, 4, GL_FLOAT, false, 0, 0);
+let index_buf = gl.createBuffer();
+gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER, index_buf);
+gl.bufferData(GL_ELEMENT_ARRAY_BUFFER, index_arr, GL_STATIC_DRAW);
+gl.bindVertexArray(null);
+return {
+Vao: vao,
+VertexBuffer: vertex_buf,
+VertexArray: vertex_arr,
+NormalBuffer: normal_buf,
+NormalArray: normal_arr,
+TexCoordBuffer: texcoord_buf,
+TexCoordArray: texcoord_arr,
+WeightsBuffer: weights_buf,
+WeightsArray: weights_arr,
+IndexBuffer: index_buf,
+IndexArray: index_arr,
+IndexCount: index_arr.length
+};
+}
+var vertex_arr = Float32Array.from([
+-0.5,
+-0.5,
+0.5,
+-0.5,
+-0.5,
+0.5,
+-0.5,
+-0.5,
+0.5,
+-0.5,
+0.5,
+0.5,
+-0.5,
+0.5,
+0.5,
+-0.5,
+0.5,
+0.5,
+-0.5,
+-0.5,
+-0.5,
+-0.5,
+-0.5,
+-0.5,
+-0.5,
+-0.5,
+-0.5,
+-0.5,
+0.5,
+-0.5,
+-0.5,
+0.5,
+-0.5,
+-0.5,
+0.5,
+-0.5,
+0.5,
+-0.5,
+0.5,
+0.5,
+-0.5,
+0.5,
+0.5,
+-0.5,
+0.5,
+0.5,
+0.5,
+0.5,
+0.5,
+0.5,
+0.5,
+0.5,
+0.5,
+0.5,
+0.5,
+-0.5,
+-0.5,
+0.5,
+-0.5,
+-0.5,
+0.5,
+-0.5,
+-0.5,
+0.5,
+0.5,
+-0.5,
+0.5,
+0.5,
+-0.5,
+0.5,
+0.5,
+-0.5
+]);
+var normal_arr = Float32Array.from([
+-1,
+0,
+0,
+0,
+-1,
+0,
+0,
+0,
+1,
+-1,
+0,
+0,
+0,
+0,
+1,
+0,
+1,
+0,
+-1,
+0,
+0,
+0,
+-1,
+0,
+0,
+0,
+-1,
+-1,
+0,
+0,
+0,
+0,
+-1,
+0,
+1,
+0,
+0,
+-1,
+0,
+0,
+0,
+1,
+1,
+0,
+0,
+0,
+0,
+1,
+0,
+1,
+0,
+1,
+0,
+0,
+0,
+-1,
+0,
+0,
+0,
+-1,
+1,
+0,
+0,
+0,
+0,
+-1,
+0,
+1,
+0,
+1,
+0,
+0
+]);
+var texcoord_arr = Float32Array.from([
+0.67,
+0.67,
+1,
+1,
+0.67,
+0.33,
+0.33,
+0.67,
+0.67,
+0.67,
+0,
+0,
+0.67,
+1,
+1,
+0.67,
+0.33,
+0.33,
+0.33,
+1,
+0,
+0.33,
+0.33,
+0,
+0.67,
+1,
+0.33,
+0.33,
+0.33,
+1,
+0.33,
+0.67,
+0,
+0.33,
+0,
+1,
+0.67,
+0.67,
+0.33,
+0.67,
+0.33,
+0.67,
+0,
+0.67,
+0.33,
+0.33,
+0,
+0.67
+]);
+var weights_arr = Float32Array.from([]);
+var index_arr = Uint16Array.from([
+16,
+5,
+22,
+5,
+11,
+22,
+1,
+12,
+7,
+12,
+18,
+7,
+2,
+4,
+13,
+4,
+15,
+13,
+14,
+17,
+20,
+17,
+23,
+20,
+19,
+21,
+8,
+21,
+10,
+8,
+6,
+9,
+0,
+9,
+3,
+0
+]);
+
+
+var EPSILON = 1e-6;
+var DEG_TO_RAD = Math.PI / 180;
+var RAD_TO_DEG = 180 / Math.PI;
+
+
+function clamp(min, max, num) {
+return Math.max(min, Math.min(max, num));
+}
+
+
+function vec3_set(out, x, y, z) {
+out[0] = x;
+out[1] = y;
+out[2] = z;
+return out;
+}
+function vec3_copy(out, a2) {
+out[0] = a2[0];
+out[1] = a2[1];
+out[2] = a2[2];
+return out;
+}
+function vec3_add(out, a2, b) {
+out[0] = a2[0] + b[0];
+out[1] = a2[1] + b[1];
+out[2] = a2[2] + b[2];
+return out;
+}
+function vec3_subtract(out, a2, b) {
+out[0] = a2[0] - b[0];
+out[1] = a2[1] - b[1];
+out[2] = a2[2] - b[2];
+return out;
+}
+function vec3_scale(out, a2, b) {
+out[0] = a2[0] * b;
+out[1] = a2[1] * b;
+out[2] = a2[2] * b;
+return out;
+}
+function vec3_negate(out, a2) {
+out[0] = -a2[0];
+out[1] = -a2[1];
+out[2] = -a2[2];
+return out;
+}
+function vec3_normalize(out, a2) {
+let x = a2[0];
+let y = a2[1];
+let z = a2[2];
+let len = x * x + y * y + z * z;
+if (len > 0) {
+len = 1 / Math.sqrt(len);
+}
+out[0] = a2[0] * len;
+out[1] = a2[1] * len;
+out[2] = a2[2] * len;
+return out;
+}
+function vec3_dot(a2, b) {
+return a2[0] * b[0] + a2[1] * b[1] + a2[2] * b[2];
+}
+function vec3_cross(out, a2, b) {
+let ax = a2[0], ay = a2[1], az = a2[2];
+let bx = b[0], by = b[1], bz = b[2];
+out[0] = ay * bz - az * by;
+out[1] = az * bx - ax * bz;
+out[2] = ax * by - ay * bx;
+return out;
+}
+function vec3_transform_position(out, a2, m) {
+let x = a2[0];
+let y = a2[1];
+let z = a2[2];
+let w = m[3] * x + m[7] * y + m[11] * z + m[15] || 1;
+out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;
+out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;
+out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;
+return out;
+}
+function vec3_transform_direction(out, a2, m) {
+let x = a2[0];
+let y = a2[1];
+let z = a2[2];
+out[0] = m[0] * x + m[4] * y + m[8] * z;
+out[1] = m[1] * x + m[5] * y + m[9] * z;
+out[2] = m[2] * x + m[6] * y + m[10] * z;
+return out;
+}
+function vec3_length(a2) {
+let x = a2[0];
+let y = a2[1];
+let z = a2[2];
+return Math.hypot(x, y, z);
+}
+function vec3_lerp(out, a2, b, t) {
+let ax = a2[0];
+let ay = a2[1];
+let az = a2[2];
+out[0] = ax + t * (b[0] - ax);
+out[1] = ay + t * (b[1] - ay);
+out[2] = az + t * (b[2] - az);
+return out;
+}
+
+
+function quat_set(out, x, y, z, w) {
+out[0] = x;
+out[1] = y;
+out[2] = z;
+out[3] = w;
+return out;
+}
+function quat_copy(out, a2) {
+out[0] = a2[0];
+out[1] = a2[1];
+out[2] = a2[2];
+out[3] = a2[3];
+return out;
+}
+function quat_normalize(out, a2) {
+let x = a2[0];
+let y = a2[1];
+let z = a2[2];
+let w = a2[3];
+let len = x * x + y * y + z * z + w * w;
+if (len > 0) {
+len = 1 / Math.sqrt(len);
+}
+out[0] = x * len;
+out[1] = y * len;
+out[2] = z * len;
+out[3] = w * len;
+return out;
+}
+function quat_multiply(out, a2, b) {
+let ax = a2[0], ay = a2[1], az = a2[2], aw = a2[3];
+let bx = b[0], by = b[1], bz = b[2], bw = b[3];
+out[0] = ax * bw + aw * bx + ay * bz - az * by;
+out[1] = ay * bw + aw * by + az * bx - ax * bz;
+out[2] = az * bw + aw * bz + ax * by - ay * bx;
+out[3] = aw * bw - ax * bx - ay * by - az * bz;
+return out;
+}
+function quat_from_euler(out, x, y, z) {
+let sx = Math.sin(x / 2 * DEG_TO_RAD);
+let cx = Math.cos(x / 2 * DEG_TO_RAD);
+let sy = Math.sin(y / 2 * DEG_TO_RAD);
+let cy = Math.cos(y / 2 * DEG_TO_RAD);
+let sz = Math.sin(z / 2 * DEG_TO_RAD);
+let cz = Math.cos(z / 2 * DEG_TO_RAD);
+out[0] = sx * cy * cz + cx * sy * sz;
+out[1] = cx * sy * cz - sx * cy * sz;
+out[2] = cx * cy * sz - sx * sy * cz;
+out[3] = cx * cy * cz + sx * sy * sz;
+return out;
+}
+function quat_get_pitch(quat) {
+let x = quat[0];
+let y = quat[1];
+let z = quat[2];
+let w = quat[3];
+let m23 = 2 * (y * z - w * x);
+return Math.asin(-clamp(-1, 1, m23)) * RAD_TO_DEG;
+}
+function quat_from_axis(out, axis, angle) {
+let half = angle / 2;
+out[0] = Math.sin(half) * axis[0];
+out[1] = Math.sin(half) * axis[1];
+out[2] = Math.sin(half) * axis[2];
+out[3] = Math.cos(half);
+return out;
+}
+var quat_rotation_to = function() {
+let tmpvec3 = [0, 0, 0];
+let xUnitVec3 = [1, 0, 0];
+let yUnitVec3 = [0, 1, 0];
+return function(out, a2, b) {
+let d = vec3_dot(a2, b);
+if (d < -0.999999) {
+vec3_cross(tmpvec3, xUnitVec3, a2);
+if (vec3_length(tmpvec3) < 1e-6)
+vec3_cross(tmpvec3, yUnitVec3, a2);
+vec3_normalize(tmpvec3, tmpvec3);
+quat_from_axis(out, tmpvec3, Math.PI);
+return out;
+} else if (d > 0.999999) {
+out[0] = 0;
+out[1] = 0;
+out[2] = 0;
+out[3] = 1;
+return out;
+} else {
+vec3_cross(tmpvec3, a2, b);
+out[0] = tmpvec3[0];
+out[1] = tmpvec3[1];
+out[2] = tmpvec3[2];
+out[3] = 1 + d;
+return quat_normalize(out, out);
+}
+};
+}();
+function quat_slerp(out, a2, b, t) {
+let ax = a2[0], ay = a2[1], az = a2[2], aw = a2[3];
+let bx = b[0], by = b[1], bz = b[2], bw = b[3];
+let omega, cosom, sinom, scale0, scale1;
+cosom = ax * bx + ay * by + az * bz + aw * bw;
+if (cosom < 0) {
+cosom = -cosom;
+bx = -bx;
+by = -by;
+bz = -bz;
+bw = -bw;
+}
+if (1 - cosom > EPSILON) {
+omega = Math.acos(cosom);
+sinom = Math.sin(omega);
+scale0 = Math.sin((1 - t) * omega) / sinom;
+scale1 = Math.sin(t * omega) / sinom;
+} else {
+scale0 = 1 - t;
+scale1 = t;
+}
+out[0] = scale0 * ax + scale1 * bx;
+out[1] = scale0 * ay + scale1 * by;
+out[2] = scale0 * az + scale1 * bz;
+out[3] = scale0 * aw + scale1 * bw;
+return out;
+}
+
+
+function animate(clips) {
+return (game2, entity) => {
+let States = {};
+for (let name in clips) {
+let { Keyframes, Flags = 7 /* Default */ } = clips[name];
+let duration = Keyframes[Keyframes.length - 1].Timestamp;
+States[name] = {
+
+
+
+
+
+Keyframes: Keyframes.map((keyframe) => ({ ...keyframe })),
+Flags,
+Duration: duration,
+Time: 0
+};
+}
+game2.World.Signature[entity] |= 1 /* Animate */;
+game2.World.Animate[entity] = {
+States,
+Current: States["idle"]
+};
+};
+}
+
+
+var QUERY = 4194304 /* Transform */ | 1 /* Animate */;
+function sys_animate(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY) === QUERY) {
+update(game2, i, delta);
+}
+}
+}
+function update(game2, entity, delta) {
+let transform2 = game2.World.Transform[entity];
+let animate2 = game2.World.Animate[entity];
+if (animate2.Trigger) {
+let next = animate2.States[animate2.Trigger];
+if (next && next !== animate2.Current) {
+if (animate2.Current.Time === 0) {
+animate2.Current = next;
+} else if (animate2.Current.Flags & 1 /* EarlyExit */) {
+animate2.Current.Time = 0;
+animate2.Current = next;
+}
+}
+animate2.Trigger = void 0;
+}
+let current_keyframe = null;
+let next_keyframe = null;
+for (let keyframe of animate2.Current.Keyframes) {
+if (animate2.Current.Time < keyframe.Timestamp) {
+next_keyframe = keyframe;
+break;
+} else {
+current_keyframe = keyframe;
+}
+}
+if (current_keyframe && next_keyframe) {
+let keyframe_duration = next_keyframe.Timestamp - current_keyframe.Timestamp;
+let current_keyframe_time = animate2.Current.Time - current_keyframe.Timestamp;
+let interpolant = current_keyframe_time / keyframe_duration;
+if (next_keyframe.Ease) {
+interpolant = next_keyframe.Ease(interpolant);
+}
+if (current_keyframe.Translation && next_keyframe.Translation) {
+vec3_lerp(
+transform2.Translation,
+current_keyframe.Translation,
+next_keyframe.Translation,
+interpolant
+);
+game2.World.Signature[entity] |= 256 /* Dirty */;
+}
+if (current_keyframe.Rotation && next_keyframe.Rotation) {
+quat_slerp(
+transform2.Rotation,
+current_keyframe.Rotation,
+next_keyframe.Rotation,
+interpolant
+);
+game2.World.Signature[entity] |= 256 /* Dirty */;
+}
+if (current_keyframe.Scale && next_keyframe.Scale) {
+vec3_lerp(transform2.Scale, current_keyframe.Scale, next_keyframe.Scale, interpolant);
+game2.World.Signature[entity] |= 256 /* Dirty */;
+}
+}
+let new_time = animate2.Current.Time + delta;
+if (new_time < animate2.Current.Duration) {
+animate2.Current.Time = new_time;
+return;
+} else {
+animate2.Current.Time = 0;
+}
+if (animate2.Current.Flags & 4 /* Alternate */) {
+for (let keyframe of animate2.Current.Keyframes.reverse()) {
+keyframe.Timestamp = animate2.Current.Duration - keyframe.Timestamp;
+}
+}
+if (!(animate2.Current.Flags & 2 /* Loop */)) {
+animate2.Current = animate2.States["idle"];
+}
+}
+
+
+function mat4_create() {
+return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
+}
+function mat4_copy(out, a2) {
+out[0] = a2[0];
+out[1] = a2[1];
+out[2] = a2[2];
+out[3] = a2[3];
+out[4] = a2[4];
+out[5] = a2[5];
+out[6] = a2[6];
+out[7] = a2[7];
+out[8] = a2[8];
+out[9] = a2[9];
+out[10] = a2[10];
+out[11] = a2[11];
+out[12] = a2[12];
+out[13] = a2[13];
+out[14] = a2[14];
+out[15] = a2[15];
+return out;
+}
+function mat4_invert(out, a2) {
+let a00 = a2[0], a01 = a2[1], a02 = a2[2], a03 = a2[3];
+let a10 = a2[4], a11 = a2[5], a12 = a2[6], a13 = a2[7];
+let a20 = a2[8], a21 = a2[9], a22 = a2[10], a23 = a2[11];
+let a30 = a2[12], a31 = a2[13], a32 = a2[14], a33 = a2[15];
+let b00 = a00 * a11 - a01 * a10;
+let b01 = a00 * a12 - a02 * a10;
+let b02 = a00 * a13 - a03 * a10;
+let b03 = a01 * a12 - a02 * a11;
+let b04 = a01 * a13 - a03 * a11;
+let b05 = a02 * a13 - a03 * a12;
+let b06 = a20 * a31 - a21 * a30;
+let b07 = a20 * a32 - a22 * a30;
+let b08 = a20 * a33 - a23 * a30;
+let b09 = a21 * a32 - a22 * a31;
+let b10 = a21 * a33 - a23 * a31;
+let b11 = a22 * a33 - a23 * a32;
+let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
+if (!det) {
+return null;
+}
+det = 1 / det;
+out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;
+out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;
+out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;
+out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;
+out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;
+out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;
+out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;
+out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;
+out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;
+out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;
+out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;
+out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;
+out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;
+out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;
+out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;
+out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;
+return out;
+}
+function mat4_multiply(out, a2, b) {
+let a00 = a2[0], a01 = a2[1], a02 = a2[2], a03 = a2[3];
+let a10 = a2[4], a11 = a2[5], a12 = a2[6], a13 = a2[7];
+let a20 = a2[8], a21 = a2[9], a22 = a2[10], a23 = a2[11];
+let a30 = a2[12], a31 = a2[13], a32 = a2[14], a33 = a2[15];
+let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
+out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
+out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
+out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
+out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
+b0 = b[4];
+b1 = b[5];
+b2 = b[6];
+b3 = b[7];
+out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
+out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
+out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
+out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
+b0 = b[8];
+b1 = b[9];
+b2 = b[10];
+b3 = b[11];
+out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
+out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
+out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
+out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
+b0 = b[12];
+b1 = b[13];
+b2 = b[14];
+b3 = b[15];
+out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
+out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
+out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
+out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
+return out;
+}
+function mat4_compose(out, q, v, s) {
+let x = q[0], y = q[1], z = q[2], w = q[3];
+let x2 = x + x;
+let y2 = y + y;
+let z2 = z + z;
+let xx = x * x2;
+let xy = x * y2;
+let xz = x * z2;
+let yy = y * y2;
+let yz = y * z2;
+let zz = z * z2;
+let wx = w * x2;
+let wy = w * y2;
+let wz = w * z2;
+let sx = s[0];
+let sy = s[1];
+let sz = s[2];
+out[0] = (1 - (yy + zz)) * sx;
+out[1] = (xy + wz) * sx;
+out[2] = (xz - wy) * sx;
+out[3] = 0;
+out[4] = (xy - wz) * sy;
+out[5] = (1 - (xx + zz)) * sy;
+out[6] = (yz + wx) * sy;
+out[7] = 0;
+out[8] = (xz + wy) * sz;
+out[9] = (yz - wx) * sz;
+out[10] = (1 - (xx + yy)) * sz;
+out[11] = 0;
+out[12] = v[0];
+out[13] = v[1];
+out[14] = v[2];
+out[15] = 1;
+return out;
+}
+function mat4_from_perspective(out, fovy, aspect, near, far) {
+let f = 1 / Math.tan(fovy / 2), nf;
+out[0] = f / aspect;
+out[1] = 0;
+out[2] = 0;
+out[3] = 0;
+out[4] = 0;
+out[5] = f;
+out[6] = 0;
+out[7] = 0;
+out[8] = 0;
+out[9] = 0;
+out[11] = -1;
+out[12] = 0;
+out[13] = 0;
+out[15] = 0;
+if (far != null && far !== Infinity) {
+nf = 1 / (near - far);
+out[10] = (far + near) * nf;
+out[14] = 2 * far * near * nf;
+} else {
+out[10] = -1;
+out[14] = -2 * near;
+}
+return out;
+}
+function mat4_from_ortho(out, top, right, bottom, left, near, far) {
+let lr = 1 / (left - right);
+let bt = 1 / (bottom - top);
+let nf = 1 / (near - far);
+out[0] = -2 * lr;
+out[1] = 0;
+out[2] = 0;
+out[3] = 0;
+out[4] = 0;
+out[5] = -2 * bt;
+out[6] = 0;
+out[7] = 0;
+out[8] = 0;
+out[9] = 0;
+out[10] = 2 * nf;
+out[11] = 0;
+out[12] = (left + right) * lr;
+out[13] = (top + bottom) * bt;
+out[14] = (far + near) * nf;
+out[15] = 1;
+return out;
+}
+function mat4_get_up(out, mat) {
+out[0] = mat[4];
+out[1] = mat[5];
+out[2] = mat[6];
+return vec3_normalize(out, out);
+}
+function mat4_get_forward(out, mat) {
+out[0] = mat[8];
+out[1] = mat[9];
+out[2] = mat[10];
+return vec3_normalize(out, out);
+}
+function mat4_get_translation(out, mat) {
+out[0] = mat[12];
+out[1] = mat[13];
+out[2] = mat[14];
+return out;
+}
+function mat4_get_scaling(out, mat) {
+let m11 = mat[0];
+let m12 = mat[1];
+let m13 = mat[2];
+let m21 = mat[4];
+let m22 = mat[5];
+let m23 = mat[6];
+let m31 = mat[8];
+let m32 = mat[9];
+let m33 = mat[10];
+out[0] = Math.hypot(m11, m12, m13);
+out[1] = Math.hypot(m21, m22, m23);
+out[2] = Math.hypot(m31, m32, m33);
+return out;
+}
+function mat4_get_rotation(out, mat) {
+let scaling = mat4_get_scaling([0, 0, 0], mat);
+let is1 = 1 / scaling[0];
+let is2 = 1 / scaling[1];
+let is3 = 1 / scaling[2];
+let sm11 = mat[0] * is1;
+let sm12 = mat[1] * is2;
+let sm13 = mat[2] * is3;
+let sm21 = mat[4] * is1;
+let sm22 = mat[5] * is2;
+let sm23 = mat[6] * is3;
+let sm31 = mat[8] * is1;
+let sm32 = mat[9] * is2;
+let sm33 = mat[10] * is3;
+let trace = sm11 + sm22 + sm33;
+let S = 0;
+if (trace > 0) {
+S = Math.sqrt(trace + 1) * 2;
+out[3] = 0.25 * S;
+out[0] = (sm23 - sm32) / S;
+out[1] = (sm31 - sm13) / S;
+out[2] = (sm12 - sm21) / S;
+} else if (sm11 > sm22 && sm11 > sm33) {
+S = Math.sqrt(1 + sm11 - sm22 - sm33) * 2;
+out[3] = (sm23 - sm32) / S;
+out[0] = 0.25 * S;
+out[1] = (sm12 + sm21) / S;
+out[2] = (sm31 + sm13) / S;
+} else if (sm22 > sm33) {
+S = Math.sqrt(1 + sm22 - sm11 - sm33) * 2;
+out[3] = (sm31 - sm13) / S;
+out[0] = (sm12 + sm21) / S;
+out[1] = 0.25 * S;
+out[2] = (sm23 + sm32) / S;
+} else {
+S = Math.sqrt(1 + sm33 - sm11 - sm22) * 2;
+out[3] = (sm12 - sm21) / S;
+out[0] = (sm31 + sm13) / S;
+out[1] = (sm23 + sm32) / S;
+out[2] = 0.25 * S;
+}
+return out;
+}
+function mat4_distance_squared_from_point(m, v) {
+let x = m[12] - v[0];
+let y = m[13] - v[1];
+let z = m[14] - v[2];
+return x * x + y * y + z * z;
+}
+
+
+var QUERY2 = 2 /* AudioListener */ | 4194304 /* Transform */;
+function sys_audio_listener(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY2) === QUERY2) {
+update2(game2, i);
+}
+}
+}
+var position = [0, 0, 0];
+var forward = [0, 0, 0];
+var up = [0, 0, 0];
+function update2(game2, entity) {
+let transform2 = game2.World.Transform[entity];
+mat4_get_translation(position, transform2.World);
+mat4_get_forward(forward, transform2.World);
+mat4_get_up(up, transform2.World);
+let listener = game2.Audio.listener;
+if (listener.positionX) {
+listener.positionX.value = position[0];
+listener.positionY.value = position[1];
+listener.positionZ.value = position[2];
+listener.forwardX.value = forward[0];
+listener.forwardY.value = forward[1];
+listener.forwardZ.value = forward[2];
+listener.upX.value = up[0];
+listener.upY.value = up[1];
+listener.upZ.value = up[2];
+} else {
+listener.setPosition(...position);
+listener.setOrientation(...forward, ...up);
+}
+}
+
+
+var seed = 1;
+function rand() {
+seed = seed * 16807 % 2147483647;
+return (seed - 1) / 2147483646;
+}
+function float(min = 0, max = 1) {
+return rand() * (max - min) + min;
+}
+
+
+function play_note(audio, panner, instr, note, offset) {
+let time = audio.currentTime + offset;
+let total_duration = 0;
+if (panner) {
+panner.connect(audio.destination);
+}
+let master = audio.createGain();
+master.gain.value = (instr[0 /* MasterGainAmount */] / 9) ** 3;
+let lfa, lfo;
+if (instr[5 /* LFOType */]) {
+lfo = audio.createOscillator();
+lfo.type = instr[5 /* LFOType */];
+lfo.frequency.value = (instr[7 /* LFOFreq */] / 3) ** 3;
+lfa = audio.createGain();
+lfa.gain.value = (instr[6 /* LFOAmount */] + 3) ** 3;
+lfo.connect(lfa);
+}
+if (instr[1 /* FilterType */]) {
+let filter = audio.createBiquadFilter();
+filter.type = instr[1 /* FilterType */];
+filter.frequency.value = 2 ** instr[2 /* FilterFreq */];
+filter.Q.value = instr[3 /* FilterQ */] ** 1.5;
+if (lfa && instr[4 /* FilterDetuneLFO */]) {
+lfa.connect(filter.detune);
+}
+master.connect(filter);
+if (panner) {
+filter.connect(panner);
+} else {
+filter.connect(audio.destination);
+}
+} else if (panner) {
+master.connect(panner);
+} else {
+master.connect(audio.destination);
+}
+for (let source of instr[8 /* Sources */]) {
+let amp = audio.createGain();
+amp.connect(master);
+let gain_amount = (source[1 /* GainAmount */] / 9) ** 3;
+let gain_attack = (source[2 /* GainAttack */] / 9) ** 3;
+let gain_sustain = (source[3 /* GainSustain */] / 9) ** 3;
+let gain_release = (source[4 /* GainRelease */] / 6) ** 3;
+let gain_duration = gain_attack + gain_sustain + gain_release;
+amp.gain.setValueAtTime(0, time);
+amp.gain.linearRampToValueAtTime(gain_amount, time + gain_attack);
+amp.gain.setValueAtTime(gain_amount, time + gain_attack + gain_sustain);
+amp.gain.exponentialRampToValueAtTime(1e-5, time + gain_duration);
+if (source[0]) {
+let hfo = audio.createOscillator();
+hfo.type = source[0 /* SourceType */];
+hfo.connect(amp);
+hfo.detune.value = 3 * (source[5 /* DetuneAmount */] - 7.5) ** 3;
+if (lfa && source[6 /* DetuneLFO */]) {
+lfa.connect(hfo.detune);
+}
+let freq = 440 * 2 ** ((note - 69) / 12);
+if (source[7 /* FreqEnabled */]) {
+let freq_attack = (source[8 /* FreqAttack */] / 9) ** 3;
+let freq_sustain = (source[9 /* FreqSustain */] / 9) ** 3;
+let freq_release = (source[10 /* FreqRelease */] / 6) ** 3;
+hfo.frequency.linearRampToValueAtTime(0, time);
+hfo.frequency.linearRampToValueAtTime(freq, time + freq_attack);
+hfo.frequency.setValueAtTime(freq, time + freq_attack + freq_sustain);
+hfo.frequency.exponentialRampToValueAtTime(
+1e-5,
+time + freq_attack + freq_sustain + freq_release
+);
+} else {
+hfo.frequency.setValueAtTime(freq, time);
+}
+hfo.start(time);
+hfo.stop(time + gain_duration);
+} else {
+let noise = audio.createBufferSource();
+noise.buffer = lazy_noise_buffer(audio);
+noise.loop = true;
+noise.connect(amp);
+noise.start(time);
+noise.stop(time + gain_duration);
+}
+if (gain_duration > total_duration) {
+total_duration = gain_duration;
+}
+}
+if (lfo) {
+lfo.start(time);
+lfo.stop(time + total_duration);
+}
+}
+var noise_buffer;
+function lazy_noise_buffer(audio) {
+if (!noise_buffer) {
+noise_buffer = audio.createBuffer(1, audio.sampleRate * 2, audio.sampleRate);
+let channel = noise_buffer.getChannelData(0);
+for (let i = 0; i < channel.length; i++) {
+channel[i] = Math.random() * 2 - 1;
+}
+}
+return noise_buffer;
+}
+function play_synth_clip(audio, panner, clip) {
+let spb = 60 / (clip.BPM || 120);
+let interval = spb / 4;
+for (let track of clip.Tracks) {
+for (let i = 0; i < track.Notes.length; i++) {
+if (track.Notes[i]) {
+play_note(audio, panner, track.Instrument, track.Notes[i], i * interval);
+}
+}
+}
+}
+function play_buffer_clip(audio, panner, clip) {
+let source = audio.createBufferSource();
+source.buffer = clip.Buffer;
+if (panner) {
+source.connect(panner);
+panner.connect(audio.destination);
+} else {
+source.connect(audio.destination);
+}
+source.start();
+}
+
+
+var QUERY3 = 4 /* AudioSource */ | 4194304 /* Transform */;
+function sys_audio_source(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY3) === QUERY3) {
+update3(game2, i, delta);
+}
+}
+}
+function update3(game2, entity, delta) {
+let audio_source2 = game2.World.AudioSource[entity];
+let transform2 = game2.World.Transform[entity];
+if (audio_source2.Current) {
+audio_source2.Time += delta;
+if (audio_source2.Time > audio_source2.Current.Exit) {
+audio_source2.Current = void 0;
+} else if (audio_source2.Panner) {
+update_panner(audio_source2.Panner, transform2);
+}
+}
+if (audio_source2.Trigger && !audio_source2.Current) {
+switch (audio_source2.Trigger.Kind) {
+case 0 /* Buffer */:
+play_buffer_clip(game2.Audio, audio_source2.Panner, audio_source2.Trigger);
+break;
+case 1 /* Synth */:
+play_synth_clip(game2.Audio, audio_source2.Panner, audio_source2.Trigger);
+break;
+}
+audio_source2.Current = audio_source2.Trigger;
+audio_source2.Time = 0;
+if (audio_source2.Panner) {
+update_panner(audio_source2.Panner, transform2);
+}
+}
+audio_source2.Trigger = audio_source2.Idle;
+}
+var position2 = [0, 0, 0];
+var forward2 = [0, 0, 0];
+function update_panner(panner, transform2) {
+mat4_get_translation(position2, transform2.World);
+mat4_get_forward(forward2, transform2.World);
+if (panner.positionX) {
+panner.positionX.value = position2[0];
+panner.positionY.value = position2[1];
+panner.positionZ.value = position2[2];
+panner.orientationX.value = forward2[0];
+panner.orientationY.value = forward2[1];
+panner.orientationZ.value = forward2[2];
+} else {
+panner.setPosition(...position2);
+panner.setOrientation(...forward2);
+}
+}
+
+
+function camera_canvas(projection, clear_color = [0.9, 0.9, 0.9, 1], clear_mask = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 8 /* Camera */;
+game2.World.Camera[entity] = {
+Kind: 0 /* Canvas */,
+Projection: projection,
+World: mat4_create(),
+ViewportWidth: 0,
+ViewportHeight: 0,
+Pv: mat4_create(),
+Position: [0, 0, 0],
+FogColor: clear_color,
+FogDistance: projection.Far,
+ClearColor: clear_color,
+ClearMask: clear_mask
+};
+};
+}
+
+
+var QUERY4 = 4194304 /* Transform */ | 8 /* Camera */;
+function sys_camera(game2, delta) {
+game2.Cameras = [];
+for (let ent = 0; ent < game2.World.Signature.length; ent++) {
+if ((game2.World.Signature[ent] & QUERY4) === QUERY4) {
+let camera = game2.World.Camera[ent];
+let transform2 = game2.World.Transform[ent];
+mat4_copy(camera.World, transform2.World);
+switch (camera.Kind) {
+case 0 /* Canvas */:
+case 1 /* Target */:
+update_camera(game2, ent, camera);
+game2.Cameras.push(ent);
+break;
+}
+}
+}
+}
+function update_camera(game2, entity, camera) {
+let transform2 = game2.World.Transform[entity];
+let projection = camera.Projection;
+mat4_multiply(camera.Pv, projection.Projection, transform2.Self);
+mat4_get_translation(camera.Position, transform2.World);
+}
+
+
+var BOX = [
+[0.5, 0.5, 0.5],
+[0.5, 0.5, -0.5],
+[-0.5, 0.5, -0.5],
+[-0.5, 0.5, 0.5],
+[0.5, -0.5, 0.5],
+[0.5, -0.5, -0.5],
+[-0.5, -0.5, -0.5],
+[-0.5, -0.5, 0.5]
+];
+function compute_aabb(world, aabb) {
+mat4_get_translation(aabb.Center, world);
+let min_x, min_y, min_z, max_x, max_y, max_z;
+min_x = max_x = aabb.Center[0];
+min_y = max_y = aabb.Center[1];
+min_z = max_z = aabb.Center[2];
+let world_vertex = [0, 0, 0];
+for (let i = 0; i < 8; i++) {
+let bb_vertex = BOX[i];
+world_vertex[0] = bb_vertex[0] * aabb.Size[0];
+world_vertex[1] = bb_vertex[1] * aabb.Size[1];
+world_vertex[2] = bb_vertex[2] * aabb.Size[2];
+vec3_transform_position(world_vertex, world_vertex, world);
+if (world_vertex[0] < min_x) {
+min_x = world_vertex[0];
+}
+if (world_vertex[0] > max_x) {
+max_x = world_vertex[0];
+}
+if (world_vertex[1] < min_y) {
+min_y = world_vertex[1];
+}
+if (world_vertex[1] > max_y) {
+max_y = world_vertex[1];
+}
+if (world_vertex[2] < min_z) {
+min_z = world_vertex[2];
+}
+if (world_vertex[2] > max_z) {
+max_z = world_vertex[2];
+}
+}
+aabb.Min = [min_x, min_y, min_z];
+aabb.Max = [max_x, max_y, max_z];
+aabb.Half[0] = (max_x - min_x) / 2;
+aabb.Half[1] = (max_y - min_y) / 2;
+aabb.Half[2] = (max_z - min_z) / 2;
+}
+function penetrate_aabb(a2, b) {
+let distance_x = a2.Center[0] - b.Center[0];
+let penetration_x = a2.Half[0] + b.Half[0] - Math.abs(distance_x);
+let distance_y = a2.Center[1] - b.Center[1];
+let penetration_y = a2.Half[1] + b.Half[1] - Math.abs(distance_y);
+let distance_z = a2.Center[2] - b.Center[2];
+let penetration_z = a2.Half[2] + b.Half[2] - Math.abs(distance_z);
+if (penetration_x < penetration_y && penetration_x < penetration_z) {
+return [penetration_x * Math.sign(distance_x), 0, 0];
+} else if (penetration_y < penetration_z) {
+return [0, penetration_y * Math.sign(distance_y), 0];
+} else {
+return [0, 0, penetration_z * Math.sign(distance_z)];
+}
+}
+function intersect_aabb(a2, b) {
+return a2.Min[0] < b.Max[0] && a2.Max[0] > b.Min[0] && a2.Min[1] < b.Max[1] && a2.Max[1] > b.Min[1] && a2.Min[2] < b.Max[2] && a2.Max[2] > b.Min[2];
+}
+
+
+var QUERY5 = 4194304 /* Transform */ | 32 /* Collide */;
+function sys_collide(game2, delta) {
+let static_colliders = [];
+let dynamic_colliders = [];
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY5) === QUERY5) {
+let transform2 = game2.World.Transform[i];
+let collider = game2.World.Collide[i];
+collider.Collisions = [];
+if (collider.New) {
+collider.New = false;
+compute_aabb(transform2.World, collider);
+} else if (collider.Dynamic) {
+compute_aabb(transform2.World, collider);
+dynamic_colliders.push(collider);
+} else {
+static_colliders.push(collider);
+}
+}
+}
+for (let i = 0; i < dynamic_colliders.length; i++) {
+check_collisions(dynamic_colliders[i], static_colliders, static_colliders.length);
+check_collisions(dynamic_colliders[i], dynamic_colliders, i);
+}
+}
+function check_collisions(collider, colliders, length) {
+for (let i = 0; i < length; i++) {
+let other = colliders[i];
+let collider_can_intersect = collider.Mask & other.Layers;
+let other_can_intersect = other.Mask & collider.Layers;
+if (collider_can_intersect || other_can_intersect) {
+if (intersect_aabb(collider, other)) {
+let hit = penetrate_aabb(collider, other);
+if (collider_can_intersect) {
+collider.Collisions.push({
+Other: other.EntityId,
+Hit: hit
+});
+}
+if (other_can_intersect) {
+other.Collisions.push({
+Other: collider.EntityId,
+Hit: vec3_negate([0, 0, 0], hit)
+});
+}
+}
+}
+}
+}
+
+
+var QUERY6 = 64 /* ControlAlways */ | 4194304 /* Transform */ | 16384 /* Move */;
+function sys_control_always(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY6) === QUERY6) {
+update4(game2, i);
+}
+}
+}
+function update4(game2, entity) {
+let control = game2.World.ControlAlways[entity];
+let move2 = game2.World.Move[entity];
+if (control.Direction) {
+vec3_add(move2.Direction, move2.Direction, control.Direction);
+}
+if (control.Rotation) {
+quat_multiply(move2.LocalRotation, move2.LocalRotation, control.Rotation);
+}
+if (control.Animation) {
+for (let ent of query_down(game2.World, entity, 1 /* Animate */)) {
+let animate2 = game2.World.Animate[ent];
+animate2.Trigger = control.Animation;
+}
+}
+}
+
+
+var QUERY7 = 128 /* ControlPlayer */ | 131072 /* RigidBody */;
+function sys_control_jump(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY7) === QUERY7) {
+update5(game2, i);
+}
+}
+}
+function update5(game2, entity) {
+let control = game2.World.ControlPlayer[entity];
+let rigid_body2 = game2.World.RigidBody[entity];
+if (control.Move) {
+if (game2.InputState["Space"]) {
+if (rigid_body2.IsGrounded) {
+rigid_body2.Acceleration[1] = 300;
+for (let ent of query_down(game2.World, entity, 1 /* Animate */)) {
+game2.World.Animate[ent].Trigger = "jump";
+}
+}
+}
+}
+}
+
+
+var QUERY8 = 16384 /* Move */ | 128 /* ControlPlayer */;
+function sys_control_keyboard(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY8) === QUERY8) {
+update6(game2, i);
+}
+}
+}
+function update6(game2, entity) {
+let control = game2.World.ControlPlayer[entity];
+if (control.Move) {
+let move2 = game2.World.Move[entity];
+if (game2.InputState["KeyW"]) {
+move2.Direction[2] += 1;
+}
+if (game2.InputState["KeyA"]) {
+move2.Direction[0] += 1;
+}
+if (game2.InputState["KeyS"]) {
+move2.Direction[2] -= 1;
+}
+if (game2.InputState["KeyD"]) {
+move2.Direction[0] -= 1;
+}
+}
+if (control.Yaw) {
+let move2 = game2.World.Move[entity];
+if (game2.InputState["ArrowLeft"]) {
+quat_multiply(move2.LocalRotation, move2.LocalRotation, [0, 1, 0, 0]);
+}
+if (game2.InputState["ArrowRight"]) {
+quat_multiply(move2.LocalRotation, move2.LocalRotation, [0, -1, 0, 0]);
+}
+}
+if (control.Pitch) {
+let transform2 = game2.World.Transform[entity];
+let move2 = game2.World.Move[entity];
+let current_pitch = quat_get_pitch(transform2.Rotation);
+if (game2.InputState["ArrowUp"] && current_pitch > control.MinPitch) {
+quat_multiply(move2.SelfRotation, move2.SelfRotation, [-1, 0, 0, 0]);
+}
+if (game2.InputState["ArrowDown"] && current_pitch < control.MaxPitch) {
+quat_multiply(move2.SelfRotation, move2.SelfRotation, [1, 0, 0, 0]);
+}
+}
+}
+
+
+var QUERY9 = 4194304 /* Transform */ | 16384 /* Move */ | 128 /* ControlPlayer */;
+var AXIS_X = [1, 0, 0];
+var AXIS_Y = [0, 1, 0];
+function sys_control_mouse_move(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY9) === QUERY9) {
+update7(game2, i);
+}
+}
+}
+var rotation = [0, 0, 0, 0];
+function update7(game2, entity) {
+let control = game2.World.ControlPlayer[entity];
+let transform2 = game2.World.Transform[entity];
+if (control.Yaw && game2.InputDelta.MouseX) {
+let amount = game2.InputDelta.MouseX * control.Yaw * DEG_TO_RAD;
+quat_from_axis(rotation, AXIS_Y, -amount);
+quat_multiply(transform2.Rotation, rotation, transform2.Rotation);
+game2.World.Signature[entity] |= 256 /* Dirty */;
+}
+if (control.Pitch && game2.InputDelta.MouseY) {
+let current_pitch = quat_get_pitch(transform2.Rotation);
+let min_amount = control.MinPitch - current_pitch;
+let max_amount = control.MaxPitch - current_pitch;
+let amount = clamp(min_amount, max_amount, game2.InputDelta.MouseY * control.Pitch);
+quat_from_axis(rotation, AXIS_X, amount * DEG_TO_RAD);
+quat_multiply(transform2.Rotation, transform2.Rotation, rotation);
+game2.World.Signature[entity] |= 256 /* Dirty */;
+}
+}
+
+
+var QUERY10 = 16384 /* Move */ | 128 /* ControlPlayer */;
+var AXIS_Y2 = [0, 1, 0];
+var AXIS_X2 = [1, 0, 0];
+var DEAD_ZONE = 0.01;
+var TOUCH_SENSITIVITY = 10;
+var joystick = [0, 0];
+var rotation2 = [0, 0, 0, 0];
+function sys_control_touch_move(game2, delta) {
+if (game2.InputDelta["Touch0"] === 1) {
+joystick[0] = game2.InputState["Touch0X"];
+joystick[1] = game2.InputState["Touch0Y"];
+}
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY10) === QUERY10) {
+update8(game2, i);
+}
+}
+}
+function update8(game2, entity) {
+let transform2 = game2.World.Transform[entity];
+let control = game2.World.ControlPlayer[entity];
+let move2 = game2.World.Move[entity];
+if (control.Move && game2.InputState["Touch0"] === 1) {
+let divisor = Math.min(game2.ViewportWidth, game2.ViewportHeight) / 4;
+let amount_x = (game2.InputState["Touch0X"] - joystick[0]) / divisor;
+let amount_y = (game2.InputState["Touch0Y"] - joystick[1]) / divisor;
+if (Math.abs(amount_x) > DEAD_ZONE) {
+move2.Direction[0] += clamp(-1, 1, -amount_x);
+}
+if (Math.abs(amount_y) > DEAD_ZONE) {
+move2.Direction[2] += clamp(-1, 1, -amount_y);
+}
+}
+if (control.Yaw && game2.InputDelta["Touch1X"]) {
+let amount = game2.InputDelta["Touch1X"] * control.Yaw * TOUCH_SENSITIVITY * DEG_TO_RAD;
+quat_from_axis(rotation2, AXIS_Y2, -amount);
+quat_multiply(transform2.Rotation, rotation2, transform2.Rotation);
+game2.World.Signature[entity] |= 256 /* Dirty */;
+}
+if (control.Pitch && game2.InputDelta["Touch1Y"]) {
+let current_pitch = quat_get_pitch(transform2.Rotation);
+let min_amount = control.MinPitch - current_pitch;
+let max_amount = control.MaxPitch - current_pitch;
+let amount = clamp(
+min_amount,
+max_amount,
+game2.InputDelta["Touch1Y"] * control.Pitch * TOUCH_SENSITIVITY
+);
+quat_from_axis(rotation2, AXIS_X2, amount * DEG_TO_RAD);
+quat_multiply(transform2.Rotation, transform2.Rotation, rotation2);
+game2.World.Signature[entity] |= 256 /* Dirty */;
+}
+}
+
+
+var QUERY11 = 16384 /* Move */ | 128 /* ControlPlayer */;
+var AXIS_Y3 = [0, 1, 0];
+var AXIS_X3 = [1, 0, 0];
+var DEAD_ZONE2 = 0.1;
+function sys_control_xbox(game2, delta) {
+for (let pad of navigator.getGamepads()) {
+if (pad) {
+game2.InputDelta[`pad${pad.index}_axis_1`] = pad.axes[0];
+game2.InputDelta[`pad${pad.index}_axis_2`] = pad.axes[1];
+game2.InputDelta[`pad${pad.index}_axis_3`] = pad.axes[2];
+game2.InputDelta[`pad${pad.index}_axis_4`] = pad.axes[3];
+}
+}
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY11) === QUERY11) {
+update9(game2, i);
+}
+}
+}
+function update9(game2, entity) {
+let control = game2.World.ControlPlayer[entity];
+if (control.Move) {
+let move2 = game2.World.Move[entity];
+if (Math.abs(game2.InputDelta["pad0_axis_1"]) > DEAD_ZONE2) {
+move2.Direction[0] -= game2.InputDelta["pad0_axis_1"];
+}
+if (Math.abs(game2.InputDelta["pad0_axis_2"]) > DEAD_ZONE2) {
+move2.Direction[2] -= game2.InputDelta["pad0_axis_2"];
+}
+}
+if (control.Yaw && Math.abs(game2.InputDelta["pad0_axis_3"]) > DEAD_ZONE2) {
+let move2 = game2.World.Move[entity];
+let amount = game2.InputDelta["pad0_axis_3"] * Math.PI;
+quat_multiply(
+move2.LocalRotation,
+move2.LocalRotation,
+quat_from_axis([0, 0, 0, 1], AXIS_Y3, -amount)
+);
+}
+if (control.Pitch && Math.abs(game2.InputDelta["pad0_axis_4"]) > DEAD_ZONE2) {
+let transform2 = game2.World.Transform[entity];
+let move2 = game2.World.Move[entity];
+let amount = game2.InputDelta["pad0_axis_4"] * Math.PI;
+let current_pitch = quat_get_pitch(transform2.Rotation);
+if (amount < 0 && current_pitch > control.MinPitch || amount > 0 && current_pitch < control.MaxPitch) {
+quat_multiply(
+move2.SelfRotation,
+move2.SelfRotation,
+quat_from_axis([0, 0, 0, 1], AXIS_X3, amount)
+);
+}
+}
+}
+
+
+function render_colored_shaded(material, mesh, diffuse_color, shininess = 0, emission = 0, specular_rgb = [1, 1, 1], front_face = GL_CW) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 65536 /* Render */;
+game2.World.Render[entity] = {
+Kind: 1 /* ColoredShaded */,
+Material: material,
+Mesh: mesh,
+Phase: diffuse_color[3] < 1 ? 1 /* Transparent */ : 0 /* Opaque */,
+FrontFace: front_face,
+DiffuseColor: diffuse_color,
+SpecularColor: [...specular_rgb, shininess],
+EmissiveColor: [diffuse_color[0], diffuse_color[1], diffuse_color[2], emission]
+};
+};
+}
+var FLOATS_PER_PARTICLE = 8;
+var MAX_PARTICLES = 200;
+function render_particles_colored(material, start_color, start_size, end_color, end_size) {
+return (game2, entity) => {
+let buffer = game2.Gl.createBuffer();
+game2.Gl.bindBuffer(GL_ARRAY_BUFFER, buffer);
+game2.Gl.bufferData(
+GL_ARRAY_BUFFER,
+MAX_PARTICLES * FLOATS_PER_PARTICLE * 4,
+GL_DYNAMIC_DRAW
+);
+game2.World.Signature[entity] |= 65536 /* Render */;
+game2.World.Render[entity] = {
+Kind: 8 /* ParticlesColored */,
+Material: material,
+Phase: start_color[3] < 1 || end_color[3] < 1 ? 1 /* Transparent */ : 0 /* Opaque */,
+Buffer: buffer,
+ColorStart: start_color,
+ColorEnd: end_color,
+Size: [start_size, end_size],
+FrontFace: GL_CW
+};
+};
+}
+
+
+function transform(translation = [0, 0, 0], rotation3 = [0, 0, 0, 1], scale = [1, 1, 1], is_gyroscope = false) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 4194304 /* Transform */ | 256 /* Dirty */;
+game2.World.Transform[entity] = {
+World: mat4_create(),
+Self: mat4_create(),
+Translation: translation,
+Rotation: rotation3,
+Scale: scale,
+IsGyroscope: is_gyroscope
+};
+};
+}
+function set_position(x, y, z) {
+return (game2, entity) => {
+let local = game2.World.Transform[entity];
+local.Translation[0] = x;
+local.Translation[1] = y;
+local.Translation[2] = z;
+};
+}
+function copy_position(translation) {
+return (game2, entity) => {
+let local = game2.World.Transform[entity];
+vec3_copy(local.Translation, translation);
+};
+}
+function set_rotation(x, y, z) {
+return (game2, entity) => {
+let local = game2.World.Transform[entity];
+quat_from_euler(local.Rotation, x, y, z);
+};
+}
+function copy_rotation(rotation3) {
+return (game2, entity) => {
+let local = game2.World.Transform[entity];
+quat_copy(local.Rotation, rotation3);
+};
+}
+function set_scale(x, y, z) {
+return (game2, entity) => {
+let local = game2.World.Transform[entity];
+local.Scale[0] = x;
+local.Scale[1] = y;
+local.Scale[2] = z;
+};
+}
+
+
+var QUERY12 = 4194304 /* Transform */ | 512 /* Draw */;
+function sys_draw(game2, delta) {
+game2.ForegroundContext.resetTransform();
+game2.ForegroundContext.clearRect(0, 0, game2.ViewportWidth, game2.ViewportHeight);
+let position3 = [0, 0, 0];
+let camera_entity = game2.Cameras[0];
+let main_camera = game2.World.Camera[camera_entity];
+if (!main_camera || main_camera.Kind === 2 /* Xr */) {
+return;
+}
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY12) == QUERY12) {
+mat4_get_translation(position3, game2.World.Transform[i].World);
+vec3_transform_position(position3, position3, main_camera.Pv);
+if (position3[2] < -1 || position3[2] > 1) {
+continue;
+}
+game2.ForegroundContext.setTransform(
+1,
+0,
+0,
+1,
+0.5 * (position3[0] + 1) * game2.ViewportWidth,
+0.5 * (-position3[1] + 1) * game2.ViewportHeight
+);
+let draw = game2.World.Draw[i];
+switch (draw.Kind) {
+case 0 /* Text */:
+draw_text(game2, draw);
+break;
+case 3 /* Selection */:
+draw_selection(game2, draw);
+break;
+}
+}
+}
+}
+function draw_text(game2, draw) {
+game2.ForegroundContext.textAlign = "center";
+game2.ForegroundContext.font = draw.Font;
+game2.ForegroundContext.fillStyle = draw.FillStyle;
+game2.ForegroundContext.fillText(draw.Text, 0, 0);
+}
+function draw_selection(game2, draw) {
+game2.ForegroundContext.strokeStyle = draw.Color;
+game2.ForegroundContext.strokeRect(-draw.Size / 2, -draw.Size / 2, draw.Size, draw.Size);
+}
+
+
+var QUERY13 = 2048 /* Lifespan */;
+function sys_lifespan(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY13) == QUERY13) {
+update10(game2, i, delta);
+}
+}
+}
+function update10(game2, entity, delta) {
+let lifespan2 = game2.World.Lifespan[entity];
+lifespan2.Remaining -= delta;
+if (lifespan2.Remaining < 0) {
+if (lifespan2.Action) {
+dispatch(game2, lifespan2.Action, entity);
+}
+destroy_all(game2.World, entity);
+}
+}
+
+
+var QUERY14 = 4194304 /* Transform */ | 4096 /* Light */;
+function sys_light(game2, delta) {
+game2.LightPositions.fill(0);
+game2.LightDetails.fill(0);
+let counter = 0;
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY14) === QUERY14) {
+update11(game2, i, counter++);
+}
+}
+}
+var world_pos = [0, 0, 0];
+function update11(game2, entity, idx) {
+let light = game2.World.Light[entity];
+let transform2 = game2.World.Transform[entity];
+if (light.Kind === 2 /* Directional */) {
+mat4_get_forward(world_pos, transform2.World);
+} else {
+mat4_get_translation(world_pos, transform2.World);
+}
+game2.LightPositions[4 * idx + 0] = world_pos[0];
+game2.LightPositions[4 * idx + 1] = world_pos[1];
+game2.LightPositions[4 * idx + 2] = world_pos[2];
+game2.LightPositions[4 * idx + 3] = light.Kind;
+game2.LightDetails[4 * idx + 0] = light.Color[0];
+game2.LightDetails[4 * idx + 1] = light.Color[1];
+game2.LightDetails[4 * idx + 2] = light.Color[2];
+game2.LightDetails[4 * idx + 3] = light.Intensity;
+}
+
+
+var QUERY15 = 4194304 /* Transform */ | 8192 /* Mimic */;
+function sys_mimic(game2, delta) {
+for (let ent = 0; ent < game2.World.Signature.length; ent++) {
+if ((game2.World.Signature[ent] & QUERY15) === QUERY15) {
+update12(game2, ent);
+}
+}
+}
+var target_position = [0, 0, 0];
+var target_rotation = [0, 0, 0, 1];
+function update12(game2, entity) {
+let transform2 = game2.World.Transform[entity];
+let mimic2 = game2.World.Mimic[entity];
+let target_transform = game2.World.Transform[mimic2.Target];
+mat4_get_translation(target_position, target_transform.World);
+mat4_get_rotation(target_rotation, target_transform.World);
+vec3_lerp(transform2.Translation, transform2.Translation, target_position, mimic2.Stiffness);
+quat_slerp(transform2.Rotation, transform2.Rotation, target_rotation, mimic2.Stiffness);
+game2.World.Signature[entity] |= 256 /* Dirty */;
+}
+
+
+var QUERY16 = 4194304 /* Transform */ | 16384 /* Move */;
+function sys_move(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY16) === QUERY16) {
+update13(game2, i, delta);
+}
+}
+}
+function update13(game2, entity, delta) {
+let transform2 = game2.World.Transform[entity];
+let move2 = game2.World.Move[entity];
+if (move2.Direction[0] !== 0 || move2.Direction[1] !== 0 || move2.Direction[2] !== 0) {
+let amount = Math.min(1, vec3_length(move2.Direction));
+vec3_transform_direction(move2.Direction, move2.Direction, transform2.World);
+if (transform2.Parent !== void 0) {
+let parent = game2.World.Transform[transform2.Parent];
+vec3_transform_direction(move2.Direction, move2.Direction, parent.Self);
+}
+vec3_normalize(move2.Direction, move2.Direction);
+vec3_scale(move2.Direction, move2.Direction, amount * move2.MoveSpeed * delta);
+vec3_add(transform2.Translation, transform2.Translation, move2.Direction);
+game2.World.Signature[entity] |= 256 /* Dirty */;
+vec3_set(move2.Direction, 0, 0, 0);
+}
+if (move2.LocalRotation[3] < 1) {
+quat_multiply(move2.LocalRotation, move2.LocalRotation, transform2.Rotation);
+let t = Math.min(1, move2.RotationSpeed / Math.PI * delta);
+quat_slerp(transform2.Rotation, transform2.Rotation, move2.LocalRotation, t);
+game2.World.Signature[entity] |= 256 /* Dirty */;
+quat_set(move2.LocalRotation, 0, 0, 0, 1);
+}
+if (move2.SelfRotation[3] < 1) {
+quat_multiply(move2.SelfRotation, transform2.Rotation, move2.SelfRotation);
+let t = Math.min(1, move2.RotationSpeed / Math.PI * delta);
+quat_slerp(transform2.Rotation, transform2.Rotation, move2.SelfRotation, t);
+game2.World.Signature[entity] |= 256 /* Dirty */;
+quat_set(move2.SelfRotation, 0, 0, 0, 1);
+}
+}
+
+
+var QUERY17 = 4194304 /* Transform */ | 1024 /* EmitParticles */;
+function sys_particles(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY17) == QUERY17) {
+update14(game2, i, delta);
+}
+}
+}
+var origin = [0, 0, 0];
+var forward3 = [0, 0, 0];
+function update14(game2, entity, delta) {
+let emitter = game2.World.EmitParticles[entity];
+let transform2 = game2.World.Transform[entity];
+emitter.SinceLast += delta;
+if (emitter.SinceLast > emitter.Frequency) {
+emitter.SinceLast = 0;
+mat4_get_translation(origin, transform2.World);
+mat4_get_forward(forward3, transform2.World);
+emitter.Instances.push(...origin, 0);
+emitter.Instances.push(...forward3, Math.random());
+}
+for (let i = 0; i < emitter.Instances.length; ) {
+emitter.Instances[i + 3] += delta;
+if (emitter.Instances[i + 3] > emitter.Lifespan) {
+emitter.Instances.splice(i, FLOATS_PER_PARTICLE);
+} else {
+i += FLOATS_PER_PARTICLE;
+}
+}
+}
+
+
+function rigid_body(kind, bounciness = 0.5) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 131072 /* RigidBody */;
+game2.World.RigidBody[entity] = {
+Kind: kind,
+ColliderId: entity,
+Bounciness: bounciness,
+Acceleration: [0, 0, 0],
+VelocityLinear: [0, 0, 0],
+VelocityResolved: [0, 0, 0],
+LastPosition: [0, 0, 0],
+IsGrounded: false
+};
+};
+}
+
+
+var QUERY18 = 4194304 /* Transform */ | 131072 /* RigidBody */;
+var GRAVITY = -9.81;
+function sys_physics_integrate(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY18) === QUERY18) {
+update15(game2, i, delta);
+}
+}
+}
+var velocity_delta = [0, 0, 0];
+function update15(game2, entity, delta) {
+let transform2 = game2.World.Transform[entity];
+let rigid_body2 = game2.World.RigidBody[entity];
+if (rigid_body2.Kind === 1 /* Dynamic */) {
+rigid_body2.VelocityLinear[1] += GRAVITY * delta;
+vec3_scale(rigid_body2.Acceleration, rigid_body2.Acceleration, delta);
+vec3_add(rigid_body2.VelocityLinear, rigid_body2.VelocityLinear, rigid_body2.Acceleration);
+vec3_scale(velocity_delta, rigid_body2.VelocityLinear, delta);
+vec3_add(transform2.Translation, transform2.Translation, velocity_delta);
+game2.World.Signature[entity] |= 256 /* Dirty */;
+vec3_set(rigid_body2.Acceleration, 0, 0, 0);
+}
+}
+
+
+var QUERY19 = 4194304 /* Transform */ | 131072 /* RigidBody */;
+function sys_physics_kinematic(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY19) === QUERY19) {
+update16(game2, i, delta);
+}
+}
+}
+var current_position = [0, 0, 0];
+var movement_delta = [0, 0, 0];
+function update16(game2, entity, delta) {
+let transform2 = game2.World.Transform[entity];
+let rigid_body2 = game2.World.RigidBody[entity];
+mat4_get_translation(current_position, transform2.World);
+if (rigid_body2.Kind === 2 /* Kinematic */) {
+vec3_subtract(movement_delta, current_position, rigid_body2.LastPosition);
+vec3_scale(rigid_body2.VelocityLinear, movement_delta, 1 / delta);
+}
+vec3_copy(rigid_body2.LastPosition, current_position);
+}
+
+
+var QUERY20 = 4194304 /* Transform */ | 32 /* Collide */ | 131072 /* RigidBody */;
+function sys_physics_resolve(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY20) === QUERY20) {
+update17(game2, i);
+}
+}
+for (let ent = 0; ent < game2.World.Signature.length; ent++) {
+if ((game2.World.Signature[ent] & QUERY20) === QUERY20) {
+let rigid_body2 = game2.World.RigidBody[ent];
+if (rigid_body2.Kind === 1 /* Dynamic */) {
+vec3_copy(rigid_body2.VelocityLinear, rigid_body2.VelocityResolved);
+}
+}
+}
+}
+var a = [0, 0, 0];
+var response = [0, 0, 0];
+function update17(game2, entity) {
+let transform2 = game2.World.Transform[entity];
+let rigid_body2 = game2.World.RigidBody[entity];
+let collide2 = game2.World.Collide[rigid_body2.ColliderId];
+if (rigid_body2.Kind === 1 /* Dynamic */) {
+rigid_body2.IsGrounded = false;
+vec3_set(response, 0, 0, 0);
+for (let i = 0; i < collide2.Collisions.length; i++) {
+let collision = collide2.Collisions[i];
+if (game2.World.Signature[collision.Other] & 131072 /* RigidBody */) {
+let other_body = game2.World.RigidBody[collision.Other];
+switch (other_body.Kind) {
+case 0 /* Static */:
+vec3_extend(response, collision.Hit, response);
+vec3_normalize(a, collision.Hit);
+vec3_scale(a, a, -2 * vec3_dot(rigid_body2.VelocityLinear, a));
+vec3_add(rigid_body2.VelocityResolved, rigid_body2.VelocityLinear, a);
+break;
+case 1 /* Dynamic */:
+case 2 /* Kinematic */:
+vec3_extend(response, response, collision.Hit);
+vec3_copy(rigid_body2.VelocityResolved, other_body.VelocityLinear);
+break;
+}
+vec3_scale(
+rigid_body2.VelocityResolved,
+rigid_body2.VelocityResolved,
+rigid_body2.Bounciness
+);
+if (collision.Hit[1] > 0) {
+rigid_body2.IsGrounded = true;
+}
+}
+}
+if (response[0] || response[1] || response[2]) {
+if (Math.abs(response[0]) < 0.1) {
+response[0] = 0;
+}
+if (Math.abs(response[2]) < 0.1) {
+response[2] = 0;
+}
+vec3_add(transform2.Translation, transform2.Translation, response);
+game2.World.Signature[entity] |= 256 /* Dirty */;
+} else {
+vec3_copy(rigid_body2.VelocityResolved, rigid_body2.VelocityLinear);
+}
+}
+}
+function vec3_extend(out, a2, b) {
+if (a2[0] >= 0 && b[0] >= 0) {
+out[0] = Math.max(a2[0], b[0]);
+} else if (a2[0] <= 0 && b[0] <= 0) {
+out[0] = Math.min(a2[0], b[0]);
+} else {
+out[0] = a2[0];
+}
+if (a2[1] >= 0 && b[1] >= 0) {
+out[1] = Math.max(a2[1], b[1]);
+} else if (a2[1] <= 0 && b[1] <= 0) {
+out[1] = Math.min(a2[1], b[1]);
+} else if (a2[1] > b[1]) {
+out[1] = a2[1];
+}
+if (a2[2] >= 0 && b[2] >= 0) {
+out[2] = Math.max(a2[2], b[2]);
+} else if (a2[0] <= 0 && b[0] <= 0) {
+out[2] = Math.min(a2[2], b[2]);
+} else {
+out[2] = a2[2];
+}
+}
+
+
+function task_delay(duration) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 1048576 /* Task */;
+game2.World.Task[entity] = {
+Kind: 1 /* Delay */,
+Remaining: duration
+};
+};
+}
+function task_then(callback2) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 1048576 /* Task */;
+game2.World.Task[entity] = {
+Kind: 2 /* Then */,
+Callback: callback2
+};
+};
+}
+
+
+var QUERY21 = 1048576 /* Task */;
+function sys_poll(game2, delta) {
+let tasks_to_complete = [];
+for (let ent = 0; ent < game2.World.Signature.length; ent++) {
+if ((game2.World.Signature[ent] & QUERY21) === QUERY21) {
+if (has_blocking_dependencies(game2.World, ent)) {
+continue;
+}
+let task = game2.World.Task[ent];
+switch (task.Kind) {
+case 0 /* When */: {
+if (task.Predicate(ent)) {
+tasks_to_complete.push(ent);
+}
+break;
+}
+case 1 /* Delay */: {
+task.Remaining -= delta;
+if (task.Remaining < 0) {
+tasks_to_complete.push(ent);
+}
+break;
+}
+case 2 /* Then */: {
+tasks_to_complete.push(ent);
+break;
+}
+}
+}
+}
+for (let ent of tasks_to_complete) {
+let task = game2.World.Task[ent];
+switch (task.Kind) {
+case 2 /* Then */:
+task.Callback(ent);
+case 0 /* When */:
+case 1 /* Delay */:
+destroy_entity(game2.World, ent);
+}
+delete game2.World.Task[ent];
+}
+}
+function has_blocking_dependencies(world, entity) {
+if (world.Signature[entity] & 16 /* Children */) {
+let children2 = world.Children[entity];
+for (let child of children2.Children) {
+if (world.Signature[child] & 1048576 /* Task */) {
+return true;
+}
+}
+}
+return false;
+}
+
+
+function resize_texture_rgba8(gl, texture, width, height) {
+gl.bindTexture(GL_TEXTURE_2D, texture);
+gl.texImage2D(
+GL_TEXTURE_2D,
+0,
+GL_RGBA8,
+width,
+height,
+0,
+GL_RGBA,
+GL_DATA_UNSIGNED_BYTE,
+null
+);
+gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+return texture;
+}
+function resize_texture_rgba16f(gl, texture, width, height) {
+gl.bindTexture(GL_TEXTURE_2D, texture);
+gl.texImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, width, height, 0, GL_RGBA, GL_DATA_FLOAT, null);
+gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+return texture;
+}
+function resize_texture_rgba32f(gl, texture, width, height) {
+gl.bindTexture(GL_TEXTURE_2D, texture);
+gl.texImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, width, height, 0, GL_RGBA, GL_DATA_FLOAT, null);
+gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+return texture;
+}
+function resize_texture_depth24(gl, texture, width, height) {
+gl.bindTexture(GL_TEXTURE_2D, texture);
+gl.texImage2D(
+GL_TEXTURE_2D,
+0,
+GL_DEPTH_COMPONENT24,
+width,
+height,
+0,
+GL_DEPTH_COMPONENT,
+GL_DATA_UNSIGNED_INT,
+null
+);
+gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
+gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+return texture;
+}
+
+
+function resize_forward_target(gl, target, width, height) {
+target.Width = width;
+target.Height = height;
+resize_texture_rgba8(gl, target.ColorTexture, target.Width, target.Height);
+resize_texture_depth24(gl, target.DepthTexture, target.Width, target.Height);
+}
+function resize_hdr_target(gl, target, width, height) {
+target.Width = width;
+target.Height = height;
+resize_texture_rgba16f(gl, target.ColorTexture, target.Width, target.Height);
+resize_texture_depth24(gl, target.DepthTexture, target.Width, target.Height);
+}
+function resize_deferred_target(gl, target, width, height) {
+target.Width = width;
+target.Height = height;
+resize_texture_rgba32f(gl, target.DiffuseTexture, target.Width, target.Height);
+resize_texture_rgba32f(gl, target.SpecularTexture, target.Width, target.Height);
+resize_texture_rgba32f(gl, target.PositionTexture, target.Width, target.Height);
+resize_texture_rgba32f(gl, target.NormalTexture, target.Width, target.Height);
+resize_texture_depth24(gl, target.DepthTexture, target.Width, target.Height);
+}
+
+
+var QUERY22 = 4194304 /* Transform */ | 65536 /* Render */;
+function sys_render_forward(game2, delta) {
+for (let camera_entity of game2.Cameras) {
+let camera = game2.World.Camera[camera_entity];
+switch (camera.Kind) {
+case 0 /* Canvas */:
+game2.Gl.bindFramebuffer(GL_FRAMEBUFFER, null);
+game2.Gl.viewport(0, 0, camera.ViewportWidth, camera.ViewportHeight);
+game2.Gl.clearColor(...camera.ClearColor);
+game2.Gl.clear(camera.ClearMask);
+render_all(game2, camera);
+break;
+case 1 /* Target */:
+if (camera.Target.Kind === 0 /* Forward */) {
+game2.Gl.bindFramebuffer(GL_FRAMEBUFFER, camera.Target.Framebuffer);
+game2.Gl.viewport(0, 0, camera.Target.Width, camera.Target.Height);
+game2.Gl.clearColor(...camera.ClearColor);
+game2.Gl.clear(camera.ClearMask);
+render_all(game2, camera, camera.Target.ColorTexture);
+}
+break;
+}
+}
+}
+function render_all(game2, eye, current_target) {
+let current_material = null;
+let current_front_face = null;
+let transparent_entities = [];
+for (let ent = 0; ent < game2.World.Signature.length; ent++) {
+if ((game2.World.Signature[ent] & QUERY22) === QUERY22) {
+let render = game2.World.Render[ent];
+if (render.Phase === 1 /* Transparent */) {
+transparent_entities.push(ent);
+continue;
+}
+if (render.Material !== current_material) {
+current_material = render.Material;
+use_material(game2, render, eye);
+}
+if (render.FrontFace !== current_front_face) {
+current_front_face = render.FrontFace;
+game2.Gl.frontFace(render.FrontFace);
+}
+draw_entity(game2, ent, current_target);
+}
+}
+transparent_entities.sort((a2, b) => {
+let transform_a = game2.World.Transform[a2];
+let transform_b = game2.World.Transform[b];
+return mat4_distance_squared_from_point(transform_b.World, eye.Position) - mat4_distance_squared_from_point(transform_a.World, eye.Position);
+});
+game2.Gl.enable(GL_BLEND);
+for (let i = 0; i < transparent_entities.length; i++) {
+let ent = transparent_entities[i];
+let render = game2.World.Render[ent];
+if (render.Material !== current_material) {
+current_material = render.Material;
+use_material(game2, render, eye);
+}
+if (render.FrontFace !== current_front_face) {
+current_front_face = render.FrontFace;
+game2.Gl.frontFace(render.FrontFace);
+}
+draw_entity(game2, ent, current_target);
+}
+game2.Gl.disable(GL_BLEND);
+}
+function use_material(game2, render, eye) {
+switch (render.Kind) {
+case 0 /* ColoredUnlit */:
+game2.Gl.useProgram(render.Material.Program);
+game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+break;
+case 1 /* ColoredShaded */:
+game2.Gl.useProgram(render.Material.Program);
+game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+game2.Gl.uniform3fv(render.Material.Locations.Eye, eye.Position);
+game2.Gl.uniform4fv(render.Material.Locations.LightPositions, game2.LightPositions);
+game2.Gl.uniform4fv(render.Material.Locations.LightDetails, game2.LightDetails);
+break;
+case 2 /* ColoredShadows */:
+game2.Gl.useProgram(render.Material.Program);
+game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+game2.Gl.uniform3fv(render.Material.Locations.Eye, eye.Position);
+game2.Gl.uniform4fv(render.Material.Locations.LightPositions, game2.LightPositions);
+game2.Gl.uniform4fv(render.Material.Locations.LightDetails, game2.LightDetails);
+game2.Gl.activeTexture(GL_TEXTURE0);
+game2.Gl.bindTexture(GL_TEXTURE_2D, game2.Targets.Sun.DepthTexture);
+game2.Gl.uniform1i(render.Material.Locations.ShadowMap, 0);
+let light_entity = first_having(game2.World, 8 /* Camera */ | 4096 /* Light */);
+if (light_entity) {
+let light_camera = game2.World.Camera[light_entity];
+if (light_camera.Kind === 2 /* Xr */) {
+throw new Error("XR cameras cannot be shadow sources.");
+}
+game2.Gl.uniformMatrix4fv(
+render.Material.Locations.ShadowSpace,
+false,
+light_camera.Pv
+);
+}
+break;
+case 4 /* TexturedUnlit */:
+game2.Gl.useProgram(render.Material.Program);
+game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+break;
+case 5 /* TexturedShaded */:
+game2.Gl.useProgram(render.Material.Program);
+game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+game2.Gl.uniform3fv(render.Material.Locations.Eye, eye.Position);
+game2.Gl.uniform4fv(render.Material.Locations.LightPositions, game2.LightPositions);
+game2.Gl.uniform4fv(render.Material.Locations.LightDetails, game2.LightDetails);
+break;
+case 6 /* MappedShaded */:
+game2.Gl.useProgram(render.Material.Program);
+game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+game2.Gl.uniform3fv(render.Material.Locations.Eye, eye.Position);
+game2.Gl.uniform4fv(render.Material.Locations.LightPositions, game2.LightPositions);
+game2.Gl.uniform4fv(render.Material.Locations.LightDetails, game2.LightDetails);
+break;
+case 7 /* Vertices */:
+case 8 /* ParticlesColored */:
+case 9 /* ParticlesTextured */:
+game2.Gl.useProgram(render.Material.Program);
+game2.Gl.uniformMatrix4fv(render.Material.Locations.Pv, false, eye.Pv);
+break;
+}
+}
+function draw_entity(game2, entity, current_target) {
+let transform2 = game2.World.Transform[entity];
+let render = game2.World.Render[entity];
+switch (render.Kind) {
+case 0 /* ColoredUnlit */:
+game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+game2.Gl.uniform4fv(render.Material.Locations.Color, render.Color);
+game2.Gl.bindVertexArray(render.Mesh.Vao);
+game2.Gl.drawElements(
+render.Material.Mode,
+render.Mesh.IndexCount,
+GL_UNSIGNED_SHORT,
+0
+);
+game2.Gl.bindVertexArray(null);
+break;
+case 1 /* ColoredShaded */:
+game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+game2.Gl.uniformMatrix4fv(render.Material.Locations.Self, false, transform2.Self);
+game2.Gl.uniform4fv(render.Material.Locations.DiffuseColor, render.DiffuseColor);
+game2.Gl.uniform4fv(render.Material.Locations.SpecularColor, render.SpecularColor);
+game2.Gl.uniform4fv(render.Material.Locations.EmissiveColor, render.EmissiveColor);
+game2.Gl.bindVertexArray(render.Mesh.Vao);
+game2.Gl.drawElements(
+render.Material.Mode,
+render.Mesh.IndexCount,
+GL_UNSIGNED_SHORT,
+0
+);
+game2.Gl.bindVertexArray(null);
+break;
+case 2 /* ColoredShadows */:
+game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+game2.Gl.uniformMatrix4fv(render.Material.Locations.Self, false, transform2.Self);
+game2.Gl.uniform4fv(render.Material.Locations.DiffuseColor, render.DiffuseColor);
+game2.Gl.uniform4fv(render.Material.Locations.SpecularColor, render.SpecularColor);
+game2.Gl.uniform4fv(render.Material.Locations.EmissiveColor, render.EmissiveColor);
+game2.Gl.bindVertexArray(render.Mesh.Vao);
+game2.Gl.drawElements(
+render.Material.Mode,
+render.Mesh.IndexCount,
+GL_UNSIGNED_SHORT,
+0
+);
+game2.Gl.bindVertexArray(null);
+break;
+case 4 /* TexturedUnlit */:
+if (render.Texture === current_target) {
+break;
+}
+game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+game2.Gl.uniform4fv(render.Material.Locations.Color, render.Color);
+game2.Gl.activeTexture(GL_TEXTURE0);
+game2.Gl.bindTexture(GL_TEXTURE_2D, render.Texture);
+game2.Gl.uniform1i(render.Material.Locations.TextureMap, 0);
+game2.Gl.bindVertexArray(render.Mesh.Vao);
+game2.Gl.drawElements(
+render.Material.Mode,
+render.Mesh.IndexCount,
+GL_UNSIGNED_SHORT,
+0
+);
+game2.Gl.bindVertexArray(null);
+break;
+case 5 /* TexturedShaded */:
+if (render.Texture === current_target) {
+break;
+}
+game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+game2.Gl.uniformMatrix4fv(render.Material.Locations.Self, false, transform2.Self);
+game2.Gl.uniform4fv(render.Material.Locations.DiffuseColor, render.DiffuseColor);
+game2.Gl.uniform4fv(render.Material.Locations.SpecularColor, render.SpecularColor);
+game2.Gl.uniform4fv(render.Material.Locations.EmissiveColor, render.EmissiveColor);
+game2.Gl.activeTexture(GL_TEXTURE0);
+game2.Gl.bindTexture(GL_TEXTURE_2D, render.Texture);
+game2.Gl.uniform1i(render.Material.Locations.DiffuseMap, 0);
+game2.Gl.bindVertexArray(render.Mesh.Vao);
+game2.Gl.drawElements(
+render.Material.Mode,
+render.Mesh.IndexCount,
+GL_UNSIGNED_SHORT,
+0
+);
+game2.Gl.bindVertexArray(null);
+break;
+case 6 /* MappedShaded */:
+if (render.DiffuseMap === current_target) {
+break;
+}
+game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+game2.Gl.uniformMatrix4fv(render.Material.Locations.Self, false, transform2.Self);
+game2.Gl.uniform4fv(render.Material.Locations.DiffuseColor, render.DiffuseColor);
+game2.Gl.activeTexture(GL_TEXTURE1);
+game2.Gl.bindTexture(GL_TEXTURE_2D, render.DiffuseMap);
+game2.Gl.uniform1i(render.Material.Locations.DiffuseMap, 1);
+game2.Gl.activeTexture(GL_TEXTURE2);
+game2.Gl.bindTexture(GL_TEXTURE_2D, render.NormalMap);
+game2.Gl.uniform1i(render.Material.Locations.NormalMap, 2);
+game2.Gl.activeTexture(GL_TEXTURE3);
+game2.Gl.bindTexture(GL_TEXTURE_2D, render.RoughnessMap);
+game2.Gl.uniform1i(render.Material.Locations.RoughnessMap, 3);
+game2.Gl.bindVertexArray(render.Mesh.Vao);
+game2.Gl.drawElements(
+render.Material.Mode,
+render.Mesh.IndexCount,
+GL_UNSIGNED_SHORT,
+0
+);
+game2.Gl.bindVertexArray(null);
+break;
+case 7 /* Vertices */:
+game2.Gl.uniformMatrix4fv(render.Material.Locations.World, false, transform2.World);
+game2.Gl.uniform4fv(render.Material.Locations.Color, render.Color);
+game2.Gl.bindBuffer(GL_ARRAY_BUFFER, render.VertexBuffer);
+game2.Gl.enableVertexAttribArray(0 /* Position */);
+game2.Gl.vertexAttribPointer(0 /* Position */, 3, GL_FLOAT, false, 0, 0);
+game2.Gl.drawArrays(render.Material.Mode, 0, render.IndexCount);
+break;
+case 8 /* ParticlesColored */: {
+let emitter = game2.World.EmitParticles[entity];
+game2.Gl.uniform4fv(render.Material.Locations.ColorStart, render.ColorStart);
+game2.Gl.uniform4fv(render.Material.Locations.ColorEnd, render.ColorEnd);
+game2.Gl.uniform4f(
+render.Material.Locations.Details,
+emitter.Lifespan,
+emitter.Speed,
+...render.Size
+);
+let instances = Float32Array.from(emitter.Instances);
+game2.Gl.bindBuffer(GL_ARRAY_BUFFER, render.Buffer);
+game2.Gl.bufferSubData(GL_ARRAY_BUFFER, 0, instances);
+game2.Gl.enableVertexAttribArray(render.Material.Locations.OriginAge);
+game2.Gl.vertexAttribPointer(
+render.Material.Locations.OriginAge,
+4,
+GL_FLOAT,
+false,
+FLOATS_PER_PARTICLE * 4,
+0
+);
+game2.Gl.enableVertexAttribArray(render.Material.Locations.Direction);
+game2.Gl.vertexAttribPointer(
+render.Material.Locations.Direction,
+3,
+GL_FLOAT,
+false,
+FLOATS_PER_PARTICLE * 4,
+4 * 4
+);
+game2.Gl.drawArrays(
+render.Material.Mode,
+0,
+emitter.Instances.length / FLOATS_PER_PARTICLE
+);
+break;
+}
+}
+}
+
+
+function perspective(fov_y, near, far) {
+return {
+Kind: 0 /* Perspective */,
+FovY: fov_y,
+Near: near,
+Far: far,
+Projection: mat4_create(),
+Inverse: mat4_create()
+};
+}
+
+
+var QUERY23 = 8 /* Camera */;
+function sys_resize(game2, delta) {
+if (game2.ViewportWidth != window.innerWidth || game2.ViewportHeight != window.innerHeight) {
+game2.ViewportResized = true;
+}
+if (game2.ViewportResized) {
+game2.ViewportWidth = game2.BackgroundCanvas.width = game2.SceneCanvas.width = game2.ForegroundCanvas.width = window.innerWidth;
+game2.ViewportHeight = game2.BackgroundCanvas.height = game2.SceneCanvas.height = game2.ForegroundCanvas.height = window.innerHeight;
+for (let target of Object.values(game2.Targets)) {
+if (target.ResizeToViewport) {
+switch (target.Kind) {
+case 0 /* Forward */:
+resize_forward_target(
+game2.Gl,
+target,
+game2.ViewportWidth,
+game2.ViewportHeight
+);
+break;
+case 1 /* Hdr */:
+resize_hdr_target(game2.Gl, target, game2.ViewportWidth, game2.ViewportHeight);
+break;
+case 2 /* Deferred */:
+resize_deferred_target(
+game2.Gl,
+target,
+game2.ViewportWidth,
+game2.ViewportHeight
+);
+break;
+}
+}
+}
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY23) === QUERY23) {
+let camera = game2.World.Camera[i];
+switch (camera.Kind) {
+case 0 /* Canvas */:
+camera.ViewportWidth = game2.ViewportWidth;
+camera.ViewportHeight = game2.ViewportHeight;
+update_projection(
+camera.Projection,
+game2.ViewportWidth / game2.ViewportHeight
+);
+break;
+case 1 /* Target */:
+camera.ViewportWidth = game2.ViewportWidth;
+camera.ViewportHeight = game2.ViewportHeight;
+update_projection(
+camera.Projection,
+camera.Target.Width / camera.Target.Height
+);
+break;
+case 2 /* Xr */:
+break;
+}
+}
+}
+}
+}
+function update_projection(projection, aspect) {
+switch (projection.Kind) {
+case 0 /* Perspective */: {
+if (aspect < 1) {
+mat4_from_perspective(
+projection.Projection,
+projection.FovY / aspect,
+aspect,
+projection.Near,
+projection.Far
+);
+} else {
+mat4_from_perspective(
+projection.Projection,
+projection.FovY,
+aspect,
+projection.Near,
+projection.Far
+);
+}
+break;
+}
+case 1 /* Orthographic */:
+let target_aspect = projection.Radius[0] / projection.Radius[1];
+if (aspect < target_aspect) {
+mat4_from_ortho(
+projection.Projection,
+projection.Radius[0] / aspect,
+projection.Radius[0],
+-projection.Radius[0] / aspect,
+-projection.Radius[0],
+projection.Near,
+projection.Far
+);
+} else {
+mat4_from_ortho(
+projection.Projection,
+projection.Radius[1],
+projection.Radius[1] * aspect,
+-projection.Radius[1],
+-projection.Radius[1] * aspect,
+projection.Near,
+projection.Far
+);
+}
+break;
+}
+mat4_invert(projection.Inverse, projection.Projection);
+}
+
+
+var QUERY24 = 4194304 /* Transform */ | 262144 /* Shake */;
+function sys_shake(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY24) == QUERY24) {
+update18(game2, i);
+}
+}
+}
+function update18(game2, entity) {
+let shake2 = game2.World.Shake[entity];
+let transform2 = game2.World.Transform[entity];
+transform2.Translation[0] = (Math.random() - 0.5) * shake2.Radius * 2;
+transform2.Translation[1] = (Math.random() - 0.5) * shake2.Radius * 2;
+transform2.Translation[2] = (Math.random() - 0.5) * shake2.Radius * 2;
+game2.World.Signature[entity] |= 256 /* Dirty */;
+}
+
+
+var QUERY25 = 4194304 /* Transform */ | 524288 /* Spawn */;
+function sys_spawn(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY25) == QUERY25) {
+update19(game2, i, delta);
+}
+}
+}
+var world_position = [0, 0, 0];
+var world_rotation = [0, 0, 0, 0];
+function update19(game2, entity, delta) {
+let spawn2 = game2.World.Spawn[entity];
+spawn2.SinceLast += delta;
+if (spawn2.SinceLast > spawn2.Interval) {
+spawn2.SinceLast = 0;
+let entity_transform = game2.World.Transform[entity];
+mat4_get_translation(world_position, entity_transform.World);
+mat4_get_rotation(world_rotation, entity_transform.World);
+instantiate(game2, [
+...spawn2.Creator(game2),
+copy_position(world_position),
+copy_rotation(world_rotation)
+]);
+}
+}
+
+
+var QUERY26 = 2097152 /* Toggle */;
+function sys_toggle(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY26) == QUERY26) {
+update20(game2, i, delta);
+}
+}
+}
+function update20(game2, entity, delta) {
+let toggle2 = game2.World.Toggle[entity];
+toggle2.SinceLast += delta;
+if (toggle2.SinceLast > toggle2.Frequency) {
+toggle2.SinceLast = 0;
+if ((game2.World.Signature[entity] & toggle2.Mask) === toggle2.Mask) {
+game2.World.Signature[entity] &= ~toggle2.Mask;
+} else {
+game2.World.Signature[entity] |= toggle2.Mask;
+}
+}
+}
+
+
+var QUERY27 = 4194304 /* Transform */ | 256 /* Dirty */;
+function sys_transform(game2, delta) {
+for (let ent = 0; ent < game2.World.Signature.length; ent++) {
+if ((game2.World.Signature[ent] & QUERY27) === QUERY27) {
+let transform2 = game2.World.Transform[ent];
+update_transform(game2.World, ent, transform2);
+}
+}
+}
+var world_position2 = [0, 0, 0];
+function update_transform(world, entity, transform2) {
+world.Signature[entity] &= ~256 /* Dirty */;
+mat4_compose(transform2.World, transform2.Rotation, transform2.Translation, transform2.Scale);
+if (transform2.Parent !== void 0) {
+let parent_transform = world.Transform[transform2.Parent];
+mat4_multiply(transform2.World, parent_transform.World, transform2.World);
+if (transform2.IsGyroscope) {
+mat4_get_translation(world_position2, transform2.World);
+mat4_compose(transform2.World, transform2.Rotation, world_position2, transform2.Scale);
+}
+}
+mat4_invert(transform2.Self, transform2.World);
+if (world.Signature[entity] & 16 /* Children */) {
+let children2 = world.Children[entity];
+for (let i = 0; i < children2.Children.length; i++) {
+let child = children2.Children[i];
+if (world.Signature[child] & 4194304 /* Transform */) {
+let child_transform = world.Transform[child];
+child_transform.Parent = entity;
+update_transform(world, child, child_transform);
+}
+}
+}
+}
+
+
+var QUERY28 = 4194304 /* Transform */ | 32 /* Collide */ | 8388608 /* Trigger */;
+function sys_trigger(game2, delta) {
+for (let i = 0; i < game2.World.Signature.length; i++) {
+if ((game2.World.Signature[i] & QUERY28) === QUERY28) {
+update21(game2, i);
+}
+}
+}
+function update21(game2, entity) {
+let collide2 = game2.World.Collide[entity];
+let trigger2 = game2.World.Trigger[entity];
+for (let collision of collide2.Collisions) {
+let other_collide = game2.World.Collide[collision.Other];
+if (trigger2.Mask & other_collide.Layers) {
+dispatch(game2, trigger2.Action, [entity, collision.Other]);
+}
+}
+}
+
+
+function shift(values) {
+let value = values.shift();
+if (typeof value === "boolean" || value == void 0) {
+return "";
+} else if (Array.isArray(value)) {
+return value.join("");
+} else {
+return value;
+}
+}
+function html(strings, ...values) {
+return strings.reduce((out, cur) => out + shift(values) + cur);
+}
+
+
+function Fullscreen() {
+return html`
+
+
+
+`;
+}
+
+
+function Score(game2) {
+return html`
+
+
Collected: ${game2.ItemsCollected}
+
Missed: ${game2.ItemsMissed}
+
+`;
+}
+
+
+function App(game2) {
+return html`${Fullscreen()} ${Score(game2)}
`;
+}
+
+
+var prev;
+function sys_ui(game2, delta) {
+let next = App(game2);
+if (next !== prev) {
+game2.Ui.innerHTML = prev = next;
+}
+}
+
+
+var Game = class extends Game3D {
+World = new World();
+MaterialWireframe = mat_forward_colored_wireframe(this.Gl);
+MaterialColoredShaded = mat_forward_colored_phong(this.Gl);
+MaterialParticlesColored = mat_forward_particles_colored(this.Gl);
+MeshCube = mesh_cube(this.Gl);
+LightPositions = new Float32Array(4 * MAX_FORWARD_LIGHTS);
+LightDetails = new Float32Array(4 * MAX_FORWARD_LIGHTS);
+ItemsCollected = 0;
+ItemsMissed = 0;
+FrameUpdate(delta) {
+sys_poll(this, delta);
+sys_physics_integrate(this, delta);
+sys_transform(this, delta);
+sys_physics_kinematic(this, delta);
+sys_collide(this, delta);
+sys_physics_resolve(this, delta);
+sys_transform(this, delta);
+sys_trigger(this, delta);
+sys_resize(this, delta);
+sys_camera(this, delta);
+sys_control_keyboard(this, delta);
+sys_control_mouse_move(this, delta);
+sys_control_touch_move(this, delta);
+sys_control_xbox(this, delta);
+sys_control_jump(this, delta);
+sys_control_always(this, delta);
+sys_animate(this, delta);
+sys_move(this, delta);
+sys_mimic(this, delta);
+sys_lifespan(this, delta);
+sys_shake(this, delta);
+sys_toggle(this, delta);
+sys_spawn(this, delta);
+sys_particles(this, delta);
+sys_transform(this, delta);
+if (false) {
+sys_debug(this, delta);
+}
+sys_audio_listener(this, delta);
+sys_audio_source(this, delta);
+sys_light(this, delta);
+sys_render_forward(this, delta);
+sys_draw(this, delta);
+sys_ui(this, delta);
+}
+};
+
+
+function mimic(target, stiffness = 0.1) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 8192 /* Mimic */;
+game2.World.Mimic[entity] = {
+Target: target,
+Stiffness: stiffness
+};
+};
+}
+
+
+function named(name) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 32768 /* Named */;
+game2.World.Named[entity] = { Name: name };
+};
+}
+function first_named(world, name, start_at = 0) {
+for (let i = start_at; i < world.Signature.length; i++) {
+if (world.Signature[i] & 32768 /* Named */ && world.Named[i].Name === name) {
+return i;
+}
+}
+throw `No entity named ${name}.`;
+}
+
+
+function blueprint_camera_follow(game2) {
+return [
+transform(),
+mimic(first_named(game2.World, "camera anchor")),
+children([
+transform([0, 1, -6], [0, 1, 0, 0]),
+camera_canvas(perspective(1, 0.1, 1e3), [0.1, 0.5, 0.8, 1])
+])
+];
+}
+
+
+function collide(dynamic, layers, mask, size = [1, 1, 1]) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 32 /* Collide */;
+game2.World.Collide[entity] = {
+EntityId: entity,
+New: true,
+Dynamic: dynamic,
+Layers: layers,
+Mask: mask,
+Size: size,
+Min: [0, 0, 0],
+Max: [0, 0, 0],
+Center: [0, 0, 0],
+Half: [0, 0, 0],
+Collisions: []
+};
+};
+}
+
+
+function blueprint_ground(game2) {
+return [
+transform(),
+collide(false, 2 /* Terrain */, 0 /* None */),
+rigid_body(0 /* Static */),
+children([
+transform([0, float(-0.2, 0.2), 0]),
+render_colored_shaded(game2.MaterialColoredShaded, game2.MeshCube, [0, 1, 0.1, 1])
+])
+];
+}
+
+
+function audio_source(spatial, idle) {
+return (game2, entity) => {
+let panner = spatial ? game2.Audio.createPanner() : void 0;
+game2.World.Signature[entity] |= 4 /* AudioSource */;
+game2.World.AudioSource[entity] = {
+Panner: panner,
+Idle: idle,
+Time: 0
+};
+};
+}
+
+
+function callback(fn) {
+return (game2, entity) => {
+fn(game2, entity);
+};
+}
+
+
+function control_always(direction, rotation3, animation) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 64 /* ControlAlways */;
+game2.World.ControlAlways[entity] = {
+Direction: direction,
+Rotation: rotation3,
+Animation: animation
+};
+};
+}
+
+
+function disable(mask) {
+return (game2, entity) => {
+game2.World.Signature[entity] &= ~mask;
+};
+}
+
+
+function emit_particles(lifespan2, frequency, speed) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 1024 /* EmitParticles */;
+game2.World.EmitParticles[entity] = {
+Lifespan: lifespan2,
+Frequency: frequency,
+Speed: speed,
+Instances: [],
+SinceLast: 0
+};
+};
+}
+
+
+function lifespan(remaining, action) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 2048 /* Lifespan */;
+game2.World.Lifespan[entity] = {
+Remaining: remaining,
+Action: action
+};
+};
+}
+
+
+function light_directional(color = [1, 1, 1], intensity = 1) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 4096 /* Light */;
+game2.World.Light[entity] = {
+Kind: 2 /* Directional */,
+Color: color,
+Intensity: intensity
+};
+};
+}
+function light_point(color = [1, 1, 1], intensity = 1) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 4096 /* Light */;
+game2.World.Light[entity] = {
+Kind: 3 /* Point */,
+Color: color,
+Intensity: intensity
+};
+};
+}
+
+
+function move(move_speed, rotation_speed) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 16384 /* Move */;
+game2.World.Move[entity] = {
+MoveSpeed: move_speed,
+RotationSpeed: rotation_speed,
+Direction: [0, 0, 0],
+LocalRotation: [0, 0, 0, 1],
+SelfRotation: [0, 0, 0, 1]
+};
+};
+}
+
+
+function shake(radius) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 262144 /* Shake */;
+game2.World.Shake[entity] = {
+Radius: radius
+};
+};
+}
+
+
+function toggle(mask, frequency) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 2097152 /* Toggle */;
+game2.World.Toggle[entity] = {
+Mask: mask,
+Frequency: frequency,
+SinceLast: 0
+};
+};
+}
+
+
+function trigger(mask, action) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 8388608 /* Trigger */;
+game2.World.Trigger[entity] = {
+Mask: mask,
+Action: action
+};
+};
+}
+
+
+function blueprint_item(game2) {
+let item_entity;
+let shaker_entity;
+let particles_entity;
+return [
+transform(),
+callback((game3, entity) => item_entity = entity),
+collide(true, 8 /* Collectable */, 2 /* Terrain */ | 1 /* Player */),
+trigger(1 /* Player */, 1 /* CollectItem */),
+rigid_body(1 /* Dynamic */, 0.3),
+audio_source(true),
+lifespan(5, 2 /* ExpireItem */),
+disable(2048 /* Lifespan */),
+children(
+[
+callback((game3, entity) => shaker_entity = entity),
+transform(void 0, void 0, [0.5, 0.7, 0.1]),
+control_always(null, [0, 1, 0, 0]),
+move(0, 0.2),
+shake(0.05),
+toggle(262144 /* Shake */, 1),
+disable(262144 /* Shake */ | 2097152 /* Toggle */),
+children([
+transform([0, 1, 0]),
+render_colored_shaded(game2.MaterialColoredShaded, game2.MeshCube, [5, 3, 0, 1]),
+children([transform([0, 1, 0]), light_point([1, 0.5, 0], 3)])
+])
+],
+[
+transform([0, 1.5, 0]),
+control_always(null, [0, 1, 0, 0]),
+move(0, 2),
+children([
+transform([0, 0, 0.2], quat_from_euler([0, 0, 0, 1], -90, 0, 0)),
+children([
+callback((game3, entity) => particles_entity = entity),
+transform(),
+shake(0.05),
+emit_particles(2, 0.2, 1),
+render_particles_colored(
+game2.MaterialParticlesColored,
+[1, 1, 1, 1],
+5,
+[1, 1, 1, 0],
+1
+)
+])
+])
+],
+[
+children([task_delay(10)]),
+task_then(() => {
+game2.World.Signature[item_entity] |= 2048 /* Lifespan */;
+game2.World.Signature[shaker_entity] |= 262144 /* Shake */ | 2097152 /* Toggle */;
+let particles_shake = game2.World.Shake[particles_entity];
+particles_shake.Radius = 0.1;
+let particles_emit = game2.World.EmitParticles[particles_entity];
+particles_emit.Lifespan = 1;
+particles_emit.Frequency = 0.1;
+let particles_render = game2.World.Render[particles_entity];
+particles_render.ColorStart = [1, 1, 0, 1];
+particles_render.ColorEnd = [1, 0, 0, 0];
+particles_render.Size = [10, 5];
+})
+]
+)
+];
+}
+
+
+function blueprint_obstacle(game2) {
+return [
+transform(),
+collide(true, 4 /* Obstacle */, 2 /* Terrain */ | 1 /* Player */),
+rigid_body(1 /* Dynamic */, 0.3),
+children([
+transform(),
+render_colored_shaded(game2.MaterialColoredShaded, game2.MeshCube, [0.5, 0.5, 0.5, 0.3])
+])
+];
+}
+
+
+function ease_in_quad(t) {
+return t * t;
+}
+function ease_out_quad(t) {
+return 1 - (1 - t) ** 2;
+}
+function ease_in_out_quad(t) {
+return t < 0.5 ? 2 * t * t : 1 - (-2 * t + 2) ** 2 / 2;
+}
+
+
+function audio_listener() {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 2 /* AudioListener */;
+};
+}
+
+
+function control_player(move2, yaw, pitch, min_pitch = 0, max_pitch = 0) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 128 /* ControlPlayer */;
+game2.World.ControlPlayer[entity] = {
+Move: move2,
+Yaw: yaw,
+Pitch: pitch,
+MinPitch: min_pitch,
+MaxPitch: max_pitch
+};
+};
+}
+
+
+function blueprint_player(game2) {
+return [
+transform(),
+control_player(true, 0.2, 0),
+move(10, 3),
+collide(true, 1 /* Player */, 2 /* Terrain */),
+rigid_body(1 /* Dynamic */),
+audio_source(false),
+audio_listener(),
+children(
+
+[
+transform(),
+render_colored_shaded(game2.MaterialColoredShaded, game2.MeshCube, [1, 0.3, 0.2, 1]),
+animate({
+idle: {
+Keyframes: [
+{
+Timestamp: 0,
+Rotation: quat_from_euler([0, 0, 0, 1], 0, -5, 0),
+Ease: ease_in_out_quad
+},
+{
+Timestamp: 1,
+Rotation: quat_from_euler([0, 0, 0, 1], 0, 5, 0),
+Ease: ease_in_out_quad
+}
+]
+},
+jump: {
+Keyframes: [
+{
+Timestamp: 0,
+Rotation: [0, 0, 0, 1]
+},
+{
+Timestamp: 0.5,
+Rotation: [1, 0, 0, 0],
+Ease: ease_in_quad
+},
+{
+Timestamp: 1,
+Rotation: [0, 0, 0, -1],
+Ease: ease_out_quad
+}
+],
+Flags: 0 /* None */
+}
+})
+],
+
+[
+transform(),
+named("camera anchor"),
+move(0, 3),
+control_player(false, 0, 0.2, -10, 80)
+],
+
+[transform([0, 2, 0]), light_point([1, 1, 1], 5)]
+)
+];
+}
+
+
+function spawn(creator, interval) {
+return (game2, entity) => {
+game2.World.Signature[entity] |= 524288 /* Spawn */;
+game2.World.Spawn[entity] = {
+Creator: creator,
+Interval: interval,
+SinceLast: interval
+};
+};
+}
+
+
+function scene_stage(game2) {
+game2.World = new World();
+game2.ViewportResized = true;
+let map_size = 10;
+let tile_size = 5;
+for (let z = 0; z < map_size; z++) {
+for (let x = 0; x < map_size; x++) {
+instantiate(game2, [
+...blueprint_ground(game2),
+set_position(tile_size * (x - map_size / 2), 0, tile_size * (z - map_size / 2)),
+set_scale(tile_size, 1, tile_size)
+]);
+}
+}
+instantiate(game2, [transform(), set_rotation(-30, 30, 0), light_directional([1, 1, 1], 0.1)]);
+instantiate(game2, [...blueprint_player(game2), set_position(0, 1, 0), set_rotation(0, 180, 0)]);
+instantiate(game2, [
+...blueprint_camera_follow(game2),
+set_position(0, 1e3, 1e3),
+set_rotation(0, 180, 0)
+]);
+instantiate(game2, [
+transform([0, 15, 0]),
+control_always(null, [0, 1, 0, 0]),
+move(0, 1),
+children([
+transform([0, 0, 10]),
+children([transform(), shake(10), spawn(blueprint_item, 3)])
+])
+]);
+for (let i = 0; i < 100; i++) {
+instantiate(game2, [
+...blueprint_obstacle(game2),
+set_position(float(-10, 10), 1, float(-10, 10)),
+set_scale(float(0.5, 1.5), float(0.5, 1.5), float(0.5, 1.5))
+]);
+}
+}
+
+
+var game = new Game();
+input_pointer_lock(game);
+scene_stage(game);
+game.Start();
+window.$ = dispatch.bind(null, game);
+window.game = game;
+})();
diff --git a/game.terser.js b/game.terser.js
new file mode 100644
index 00000000..8c1de70b
--- /dev/null
+++ b/game.terser.js
@@ -0,0 +1,46 @@
+"use strict";(()=>{function t(t,n){t.t[n]=0,t.i.push(n)}function n(t,n){let e=(i=t.o).i.length>0?i.i.pop():i.t.push(0)-1;var i;for(let i of n)i(t,e);return e}function e(...t){return(e,i)=>{16&e.o.t[i]||(e.o.t[i]|=16,e.o.l[i]={l:[]});let o=e.o.l[i].l;for(let i of t){let t=n(e,i);o.push(t)}}}function*i(t,n,e){if((t.t[n]&e)===e&&(yield n),16&t.t[n])for(let o of t.l[n].l)yield*i(t,o,e)}function o(n,e){if(16&n.t[e])for(let t of n.l[e].l)o(n,t);0===n.t[e]||t(n,e)}function r(t,n,e){switch(n){case 0:document.fullscreenElement?document.exitFullscreen():document.body.requestFullscreen();break;case 1:{let[n]=e;o(t.o,n),t.u++;break}case 2:t.h++}}function l(t,n,e){let i=t.createProgram();return t.attachShader(i,a(t,dn,n)),t.attachShader(i,a(t,hn,e)),t.linkProgram(i),i}function a(t,n,e){let i=t.createShader(n);return t.shaderSource(i,e),t.compileShader(i),i}function c(t,n,e){return Math.max(t,Math.min(n,e))}function s(t,n,e,i){return t[0]=n,t[1]=e,t[2]=i,t}function u(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t}function f(t,n,e){return t[0]=n[0]+e[0],t[1]=n[1]+e[1],t[2]=n[2]+e[2],t}function h(t,n,e){return t[0]=n[0]*e,t[1]=n[1]*e,t[2]=n[2]*e,t}function d(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t}function v(t,n){let e=n[0],i=n[1],o=n[2],r=e*e+i*i+o*o;return r>0&&(r=1/Math.sqrt(r)),t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t}function m(t,n,e){let i=n[0],o=n[1],r=n[2],l=e[3]*i+e[7]*o+e[11]*r+e[15]||1;return t[0]=(e[0]*i+e[4]*o+e[8]*r+e[12])/l,t[1]=(e[1]*i+e[5]*o+e[9]*r+e[13])/l,t[2]=(e[2]*i+e[6]*o+e[10]*r+e[14])/l,t}function _(t,n,e){let i=n[0],o=n[1],r=n[2];return t[0]=e[0]*i+e[4]*o+e[8]*r,t[1]=e[1]*i+e[5]*o+e[9]*r,t[2]=e[2]*i+e[6]*o+e[10]*r,t}function M(t,n,e,i){let o=n[0],r=n[1],l=n[2];return t[0]=o+i*(e[0]-o),t[1]=r+i*(e[1]-r),t[2]=l+i*(e[2]-l),t}function g(t,n,e,i,o){return t[0]=n,t[1]=e,t[2]=i,t[3]=o,t}function p(t,n,e){let i=n[0],o=n[1],r=n[2],l=n[3],a=e[0],c=e[1],s=e[2],u=e[3];return t[0]=i*u+l*a+o*s-r*c,t[1]=o*u+l*c+r*a-i*s,t[2]=r*u+l*s+i*c-o*a,t[3]=l*u-i*a-o*c-r*s,t}function w(t,n,e,i){let o=Math.sin(n/2*jn),r=Math.cos(n/2*jn),l=Math.sin(e/2*jn),a=Math.cos(e/2*jn),c=Math.sin(i/2*jn),s=Math.cos(i/2*jn);return t[0]=o*a*s+r*l*c,t[1]=r*l*s-o*a*c,t[2]=r*a*c-o*l*s,t[3]=r*a*s+o*l*c,t}function y(t){return Math.asin(-c(-1,1,2*(t[1]*t[2]-t[3]*t[0])))*Hn}function b(t,n,e){let i=e/2;return t[0]=Math.sin(i)*n[0],t[1]=Math.sin(i)*n[1],t[2]=Math.sin(i)*n[2],t[3]=Math.cos(i),t}function C(t,n,e,i){let o,r,l,a,c,s=n[0],u=n[1],f=n[2],h=n[3],d=e[0],v=e[1],m=e[2],_=e[3];return r=s*d+u*v+f*m+h*_,r<0&&(r=-r,d=-d,v=-v,m=-m,_=-_),1-r>Xn?(o=Math.acos(r),l=Math.sin(o),a=Math.sin((1-i)*o)/l,c=Math.sin(i*o)/l):(a=1-i,c=i),t[0]=a*s+c*d,t[1]=a*u+c*v,t[2]=a*f+c*m,t[3]=a*h+c*_,t}function A(t,n,e){let i=t.o.v[n],o=t.o.m[n];if(o._){let t=o.M[o._];t&&t!==o.g&&(0===o.g.p?o.g=t:1&o.g.C&&(o.g.p=0,o.g=t)),o._=void 0}let r=null,l=null;for(let t of o.g.A){if(o.g.p0?(_=2*Math.sqrt(m+1),t[3]=.25*_,t[0]=(f-d)/_,t[1]=(h-c)/_,t[2]=(a-s)/_):l>u&&l>v?(_=2*Math.sqrt(1+l-u-v),t[3]=(f-d)/_,t[0]=.25*_,t[1]=(a+s)/_,t[2]=(h+c)/_):u>v?(_=2*Math.sqrt(1+u-l-v),t[3]=(h-c)/_,t[0]=(a+s)/_,t[1]=.25*_,t[2]=(f+d)/_):(_=2*Math.sqrt(1+v-l-u),t[3]=(a-s)/_,t[0]=(h+c)/_,t[1]=(f+d)/_,t[2]=.25*_),t}function P(t,n){let e=t[12]-n[0],i=t[13]-n[1],o=t[14]-n[2];return e*e+i*i+o*o}function $(t,n){let e=t.o.v[n];var i,o;F(Jn,e.o),D(Qn,e.o),(i=Zn)[0]=(o=e.o)[4],i[1]=o[5],i[2]=o[6],v(i,i);let r=t.Audio.listener;r.positionX?(r.positionX.value=Jn[0],r.positionY.value=Jn[1],r.positionZ.value=Jn[2],r.forwardX.value=Qn[0],r.forwardY.value=Qn[1],r.forwardZ.value=Qn[2],r.upX.value=Zn[0],r.upY.value=Zn[1],r.upZ.value=Zn[2]):(r.setPosition(...Jn),r.setOrientation(...Qn,...Zn))}function I(t=0,n=1){return((te=16807*te%2147483647)-1)/2147483646*(n-t)+t}function R(t,n,e,i,o){let r=t.currentTime+o,l=0;n&&n.connect(t.destination);let a,c,s=t.createGain();if(s.gain.value=(e[0]/9)**3,e[5]&&(c=t.createOscillator(),c.type=e[5],c.frequency.value=(e[7]/3)**3,a=t.createGain(),a.gain.value=(e[6]+3)**3,c.connect(a)),e[1]){let i=t.createBiquadFilter();i.type=e[1],i.frequency.value=2**e[2],i.Q.value=e[3]**1.5,a&&e[4]&&a.connect(i.detune),s.connect(i),i.connect(n||t.destination)}else s.connect(n||t.destination);for(let n of e[8]){let e=t.createGain();e.connect(s);let o=(n[1]/9)**3,c=(n[2]/9)**3,u=(n[3]/9)**3,f=c+u+(n[4]/6)**3;if(e.gain.setValueAtTime(0,r),e.gain.linearRampToValueAtTime(o,r+c),e.gain.setValueAtTime(o,r+c+u),e.gain.exponentialRampToValueAtTime(1e-5,r+f),n[0]){let o=t.createOscillator();o.type=n[0],o.connect(e),o.detune.value=3*(n[5]-7.5)**3,a&&n[6]&&a.connect(o.detune);let l=440*2**((i-69)/12);if(n[7]){let t=(n[8]/9)**3,e=(n[9]/9)**3,i=(n[10]/6)**3;o.frequency.linearRampToValueAtTime(0,r),o.frequency.linearRampToValueAtTime(l,r+t),o.frequency.setValueAtTime(l,r+t+e),o.frequency.exponentialRampToValueAtTime(1e-5,r+t+e+i)}else o.frequency.setValueAtTime(l,r);o.start(r),o.stop(r+f)}else{let n=t.createBufferSource();n.buffer=L(t),n.loop=!0,n.connect(e),n.start(r),n.stop(r+f)}f>l&&(l=f)}c&&(c.start(r),c.stop(r+l))}function L(t){if(!Ut){let n=(Ut=t.createBuffer(1,2*t.sampleRate,t.sampleRate)).getChannelData(0);for(let t=0;ti.g.I?i.g=void 0:i.R&&G(i.R,o)),i._&&!i.g){switch(i._.L){case 0:!function(t,n,e){let i=t.createBufferSource();i.buffer=e.G,n?(i.connect(n),n.connect(t.destination)):i.connect(t.destination),i.start()}(t.Audio,i.R,i._);break;case 1:!function(t,n,e){let i=60/(e.O||120)/4;for(let o of e.K)for(let e=0;e{i.o.t[o]|=8,i.o.W[o]={L:0,Y:t,o:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],X:0,j:0,H:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],q:[0,0,0],U:n,J:t.Z,tt:n,nt:e}}}function K(t,n,e){let i=t.o.v[n];T(e.H,e.Y.Y,i.et),F(e.q,i.o)}function N(t,n){let e,i,o,r,l,a;F(n.it,t),e=r=n.it[0],i=l=n.it[1],o=a=n.it[2];let c=[0,0,0];for(let s=0;s<8;s++){let u=re[s];c[0]=u[0]*n.ot[0],c[1]=u[1]*n.ot[1],c[2]=u[2]*n.ot[2],m(c,c,t),c[0]r&&(r=c[0]),c[1]l&&(l=c[1]),c[2]a&&(a=c[2])}n.rt=[e,i,o],n.lt=[r,l,a],n.ct[0]=(r-e)/2,n.ct[1]=(l-i)/2,n.ct[2]=(a-o)/2}function B(t,n){let e=t.it[0]-n.it[0],i=t.ct[0]+n.ct[0]-Math.abs(e),o=t.it[1]-n.it[1],r=t.ct[1]+n.ct[1]-Math.abs(o),l=t.it[2]-n.it[2],a=t.ct[2]+n.ct[2]-Math.abs(l);return io.rt[0]&&i.rt[1]o.rt[1]&&i.rt[2]o.rt[2]){let n=B(t,e);l&&t.ft.push({ht:e.dt,vt:n}),a&&e.ft.push({ht:t.dt,vt:d([0,0,0],n)})}}var i,o}function W(t,n){let e=t.o._t[n],o=t.o.Mt[n];if(e.gt&&f(o.gt,o.gt,e.gt),e.F&&p(o.wt,o.wt,e.F),e.Animation)for(let o of i(t.o,n,1))t.o.m[o]._=e.Animation}function Y(t,n){let e=t.o.yt[n];if(t.o.bt[n].Mt&&t.Ct.Space&&e.At){e.kt[1]=300;for(let e of i(t.o,n,1))t.o.m[e]._="jump"}}function X(t,n){let e=t.o.bt[n];if(e.Mt){let e=t.o.Mt[n];t.Ct.KeyW&&(e.gt[2]+=1),t.Ct.KeyA&&(e.gt[0]+=1),t.Ct.KeyS&&(e.gt[2]-=1),t.Ct.KeyD&&(e.gt[0]-=1)}if(e.Tt){let e=t.o.Mt[n];t.Ct.ArrowLeft&&p(e.wt,e.wt,[0,1,0,0]),t.Ct.ArrowRight&&p(e.wt,e.wt,[0,-1,0,0])}if(e.xt){let i=t.o.Mt[n],o=y(t.o.v[n].F);t.Ct.ArrowUp&&o>e.Et&&p(i.Dt,i.Dt,[-1,0,0,0]),t.Ct.ArrowDown&&ome&&(o.gt[0]+=c(-1,1,-e)),Math.abs(i)>me&&(o.gt[2]+=c(-1,1,-i))}if(i.Tt&&t.St.Touch1X&&(b(ge,de,-t.St.Touch1X*i.Tt*_e*jn),p(e.F,ge,e.F),t.o.t[n]|=256),i.xt&&t.St.Touch1Y){let o=y(e.F),r=c(i.Et-o,i.Ft-o,t.St.Touch1Y*i.xt*_e);b(ge,ve,r*jn),p(e.F,e.F,ge),t.o.t[n]|=256}}function q(t,n){let e=t.o.bt[n];if(e.Mt){let e=t.o.Mt[n];Math.abs(t.St.pad0_axis_1)>ye&&(e.gt[0]-=t.St.pad0_axis_1),Math.abs(t.St.pad0_axis_2)>ye&&(e.gt[2]-=t.St.pad0_axis_2)}if(e.Tt&&Math.abs(t.St.pad0_axis_3)>ye){let e=t.o.Mt[n];p(e.wt,e.wt,b([0,0,0,1],pe,-t.St.pad0_axis_3*Math.PI))}if(e.xt&&Math.abs(t.St.pad0_axis_4)>ye){let i=t.o.Mt[n],o=t.St.pad0_axis_4*Math.PI,r=y(t.o.v[n].F);(o<0&&r>e.Et||o>0&&r{a.o.t[c]|=65536,a.o.Pt[c]={L:1,$t:t,It:n,Rt:e[3]<1?1:0,Lt:l,zt:e,Gt:[...r,i],Ot:[e[0],e[1],e[2],o]}}}function J(t=[0,0,0],n=[0,0,0,1],e=[1,1,1],i=!1){return(o,r)=>{o.o.t[r]|=4194560,o.o.v[r]={o:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],et:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],D:t,F:n,S:e,Kt:i}}}function Q(t,n,e){return(i,o)=>{let r=i.o.v[o];r.D[0]=t,r.D[1]=n,r.D[2]=e}}function Z(t,n,e){return(i,o)=>{w(i.o.v[o].F,t,n,e)}}function tt(t,n,e){return(i,o)=>{let r=i.o.v[o];r.S[0]=t,r.S[1]=n,r.S[2]=e}}function nt(t,n){t.Nt.textAlign="center",t.Nt.font=n.Bt,t.Nt.fillStyle=n.Vt,t.Nt.fillText(n.Text,0,0)}function et(t,n){t.Nt.strokeStyle=n.Wt,t.Nt.strokeRect(-n.ot/2,-n.ot/2,n.ot,n.ot)}function it(t,n,e){let i=t.o.Yt[n];i.Xt-=e,i.Xt<0&&(i.jt&&r(t,i.jt,n),o(t.o,n))}function ot(t,n,e){let i=t.o.Ht[n],o=t.o.v[n];2===i.L?D(Te,o.o):F(Te,o.o),t.qt[4*e+0]=Te[0],t.qt[4*e+1]=Te[1],t.qt[4*e+2]=Te[2],t.qt[4*e+3]=i.L,t.Ut[4*e+0]=i.Wt[0],t.Ut[4*e+1]=i.Wt[1],t.Ut[4*e+2]=i.Wt[2],t.Ut[4*e+3]=i.Jt}function rt(t,n){let e=t.o.v[n],i=t.o.Qt[n],o=t.o.v[i.Zt];F(Ee,o.o),S(De,o.o),M(e.D,e.D,Ee,i.tn),C(e.F,e.F,De,i.tn),t.o.t[n]|=256}function lt(t,n,e){let i=t.o.v[n],o=t.o.Mt[n];if(0!==o.gt[0]||0!==o.gt[1]||0!==o.gt[2]){let l=Math.min(1,Math.hypot((r=o.gt)[0],r[1],r[2]));_(o.gt,o.gt,i.o),void 0!==i.nn&&_(o.gt,o.gt,t.o.v[i.nn].et),v(o.gt,o.gt),h(o.gt,o.gt,l*o.en*e),f(i.D,i.D,o.gt),t.o.t[n]|=256,s(o.gt,0,0,0)}var r;o.wt[3]<1&&(p(o.wt,o.wt,i.F),C(i.F,i.F,o.wt,Math.min(1,o.on/Math.PI*e)),t.o.t[n]|=256,g(o.wt,0,0,0,1)),o.Dt[3]<1&&(p(o.Dt,i.F,o.Dt),C(i.F,i.F,o.Dt,Math.min(1,o.on/Math.PI*e)),t.o.t[n]|=256,g(o.Dt,0,0,0,1))}function at(t,n,e){let i=t.o.rn[n],o=t.o.v[n];i.ln+=e,i.ln>i.an&&(i.ln=0,F(Pe,o.o),D($e,o.o),i.cn.push(...Pe,0),i.cn.push(...$e,Math.random()));for(let t=0;ti.Yt?i.cn.splice(t,be):t+=be}function ct(t,n=.5){return(e,i)=>{e.o.t[i]|=131072,e.o.yt[i]={L:t,sn:i,un:n,kt:[0,0,0],fn:[0,0,0],hn:[0,0,0],dn:[0,0,0],At:!1}}}function st(t,n,e){let i=t.o.v[n],o=t.o.yt[n];1===o.L&&(o.fn[1]+=Re*e,h(o.kt,o.kt,e),f(o.fn,o.fn,o.kt),h(Le,o.fn,e),f(i.D,i.D,Le),t.o.t[n]|=256,s(o.kt,0,0,0))}function ut(t,n,e){let i=t.o.yt[n];var o,r,l;F(Ge,t.o.v[n].o),2===i.L&&((o=Oe)[0]=(r=Ge)[0]-(l=i.dn)[0],o[1]=r[1]-l[1],o[2]=r[2]-l[2],h(i.fn,Oe,1/e)),u(i.dn,Ge)}function ft(t,n){let e=t.o.v[n],i=t.o.yt[n],o=t.o.vn[i.sn];if(1===i.L){i.At=!1,s(Be,0,0,0);for(let n=0;n0&&(i.At=!0)}}Be[0]||Be[1]||Be[2]?(Math.abs(Be[0])<.1&&(Be[0]=0),Math.abs(Be[2])<.1&&(Be[2]=0),f(e.D,e.D,Be),t.o.t[n]|=256):u(i.hn,i.fn)}var r,l}function ht(t,n,e){t[0]=n[0]>=0&&e[0]>=0?Math.max(n[0],e[0]):n[0]<=0&&e[0]<=0?Math.min(n[0],e[0]):n[0],n[1]>=0&&e[1]>=0?t[1]=Math.max(n[1],e[1]):n[1]<=0&&e[1]<=0?t[1]=Math.min(n[1],e[1]):n[1]>e[1]&&(t[1]=n[1]),t[2]=n[2]>=0&&e[2]>=0?Math.max(n[2],e[2]):n[0]<=0&&e[0]<=0?Math.min(n[2],e[2]):n[2]}function dt(t,n){if(16&t.t[n]){let e=t.l[n];for(let n of e.l)if(1048576&t.t[n])return!0}return!1}function vt(t,n,e,i){return t.bindTexture(wn,n),t.texImage2D(wn,0,Dn,e,i,0,fn,sn,null),t.texParameteri(wn,Mn,vn),t.texParameteri(wn,_n,vn),n}function mt(t,n,e,i){return t.bindTexture(wn,n),t.texImage2D(wn,0,Sn,e,i,0,un,cn,null),t.texParameteri(wn,Mn,mn),t.texParameteri(wn,_n,mn),t.texParameteri(wn,xn,En),t.texParameteri(wn,gn,kn),t.texParameteri(wn,pn,kn),n}function _t(t,n,e,i){n.mn=e,n._n=i,function(t,n,e,i){t.bindTexture(wn,n),t.texImage2D(wn,0,Tn,e,i,0,fn,an,null),t.texParameteri(wn,Mn,mn),t.texParameteri(wn,_n,mn)}(t,n.Mn,n.mn,n._n),mt(t,n.gn,n.mn,n._n)}function Mt(t,n,e,i){n.mn=e,n._n=i,function(t,n,e,i){t.bindTexture(wn,n),t.texImage2D(wn,0,Fn,e,i,0,fn,sn,null),t.texParameteri(wn,Mn,mn),t.texParameteri(wn,_n,mn)}(t,n.Mn,n.mn,n._n),mt(t,n.gn,n.mn,n._n)}function gt(t,n,e,i){n.mn=e,n._n=i,vt(t,n.pn,n.mn,n._n),vt(t,n.wn,n.mn,n._n),vt(t,n.yn,n.mn,n._n),vt(t,n.bn,n.mn,n._n),mt(t,n.gn,n.mn,n._n)}function pt(t,n,e){let i=null,o=null,r=[];for(let l=0;l{let o=t.o.v[e];return P(t.o.v[i].o,n.q)-P(o.o,n.q)})),t.Cn.enable(rn);for(let l=0;lo.Jn){o.ln=0;let i=t.o.v[e];F(je,i.o),S(He,i.o),n(t,[...o.Qn(t),(l=je,(t,n)=>{u(t.o.v[n].D,l)}),(r=He,(t,n)=>{var e,i;(e=t.o.v[n].F)[0]=(i=r)[0],e[1]=i[1],e[2]=i[2],e[3]=i[3]})])}var r,l}function kt(t,n,e){let i=t.o.Zn[n];i.ln+=e,i.ln>i.an&&(i.ln=0,(t.o.t[n]&i.st)===i.st?t.o.t[n]&=~i.st:t.o.t[n]|=i.st)}function Tt(t,n){for(let n=0;nt+function(t){let n=t.shift();return"boolean"==typeof n||null==n?"":Array.isArray(n)?n.join(""):n}(n)+e))}function Ft(t,n=.1){return(e,i)=>{e.o.t[i]|=8192,e.o.Qt[i]={Zt:t,tn:n}}}function St(t,n,e=0){for(let i=e;i{o.o.t[r]|=32,o.o.vn[r]={dt:r,ee:!0,ie:t,ut:n,st:e,ot:i,rt:[0,0,0],lt:[0,0,0],it:[0,0,0],ct:[0,0,0],ft:[]}}}function It(t){return[J(),$t(!1,2,0),ct(0),e([J([0,I(-.2,.2),0]),U(t.oe,t.re,[0,1,.1,1])])]}function Rt(t,n){return(e,i)=>{let o=t?e.Audio.createPanner():void 0;e.o.t[i]|=4,e.o.$[i]={R:o,V:n,p:0}}}function Lt(t){return(n,e)=>{t(n,e)}}function zt(t,n,e){return(i,o)=>{i.o.t[o]|=64,i.o._t[o]={gt:t,F:n,Animation:e}}}function Gt(t){return(n,e)=>{n.o.t[e]&=~t}}function Ot(t=[1,1,1],n=1){return(e,i)=>{e.o.t[i]|=4096,e.o.Ht[i]={L:2,Wt:t,Jt:n}}}function Kt(t=[1,1,1],n=1){return(e,i)=>{e.o.t[i]|=4096,e.o.Ht[i]={L:3,Wt:t,Jt:n}}}function Nt(t,n){return(e,i)=>{e.o.t[i]|=16384,e.o.Mt[i]={en:t,on:n,gt:[0,0,0],wt:[0,0,0,1],Dt:[0,0,0,1]}}}function Bt(t){return(n,e)=>{n.o.t[e]|=262144,n.o.qn[e]={jn:t}}}function Vt(t){let n,i,o;return[J(),Lt(((t,e)=>n=e)),$t(!0,8,3),(t,n)=>{t.o.t[n]|=8388608,t.o._[n]={st:1,jt:1}},ct(1,.3),Rt(!0),(a=5,c=2,(t,n)=>{t.o.t[n]|=2048,t.o.Yt[n]={Xt:a,jt:c}}),Gt(2048),e([Lt(((t,n)=>i=n)),J(void 0,void 0,[.5,.7,.1]),zt(null,[0,1,0,0]),Nt(0,.2),Bt(.05),(r=262144,l=1,(t,n)=>{t.o.t[n]|=2097152,t.o.Zn[n]={st:r,an:l,ln:0}}),Gt(2359296),e([J([0,1,0]),U(t.oe,t.re,[5,3,0,1]),e([J([0,1,0]),Kt([1,.5,0],3)])])],[J([0,1.5,0]),zt(null,[0,1,0,0]),Nt(0,2),e([J([0,0,.2],w([0,0,0,1],-90,0,0)),e([Lt(((t,n)=>o=n)),J(),Bt(.05),(t,n)=>{t.o.t[n]|=1024,t.o.rn[n]={Yt:2,an:.2,Vn:1,cn:[],ln:0}},(u=t.le,f=[1,1,1,1],h=[1,1,1,0],(t,n)=>{let e=t.Cn.createBuffer();t.Cn.bindBuffer(on,e),t.Cn.bufferData(on,Ce*be*4,en),t.o.t[n]|=65536,t.o.Pt[n]={L:8,$t:u,Rt:f[3]<1||h[3]<1?1:0,G:e,Kn:f,Nn:h,ot:[5,1],Lt:ln}})])])],[e([(t,n)=>{t.o.t[n]|=1048576,t.o.ae[n]={L:1,Xt:10}}]),(s=()=>{t.o.t[n]|=2048,t.o.t[i]|=2359296,t.o.qn[o].jn=.1;let e=t.o.rn[o];e.Yt=1,e.an=.1;let r=t.o.Pt[o];r.Kn=[1,1,0,1],r.Nn=[1,0,0,0],r.ot=[10,5]},(t,n)=>{t.o.t[n]|=1048576,t.o.ae[n]={L:2,ce:s}})])];var r,l,a,c,s,u,f,h}function Wt(t){return[J(),$t(!0,4,3),ct(1,.3),e([J(),U(t.oe,t.re,[.5,.5,.5,.3])])]}function Yt(t){return t*t}function Xt(t){return 1-(1-t)**2}function jt(t){return t<.5?2*t*t:1-(-2*t+2)**2/2}function Ht(t,n,e,i=0,o=0){return(r,l)=>{r.o.t[l]|=128,r.o.bt[l]={Mt:t,Tt:n,xt:e,Et:i,Ft:o}}}function qt(t){return[J(),Ht(!0,.2,0),Nt(10,3),$t(!0,1,2),ct(1),Rt(!1),(t,n)=>{t.o.t[n]|=2},e([J(),U(t.oe,t.re,[1,.3,.2,1]),(n={idle:{A:[{k:0,F:w([0,0,0,1],0,-5,0),T:jt},{k:1,F:w([0,0,0,1],0,5,0),T:jt}]},jump:{A:[{k:0,F:[0,0,0,1]},{k:.5,F:[1,0,0,0],T:Yt},{k:1,F:[0,0,0,-1],T:Xt}],C:0}},(t,e)=>{let i={};for(let t in n){let{A:e,C:o=7}=n[t],r=e[e.length-1].k;i[t]={A:e.map((t=>({...t}))),C:o,P:r,p:0}}t.o.t[e]|=1,t.o.m[e]={M:i,g:i.idle}})],[J(),(t,n)=>{t.o.t[n]|=32768,t.o.ne[n]={te:"camera anchor"}},Nt(0,3),Ht(!1,0,.2,-10,80)],[J([0,2,0]),Kt([1,1,1],5)])];var n}var Ut,Jt,Qt,Zt=256,tn=16384,nn=35044,en=35048,on=34962,rn=3042,ln=2304,an=5121,cn=5125,sn=5126,un=6402,fn=6408,hn=35632,dn=35633,vn=9728,mn=9729,_n=10240,Mn=10241,gn=10242,pn=10243,wn=3553,yn=33984,bn=33985,Cn=33986,An=33987,kn=33071,Tn=32856,xn=34892,En=34894,Dn=34836,Fn=34842,Sn=33190,Pn=5123,$n=5126,In=class{se;t=[];i=[];constructor(t=1e4){this.se=t}},Rn=document.getElementById("update"),Ln=document.getElementById("delta"),zn=document.getElementById("fps"),Gn=class{ue=0;fe=0;X=window.innerWidth;j=window.innerHeight;he=!0;Ct={MouseX:0,MouseY:0};St={MouseX:0,MouseY:0};de={Mouse:0,Mouse0:0,Mouse1:0,Mouse2:0,Touch0:0,Touch1:0};ve={};me=document.querySelector("main");constructor(){document.addEventListener("visibilitychange",(()=>document.hidden?this._e():this.Me())),this.me.addEventListener("contextmenu",(t=>t.preventDefault())),this.me.addEventListener("mousedown",(t=>{this.Ct["Mouse"+t.button]=1,this.St["Mouse"+t.button]=1})),this.me.addEventListener("mouseup",(t=>{this.Ct["Mouse"+t.button]=0,this.St["Mouse"+t.button]=-1})),this.me.addEventListener("mousemove",(t=>{this.Ct.MouseX=t.clientX,this.Ct.MouseY=t.clientY,this.St.MouseX=t.movementX,this.St.MouseY=t.movementY})),this.me.addEventListener("wheel",(t=>{t.preventDefault(),this.St.WheelY=t.deltaY})),this.me.addEventListener("touchstart",(t=>{t.target===this.me&&t.preventDefault(),1===t.touches.length&&(this.ve={});for(let n=0;n{t.target===this.me&&t.preventDefault();for(let n=0;n{t.target===this.me&&t.preventDefault();for(let n=0;n{for(let n=0;n{t.repeat||(this.Ct[t.code]=1,this.St[t.code]=1)})),window.addEventListener("keyup",(t=>{this.Ct[t.code]=0,this.St[t.code]=-1}))}Me(){let t=performance.now(),n=e=>{let i=(e-t)/1e3;t=e,this.ue=requestAnimationFrame(n),this.ge(i),this.pe(i),this.we(i)};requestAnimationFrame(n)}_e(){cancelAnimationFrame(this.ue),this.ue=0}ge(t){this.fe=performance.now();let n=Math.abs(this.St.MouseX)+Math.abs(this.St.MouseY);this.de.Mouse+=n,1===this.Ct.Mouse0&&(this.de.Mouse0+=n),1===this.Ct.Mouse1&&(this.de.Mouse1+=n),1===this.Ct.Mouse2&&(this.de.Mouse2+=n),1===this.Ct.Touch0&&(this.de.Touch0+=Math.abs(this.St.Touch0X)+Math.abs(this.St.Touch0Y)),1===this.Ct.Touch1&&(this.de.Touch1+=Math.abs(this.St.Touch1X)+Math.abs(this.St.Touch1Y))}pe(t){}we(t){this.he=!1,-1===this.St.Mouse0&&(this.de.Mouse0=0),-1===this.St.Mouse1&&(this.de.Mouse1=0),-1===this.St.Mouse2&&(this.de.Mouse2=0),-1===this.St.Touch0&&(this.de.Touch0=0),-1===this.St.Touch1&&(this.de.Touch1=0);for(let t in this.St)this.St[t]=0;let n=performance.now()-this.fe;Rn&&(Rn.textContent=n.toFixed(1)),Ln&&(Ln.textContent=(1e3*t).toFixed(1)),zn&&(zn.textContent=(1/t).toFixed())}},On=class extends Gn{ye=document.querySelector("#background");be=this.ye.getContext("2d");Ce=document.querySelector("#foreground");Nt=this.Ce.getContext("2d");Ae=document.querySelector("#scene");Cn=this.Ae.getContext("webgl2");Audio=new AudioContext;ke=[];En={};constructor(){super(),this.Cn.enable(2929),this.Cn.enable(2884),this.Cn.blendFunc(770,771)}},Kn=class extends In{m=[];$=[];W=[];l=[];vn=[];_t=[];bt=[];Te=[];rn=[];Yt=[];Ht=[];Qt=[];Mt=[];ne=[];Pt=[];yt=[];qn=[];Un=[];ae=[];Zn=[];v=[];_=[]},Nn=Float32Array.from([-.5,-.5,.5,-.5,-.5,.5,-.5,-.5,.5,-.5,.5,.5,-.5,.5,.5,-.5,.5,.5,-.5,-.5,-.5,-.5,-.5,-.5,-.5,-.5,-.5,-.5,.5,-.5,-.5,.5,-.5,-.5,.5,-.5,.5,-.5,.5,.5,-.5,.5,.5,-.5,.5,.5,.5,.5,.5,.5,.5,.5,.5,.5,.5,-.5,-.5,.5,-.5,-.5,.5,-.5,-.5,.5,.5,-.5,.5,.5,-.5,.5,.5,-.5]),Bn=Float32Array.from([-1,0,0,0,-1,0,0,0,1,-1,0,0,0,0,1,0,1,0,-1,0,0,0,-1,0,0,0,-1,-1,0,0,0,0,-1,0,1,0,0,-1,0,0,0,1,1,0,0,0,0,1,0,1,0,1,0,0,0,-1,0,0,0,-1,1,0,0,0,0,-1,0,1,0,1,0,0]),Vn=Float32Array.from([.67,.67,1,1,.67,.33,.33,.67,.67,.67,0,0,.67,1,1,.67,.33,.33,.33,1,0,.33,.33,0,.67,1,.33,.33,.33,1,.33,.67,0,.33,0,1,.67,.67,.33,.67,.33,.67,0,.67,.33,.33,0,.67]),Wn=Float32Array.from([]),Yn=Uint16Array.from([16,5,22,5,11,22,1,12,7,12,18,7,2,4,13,4,15,13,14,17,20,17,23,20,19,21,8,21,10,8,6,9,0,9,3,0]),Xn=1e-6,jn=Math.PI/180,Hn=180/Math.PI,qn=4194305,Un=4194306,Jn=[0,0,0],Qn=[0,0,0],Zn=[0,0,0],te=1,ne=4194308,ee=[0,0,0],ie=[0,0,0],oe=4194312,re=[[.5,.5,.5],[.5,.5,-.5],[-.5,.5,-.5],[-.5,.5,.5],[.5,-.5,.5],[.5,-.5,-.5],[-.5,-.5,-.5],[-.5,-.5,.5]],le=4194336,ae=4210752,ce=131200,se=4210816,ue=[1,0,0],fe=[0,1,0],he=[0,0,0,0],de=[0,1,0],ve=[1,0,0],me=.01,_e=10,Me=[0,0],ge=[0,0,0,0],pe=[0,1,0],we=[1,0,0],ye=.1,be=8,Ce=200,Ae=4194816,ke=4198400,Te=[0,0,0],xe=4202496,Ee=[0,0,0],De=[0,0,0,1],Fe=4210688,Se=4195328,Pe=[0,0,0],$e=[0,0,0],Ie=4325376,Re=-9.81,Le=[0,0,0],ze=4325376,Ge=[0,0,0],Oe=[0,0,0],Ke=4325408,Ne=[0,0,0],Be=[0,0,0],Ve=1048576,We=4259840,Ye=4456448,Xe=4718592,je=[0,0,0],He=[0,0,0,0],qe=2097152,Ue=4194560,Je=[0,0,0],Qe=12582944,Ze=new class extends On{o=new Kn;xe=function(t){return function(t,n=4){let e=l(t,"#version 300 es\n\nuniform mat4 pv;\nuniform mat4 world;\n\nlayout(location=0) in vec4 attr_position;\n\nvoid main() {\ngl_Position = pv * world * attr_position;\n}\n","#version 300 es\n\nprecision mediump float;\n\nuniform vec4 color;\n\nout vec4 frag_color;\n\nvoid main() {\nfrag_color = color;\n}\n");return{Pn:n,An:e,kn:{H:t.getUniformLocation(e,"pv"),o:t.getUniformLocation(e,"world"),Wt:t.getUniformLocation(e,"color")}}}(t,2)}(this.Cn);oe=function(t){let n=l(t,"#version 300 es\n\nuniform mat4 pv;\nuniform mat4 world;\nuniform mat4 self;\n\nlayout(location=0) in vec4 attr_position;\nlayout(location=1) in vec3 attr_normal;\n\nout vec4 vert_position;\nout vec3 vert_normal;\n\nvoid main() {\nvert_position = world * attr_position;\nvert_normal = (vec4(attr_normal, 0.0) * self).xyz;\ngl_Position = pv * vert_position;\n}\n","#version 300 es\n\nprecision mediump float;\n\nuniform vec3 eye;\nuniform vec4 diffuse_color;\nuniform vec4 specular_color;\nuniform vec4 emissive_color;\nuniform vec4 light_positions[8];\nuniform vec4 light_details[8];\n\nin vec4 vert_position;\nin vec3 vert_normal;\n\nout vec4 frag_color;\n\n\n\n\n\n\nvec3 GAMMA_DECODE(vec3 rgb) {\nreturn pow(rgb, vec3(2.2));\n}\n\n\nvec4 GAMMA_DECODE(vec4 color) {\nreturn vec4(pow(color.rgb, vec3(2.2)), color.a);\n}\n\n\n\n\n\n\nvec3 GAMMA_ENCODE(vec3 rgb) {\nreturn pow(rgb, vec3(1.0 / 2.2));\n}\n\n\nvec4 GAMMA_ENCODE(vec4 color) {\nreturn vec4(pow(color.rgb, vec3(1.0 / 2.2)), color.a);\n}\n\n\nvoid main() {\nvec3 world_normal = normalize(vert_normal);\n\nvec3 view_dir = eye - vert_position.xyz;\nvec3 view_normal = normalize(view_dir);\n\n\nvec3 light_acc = GAMMA_DECODE(diffuse_color.rgb) * 0.1;\n\nfor (int i = 0; i < 8; i++) {\nint light_kind = int(light_positions[i].w);\nif (light_kind == 0) {\nbreak;\n}\n\nvec3 light_rgb = GAMMA_DECODE(light_details[i].rgb);\nfloat light_intensity = light_details[i].a;\n\nvec3 light_normal;\nif (light_kind == 2) {\nlight_normal = light_positions[i].xyz;\n} else if (light_kind == 3) {\nvec3 light_dir = light_positions[i].xyz - vert_position.xyz;\nfloat light_dist = length(light_dir);\nlight_normal = light_dir / light_dist;\n\nlight_intensity /= (light_dist * light_dist);\n}\n\nfloat diffuse_factor = dot(world_normal, light_normal);\nif (diffuse_factor > 0.0) {\n\nlight_acc += GAMMA_DECODE(diffuse_color.rgb) * diffuse_factor * light_rgb * light_intensity;\n\nif (specular_color.a > 0.0) {\n\n\n\n\n\n\nvec3 h = normalize(light_normal + view_normal);\nfloat specular_angle = max(dot(h, world_normal), 0.0);\nfloat specular_factor = pow(specular_angle, specular_color.a);\n\n\nlight_acc += GAMMA_DECODE(specular_color.rgb) * specular_factor * light_rgb * light_intensity;\n}\n}\n}\n\nvec3 emissive_rgb = GAMMA_DECODE(emissive_color.rgb) * emissive_color.a;\nfrag_color = vec4(GAMMA_ENCODE(light_acc + emissive_rgb), diffuse_color.a);\n}\n");return{Pn:4,An:n,kn:{H:t.getUniformLocation(n,"pv"),o:t.getUniformLocation(n,"world"),et:t.getUniformLocation(n,"self"),zt:t.getUniformLocation(n,"diffuse_color"),Gt:t.getUniformLocation(n,"specular_color"),Ot:t.getUniformLocation(n,"emissive_color"),Tn:t.getUniformLocation(n,"eye"),qt:t.getUniformLocation(n,"light_positions"),Ut:t.getUniformLocation(n,"light_details")}}}(this.Cn);le=function(t){let n=l(t,"#version 300 es\n\nuniform mat4 pv;\nuniform vec4 color_start;\nuniform vec4 color_end;\n\nuniform vec4 details;\n\n\nin vec4 attr_origin_age;\nin vec3 attr_direction;\n\nout vec4 vert_color;\n\nvoid main() {\n\nvec3 velocity = attr_direction * details.y;\ngl_Position = pv * vec4(attr_origin_age.xyz + velocity * attr_origin_age.w, 1.0);\n\n\nfloat t = attr_origin_age.w / details.x;\ngl_PointSize = mix(details.z, details.w, t);\nvert_color = mix(color_start, color_end, t);\n}\n","#version 300 es\n\nprecision mediump float;\n\nin vec4 vert_color;\n\nout vec4 frag_color;\n\nvoid main() {\nfrag_color = vert_color;\n}\n");return{Pn:0,An:n,kn:{H:t.getUniformLocation(n,"pv"),Kn:t.getUniformLocation(n,"color_start"),Nn:t.getUniformLocation(n,"color_end"),Bn:t.getUniformLocation(n,"details"),Wn:t.getAttribLocation(n,"attr_origin_age"),gt:t.getAttribLocation(n,"attr_direction")}}}(this.Cn);re=function(t){let n=t.createVertexArray();t.bindVertexArray(n);let e=t.createBuffer();t.bindBuffer(on,e),t.bufferData(on,Nn,nn),t.enableVertexAttribArray(0),t.vertexAttribPointer(0,3,$n,!1,0,0);let i=t.createBuffer();t.bindBuffer(on,i),t.bufferData(on,Bn,nn),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,3,$n,!1,0,0);let o=t.createBuffer();t.bindBuffer(on,o),t.bufferData(on,Vn,nn),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,$n,!1,0,0);let r=t.createBuffer();t.bindBuffer(on,r),t.bufferData(on,Wn,nn),t.enableVertexAttribArray(5),t.vertexAttribPointer(5,4,$n,!1,0,0);let l=t.createBuffer();return t.bindBuffer(34963,l),t.bufferData(34963,Yn,nn),t.bindVertexArray(null),{Sn:n,On:e,Ee:Nn,De:i,Fe:Bn,Se:o,Pe:Vn,$e:r,Ie:Wn,Re:l,Le:Yn,$n:Yn.length}}(this.Cn);qt=new Float32Array(32);Ut=new Float32Array(32);u=0;h=0;pe(n){!function(n,e){let i=[];for(let t=0;t1)continue;t.Nt.setTransform(1,0,0,1,.5*(e[0]+1)*t.X,.5*(1-e[1])*t.j);let o=t.o.Te[n];switch(o.L){case 0:nt(t,o);break;case 3:et(t,o)}}}(this),function(t,n){let e=function(t){return Dt`${Dt`
+
+
+
+`} ${function(t){return Dt`
+
+
Collected: ${t.u}
+
Missed: ${t.h}
+
+`}(t)}
`}(t);e!==Jt&&(t.me.innerHTML=Jt=e)}(this)}};(Qt=Ze).me.addEventListener("click",(()=>Qt.me.requestPointerLock())),function(t){t.o=new Kn,t.he=!0;for(let e=0;e<10;e++)for(let i=0;i<10;i++)n(t,[...It(t),Q(5*(i-5),0,5*(e-5)),tt(5,1,5)]);var i;n(t,[J(),Z(-30,30,0),Ot([1,1,1],.1)]),n(t,[...qt(t),Q(0,1,0),Z(0,180,0)]),n(t,[...Pt(t),Q(0,1e3,1e3),Z(0,180,0)]),n(t,[J([0,15,0]),zt(null,[0,1,0,0]),Nt(0,1),e([J([0,0,10]),e([J(),Bt(10),(i=Vt,(t,n)=>{t.o.t[n]|=524288,t.o.Un[n]={Qn:i,Jn:3,ln:3}})])])]);for(let e=0;e<100;e++)n(t,[...Wt(t),Q(I(-10,10),1,I(-10,10)),tt(I(.5,1.5),I(.5,1.5),I(.5,1.5))])}(Ze),Ze.Me(),window.$=r.bind(null,Ze),window.game=Ze})();
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..b373ec08
--- /dev/null
+++ b/index.html
@@ -0,0 +1 @@
+GoodLuck (opt)
diff --git a/node_modules/.bin/acorn b/node_modules/.bin/acorn
new file mode 120000
index 00000000..cf767603
--- /dev/null
+++ b/node_modules/.bin/acorn
@@ -0,0 +1 @@
+../acorn/bin/acorn
\ No newline at end of file
diff --git a/node_modules/.bin/browserslist b/node_modules/.bin/browserslist
new file mode 120000
index 00000000..3cd991b2
--- /dev/null
+++ b/node_modules/.bin/browserslist
@@ -0,0 +1 @@
+../browserslist/cli.js
\ No newline at end of file
diff --git a/node_modules/.bin/cssesc b/node_modules/.bin/cssesc
new file mode 120000
index 00000000..487b6890
--- /dev/null
+++ b/node_modules/.bin/cssesc
@@ -0,0 +1 @@
+../cssesc/bin/cssesc
\ No newline at end of file
diff --git a/node_modules/.bin/js-yaml b/node_modules/.bin/js-yaml
new file mode 120000
index 00000000..9dbd010d
--- /dev/null
+++ b/node_modules/.bin/js-yaml
@@ -0,0 +1 @@
+../js-yaml/bin/js-yaml.js
\ No newline at end of file
diff --git a/node_modules/.bin/nanoid b/node_modules/.bin/nanoid
new file mode 120000
index 00000000..e2be547b
--- /dev/null
+++ b/node_modules/.bin/nanoid
@@ -0,0 +1 @@
+../nanoid/bin/nanoid.cjs
\ No newline at end of file
diff --git a/node_modules/.bin/roadroller b/node_modules/.bin/roadroller
new file mode 120000
index 00000000..b8a22c07
--- /dev/null
+++ b/node_modules/.bin/roadroller
@@ -0,0 +1 @@
+../roadroller/cli.mjs
\ No newline at end of file
diff --git a/node_modules/.bin/svgo b/node_modules/.bin/svgo
new file mode 120000
index 00000000..d6a228b7
--- /dev/null
+++ b/node_modules/.bin/svgo
@@ -0,0 +1 @@
+../svgo/bin/svgo
\ No newline at end of file
diff --git a/node_modules/.bin/terser b/node_modules/.bin/terser
new file mode 120000
index 00000000..0792ff47
--- /dev/null
+++ b/node_modules/.bin/terser
@@ -0,0 +1 @@
+../terser/bin/terser
\ No newline at end of file
diff --git a/node_modules/.bin/update-browserslist-db b/node_modules/.bin/update-browserslist-db
new file mode 120000
index 00000000..b11e16f3
--- /dev/null
+++ b/node_modules/.bin/update-browserslist-db
@@ -0,0 +1 @@
+../update-browserslist-db/cli.js
\ No newline at end of file
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
new file mode 100644
index 00000000..b5ae70e7
--- /dev/null
+++ b/node_modules/.package-lock.json
@@ -0,0 +1,1570 @@
+{
+ "name": "goodluck-play",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "node_modules/@babel/code-frame": {
+ "version": "7.21.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz",
+ "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.19.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+ "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz",
+ "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "dev": true
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+ "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
+ }
+ },
+ "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "dev": true
+ },
+ "node_modules/@trysound/sax": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
+ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
+ "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "node_modules/browserslist": {
+ "version": "4.21.5",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+ "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001449",
+ "electron-to-chromium": "^1.4.284",
+ "node-releases": "^2.0.8",
+ "update-browserslist-db": "^1.0.10"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-api": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
+ "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.0.0",
+ "caniuse-lite": "^1.0.0",
+ "lodash.memoize": "^4.1.2",
+ "lodash.uniq": "^4.5.0"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001482",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001482.tgz",
+ "integrity": "sha512-F1ZInsg53cegyjroxLNW9DmrEQ1SuGRTO1QlpA0o2/6OpQ0gFeDRoq1yFmnr8Sakn9qwwt9DmbxHB6w167OSuQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/colord": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
+ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
+ "dev": true
+ },
+ "node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/cosmiconfig": {
+ "version": "8.1.3",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz",
+ "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==",
+ "dev": true,
+ "dependencies": {
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ }
+ },
+ "node_modules/css-declaration-sorter": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz",
+ "integrity": "sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==",
+ "dev": true,
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.9"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-select/node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/css-select/node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/css-select/node_modules/domutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/css-select/node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
+ "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "2.0.30",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cssnano": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz",
+ "integrity": "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==",
+ "dev": true,
+ "dependencies": {
+ "cssnano-preset-default": "^6.0.1",
+ "lilconfig": "^2.1.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/cssnano"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/cssnano-preset-default": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz",
+ "integrity": "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==",
+ "dev": true,
+ "dependencies": {
+ "css-declaration-sorter": "^6.3.1",
+ "cssnano-utils": "^4.0.0",
+ "postcss-calc": "^9.0.0",
+ "postcss-colormin": "^6.0.0",
+ "postcss-convert-values": "^6.0.0",
+ "postcss-discard-comments": "^6.0.0",
+ "postcss-discard-duplicates": "^6.0.0",
+ "postcss-discard-empty": "^6.0.0",
+ "postcss-discard-overridden": "^6.0.0",
+ "postcss-merge-longhand": "^6.0.0",
+ "postcss-merge-rules": "^6.0.1",
+ "postcss-minify-font-values": "^6.0.0",
+ "postcss-minify-gradients": "^6.0.0",
+ "postcss-minify-params": "^6.0.0",
+ "postcss-minify-selectors": "^6.0.0",
+ "postcss-normalize-charset": "^6.0.0",
+ "postcss-normalize-display-values": "^6.0.0",
+ "postcss-normalize-positions": "^6.0.0",
+ "postcss-normalize-repeat-style": "^6.0.0",
+ "postcss-normalize-string": "^6.0.0",
+ "postcss-normalize-timing-functions": "^6.0.0",
+ "postcss-normalize-unicode": "^6.0.0",
+ "postcss-normalize-url": "^6.0.0",
+ "postcss-normalize-whitespace": "^6.0.0",
+ "postcss-ordered-values": "^6.0.0",
+ "postcss-reduce-initial": "^6.0.0",
+ "postcss-reduce-transforms": "^6.0.0",
+ "postcss-svgo": "^6.0.0",
+ "postcss-unique-selectors": "^6.0.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/cssnano-utils": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.0.tgz",
+ "integrity": "sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==",
+ "dev": true,
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/csso": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
+ "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
+ "dev": true,
+ "dependencies": {
+ "css-tree": "~2.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/css-tree": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz",
+ "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "2.0.28",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/mdn-data": {
+ "version": "2.0.28",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
+ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
+ "dev": true
+ },
+ "node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/dom-serializer/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.384",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.384.tgz",
+ "integrity": "sha512-I97q0MmRAAqj53+a8vZsDkEXBZki+ehYAOPzwtQzALip52aEp2+BJqHFtTlsfjoqVZYwPpHC8wM6MbsSZQ/Eqw==",
+ "dev": true
+ },
+ "node_modules/entities": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
+ "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/esm": {
+ "version": "3.2.25",
+ "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
+ "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/file-type": {
+ "version": "10.11.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz",
+ "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fse": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/fse/-/fse-4.0.1.tgz",
+ "integrity": "sha512-5XLUrweQvJxSJKhBe3XjimHSJ2EUhYOG+K2tLQy8I9kp78Fa3CgUXqxAZWxE9+fsvnI5GVkHl4NDqbf1tSb93Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/htmlnano": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.4.tgz",
+ "integrity": "sha512-WGCkyGFwjKW1GeCBsPYacMvaMnZtFJ0zIRnC2NCddkA+IOEhTqskXrS7lep+3yYZw/nQ3dW1UAX4yA/GJyR8BA==",
+ "dev": true,
+ "dependencies": {
+ "cosmiconfig": "^8.0.0",
+ "posthtml": "^0.16.5",
+ "timsort": "^0.3.0"
+ },
+ "peerDependencies": {
+ "cssnano": "^6.0.0",
+ "postcss": "^8.3.11",
+ "purgecss": "^5.0.0",
+ "relateurl": "^0.2.7",
+ "srcset": "4.0.0",
+ "svgo": "^3.0.2",
+ "terser": "^5.10.0",
+ "uncss": "^0.17.3"
+ },
+ "peerDependenciesMeta": {
+ "cssnano": {
+ "optional": true
+ },
+ "postcss": {
+ "optional": true
+ },
+ "purgecss": {
+ "optional": true
+ },
+ "relateurl": {
+ "optional": true
+ },
+ "srcset": {
+ "optional": true
+ },
+ "svgo": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "uncss": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
+ "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.2",
+ "domutils": "^2.8.0",
+ "entities": "^3.0.1"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "node_modules/is-json": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz",
+ "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==",
+ "dev": true
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "node_modules/lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+ "dev": true
+ },
+ "node_modules/lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
+ "dev": true
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.30",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
+ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
+ "dev": true
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "peer": true,
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
+ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
+ "dev": true
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
+ "node_modules/postcss": {
+ "version": "8.4.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz",
+ "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-calc": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.0.tgz",
+ "integrity": "sha512-B9BNW/SVh4SMJfoCQ6D9h1Wo7Yjqks7UdbiARJ16J5TIsQn5NEqwMF5joSgOYb26oJPUR5Uv3fCQ/4PvmZWeJQ==",
+ "dev": true,
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.11",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.2"
+ }
+ },
+ "node_modules/postcss-colormin": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz",
+ "integrity": "sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "caniuse-api": "^3.0.0",
+ "colord": "^2.9.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-convert-values": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz",
+ "integrity": "sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-discard-comments": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz",
+ "integrity": "sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==",
+ "dev": true,
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-discard-duplicates": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz",
+ "integrity": "sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==",
+ "dev": true,
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-discard-empty": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz",
+ "integrity": "sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==",
+ "dev": true,
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-discard-overridden": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz",
+ "integrity": "sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==",
+ "dev": true,
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-merge-longhand": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz",
+ "integrity": "sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0",
+ "stylehacks": "^6.0.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-merge-rules": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz",
+ "integrity": "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "caniuse-api": "^3.0.0",
+ "cssnano-utils": "^4.0.0",
+ "postcss-selector-parser": "^6.0.5"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-font-values": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz",
+ "integrity": "sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-gradients": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz",
+ "integrity": "sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==",
+ "dev": true,
+ "dependencies": {
+ "colord": "^2.9.1",
+ "cssnano-utils": "^4.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-params": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz",
+ "integrity": "sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "cssnano-utils": "^4.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-selectors": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz",
+ "integrity": "sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==",
+ "dev": true,
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.5"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-charset": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz",
+ "integrity": "sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==",
+ "dev": true,
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-display-values": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz",
+ "integrity": "sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-positions": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz",
+ "integrity": "sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-repeat-style": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz",
+ "integrity": "sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-string": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz",
+ "integrity": "sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-timing-functions": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz",
+ "integrity": "sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-unicode": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz",
+ "integrity": "sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-url": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz",
+ "integrity": "sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-whitespace": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz",
+ "integrity": "sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-ordered-values": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz",
+ "integrity": "sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==",
+ "dev": true,
+ "dependencies": {
+ "cssnano-utils": "^4.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-reduce-initial": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz",
+ "integrity": "sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "caniuse-api": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-reduce-transforms": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz",
+ "integrity": "sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.12",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz",
+ "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==",
+ "dev": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-svgo": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.0.tgz",
+ "integrity": "sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0",
+ "svgo": "^3.0.2"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >= 18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-unique-selectors": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz",
+ "integrity": "sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==",
+ "dev": true,
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.5"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true
+ },
+ "node_modules/posthtml": {
+ "version": "0.16.6",
+ "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz",
+ "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==",
+ "dev": true,
+ "dependencies": {
+ "posthtml-parser": "^0.11.0",
+ "posthtml-render": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/posthtml-inline-assets": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/posthtml-inline-assets/-/posthtml-inline-assets-3.1.0.tgz",
+ "integrity": "sha512-52VGs/FG8NNlzv04jZe1HBy5pQ+HWifbQpZN5q0tt6QNkgy3SZCutf4UZyM93uzYym71tKPCQkzAXN3XnRSTgA==",
+ "dev": true,
+ "dependencies": {
+ "file-type": "^10.4.0",
+ "fse": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/posthtml-parser": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz",
+ "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==",
+ "dev": true,
+ "dependencies": {
+ "htmlparser2": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/posthtml-render": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz",
+ "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==",
+ "dev": true,
+ "dependencies": {
+ "is-json": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/roadroller": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/roadroller/-/roadroller-2.1.0.tgz",
+ "integrity": "sha512-4YfrQgMWC9w5SGvA6xfu9JGktOqEu2pwf4UrTu8ggf9wEv+hI7aTPMBRKWsTIvjhP4txX6eq954j3MONfOKAKQ==",
+ "dev": true,
+ "dependencies": {
+ "esm": "^3.2.25"
+ },
+ "bin": {
+ "roadroller": "cli.mjs"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/stylehacks": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz",
+ "integrity": "sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "postcss-selector-parser": "^6.0.4"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/svgo": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz",
+ "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==",
+ "dev": true,
+ "dependencies": {
+ "@trysound/sax": "0.2.0",
+ "commander": "^7.2.0",
+ "css-select": "^5.1.0",
+ "css-tree": "^2.2.1",
+ "csso": "^5.0.5",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "svgo": "bin/svgo"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/svgo"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.19.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz",
+ "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "node_modules/timsort": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
+ "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==",
+ "dev": true
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+ "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ }
+ }
+}
diff --git a/node_modules/@babel/code-frame/LICENSE b/node_modules/@babel/code-frame/LICENSE
new file mode 100644
index 00000000..f31575ec
--- /dev/null
+++ b/node_modules/@babel/code-frame/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/@babel/code-frame/README.md b/node_modules/@babel/code-frame/README.md
new file mode 100644
index 00000000..08cacb04
--- /dev/null
+++ b/node_modules/@babel/code-frame/README.md
@@ -0,0 +1,19 @@
+# @babel/code-frame
+
+> Generate errors that contain a code frame that point to source locations.
+
+See our website [@babel/code-frame](https://babeljs.io/docs/en/babel-code-frame) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/code-frame
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/code-frame --dev
+```
diff --git a/node_modules/@babel/code-frame/lib/index.js b/node_modules/@babel/code-frame/lib/index.js
new file mode 100644
index 00000000..cf70a04e
--- /dev/null
+++ b/node_modules/@babel/code-frame/lib/index.js
@@ -0,0 +1,142 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.codeFrameColumns = codeFrameColumns;
+exports.default = _default;
+var _highlight = require("@babel/highlight");
+let deprecationWarningShown = false;
+function getDefs(chalk) {
+ return {
+ gutter: chalk.grey,
+ marker: chalk.red.bold,
+ message: chalk.red.bold
+ };
+}
+const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+function getMarkerLines(loc, source, opts) {
+ const startLoc = Object.assign({
+ column: 0,
+ line: -1
+ }, loc.start);
+ const endLoc = Object.assign({}, startLoc, loc.end);
+ const {
+ linesAbove = 2,
+ linesBelow = 3
+ } = opts || {};
+ const startLine = startLoc.line;
+ const startColumn = startLoc.column;
+ const endLine = endLoc.line;
+ const endColumn = endLoc.column;
+ let start = Math.max(startLine - (linesAbove + 1), 0);
+ let end = Math.min(source.length, endLine + linesBelow);
+ if (startLine === -1) {
+ start = 0;
+ }
+ if (endLine === -1) {
+ end = source.length;
+ }
+ const lineDiff = endLine - startLine;
+ const markerLines = {};
+ if (lineDiff) {
+ for (let i = 0; i <= lineDiff; i++) {
+ const lineNumber = i + startLine;
+ if (!startColumn) {
+ markerLines[lineNumber] = true;
+ } else if (i === 0) {
+ const sourceLength = source[lineNumber - 1].length;
+ markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
+ } else if (i === lineDiff) {
+ markerLines[lineNumber] = [0, endColumn];
+ } else {
+ const sourceLength = source[lineNumber - i].length;
+ markerLines[lineNumber] = [0, sourceLength];
+ }
+ }
+ } else {
+ if (startColumn === endColumn) {
+ if (startColumn) {
+ markerLines[startLine] = [startColumn, 0];
+ } else {
+ markerLines[startLine] = true;
+ }
+ } else {
+ markerLines[startLine] = [startColumn, endColumn - startColumn];
+ }
+ }
+ return {
+ start,
+ end,
+ markerLines
+ };
+}
+function codeFrameColumns(rawLines, loc, opts = {}) {
+ const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts);
+ const chalk = (0, _highlight.getChalk)(opts);
+ const defs = getDefs(chalk);
+ const maybeHighlight = (chalkFn, string) => {
+ return highlighted ? chalkFn(string) : string;
+ };
+ const lines = rawLines.split(NEWLINE);
+ const {
+ start,
+ end,
+ markerLines
+ } = getMarkerLines(loc, lines, opts);
+ const hasColumns = loc.start && typeof loc.start.column === "number";
+ const numberMaxWidth = String(end).length;
+ const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines;
+ let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
+ const number = start + 1 + index;
+ const paddedNumber = ` ${number}`.slice(-numberMaxWidth);
+ const gutter = ` ${paddedNumber} |`;
+ const hasMarker = markerLines[number];
+ const lastMarkerLine = !markerLines[number + 1];
+ if (hasMarker) {
+ let markerLine = "";
+ if (Array.isArray(hasMarker)) {
+ const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
+ const numberOfMarkers = hasMarker[1] || 1;
+ markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join("");
+ if (lastMarkerLine && opts.message) {
+ markerLine += " " + maybeHighlight(defs.message, opts.message);
+ }
+ }
+ return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join("");
+ } else {
+ return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`;
+ }
+ }).join("\n");
+ if (opts.message && !hasColumns) {
+ frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
+ }
+ if (highlighted) {
+ return chalk.reset(frame);
+ } else {
+ return frame;
+ }
+}
+function _default(rawLines, lineNumber, colNumber, opts = {}) {
+ if (!deprecationWarningShown) {
+ deprecationWarningShown = true;
+ const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
+ if (process.emitWarning) {
+ process.emitWarning(message, "DeprecationWarning");
+ } else {
+ const deprecationError = new Error(message);
+ deprecationError.name = "DeprecationWarning";
+ console.warn(new Error(message));
+ }
+ }
+ colNumber = Math.max(colNumber, 0);
+ const location = {
+ start: {
+ column: colNumber,
+ line: lineNumber
+ }
+ };
+ return codeFrameColumns(rawLines, location, opts);
+}
+
+//# sourceMappingURL=index.js.map
diff --git a/node_modules/@babel/code-frame/lib/index.js.map b/node_modules/@babel/code-frame/lib/index.js.map
new file mode 100644
index 00000000..68d399e1
--- /dev/null
+++ b/node_modules/@babel/code-frame/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_highlight","require","deprecationWarningShown","getDefs","chalk","gutter","grey","marker","red","bold","message","NEWLINE","getMarkerLines","loc","source","opts","startLoc","Object","assign","column","line","start","endLoc","end","linesAbove","linesBelow","startLine","startColumn","endLine","endColumn","Math","max","min","length","lineDiff","markerLines","i","lineNumber","sourceLength","codeFrameColumns","rawLines","highlighted","highlightCode","forceColor","shouldHighlight","getChalk","defs","maybeHighlight","chalkFn","string","lines","split","hasColumns","numberMaxWidth","String","highlightedLines","highlight","frame","slice","map","index","number","paddedNumber","hasMarker","lastMarkerLine","markerLine","Array","isArray","markerSpacing","replace","numberOfMarkers","repeat","join","reset","_default","colNumber","process","emitWarning","deprecationError","Error","name","console","warn","location"],"sources":["../src/index.ts"],"sourcesContent":["import highlight, { shouldHighlight, getChalk } from \"@babel/highlight\";\n\ntype Chalk = ReturnType;\n\nlet deprecationWarningShown = false;\n\ntype Location = {\n column: number;\n line: number;\n};\n\ntype NodeLocation = {\n end?: Location;\n start: Location;\n};\n\nexport interface Options {\n /** Syntax highlight the code as JavaScript for terminals. default: false */\n highlightCode?: boolean;\n /** The number of lines to show above the error. default: 2 */\n linesAbove?: number;\n /** The number of lines to show below the error. default: 3 */\n linesBelow?: number;\n /**\n * Forcibly syntax highlight the code as JavaScript (for non-terminals);\n * overrides highlightCode.\n * default: false\n */\n forceColor?: boolean;\n /**\n * Pass in a string to be displayed inline (if possible) next to the\n * highlighted location in the code. If it can't be positioned inline,\n * it will be placed above the code frame.\n * default: nothing\n */\n message?: string;\n}\n\n/**\n * Chalk styles for code frame token types.\n */\nfunction getDefs(chalk: Chalk) {\n return {\n gutter: chalk.grey,\n marker: chalk.red.bold,\n message: chalk.red.bold,\n };\n}\n\n/**\n * RegExp to test for newlines in terminal.\n */\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * Extract what lines should be marked and highlighted.\n */\n\ntype MarkerLines = Record;\n\nfunction getMarkerLines(\n loc: NodeLocation,\n source: Array,\n opts: Options,\n): {\n start: number;\n end: number;\n markerLines: MarkerLines;\n} {\n const startLoc: Location = {\n column: 0,\n line: -1,\n ...loc.start,\n };\n const endLoc: Location = {\n ...startLoc,\n ...loc.end,\n };\n const { linesAbove = 2, linesBelow = 3 } = opts || {};\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines: MarkerLines = {};\n\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n\n return { start, end, markerLines };\n}\n\nexport function codeFrameColumns(\n rawLines: string,\n loc: NodeLocation,\n opts: Options = {},\n): string {\n const highlighted =\n (opts.highlightCode || opts.forceColor) && shouldHighlight(opts);\n const chalk = getChalk(opts);\n const defs = getDefs(chalk);\n const maybeHighlight = (chalkFn: Chalk, string: string) => {\n return highlighted ? chalkFn(string) : string;\n };\n const lines = rawLines.split(NEWLINE);\n const { start, end, markerLines } = getMarkerLines(loc, lines, opts);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n const numberMaxWidth = String(end).length;\n\n const highlightedLines = highlighted ? highlight(rawLines, opts) : rawLines;\n\n let frame = highlightedLines\n .split(NEWLINE, end)\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line\n .slice(0, Math.max(hasMarker[0] - 1, 0))\n .replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n\n markerLine = [\n \"\\n \",\n maybeHighlight(defs.gutter, gutter.replace(/\\d/g, \" \")),\n \" \",\n markerSpacing,\n maybeHighlight(defs.marker, \"^\").repeat(numberOfMarkers),\n ].join(\"\");\n\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + maybeHighlight(defs.message, opts.message);\n }\n }\n return [\n maybeHighlight(defs.marker, \">\"),\n maybeHighlight(defs.gutter, gutter),\n line.length > 0 ? ` ${line}` : \"\",\n markerLine,\n ].join(\"\");\n } else {\n return ` ${maybeHighlight(defs.gutter, gutter)}${\n line.length > 0 ? ` ${line}` : \"\"\n }`;\n }\n })\n .join(\"\\n\");\n\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n\n if (highlighted) {\n return chalk.reset(frame);\n } else {\n return frame;\n }\n}\n\n/**\n * Create a code frame, adding line numbers, code highlighting, and pointing to a given position.\n */\n\nexport default function (\n rawLines: string,\n lineNumber: number,\n colNumber?: number | null,\n opts: Options = {},\n): string {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n\n const message =\n \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n\n if (process.emitWarning) {\n // A string is directly supplied to emitWarning, because when supplying an\n // Error object node throws in the tests because of different contexts\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n }\n\n colNumber = Math.max(colNumber, 0);\n\n const location: NodeLocation = {\n start: { column: colNumber, line: lineNumber },\n };\n\n return codeFrameColumns(rawLines, location, opts);\n}\n"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@babel/code-frame/package.json b/node_modules/@babel/code-frame/package.json
new file mode 100644
index 00000000..34b8f5ad
--- /dev/null
+++ b/node_modules/@babel/code-frame/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "@babel/code-frame",
+ "version": "7.21.4",
+ "description": "Generate errors that contain a code frame that point to source locations.",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-code-frame",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-code-frame"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/highlight": "^7.18.6"
+ },
+ "devDependencies": {
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "type": "commonjs"
+}
\ No newline at end of file
diff --git a/node_modules/@babel/helper-validator-identifier/LICENSE b/node_modules/@babel/helper-validator-identifier/LICENSE
new file mode 100644
index 00000000..f31575ec
--- /dev/null
+++ b/node_modules/@babel/helper-validator-identifier/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/@babel/helper-validator-identifier/README.md b/node_modules/@babel/helper-validator-identifier/README.md
new file mode 100644
index 00000000..4f704c42
--- /dev/null
+++ b/node_modules/@babel/helper-validator-identifier/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-validator-identifier
+
+> Validate identifier/keywords name
+
+See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/en/babel-helper-validator-identifier) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-validator-identifier
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-validator-identifier
+```
diff --git a/node_modules/@babel/helper-validator-identifier/lib/identifier.js b/node_modules/@babel/helper-validator-identifier/lib/identifier.js
new file mode 100644
index 00000000..3a9e335e
--- /dev/null
+++ b/node_modules/@babel/helper-validator-identifier/lib/identifier.js
@@ -0,0 +1,86 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isIdentifierChar = isIdentifierChar;
+exports.isIdentifierName = isIdentifierName;
+exports.isIdentifierStart = isIdentifierStart;
+let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
+let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
+const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
+const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
+nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
+const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938, 6, 4191];
+const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
+
+function isInAstralSet(code, set) {
+ let pos = 0x10000;
+
+ for (let i = 0, length = set.length; i < length; i += 2) {
+ pos += set[i];
+ if (pos > code) return false;
+ pos += set[i + 1];
+ if (pos >= code) return true;
+ }
+
+ return false;
+}
+
+function isIdentifierStart(code) {
+ if (code < 65) return code === 36;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
+ }
+
+ return isInAstralSet(code, astralIdentifierStartCodes);
+}
+
+function isIdentifierChar(code) {
+ if (code < 48) return code === 36;
+ if (code < 58) return true;
+ if (code < 65) return false;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
+ }
+
+ return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
+}
+
+function isIdentifierName(name) {
+ let isFirst = true;
+
+ for (let i = 0; i < name.length; i++) {
+ let cp = name.charCodeAt(i);
+
+ if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
+ const trail = name.charCodeAt(++i);
+
+ if ((trail & 0xfc00) === 0xdc00) {
+ cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
+ }
+ }
+
+ if (isFirst) {
+ isFirst = false;
+
+ if (!isIdentifierStart(cp)) {
+ return false;
+ }
+ } else if (!isIdentifierChar(cp)) {
+ return false;
+ }
+ }
+
+ return !isFirst;
+}
+
+//# sourceMappingURL=identifier.js.map
diff --git a/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map b/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map
new file mode 100644
index 00000000..45c94ff3
--- /dev/null
+++ b/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","RegExp","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","code","set","pos","i","length","isIdentifierStart","test","String","fromCharCode","isIdentifierChar","isIdentifierName","name","isFirst","cp","charCodeAt","trail"],"sources":["../src/identifier.ts"],"sourcesContent":["import * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.js`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0898-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.js`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,4026,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,757,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,3104,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,81,2,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,9,5351,0,7,14,13835,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,983,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@babel/helper-validator-identifier/lib/index.js b/node_modules/@babel/helper-validator-identifier/lib/index.js
new file mode 100644
index 00000000..076eafd0
--- /dev/null
+++ b/node_modules/@babel/helper-validator-identifier/lib/index.js
@@ -0,0 +1,59 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "isIdentifierChar", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierChar;
+ }
+});
+Object.defineProperty(exports, "isIdentifierName", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierName;
+ }
+});
+Object.defineProperty(exports, "isIdentifierStart", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierStart;
+ }
+});
+Object.defineProperty(exports, "isKeyword", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isKeyword;
+ }
+});
+Object.defineProperty(exports, "isReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindOnlyReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictReservedWord;
+ }
+});
+
+var _identifier = require("./identifier");
+
+var _keyword = require("./keyword");
+
+//# sourceMappingURL=index.js.map
diff --git a/node_modules/@babel/helper-validator-identifier/lib/index.js.map b/node_modules/@babel/helper-validator-identifier/lib/index.js.map
new file mode 100644
index 00000000..13266b9e
--- /dev/null
+++ b/node_modules/@babel/helper-validator-identifier/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":[],"sources":["../src/index.ts"],"sourcesContent":["export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAKA"}
\ No newline at end of file
diff --git a/node_modules/@babel/helper-validator-identifier/lib/keyword.js b/node_modules/@babel/helper-validator-identifier/lib/keyword.js
new file mode 100644
index 00000000..ff6277b7
--- /dev/null
+++ b/node_modules/@babel/helper-validator-identifier/lib/keyword.js
@@ -0,0 +1,40 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isKeyword = isKeyword;
+exports.isReservedWord = isReservedWord;
+exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
+exports.isStrictBindReservedWord = isStrictBindReservedWord;
+exports.isStrictReservedWord = isStrictReservedWord;
+const reservedWords = {
+ keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
+ strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
+ strictBind: ["eval", "arguments"]
+};
+const keywords = new Set(reservedWords.keyword);
+const reservedWordsStrictSet = new Set(reservedWords.strict);
+const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
+
+function isReservedWord(word, inModule) {
+ return inModule && word === "await" || word === "enum";
+}
+
+function isStrictReservedWord(word, inModule) {
+ return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
+}
+
+function isStrictBindOnlyReservedWord(word) {
+ return reservedWordsStrictBindSet.has(word);
+}
+
+function isStrictBindReservedWord(word, inModule) {
+ return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
+}
+
+function isKeyword(word) {
+ return keywords.has(word);
+}
+
+//# sourceMappingURL=keyword.js.map
diff --git a/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map b/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map
new file mode 100644
index 00000000..2de8c3e4
--- /dev/null
+++ b/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword"],"sources":["../src/keyword.ts"],"sourcesContent":["const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n"],"mappings":";;;;;;;;;;AAAA,MAAMA,aAAa,GAAG;EACpBC,OAAO,EAAE,CACP,OADO,EAEP,MAFO,EAGP,OAHO,EAIP,UAJO,EAKP,UALO,EAMP,SANO,EAOP,IAPO,EAQP,MARO,EASP,SATO,EAUP,KAVO,EAWP,UAXO,EAYP,IAZO,EAaP,QAbO,EAcP,QAdO,EAeP,OAfO,EAgBP,KAhBO,EAiBP,KAjBO,EAkBP,OAlBO,EAmBP,OAnBO,EAoBP,MApBO,EAqBP,KArBO,EAsBP,MAtBO,EAuBP,OAvBO,EAwBP,OAxBO,EAyBP,SAzBO,EA0BP,QA1BO,EA2BP,QA3BO,EA4BP,MA5BO,EA6BP,MA7BO,EA8BP,OA9BO,EA+BP,IA/BO,EAgCP,YAhCO,EAiCP,QAjCO,EAkCP,MAlCO,EAmCP,QAnCO,CADW;EAsCpBC,MAAM,EAAE,CACN,YADM,EAEN,WAFM,EAGN,KAHM,EAIN,SAJM,EAKN,SALM,EAMN,WANM,EAON,QAPM,EAQN,QARM,EASN,OATM,CAtCY;EAiDpBC,UAAU,EAAE,CAAC,MAAD,EAAS,WAAT;AAjDQ,CAAtB;AAmDA,MAAMC,QAAQ,GAAG,IAAIC,GAAJ,CAAQL,aAAa,CAACC,OAAtB,CAAjB;AACA,MAAMK,sBAAsB,GAAG,IAAID,GAAJ,CAAQL,aAAa,CAACE,MAAtB,CAA/B;AACA,MAAMK,0BAA0B,GAAG,IAAIF,GAAJ,CAAQL,aAAa,CAACG,UAAtB,CAAnC;;AAKO,SAASK,cAAT,CAAwBC,IAAxB,EAAsCC,QAAtC,EAAkE;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAtB,IAAkCA,IAAI,KAAK,MAAlD;AACD;;AAOM,SAASE,oBAAT,CAA8BF,IAA9B,EAA4CC,QAA5C,EAAwE;EAC7E,OAAOF,cAAc,CAACC,IAAD,EAAOC,QAAP,CAAd,IAAkCJ,sBAAsB,CAACM,GAAvB,CAA2BH,IAA3B,CAAzC;AACD;;AAMM,SAASI,4BAAT,CAAsCJ,IAAtC,EAA6D;EAClE,OAAOF,0BAA0B,CAACK,GAA3B,CAA+BH,IAA/B,CAAP;AACD;;AAOM,SAASK,wBAAT,CACLL,IADK,EAELC,QAFK,EAGI;EACT,OACEC,oBAAoB,CAACF,IAAD,EAAOC,QAAP,CAApB,IAAwCG,4BAA4B,CAACJ,IAAD,CADtE;AAGD;;AAEM,SAASM,SAAT,CAAmBN,IAAnB,EAA0C;EAC/C,OAAOL,QAAQ,CAACQ,GAAT,CAAaH,IAAb,CAAP;AACD"}
\ No newline at end of file
diff --git a/node_modules/@babel/helper-validator-identifier/package.json b/node_modules/@babel/helper-validator-identifier/package.json
new file mode 100644
index 00000000..6e7de1eb
--- /dev/null
+++ b/node_modules/@babel/helper-validator-identifier/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "@babel/helper-validator-identifier",
+ "version": "7.19.1",
+ "description": "Validate identifier/keywords name",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-validator-identifier"
+ },
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "exports": {
+ ".": "./lib/index.js",
+ "./package.json": "./package.json"
+ },
+ "devDependencies": {
+ "@unicode/unicode-15.0.0": "^1.3.1",
+ "charcodes": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)",
+ "type": "commonjs"
+}
\ No newline at end of file
diff --git a/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js b/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js
new file mode 100644
index 00000000..aca8710b
--- /dev/null
+++ b/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js
@@ -0,0 +1,75 @@
+"use strict";
+
+// Always use the latest available version of Unicode!
+// https://tc39.github.io/ecma262/#sec-conformance
+const version = "15.0.0";
+
+const start = require("@unicode/unicode-" +
+ version +
+ "/Binary_Property/ID_Start/code-points.js").filter(function (ch) {
+ return ch > 0x7f;
+});
+let last = -1;
+const cont = [0x200c, 0x200d].concat(
+ require("@unicode/unicode-" +
+ version +
+ "/Binary_Property/ID_Continue/code-points.js").filter(function (ch) {
+ return ch > 0x7f && search(start, ch, last + 1) == -1;
+ })
+);
+
+function search(arr, ch, starting) {
+ for (let i = starting; arr[i] <= ch && i < arr.length; last = i++) {
+ if (arr[i] === ch) return i;
+ }
+ return -1;
+}
+
+function pad(str, width) {
+ while (str.length < width) str = "0" + str;
+ return str;
+}
+
+function esc(code) {
+ const hex = code.toString(16);
+ if (hex.length <= 2) return "\\x" + pad(hex, 2);
+ else return "\\u" + pad(hex, 4);
+}
+
+function generate(chars) {
+ const astral = [];
+ let re = "";
+ for (let i = 0, at = 0x10000; i < chars.length; i++) {
+ const from = chars[i];
+ let to = from;
+ while (i < chars.length - 1 && chars[i + 1] == to + 1) {
+ i++;
+ to++;
+ }
+ if (to <= 0xffff) {
+ if (from == to) re += esc(from);
+ else if (from + 1 == to) re += esc(from) + esc(to);
+ else re += esc(from) + "-" + esc(to);
+ } else {
+ astral.push(from - at, to - from);
+ at = to;
+ }
+ }
+ return { nonASCII: re, astral: astral };
+}
+
+const startData = generate(start);
+const contData = generate(cont);
+
+console.log("/* prettier-ignore */");
+console.log('let nonASCIIidentifierStartChars = "' + startData.nonASCII + '";');
+console.log("/* prettier-ignore */");
+console.log('let nonASCIIidentifierChars = "' + contData.nonASCII + '";');
+console.log("/* prettier-ignore */");
+console.log(
+ "const astralIdentifierStartCodes = " + JSON.stringify(startData.astral) + ";"
+);
+console.log("/* prettier-ignore */");
+console.log(
+ "const astralIdentifierCodes = " + JSON.stringify(contData.astral) + ";"
+);
diff --git a/node_modules/@babel/highlight/LICENSE b/node_modules/@babel/highlight/LICENSE
new file mode 100644
index 00000000..f31575ec
--- /dev/null
+++ b/node_modules/@babel/highlight/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/@babel/highlight/README.md b/node_modules/@babel/highlight/README.md
new file mode 100644
index 00000000..f8887ad2
--- /dev/null
+++ b/node_modules/@babel/highlight/README.md
@@ -0,0 +1,19 @@
+# @babel/highlight
+
+> Syntax highlight JavaScript strings for output in terminals.
+
+See our website [@babel/highlight](https://babeljs.io/docs/en/babel-highlight) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/highlight
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/highlight --dev
+```
diff --git a/node_modules/@babel/highlight/lib/index.js b/node_modules/@babel/highlight/lib/index.js
new file mode 100644
index 00000000..856dfd9f
--- /dev/null
+++ b/node_modules/@babel/highlight/lib/index.js
@@ -0,0 +1,116 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = highlight;
+exports.getChalk = getChalk;
+exports.shouldHighlight = shouldHighlight;
+
+var _jsTokens = require("js-tokens");
+
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+
+var _chalk = require("chalk");
+
+const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]);
+
+function getDefs(chalk) {
+ return {
+ keyword: chalk.cyan,
+ capitalized: chalk.yellow,
+ jsxIdentifier: chalk.yellow,
+ punctuator: chalk.yellow,
+ number: chalk.magenta,
+ string: chalk.green,
+ regex: chalk.magenta,
+ comment: chalk.grey,
+ invalid: chalk.white.bgRed.bold
+ };
+}
+
+const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+const BRACKET = /^[()[\]{}]$/;
+let tokenize;
+{
+ const JSX_TAG = /^[a-z][\w-]*$/i;
+
+ const getTokenType = function (token, offset, text) {
+ if (token.type === "name") {
+ if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) {
+ return "keyword";
+ }
+
+ if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) == "")) {
+ return "jsxIdentifier";
+ }
+
+ if (token.value[0] !== token.value[0].toLowerCase()) {
+ return "capitalized";
+ }
+ }
+
+ if (token.type === "punctuator" && BRACKET.test(token.value)) {
+ return "bracket";
+ }
+
+ if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
+ return "punctuator";
+ }
+
+ return token.type;
+ };
+
+ tokenize = function* (text) {
+ let match;
+
+ while (match = _jsTokens.default.exec(text)) {
+ const token = _jsTokens.matchToToken(match);
+
+ yield {
+ type: getTokenType(token, match.index, text),
+ value: token.value
+ };
+ }
+ };
+}
+
+function highlightTokens(defs, text) {
+ let highlighted = "";
+
+ for (const {
+ type,
+ value
+ } of tokenize(text)) {
+ const colorize = defs[type];
+
+ if (colorize) {
+ highlighted += value.split(NEWLINE).map(str => colorize(str)).join("\n");
+ } else {
+ highlighted += value;
+ }
+ }
+
+ return highlighted;
+}
+
+function shouldHighlight(options) {
+ return !!_chalk.supportsColor || options.forceColor;
+}
+
+function getChalk(options) {
+ return options.forceColor ? new _chalk.constructor({
+ enabled: true,
+ level: 1
+ }) : _chalk;
+}
+
+function highlight(code, options = {}) {
+ if (code !== "" && shouldHighlight(options)) {
+ const chalk = getChalk(options);
+ const defs = getDefs(chalk);
+ return highlightTokens(defs, code);
+ } else {
+ return code;
+ }
+}
\ No newline at end of file
diff --git a/node_modules/@babel/highlight/package.json b/node_modules/@babel/highlight/package.json
new file mode 100644
index 00000000..65c97d91
--- /dev/null
+++ b/node_modules/@babel/highlight/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@babel/highlight",
+ "version": "7.18.6",
+ "description": "Syntax highlight JavaScript strings for output in terminals.",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-highlight",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-highlight"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "devDependencies": {
+ "@types/chalk": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "type": "commonjs"
+}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/gen-mapping/LICENSE b/node_modules/@jridgewell/gen-mapping/LICENSE
new file mode 100644
index 00000000..352f0715
--- /dev/null
+++ b/node_modules/@jridgewell/gen-mapping/LICENSE
@@ -0,0 +1,19 @@
+Copyright 2022 Justin Ridgewell
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@jridgewell/gen-mapping/README.md b/node_modules/@jridgewell/gen-mapping/README.md
new file mode 100644
index 00000000..4066cdbb
--- /dev/null
+++ b/node_modules/@jridgewell/gen-mapping/README.md
@@ -0,0 +1,227 @@
+# @jridgewell/gen-mapping
+
+> Generate source maps
+
+`gen-mapping` allows you to generate a source map during transpilation or minification.
+With a source map, you're able to trace the original location in the source file, either in Chrome's
+DevTools or using a library like [`@jridgewell/trace-mapping`][trace-mapping].
+
+You may already be familiar with the [`source-map`][source-map] package's `SourceMapGenerator`. This
+provides the same `addMapping` and `setSourceContent` API.
+
+## Installation
+
+```sh
+npm install @jridgewell/gen-mapping
+```
+
+## Usage
+
+```typescript
+import { GenMapping, addMapping, setSourceContent, toEncodedMap, toDecodedMap } from '@jridgewell/gen-mapping';
+
+const map = new GenMapping({
+ file: 'output.js',
+ sourceRoot: 'https://example.com/',
+});
+
+setSourceContent(map, 'input.js', `function foo() {}`);
+
+addMapping(map, {
+ // Lines start at line 1, columns at column 0.
+ generated: { line: 1, column: 0 },
+ source: 'input.js',
+ original: { line: 1, column: 0 },
+});
+
+addMapping(map, {
+ generated: { line: 1, column: 9 },
+ source: 'input.js',
+ original: { line: 1, column: 9 },
+ name: 'foo',
+});
+
+assert.deepEqual(toDecodedMap(map), {
+ version: 3,
+ file: 'output.js',
+ names: ['foo'],
+ sourceRoot: 'https://example.com/',
+ sources: ['input.js'],
+ sourcesContent: ['function foo() {}'],
+ mappings: [
+ [ [0, 0, 0, 0], [9, 0, 0, 9, 0] ]
+ ],
+});
+
+assert.deepEqual(toEncodedMap(map), {
+ version: 3,
+ file: 'output.js',
+ names: ['foo'],
+ sourceRoot: 'https://example.com/',
+ sources: ['input.js'],
+ sourcesContent: ['function foo() {}'],
+ mappings: 'AAAA,SAASA',
+});
+```
+
+### Smaller Sourcemaps
+
+Not everything needs to be added to a sourcemap, and needless markings can cause signficantly
+larger file sizes. `gen-mapping` exposes `maybeAddSegment`/`maybeAddMapping` APIs that will
+intelligently determine if this marking adds useful information. If not, the marking will be
+skipped.
+
+```typescript
+import { maybeAddMapping } from '@jridgewell/gen-mapping';
+
+const map = new GenMapping();
+
+// Adding a sourceless marking at the beginning of a line isn't useful.
+maybeAddMapping(map, {
+ generated: { line: 1, column: 0 },
+});
+
+// Adding a new source marking is useful.
+maybeAddMapping(map, {
+ generated: { line: 1, column: 0 },
+ source: 'input.js',
+ original: { line: 1, column: 0 },
+});
+
+// But adding another marking pointing to the exact same original location isn't, even if the
+// generated column changed.
+maybeAddMapping(map, {
+ generated: { line: 1, column: 9 },
+ source: 'input.js',
+ original: { line: 1, column: 0 },
+});
+
+assert.deepEqual(toEncodedMap(map), {
+ version: 3,
+ names: [],
+ sources: ['input.js'],
+ sourcesContent: [null],
+ mappings: 'AAAA',
+});
+```
+
+## Benchmarks
+
+```
+node v18.0.0
+
+amp.js.map
+Memory Usage:
+gen-mapping: addSegment 5852872 bytes
+gen-mapping: addMapping 7716042 bytes
+source-map-js 6143250 bytes
+source-map-0.6.1 6124102 bytes
+source-map-0.8.0 6121173 bytes
+Smallest memory usage is gen-mapping: addSegment
+
+Adding speed:
+gen-mapping: addSegment x 441 ops/sec ±2.07% (90 runs sampled)
+gen-mapping: addMapping x 350 ops/sec ±2.40% (86 runs sampled)
+source-map-js: addMapping x 169 ops/sec ±2.42% (80 runs sampled)
+source-map-0.6.1: addMapping x 167 ops/sec ±2.56% (80 runs sampled)
+source-map-0.8.0: addMapping x 168 ops/sec ±2.52% (80 runs sampled)
+Fastest is gen-mapping: addSegment
+
+Generate speed:
+gen-mapping: decoded output x 150,824,370 ops/sec ±0.07% (102 runs sampled)
+gen-mapping: encoded output x 663 ops/sec ±0.22% (98 runs sampled)
+source-map-js: encoded output x 197 ops/sec ±0.45% (84 runs sampled)
+source-map-0.6.1: encoded output x 198 ops/sec ±0.33% (85 runs sampled)
+source-map-0.8.0: encoded output x 197 ops/sec ±0.06% (93 runs sampled)
+Fastest is gen-mapping: decoded output
+
+
+***
+
+
+babel.min.js.map
+Memory Usage:
+gen-mapping: addSegment 37578063 bytes
+gen-mapping: addMapping 37212897 bytes
+source-map-js 47638527 bytes
+source-map-0.6.1 47690503 bytes
+source-map-0.8.0 47470188 bytes
+Smallest memory usage is gen-mapping: addMapping
+
+Adding speed:
+gen-mapping: addSegment x 31.05 ops/sec ±8.31% (43 runs sampled)
+gen-mapping: addMapping x 29.83 ops/sec ±7.36% (51 runs sampled)
+source-map-js: addMapping x 20.73 ops/sec ±6.22% (38 runs sampled)
+source-map-0.6.1: addMapping x 20.03 ops/sec ±10.51% (38 runs sampled)
+source-map-0.8.0: addMapping x 19.30 ops/sec ±8.27% (37 runs sampled)
+Fastest is gen-mapping: addSegment
+
+Generate speed:
+gen-mapping: decoded output x 381,379,234 ops/sec ±0.29% (96 runs sampled)
+gen-mapping: encoded output x 95.15 ops/sec ±2.98% (72 runs sampled)
+source-map-js: encoded output x 15.20 ops/sec ±7.41% (33 runs sampled)
+source-map-0.6.1: encoded output x 16.36 ops/sec ±10.46% (31 runs sampled)
+source-map-0.8.0: encoded output x 16.06 ops/sec ±6.45% (31 runs sampled)
+Fastest is gen-mapping: decoded output
+
+
+***
+
+
+preact.js.map
+Memory Usage:
+gen-mapping: addSegment 416247 bytes
+gen-mapping: addMapping 419824 bytes
+source-map-js 1024619 bytes
+source-map-0.6.1 1146004 bytes
+source-map-0.8.0 1113250 bytes
+Smallest memory usage is gen-mapping: addSegment
+
+Adding speed:
+gen-mapping: addSegment x 13,755 ops/sec ±0.15% (98 runs sampled)
+gen-mapping: addMapping x 13,013 ops/sec ±0.11% (101 runs sampled)
+source-map-js: addMapping x 4,564 ops/sec ±0.21% (98 runs sampled)
+source-map-0.6.1: addMapping x 4,562 ops/sec ±0.11% (99 runs sampled)
+source-map-0.8.0: addMapping x 4,593 ops/sec ±0.11% (100 runs sampled)
+Fastest is gen-mapping: addSegment
+
+Generate speed:
+gen-mapping: decoded output x 379,864,020 ops/sec ±0.23% (93 runs sampled)
+gen-mapping: encoded output x 14,368 ops/sec ±4.07% (82 runs sampled)
+source-map-js: encoded output x 5,261 ops/sec ±0.21% (99 runs sampled)
+source-map-0.6.1: encoded output x 5,124 ops/sec ±0.58% (99 runs sampled)
+source-map-0.8.0: encoded output x 5,434 ops/sec ±0.33% (96 runs sampled)
+Fastest is gen-mapping: decoded output
+
+
+***
+
+
+react.js.map
+Memory Usage:
+gen-mapping: addSegment 975096 bytes
+gen-mapping: addMapping 1102981 bytes
+source-map-js 2918836 bytes
+source-map-0.6.1 2885435 bytes
+source-map-0.8.0 2874336 bytes
+Smallest memory usage is gen-mapping: addSegment
+
+Adding speed:
+gen-mapping: addSegment x 4,772 ops/sec ±0.15% (100 runs sampled)
+gen-mapping: addMapping x 4,456 ops/sec ±0.13% (97 runs sampled)
+source-map-js: addMapping x 1,618 ops/sec ±0.24% (97 runs sampled)
+source-map-0.6.1: addMapping x 1,622 ops/sec ±0.12% (99 runs sampled)
+source-map-0.8.0: addMapping x 1,631 ops/sec ±0.12% (100 runs sampled)
+Fastest is gen-mapping: addSegment
+
+Generate speed:
+gen-mapping: decoded output x 379,107,695 ops/sec ±0.07% (99 runs sampled)
+gen-mapping: encoded output x 5,421 ops/sec ±1.60% (89 runs sampled)
+source-map-js: encoded output x 2,113 ops/sec ±1.81% (98 runs sampled)
+source-map-0.6.1: encoded output x 2,126 ops/sec ±0.10% (100 runs sampled)
+source-map-0.8.0: encoded output x 2,176 ops/sec ±0.39% (98 runs sampled)
+Fastest is gen-mapping: decoded output
+```
+
+[source-map]: https://www.npmjs.com/package/source-map
+[trace-mapping]: https://github.com/jridgewell/trace-mapping
diff --git a/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs
new file mode 100644
index 00000000..5aeb5ccc
--- /dev/null
+++ b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs
@@ -0,0 +1,230 @@
+import { SetArray, put } from '@jridgewell/set-array';
+import { encode } from '@jridgewell/sourcemap-codec';
+import { TraceMap, decodedMappings } from '@jridgewell/trace-mapping';
+
+const COLUMN = 0;
+const SOURCES_INDEX = 1;
+const SOURCE_LINE = 2;
+const SOURCE_COLUMN = 3;
+const NAMES_INDEX = 4;
+
+const NO_NAME = -1;
+/**
+ * A low-level API to associate a generated position with an original source position. Line and
+ * column here are 0-based, unlike `addMapping`.
+ */
+let addSegment;
+/**
+ * A high-level API to associate a generated position with an original source position. Line is
+ * 1-based, but column is 0-based, due to legacy behavior in `source-map` library.
+ */
+let addMapping;
+/**
+ * Same as `addSegment`, but will only add the segment if it generates useful information in the
+ * resulting map. This only works correctly if segments are added **in order**, meaning you should
+ * not add a segment with a lower generated line/column than one that came before.
+ */
+let maybeAddSegment;
+/**
+ * Same as `addMapping`, but will only add the mapping if it generates useful information in the
+ * resulting map. This only works correctly if mappings are added **in order**, meaning you should
+ * not add a mapping with a lower generated line/column than one that came before.
+ */
+let maybeAddMapping;
+/**
+ * Adds/removes the content of the source file to the source map.
+ */
+let setSourceContent;
+/**
+ * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+let toDecodedMap;
+/**
+ * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+let toEncodedMap;
+/**
+ * Constructs a new GenMapping, using the already present mappings of the input.
+ */
+let fromMap;
+/**
+ * Returns an array of high-level mapping objects for every recorded segment, which could then be
+ * passed to the `source-map` library.
+ */
+let allMappings;
+// This split declaration is only so that terser can elminiate the static initialization block.
+let addSegmentInternal;
+/**
+ * Provides the state to generate a sourcemap.
+ */
+class GenMapping {
+ constructor({ file, sourceRoot } = {}) {
+ this._names = new SetArray();
+ this._sources = new SetArray();
+ this._sourcesContent = [];
+ this._mappings = [];
+ this.file = file;
+ this.sourceRoot = sourceRoot;
+ }
+}
+(() => {
+ addSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => {
+ return addSegmentInternal(false, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content);
+ };
+ maybeAddSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => {
+ return addSegmentInternal(true, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content);
+ };
+ addMapping = (map, mapping) => {
+ return addMappingInternal(false, map, mapping);
+ };
+ maybeAddMapping = (map, mapping) => {
+ return addMappingInternal(true, map, mapping);
+ };
+ setSourceContent = (map, source, content) => {
+ const { _sources: sources, _sourcesContent: sourcesContent } = map;
+ sourcesContent[put(sources, source)] = content;
+ };
+ toDecodedMap = (map) => {
+ const { file, sourceRoot, _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;
+ removeEmptyFinalLines(mappings);
+ return {
+ version: 3,
+ file: file || undefined,
+ names: names.array,
+ sourceRoot: sourceRoot || undefined,
+ sources: sources.array,
+ sourcesContent,
+ mappings,
+ };
+ };
+ toEncodedMap = (map) => {
+ const decoded = toDecodedMap(map);
+ return Object.assign(Object.assign({}, decoded), { mappings: encode(decoded.mappings) });
+ };
+ allMappings = (map) => {
+ const out = [];
+ const { _mappings: mappings, _sources: sources, _names: names } = map;
+ for (let i = 0; i < mappings.length; i++) {
+ const line = mappings[i];
+ for (let j = 0; j < line.length; j++) {
+ const seg = line[j];
+ const generated = { line: i + 1, column: seg[COLUMN] };
+ let source = undefined;
+ let original = undefined;
+ let name = undefined;
+ if (seg.length !== 1) {
+ source = sources.array[seg[SOURCES_INDEX]];
+ original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] };
+ if (seg.length === 5)
+ name = names.array[seg[NAMES_INDEX]];
+ }
+ out.push({ generated, source, original, name });
+ }
+ }
+ return out;
+ };
+ fromMap = (input) => {
+ const map = new TraceMap(input);
+ const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot });
+ putAll(gen._names, map.names);
+ putAll(gen._sources, map.sources);
+ gen._sourcesContent = map.sourcesContent || map.sources.map(() => null);
+ gen._mappings = decodedMappings(map);
+ return gen;
+ };
+ // Internal helpers
+ addSegmentInternal = (skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => {
+ const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;
+ const line = getLine(mappings, genLine);
+ const index = getColumnIndex(line, genColumn);
+ if (!source) {
+ if (skipable && skipSourceless(line, index))
+ return;
+ return insert(line, index, [genColumn]);
+ }
+ const sourcesIndex = put(sources, source);
+ const namesIndex = name ? put(names, name) : NO_NAME;
+ if (sourcesIndex === sourcesContent.length)
+ sourcesContent[sourcesIndex] = content !== null && content !== void 0 ? content : null;
+ if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {
+ return;
+ }
+ return insert(line, index, name
+ ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]
+ : [genColumn, sourcesIndex, sourceLine, sourceColumn]);
+ };
+})();
+function getLine(mappings, index) {
+ for (let i = mappings.length; i <= index; i++) {
+ mappings[i] = [];
+ }
+ return mappings[index];
+}
+function getColumnIndex(line, genColumn) {
+ let index = line.length;
+ for (let i = index - 1; i >= 0; index = i--) {
+ const current = line[i];
+ if (genColumn >= current[COLUMN])
+ break;
+ }
+ return index;
+}
+function insert(array, index, value) {
+ for (let i = array.length; i > index; i--) {
+ array[i] = array[i - 1];
+ }
+ array[index] = value;
+}
+function removeEmptyFinalLines(mappings) {
+ const { length } = mappings;
+ let len = length;
+ for (let i = len - 1; i >= 0; len = i, i--) {
+ if (mappings[i].length > 0)
+ break;
+ }
+ if (len < length)
+ mappings.length = len;
+}
+function putAll(strarr, array) {
+ for (let i = 0; i < array.length; i++)
+ put(strarr, array[i]);
+}
+function skipSourceless(line, index) {
+ // The start of a line is already sourceless, so adding a sourceless segment to the beginning
+ // doesn't generate any useful information.
+ if (index === 0)
+ return true;
+ const prev = line[index - 1];
+ // If the previous segment is also sourceless, then adding another sourceless segment doesn't
+ // genrate any new information. Else, this segment will end the source/named segment and point to
+ // a sourceless position, which is useful.
+ return prev.length === 1;
+}
+function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) {
+ // A source/named segment at the start of a line gives position at that genColumn
+ if (index === 0)
+ return false;
+ const prev = line[index - 1];
+ // If the previous segment is sourceless, then we're transitioning to a source.
+ if (prev.length === 1)
+ return false;
+ // If the previous segment maps to the exact same source position, then this segment doesn't
+ // provide any new position information.
+ return (sourcesIndex === prev[SOURCES_INDEX] &&
+ sourceLine === prev[SOURCE_LINE] &&
+ sourceColumn === prev[SOURCE_COLUMN] &&
+ namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME));
+}
+function addMappingInternal(skipable, map, mapping) {
+ const { generated, source, original, name, content } = mapping;
+ if (!source) {
+ return addSegmentInternal(skipable, map, generated.line - 1, generated.column, null, null, null, null, null);
+ }
+ const s = source;
+ return addSegmentInternal(skipable, map, generated.line - 1, generated.column, s, original.line - 1, original.column, name, content);
+}
+
+export { GenMapping, addMapping, addSegment, allMappings, fromMap, maybeAddMapping, maybeAddSegment, setSourceContent, toDecodedMap, toEncodedMap };
+//# sourceMappingURL=gen-mapping.mjs.map
diff --git a/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs.map b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs.map
new file mode 100644
index 00000000..2fee0cd4
--- /dev/null
+++ b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"gen-mapping.mjs","sources":["../src/sourcemap-segment.ts","../src/gen-mapping.ts"],"sourcesContent":["type GeneratedColumn = number;\ntype SourcesIndex = number;\ntype SourceLine = number;\ntype SourceColumn = number;\ntype NamesIndex = number;\n\nexport type SourceMapSegment =\n | [GeneratedColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];\n\nexport const COLUMN = 0;\nexport const SOURCES_INDEX = 1;\nexport const SOURCE_LINE = 2;\nexport const SOURCE_COLUMN = 3;\nexport const NAMES_INDEX = 4;\n","import { SetArray, put } from '@jridgewell/set-array';\nimport { encode } from '@jridgewell/sourcemap-codec';\nimport { TraceMap, decodedMappings } from '@jridgewell/trace-mapping';\n\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n} from './sourcemap-segment';\n\nimport type { SourceMapInput } from '@jridgewell/trace-mapping';\nimport type { SourceMapSegment } from './sourcemap-segment';\nimport type { DecodedSourceMap, EncodedSourceMap, Pos, Mapping } from './types';\n\nexport type { DecodedSourceMap, EncodedSourceMap, Mapping };\n\nexport type Options = {\n file?: string | null;\n sourceRoot?: string | null;\n};\n\nconst NO_NAME = -1;\n\n/**\n * A low-level API to associate a generated position with an original source position. Line and\n * column here are 0-based, unlike `addMapping`.\n */\nexport let addSegment: {\n (\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source?: null,\n sourceLine?: null,\n sourceColumn?: null,\n name?: null,\n content?: null,\n ): void;\n (\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: string,\n sourceLine: number,\n sourceColumn: number,\n name?: null,\n content?: string | null,\n ): void;\n (\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: string,\n sourceLine: number,\n sourceColumn: number,\n name: string,\n content?: string | null,\n ): void;\n};\n\n/**\n * A high-level API to associate a generated position with an original source position. Line is\n * 1-based, but column is 0-based, due to legacy behavior in `source-map` library.\n */\nexport let addMapping: {\n (\n map: GenMapping,\n mapping: {\n generated: Pos;\n source?: null;\n original?: null;\n name?: null;\n content?: null;\n },\n ): void;\n (\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: string;\n original: Pos;\n name?: null;\n content?: string | null;\n },\n ): void;\n (\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: string;\n original: Pos;\n name: string;\n content?: string | null;\n },\n ): void;\n};\n\n/**\n * Same as `addSegment`, but will only add the segment if it generates useful information in the\n * resulting map. This only works correctly if segments are added **in order**, meaning you should\n * not add a segment with a lower generated line/column than one that came before.\n */\nexport let maybeAddSegment: typeof addSegment;\n\n/**\n * Same as `addMapping`, but will only add the mapping if it generates useful information in the\n * resulting map. This only works correctly if mappings are added **in order**, meaning you should\n * not add a mapping with a lower generated line/column than one that came before.\n */\nexport let maybeAddMapping: typeof addMapping;\n\n/**\n * Adds/removes the content of the source file to the source map.\n */\nexport let setSourceContent: (map: GenMapping, source: string, content: string | null) => void;\n\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport let toDecodedMap: (map: GenMapping) => DecodedSourceMap;\n\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport let toEncodedMap: (map: GenMapping) => EncodedSourceMap;\n\n/**\n * Constructs a new GenMapping, using the already present mappings of the input.\n */\nexport let fromMap: (input: SourceMapInput) => GenMapping;\n\n/**\n * Returns an array of high-level mapping objects for every recorded segment, which could then be\n * passed to the `source-map` library.\n */\nexport let allMappings: (map: GenMapping) => Mapping[];\n\n// This split declaration is only so that terser can elminiate the static initialization block.\nlet addSegmentInternal: (\n skipable: boolean,\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: S,\n sourceLine: S extends string ? number : null | undefined,\n sourceColumn: S extends string ? number : null | undefined,\n name: S extends string ? string | null | undefined : null | undefined,\n content: S extends string ? string | null | undefined : null | undefined,\n) => void;\n\n/**\n * Provides the state to generate a sourcemap.\n */\nexport class GenMapping {\n private _names = new SetArray();\n private _sources = new SetArray();\n private _sourcesContent: (string | null)[] = [];\n private _mappings: SourceMapSegment[][] = [];\n declare file: string | null | undefined;\n declare sourceRoot: string | null | undefined;\n\n constructor({ file, sourceRoot }: Options = {}) {\n this.file = file;\n this.sourceRoot = sourceRoot;\n }\n\n static {\n addSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => {\n return addSegmentInternal(\n false,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n );\n };\n\n maybeAddSegment = (\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n ) => {\n return addSegmentInternal(\n true,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n );\n };\n\n addMapping = (map, mapping) => {\n return addMappingInternal(false, map, mapping as Parameters[2]);\n };\n\n maybeAddMapping = (map, mapping) => {\n return addMappingInternal(true, map, mapping as Parameters[2]);\n };\n\n setSourceContent = (map, source, content) => {\n const { _sources: sources, _sourcesContent: sourcesContent } = map;\n sourcesContent[put(sources, source)] = content;\n };\n\n toDecodedMap = (map) => {\n const {\n file,\n sourceRoot,\n _mappings: mappings,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _names: names,\n } = map;\n removeEmptyFinalLines(mappings);\n\n return {\n version: 3,\n file: file || undefined,\n names: names.array,\n sourceRoot: sourceRoot || undefined,\n sources: sources.array,\n sourcesContent,\n mappings,\n };\n };\n\n toEncodedMap = (map) => {\n const decoded = toDecodedMap(map);\n return {\n ...decoded,\n mappings: encode(decoded.mappings as SourceMapSegment[][]),\n };\n };\n\n allMappings = (map) => {\n const out: Mapping[] = [];\n const { _mappings: mappings, _sources: sources, _names: names } = map;\n\n for (let i = 0; i < mappings.length; i++) {\n const line = mappings[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n\n const generated = { line: i + 1, column: seg[COLUMN] };\n let source: string | undefined = undefined;\n let original: Pos | undefined = undefined;\n let name: string | undefined = undefined;\n\n if (seg.length !== 1) {\n source = sources.array[seg[SOURCES_INDEX]];\n original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] };\n\n if (seg.length === 5) name = names.array[seg[NAMES_INDEX]];\n }\n\n out.push({ generated, source, original, name } as Mapping);\n }\n }\n\n return out;\n };\n\n fromMap = (input) => {\n const map = new TraceMap(input);\n const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot });\n\n putAll(gen._names, map.names);\n putAll(gen._sources, map.sources as string[]);\n gen._sourcesContent = map.sourcesContent || map.sources.map(() => null);\n gen._mappings = decodedMappings(map) as GenMapping['_mappings'];\n\n return gen;\n };\n\n // Internal helpers\n addSegmentInternal = (\n skipable,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n ) => {\n const {\n _mappings: mappings,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _names: names,\n } = map;\n const line = getLine(mappings, genLine);\n const index = getColumnIndex(line, genColumn);\n\n if (!source) {\n if (skipable && skipSourceless(line, index)) return;\n return insert(line, index, [genColumn]);\n }\n\n // Sigh, TypeScript can't figure out sourceLine and sourceColumn aren't nullish if source\n // isn't nullish.\n assert(sourceLine);\n assert(sourceColumn);\n\n const sourcesIndex = put(sources, source);\n const namesIndex = name ? put(names, name) : NO_NAME;\n if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content ?? null;\n\n if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {\n return;\n }\n\n return insert(\n line,\n index,\n name\n ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]\n : [genColumn, sourcesIndex, sourceLine, sourceColumn],\n );\n };\n }\n}\n\nfunction assert(_val: unknown): asserts _val is T {\n // noop.\n}\n\nfunction getLine(mappings: SourceMapSegment[][], index: number): SourceMapSegment[] {\n for (let i = mappings.length; i <= index; i++) {\n mappings[i] = [];\n }\n return mappings[index];\n}\n\nfunction getColumnIndex(line: SourceMapSegment[], genColumn: number): number {\n let index = line.length;\n for (let i = index - 1; i >= 0; index = i--) {\n const current = line[i];\n if (genColumn >= current[COLUMN]) break;\n }\n return index;\n}\n\nfunction insert(array: T[], index: number, value: T) {\n for (let i = array.length; i > index; i--) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n}\n\nfunction removeEmptyFinalLines(mappings: SourceMapSegment[][]) {\n const { length } = mappings;\n let len = length;\n for (let i = len - 1; i >= 0; len = i, i--) {\n if (mappings[i].length > 0) break;\n }\n if (len < length) mappings.length = len;\n}\n\nfunction putAll(strarr: SetArray, array: string[]) {\n for (let i = 0; i < array.length; i++) put(strarr, array[i]);\n}\n\nfunction skipSourceless(line: SourceMapSegment[], index: number): boolean {\n // The start of a line is already sourceless, so adding a sourceless segment to the beginning\n // doesn't generate any useful information.\n if (index === 0) return true;\n\n const prev = line[index - 1];\n // If the previous segment is also sourceless, then adding another sourceless segment doesn't\n // genrate any new information. Else, this segment will end the source/named segment and point to\n // a sourceless position, which is useful.\n return prev.length === 1;\n}\n\nfunction skipSource(\n line: SourceMapSegment[],\n index: number,\n sourcesIndex: number,\n sourceLine: number,\n sourceColumn: number,\n namesIndex: number,\n): boolean {\n // A source/named segment at the start of a line gives position at that genColumn\n if (index === 0) return false;\n\n const prev = line[index - 1];\n\n // If the previous segment is sourceless, then we're transitioning to a source.\n if (prev.length === 1) return false;\n\n // If the previous segment maps to the exact same source position, then this segment doesn't\n // provide any new position information.\n return (\n sourcesIndex === prev[SOURCES_INDEX] &&\n sourceLine === prev[SOURCE_LINE] &&\n sourceColumn === prev[SOURCE_COLUMN] &&\n namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME)\n );\n}\n\nfunction addMappingInternal(\n skipable: boolean,\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: S;\n original: S extends string ? Pos : null | undefined;\n name: S extends string ? string | null | undefined : null | undefined;\n content: S extends string ? string | null | undefined : null | undefined;\n },\n) {\n const { generated, source, original, name, content } = mapping;\n if (!source) {\n return addSegmentInternal(\n skipable,\n map,\n generated.line - 1,\n generated.column,\n null,\n null,\n null,\n null,\n null,\n );\n }\n const s: string = source;\n assert(original);\n return addSegmentInternal(\n skipable,\n map,\n generated.line - 1,\n generated.column,\n s,\n original.line - 1,\n original.column,\n name,\n content,\n );\n}\n"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js
new file mode 100644
index 00000000..d9fcf5cf
--- /dev/null
+++ b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js
@@ -0,0 +1,236 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@jridgewell/set-array'), require('@jridgewell/sourcemap-codec'), require('@jridgewell/trace-mapping')) :
+ typeof define === 'function' && define.amd ? define(['exports', '@jridgewell/set-array', '@jridgewell/sourcemap-codec', '@jridgewell/trace-mapping'], factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.genMapping = {}, global.setArray, global.sourcemapCodec, global.traceMapping));
+})(this, (function (exports, setArray, sourcemapCodec, traceMapping) { 'use strict';
+
+ const COLUMN = 0;
+ const SOURCES_INDEX = 1;
+ const SOURCE_LINE = 2;
+ const SOURCE_COLUMN = 3;
+ const NAMES_INDEX = 4;
+
+ const NO_NAME = -1;
+ /**
+ * A low-level API to associate a generated position with an original source position. Line and
+ * column here are 0-based, unlike `addMapping`.
+ */
+ exports.addSegment = void 0;
+ /**
+ * A high-level API to associate a generated position with an original source position. Line is
+ * 1-based, but column is 0-based, due to legacy behavior in `source-map` library.
+ */
+ exports.addMapping = void 0;
+ /**
+ * Same as `addSegment`, but will only add the segment if it generates useful information in the
+ * resulting map. This only works correctly if segments are added **in order**, meaning you should
+ * not add a segment with a lower generated line/column than one that came before.
+ */
+ exports.maybeAddSegment = void 0;
+ /**
+ * Same as `addMapping`, but will only add the mapping if it generates useful information in the
+ * resulting map. This only works correctly if mappings are added **in order**, meaning you should
+ * not add a mapping with a lower generated line/column than one that came before.
+ */
+ exports.maybeAddMapping = void 0;
+ /**
+ * Adds/removes the content of the source file to the source map.
+ */
+ exports.setSourceContent = void 0;
+ /**
+ * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+ exports.toDecodedMap = void 0;
+ /**
+ * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+ exports.toEncodedMap = void 0;
+ /**
+ * Constructs a new GenMapping, using the already present mappings of the input.
+ */
+ exports.fromMap = void 0;
+ /**
+ * Returns an array of high-level mapping objects for every recorded segment, which could then be
+ * passed to the `source-map` library.
+ */
+ exports.allMappings = void 0;
+ // This split declaration is only so that terser can elminiate the static initialization block.
+ let addSegmentInternal;
+ /**
+ * Provides the state to generate a sourcemap.
+ */
+ class GenMapping {
+ constructor({ file, sourceRoot } = {}) {
+ this._names = new setArray.SetArray();
+ this._sources = new setArray.SetArray();
+ this._sourcesContent = [];
+ this._mappings = [];
+ this.file = file;
+ this.sourceRoot = sourceRoot;
+ }
+ }
+ (() => {
+ exports.addSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => {
+ return addSegmentInternal(false, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content);
+ };
+ exports.maybeAddSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => {
+ return addSegmentInternal(true, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content);
+ };
+ exports.addMapping = (map, mapping) => {
+ return addMappingInternal(false, map, mapping);
+ };
+ exports.maybeAddMapping = (map, mapping) => {
+ return addMappingInternal(true, map, mapping);
+ };
+ exports.setSourceContent = (map, source, content) => {
+ const { _sources: sources, _sourcesContent: sourcesContent } = map;
+ sourcesContent[setArray.put(sources, source)] = content;
+ };
+ exports.toDecodedMap = (map) => {
+ const { file, sourceRoot, _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;
+ removeEmptyFinalLines(mappings);
+ return {
+ version: 3,
+ file: file || undefined,
+ names: names.array,
+ sourceRoot: sourceRoot || undefined,
+ sources: sources.array,
+ sourcesContent,
+ mappings,
+ };
+ };
+ exports.toEncodedMap = (map) => {
+ const decoded = exports.toDecodedMap(map);
+ return Object.assign(Object.assign({}, decoded), { mappings: sourcemapCodec.encode(decoded.mappings) });
+ };
+ exports.allMappings = (map) => {
+ const out = [];
+ const { _mappings: mappings, _sources: sources, _names: names } = map;
+ for (let i = 0; i < mappings.length; i++) {
+ const line = mappings[i];
+ for (let j = 0; j < line.length; j++) {
+ const seg = line[j];
+ const generated = { line: i + 1, column: seg[COLUMN] };
+ let source = undefined;
+ let original = undefined;
+ let name = undefined;
+ if (seg.length !== 1) {
+ source = sources.array[seg[SOURCES_INDEX]];
+ original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] };
+ if (seg.length === 5)
+ name = names.array[seg[NAMES_INDEX]];
+ }
+ out.push({ generated, source, original, name });
+ }
+ }
+ return out;
+ };
+ exports.fromMap = (input) => {
+ const map = new traceMapping.TraceMap(input);
+ const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot });
+ putAll(gen._names, map.names);
+ putAll(gen._sources, map.sources);
+ gen._sourcesContent = map.sourcesContent || map.sources.map(() => null);
+ gen._mappings = traceMapping.decodedMappings(map);
+ return gen;
+ };
+ // Internal helpers
+ addSegmentInternal = (skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => {
+ const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;
+ const line = getLine(mappings, genLine);
+ const index = getColumnIndex(line, genColumn);
+ if (!source) {
+ if (skipable && skipSourceless(line, index))
+ return;
+ return insert(line, index, [genColumn]);
+ }
+ const sourcesIndex = setArray.put(sources, source);
+ const namesIndex = name ? setArray.put(names, name) : NO_NAME;
+ if (sourcesIndex === sourcesContent.length)
+ sourcesContent[sourcesIndex] = content !== null && content !== void 0 ? content : null;
+ if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {
+ return;
+ }
+ return insert(line, index, name
+ ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]
+ : [genColumn, sourcesIndex, sourceLine, sourceColumn]);
+ };
+ })();
+ function getLine(mappings, index) {
+ for (let i = mappings.length; i <= index; i++) {
+ mappings[i] = [];
+ }
+ return mappings[index];
+ }
+ function getColumnIndex(line, genColumn) {
+ let index = line.length;
+ for (let i = index - 1; i >= 0; index = i--) {
+ const current = line[i];
+ if (genColumn >= current[COLUMN])
+ break;
+ }
+ return index;
+ }
+ function insert(array, index, value) {
+ for (let i = array.length; i > index; i--) {
+ array[i] = array[i - 1];
+ }
+ array[index] = value;
+ }
+ function removeEmptyFinalLines(mappings) {
+ const { length } = mappings;
+ let len = length;
+ for (let i = len - 1; i >= 0; len = i, i--) {
+ if (mappings[i].length > 0)
+ break;
+ }
+ if (len < length)
+ mappings.length = len;
+ }
+ function putAll(strarr, array) {
+ for (let i = 0; i < array.length; i++)
+ setArray.put(strarr, array[i]);
+ }
+ function skipSourceless(line, index) {
+ // The start of a line is already sourceless, so adding a sourceless segment to the beginning
+ // doesn't generate any useful information.
+ if (index === 0)
+ return true;
+ const prev = line[index - 1];
+ // If the previous segment is also sourceless, then adding another sourceless segment doesn't
+ // genrate any new information. Else, this segment will end the source/named segment and point to
+ // a sourceless position, which is useful.
+ return prev.length === 1;
+ }
+ function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) {
+ // A source/named segment at the start of a line gives position at that genColumn
+ if (index === 0)
+ return false;
+ const prev = line[index - 1];
+ // If the previous segment is sourceless, then we're transitioning to a source.
+ if (prev.length === 1)
+ return false;
+ // If the previous segment maps to the exact same source position, then this segment doesn't
+ // provide any new position information.
+ return (sourcesIndex === prev[SOURCES_INDEX] &&
+ sourceLine === prev[SOURCE_LINE] &&
+ sourceColumn === prev[SOURCE_COLUMN] &&
+ namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME));
+ }
+ function addMappingInternal(skipable, map, mapping) {
+ const { generated, source, original, name, content } = mapping;
+ if (!source) {
+ return addSegmentInternal(skipable, map, generated.line - 1, generated.column, null, null, null, null, null);
+ }
+ const s = source;
+ return addSegmentInternal(skipable, map, generated.line - 1, generated.column, s, original.line - 1, original.column, name, content);
+ }
+
+ exports.GenMapping = GenMapping;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+}));
+//# sourceMappingURL=gen-mapping.umd.js.map
diff --git a/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js.map b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js.map
new file mode 100644
index 00000000..7cc8d149
--- /dev/null
+++ b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"gen-mapping.umd.js","sources":["../src/sourcemap-segment.ts","../src/gen-mapping.ts"],"sourcesContent":["type GeneratedColumn = number;\ntype SourcesIndex = number;\ntype SourceLine = number;\ntype SourceColumn = number;\ntype NamesIndex = number;\n\nexport type SourceMapSegment =\n | [GeneratedColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];\n\nexport const COLUMN = 0;\nexport const SOURCES_INDEX = 1;\nexport const SOURCE_LINE = 2;\nexport const SOURCE_COLUMN = 3;\nexport const NAMES_INDEX = 4;\n","import { SetArray, put } from '@jridgewell/set-array';\nimport { encode } from '@jridgewell/sourcemap-codec';\nimport { TraceMap, decodedMappings } from '@jridgewell/trace-mapping';\n\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n} from './sourcemap-segment';\n\nimport type { SourceMapInput } from '@jridgewell/trace-mapping';\nimport type { SourceMapSegment } from './sourcemap-segment';\nimport type { DecodedSourceMap, EncodedSourceMap, Pos, Mapping } from './types';\n\nexport type { DecodedSourceMap, EncodedSourceMap, Mapping };\n\nexport type Options = {\n file?: string | null;\n sourceRoot?: string | null;\n};\n\nconst NO_NAME = -1;\n\n/**\n * A low-level API to associate a generated position with an original source position. Line and\n * column here are 0-based, unlike `addMapping`.\n */\nexport let addSegment: {\n (\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source?: null,\n sourceLine?: null,\n sourceColumn?: null,\n name?: null,\n content?: null,\n ): void;\n (\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: string,\n sourceLine: number,\n sourceColumn: number,\n name?: null,\n content?: string | null,\n ): void;\n (\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: string,\n sourceLine: number,\n sourceColumn: number,\n name: string,\n content?: string | null,\n ): void;\n};\n\n/**\n * A high-level API to associate a generated position with an original source position. Line is\n * 1-based, but column is 0-based, due to legacy behavior in `source-map` library.\n */\nexport let addMapping: {\n (\n map: GenMapping,\n mapping: {\n generated: Pos;\n source?: null;\n original?: null;\n name?: null;\n content?: null;\n },\n ): void;\n (\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: string;\n original: Pos;\n name?: null;\n content?: string | null;\n },\n ): void;\n (\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: string;\n original: Pos;\n name: string;\n content?: string | null;\n },\n ): void;\n};\n\n/**\n * Same as `addSegment`, but will only add the segment if it generates useful information in the\n * resulting map. This only works correctly if segments are added **in order**, meaning you should\n * not add a segment with a lower generated line/column than one that came before.\n */\nexport let maybeAddSegment: typeof addSegment;\n\n/**\n * Same as `addMapping`, but will only add the mapping if it generates useful information in the\n * resulting map. This only works correctly if mappings are added **in order**, meaning you should\n * not add a mapping with a lower generated line/column than one that came before.\n */\nexport let maybeAddMapping: typeof addMapping;\n\n/**\n * Adds/removes the content of the source file to the source map.\n */\nexport let setSourceContent: (map: GenMapping, source: string, content: string | null) => void;\n\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport let toDecodedMap: (map: GenMapping) => DecodedSourceMap;\n\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport let toEncodedMap: (map: GenMapping) => EncodedSourceMap;\n\n/**\n * Constructs a new GenMapping, using the already present mappings of the input.\n */\nexport let fromMap: (input: SourceMapInput) => GenMapping;\n\n/**\n * Returns an array of high-level mapping objects for every recorded segment, which could then be\n * passed to the `source-map` library.\n */\nexport let allMappings: (map: GenMapping) => Mapping[];\n\n// This split declaration is only so that terser can elminiate the static initialization block.\nlet addSegmentInternal: (\n skipable: boolean,\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: S,\n sourceLine: S extends string ? number : null | undefined,\n sourceColumn: S extends string ? number : null | undefined,\n name: S extends string ? string | null | undefined : null | undefined,\n content: S extends string ? string | null | undefined : null | undefined,\n) => void;\n\n/**\n * Provides the state to generate a sourcemap.\n */\nexport class GenMapping {\n private _names = new SetArray();\n private _sources = new SetArray();\n private _sourcesContent: (string | null)[] = [];\n private _mappings: SourceMapSegment[][] = [];\n declare file: string | null | undefined;\n declare sourceRoot: string | null | undefined;\n\n constructor({ file, sourceRoot }: Options = {}) {\n this.file = file;\n this.sourceRoot = sourceRoot;\n }\n\n static {\n addSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => {\n return addSegmentInternal(\n false,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n );\n };\n\n maybeAddSegment = (\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n ) => {\n return addSegmentInternal(\n true,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n );\n };\n\n addMapping = (map, mapping) => {\n return addMappingInternal(false, map, mapping as Parameters[2]);\n };\n\n maybeAddMapping = (map, mapping) => {\n return addMappingInternal(true, map, mapping as Parameters[2]);\n };\n\n setSourceContent = (map, source, content) => {\n const { _sources: sources, _sourcesContent: sourcesContent } = map;\n sourcesContent[put(sources, source)] = content;\n };\n\n toDecodedMap = (map) => {\n const {\n file,\n sourceRoot,\n _mappings: mappings,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _names: names,\n } = map;\n removeEmptyFinalLines(mappings);\n\n return {\n version: 3,\n file: file || undefined,\n names: names.array,\n sourceRoot: sourceRoot || undefined,\n sources: sources.array,\n sourcesContent,\n mappings,\n };\n };\n\n toEncodedMap = (map) => {\n const decoded = toDecodedMap(map);\n return {\n ...decoded,\n mappings: encode(decoded.mappings as SourceMapSegment[][]),\n };\n };\n\n allMappings = (map) => {\n const out: Mapping[] = [];\n const { _mappings: mappings, _sources: sources, _names: names } = map;\n\n for (let i = 0; i < mappings.length; i++) {\n const line = mappings[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n\n const generated = { line: i + 1, column: seg[COLUMN] };\n let source: string | undefined = undefined;\n let original: Pos | undefined = undefined;\n let name: string | undefined = undefined;\n\n if (seg.length !== 1) {\n source = sources.array[seg[SOURCES_INDEX]];\n original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] };\n\n if (seg.length === 5) name = names.array[seg[NAMES_INDEX]];\n }\n\n out.push({ generated, source, original, name } as Mapping);\n }\n }\n\n return out;\n };\n\n fromMap = (input) => {\n const map = new TraceMap(input);\n const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot });\n\n putAll(gen._names, map.names);\n putAll(gen._sources, map.sources as string[]);\n gen._sourcesContent = map.sourcesContent || map.sources.map(() => null);\n gen._mappings = decodedMappings(map) as GenMapping['_mappings'];\n\n return gen;\n };\n\n // Internal helpers\n addSegmentInternal = (\n skipable,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n ) => {\n const {\n _mappings: mappings,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _names: names,\n } = map;\n const line = getLine(mappings, genLine);\n const index = getColumnIndex(line, genColumn);\n\n if (!source) {\n if (skipable && skipSourceless(line, index)) return;\n return insert(line, index, [genColumn]);\n }\n\n // Sigh, TypeScript can't figure out sourceLine and sourceColumn aren't nullish if source\n // isn't nullish.\n assert(sourceLine);\n assert(sourceColumn);\n\n const sourcesIndex = put(sources, source);\n const namesIndex = name ? put(names, name) : NO_NAME;\n if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content ?? null;\n\n if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {\n return;\n }\n\n return insert(\n line,\n index,\n name\n ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]\n : [genColumn, sourcesIndex, sourceLine, sourceColumn],\n );\n };\n }\n}\n\nfunction assert(_val: unknown): asserts _val is T {\n // noop.\n}\n\nfunction getLine(mappings: SourceMapSegment[][], index: number): SourceMapSegment[] {\n for (let i = mappings.length; i <= index; i++) {\n mappings[i] = [];\n }\n return mappings[index];\n}\n\nfunction getColumnIndex(line: SourceMapSegment[], genColumn: number): number {\n let index = line.length;\n for (let i = index - 1; i >= 0; index = i--) {\n const current = line[i];\n if (genColumn >= current[COLUMN]) break;\n }\n return index;\n}\n\nfunction insert(array: T[], index: number, value: T) {\n for (let i = array.length; i > index; i--) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n}\n\nfunction removeEmptyFinalLines(mappings: SourceMapSegment[][]) {\n const { length } = mappings;\n let len = length;\n for (let i = len - 1; i >= 0; len = i, i--) {\n if (mappings[i].length > 0) break;\n }\n if (len < length) mappings.length = len;\n}\n\nfunction putAll(strarr: SetArray, array: string[]) {\n for (let i = 0; i < array.length; i++) put(strarr, array[i]);\n}\n\nfunction skipSourceless(line: SourceMapSegment[], index: number): boolean {\n // The start of a line is already sourceless, so adding a sourceless segment to the beginning\n // doesn't generate any useful information.\n if (index === 0) return true;\n\n const prev = line[index - 1];\n // If the previous segment is also sourceless, then adding another sourceless segment doesn't\n // genrate any new information. Else, this segment will end the source/named segment and point to\n // a sourceless position, which is useful.\n return prev.length === 1;\n}\n\nfunction skipSource(\n line: SourceMapSegment[],\n index: number,\n sourcesIndex: number,\n sourceLine: number,\n sourceColumn: number,\n namesIndex: number,\n): boolean {\n // A source/named segment at the start of a line gives position at that genColumn\n if (index === 0) return false;\n\n const prev = line[index - 1];\n\n // If the previous segment is sourceless, then we're transitioning to a source.\n if (prev.length === 1) return false;\n\n // If the previous segment maps to the exact same source position, then this segment doesn't\n // provide any new position information.\n return (\n sourcesIndex === prev[SOURCES_INDEX] &&\n sourceLine === prev[SOURCE_LINE] &&\n sourceColumn === prev[SOURCE_COLUMN] &&\n namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME)\n );\n}\n\nfunction addMappingInternal(\n skipable: boolean,\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: S;\n original: S extends string ? Pos : null | undefined;\n name: S extends string ? string | null | undefined : null | undefined;\n content: S extends string ? string | null | undefined : null | undefined;\n },\n) {\n const { generated, source, original, name, content } = mapping;\n if (!source) {\n return addSegmentInternal(\n skipable,\n map,\n generated.line - 1,\n generated.column,\n null,\n null,\n null,\n null,\n null,\n );\n }\n const s: string = source;\n assert(original);\n return addSegmentInternal(\n skipable,\n map,\n generated.line - 1,\n generated.column,\n s,\n original.line - 1,\n original.column,\n name,\n content,\n );\n}\n"],"names":["addSegment","addMapping","maybeAddSegment","maybeAddMapping","setSourceContent","toDecodedMap","toEncodedMap","fromMap","allMappings","SetArray","put","encode","TraceMap","decodedMappings"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/gen-mapping/dist/types/gen-mapping.d.ts b/node_modules/@jridgewell/gen-mapping/dist/types/gen-mapping.d.ts
new file mode 100644
index 00000000..d510d74b
--- /dev/null
+++ b/node_modules/@jridgewell/gen-mapping/dist/types/gen-mapping.d.ts
@@ -0,0 +1,90 @@
+import type { SourceMapInput } from '@jridgewell/trace-mapping';
+import type { DecodedSourceMap, EncodedSourceMap, Pos, Mapping } from './types';
+export type { DecodedSourceMap, EncodedSourceMap, Mapping };
+export declare type Options = {
+ file?: string | null;
+ sourceRoot?: string | null;
+};
+/**
+ * A low-level API to associate a generated position with an original source position. Line and
+ * column here are 0-based, unlike `addMapping`.
+ */
+export declare let addSegment: {
+ (map: GenMapping, genLine: number, genColumn: number, source?: null, sourceLine?: null, sourceColumn?: null, name?: null, content?: null): void;
+ (map: GenMapping, genLine: number, genColumn: number, source: string, sourceLine: number, sourceColumn: number, name?: null, content?: string | null): void;
+ (map: GenMapping, genLine: number, genColumn: number, source: string, sourceLine: number, sourceColumn: number, name: string, content?: string | null): void;
+};
+/**
+ * A high-level API to associate a generated position with an original source position. Line is
+ * 1-based, but column is 0-based, due to legacy behavior in `source-map` library.
+ */
+export declare let addMapping: {
+ (map: GenMapping, mapping: {
+ generated: Pos;
+ source?: null;
+ original?: null;
+ name?: null;
+ content?: null;
+ }): void;
+ (map: GenMapping, mapping: {
+ generated: Pos;
+ source: string;
+ original: Pos;
+ name?: null;
+ content?: string | null;
+ }): void;
+ (map: GenMapping, mapping: {
+ generated: Pos;
+ source: string;
+ original: Pos;
+ name: string;
+ content?: string | null;
+ }): void;
+};
+/**
+ * Same as `addSegment`, but will only add the segment if it generates useful information in the
+ * resulting map. This only works correctly if segments are added **in order**, meaning you should
+ * not add a segment with a lower generated line/column than one that came before.
+ */
+export declare let maybeAddSegment: typeof addSegment;
+/**
+ * Same as `addMapping`, but will only add the mapping if it generates useful information in the
+ * resulting map. This only works correctly if mappings are added **in order**, meaning you should
+ * not add a mapping with a lower generated line/column than one that came before.
+ */
+export declare let maybeAddMapping: typeof addMapping;
+/**
+ * Adds/removes the content of the source file to the source map.
+ */
+export declare let setSourceContent: (map: GenMapping, source: string, content: string | null) => void;
+/**
+ * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+export declare let toDecodedMap: (map: GenMapping) => DecodedSourceMap;
+/**
+ * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+export declare let toEncodedMap: (map: GenMapping) => EncodedSourceMap;
+/**
+ * Constructs a new GenMapping, using the already present mappings of the input.
+ */
+export declare let fromMap: (input: SourceMapInput) => GenMapping;
+/**
+ * Returns an array of high-level mapping objects for every recorded segment, which could then be
+ * passed to the `source-map` library.
+ */
+export declare let allMappings: (map: GenMapping) => Mapping[];
+/**
+ * Provides the state to generate a sourcemap.
+ */
+export declare class GenMapping {
+ private _names;
+ private _sources;
+ private _sourcesContent;
+ private _mappings;
+ file: string | null | undefined;
+ sourceRoot: string | null | undefined;
+ constructor({ file, sourceRoot }?: Options);
+}
diff --git a/node_modules/@jridgewell/gen-mapping/dist/types/sourcemap-segment.d.ts b/node_modules/@jridgewell/gen-mapping/dist/types/sourcemap-segment.d.ts
new file mode 100644
index 00000000..e187ba98
--- /dev/null
+++ b/node_modules/@jridgewell/gen-mapping/dist/types/sourcemap-segment.d.ts
@@ -0,0 +1,12 @@
+declare type GeneratedColumn = number;
+declare type SourcesIndex = number;
+declare type SourceLine = number;
+declare type SourceColumn = number;
+declare type NamesIndex = number;
+export declare type SourceMapSegment = [GeneratedColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];
+export declare const COLUMN = 0;
+export declare const SOURCES_INDEX = 1;
+export declare const SOURCE_LINE = 2;
+export declare const SOURCE_COLUMN = 3;
+export declare const NAMES_INDEX = 4;
+export {};
diff --git a/node_modules/@jridgewell/gen-mapping/dist/types/types.d.ts b/node_modules/@jridgewell/gen-mapping/dist/types/types.d.ts
new file mode 100644
index 00000000..b309c811
--- /dev/null
+++ b/node_modules/@jridgewell/gen-mapping/dist/types/types.d.ts
@@ -0,0 +1,35 @@
+import type { SourceMapSegment } from './sourcemap-segment';
+export interface SourceMapV3 {
+ file?: string | null;
+ names: readonly string[];
+ sourceRoot?: string;
+ sources: readonly (string | null)[];
+ sourcesContent?: readonly (string | null)[];
+ version: 3;
+}
+export interface EncodedSourceMap extends SourceMapV3 {
+ mappings: string;
+}
+export interface DecodedSourceMap extends SourceMapV3 {
+ mappings: readonly SourceMapSegment[][];
+}
+export interface Pos {
+ line: number;
+ column: number;
+}
+export declare type Mapping = {
+ generated: Pos;
+ source: undefined;
+ original: undefined;
+ name: undefined;
+} | {
+ generated: Pos;
+ source: string;
+ original: Pos;
+ name: string;
+} | {
+ generated: Pos;
+ source: string;
+ original: Pos;
+ name: undefined;
+};
diff --git a/node_modules/@jridgewell/gen-mapping/package.json b/node_modules/@jridgewell/gen-mapping/package.json
new file mode 100644
index 00000000..69e0ac81
--- /dev/null
+++ b/node_modules/@jridgewell/gen-mapping/package.json
@@ -0,0 +1,77 @@
+{
+ "name": "@jridgewell/gen-mapping",
+ "version": "0.3.3",
+ "description": "Generate source maps",
+ "keywords": [
+ "source",
+ "map"
+ ],
+ "author": "Justin Ridgewell ",
+ "license": "MIT",
+ "repository": "https://github.com/jridgewell/gen-mapping",
+ "main": "dist/gen-mapping.umd.js",
+ "module": "dist/gen-mapping.mjs",
+ "types": "dist/types/gen-mapping.d.ts",
+ "exports": {
+ ".": [
+ {
+ "types": "./dist/types/gen-mapping.d.ts",
+ "browser": "./dist/gen-mapping.umd.js",
+ "require": "./dist/gen-mapping.umd.js",
+ "import": "./dist/gen-mapping.mjs"
+ },
+ "./dist/gen-mapping.umd.js"
+ ],
+ "./package.json": "./package.json"
+ },
+ "files": [
+ "dist"
+ ],
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "scripts": {
+ "benchmark": "run-s build:rollup benchmark:*",
+ "benchmark:install": "cd benchmark && npm install",
+ "benchmark:only": "node benchmark/index.mjs",
+ "prebuild": "rm -rf dist",
+ "build": "run-s -n build:*",
+ "build:rollup": "rollup -c rollup.config.js",
+ "build:ts": "tsc --project tsconfig.build.json",
+ "lint": "run-s -n lint:*",
+ "lint:prettier": "npm run test:lint:prettier -- --write",
+ "lint:ts": "npm run test:lint:ts -- --fix",
+ "pretest": "run-s build:rollup",
+ "test": "run-s -n test:lint test:coverage",
+ "test:debug": "mocha --inspect-brk",
+ "test:lint": "run-s -n test:lint:*",
+ "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'",
+ "test:lint:ts": "eslint '{src,test}/**/*.ts'",
+ "test:only": "mocha",
+ "test:coverage": "c8 mocha",
+ "test:watch": "run-p 'build:rollup -- --watch' 'test:only -- --watch'",
+ "prepublishOnly": "npm run preversion",
+ "preversion": "run-s test build"
+ },
+ "devDependencies": {
+ "@rollup/plugin-typescript": "8.3.2",
+ "@types/mocha": "9.1.1",
+ "@types/node": "17.0.29",
+ "@typescript-eslint/eslint-plugin": "5.21.0",
+ "@typescript-eslint/parser": "5.21.0",
+ "benchmark": "2.1.4",
+ "c8": "7.11.2",
+ "eslint": "8.14.0",
+ "eslint-config-prettier": "8.5.0",
+ "mocha": "9.2.2",
+ "npm-run-all": "4.1.5",
+ "prettier": "2.6.2",
+ "rollup": "2.70.2",
+ "typescript": "4.6.3"
+ },
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+}
diff --git a/node_modules/@jridgewell/resolve-uri/LICENSE b/node_modules/@jridgewell/resolve-uri/LICENSE
new file mode 100644
index 00000000..0a81b2ad
--- /dev/null
+++ b/node_modules/@jridgewell/resolve-uri/LICENSE
@@ -0,0 +1,19 @@
+Copyright 2019 Justin Ridgewell
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/@jridgewell/resolve-uri/README.md b/node_modules/@jridgewell/resolve-uri/README.md
new file mode 100644
index 00000000..2fe70df7
--- /dev/null
+++ b/node_modules/@jridgewell/resolve-uri/README.md
@@ -0,0 +1,40 @@
+# @jridgewell/resolve-uri
+
+> Resolve a URI relative to an optional base URI
+
+Resolve any combination of absolute URIs, protocol-realtive URIs, absolute paths, or relative paths.
+
+## Installation
+
+```sh
+npm install @jridgewell/resolve-uri
+```
+
+## Usage
+
+```typescript
+function resolve(input: string, base?: string): string;
+```
+
+```js
+import resolve from '@jridgewell/resolve-uri';
+
+resolve('foo', 'https://example.com'); // => 'https://example.com/foo'
+```
+
+| Input | Base | Resolution | Explanation |
+|-----------------------|-------------------------|--------------------------------|--------------------------------------------------------------|
+| `https://example.com` | _any_ | `https://example.com/` | Input is normalized only |
+| `//example.com` | `https://base.com/` | `https://example.com/` | Input inherits the base's protocol |
+| `//example.com` | _rest_ | `//example.com/` | Input is normalized only |
+| `/example` | `https://base.com/` | `https://base.com/example` | Input inherits the base's origin |
+| `/example` | `//base.com/` | `//base.com/example` | Input inherits the base's host and remains protocol relative |
+| `/example` | _rest_ | `/example` | Input is normalized only |
+| `example` | `https://base.com/dir/` | `https://base.com/dir/example` | Input is joined with the base |
+| `example` | `https://base.com/file` | `https://base.com/example` | Input is joined with the base without its file |
+| `example` | `//base.com/dir/` | `//base.com/dir/example` | Input is joined with the base's last directory |
+| `example` | `//base.com/file` | `//base.com/example` | Input is joined with the base without its file |
+| `example` | `/base/dir/` | `/base/dir/example` | Input is joined with the base's last directory |
+| `example` | `/base/file` | `/base/example` | Input is joined with the base without its file |
+| `example` | `base/dir/` | `base/dir/example` | Input is joined with the base's last directory |
+| `example` | `base/file` | `base/example` | Input is joined with the base without its file |
diff --git a/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs
new file mode 100644
index 00000000..94d8dceb
--- /dev/null
+++ b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs
@@ -0,0 +1,242 @@
+// Matches the scheme of a URL, eg "http://"
+const schemeRegex = /^[\w+.-]+:\/\//;
+/**
+ * Matches the parts of a URL:
+ * 1. Scheme, including ":", guaranteed.
+ * 2. User/password, including "@", optional.
+ * 3. Host, guaranteed.
+ * 4. Port, including ":", optional.
+ * 5. Path, including "/", optional.
+ * 6. Query, including "?", optional.
+ * 7. Hash, including "#", optional.
+ */
+const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/;
+/**
+ * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start
+ * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).
+ *
+ * 1. Host, optional.
+ * 2. Path, which may include "/", guaranteed.
+ * 3. Query, including "?", optional.
+ * 4. Hash, including "#", optional.
+ */
+const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;
+var UrlType;
+(function (UrlType) {
+ UrlType[UrlType["Empty"] = 1] = "Empty";
+ UrlType[UrlType["Hash"] = 2] = "Hash";
+ UrlType[UrlType["Query"] = 3] = "Query";
+ UrlType[UrlType["RelativePath"] = 4] = "RelativePath";
+ UrlType[UrlType["AbsolutePath"] = 5] = "AbsolutePath";
+ UrlType[UrlType["SchemeRelative"] = 6] = "SchemeRelative";
+ UrlType[UrlType["Absolute"] = 7] = "Absolute";
+})(UrlType || (UrlType = {}));
+function isAbsoluteUrl(input) {
+ return schemeRegex.test(input);
+}
+function isSchemeRelativeUrl(input) {
+ return input.startsWith('//');
+}
+function isAbsolutePath(input) {
+ return input.startsWith('/');
+}
+function isFileUrl(input) {
+ return input.startsWith('file:');
+}
+function isRelative(input) {
+ return /^[.?#]/.test(input);
+}
+function parseAbsoluteUrl(input) {
+ const match = urlRegex.exec(input);
+ return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || '');
+}
+function parseFileUrl(input) {
+ const match = fileRegex.exec(input);
+ const path = match[2];
+ return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || '');
+}
+function makeUrl(scheme, user, host, port, path, query, hash) {
+ return {
+ scheme,
+ user,
+ host,
+ port,
+ path,
+ query,
+ hash,
+ type: UrlType.Absolute,
+ };
+}
+function parseUrl(input) {
+ if (isSchemeRelativeUrl(input)) {
+ const url = parseAbsoluteUrl('http:' + input);
+ url.scheme = '';
+ url.type = UrlType.SchemeRelative;
+ return url;
+ }
+ if (isAbsolutePath(input)) {
+ const url = parseAbsoluteUrl('http://foo.com' + input);
+ url.scheme = '';
+ url.host = '';
+ url.type = UrlType.AbsolutePath;
+ return url;
+ }
+ if (isFileUrl(input))
+ return parseFileUrl(input);
+ if (isAbsoluteUrl(input))
+ return parseAbsoluteUrl(input);
+ const url = parseAbsoluteUrl('http://foo.com/' + input);
+ url.scheme = '';
+ url.host = '';
+ url.type = input
+ ? input.startsWith('?')
+ ? UrlType.Query
+ : input.startsWith('#')
+ ? UrlType.Hash
+ : UrlType.RelativePath
+ : UrlType.Empty;
+ return url;
+}
+function stripPathFilename(path) {
+ // If a path ends with a parent directory "..", then it's a relative path with excess parent
+ // paths. It's not a file, so we can't strip it.
+ if (path.endsWith('/..'))
+ return path;
+ const index = path.lastIndexOf('/');
+ return path.slice(0, index + 1);
+}
+function mergePaths(url, base) {
+ normalizePath(base, base.type);
+ // If the path is just a "/", then it was an empty path to begin with (remember, we're a relative
+ // path).
+ if (url.path === '/') {
+ url.path = base.path;
+ }
+ else {
+ // Resolution happens relative to the base path's directory, not the file.
+ url.path = stripPathFilename(base.path) + url.path;
+ }
+}
+/**
+ * The path can have empty directories "//", unneeded parents "foo/..", or current directory
+ * "foo/.". We need to normalize to a standard representation.
+ */
+function normalizePath(url, type) {
+ const rel = type <= UrlType.RelativePath;
+ const pieces = url.path.split('/');
+ // We need to preserve the first piece always, so that we output a leading slash. The item at
+ // pieces[0] is an empty string.
+ let pointer = 1;
+ // Positive is the number of real directories we've output, used for popping a parent directory.
+ // Eg, "foo/bar/.." will have a positive 2, and we can decrement to be left with just "foo".
+ let positive = 0;
+ // We need to keep a trailing slash if we encounter an empty directory (eg, splitting "foo/" will
+ // generate `["foo", ""]` pieces). And, if we pop a parent directory. But once we encounter a
+ // real directory, we won't need to append, unless the other conditions happen again.
+ let addTrailingSlash = false;
+ for (let i = 1; i < pieces.length; i++) {
+ const piece = pieces[i];
+ // An empty directory, could be a trailing slash, or just a double "//" in the path.
+ if (!piece) {
+ addTrailingSlash = true;
+ continue;
+ }
+ // If we encounter a real directory, then we don't need to append anymore.
+ addTrailingSlash = false;
+ // A current directory, which we can always drop.
+ if (piece === '.')
+ continue;
+ // A parent directory, we need to see if there are any real directories we can pop. Else, we
+ // have an excess of parents, and we'll need to keep the "..".
+ if (piece === '..') {
+ if (positive) {
+ addTrailingSlash = true;
+ positive--;
+ pointer--;
+ }
+ else if (rel) {
+ // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute
+ // URL, protocol relative URL, or an absolute path, we don't need to keep excess.
+ pieces[pointer++] = piece;
+ }
+ continue;
+ }
+ // We've encountered a real directory. Move it to the next insertion pointer, which accounts for
+ // any popped or dropped directories.
+ pieces[pointer++] = piece;
+ positive++;
+ }
+ let path = '';
+ for (let i = 1; i < pointer; i++) {
+ path += '/' + pieces[i];
+ }
+ if (!path || (addTrailingSlash && !path.endsWith('/..'))) {
+ path += '/';
+ }
+ url.path = path;
+}
+/**
+ * Attempts to resolve `input` URL/path relative to `base`.
+ */
+function resolve(input, base) {
+ if (!input && !base)
+ return '';
+ const url = parseUrl(input);
+ let inputType = url.type;
+ if (base && inputType !== UrlType.Absolute) {
+ const baseUrl = parseUrl(base);
+ const baseType = baseUrl.type;
+ switch (inputType) {
+ case UrlType.Empty:
+ url.hash = baseUrl.hash;
+ // fall through
+ case UrlType.Hash:
+ url.query = baseUrl.query;
+ // fall through
+ case UrlType.Query:
+ case UrlType.RelativePath:
+ mergePaths(url, baseUrl);
+ // fall through
+ case UrlType.AbsolutePath:
+ // The host, user, and port are joined, you can't copy one without the others.
+ url.user = baseUrl.user;
+ url.host = baseUrl.host;
+ url.port = baseUrl.port;
+ // fall through
+ case UrlType.SchemeRelative:
+ // The input doesn't have a schema at least, so we need to copy at least that over.
+ url.scheme = baseUrl.scheme;
+ }
+ if (baseType > inputType)
+ inputType = baseType;
+ }
+ normalizePath(url, inputType);
+ const queryHash = url.query + url.hash;
+ switch (inputType) {
+ // This is impossible, because of the empty checks at the start of the function.
+ // case UrlType.Empty:
+ case UrlType.Hash:
+ case UrlType.Query:
+ return queryHash;
+ case UrlType.RelativePath: {
+ // The first char is always a "/", and we need it to be relative.
+ const path = url.path.slice(1);
+ if (!path)
+ return queryHash || '.';
+ if (isRelative(base || input) && !isRelative(path)) {
+ // If base started with a leading ".", or there is no base and input started with a ".",
+ // then we need to ensure that the relative path starts with a ".". We don't know if
+ // relative starts with a "..", though, so check before prepending.
+ return './' + path + queryHash;
+ }
+ return path + queryHash;
+ }
+ case UrlType.AbsolutePath:
+ return url.path + queryHash;
+ default:
+ return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;
+ }
+}
+
+export { resolve as default };
+//# sourceMappingURL=resolve-uri.mjs.map
diff --git a/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map
new file mode 100644
index 00000000..009d0434
--- /dev/null
+++ b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"resolve-uri.mjs","sources":["../src/resolve-uri.ts"],"sourcesContent":["// Matches the scheme of a URL, eg \"http://\"\nconst schemeRegex = /^[\\w+.-]+:\\/\\//;\n\n/**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n * 6. Query, including \"?\", optional.\n * 7. Hash, including \"#\", optional.\n */\nconst urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?(\\?[^#]*)?(#.*)?/;\n\n/**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may include \"/\", guaranteed.\n * 3. Query, including \"?\", optional.\n * 4. Hash, including \"#\", optional.\n */\nconst fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/#?]*)?)?(\\/?[^#?]*)(\\?[^#]*)?(#.*)?/i;\n\ntype Url = {\n scheme: string;\n user: string;\n host: string;\n port: string;\n path: string;\n query: string;\n hash: string;\n type: UrlType;\n};\n\nenum UrlType {\n Empty = 1,\n Hash = 2,\n Query = 3,\n RelativePath = 4,\n AbsolutePath = 5,\n SchemeRelative = 6,\n Absolute = 7,\n}\n\nfunction isAbsoluteUrl(input: string): boolean {\n return schemeRegex.test(input);\n}\n\nfunction isSchemeRelativeUrl(input: string): boolean {\n return input.startsWith('//');\n}\n\nfunction isAbsolutePath(input: string): boolean {\n return input.startsWith('/');\n}\n\nfunction isFileUrl(input: string): boolean {\n return input.startsWith('file:');\n}\n\nfunction isRelative(input: string): boolean {\n return /^[.?#]/.test(input);\n}\n\nfunction parseAbsoluteUrl(input: string): Url {\n const match = urlRegex.exec(input)!;\n return makeUrl(\n match[1],\n match[2] || '',\n match[3],\n match[4] || '',\n match[5] || '/',\n match[6] || '',\n match[7] || '',\n );\n}\n\nfunction parseFileUrl(input: string): Url {\n const match = fileRegex.exec(input)!;\n const path = match[2];\n return makeUrl(\n 'file:',\n '',\n match[1] || '',\n '',\n isAbsolutePath(path) ? path : '/' + path,\n match[3] || '',\n match[4] || '',\n );\n}\n\nfunction makeUrl(\n scheme: string,\n user: string,\n host: string,\n port: string,\n path: string,\n query: string,\n hash: string,\n): Url {\n return {\n scheme,\n user,\n host,\n port,\n path,\n query,\n hash,\n type: UrlType.Absolute,\n };\n}\n\nfunction parseUrl(input: string): Url {\n if (isSchemeRelativeUrl(input)) {\n const url = parseAbsoluteUrl('http:' + input);\n url.scheme = '';\n url.type = UrlType.SchemeRelative;\n return url;\n }\n\n if (isAbsolutePath(input)) {\n const url = parseAbsoluteUrl('http://foo.com' + input);\n url.scheme = '';\n url.host = '';\n url.type = UrlType.AbsolutePath;\n return url;\n }\n\n if (isFileUrl(input)) return parseFileUrl(input);\n\n if (isAbsoluteUrl(input)) return parseAbsoluteUrl(input);\n\n const url = parseAbsoluteUrl('http://foo.com/' + input);\n url.scheme = '';\n url.host = '';\n url.type = input\n ? input.startsWith('?')\n ? UrlType.Query\n : input.startsWith('#')\n ? UrlType.Hash\n : UrlType.RelativePath\n : UrlType.Empty;\n return url;\n}\n\nfunction stripPathFilename(path: string): string {\n // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n // paths. It's not a file, so we can't strip it.\n if (path.endsWith('/..')) return path;\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n\nfunction mergePaths(url: Url, base: Url) {\n normalizePath(base, base.type);\n\n // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n // path).\n if (url.path === '/') {\n url.path = base.path;\n } else {\n // Resolution happens relative to the base path's directory, not the file.\n url.path = stripPathFilename(base.path) + url.path;\n }\n}\n\n/**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\nfunction normalizePath(url: Url, type: UrlType) {\n const rel = type <= UrlType.RelativePath;\n const pieces = url.path.split('/');\n\n // We need to preserve the first piece always, so that we output a leading slash. The item at\n // pieces[0] is an empty string.\n let pointer = 1;\n\n // Positive is the number of real directories we've output, used for popping a parent directory.\n // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n let positive = 0;\n\n // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n // real directory, we won't need to append, unless the other conditions happen again.\n let addTrailingSlash = false;\n\n for (let i = 1; i < pieces.length; i++) {\n const piece = pieces[i];\n\n // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n if (!piece) {\n addTrailingSlash = true;\n continue;\n }\n\n // If we encounter a real directory, then we don't need to append anymore.\n addTrailingSlash = false;\n\n // A current directory, which we can always drop.\n if (piece === '.') continue;\n\n // A parent directory, we need to see if there are any real directories we can pop. Else, we\n // have an excess of parents, and we'll need to keep the \"..\".\n if (piece === '..') {\n if (positive) {\n addTrailingSlash = true;\n positive--;\n pointer--;\n } else if (rel) {\n // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n pieces[pointer++] = piece;\n }\n continue;\n }\n\n // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n // any popped or dropped directories.\n pieces[pointer++] = piece;\n positive++;\n }\n\n let path = '';\n for (let i = 1; i < pointer; i++) {\n path += '/' + pieces[i];\n }\n if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n path += '/';\n }\n url.path = path;\n}\n\n/**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\nexport default function resolve(input: string, base: string | undefined): string {\n if (!input && !base) return '';\n\n const url = parseUrl(input);\n let inputType = url.type;\n\n if (base && inputType !== UrlType.Absolute) {\n const baseUrl = parseUrl(base);\n const baseType = baseUrl.type;\n\n switch (inputType) {\n case UrlType.Empty:\n url.hash = baseUrl.hash;\n // fall through\n\n case UrlType.Hash:\n url.query = baseUrl.query;\n // fall through\n\n case UrlType.Query:\n case UrlType.RelativePath:\n mergePaths(url, baseUrl);\n // fall through\n\n case UrlType.AbsolutePath:\n // The host, user, and port are joined, you can't copy one without the others.\n url.user = baseUrl.user;\n url.host = baseUrl.host;\n url.port = baseUrl.port;\n // fall through\n\n case UrlType.SchemeRelative:\n // The input doesn't have a schema at least, so we need to copy at least that over.\n url.scheme = baseUrl.scheme;\n }\n if (baseType > inputType) inputType = baseType;\n }\n\n normalizePath(url, inputType);\n\n const queryHash = url.query + url.hash;\n switch (inputType) {\n // This is impossible, because of the empty checks at the start of the function.\n // case UrlType.Empty:\n\n case UrlType.Hash:\n case UrlType.Query:\n return queryHash;\n\n case UrlType.RelativePath: {\n // The first char is always a \"/\", and we need it to be relative.\n const path = url.path.slice(1);\n\n if (!path) return queryHash || '.';\n\n if (isRelative(base || input) && !isRelative(path)) {\n // If base started with a leading \".\", or there is no base and input started with a \".\",\n // then we need to ensure that the relative path starts with a \".\". We don't know if\n // relative starts with a \"..\", though, so check before prepending.\n return './' + path + queryHash;\n }\n\n return path + queryHash;\n }\n\n case UrlType.AbsolutePath:\n return url.path + queryHash;\n\n default:\n return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;\n }\n}\n"],"names":[],"mappings":"AAAA;AACA,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAErC;;;;;;;;;;AAUA,MAAM,QAAQ,GAAG,0EAA0E,CAAC;AAE5F;;;;;;;;;AASA,MAAM,SAAS,GAAG,iEAAiE,CAAC;AAapF,IAAK,OAQJ;AARD,WAAK,OAAO;IACV,uCAAS,CAAA;IACT,qCAAQ,CAAA;IACR,uCAAS,CAAA;IACT,qDAAgB,CAAA;IAChB,qDAAgB,CAAA;IAChB,yDAAkB,CAAA;IAClB,6CAAY,CAAA;AACd,CAAC,EARI,OAAO,KAAP,OAAO,QAQX;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;IACpC,OAAO,OAAO,CACZ,KAAK,CAAC,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EACf,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CACf,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,OAAO,CACZ,OAAO,EACP,EAAE,EACF,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,EAAE,EACF,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,EACxC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CACf,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CACd,MAAc,EACd,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,KAAa,EACb,IAAY;IAEZ,OAAO;QACL,MAAM;QACN,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,IAAI;QACJ,IAAI,EAAE,OAAO,CAAC,QAAQ;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;QAC9B,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;QAC9C,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC;QAClC,OAAO,GAAG,CAAC;KACZ;IAED,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;QACzB,MAAM,GAAG,GAAG,gBAAgB,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC;QACvD,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;QACd,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;QAChC,OAAO,GAAG,CAAC;KACZ;IAED,IAAI,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAEjD,IAAI,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAEzD,MAAM,GAAG,GAAG,gBAAgB,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC;IACxD,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;IAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IACd,GAAG,CAAC,IAAI,GAAG,KAAK;UACZ,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;cACnB,OAAO,CAAC,KAAK;cACb,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;kBACrB,OAAO,CAAC,IAAI;kBACZ,OAAO,CAAC,YAAY;UACtB,OAAO,CAAC,KAAK,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;;;IAGrC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CAAC,GAAQ,EAAE,IAAS;IACrC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;;IAI/B,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;QACpB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;KACtB;SAAM;;QAEL,GAAG,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;KACpD;AACH,CAAC;AAED;;;;AAIA,SAAS,aAAa,CAAC,GAAQ,EAAE,IAAa;IAC5C,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IACzC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;;IAInC,IAAI,OAAO,GAAG,CAAC,CAAC;;;IAIhB,IAAI,QAAQ,GAAG,CAAC,CAAC;;;;IAKjB,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;QAGxB,IAAI,CAAC,KAAK,EAAE;YACV,gBAAgB,GAAG,IAAI,CAAC;YACxB,SAAS;SACV;;QAGD,gBAAgB,GAAG,KAAK,CAAC;;QAGzB,IAAI,KAAK,KAAK,GAAG;YAAE,SAAS;;;QAI5B,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,IAAI,QAAQ,EAAE;gBACZ,gBAAgB,GAAG,IAAI,CAAC;gBACxB,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,CAAC;aACX;iBAAM,IAAI,GAAG,EAAE;;;gBAGd,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC;aAC3B;YACD,SAAS;SACV;;;QAID,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC;QAC1B,QAAQ,EAAE,CAAC;KACZ;IAED,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KACzB;IACD,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;QACxD,IAAI,IAAI,GAAG,CAAC;KACb;IACD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AAClB,CAAC;AAED;;;SAGwB,OAAO,CAAC,KAAa,EAAE,IAAwB;IACrE,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAE/B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;IAEzB,IAAI,IAAI,IAAI,SAAS,KAAK,OAAO,CAAC,QAAQ,EAAE;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;QAE9B,QAAQ,SAAS;YACf,KAAK,OAAO,CAAC,KAAK;gBAChB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;YAG1B,KAAK,OAAO,CAAC,IAAI;gBACf,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;YAG5B,KAAK,OAAO,CAAC,KAAK,CAAC;YACnB,KAAK,OAAO,CAAC,YAAY;gBACvB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;;YAG3B,KAAK,OAAO,CAAC,YAAY;;gBAEvB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACxB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACxB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;YAG1B,KAAK,OAAO,CAAC,cAAc;;gBAEzB,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;SAC/B;QACD,IAAI,QAAQ,GAAG,SAAS;YAAE,SAAS,GAAG,QAAQ,CAAC;KAChD;IAED,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAE9B,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;IACvC,QAAQ,SAAS;;;QAIf,KAAK,OAAO,CAAC,IAAI,CAAC;QAClB,KAAK,OAAO,CAAC,KAAK;YAChB,OAAO,SAAS,CAAC;QAEnB,KAAK,OAAO,CAAC,YAAY,EAAE;;YAEzB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,IAAI,GAAG,CAAC;YAEnC,IAAI,UAAU,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;;;;gBAIlD,OAAO,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;aAChC;YAED,OAAO,IAAI,GAAG,SAAS,CAAC;SACzB;QAED,KAAK,OAAO,CAAC,YAAY;YACvB,OAAO,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC;QAE9B;YACE,OAAO,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC;KACpF;AACH;;;;"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js
new file mode 100644
index 00000000..0700a2d6
--- /dev/null
+++ b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js
@@ -0,0 +1,250 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.resolveURI = factory());
+})(this, (function () { 'use strict';
+
+ // Matches the scheme of a URL, eg "http://"
+ const schemeRegex = /^[\w+.-]+:\/\//;
+ /**
+ * Matches the parts of a URL:
+ * 1. Scheme, including ":", guaranteed.
+ * 2. User/password, including "@", optional.
+ * 3. Host, guaranteed.
+ * 4. Port, including ":", optional.
+ * 5. Path, including "/", optional.
+ * 6. Query, including "?", optional.
+ * 7. Hash, including "#", optional.
+ */
+ const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/;
+ /**
+ * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start
+ * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).
+ *
+ * 1. Host, optional.
+ * 2. Path, which may include "/", guaranteed.
+ * 3. Query, including "?", optional.
+ * 4. Hash, including "#", optional.
+ */
+ const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;
+ var UrlType;
+ (function (UrlType) {
+ UrlType[UrlType["Empty"] = 1] = "Empty";
+ UrlType[UrlType["Hash"] = 2] = "Hash";
+ UrlType[UrlType["Query"] = 3] = "Query";
+ UrlType[UrlType["RelativePath"] = 4] = "RelativePath";
+ UrlType[UrlType["AbsolutePath"] = 5] = "AbsolutePath";
+ UrlType[UrlType["SchemeRelative"] = 6] = "SchemeRelative";
+ UrlType[UrlType["Absolute"] = 7] = "Absolute";
+ })(UrlType || (UrlType = {}));
+ function isAbsoluteUrl(input) {
+ return schemeRegex.test(input);
+ }
+ function isSchemeRelativeUrl(input) {
+ return input.startsWith('//');
+ }
+ function isAbsolutePath(input) {
+ return input.startsWith('/');
+ }
+ function isFileUrl(input) {
+ return input.startsWith('file:');
+ }
+ function isRelative(input) {
+ return /^[.?#]/.test(input);
+ }
+ function parseAbsoluteUrl(input) {
+ const match = urlRegex.exec(input);
+ return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || '');
+ }
+ function parseFileUrl(input) {
+ const match = fileRegex.exec(input);
+ const path = match[2];
+ return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || '');
+ }
+ function makeUrl(scheme, user, host, port, path, query, hash) {
+ return {
+ scheme,
+ user,
+ host,
+ port,
+ path,
+ query,
+ hash,
+ type: UrlType.Absolute,
+ };
+ }
+ function parseUrl(input) {
+ if (isSchemeRelativeUrl(input)) {
+ const url = parseAbsoluteUrl('http:' + input);
+ url.scheme = '';
+ url.type = UrlType.SchemeRelative;
+ return url;
+ }
+ if (isAbsolutePath(input)) {
+ const url = parseAbsoluteUrl('http://foo.com' + input);
+ url.scheme = '';
+ url.host = '';
+ url.type = UrlType.AbsolutePath;
+ return url;
+ }
+ if (isFileUrl(input))
+ return parseFileUrl(input);
+ if (isAbsoluteUrl(input))
+ return parseAbsoluteUrl(input);
+ const url = parseAbsoluteUrl('http://foo.com/' + input);
+ url.scheme = '';
+ url.host = '';
+ url.type = input
+ ? input.startsWith('?')
+ ? UrlType.Query
+ : input.startsWith('#')
+ ? UrlType.Hash
+ : UrlType.RelativePath
+ : UrlType.Empty;
+ return url;
+ }
+ function stripPathFilename(path) {
+ // If a path ends with a parent directory "..", then it's a relative path with excess parent
+ // paths. It's not a file, so we can't strip it.
+ if (path.endsWith('/..'))
+ return path;
+ const index = path.lastIndexOf('/');
+ return path.slice(0, index + 1);
+ }
+ function mergePaths(url, base) {
+ normalizePath(base, base.type);
+ // If the path is just a "/", then it was an empty path to begin with (remember, we're a relative
+ // path).
+ if (url.path === '/') {
+ url.path = base.path;
+ }
+ else {
+ // Resolution happens relative to the base path's directory, not the file.
+ url.path = stripPathFilename(base.path) + url.path;
+ }
+ }
+ /**
+ * The path can have empty directories "//", unneeded parents "foo/..", or current directory
+ * "foo/.". We need to normalize to a standard representation.
+ */
+ function normalizePath(url, type) {
+ const rel = type <= UrlType.RelativePath;
+ const pieces = url.path.split('/');
+ // We need to preserve the first piece always, so that we output a leading slash. The item at
+ // pieces[0] is an empty string.
+ let pointer = 1;
+ // Positive is the number of real directories we've output, used for popping a parent directory.
+ // Eg, "foo/bar/.." will have a positive 2, and we can decrement to be left with just "foo".
+ let positive = 0;
+ // We need to keep a trailing slash if we encounter an empty directory (eg, splitting "foo/" will
+ // generate `["foo", ""]` pieces). And, if we pop a parent directory. But once we encounter a
+ // real directory, we won't need to append, unless the other conditions happen again.
+ let addTrailingSlash = false;
+ for (let i = 1; i < pieces.length; i++) {
+ const piece = pieces[i];
+ // An empty directory, could be a trailing slash, or just a double "//" in the path.
+ if (!piece) {
+ addTrailingSlash = true;
+ continue;
+ }
+ // If we encounter a real directory, then we don't need to append anymore.
+ addTrailingSlash = false;
+ // A current directory, which we can always drop.
+ if (piece === '.')
+ continue;
+ // A parent directory, we need to see if there are any real directories we can pop. Else, we
+ // have an excess of parents, and we'll need to keep the "..".
+ if (piece === '..') {
+ if (positive) {
+ addTrailingSlash = true;
+ positive--;
+ pointer--;
+ }
+ else if (rel) {
+ // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute
+ // URL, protocol relative URL, or an absolute path, we don't need to keep excess.
+ pieces[pointer++] = piece;
+ }
+ continue;
+ }
+ // We've encountered a real directory. Move it to the next insertion pointer, which accounts for
+ // any popped or dropped directories.
+ pieces[pointer++] = piece;
+ positive++;
+ }
+ let path = '';
+ for (let i = 1; i < pointer; i++) {
+ path += '/' + pieces[i];
+ }
+ if (!path || (addTrailingSlash && !path.endsWith('/..'))) {
+ path += '/';
+ }
+ url.path = path;
+ }
+ /**
+ * Attempts to resolve `input` URL/path relative to `base`.
+ */
+ function resolve(input, base) {
+ if (!input && !base)
+ return '';
+ const url = parseUrl(input);
+ let inputType = url.type;
+ if (base && inputType !== UrlType.Absolute) {
+ const baseUrl = parseUrl(base);
+ const baseType = baseUrl.type;
+ switch (inputType) {
+ case UrlType.Empty:
+ url.hash = baseUrl.hash;
+ // fall through
+ case UrlType.Hash:
+ url.query = baseUrl.query;
+ // fall through
+ case UrlType.Query:
+ case UrlType.RelativePath:
+ mergePaths(url, baseUrl);
+ // fall through
+ case UrlType.AbsolutePath:
+ // The host, user, and port are joined, you can't copy one without the others.
+ url.user = baseUrl.user;
+ url.host = baseUrl.host;
+ url.port = baseUrl.port;
+ // fall through
+ case UrlType.SchemeRelative:
+ // The input doesn't have a schema at least, so we need to copy at least that over.
+ url.scheme = baseUrl.scheme;
+ }
+ if (baseType > inputType)
+ inputType = baseType;
+ }
+ normalizePath(url, inputType);
+ const queryHash = url.query + url.hash;
+ switch (inputType) {
+ // This is impossible, because of the empty checks at the start of the function.
+ // case UrlType.Empty:
+ case UrlType.Hash:
+ case UrlType.Query:
+ return queryHash;
+ case UrlType.RelativePath: {
+ // The first char is always a "/", and we need it to be relative.
+ const path = url.path.slice(1);
+ if (!path)
+ return queryHash || '.';
+ if (isRelative(base || input) && !isRelative(path)) {
+ // If base started with a leading ".", or there is no base and input started with a ".",
+ // then we need to ensure that the relative path starts with a ".". We don't know if
+ // relative starts with a "..", though, so check before prepending.
+ return './' + path + queryHash;
+ }
+ return path + queryHash;
+ }
+ case UrlType.AbsolutePath:
+ return url.path + queryHash;
+ default:
+ return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;
+ }
+ }
+
+ return resolve;
+
+}));
+//# sourceMappingURL=resolve-uri.umd.js.map
diff --git a/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map
new file mode 100644
index 00000000..a3e39eba
--- /dev/null
+++ b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"resolve-uri.umd.js","sources":["../src/resolve-uri.ts"],"sourcesContent":["// Matches the scheme of a URL, eg \"http://\"\nconst schemeRegex = /^[\\w+.-]+:\\/\\//;\n\n/**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n * 6. Query, including \"?\", optional.\n * 7. Hash, including \"#\", optional.\n */\nconst urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?(\\?[^#]*)?(#.*)?/;\n\n/**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may include \"/\", guaranteed.\n * 3. Query, including \"?\", optional.\n * 4. Hash, including \"#\", optional.\n */\nconst fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/#?]*)?)?(\\/?[^#?]*)(\\?[^#]*)?(#.*)?/i;\n\ntype Url = {\n scheme: string;\n user: string;\n host: string;\n port: string;\n path: string;\n query: string;\n hash: string;\n type: UrlType;\n};\n\nenum UrlType {\n Empty = 1,\n Hash = 2,\n Query = 3,\n RelativePath = 4,\n AbsolutePath = 5,\n SchemeRelative = 6,\n Absolute = 7,\n}\n\nfunction isAbsoluteUrl(input: string): boolean {\n return schemeRegex.test(input);\n}\n\nfunction isSchemeRelativeUrl(input: string): boolean {\n return input.startsWith('//');\n}\n\nfunction isAbsolutePath(input: string): boolean {\n return input.startsWith('/');\n}\n\nfunction isFileUrl(input: string): boolean {\n return input.startsWith('file:');\n}\n\nfunction isRelative(input: string): boolean {\n return /^[.?#]/.test(input);\n}\n\nfunction parseAbsoluteUrl(input: string): Url {\n const match = urlRegex.exec(input)!;\n return makeUrl(\n match[1],\n match[2] || '',\n match[3],\n match[4] || '',\n match[5] || '/',\n match[6] || '',\n match[7] || '',\n );\n}\n\nfunction parseFileUrl(input: string): Url {\n const match = fileRegex.exec(input)!;\n const path = match[2];\n return makeUrl(\n 'file:',\n '',\n match[1] || '',\n '',\n isAbsolutePath(path) ? path : '/' + path,\n match[3] || '',\n match[4] || '',\n );\n}\n\nfunction makeUrl(\n scheme: string,\n user: string,\n host: string,\n port: string,\n path: string,\n query: string,\n hash: string,\n): Url {\n return {\n scheme,\n user,\n host,\n port,\n path,\n query,\n hash,\n type: UrlType.Absolute,\n };\n}\n\nfunction parseUrl(input: string): Url {\n if (isSchemeRelativeUrl(input)) {\n const url = parseAbsoluteUrl('http:' + input);\n url.scheme = '';\n url.type = UrlType.SchemeRelative;\n return url;\n }\n\n if (isAbsolutePath(input)) {\n const url = parseAbsoluteUrl('http://foo.com' + input);\n url.scheme = '';\n url.host = '';\n url.type = UrlType.AbsolutePath;\n return url;\n }\n\n if (isFileUrl(input)) return parseFileUrl(input);\n\n if (isAbsoluteUrl(input)) return parseAbsoluteUrl(input);\n\n const url = parseAbsoluteUrl('http://foo.com/' + input);\n url.scheme = '';\n url.host = '';\n url.type = input\n ? input.startsWith('?')\n ? UrlType.Query\n : input.startsWith('#')\n ? UrlType.Hash\n : UrlType.RelativePath\n : UrlType.Empty;\n return url;\n}\n\nfunction stripPathFilename(path: string): string {\n // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n // paths. It's not a file, so we can't strip it.\n if (path.endsWith('/..')) return path;\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n\nfunction mergePaths(url: Url, base: Url) {\n normalizePath(base, base.type);\n\n // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n // path).\n if (url.path === '/') {\n url.path = base.path;\n } else {\n // Resolution happens relative to the base path's directory, not the file.\n url.path = stripPathFilename(base.path) + url.path;\n }\n}\n\n/**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\nfunction normalizePath(url: Url, type: UrlType) {\n const rel = type <= UrlType.RelativePath;\n const pieces = url.path.split('/');\n\n // We need to preserve the first piece always, so that we output a leading slash. The item at\n // pieces[0] is an empty string.\n let pointer = 1;\n\n // Positive is the number of real directories we've output, used for popping a parent directory.\n // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n let positive = 0;\n\n // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n // real directory, we won't need to append, unless the other conditions happen again.\n let addTrailingSlash = false;\n\n for (let i = 1; i < pieces.length; i++) {\n const piece = pieces[i];\n\n // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n if (!piece) {\n addTrailingSlash = true;\n continue;\n }\n\n // If we encounter a real directory, then we don't need to append anymore.\n addTrailingSlash = false;\n\n // A current directory, which we can always drop.\n if (piece === '.') continue;\n\n // A parent directory, we need to see if there are any real directories we can pop. Else, we\n // have an excess of parents, and we'll need to keep the \"..\".\n if (piece === '..') {\n if (positive) {\n addTrailingSlash = true;\n positive--;\n pointer--;\n } else if (rel) {\n // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n pieces[pointer++] = piece;\n }\n continue;\n }\n\n // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n // any popped or dropped directories.\n pieces[pointer++] = piece;\n positive++;\n }\n\n let path = '';\n for (let i = 1; i < pointer; i++) {\n path += '/' + pieces[i];\n }\n if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n path += '/';\n }\n url.path = path;\n}\n\n/**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\nexport default function resolve(input: string, base: string | undefined): string {\n if (!input && !base) return '';\n\n const url = parseUrl(input);\n let inputType = url.type;\n\n if (base && inputType !== UrlType.Absolute) {\n const baseUrl = parseUrl(base);\n const baseType = baseUrl.type;\n\n switch (inputType) {\n case UrlType.Empty:\n url.hash = baseUrl.hash;\n // fall through\n\n case UrlType.Hash:\n url.query = baseUrl.query;\n // fall through\n\n case UrlType.Query:\n case UrlType.RelativePath:\n mergePaths(url, baseUrl);\n // fall through\n\n case UrlType.AbsolutePath:\n // The host, user, and port are joined, you can't copy one without the others.\n url.user = baseUrl.user;\n url.host = baseUrl.host;\n url.port = baseUrl.port;\n // fall through\n\n case UrlType.SchemeRelative:\n // The input doesn't have a schema at least, so we need to copy at least that over.\n url.scheme = baseUrl.scheme;\n }\n if (baseType > inputType) inputType = baseType;\n }\n\n normalizePath(url, inputType);\n\n const queryHash = url.query + url.hash;\n switch (inputType) {\n // This is impossible, because of the empty checks at the start of the function.\n // case UrlType.Empty:\n\n case UrlType.Hash:\n case UrlType.Query:\n return queryHash;\n\n case UrlType.RelativePath: {\n // The first char is always a \"/\", and we need it to be relative.\n const path = url.path.slice(1);\n\n if (!path) return queryHash || '.';\n\n if (isRelative(base || input) && !isRelative(path)) {\n // If base started with a leading \".\", or there is no base and input started with a \".\",\n // then we need to ensure that the relative path starts with a \".\". We don't know if\n // relative starts with a \"..\", though, so check before prepending.\n return './' + path + queryHash;\n }\n\n return path + queryHash;\n }\n\n case UrlType.AbsolutePath:\n return url.path + queryHash;\n\n default:\n return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;\n }\n}\n"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/resolve-uri/dist/types/resolve-uri.d.ts b/node_modules/@jridgewell/resolve-uri/dist/types/resolve-uri.d.ts
new file mode 100644
index 00000000..b7f0b3b2
--- /dev/null
+++ b/node_modules/@jridgewell/resolve-uri/dist/types/resolve-uri.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Attempts to resolve `input` URL/path relative to `base`.
+ */
+export default function resolve(input: string, base: string | undefined): string;
diff --git a/node_modules/@jridgewell/resolve-uri/package.json b/node_modules/@jridgewell/resolve-uri/package.json
new file mode 100644
index 00000000..114937a0
--- /dev/null
+++ b/node_modules/@jridgewell/resolve-uri/package.json
@@ -0,0 +1,69 @@
+{
+ "name": "@jridgewell/resolve-uri",
+ "version": "3.1.0",
+ "description": "Resolve a URI relative to an optional base URI",
+ "keywords": [
+ "resolve",
+ "uri",
+ "url",
+ "path"
+ ],
+ "author": "Justin Ridgewell ",
+ "license": "MIT",
+ "repository": "https://github.com/jridgewell/resolve-uri",
+ "main": "dist/resolve-uri.umd.js",
+ "module": "dist/resolve-uri.mjs",
+ "typings": "dist/types/resolve-uri.d.ts",
+ "exports": {
+ ".": [
+ {
+ "types": "./dist/types/resolve-uri.d.ts",
+ "browser": "./dist/resolve-uri.umd.js",
+ "require": "./dist/resolve-uri.umd.js",
+ "import": "./dist/resolve-uri.mjs"
+ },
+ "./dist/resolve-uri.umd.js"
+ ],
+ "./package.json": "./package.json"
+ },
+ "files": [
+ "dist"
+ ],
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "scripts": {
+ "prebuild": "rm -rf dist",
+ "build": "run-s -n build:*",
+ "build:rollup": "rollup -c rollup.config.js",
+ "build:ts": "tsc --project tsconfig.build.json",
+ "lint": "run-s -n lint:*",
+ "lint:prettier": "npm run test:lint:prettier -- --write",
+ "lint:ts": "npm run test:lint:ts -- --fix",
+ "pretest": "run-s build:rollup",
+ "test": "run-s -n test:lint test:only",
+ "test:debug": "mocha --inspect-brk",
+ "test:lint": "run-s -n test:lint:*",
+ "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'",
+ "test:lint:ts": "eslint '{src,test}/**/*.ts'",
+ "test:only": "mocha",
+ "test:coverage": "c8 mocha",
+ "test:watch": "mocha --watch",
+ "prepublishOnly": "npm run preversion",
+ "preversion": "run-s test build"
+ },
+ "devDependencies": {
+ "@jridgewell/resolve-uri-latest": "npm:@jridgewell/resolve-uri@*",
+ "@rollup/plugin-typescript": "8.3.0",
+ "@typescript-eslint/eslint-plugin": "5.10.0",
+ "@typescript-eslint/parser": "5.10.0",
+ "c8": "7.11.0",
+ "eslint": "8.7.0",
+ "eslint-config-prettier": "8.3.0",
+ "mocha": "9.2.0",
+ "npm-run-all": "4.1.5",
+ "prettier": "2.5.1",
+ "rollup": "2.66.0",
+ "typescript": "4.5.5"
+ }
+}
diff --git a/node_modules/@jridgewell/set-array/LICENSE b/node_modules/@jridgewell/set-array/LICENSE
new file mode 100644
index 00000000..352f0715
--- /dev/null
+++ b/node_modules/@jridgewell/set-array/LICENSE
@@ -0,0 +1,19 @@
+Copyright 2022 Justin Ridgewell
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@jridgewell/set-array/README.md b/node_modules/@jridgewell/set-array/README.md
new file mode 100644
index 00000000..2ed155ff
--- /dev/null
+++ b/node_modules/@jridgewell/set-array/README.md
@@ -0,0 +1,37 @@
+# @jridgewell/set-array
+
+> Like a Set, but provides the index of the `key` in the backing array
+
+This is designed to allow synchronizing a second array with the contents of the backing array, like
+how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`, and there
+are never duplicates.
+
+## Installation
+
+```sh
+npm install @jridgewell/set-array
+```
+
+## Usage
+
+```js
+import { SetArray, get, put, pop } from '@jridgewell/set-array';
+
+const sa = new SetArray();
+
+let index = put(sa, 'first');
+assert.strictEqual(index, 0);
+
+index = put(sa, 'second');
+assert.strictEqual(index, 1);
+
+assert.deepEqual(sa.array, [ 'first', 'second' ]);
+
+index = get(sa, 'first');
+assert.strictEqual(index, 0);
+
+pop(sa);
+index = get(sa, 'second');
+assert.strictEqual(index, undefined);
+assert.deepEqual(sa.array, [ 'first' ]);
+```
diff --git a/node_modules/@jridgewell/set-array/dist/set-array.mjs b/node_modules/@jridgewell/set-array/dist/set-array.mjs
new file mode 100644
index 00000000..b7f1a9cc
--- /dev/null
+++ b/node_modules/@jridgewell/set-array/dist/set-array.mjs
@@ -0,0 +1,48 @@
+/**
+ * Gets the index associated with `key` in the backing array, if it is already present.
+ */
+let get;
+/**
+ * Puts `key` into the backing array, if it is not already present. Returns
+ * the index of the `key` in the backing array.
+ */
+let put;
+/**
+ * Pops the last added item out of the SetArray.
+ */
+let pop;
+/**
+ * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the
+ * index of the `key` in the backing array.
+ *
+ * This is designed to allow synchronizing a second array with the contents of the backing array,
+ * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,
+ * and there are never duplicates.
+ */
+class SetArray {
+ constructor() {
+ this._indexes = { __proto__: null };
+ this.array = [];
+ }
+}
+(() => {
+ get = (strarr, key) => strarr._indexes[key];
+ put = (strarr, key) => {
+ // The key may or may not be present. If it is present, it's a number.
+ const index = get(strarr, key);
+ if (index !== undefined)
+ return index;
+ const { array, _indexes: indexes } = strarr;
+ return (indexes[key] = array.push(key) - 1);
+ };
+ pop = (strarr) => {
+ const { array, _indexes: indexes } = strarr;
+ if (array.length === 0)
+ return;
+ const last = array.pop();
+ indexes[last] = undefined;
+ };
+})();
+
+export { SetArray, get, pop, put };
+//# sourceMappingURL=set-array.mjs.map
diff --git a/node_modules/@jridgewell/set-array/dist/set-array.mjs.map b/node_modules/@jridgewell/set-array/dist/set-array.mjs.map
new file mode 100644
index 00000000..ead56431
--- /dev/null
+++ b/node_modules/@jridgewell/set-array/dist/set-array.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"set-array.mjs","sources":["../src/set-array.ts"],"sourcesContent":["/**\n * Gets the index associated with `key` in the backing array, if it is already present.\n */\nexport let get: (strarr: SetArray, key: string) => number | undefined;\n\n/**\n * Puts `key` into the backing array, if it is not already present. Returns\n * the index of the `key` in the backing array.\n */\nexport let put: (strarr: SetArray, key: string) => number;\n\n/**\n * Pops the last added item out of the SetArray.\n */\nexport let pop: (strarr: SetArray) => void;\n\n/**\n * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the\n * index of the `key` in the backing array.\n *\n * This is designed to allow synchronizing a second array with the contents of the backing array,\n * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,\n * and there are never duplicates.\n */\nexport class SetArray {\n private declare _indexes: { [key: string]: number | undefined };\n declare array: readonly string[];\n\n constructor() {\n this._indexes = { __proto__: null } as any;\n this.array = [];\n }\n\n static {\n get = (strarr, key) => strarr._indexes[key];\n\n put = (strarr, key) => {\n // The key may or may not be present. If it is present, it's a number.\n const index = get(strarr, key);\n if (index !== undefined) return index;\n\n const { array, _indexes: indexes } = strarr;\n\n return (indexes[key] = (array as string[]).push(key) - 1);\n };\n\n pop = (strarr) => {\n const { array, _indexes: indexes } = strarr;\n if (array.length === 0) return;\n\n const last = (array as string[]).pop()!;\n indexes[last] = undefined;\n };\n }\n}\n"],"names":[],"mappings":"AAAA;;;IAGW,IAA2D;AAEtE;;;;IAIW,IAA+C;AAE1D;;;IAGW,IAAgC;AAE3C;;;;;;;;MAQa,QAAQ;IAInB;QACE,IAAI,CAAC,QAAQ,GAAG,EAAE,SAAS,EAAE,IAAI,EAAS,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;KACjB;CAuBF;AArBC;IACE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE5C,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG;;QAEhB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAEtC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAE5C,QAAQ,OAAO,CAAC,GAAG,CAAC,GAAI,KAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;KAC3D,CAAC;IAEF,GAAG,GAAG,CAAC,MAAM;QACX,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE/B,MAAM,IAAI,GAAI,KAAkB,CAAC,GAAG,EAAG,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;KAC3B,CAAC;AACJ,CAAC,GAAA;;;;"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/set-array/dist/set-array.umd.js b/node_modules/@jridgewell/set-array/dist/set-array.umd.js
new file mode 100644
index 00000000..a1c200a1
--- /dev/null
+++ b/node_modules/@jridgewell/set-array/dist/set-array.umd.js
@@ -0,0 +1,58 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.setArray = {}));
+})(this, (function (exports) { 'use strict';
+
+ /**
+ * Gets the index associated with `key` in the backing array, if it is already present.
+ */
+ exports.get = void 0;
+ /**
+ * Puts `key` into the backing array, if it is not already present. Returns
+ * the index of the `key` in the backing array.
+ */
+ exports.put = void 0;
+ /**
+ * Pops the last added item out of the SetArray.
+ */
+ exports.pop = void 0;
+ /**
+ * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the
+ * index of the `key` in the backing array.
+ *
+ * This is designed to allow synchronizing a second array with the contents of the backing array,
+ * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,
+ * and there are never duplicates.
+ */
+ class SetArray {
+ constructor() {
+ this._indexes = { __proto__: null };
+ this.array = [];
+ }
+ }
+ (() => {
+ exports.get = (strarr, key) => strarr._indexes[key];
+ exports.put = (strarr, key) => {
+ // The key may or may not be present. If it is present, it's a number.
+ const index = exports.get(strarr, key);
+ if (index !== undefined)
+ return index;
+ const { array, _indexes: indexes } = strarr;
+ return (indexes[key] = array.push(key) - 1);
+ };
+ exports.pop = (strarr) => {
+ const { array, _indexes: indexes } = strarr;
+ if (array.length === 0)
+ return;
+ const last = array.pop();
+ indexes[last] = undefined;
+ };
+ })();
+
+ exports.SetArray = SetArray;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+}));
+//# sourceMappingURL=set-array.umd.js.map
diff --git a/node_modules/@jridgewell/set-array/dist/set-array.umd.js.map b/node_modules/@jridgewell/set-array/dist/set-array.umd.js.map
new file mode 100644
index 00000000..10005af8
--- /dev/null
+++ b/node_modules/@jridgewell/set-array/dist/set-array.umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"set-array.umd.js","sources":["../src/set-array.ts"],"sourcesContent":["/**\n * Gets the index associated with `key` in the backing array, if it is already present.\n */\nexport let get: (strarr: SetArray, key: string) => number | undefined;\n\n/**\n * Puts `key` into the backing array, if it is not already present. Returns\n * the index of the `key` in the backing array.\n */\nexport let put: (strarr: SetArray, key: string) => number;\n\n/**\n * Pops the last added item out of the SetArray.\n */\nexport let pop: (strarr: SetArray) => void;\n\n/**\n * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the\n * index of the `key` in the backing array.\n *\n * This is designed to allow synchronizing a second array with the contents of the backing array,\n * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,\n * and there are never duplicates.\n */\nexport class SetArray {\n private declare _indexes: { [key: string]: number | undefined };\n declare array: readonly string[];\n\n constructor() {\n this._indexes = { __proto__: null } as any;\n this.array = [];\n }\n\n static {\n get = (strarr, key) => strarr._indexes[key];\n\n put = (strarr, key) => {\n // The key may or may not be present. If it is present, it's a number.\n const index = get(strarr, key);\n if (index !== undefined) return index;\n\n const { array, _indexes: indexes } = strarr;\n\n return (indexes[key] = (array as string[]).push(key) - 1);\n };\n\n pop = (strarr) => {\n const { array, _indexes: indexes } = strarr;\n if (array.length === 0) return;\n\n const last = (array as string[]).pop()!;\n indexes[last] = undefined;\n };\n }\n}\n"],"names":["get","put","pop"],"mappings":";;;;;;IAAA;;;AAGWA,yBAA2D;IAEtE;;;;AAIWC,yBAA+C;IAE1D;;;AAGWC,yBAAgC;IAE3C;;;;;;;;UAQa,QAAQ;QAInB;YACE,IAAI,CAAC,QAAQ,GAAG,EAAE,SAAS,EAAE,IAAI,EAAS,CAAC;YAC3C,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;SACjB;KAuBF;IArBC;QACEF,WAAG,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE5CC,WAAG,GAAG,CAAC,MAAM,EAAE,GAAG;;YAEhB,MAAM,KAAK,GAAGD,WAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YAEtC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;YAE5C,QAAQ,OAAO,CAAC,GAAG,CAAC,GAAI,KAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;SAC3D,CAAC;QAEFE,WAAG,GAAG,CAAC,MAAM;YACX,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;YAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAE/B,MAAM,IAAI,GAAI,KAAkB,CAAC,GAAG,EAAG,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;SAC3B,CAAC;IACJ,CAAC,GAAA;;;;;;;;;;"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/set-array/dist/types/set-array.d.ts b/node_modules/@jridgewell/set-array/dist/types/set-array.d.ts
new file mode 100644
index 00000000..7ed59b96
--- /dev/null
+++ b/node_modules/@jridgewell/set-array/dist/types/set-array.d.ts
@@ -0,0 +1,26 @@
+/**
+ * Gets the index associated with `key` in the backing array, if it is already present.
+ */
+export declare let get: (strarr: SetArray, key: string) => number | undefined;
+/**
+ * Puts `key` into the backing array, if it is not already present. Returns
+ * the index of the `key` in the backing array.
+ */
+export declare let put: (strarr: SetArray, key: string) => number;
+/**
+ * Pops the last added item out of the SetArray.
+ */
+export declare let pop: (strarr: SetArray) => void;
+/**
+ * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the
+ * index of the `key` in the backing array.
+ *
+ * This is designed to allow synchronizing a second array with the contents of the backing array,
+ * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,
+ * and there are never duplicates.
+ */
+export declare class SetArray {
+ private _indexes;
+ array: readonly string[];
+ constructor();
+}
diff --git a/node_modules/@jridgewell/set-array/package.json b/node_modules/@jridgewell/set-array/package.json
new file mode 100644
index 00000000..aec4ee02
--- /dev/null
+++ b/node_modules/@jridgewell/set-array/package.json
@@ -0,0 +1,66 @@
+{
+ "name": "@jridgewell/set-array",
+ "version": "1.1.2",
+ "description": "Like a Set, but provides the index of the `key` in the backing array",
+ "keywords": [],
+ "author": "Justin Ridgewell ",
+ "license": "MIT",
+ "repository": "https://github.com/jridgewell/set-array",
+ "main": "dist/set-array.umd.js",
+ "module": "dist/set-array.mjs",
+ "typings": "dist/types/set-array.d.ts",
+ "exports": {
+ ".": [
+ {
+ "types": "./dist/types/set-array.d.ts",
+ "browser": "./dist/set-array.umd.js",
+ "require": "./dist/set-array.umd.js",
+ "import": "./dist/set-array.mjs"
+ },
+ "./dist/set-array.umd.js"
+ ],
+ "./package.json": "./package.json"
+ },
+ "files": [
+ "dist",
+ "src"
+ ],
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "scripts": {
+ "prebuild": "rm -rf dist",
+ "build": "run-s -n build:*",
+ "build:rollup": "rollup -c rollup.config.js",
+ "build:ts": "tsc --project tsconfig.build.json",
+ "lint": "run-s -n lint:*",
+ "lint:prettier": "npm run test:lint:prettier -- --write",
+ "lint:ts": "npm run test:lint:ts -- --fix",
+ "pretest": "run-s build:rollup",
+ "test": "run-s -n test:lint test:only",
+ "test:debug": "mocha --inspect-brk",
+ "test:lint": "run-s -n test:lint:*",
+ "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'",
+ "test:lint:ts": "eslint '{src,test}/**/*.ts'",
+ "test:only": "mocha",
+ "test:coverage": "c8 mocha",
+ "test:watch": "mocha --watch",
+ "prepublishOnly": "npm run preversion",
+ "preversion": "run-s test build"
+ },
+ "devDependencies": {
+ "@rollup/plugin-typescript": "8.3.0",
+ "@types/mocha": "9.1.1",
+ "@types/node": "17.0.29",
+ "@typescript-eslint/eslint-plugin": "5.10.0",
+ "@typescript-eslint/parser": "5.10.0",
+ "c8": "7.11.0",
+ "eslint": "8.7.0",
+ "eslint-config-prettier": "8.3.0",
+ "mocha": "9.2.0",
+ "npm-run-all": "4.1.5",
+ "prettier": "2.5.1",
+ "rollup": "2.66.0",
+ "typescript": "4.5.5"
+ }
+}
diff --git a/node_modules/@jridgewell/set-array/src/set-array.ts b/node_modules/@jridgewell/set-array/src/set-array.ts
new file mode 100644
index 00000000..f9ff6042
--- /dev/null
+++ b/node_modules/@jridgewell/set-array/src/set-array.ts
@@ -0,0 +1,55 @@
+/**
+ * Gets the index associated with `key` in the backing array, if it is already present.
+ */
+export let get: (strarr: SetArray, key: string) => number | undefined;
+
+/**
+ * Puts `key` into the backing array, if it is not already present. Returns
+ * the index of the `key` in the backing array.
+ */
+export let put: (strarr: SetArray, key: string) => number;
+
+/**
+ * Pops the last added item out of the SetArray.
+ */
+export let pop: (strarr: SetArray) => void;
+
+/**
+ * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the
+ * index of the `key` in the backing array.
+ *
+ * This is designed to allow synchronizing a second array with the contents of the backing array,
+ * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,
+ * and there are never duplicates.
+ */
+export class SetArray {
+ private declare _indexes: { [key: string]: number | undefined };
+ declare array: readonly string[];
+
+ constructor() {
+ this._indexes = { __proto__: null } as any;
+ this.array = [];
+ }
+
+ static {
+ get = (strarr, key) => strarr._indexes[key];
+
+ put = (strarr, key) => {
+ // The key may or may not be present. If it is present, it's a number.
+ const index = get(strarr, key);
+ if (index !== undefined) return index;
+
+ const { array, _indexes: indexes } = strarr;
+
+ return (indexes[key] = (array as string[]).push(key) - 1);
+ };
+
+ pop = (strarr) => {
+ const { array, _indexes: indexes } = strarr;
+ if (array.length === 0) return;
+
+ const last = (array as string[]).pop()!;
+ indexes[last] = undefined;
+ };
+ }
+}
diff --git a/node_modules/@jridgewell/source-map/LICENSE b/node_modules/@jridgewell/source-map/LICENSE
new file mode 100644
index 00000000..0a81b2ad
--- /dev/null
+++ b/node_modules/@jridgewell/source-map/LICENSE
@@ -0,0 +1,19 @@
+Copyright 2019 Justin Ridgewell
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/@jridgewell/source-map/README.md b/node_modules/@jridgewell/source-map/README.md
new file mode 100644
index 00000000..cb58e334
--- /dev/null
+++ b/node_modules/@jridgewell/source-map/README.md
@@ -0,0 +1,82 @@
+# @jridgewell/source-map
+
+> Packages `@jridgewell/trace-mapping` and `@jridgewell/gen-mapping` into the familiar source-map API
+
+This isn't the full API, but it's the core functionality. This wraps
+[@jridgewell/trace-mapping][trace-mapping] and [@jridgewell/gen-mapping][gen-mapping]
+implementations.
+
+## Installation
+
+```sh
+npm install @jridgewell/source-map
+```
+
+## Usage
+
+TODO
+
+### SourceMapConsumer
+
+```typescript
+import { SourceMapConsumer } from '@jridgewell/source-map';
+const smc = new SourceMapConsumer({
+ version: 3,
+ names: ['foo'],
+ sources: ['input.js'],
+ mappings: 'AAAAA',
+});
+```
+
+#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition)
+
+```typescript
+const smc = new SourceMapConsumer(map);
+smc.originalPositionFor({ line: 1, column: 0 });
+```
+
+### SourceMapGenerator
+
+```typescript
+import { SourceMapGenerator } from '@jridgewell/source-map';
+const smg = new SourceMapGenerator({
+ file: 'output.js',
+ sourceRoot: 'https://example.com/',
+});
+```
+
+#### SourceMapGenerator.prototype.addMapping(mapping)
+
+```typescript
+const smg = new SourceMapGenerator();
+smg.addMapping({
+ generated: { line: 1, column: 0 },
+ source: 'input.js',
+ original: { line: 1, column: 0 },
+ name: 'foo',
+});
+```
+
+#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)
+
+```typescript
+const smg = new SourceMapGenerator();
+smg.setSourceContent('input.js', 'foobar');
+```
+
+#### SourceMapGenerator.prototype.toJSON()
+
+```typescript
+const smg = new SourceMapGenerator();
+smg.toJSON(); // { version: 3, names: [], sources: [], mappings: '' }
+```
+
+#### SourceMapGenerator.prototype.toDecodedMap()
+
+```typescript
+const smg = new SourceMapGenerator();
+smg.toDecodedMap(); // { version: 3, names: [], sources: [], mappings: [] }
+```
+
+[trace-mapping]: https://github.com/jridgewell/trace-mapping/
+[gen-mapping]: https://github.com/jridgewell/gen-mapping/
diff --git a/node_modules/@jridgewell/source-map/dist/source-map.mjs b/node_modules/@jridgewell/source-map/dist/source-map.mjs
new file mode 100644
index 00000000..aa1bc2cb
--- /dev/null
+++ b/node_modules/@jridgewell/source-map/dist/source-map.mjs
@@ -0,0 +1,928 @@
+const comma = ','.charCodeAt(0);
+const semicolon = ';'.charCodeAt(0);
+const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+const intToChar = new Uint8Array(64); // 64 possible chars.
+const charToInteger = new Uint8Array(128); // z is 122 in ASCII
+for (let i = 0; i < chars.length; i++) {
+ const c = chars.charCodeAt(i);
+ charToInteger[c] = i;
+ intToChar[i] = c;
+}
+// Provide a fallback for older environments.
+const td = typeof TextDecoder !== 'undefined'
+ ? new TextDecoder()
+ : typeof Buffer !== 'undefined'
+ ? {
+ decode(buf) {
+ const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
+ return out.toString();
+ },
+ }
+ : {
+ decode(buf) {
+ let out = '';
+ for (let i = 0; i < buf.length; i++) {
+ out += String.fromCharCode(buf[i]);
+ }
+ return out;
+ },
+ };
+function decode(mappings) {
+ const state = new Int32Array(5);
+ const decoded = [];
+ let line = [];
+ let sorted = true;
+ let lastCol = 0;
+ for (let i = 0; i < mappings.length;) {
+ const c = mappings.charCodeAt(i);
+ if (c === comma) {
+ i++;
+ }
+ else if (c === semicolon) {
+ state[0] = lastCol = 0;
+ if (!sorted)
+ sort(line);
+ sorted = true;
+ decoded.push(line);
+ line = [];
+ i++;
+ }
+ else {
+ i = decodeInteger(mappings, i, state, 0); // generatedCodeColumn
+ const col = state[0];
+ if (col < lastCol)
+ sorted = false;
+ lastCol = col;
+ if (!hasMoreSegments(mappings, i)) {
+ line.push([col]);
+ continue;
+ }
+ i = decodeInteger(mappings, i, state, 1); // sourceFileIndex
+ i = decodeInteger(mappings, i, state, 2); // sourceCodeLine
+ i = decodeInteger(mappings, i, state, 3); // sourceCodeColumn
+ if (!hasMoreSegments(mappings, i)) {
+ line.push([col, state[1], state[2], state[3]]);
+ continue;
+ }
+ i = decodeInteger(mappings, i, state, 4); // nameIndex
+ line.push([col, state[1], state[2], state[3], state[4]]);
+ }
+ }
+ if (!sorted)
+ sort(line);
+ decoded.push(line);
+ return decoded;
+}
+function decodeInteger(mappings, pos, state, j) {
+ let value = 0;
+ let shift = 0;
+ let integer = 0;
+ do {
+ const c = mappings.charCodeAt(pos++);
+ integer = charToInteger[c];
+ value |= (integer & 31) << shift;
+ shift += 5;
+ } while (integer & 32);
+ const shouldNegate = value & 1;
+ value >>>= 1;
+ if (shouldNegate) {
+ value = -0x80000000 | -value;
+ }
+ state[j] += value;
+ return pos;
+}
+function hasMoreSegments(mappings, i) {
+ if (i >= mappings.length)
+ return false;
+ const c = mappings.charCodeAt(i);
+ if (c === comma || c === semicolon)
+ return false;
+ return true;
+}
+function sort(line) {
+ line.sort(sortComparator$1);
+}
+function sortComparator$1(a, b) {
+ return a[0] - b[0];
+}
+function encode(decoded) {
+ const state = new Int32Array(5);
+ let buf = new Uint8Array(1024);
+ let pos = 0;
+ for (let i = 0; i < decoded.length; i++) {
+ const line = decoded[i];
+ if (i > 0) {
+ buf = reserve(buf, pos, 1);
+ buf[pos++] = semicolon;
+ }
+ if (line.length === 0)
+ continue;
+ state[0] = 0;
+ for (let j = 0; j < line.length; j++) {
+ const segment = line[j];
+ // We can push up to 5 ints, each int can take at most 7 chars, and we
+ // may push a comma.
+ buf = reserve(buf, pos, 36);
+ if (j > 0)
+ buf[pos++] = comma;
+ pos = encodeInteger(buf, pos, state, segment, 0); // generatedCodeColumn
+ if (segment.length === 1)
+ continue;
+ pos = encodeInteger(buf, pos, state, segment, 1); // sourceFileIndex
+ pos = encodeInteger(buf, pos, state, segment, 2); // sourceCodeLine
+ pos = encodeInteger(buf, pos, state, segment, 3); // sourceCodeColumn
+ if (segment.length === 4)
+ continue;
+ pos = encodeInteger(buf, pos, state, segment, 4); // nameIndex
+ }
+ }
+ return td.decode(buf.subarray(0, pos));
+}
+function reserve(buf, pos, count) {
+ if (buf.length > pos + count)
+ return buf;
+ const swap = new Uint8Array(buf.length * 2);
+ swap.set(buf);
+ return swap;
+}
+function encodeInteger(buf, pos, state, segment, j) {
+ const next = segment[j];
+ let num = next - state[j];
+ state[j] = next;
+ num = num < 0 ? (-num << 1) | 1 : num << 1;
+ do {
+ let clamped = num & 0b011111;
+ num >>>= 5;
+ if (num > 0)
+ clamped |= 0b100000;
+ buf[pos++] = intToChar[clamped];
+ } while (num > 0);
+ return pos;
+}
+
+// Matches the scheme of a URL, eg "http://"
+const schemeRegex = /^[\w+.-]+:\/\//;
+/**
+ * Matches the parts of a URL:
+ * 1. Scheme, including ":", guaranteed.
+ * 2. User/password, including "@", optional.
+ * 3. Host, guaranteed.
+ * 4. Port, including ":", optional.
+ * 5. Path, including "/", optional.
+ */
+const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?/;
+/**
+ * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start
+ * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).
+ *
+ * 1. Host, optional.
+ * 2. Path, which may inclue "/", guaranteed.
+ */
+const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/]*)?)?(\/?.*)/i;
+function isAbsoluteUrl(input) {
+ return schemeRegex.test(input);
+}
+function isSchemeRelativeUrl(input) {
+ return input.startsWith('//');
+}
+function isAbsolutePath(input) {
+ return input.startsWith('/');
+}
+function isFileUrl(input) {
+ return input.startsWith('file:');
+}
+function parseAbsoluteUrl(input) {
+ const match = urlRegex.exec(input);
+ return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/');
+}
+function parseFileUrl(input) {
+ const match = fileRegex.exec(input);
+ const path = match[2];
+ return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path);
+}
+function makeUrl(scheme, user, host, port, path) {
+ return {
+ scheme,
+ user,
+ host,
+ port,
+ path,
+ relativePath: false,
+ };
+}
+function parseUrl(input) {
+ if (isSchemeRelativeUrl(input)) {
+ const url = parseAbsoluteUrl('http:' + input);
+ url.scheme = '';
+ return url;
+ }
+ if (isAbsolutePath(input)) {
+ const url = parseAbsoluteUrl('http://foo.com' + input);
+ url.scheme = '';
+ url.host = '';
+ return url;
+ }
+ if (isFileUrl(input))
+ return parseFileUrl(input);
+ if (isAbsoluteUrl(input))
+ return parseAbsoluteUrl(input);
+ const url = parseAbsoluteUrl('http://foo.com/' + input);
+ url.scheme = '';
+ url.host = '';
+ url.relativePath = true;
+ return url;
+}
+function stripPathFilename(path) {
+ // If a path ends with a parent directory "..", then it's a relative path with excess parent
+ // paths. It's not a file, so we can't strip it.
+ if (path.endsWith('/..'))
+ return path;
+ const index = path.lastIndexOf('/');
+ return path.slice(0, index + 1);
+}
+function mergePaths(url, base) {
+ // If we're not a relative path, then we're an absolute path, and it doesn't matter what base is.
+ if (!url.relativePath)
+ return;
+ normalizePath(base);
+ // If the path is just a "/", then it was an empty path to begin with (remember, we're a relative
+ // path).
+ if (url.path === '/') {
+ url.path = base.path;
+ }
+ else {
+ // Resolution happens relative to the base path's directory, not the file.
+ url.path = stripPathFilename(base.path) + url.path;
+ }
+ // If the base path is absolute, then our path is now absolute too.
+ url.relativePath = base.relativePath;
+}
+/**
+ * The path can have empty directories "//", unneeded parents "foo/..", or current directory
+ * "foo/.". We need to normalize to a standard representation.
+ */
+function normalizePath(url) {
+ const { relativePath } = url;
+ const pieces = url.path.split('/');
+ // We need to preserve the first piece always, so that we output a leading slash. The item at
+ // pieces[0] is an empty string.
+ let pointer = 1;
+ // Positive is the number of real directories we've output, used for popping a parent directory.
+ // Eg, "foo/bar/.." will have a positive 2, and we can decrement to be left with just "foo".
+ let positive = 0;
+ // We need to keep a trailing slash if we encounter an empty directory (eg, splitting "foo/" will
+ // generate `["foo", ""]` pieces). And, if we pop a parent directory. But once we encounter a
+ // real directory, we won't need to append, unless the other conditions happen again.
+ let addTrailingSlash = false;
+ for (let i = 1; i < pieces.length; i++) {
+ const piece = pieces[i];
+ // An empty directory, could be a trailing slash, or just a double "//" in the path.
+ if (!piece) {
+ addTrailingSlash = true;
+ continue;
+ }
+ // If we encounter a real directory, then we don't need to append anymore.
+ addTrailingSlash = false;
+ // A current directory, which we can always drop.
+ if (piece === '.')
+ continue;
+ // A parent directory, we need to see if there are any real directories we can pop. Else, we
+ // have an excess of parents, and we'll need to keep the "..".
+ if (piece === '..') {
+ if (positive) {
+ addTrailingSlash = true;
+ positive--;
+ pointer--;
+ }
+ else if (relativePath) {
+ // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute
+ // URL, protocol relative URL, or an absolute path, we don't need to keep excess.
+ pieces[pointer++] = piece;
+ }
+ continue;
+ }
+ // We've encountered a real directory. Move it to the next insertion pointer, which accounts for
+ // any popped or dropped directories.
+ pieces[pointer++] = piece;
+ positive++;
+ }
+ let path = '';
+ for (let i = 1; i < pointer; i++) {
+ path += '/' + pieces[i];
+ }
+ if (!path || (addTrailingSlash && !path.endsWith('/..'))) {
+ path += '/';
+ }
+ url.path = path;
+}
+/**
+ * Attempts to resolve `input` URL/path relative to `base`.
+ */
+function resolve$1(input, base) {
+ if (!input && !base)
+ return '';
+ const url = parseUrl(input);
+ // If we have a base, and the input isn't already an absolute URL, then we need to merge.
+ if (base && !url.scheme) {
+ const baseUrl = parseUrl(base);
+ url.scheme = baseUrl.scheme;
+ // If there's no host, then we were just a path.
+ if (!url.host) {
+ // The host, user, and port are joined, you can't copy one without the others.
+ url.user = baseUrl.user;
+ url.host = baseUrl.host;
+ url.port = baseUrl.port;
+ }
+ mergePaths(url, baseUrl);
+ }
+ normalizePath(url);
+ // If the input (and base, if there was one) are both relative, then we need to output a relative.
+ if (url.relativePath) {
+ // The first char is always a "/".
+ const path = url.path.slice(1);
+ if (!path)
+ return '.';
+ // If base started with a leading ".", or there is no base and input started with a ".", then we
+ // need to ensure that the relative path starts with a ".". We don't know if relative starts
+ // with a "..", though, so check before prepending.
+ const keepRelative = (base || input).startsWith('.');
+ return !keepRelative || path.startsWith('.') ? path : './' + path;
+ }
+ // If there's no host (and no scheme/user/port), then we need to output an absolute path.
+ if (!url.scheme && !url.host)
+ return url.path;
+ // We're outputting either an absolute URL, or a protocol relative one.
+ return `${url.scheme}//${url.user}${url.host}${url.port}${url.path}`;
+}
+
+function resolve(input, base) {
+ // The base is always treated as a directory, if it's not empty.
+ // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327
+ // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401
+ if (base && !base.endsWith('/'))
+ base += '/';
+ return resolve$1(input, base);
+}
+
+/**
+ * Removes everything after the last "/", but leaves the slash.
+ */
+function stripFilename(path) {
+ if (!path)
+ return '';
+ const index = path.lastIndexOf('/');
+ return path.slice(0, index + 1);
+}
+
+const COLUMN$1 = 0;
+const SOURCES_INDEX$1 = 1;
+const SOURCE_LINE$1 = 2;
+const SOURCE_COLUMN$1 = 3;
+const NAMES_INDEX$1 = 4;
+
+function maybeSort(mappings, owned) {
+ const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);
+ if (unsortedIndex === mappings.length)
+ return mappings;
+ // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If
+ // not, we do not want to modify the consumer's input array.
+ if (!owned)
+ mappings = mappings.slice();
+ for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {
+ mappings[i] = sortSegments(mappings[i], owned);
+ }
+ return mappings;
+}
+function nextUnsortedSegmentLine(mappings, start) {
+ for (let i = start; i < mappings.length; i++) {
+ if (!isSorted(mappings[i]))
+ return i;
+ }
+ return mappings.length;
+}
+function isSorted(line) {
+ for (let j = 1; j < line.length; j++) {
+ if (line[j][COLUMN$1] < line[j - 1][COLUMN$1]) {
+ return false;
+ }
+ }
+ return true;
+}
+function sortSegments(line, owned) {
+ if (!owned)
+ line = line.slice();
+ return line.sort(sortComparator);
+}
+function sortComparator(a, b) {
+ return a[COLUMN$1] - b[COLUMN$1];
+}
+
+let found = false;
+/**
+ * A binary search implementation that returns the index if a match is found.
+ * If no match is found, then the left-index (the index associated with the item that comes just
+ * before the desired index) is returned. To maintain proper sort order, a splice would happen at
+ * the next index:
+ *
+ * ```js
+ * const array = [1, 3];
+ * const needle = 2;
+ * const index = binarySearch(array, needle, (item, needle) => item - needle);
+ *
+ * assert.equal(index, 0);
+ * array.splice(index + 1, 0, needle);
+ * assert.deepEqual(array, [1, 2, 3]);
+ * ```
+ */
+function binarySearch(haystack, needle, low, high) {
+ while (low <= high) {
+ const mid = low + ((high - low) >> 1);
+ const cmp = haystack[mid][COLUMN$1] - needle;
+ if (cmp === 0) {
+ found = true;
+ return mid;
+ }
+ if (cmp < 0) {
+ low = mid + 1;
+ }
+ else {
+ high = mid - 1;
+ }
+ }
+ found = false;
+ return low - 1;
+}
+function upperBound(haystack, needle, index) {
+ for (let i = index + 1; i < haystack.length; i++, index++) {
+ if (haystack[i][COLUMN$1] !== needle)
+ break;
+ }
+ return index;
+}
+function lowerBound(haystack, needle, index) {
+ for (let i = index - 1; i >= 0; i--, index--) {
+ if (haystack[i][COLUMN$1] !== needle)
+ break;
+ }
+ return index;
+}
+function memoizedState() {
+ return {
+ lastKey: -1,
+ lastNeedle: -1,
+ lastIndex: -1,
+ };
+}
+/**
+ * This overly complicated beast is just to record the last tested line/column and the resulting
+ * index, allowing us to skip a few tests if mappings are monotonically increasing.
+ */
+function memoizedBinarySearch(haystack, needle, state, key) {
+ const { lastKey, lastNeedle, lastIndex } = state;
+ let low = 0;
+ let high = haystack.length - 1;
+ if (key === lastKey) {
+ if (needle === lastNeedle) {
+ found = lastIndex !== -1 && haystack[lastIndex][COLUMN$1] === needle;
+ return lastIndex;
+ }
+ if (needle >= lastNeedle) {
+ // lastIndex may be -1 if the previous needle was not found.
+ low = lastIndex === -1 ? 0 : lastIndex;
+ }
+ else {
+ high = lastIndex;
+ }
+ }
+ state.lastKey = key;
+ state.lastNeedle = needle;
+ return (state.lastIndex = binarySearch(haystack, needle, low, high));
+}
+
+const AnyMap = function (map, mapUrl) {
+ const parsed = typeof map === 'string' ? JSON.parse(map) : map;
+ if (!('sections' in parsed))
+ return new TraceMap(parsed, mapUrl);
+ const mappings = [];
+ const sources = [];
+ const sourcesContent = [];
+ const names = [];
+ const { sections } = parsed;
+ let i = 0;
+ for (; i < sections.length - 1; i++) {
+ const no = sections[i + 1].offset;
+ addSection(sections[i], mapUrl, mappings, sources, sourcesContent, names, no.line, no.column);
+ }
+ if (sections.length > 0) {
+ addSection(sections[i], mapUrl, mappings, sources, sourcesContent, names, Infinity, Infinity);
+ }
+ const joined = {
+ version: 3,
+ file: parsed.file,
+ names,
+ sources,
+ sourcesContent,
+ mappings,
+ };
+ return presortedDecodedMap(joined);
+};
+function addSection(section, mapUrl, mappings, sources, sourcesContent, names, stopLine, stopColumn) {
+ const map = AnyMap(section.map, mapUrl);
+ const { line: lineOffset, column: columnOffset } = section.offset;
+ const sourcesOffset = sources.length;
+ const namesOffset = names.length;
+ const decoded = decodedMappings(map);
+ const { resolvedSources } = map;
+ append(sources, resolvedSources);
+ append(sourcesContent, map.sourcesContent || fillSourcesContent(resolvedSources.length));
+ append(names, map.names);
+ // If this section jumps forwards several lines, we need to add lines to the output mappings catch up.
+ for (let i = mappings.length; i <= lineOffset; i++)
+ mappings.push([]);
+ // We can only add so many lines before we step into the range that the next section's map
+ // controls. When we get to the last line, then we'll start checking the segments to see if
+ // they've crossed into the column range.
+ const stopI = stopLine - lineOffset;
+ const len = Math.min(decoded.length, stopI + 1);
+ for (let i = 0; i < len; i++) {
+ const line = decoded[i];
+ // On the 0th loop, the line will already exist due to a previous section, or the line catch up
+ // loop above.
+ const out = i === 0 ? mappings[lineOffset] : (mappings[lineOffset + i] = []);
+ // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the
+ // map can be multiple lines), it doesn't.
+ const cOffset = i === 0 ? columnOffset : 0;
+ for (let j = 0; j < line.length; j++) {
+ const seg = line[j];
+ const column = cOffset + seg[COLUMN$1];
+ // If this segment steps into the column range that the next section's map controls, we need
+ // to stop early.
+ if (i === stopI && column >= stopColumn)
+ break;
+ if (seg.length === 1) {
+ out.push([column]);
+ continue;
+ }
+ const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX$1];
+ const sourceLine = seg[SOURCE_LINE$1];
+ const sourceColumn = seg[SOURCE_COLUMN$1];
+ if (seg.length === 4) {
+ out.push([column, sourcesIndex, sourceLine, sourceColumn]);
+ continue;
+ }
+ out.push([column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX$1]]);
+ }
+ }
+}
+function append(arr, other) {
+ for (let i = 0; i < other.length; i++)
+ arr.push(other[i]);
+}
+// Sourcemaps don't need to have sourcesContent, and if they don't, we need to create an array of
+// equal length to the sources. This is because the sources and sourcesContent are paired arrays,
+// where `sourcesContent[i]` is the content of the `sources[i]` file. If we didn't, then joined
+// sourcemap would desynchronize the sources/contents.
+function fillSourcesContent(len) {
+ const sourcesContent = [];
+ for (let i = 0; i < len; i++)
+ sourcesContent[i] = null;
+ return sourcesContent;
+}
+
+const INVALID_ORIGINAL_MAPPING = Object.freeze({
+ source: null,
+ line: null,
+ column: null,
+ name: null,
+});
+Object.freeze({
+ line: null,
+ column: null,
+});
+const LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';
+const COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';
+const LEAST_UPPER_BOUND = -1;
+const GREATEST_LOWER_BOUND = 1;
+/**
+ * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.
+ */
+let decodedMappings;
+/**
+ * A higher-level API to find the source/line/column associated with a generated line/column
+ * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in
+ * `source-map` library.
+ */
+let originalPositionFor;
+/**
+ * A helper that skips sorting of the input map's mappings array, which can be expensive for larger
+ * maps.
+ */
+let presortedDecodedMap;
+class TraceMap {
+ constructor(map, mapUrl) {
+ this._decodedMemo = memoizedState();
+ this._bySources = undefined;
+ this._bySourceMemos = undefined;
+ const isString = typeof map === 'string';
+ if (!isString && map.constructor === TraceMap)
+ return map;
+ const parsed = (isString ? JSON.parse(map) : map);
+ const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;
+ this.version = version;
+ this.file = file;
+ this.names = names;
+ this.sourceRoot = sourceRoot;
+ this.sources = sources;
+ this.sourcesContent = sourcesContent;
+ if (sourceRoot || mapUrl) {
+ const from = resolve(sourceRoot || '', stripFilename(mapUrl));
+ this.resolvedSources = sources.map((s) => resolve(s || '', from));
+ }
+ else {
+ this.resolvedSources = sources.map((s) => s || '');
+ }
+ const { mappings } = parsed;
+ if (typeof mappings === 'string') {
+ this._encoded = mappings;
+ this._decoded = undefined;
+ }
+ else {
+ this._encoded = undefined;
+ this._decoded = maybeSort(mappings, isString);
+ }
+ }
+}
+(() => {
+ decodedMappings = (map) => {
+ return (map._decoded || (map._decoded = decode(map._encoded)));
+ };
+ originalPositionFor = (map, { line, column, bias }) => {
+ line--;
+ if (line < 0)
+ throw new Error(LINE_GTR_ZERO);
+ if (column < 0)
+ throw new Error(COL_GTR_EQ_ZERO);
+ const decoded = decodedMappings(map);
+ // It's common for parent source maps to have pointers to lines that have no
+ // mapping (like a "//# sourceMappingURL=") at the end of the child file.
+ if (line >= decoded.length)
+ return INVALID_ORIGINAL_MAPPING;
+ const segment = traceSegmentInternal(decoded[line], map._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND);
+ if (segment == null)
+ return INVALID_ORIGINAL_MAPPING;
+ if (segment.length == 1)
+ return INVALID_ORIGINAL_MAPPING;
+ const { names, resolvedSources } = map;
+ return {
+ source: resolvedSources[segment[SOURCES_INDEX$1]],
+ line: segment[SOURCE_LINE$1] + 1,
+ column: segment[SOURCE_COLUMN$1],
+ name: segment.length === 5 ? names[segment[NAMES_INDEX$1]] : null,
+ };
+ };
+ presortedDecodedMap = (map, mapUrl) => {
+ const clone = Object.assign({}, map);
+ clone.mappings = [];
+ const tracer = new TraceMap(clone, mapUrl);
+ tracer._decoded = map.mappings;
+ return tracer;
+ };
+})();
+function traceSegmentInternal(segments, memo, line, column, bias) {
+ let index = memoizedBinarySearch(segments, column, memo, line);
+ if (found) {
+ index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);
+ }
+ else if (bias === LEAST_UPPER_BOUND)
+ index++;
+ if (index === -1 || index === segments.length)
+ return null;
+ return segments[index];
+}
+
+/**
+ * Gets the index associated with `key` in the backing array, if it is already present.
+ */
+let get;
+/**
+ * Puts `key` into the backing array, if it is not already present. Returns
+ * the index of the `key` in the backing array.
+ */
+let put;
+/**
+ * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the
+ * index of the `key` in the backing array.
+ *
+ * This is designed to allow synchronizing a second array with the contents of the backing array,
+ * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,
+ * and there are never duplicates.
+ */
+class SetArray {
+ constructor() {
+ this._indexes = { __proto__: null };
+ this.array = [];
+ }
+}
+(() => {
+ get = (strarr, key) => strarr._indexes[key];
+ put = (strarr, key) => {
+ // The key may or may not be present. If it is present, it's a number.
+ const index = get(strarr, key);
+ if (index !== undefined)
+ return index;
+ const { array, _indexes: indexes } = strarr;
+ return (indexes[key] = array.push(key) - 1);
+ };
+})();
+
+const COLUMN = 0;
+const SOURCES_INDEX = 1;
+const SOURCE_LINE = 2;
+const SOURCE_COLUMN = 3;
+const NAMES_INDEX = 4;
+
+const NO_NAME = -1;
+/**
+ * Same as `addMapping`, but will only add the mapping if it generates useful information in the
+ * resulting map. This only works correctly if mappings are added **in order**, meaning you should
+ * not add a mapping with a lower generated line/column than one that came before.
+ */
+let maybeAddMapping;
+/**
+ * Adds/removes the content of the source file to the source map.
+ */
+let setSourceContent;
+/**
+ * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+let toDecodedMap;
+/**
+ * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+let toEncodedMap;
+// This split declaration is only so that terser can elminiate the static initialization block.
+let addSegmentInternal;
+/**
+ * Provides the state to generate a sourcemap.
+ */
+class GenMapping {
+ constructor({ file, sourceRoot } = {}) {
+ this._names = new SetArray();
+ this._sources = new SetArray();
+ this._sourcesContent = [];
+ this._mappings = [];
+ this.file = file;
+ this.sourceRoot = sourceRoot;
+ }
+}
+(() => {
+ maybeAddMapping = (map, mapping) => {
+ return addMappingInternal(true, map, mapping);
+ };
+ setSourceContent = (map, source, content) => {
+ const { _sources: sources, _sourcesContent: sourcesContent } = map;
+ sourcesContent[put(sources, source)] = content;
+ };
+ toDecodedMap = (map) => {
+ const { file, sourceRoot, _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;
+ removeEmptyFinalLines(mappings);
+ return {
+ version: 3,
+ file: file || undefined,
+ names: names.array,
+ sourceRoot: sourceRoot || undefined,
+ sources: sources.array,
+ sourcesContent,
+ mappings,
+ };
+ };
+ toEncodedMap = (map) => {
+ const decoded = toDecodedMap(map);
+ return Object.assign(Object.assign({}, decoded), { mappings: encode(decoded.mappings) });
+ };
+ // Internal helpers
+ addSegmentInternal = (skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name) => {
+ const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;
+ const line = getLine(mappings, genLine);
+ const index = getColumnIndex(line, genColumn);
+ if (!source) {
+ if (skipable && skipSourceless(line, index))
+ return;
+ return insert(line, index, [genColumn]);
+ }
+ const sourcesIndex = put(sources, source);
+ const namesIndex = name ? put(names, name) : NO_NAME;
+ if (sourcesIndex === sourcesContent.length)
+ sourcesContent[sourcesIndex] = null;
+ if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {
+ return;
+ }
+ return insert(line, index, name
+ ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]
+ : [genColumn, sourcesIndex, sourceLine, sourceColumn]);
+ };
+})();
+function getLine(mappings, index) {
+ for (let i = mappings.length; i <= index; i++) {
+ mappings[i] = [];
+ }
+ return mappings[index];
+}
+function getColumnIndex(line, genColumn) {
+ let index = line.length;
+ for (let i = index - 1; i >= 0; index = i--) {
+ const current = line[i];
+ if (genColumn >= current[COLUMN])
+ break;
+ }
+ return index;
+}
+function insert(array, index, value) {
+ for (let i = array.length; i > index; i--) {
+ array[i] = array[i - 1];
+ }
+ array[index] = value;
+}
+function removeEmptyFinalLines(mappings) {
+ const { length } = mappings;
+ let len = length;
+ for (let i = len - 1; i >= 0; len = i, i--) {
+ if (mappings[i].length > 0)
+ break;
+ }
+ if (len < length)
+ mappings.length = len;
+}
+function skipSourceless(line, index) {
+ // The start of a line is already sourceless, so adding a sourceless segment to the beginning
+ // doesn't generate any useful information.
+ if (index === 0)
+ return true;
+ const prev = line[index - 1];
+ // If the previous segment is also sourceless, then adding another sourceless segment doesn't
+ // genrate any new information. Else, this segment will end the source/named segment and point to
+ // a sourceless position, which is useful.
+ return prev.length === 1;
+}
+function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) {
+ // A source/named segment at the start of a line gives position at that genColumn
+ if (index === 0)
+ return false;
+ const prev = line[index - 1];
+ // If the previous segment is sourceless, then we're transitioning to a source.
+ if (prev.length === 1)
+ return false;
+ // If the previous segment maps to the exact same source position, then this segment doesn't
+ // provide any new position information.
+ return (sourcesIndex === prev[SOURCES_INDEX] &&
+ sourceLine === prev[SOURCE_LINE] &&
+ sourceColumn === prev[SOURCE_COLUMN] &&
+ namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME));
+}
+function addMappingInternal(skipable, map, mapping) {
+ const { generated, source, original, name } = mapping;
+ if (!source) {
+ return addSegmentInternal(skipable, map, generated.line - 1, generated.column, null, null, null, null);
+ }
+ const s = source;
+ return addSegmentInternal(skipable, map, generated.line - 1, generated.column, s, original.line - 1, original.column, name);
+}
+
+class SourceMapConsumer {
+ constructor(map, mapUrl) {
+ const trace = (this._map = new AnyMap(map, mapUrl));
+ this.file = trace.file;
+ this.names = trace.names;
+ this.sourceRoot = trace.sourceRoot;
+ this.sources = trace.resolvedSources;
+ this.sourcesContent = trace.sourcesContent;
+ }
+ originalPositionFor(needle) {
+ return originalPositionFor(this._map, needle);
+ }
+ destroy() {
+ // noop.
+ }
+}
+class SourceMapGenerator {
+ constructor(opts) {
+ this._map = new GenMapping(opts);
+ }
+ addMapping(mapping) {
+ maybeAddMapping(this._map, mapping);
+ }
+ setSourceContent(source, content) {
+ setSourceContent(this._map, source, content);
+ }
+ toJSON() {
+ return toEncodedMap(this._map);
+ }
+ toDecodedMap() {
+ return toDecodedMap(this._map);
+ }
+}
+
+export { SourceMapConsumer, SourceMapGenerator };
+//# sourceMappingURL=source-map.mjs.map
diff --git a/node_modules/@jridgewell/source-map/dist/source-map.mjs.map b/node_modules/@jridgewell/source-map/dist/source-map.mjs.map
new file mode 100644
index 00000000..82b6484b
--- /dev/null
+++ b/node_modules/@jridgewell/source-map/dist/source-map.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"source-map.mjs","sources":["../node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs","../node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs","../node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs","../node_modules/@jridgewell/set-array/dist/set-array.mjs","../node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs","../../src/source-map.ts"],"sourcesContent":["const comma = ','.charCodeAt(0);\nconst semicolon = ';'.charCodeAt(0);\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInteger = new Uint8Array(128); // z is 122 in ASCII\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n charToInteger[c] = i;\n intToChar[i] = c;\n}\n// Provide a fallback for older environments.\nconst td = typeof TextDecoder !== 'undefined'\n ? new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf) {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf) {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\nfunction decode(mappings) {\n const state = new Int32Array(5);\n const decoded = [];\n let line = [];\n let sorted = true;\n let lastCol = 0;\n for (let i = 0; i < mappings.length;) {\n const c = mappings.charCodeAt(i);\n if (c === comma) {\n i++;\n }\n else if (c === semicolon) {\n state[0] = lastCol = 0;\n if (!sorted)\n sort(line);\n sorted = true;\n decoded.push(line);\n line = [];\n i++;\n }\n else {\n i = decodeInteger(mappings, i, state, 0); // generatedCodeColumn\n const col = state[0];\n if (col < lastCol)\n sorted = false;\n lastCol = col;\n if (!hasMoreSegments(mappings, i)) {\n line.push([col]);\n continue;\n }\n i = decodeInteger(mappings, i, state, 1); // sourceFileIndex\n i = decodeInteger(mappings, i, state, 2); // sourceCodeLine\n i = decodeInteger(mappings, i, state, 3); // sourceCodeColumn\n if (!hasMoreSegments(mappings, i)) {\n line.push([col, state[1], state[2], state[3]]);\n continue;\n }\n i = decodeInteger(mappings, i, state, 4); // nameIndex\n line.push([col, state[1], state[2], state[3], state[4]]);\n }\n }\n if (!sorted)\n sort(line);\n decoded.push(line);\n return decoded;\n}\nfunction decodeInteger(mappings, pos, state, j) {\n let value = 0;\n let shift = 0;\n let integer = 0;\n do {\n const c = mappings.charCodeAt(pos++);\n integer = charToInteger[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n const shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n state[j] += value;\n return pos;\n}\nfunction hasMoreSegments(mappings, i) {\n if (i >= mappings.length)\n return false;\n const c = mappings.charCodeAt(i);\n if (c === comma || c === semicolon)\n return false;\n return true;\n}\nfunction sort(line) {\n line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[0] - b[0];\n}\nfunction encode(decoded) {\n const state = new Int32Array(5);\n let buf = new Uint8Array(1024);\n let pos = 0;\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) {\n buf = reserve(buf, pos, 1);\n buf[pos++] = semicolon;\n }\n if (line.length === 0)\n continue;\n state[0] = 0;\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n // We can push up to 5 ints, each int can take at most 7 chars, and we\n // may push a comma.\n buf = reserve(buf, pos, 36);\n if (j > 0)\n buf[pos++] = comma;\n pos = encodeInteger(buf, pos, state, segment, 0); // generatedCodeColumn\n if (segment.length === 1)\n continue;\n pos = encodeInteger(buf, pos, state, segment, 1); // sourceFileIndex\n pos = encodeInteger(buf, pos, state, segment, 2); // sourceCodeLine\n pos = encodeInteger(buf, pos, state, segment, 3); // sourceCodeColumn\n if (segment.length === 4)\n continue;\n pos = encodeInteger(buf, pos, state, segment, 4); // nameIndex\n }\n }\n return td.decode(buf.subarray(0, pos));\n}\nfunction reserve(buf, pos, count) {\n if (buf.length > pos + count)\n return buf;\n const swap = new Uint8Array(buf.length * 2);\n swap.set(buf);\n return swap;\n}\nfunction encodeInteger(buf, pos, state, segment, j) {\n const next = segment[j];\n let num = next - state[j];\n state[j] = next;\n num = num < 0 ? (-num << 1) | 1 : num << 1;\n do {\n let clamped = num & 0b011111;\n num >>>= 5;\n if (num > 0)\n clamped |= 0b100000;\n buf[pos++] = intToChar[clamped];\n } while (num > 0);\n return pos;\n}\n\nexport { decode, encode };\n//# sourceMappingURL=sourcemap-codec.mjs.map\n","// Matches the scheme of a URL, eg \"http://\"\nconst schemeRegex = /^[\\w+.-]+:\\/\\//;\n/**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n */\nconst urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?/;\n/**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may inclue \"/\", guaranteed.\n */\nconst fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/]*)?)?(\\/?.*)/i;\nfunction isAbsoluteUrl(input) {\n return schemeRegex.test(input);\n}\nfunction isSchemeRelativeUrl(input) {\n return input.startsWith('//');\n}\nfunction isAbsolutePath(input) {\n return input.startsWith('/');\n}\nfunction isFileUrl(input) {\n return input.startsWith('file:');\n}\nfunction parseAbsoluteUrl(input) {\n const match = urlRegex.exec(input);\n return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/');\n}\nfunction parseFileUrl(input) {\n const match = fileRegex.exec(input);\n const path = match[2];\n return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path);\n}\nfunction makeUrl(scheme, user, host, port, path) {\n return {\n scheme,\n user,\n host,\n port,\n path,\n relativePath: false,\n };\n}\nfunction parseUrl(input) {\n if (isSchemeRelativeUrl(input)) {\n const url = parseAbsoluteUrl('http:' + input);\n url.scheme = '';\n return url;\n }\n if (isAbsolutePath(input)) {\n const url = parseAbsoluteUrl('http://foo.com' + input);\n url.scheme = '';\n url.host = '';\n return url;\n }\n if (isFileUrl(input))\n return parseFileUrl(input);\n if (isAbsoluteUrl(input))\n return parseAbsoluteUrl(input);\n const url = parseAbsoluteUrl('http://foo.com/' + input);\n url.scheme = '';\n url.host = '';\n url.relativePath = true;\n return url;\n}\nfunction stripPathFilename(path) {\n // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n // paths. It's not a file, so we can't strip it.\n if (path.endsWith('/..'))\n return path;\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\nfunction mergePaths(url, base) {\n // If we're not a relative path, then we're an absolute path, and it doesn't matter what base is.\n if (!url.relativePath)\n return;\n normalizePath(base);\n // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n // path).\n if (url.path === '/') {\n url.path = base.path;\n }\n else {\n // Resolution happens relative to the base path's directory, not the file.\n url.path = stripPathFilename(base.path) + url.path;\n }\n // If the base path is absolute, then our path is now absolute too.\n url.relativePath = base.relativePath;\n}\n/**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\nfunction normalizePath(url) {\n const { relativePath } = url;\n const pieces = url.path.split('/');\n // We need to preserve the first piece always, so that we output a leading slash. The item at\n // pieces[0] is an empty string.\n let pointer = 1;\n // Positive is the number of real directories we've output, used for popping a parent directory.\n // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n let positive = 0;\n // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n // real directory, we won't need to append, unless the other conditions happen again.\n let addTrailingSlash = false;\n for (let i = 1; i < pieces.length; i++) {\n const piece = pieces[i];\n // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n if (!piece) {\n addTrailingSlash = true;\n continue;\n }\n // If we encounter a real directory, then we don't need to append anymore.\n addTrailingSlash = false;\n // A current directory, which we can always drop.\n if (piece === '.')\n continue;\n // A parent directory, we need to see if there are any real directories we can pop. Else, we\n // have an excess of parents, and we'll need to keep the \"..\".\n if (piece === '..') {\n if (positive) {\n addTrailingSlash = true;\n positive--;\n pointer--;\n }\n else if (relativePath) {\n // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n pieces[pointer++] = piece;\n }\n continue;\n }\n // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n // any popped or dropped directories.\n pieces[pointer++] = piece;\n positive++;\n }\n let path = '';\n for (let i = 1; i < pointer; i++) {\n path += '/' + pieces[i];\n }\n if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n path += '/';\n }\n url.path = path;\n}\n/**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\nfunction resolve(input, base) {\n if (!input && !base)\n return '';\n const url = parseUrl(input);\n // If we have a base, and the input isn't already an absolute URL, then we need to merge.\n if (base && !url.scheme) {\n const baseUrl = parseUrl(base);\n url.scheme = baseUrl.scheme;\n // If there's no host, then we were just a path.\n if (!url.host) {\n // The host, user, and port are joined, you can't copy one without the others.\n url.user = baseUrl.user;\n url.host = baseUrl.host;\n url.port = baseUrl.port;\n }\n mergePaths(url, baseUrl);\n }\n normalizePath(url);\n // If the input (and base, if there was one) are both relative, then we need to output a relative.\n if (url.relativePath) {\n // The first char is always a \"/\".\n const path = url.path.slice(1);\n if (!path)\n return '.';\n // If base started with a leading \".\", or there is no base and input started with a \".\", then we\n // need to ensure that the relative path starts with a \".\". We don't know if relative starts\n // with a \"..\", though, so check before prepending.\n const keepRelative = (base || input).startsWith('.');\n return !keepRelative || path.startsWith('.') ? path : './' + path;\n }\n // If there's no host (and no scheme/user/port), then we need to output an absolute path.\n if (!url.scheme && !url.host)\n return url.path;\n // We're outputting either an absolute URL, or a protocol relative one.\n return `${url.scheme}//${url.user}${url.host}${url.port}${url.path}`;\n}\n\nexport { resolve as default };\n//# sourceMappingURL=resolve-uri.mjs.map\n","import { encode, decode } from '@jridgewell/sourcemap-codec';\nimport resolveUri from '@jridgewell/resolve-uri';\n\nfunction resolve(input, base) {\n // The base is always treated as a directory, if it's not empty.\n // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327\n // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401\n if (base && !base.endsWith('/'))\n base += '/';\n return resolveUri(input, base);\n}\n\n/**\n * Removes everything after the last \"/\", but leaves the slash.\n */\nfunction stripFilename(path) {\n if (!path)\n return '';\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n\nconst COLUMN = 0;\nconst SOURCES_INDEX = 1;\nconst SOURCE_LINE = 2;\nconst SOURCE_COLUMN = 3;\nconst NAMES_INDEX = 4;\nconst REV_GENERATED_LINE = 1;\nconst REV_GENERATED_COLUMN = 2;\n\nfunction maybeSort(mappings, owned) {\n const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);\n if (unsortedIndex === mappings.length)\n return mappings;\n // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If\n // not, we do not want to modify the consumer's input array.\n if (!owned)\n mappings = mappings.slice();\n for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {\n mappings[i] = sortSegments(mappings[i], owned);\n }\n return mappings;\n}\nfunction nextUnsortedSegmentLine(mappings, start) {\n for (let i = start; i < mappings.length; i++) {\n if (!isSorted(mappings[i]))\n return i;\n }\n return mappings.length;\n}\nfunction isSorted(line) {\n for (let j = 1; j < line.length; j++) {\n if (line[j][COLUMN] < line[j - 1][COLUMN]) {\n return false;\n }\n }\n return true;\n}\nfunction sortSegments(line, owned) {\n if (!owned)\n line = line.slice();\n return line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[COLUMN] - b[COLUMN];\n}\n\nlet found = false;\n/**\n * A binary search implementation that returns the index if a match is found.\n * If no match is found, then the left-index (the index associated with the item that comes just\n * before the desired index) is returned. To maintain proper sort order, a splice would happen at\n * the next index:\n *\n * ```js\n * const array = [1, 3];\n * const needle = 2;\n * const index = binarySearch(array, needle, (item, needle) => item - needle);\n *\n * assert.equal(index, 0);\n * array.splice(index + 1, 0, needle);\n * assert.deepEqual(array, [1, 2, 3]);\n * ```\n */\nfunction binarySearch(haystack, needle, low, high) {\n while (low <= high) {\n const mid = low + ((high - low) >> 1);\n const cmp = haystack[mid][COLUMN] - needle;\n if (cmp === 0) {\n found = true;\n return mid;\n }\n if (cmp < 0) {\n low = mid + 1;\n }\n else {\n high = mid - 1;\n }\n }\n found = false;\n return low - 1;\n}\nfunction upperBound(haystack, needle, index) {\n for (let i = index + 1; i < haystack.length; i++, index++) {\n if (haystack[i][COLUMN] !== needle)\n break;\n }\n return index;\n}\nfunction lowerBound(haystack, needle, index) {\n for (let i = index - 1; i >= 0; i--, index--) {\n if (haystack[i][COLUMN] !== needle)\n break;\n }\n return index;\n}\nfunction memoizedState() {\n return {\n lastKey: -1,\n lastNeedle: -1,\n lastIndex: -1,\n };\n}\n/**\n * This overly complicated beast is just to record the last tested line/column and the resulting\n * index, allowing us to skip a few tests if mappings are monotonically increasing.\n */\nfunction memoizedBinarySearch(haystack, needle, state, key) {\n const { lastKey, lastNeedle, lastIndex } = state;\n let low = 0;\n let high = haystack.length - 1;\n if (key === lastKey) {\n if (needle === lastNeedle) {\n found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;\n return lastIndex;\n }\n if (needle >= lastNeedle) {\n // lastIndex may be -1 if the previous needle was not found.\n low = lastIndex === -1 ? 0 : lastIndex;\n }\n else {\n high = lastIndex;\n }\n }\n state.lastKey = key;\n state.lastNeedle = needle;\n return (state.lastIndex = binarySearch(haystack, needle, low, high));\n}\n\n// Rebuilds the original source files, with mappings that are ordered by source line/column instead\n// of generated line/column.\nfunction buildBySources(decoded, memos) {\n const sources = memos.map(buildNullArray);\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n if (seg.length === 1)\n continue;\n const sourceIndex = seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n const originalSource = sources[sourceIndex];\n const originalLine = (originalSource[sourceLine] || (originalSource[sourceLine] = []));\n const memo = memos[sourceIndex];\n // The binary search either found a match, or it found the left-index just before where the\n // segment should go. Either way, we want to insert after that. And there may be multiple\n // generated segments associated with an original location, so there may need to move several\n // indexes before we find where we need to insert.\n const index = upperBound(originalLine, sourceColumn, memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine));\n insert(originalLine, (memo.lastIndex = index + 1), [sourceColumn, i, seg[COLUMN]]);\n }\n }\n return sources;\n}\nfunction insert(array, index, value) {\n for (let i = array.length; i > index; i--) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n}\n// Null arrays allow us to use ordered index keys without actually allocating contiguous memory like\n// a real array. We use a null-prototype object to avoid prototype pollution and deoptimizations.\n// Numeric properties on objects are magically sorted in ascending order by the engine regardless of\n// the insertion order. So, by setting any numeric keys, even out of order, we'll get ascending\n// order when iterating with for-in.\nfunction buildNullArray() {\n return { __proto__: null };\n}\n\nconst AnyMap = function (map, mapUrl) {\n const parsed = typeof map === 'string' ? JSON.parse(map) : map;\n if (!('sections' in parsed))\n return new TraceMap(parsed, mapUrl);\n const mappings = [];\n const sources = [];\n const sourcesContent = [];\n const names = [];\n const { sections } = parsed;\n let i = 0;\n for (; i < sections.length - 1; i++) {\n const no = sections[i + 1].offset;\n addSection(sections[i], mapUrl, mappings, sources, sourcesContent, names, no.line, no.column);\n }\n if (sections.length > 0) {\n addSection(sections[i], mapUrl, mappings, sources, sourcesContent, names, Infinity, Infinity);\n }\n const joined = {\n version: 3,\n file: parsed.file,\n names,\n sources,\n sourcesContent,\n mappings,\n };\n return presortedDecodedMap(joined);\n};\nfunction addSection(section, mapUrl, mappings, sources, sourcesContent, names, stopLine, stopColumn) {\n const map = AnyMap(section.map, mapUrl);\n const { line: lineOffset, column: columnOffset } = section.offset;\n const sourcesOffset = sources.length;\n const namesOffset = names.length;\n const decoded = decodedMappings(map);\n const { resolvedSources } = map;\n append(sources, resolvedSources);\n append(sourcesContent, map.sourcesContent || fillSourcesContent(resolvedSources.length));\n append(names, map.names);\n // If this section jumps forwards several lines, we need to add lines to the output mappings catch up.\n for (let i = mappings.length; i <= lineOffset; i++)\n mappings.push([]);\n // We can only add so many lines before we step into the range that the next section's map\n // controls. When we get to the last line, then we'll start checking the segments to see if\n // they've crossed into the column range.\n const stopI = stopLine - lineOffset;\n const len = Math.min(decoded.length, stopI + 1);\n for (let i = 0; i < len; i++) {\n const line = decoded[i];\n // On the 0th loop, the line will already exist due to a previous section, or the line catch up\n // loop above.\n const out = i === 0 ? mappings[lineOffset] : (mappings[lineOffset + i] = []);\n // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the\n // map can be multiple lines), it doesn't.\n const cOffset = i === 0 ? columnOffset : 0;\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n const column = cOffset + seg[COLUMN];\n // If this segment steps into the column range that the next section's map controls, we need\n // to stop early.\n if (i === stopI && column >= stopColumn)\n break;\n if (seg.length === 1) {\n out.push([column]);\n continue;\n }\n const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n if (seg.length === 4) {\n out.push([column, sourcesIndex, sourceLine, sourceColumn]);\n continue;\n }\n out.push([column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]]);\n }\n }\n}\nfunction append(arr, other) {\n for (let i = 0; i < other.length; i++)\n arr.push(other[i]);\n}\n// Sourcemaps don't need to have sourcesContent, and if they don't, we need to create an array of\n// equal length to the sources. This is because the sources and sourcesContent are paired arrays,\n// where `sourcesContent[i]` is the content of the `sources[i]` file. If we didn't, then joined\n// sourcemap would desynchronize the sources/contents.\nfunction fillSourcesContent(len) {\n const sourcesContent = [];\n for (let i = 0; i < len; i++)\n sourcesContent[i] = null;\n return sourcesContent;\n}\n\nconst INVALID_ORIGINAL_MAPPING = Object.freeze({\n source: null,\n line: null,\n column: null,\n name: null,\n});\nconst INVALID_GENERATED_MAPPING = Object.freeze({\n line: null,\n column: null,\n});\nconst LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';\nconst COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';\nconst LEAST_UPPER_BOUND = -1;\nconst GREATEST_LOWER_BOUND = 1;\n/**\n * Returns the encoded (VLQ string) form of the SourceMap's mappings field.\n */\nlet encodedMappings;\n/**\n * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.\n */\nlet decodedMappings;\n/**\n * A low-level API to find the segment associated with a generated line/column (think, from a\n * stack trace). Line and column here are 0-based, unlike `originalPositionFor`.\n */\nlet traceSegment;\n/**\n * A higher-level API to find the source/line/column associated with a generated line/column\n * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in\n * `source-map` library.\n */\nlet originalPositionFor;\n/**\n * Finds the source/line/column directly after the mapping returned by originalPositionFor, provided\n * the found mapping is from the same source and line as the originalPositionFor mapping.\n *\n * Eg, in the code `let id = 1`, `originalPositionAfter` could find the mapping associated with `1`\n * using the same needle that would return `id` when calling `originalPositionFor`.\n */\nlet generatedPositionFor;\n/**\n * Iterates each mapping in generated position order.\n */\nlet eachMapping;\n/**\n * A helper that skips sorting of the input map's mappings array, which can be expensive for larger\n * maps.\n */\nlet presortedDecodedMap;\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nlet decodedMap;\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nlet encodedMap;\nclass TraceMap {\n constructor(map, mapUrl) {\n this._decodedMemo = memoizedState();\n this._bySources = undefined;\n this._bySourceMemos = undefined;\n const isString = typeof map === 'string';\n if (!isString && map.constructor === TraceMap)\n return map;\n const parsed = (isString ? JSON.parse(map) : map);\n const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;\n this.version = version;\n this.file = file;\n this.names = names;\n this.sourceRoot = sourceRoot;\n this.sources = sources;\n this.sourcesContent = sourcesContent;\n if (sourceRoot || mapUrl) {\n const from = resolve(sourceRoot || '', stripFilename(mapUrl));\n this.resolvedSources = sources.map((s) => resolve(s || '', from));\n }\n else {\n this.resolvedSources = sources.map((s) => s || '');\n }\n const { mappings } = parsed;\n if (typeof mappings === 'string') {\n this._encoded = mappings;\n this._decoded = undefined;\n }\n else {\n this._encoded = undefined;\n this._decoded = maybeSort(mappings, isString);\n }\n }\n}\n(() => {\n encodedMappings = (map) => {\n var _a;\n return ((_a = map._encoded) !== null && _a !== void 0 ? _a : (map._encoded = encode(map._decoded)));\n };\n decodedMappings = (map) => {\n return (map._decoded || (map._decoded = decode(map._encoded)));\n };\n traceSegment = (map, line, column) => {\n const decoded = decodedMappings(map);\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length)\n return null;\n return traceSegmentInternal(decoded[line], map._decodedMemo, line, column, GREATEST_LOWER_BOUND);\n };\n originalPositionFor = (map, { line, column, bias }) => {\n line--;\n if (line < 0)\n throw new Error(LINE_GTR_ZERO);\n if (column < 0)\n throw new Error(COL_GTR_EQ_ZERO);\n const decoded = decodedMappings(map);\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length)\n return INVALID_ORIGINAL_MAPPING;\n const segment = traceSegmentInternal(decoded[line], map._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND);\n if (segment == null)\n return INVALID_ORIGINAL_MAPPING;\n if (segment.length == 1)\n return INVALID_ORIGINAL_MAPPING;\n const { names, resolvedSources } = map;\n return {\n source: resolvedSources[segment[SOURCES_INDEX]],\n line: segment[SOURCE_LINE] + 1,\n column: segment[SOURCE_COLUMN],\n name: segment.length === 5 ? names[segment[NAMES_INDEX]] : null,\n };\n };\n generatedPositionFor = (map, { source, line, column, bias }) => {\n line--;\n if (line < 0)\n throw new Error(LINE_GTR_ZERO);\n if (column < 0)\n throw new Error(COL_GTR_EQ_ZERO);\n const { sources, resolvedSources } = map;\n let sourceIndex = sources.indexOf(source);\n if (sourceIndex === -1)\n sourceIndex = resolvedSources.indexOf(source);\n if (sourceIndex === -1)\n return INVALID_GENERATED_MAPPING;\n const generated = (map._bySources || (map._bySources = buildBySources(decodedMappings(map), (map._bySourceMemos = sources.map(memoizedState)))));\n const memos = map._bySourceMemos;\n const segments = generated[sourceIndex][line];\n if (segments == null)\n return INVALID_GENERATED_MAPPING;\n const segment = traceSegmentInternal(segments, memos[sourceIndex], line, column, bias || GREATEST_LOWER_BOUND);\n if (segment == null)\n return INVALID_GENERATED_MAPPING;\n return {\n line: segment[REV_GENERATED_LINE] + 1,\n column: segment[REV_GENERATED_COLUMN],\n };\n };\n eachMapping = (map, cb) => {\n const decoded = decodedMappings(map);\n const { names, resolvedSources } = map;\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n const generatedLine = i + 1;\n const generatedColumn = seg[0];\n let source = null;\n let originalLine = null;\n let originalColumn = null;\n let name = null;\n if (seg.length !== 1) {\n source = resolvedSources[seg[1]];\n originalLine = seg[2] + 1;\n originalColumn = seg[3];\n }\n if (seg.length === 5)\n name = names[seg[4]];\n cb({\n generatedLine,\n generatedColumn,\n source,\n originalLine,\n originalColumn,\n name,\n });\n }\n }\n };\n presortedDecodedMap = (map, mapUrl) => {\n const clone = Object.assign({}, map);\n clone.mappings = [];\n const tracer = new TraceMap(clone, mapUrl);\n tracer._decoded = map.mappings;\n return tracer;\n };\n decodedMap = (map) => {\n return {\n version: 3,\n file: map.file,\n names: map.names,\n sourceRoot: map.sourceRoot,\n sources: map.sources,\n sourcesContent: map.sourcesContent,\n mappings: decodedMappings(map),\n };\n };\n encodedMap = (map) => {\n return {\n version: 3,\n file: map.file,\n names: map.names,\n sourceRoot: map.sourceRoot,\n sources: map.sources,\n sourcesContent: map.sourcesContent,\n mappings: encodedMappings(map),\n };\n };\n})();\nfunction traceSegmentInternal(segments, memo, line, column, bias) {\n let index = memoizedBinarySearch(segments, column, memo, line);\n if (found) {\n index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);\n }\n else if (bias === LEAST_UPPER_BOUND)\n index++;\n if (index === -1 || index === segments.length)\n return null;\n return segments[index];\n}\n\nexport { AnyMap, GREATEST_LOWER_BOUND, LEAST_UPPER_BOUND, TraceMap, decodedMap, decodedMappings, eachMapping, encodedMap, encodedMappings, generatedPositionFor, originalPositionFor, presortedDecodedMap, traceSegment };\n//# sourceMappingURL=trace-mapping.mjs.map\n","/**\n * Gets the index associated with `key` in the backing array, if it is already present.\n */\nlet get;\n/**\n * Puts `key` into the backing array, if it is not already present. Returns\n * the index of the `key` in the backing array.\n */\nlet put;\n/**\n * Pops the last added item out of the SetArray.\n */\nlet pop;\n/**\n * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the\n * index of the `key` in the backing array.\n *\n * This is designed to allow synchronizing a second array with the contents of the backing array,\n * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,\n * and there are never duplicates.\n */\nclass SetArray {\n constructor() {\n this._indexes = { __proto__: null };\n this.array = [];\n }\n}\n(() => {\n get = (strarr, key) => strarr._indexes[key];\n put = (strarr, key) => {\n // The key may or may not be present. If it is present, it's a number.\n const index = get(strarr, key);\n if (index !== undefined)\n return index;\n const { array, _indexes: indexes } = strarr;\n return (indexes[key] = array.push(key) - 1);\n };\n pop = (strarr) => {\n const { array, _indexes: indexes } = strarr;\n if (array.length === 0)\n return;\n const last = array.pop();\n indexes[last] = undefined;\n };\n})();\n\nexport { SetArray, get, pop, put };\n//# sourceMappingURL=set-array.mjs.map\n","import { SetArray, put } from '@jridgewell/set-array';\nimport { encode } from '@jridgewell/sourcemap-codec';\nimport { TraceMap, decodedMappings } from '@jridgewell/trace-mapping';\n\nconst COLUMN = 0;\nconst SOURCES_INDEX = 1;\nconst SOURCE_LINE = 2;\nconst SOURCE_COLUMN = 3;\nconst NAMES_INDEX = 4;\n\nconst NO_NAME = -1;\n/**\n * A low-level API to associate a generated position with an original source position. Line and\n * column here are 0-based, unlike `addMapping`.\n */\nlet addSegment;\n/**\n * A high-level API to associate a generated position with an original source position. Line is\n * 1-based, but column is 0-based, due to legacy behavior in `source-map` library.\n */\nlet addMapping;\n/**\n * Same as `addSegment`, but will only add the segment if it generates useful information in the\n * resulting map. This only works correctly if segments are added **in order**, meaning you should\n * not add a segment with a lower generated line/column than one that came before.\n */\nlet maybeAddSegment;\n/**\n * Same as `addMapping`, but will only add the mapping if it generates useful information in the\n * resulting map. This only works correctly if mappings are added **in order**, meaning you should\n * not add a mapping with a lower generated line/column than one that came before.\n */\nlet maybeAddMapping;\n/**\n * Adds/removes the content of the source file to the source map.\n */\nlet setSourceContent;\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nlet toDecodedMap;\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nlet toEncodedMap;\n/**\n * Constructs a new GenMapping, using the already present mappings of the input.\n */\nlet fromMap;\n/**\n * Returns an array of high-level mapping objects for every recorded segment, which could then be\n * passed to the `source-map` library.\n */\nlet allMappings;\n// This split declaration is only so that terser can elminiate the static initialization block.\nlet addSegmentInternal;\n/**\n * Provides the state to generate a sourcemap.\n */\nclass GenMapping {\n constructor({ file, sourceRoot } = {}) {\n this._names = new SetArray();\n this._sources = new SetArray();\n this._sourcesContent = [];\n this._mappings = [];\n this.file = file;\n this.sourceRoot = sourceRoot;\n }\n}\n(() => {\n addSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name) => {\n return addSegmentInternal(false, map, genLine, genColumn, source, sourceLine, sourceColumn, name);\n };\n maybeAddSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name) => {\n return addSegmentInternal(true, map, genLine, genColumn, source, sourceLine, sourceColumn, name);\n };\n addMapping = (map, mapping) => {\n return addMappingInternal(false, map, mapping);\n };\n maybeAddMapping = (map, mapping) => {\n return addMappingInternal(true, map, mapping);\n };\n setSourceContent = (map, source, content) => {\n const { _sources: sources, _sourcesContent: sourcesContent } = map;\n sourcesContent[put(sources, source)] = content;\n };\n toDecodedMap = (map) => {\n const { file, sourceRoot, _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;\n removeEmptyFinalLines(mappings);\n return {\n version: 3,\n file: file || undefined,\n names: names.array,\n sourceRoot: sourceRoot || undefined,\n sources: sources.array,\n sourcesContent,\n mappings,\n };\n };\n toEncodedMap = (map) => {\n const decoded = toDecodedMap(map);\n return Object.assign(Object.assign({}, decoded), { mappings: encode(decoded.mappings) });\n };\n allMappings = (map) => {\n const out = [];\n const { _mappings: mappings, _sources: sources, _names: names } = map;\n for (let i = 0; i < mappings.length; i++) {\n const line = mappings[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n const generated = { line: i + 1, column: seg[COLUMN] };\n let source = undefined;\n let original = undefined;\n let name = undefined;\n if (seg.length !== 1) {\n source = sources.array[seg[SOURCES_INDEX]];\n original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] };\n if (seg.length === 5)\n name = names.array[seg[NAMES_INDEX]];\n }\n out.push({ generated, source, original, name });\n }\n }\n return out;\n };\n fromMap = (input) => {\n const map = new TraceMap(input);\n const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot });\n putAll(gen._names, map.names);\n putAll(gen._sources, map.sources);\n gen._sourcesContent = map.sourcesContent || map.sources.map(() => null);\n gen._mappings = decodedMappings(map);\n return gen;\n };\n // Internal helpers\n addSegmentInternal = (skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name) => {\n const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;\n const line = getLine(mappings, genLine);\n const index = getColumnIndex(line, genColumn);\n if (!source) {\n if (skipable && skipSourceless(line, index))\n return;\n return insert(line, index, [genColumn]);\n }\n const sourcesIndex = put(sources, source);\n const namesIndex = name ? put(names, name) : NO_NAME;\n if (sourcesIndex === sourcesContent.length)\n sourcesContent[sourcesIndex] = null;\n if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {\n return;\n }\n return insert(line, index, name\n ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]\n : [genColumn, sourcesIndex, sourceLine, sourceColumn]);\n };\n})();\nfunction getLine(mappings, index) {\n for (let i = mappings.length; i <= index; i++) {\n mappings[i] = [];\n }\n return mappings[index];\n}\nfunction getColumnIndex(line, genColumn) {\n let index = line.length;\n for (let i = index - 1; i >= 0; index = i--) {\n const current = line[i];\n if (genColumn >= current[COLUMN])\n break;\n }\n return index;\n}\nfunction insert(array, index, value) {\n for (let i = array.length; i > index; i--) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n}\nfunction removeEmptyFinalLines(mappings) {\n const { length } = mappings;\n let len = length;\n for (let i = len - 1; i >= 0; len = i, i--) {\n if (mappings[i].length > 0)\n break;\n }\n if (len < length)\n mappings.length = len;\n}\nfunction putAll(strarr, array) {\n for (let i = 0; i < array.length; i++)\n put(strarr, array[i]);\n}\nfunction skipSourceless(line, index) {\n // The start of a line is already sourceless, so adding a sourceless segment to the beginning\n // doesn't generate any useful information.\n if (index === 0)\n return true;\n const prev = line[index - 1];\n // If the previous segment is also sourceless, then adding another sourceless segment doesn't\n // genrate any new information. Else, this segment will end the source/named segment and point to\n // a sourceless position, which is useful.\n return prev.length === 1;\n}\nfunction skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) {\n // A source/named segment at the start of a line gives position at that genColumn\n if (index === 0)\n return false;\n const prev = line[index - 1];\n // If the previous segment is sourceless, then we're transitioning to a source.\n if (prev.length === 1)\n return false;\n // If the previous segment maps to the exact same source position, then this segment doesn't\n // provide any new position information.\n return (sourcesIndex === prev[SOURCES_INDEX] &&\n sourceLine === prev[SOURCE_LINE] &&\n sourceColumn === prev[SOURCE_COLUMN] &&\n namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME));\n}\nfunction addMappingInternal(skipable, map, mapping) {\n const { generated, source, original, name } = mapping;\n if (!source) {\n return addSegmentInternal(skipable, map, generated.line - 1, generated.column, null, null, null, null);\n }\n const s = source;\n return addSegmentInternal(skipable, map, generated.line - 1, generated.column, s, original.line - 1, original.column, name);\n}\n\nexport { GenMapping, addMapping, addSegment, allMappings, fromMap, maybeAddMapping, maybeAddSegment, setSourceContent, toDecodedMap, toEncodedMap };\n//# sourceMappingURL=gen-mapping.mjs.map\n","import { AnyMap, originalPositionFor } from '@jridgewell/trace-mapping';\nimport {\n GenMapping,\n maybeAddMapping,\n toDecodedMap,\n toEncodedMap,\n setSourceContent,\n} from '@jridgewell/gen-mapping';\n\nimport type { TraceMap, SectionedSourceMapInput } from '@jridgewell/trace-mapping';\nexport type { TraceMap, SectionedSourceMapInput };\n\nimport type { Mapping, EncodedSourceMap, DecodedSourceMap } from '@jridgewell/gen-mapping';\nexport type { Mapping, EncodedSourceMap, DecodedSourceMap };\n\nexport class SourceMapConsumer {\n private declare _map: TraceMap;\n declare file: TraceMap['file'];\n declare names: TraceMap['names'];\n declare sourceRoot: TraceMap['sourceRoot'];\n declare sources: TraceMap['sources'];\n declare sourcesContent: TraceMap['sourcesContent'];\n\n constructor(map: ConstructorParameters[0], mapUrl: Parameters[1]) {\n const trace = (this._map = new AnyMap(map, mapUrl));\n\n this.file = trace.file;\n this.names = trace.names;\n this.sourceRoot = trace.sourceRoot;\n this.sources = trace.resolvedSources;\n this.sourcesContent = trace.sourcesContent;\n }\n\n originalPositionFor(\n needle: Parameters[1],\n ): ReturnType {\n return originalPositionFor(this._map, needle);\n }\n\n destroy() {\n // noop.\n }\n}\n\nexport class SourceMapGenerator {\n private declare _map: GenMapping;\n\n constructor(opts: ConstructorParameters[0]) {\n this._map = new GenMapping(opts);\n }\n\n addMapping(mapping: Parameters[1]): ReturnType {\n maybeAddMapping(this._map, mapping);\n }\n\n setSourceContent(\n source: Parameters[1],\n content: Parameters[2],\n ): ReturnType {\n setSourceContent(this._map, source, content);\n }\n\n toJSON(): ReturnType {\n return toEncodedMap(this._map);\n }\n\n toDecodedMap(): ReturnType {\n return toDecodedMap(this._map);\n }\n}\n"],"names":["sortComparator","resolve","resolveUri","COLUMN","SOURCES_INDEX","SOURCE_LINE","SOURCE_COLUMN","NAMES_INDEX"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/source-map/dist/source-map.umd.js b/node_modules/@jridgewell/source-map/dist/source-map.umd.js
new file mode 100644
index 00000000..77ec63b2
--- /dev/null
+++ b/node_modules/@jridgewell/source-map/dist/source-map.umd.js
@@ -0,0 +1,939 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.sourceMap = {}));
+})(this, (function (exports) { 'use strict';
+
+ const comma = ','.charCodeAt(0);
+ const semicolon = ';'.charCodeAt(0);
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+ const intToChar = new Uint8Array(64); // 64 possible chars.
+ const charToInteger = new Uint8Array(128); // z is 122 in ASCII
+ for (let i = 0; i < chars.length; i++) {
+ const c = chars.charCodeAt(i);
+ charToInteger[c] = i;
+ intToChar[i] = c;
+ }
+ // Provide a fallback for older environments.
+ const td = typeof TextDecoder !== 'undefined'
+ ? new TextDecoder()
+ : typeof Buffer !== 'undefined'
+ ? {
+ decode(buf) {
+ const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
+ return out.toString();
+ },
+ }
+ : {
+ decode(buf) {
+ let out = '';
+ for (let i = 0; i < buf.length; i++) {
+ out += String.fromCharCode(buf[i]);
+ }
+ return out;
+ },
+ };
+ function decode(mappings) {
+ const state = new Int32Array(5);
+ const decoded = [];
+ let line = [];
+ let sorted = true;
+ let lastCol = 0;
+ for (let i = 0; i < mappings.length;) {
+ const c = mappings.charCodeAt(i);
+ if (c === comma) {
+ i++;
+ }
+ else if (c === semicolon) {
+ state[0] = lastCol = 0;
+ if (!sorted)
+ sort(line);
+ sorted = true;
+ decoded.push(line);
+ line = [];
+ i++;
+ }
+ else {
+ i = decodeInteger(mappings, i, state, 0); // generatedCodeColumn
+ const col = state[0];
+ if (col < lastCol)
+ sorted = false;
+ lastCol = col;
+ if (!hasMoreSegments(mappings, i)) {
+ line.push([col]);
+ continue;
+ }
+ i = decodeInteger(mappings, i, state, 1); // sourceFileIndex
+ i = decodeInteger(mappings, i, state, 2); // sourceCodeLine
+ i = decodeInteger(mappings, i, state, 3); // sourceCodeColumn
+ if (!hasMoreSegments(mappings, i)) {
+ line.push([col, state[1], state[2], state[3]]);
+ continue;
+ }
+ i = decodeInteger(mappings, i, state, 4); // nameIndex
+ line.push([col, state[1], state[2], state[3], state[4]]);
+ }
+ }
+ if (!sorted)
+ sort(line);
+ decoded.push(line);
+ return decoded;
+ }
+ function decodeInteger(mappings, pos, state, j) {
+ let value = 0;
+ let shift = 0;
+ let integer = 0;
+ do {
+ const c = mappings.charCodeAt(pos++);
+ integer = charToInteger[c];
+ value |= (integer & 31) << shift;
+ shift += 5;
+ } while (integer & 32);
+ const shouldNegate = value & 1;
+ value >>>= 1;
+ if (shouldNegate) {
+ value = -0x80000000 | -value;
+ }
+ state[j] += value;
+ return pos;
+ }
+ function hasMoreSegments(mappings, i) {
+ if (i >= mappings.length)
+ return false;
+ const c = mappings.charCodeAt(i);
+ if (c === comma || c === semicolon)
+ return false;
+ return true;
+ }
+ function sort(line) {
+ line.sort(sortComparator$1);
+ }
+ function sortComparator$1(a, b) {
+ return a[0] - b[0];
+ }
+ function encode(decoded) {
+ const state = new Int32Array(5);
+ let buf = new Uint8Array(1024);
+ let pos = 0;
+ for (let i = 0; i < decoded.length; i++) {
+ const line = decoded[i];
+ if (i > 0) {
+ buf = reserve(buf, pos, 1);
+ buf[pos++] = semicolon;
+ }
+ if (line.length === 0)
+ continue;
+ state[0] = 0;
+ for (let j = 0; j < line.length; j++) {
+ const segment = line[j];
+ // We can push up to 5 ints, each int can take at most 7 chars, and we
+ // may push a comma.
+ buf = reserve(buf, pos, 36);
+ if (j > 0)
+ buf[pos++] = comma;
+ pos = encodeInteger(buf, pos, state, segment, 0); // generatedCodeColumn
+ if (segment.length === 1)
+ continue;
+ pos = encodeInteger(buf, pos, state, segment, 1); // sourceFileIndex
+ pos = encodeInteger(buf, pos, state, segment, 2); // sourceCodeLine
+ pos = encodeInteger(buf, pos, state, segment, 3); // sourceCodeColumn
+ if (segment.length === 4)
+ continue;
+ pos = encodeInteger(buf, pos, state, segment, 4); // nameIndex
+ }
+ }
+ return td.decode(buf.subarray(0, pos));
+ }
+ function reserve(buf, pos, count) {
+ if (buf.length > pos + count)
+ return buf;
+ const swap = new Uint8Array(buf.length * 2);
+ swap.set(buf);
+ return swap;
+ }
+ function encodeInteger(buf, pos, state, segment, j) {
+ const next = segment[j];
+ let num = next - state[j];
+ state[j] = next;
+ num = num < 0 ? (-num << 1) | 1 : num << 1;
+ do {
+ let clamped = num & 0b011111;
+ num >>>= 5;
+ if (num > 0)
+ clamped |= 0b100000;
+ buf[pos++] = intToChar[clamped];
+ } while (num > 0);
+ return pos;
+ }
+
+ // Matches the scheme of a URL, eg "http://"
+ const schemeRegex = /^[\w+.-]+:\/\//;
+ /**
+ * Matches the parts of a URL:
+ * 1. Scheme, including ":", guaranteed.
+ * 2. User/password, including "@", optional.
+ * 3. Host, guaranteed.
+ * 4. Port, including ":", optional.
+ * 5. Path, including "/", optional.
+ */
+ const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?/;
+ /**
+ * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start
+ * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).
+ *
+ * 1. Host, optional.
+ * 2. Path, which may inclue "/", guaranteed.
+ */
+ const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/]*)?)?(\/?.*)/i;
+ function isAbsoluteUrl(input) {
+ return schemeRegex.test(input);
+ }
+ function isSchemeRelativeUrl(input) {
+ return input.startsWith('//');
+ }
+ function isAbsolutePath(input) {
+ return input.startsWith('/');
+ }
+ function isFileUrl(input) {
+ return input.startsWith('file:');
+ }
+ function parseAbsoluteUrl(input) {
+ const match = urlRegex.exec(input);
+ return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/');
+ }
+ function parseFileUrl(input) {
+ const match = fileRegex.exec(input);
+ const path = match[2];
+ return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path);
+ }
+ function makeUrl(scheme, user, host, port, path) {
+ return {
+ scheme,
+ user,
+ host,
+ port,
+ path,
+ relativePath: false,
+ };
+ }
+ function parseUrl(input) {
+ if (isSchemeRelativeUrl(input)) {
+ const url = parseAbsoluteUrl('http:' + input);
+ url.scheme = '';
+ return url;
+ }
+ if (isAbsolutePath(input)) {
+ const url = parseAbsoluteUrl('http://foo.com' + input);
+ url.scheme = '';
+ url.host = '';
+ return url;
+ }
+ if (isFileUrl(input))
+ return parseFileUrl(input);
+ if (isAbsoluteUrl(input))
+ return parseAbsoluteUrl(input);
+ const url = parseAbsoluteUrl('http://foo.com/' + input);
+ url.scheme = '';
+ url.host = '';
+ url.relativePath = true;
+ return url;
+ }
+ function stripPathFilename(path) {
+ // If a path ends with a parent directory "..", then it's a relative path with excess parent
+ // paths. It's not a file, so we can't strip it.
+ if (path.endsWith('/..'))
+ return path;
+ const index = path.lastIndexOf('/');
+ return path.slice(0, index + 1);
+ }
+ function mergePaths(url, base) {
+ // If we're not a relative path, then we're an absolute path, and it doesn't matter what base is.
+ if (!url.relativePath)
+ return;
+ normalizePath(base);
+ // If the path is just a "/", then it was an empty path to begin with (remember, we're a relative
+ // path).
+ if (url.path === '/') {
+ url.path = base.path;
+ }
+ else {
+ // Resolution happens relative to the base path's directory, not the file.
+ url.path = stripPathFilename(base.path) + url.path;
+ }
+ // If the base path is absolute, then our path is now absolute too.
+ url.relativePath = base.relativePath;
+ }
+ /**
+ * The path can have empty directories "//", unneeded parents "foo/..", or current directory
+ * "foo/.". We need to normalize to a standard representation.
+ */
+ function normalizePath(url) {
+ const { relativePath } = url;
+ const pieces = url.path.split('/');
+ // We need to preserve the first piece always, so that we output a leading slash. The item at
+ // pieces[0] is an empty string.
+ let pointer = 1;
+ // Positive is the number of real directories we've output, used for popping a parent directory.
+ // Eg, "foo/bar/.." will have a positive 2, and we can decrement to be left with just "foo".
+ let positive = 0;
+ // We need to keep a trailing slash if we encounter an empty directory (eg, splitting "foo/" will
+ // generate `["foo", ""]` pieces). And, if we pop a parent directory. But once we encounter a
+ // real directory, we won't need to append, unless the other conditions happen again.
+ let addTrailingSlash = false;
+ for (let i = 1; i < pieces.length; i++) {
+ const piece = pieces[i];
+ // An empty directory, could be a trailing slash, or just a double "//" in the path.
+ if (!piece) {
+ addTrailingSlash = true;
+ continue;
+ }
+ // If we encounter a real directory, then we don't need to append anymore.
+ addTrailingSlash = false;
+ // A current directory, which we can always drop.
+ if (piece === '.')
+ continue;
+ // A parent directory, we need to see if there are any real directories we can pop. Else, we
+ // have an excess of parents, and we'll need to keep the "..".
+ if (piece === '..') {
+ if (positive) {
+ addTrailingSlash = true;
+ positive--;
+ pointer--;
+ }
+ else if (relativePath) {
+ // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute
+ // URL, protocol relative URL, or an absolute path, we don't need to keep excess.
+ pieces[pointer++] = piece;
+ }
+ continue;
+ }
+ // We've encountered a real directory. Move it to the next insertion pointer, which accounts for
+ // any popped or dropped directories.
+ pieces[pointer++] = piece;
+ positive++;
+ }
+ let path = '';
+ for (let i = 1; i < pointer; i++) {
+ path += '/' + pieces[i];
+ }
+ if (!path || (addTrailingSlash && !path.endsWith('/..'))) {
+ path += '/';
+ }
+ url.path = path;
+ }
+ /**
+ * Attempts to resolve `input` URL/path relative to `base`.
+ */
+ function resolve$1(input, base) {
+ if (!input && !base)
+ return '';
+ const url = parseUrl(input);
+ // If we have a base, and the input isn't already an absolute URL, then we need to merge.
+ if (base && !url.scheme) {
+ const baseUrl = parseUrl(base);
+ url.scheme = baseUrl.scheme;
+ // If there's no host, then we were just a path.
+ if (!url.host) {
+ // The host, user, and port are joined, you can't copy one without the others.
+ url.user = baseUrl.user;
+ url.host = baseUrl.host;
+ url.port = baseUrl.port;
+ }
+ mergePaths(url, baseUrl);
+ }
+ normalizePath(url);
+ // If the input (and base, if there was one) are both relative, then we need to output a relative.
+ if (url.relativePath) {
+ // The first char is always a "/".
+ const path = url.path.slice(1);
+ if (!path)
+ return '.';
+ // If base started with a leading ".", or there is no base and input started with a ".", then we
+ // need to ensure that the relative path starts with a ".". We don't know if relative starts
+ // with a "..", though, so check before prepending.
+ const keepRelative = (base || input).startsWith('.');
+ return !keepRelative || path.startsWith('.') ? path : './' + path;
+ }
+ // If there's no host (and no scheme/user/port), then we need to output an absolute path.
+ if (!url.scheme && !url.host)
+ return url.path;
+ // We're outputting either an absolute URL, or a protocol relative one.
+ return `${url.scheme}//${url.user}${url.host}${url.port}${url.path}`;
+ }
+
+ function resolve(input, base) {
+ // The base is always treated as a directory, if it's not empty.
+ // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327
+ // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401
+ if (base && !base.endsWith('/'))
+ base += '/';
+ return resolve$1(input, base);
+ }
+
+ /**
+ * Removes everything after the last "/", but leaves the slash.
+ */
+ function stripFilename(path) {
+ if (!path)
+ return '';
+ const index = path.lastIndexOf('/');
+ return path.slice(0, index + 1);
+ }
+
+ const COLUMN$1 = 0;
+ const SOURCES_INDEX$1 = 1;
+ const SOURCE_LINE$1 = 2;
+ const SOURCE_COLUMN$1 = 3;
+ const NAMES_INDEX$1 = 4;
+
+ function maybeSort(mappings, owned) {
+ const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);
+ if (unsortedIndex === mappings.length)
+ return mappings;
+ // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If
+ // not, we do not want to modify the consumer's input array.
+ if (!owned)
+ mappings = mappings.slice();
+ for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {
+ mappings[i] = sortSegments(mappings[i], owned);
+ }
+ return mappings;
+ }
+ function nextUnsortedSegmentLine(mappings, start) {
+ for (let i = start; i < mappings.length; i++) {
+ if (!isSorted(mappings[i]))
+ return i;
+ }
+ return mappings.length;
+ }
+ function isSorted(line) {
+ for (let j = 1; j < line.length; j++) {
+ if (line[j][COLUMN$1] < line[j - 1][COLUMN$1]) {
+ return false;
+ }
+ }
+ return true;
+ }
+ function sortSegments(line, owned) {
+ if (!owned)
+ line = line.slice();
+ return line.sort(sortComparator);
+ }
+ function sortComparator(a, b) {
+ return a[COLUMN$1] - b[COLUMN$1];
+ }
+
+ let found = false;
+ /**
+ * A binary search implementation that returns the index if a match is found.
+ * If no match is found, then the left-index (the index associated with the item that comes just
+ * before the desired index) is returned. To maintain proper sort order, a splice would happen at
+ * the next index:
+ *
+ * ```js
+ * const array = [1, 3];
+ * const needle = 2;
+ * const index = binarySearch(array, needle, (item, needle) => item - needle);
+ *
+ * assert.equal(index, 0);
+ * array.splice(index + 1, 0, needle);
+ * assert.deepEqual(array, [1, 2, 3]);
+ * ```
+ */
+ function binarySearch(haystack, needle, low, high) {
+ while (low <= high) {
+ const mid = low + ((high - low) >> 1);
+ const cmp = haystack[mid][COLUMN$1] - needle;
+ if (cmp === 0) {
+ found = true;
+ return mid;
+ }
+ if (cmp < 0) {
+ low = mid + 1;
+ }
+ else {
+ high = mid - 1;
+ }
+ }
+ found = false;
+ return low - 1;
+ }
+ function upperBound(haystack, needle, index) {
+ for (let i = index + 1; i < haystack.length; i++, index++) {
+ if (haystack[i][COLUMN$1] !== needle)
+ break;
+ }
+ return index;
+ }
+ function lowerBound(haystack, needle, index) {
+ for (let i = index - 1; i >= 0; i--, index--) {
+ if (haystack[i][COLUMN$1] !== needle)
+ break;
+ }
+ return index;
+ }
+ function memoizedState() {
+ return {
+ lastKey: -1,
+ lastNeedle: -1,
+ lastIndex: -1,
+ };
+ }
+ /**
+ * This overly complicated beast is just to record the last tested line/column and the resulting
+ * index, allowing us to skip a few tests if mappings are monotonically increasing.
+ */
+ function memoizedBinarySearch(haystack, needle, state, key) {
+ const { lastKey, lastNeedle, lastIndex } = state;
+ let low = 0;
+ let high = haystack.length - 1;
+ if (key === lastKey) {
+ if (needle === lastNeedle) {
+ found = lastIndex !== -1 && haystack[lastIndex][COLUMN$1] === needle;
+ return lastIndex;
+ }
+ if (needle >= lastNeedle) {
+ // lastIndex may be -1 if the previous needle was not found.
+ low = lastIndex === -1 ? 0 : lastIndex;
+ }
+ else {
+ high = lastIndex;
+ }
+ }
+ state.lastKey = key;
+ state.lastNeedle = needle;
+ return (state.lastIndex = binarySearch(haystack, needle, low, high));
+ }
+
+ const AnyMap = function (map, mapUrl) {
+ const parsed = typeof map === 'string' ? JSON.parse(map) : map;
+ if (!('sections' in parsed))
+ return new TraceMap(parsed, mapUrl);
+ const mappings = [];
+ const sources = [];
+ const sourcesContent = [];
+ const names = [];
+ const { sections } = parsed;
+ let i = 0;
+ for (; i < sections.length - 1; i++) {
+ const no = sections[i + 1].offset;
+ addSection(sections[i], mapUrl, mappings, sources, sourcesContent, names, no.line, no.column);
+ }
+ if (sections.length > 0) {
+ addSection(sections[i], mapUrl, mappings, sources, sourcesContent, names, Infinity, Infinity);
+ }
+ const joined = {
+ version: 3,
+ file: parsed.file,
+ names,
+ sources,
+ sourcesContent,
+ mappings,
+ };
+ return presortedDecodedMap(joined);
+ };
+ function addSection(section, mapUrl, mappings, sources, sourcesContent, names, stopLine, stopColumn) {
+ const map = AnyMap(section.map, mapUrl);
+ const { line: lineOffset, column: columnOffset } = section.offset;
+ const sourcesOffset = sources.length;
+ const namesOffset = names.length;
+ const decoded = decodedMappings(map);
+ const { resolvedSources } = map;
+ append(sources, resolvedSources);
+ append(sourcesContent, map.sourcesContent || fillSourcesContent(resolvedSources.length));
+ append(names, map.names);
+ // If this section jumps forwards several lines, we need to add lines to the output mappings catch up.
+ for (let i = mappings.length; i <= lineOffset; i++)
+ mappings.push([]);
+ // We can only add so many lines before we step into the range that the next section's map
+ // controls. When we get to the last line, then we'll start checking the segments to see if
+ // they've crossed into the column range.
+ const stopI = stopLine - lineOffset;
+ const len = Math.min(decoded.length, stopI + 1);
+ for (let i = 0; i < len; i++) {
+ const line = decoded[i];
+ // On the 0th loop, the line will already exist due to a previous section, or the line catch up
+ // loop above.
+ const out = i === 0 ? mappings[lineOffset] : (mappings[lineOffset + i] = []);
+ // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the
+ // map can be multiple lines), it doesn't.
+ const cOffset = i === 0 ? columnOffset : 0;
+ for (let j = 0; j < line.length; j++) {
+ const seg = line[j];
+ const column = cOffset + seg[COLUMN$1];
+ // If this segment steps into the column range that the next section's map controls, we need
+ // to stop early.
+ if (i === stopI && column >= stopColumn)
+ break;
+ if (seg.length === 1) {
+ out.push([column]);
+ continue;
+ }
+ const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX$1];
+ const sourceLine = seg[SOURCE_LINE$1];
+ const sourceColumn = seg[SOURCE_COLUMN$1];
+ if (seg.length === 4) {
+ out.push([column, sourcesIndex, sourceLine, sourceColumn]);
+ continue;
+ }
+ out.push([column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX$1]]);
+ }
+ }
+ }
+ function append(arr, other) {
+ for (let i = 0; i < other.length; i++)
+ arr.push(other[i]);
+ }
+ // Sourcemaps don't need to have sourcesContent, and if they don't, we need to create an array of
+ // equal length to the sources. This is because the sources and sourcesContent are paired arrays,
+ // where `sourcesContent[i]` is the content of the `sources[i]` file. If we didn't, then joined
+ // sourcemap would desynchronize the sources/contents.
+ function fillSourcesContent(len) {
+ const sourcesContent = [];
+ for (let i = 0; i < len; i++)
+ sourcesContent[i] = null;
+ return sourcesContent;
+ }
+
+ const INVALID_ORIGINAL_MAPPING = Object.freeze({
+ source: null,
+ line: null,
+ column: null,
+ name: null,
+ });
+ Object.freeze({
+ line: null,
+ column: null,
+ });
+ const LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';
+ const COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';
+ const LEAST_UPPER_BOUND = -1;
+ const GREATEST_LOWER_BOUND = 1;
+ /**
+ * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.
+ */
+ let decodedMappings;
+ /**
+ * A higher-level API to find the source/line/column associated with a generated line/column
+ * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in
+ * `source-map` library.
+ */
+ let originalPositionFor;
+ /**
+ * A helper that skips sorting of the input map's mappings array, which can be expensive for larger
+ * maps.
+ */
+ let presortedDecodedMap;
+ class TraceMap {
+ constructor(map, mapUrl) {
+ this._decodedMemo = memoizedState();
+ this._bySources = undefined;
+ this._bySourceMemos = undefined;
+ const isString = typeof map === 'string';
+ if (!isString && map.constructor === TraceMap)
+ return map;
+ const parsed = (isString ? JSON.parse(map) : map);
+ const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;
+ this.version = version;
+ this.file = file;
+ this.names = names;
+ this.sourceRoot = sourceRoot;
+ this.sources = sources;
+ this.sourcesContent = sourcesContent;
+ if (sourceRoot || mapUrl) {
+ const from = resolve(sourceRoot || '', stripFilename(mapUrl));
+ this.resolvedSources = sources.map((s) => resolve(s || '', from));
+ }
+ else {
+ this.resolvedSources = sources.map((s) => s || '');
+ }
+ const { mappings } = parsed;
+ if (typeof mappings === 'string') {
+ this._encoded = mappings;
+ this._decoded = undefined;
+ }
+ else {
+ this._encoded = undefined;
+ this._decoded = maybeSort(mappings, isString);
+ }
+ }
+ }
+ (() => {
+ decodedMappings = (map) => {
+ return (map._decoded || (map._decoded = decode(map._encoded)));
+ };
+ originalPositionFor = (map, { line, column, bias }) => {
+ line--;
+ if (line < 0)
+ throw new Error(LINE_GTR_ZERO);
+ if (column < 0)
+ throw new Error(COL_GTR_EQ_ZERO);
+ const decoded = decodedMappings(map);
+ // It's common for parent source maps to have pointers to lines that have no
+ // mapping (like a "//# sourceMappingURL=") at the end of the child file.
+ if (line >= decoded.length)
+ return INVALID_ORIGINAL_MAPPING;
+ const segment = traceSegmentInternal(decoded[line], map._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND);
+ if (segment == null)
+ return INVALID_ORIGINAL_MAPPING;
+ if (segment.length == 1)
+ return INVALID_ORIGINAL_MAPPING;
+ const { names, resolvedSources } = map;
+ return {
+ source: resolvedSources[segment[SOURCES_INDEX$1]],
+ line: segment[SOURCE_LINE$1] + 1,
+ column: segment[SOURCE_COLUMN$1],
+ name: segment.length === 5 ? names[segment[NAMES_INDEX$1]] : null,
+ };
+ };
+ presortedDecodedMap = (map, mapUrl) => {
+ const clone = Object.assign({}, map);
+ clone.mappings = [];
+ const tracer = new TraceMap(clone, mapUrl);
+ tracer._decoded = map.mappings;
+ return tracer;
+ };
+ })();
+ function traceSegmentInternal(segments, memo, line, column, bias) {
+ let index = memoizedBinarySearch(segments, column, memo, line);
+ if (found) {
+ index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);
+ }
+ else if (bias === LEAST_UPPER_BOUND)
+ index++;
+ if (index === -1 || index === segments.length)
+ return null;
+ return segments[index];
+ }
+
+ /**
+ * Gets the index associated with `key` in the backing array, if it is already present.
+ */
+ let get;
+ /**
+ * Puts `key` into the backing array, if it is not already present. Returns
+ * the index of the `key` in the backing array.
+ */
+ let put;
+ /**
+ * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the
+ * index of the `key` in the backing array.
+ *
+ * This is designed to allow synchronizing a second array with the contents of the backing array,
+ * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,
+ * and there are never duplicates.
+ */
+ class SetArray {
+ constructor() {
+ this._indexes = { __proto__: null };
+ this.array = [];
+ }
+ }
+ (() => {
+ get = (strarr, key) => strarr._indexes[key];
+ put = (strarr, key) => {
+ // The key may or may not be present. If it is present, it's a number.
+ const index = get(strarr, key);
+ if (index !== undefined)
+ return index;
+ const { array, _indexes: indexes } = strarr;
+ return (indexes[key] = array.push(key) - 1);
+ };
+ })();
+
+ const COLUMN = 0;
+ const SOURCES_INDEX = 1;
+ const SOURCE_LINE = 2;
+ const SOURCE_COLUMN = 3;
+ const NAMES_INDEX = 4;
+
+ const NO_NAME = -1;
+ /**
+ * Same as `addMapping`, but will only add the mapping if it generates useful information in the
+ * resulting map. This only works correctly if mappings are added **in order**, meaning you should
+ * not add a mapping with a lower generated line/column than one that came before.
+ */
+ let maybeAddMapping;
+ /**
+ * Adds/removes the content of the source file to the source map.
+ */
+ let setSourceContent;
+ /**
+ * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+ let toDecodedMap;
+ /**
+ * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+ let toEncodedMap;
+ // This split declaration is only so that terser can elminiate the static initialization block.
+ let addSegmentInternal;
+ /**
+ * Provides the state to generate a sourcemap.
+ */
+ class GenMapping {
+ constructor({ file, sourceRoot } = {}) {
+ this._names = new SetArray();
+ this._sources = new SetArray();
+ this._sourcesContent = [];
+ this._mappings = [];
+ this.file = file;
+ this.sourceRoot = sourceRoot;
+ }
+ }
+ (() => {
+ maybeAddMapping = (map, mapping) => {
+ return addMappingInternal(true, map, mapping);
+ };
+ setSourceContent = (map, source, content) => {
+ const { _sources: sources, _sourcesContent: sourcesContent } = map;
+ sourcesContent[put(sources, source)] = content;
+ };
+ toDecodedMap = (map) => {
+ const { file, sourceRoot, _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;
+ removeEmptyFinalLines(mappings);
+ return {
+ version: 3,
+ file: file || undefined,
+ names: names.array,
+ sourceRoot: sourceRoot || undefined,
+ sources: sources.array,
+ sourcesContent,
+ mappings,
+ };
+ };
+ toEncodedMap = (map) => {
+ const decoded = toDecodedMap(map);
+ return Object.assign(Object.assign({}, decoded), { mappings: encode(decoded.mappings) });
+ };
+ // Internal helpers
+ addSegmentInternal = (skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name) => {
+ const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;
+ const line = getLine(mappings, genLine);
+ const index = getColumnIndex(line, genColumn);
+ if (!source) {
+ if (skipable && skipSourceless(line, index))
+ return;
+ return insert(line, index, [genColumn]);
+ }
+ const sourcesIndex = put(sources, source);
+ const namesIndex = name ? put(names, name) : NO_NAME;
+ if (sourcesIndex === sourcesContent.length)
+ sourcesContent[sourcesIndex] = null;
+ if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {
+ return;
+ }
+ return insert(line, index, name
+ ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]
+ : [genColumn, sourcesIndex, sourceLine, sourceColumn]);
+ };
+ })();
+ function getLine(mappings, index) {
+ for (let i = mappings.length; i <= index; i++) {
+ mappings[i] = [];
+ }
+ return mappings[index];
+ }
+ function getColumnIndex(line, genColumn) {
+ let index = line.length;
+ for (let i = index - 1; i >= 0; index = i--) {
+ const current = line[i];
+ if (genColumn >= current[COLUMN])
+ break;
+ }
+ return index;
+ }
+ function insert(array, index, value) {
+ for (let i = array.length; i > index; i--) {
+ array[i] = array[i - 1];
+ }
+ array[index] = value;
+ }
+ function removeEmptyFinalLines(mappings) {
+ const { length } = mappings;
+ let len = length;
+ for (let i = len - 1; i >= 0; len = i, i--) {
+ if (mappings[i].length > 0)
+ break;
+ }
+ if (len < length)
+ mappings.length = len;
+ }
+ function skipSourceless(line, index) {
+ // The start of a line is already sourceless, so adding a sourceless segment to the beginning
+ // doesn't generate any useful information.
+ if (index === 0)
+ return true;
+ const prev = line[index - 1];
+ // If the previous segment is also sourceless, then adding another sourceless segment doesn't
+ // genrate any new information. Else, this segment will end the source/named segment and point to
+ // a sourceless position, which is useful.
+ return prev.length === 1;
+ }
+ function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) {
+ // A source/named segment at the start of a line gives position at that genColumn
+ if (index === 0)
+ return false;
+ const prev = line[index - 1];
+ // If the previous segment is sourceless, then we're transitioning to a source.
+ if (prev.length === 1)
+ return false;
+ // If the previous segment maps to the exact same source position, then this segment doesn't
+ // provide any new position information.
+ return (sourcesIndex === prev[SOURCES_INDEX] &&
+ sourceLine === prev[SOURCE_LINE] &&
+ sourceColumn === prev[SOURCE_COLUMN] &&
+ namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME));
+ }
+ function addMappingInternal(skipable, map, mapping) {
+ const { generated, source, original, name } = mapping;
+ if (!source) {
+ return addSegmentInternal(skipable, map, generated.line - 1, generated.column, null, null, null, null);
+ }
+ const s = source;
+ return addSegmentInternal(skipable, map, generated.line - 1, generated.column, s, original.line - 1, original.column, name);
+ }
+
+ class SourceMapConsumer {
+ constructor(map, mapUrl) {
+ const trace = (this._map = new AnyMap(map, mapUrl));
+ this.file = trace.file;
+ this.names = trace.names;
+ this.sourceRoot = trace.sourceRoot;
+ this.sources = trace.resolvedSources;
+ this.sourcesContent = trace.sourcesContent;
+ }
+ originalPositionFor(needle) {
+ return originalPositionFor(this._map, needle);
+ }
+ destroy() {
+ // noop.
+ }
+ }
+ class SourceMapGenerator {
+ constructor(opts) {
+ this._map = new GenMapping(opts);
+ }
+ addMapping(mapping) {
+ maybeAddMapping(this._map, mapping);
+ }
+ setSourceContent(source, content) {
+ setSourceContent(this._map, source, content);
+ }
+ toJSON() {
+ return toEncodedMap(this._map);
+ }
+ toDecodedMap() {
+ return toDecodedMap(this._map);
+ }
+ }
+
+ exports.SourceMapConsumer = SourceMapConsumer;
+ exports.SourceMapGenerator = SourceMapGenerator;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+}));
+//# sourceMappingURL=source-map.umd.js.map
diff --git a/node_modules/@jridgewell/source-map/dist/source-map.umd.js.map b/node_modules/@jridgewell/source-map/dist/source-map.umd.js.map
new file mode 100644
index 00000000..358767ef
--- /dev/null
+++ b/node_modules/@jridgewell/source-map/dist/source-map.umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"source-map.umd.js","sources":["../node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs","../node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs","../node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs","../node_modules/@jridgewell/set-array/dist/set-array.mjs","../node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs","../../src/source-map.ts"],"sourcesContent":["const comma = ','.charCodeAt(0);\nconst semicolon = ';'.charCodeAt(0);\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInteger = new Uint8Array(128); // z is 122 in ASCII\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n charToInteger[c] = i;\n intToChar[i] = c;\n}\n// Provide a fallback for older environments.\nconst td = typeof TextDecoder !== 'undefined'\n ? new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf) {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf) {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\nfunction decode(mappings) {\n const state = new Int32Array(5);\n const decoded = [];\n let line = [];\n let sorted = true;\n let lastCol = 0;\n for (let i = 0; i < mappings.length;) {\n const c = mappings.charCodeAt(i);\n if (c === comma) {\n i++;\n }\n else if (c === semicolon) {\n state[0] = lastCol = 0;\n if (!sorted)\n sort(line);\n sorted = true;\n decoded.push(line);\n line = [];\n i++;\n }\n else {\n i = decodeInteger(mappings, i, state, 0); // generatedCodeColumn\n const col = state[0];\n if (col < lastCol)\n sorted = false;\n lastCol = col;\n if (!hasMoreSegments(mappings, i)) {\n line.push([col]);\n continue;\n }\n i = decodeInteger(mappings, i, state, 1); // sourceFileIndex\n i = decodeInteger(mappings, i, state, 2); // sourceCodeLine\n i = decodeInteger(mappings, i, state, 3); // sourceCodeColumn\n if (!hasMoreSegments(mappings, i)) {\n line.push([col, state[1], state[2], state[3]]);\n continue;\n }\n i = decodeInteger(mappings, i, state, 4); // nameIndex\n line.push([col, state[1], state[2], state[3], state[4]]);\n }\n }\n if (!sorted)\n sort(line);\n decoded.push(line);\n return decoded;\n}\nfunction decodeInteger(mappings, pos, state, j) {\n let value = 0;\n let shift = 0;\n let integer = 0;\n do {\n const c = mappings.charCodeAt(pos++);\n integer = charToInteger[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n const shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n state[j] += value;\n return pos;\n}\nfunction hasMoreSegments(mappings, i) {\n if (i >= mappings.length)\n return false;\n const c = mappings.charCodeAt(i);\n if (c === comma || c === semicolon)\n return false;\n return true;\n}\nfunction sort(line) {\n line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[0] - b[0];\n}\nfunction encode(decoded) {\n const state = new Int32Array(5);\n let buf = new Uint8Array(1024);\n let pos = 0;\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) {\n buf = reserve(buf, pos, 1);\n buf[pos++] = semicolon;\n }\n if (line.length === 0)\n continue;\n state[0] = 0;\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n // We can push up to 5 ints, each int can take at most 7 chars, and we\n // may push a comma.\n buf = reserve(buf, pos, 36);\n if (j > 0)\n buf[pos++] = comma;\n pos = encodeInteger(buf, pos, state, segment, 0); // generatedCodeColumn\n if (segment.length === 1)\n continue;\n pos = encodeInteger(buf, pos, state, segment, 1); // sourceFileIndex\n pos = encodeInteger(buf, pos, state, segment, 2); // sourceCodeLine\n pos = encodeInteger(buf, pos, state, segment, 3); // sourceCodeColumn\n if (segment.length === 4)\n continue;\n pos = encodeInteger(buf, pos, state, segment, 4); // nameIndex\n }\n }\n return td.decode(buf.subarray(0, pos));\n}\nfunction reserve(buf, pos, count) {\n if (buf.length > pos + count)\n return buf;\n const swap = new Uint8Array(buf.length * 2);\n swap.set(buf);\n return swap;\n}\nfunction encodeInteger(buf, pos, state, segment, j) {\n const next = segment[j];\n let num = next - state[j];\n state[j] = next;\n num = num < 0 ? (-num << 1) | 1 : num << 1;\n do {\n let clamped = num & 0b011111;\n num >>>= 5;\n if (num > 0)\n clamped |= 0b100000;\n buf[pos++] = intToChar[clamped];\n } while (num > 0);\n return pos;\n}\n\nexport { decode, encode };\n//# sourceMappingURL=sourcemap-codec.mjs.map\n","// Matches the scheme of a URL, eg \"http://\"\nconst schemeRegex = /^[\\w+.-]+:\\/\\//;\n/**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n */\nconst urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?/;\n/**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may inclue \"/\", guaranteed.\n */\nconst fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/]*)?)?(\\/?.*)/i;\nfunction isAbsoluteUrl(input) {\n return schemeRegex.test(input);\n}\nfunction isSchemeRelativeUrl(input) {\n return input.startsWith('//');\n}\nfunction isAbsolutePath(input) {\n return input.startsWith('/');\n}\nfunction isFileUrl(input) {\n return input.startsWith('file:');\n}\nfunction parseAbsoluteUrl(input) {\n const match = urlRegex.exec(input);\n return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/');\n}\nfunction parseFileUrl(input) {\n const match = fileRegex.exec(input);\n const path = match[2];\n return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path);\n}\nfunction makeUrl(scheme, user, host, port, path) {\n return {\n scheme,\n user,\n host,\n port,\n path,\n relativePath: false,\n };\n}\nfunction parseUrl(input) {\n if (isSchemeRelativeUrl(input)) {\n const url = parseAbsoluteUrl('http:' + input);\n url.scheme = '';\n return url;\n }\n if (isAbsolutePath(input)) {\n const url = parseAbsoluteUrl('http://foo.com' + input);\n url.scheme = '';\n url.host = '';\n return url;\n }\n if (isFileUrl(input))\n return parseFileUrl(input);\n if (isAbsoluteUrl(input))\n return parseAbsoluteUrl(input);\n const url = parseAbsoluteUrl('http://foo.com/' + input);\n url.scheme = '';\n url.host = '';\n url.relativePath = true;\n return url;\n}\nfunction stripPathFilename(path) {\n // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n // paths. It's not a file, so we can't strip it.\n if (path.endsWith('/..'))\n return path;\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\nfunction mergePaths(url, base) {\n // If we're not a relative path, then we're an absolute path, and it doesn't matter what base is.\n if (!url.relativePath)\n return;\n normalizePath(base);\n // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n // path).\n if (url.path === '/') {\n url.path = base.path;\n }\n else {\n // Resolution happens relative to the base path's directory, not the file.\n url.path = stripPathFilename(base.path) + url.path;\n }\n // If the base path is absolute, then our path is now absolute too.\n url.relativePath = base.relativePath;\n}\n/**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\nfunction normalizePath(url) {\n const { relativePath } = url;\n const pieces = url.path.split('/');\n // We need to preserve the first piece always, so that we output a leading slash. The item at\n // pieces[0] is an empty string.\n let pointer = 1;\n // Positive is the number of real directories we've output, used for popping a parent directory.\n // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n let positive = 0;\n // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n // real directory, we won't need to append, unless the other conditions happen again.\n let addTrailingSlash = false;\n for (let i = 1; i < pieces.length; i++) {\n const piece = pieces[i];\n // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n if (!piece) {\n addTrailingSlash = true;\n continue;\n }\n // If we encounter a real directory, then we don't need to append anymore.\n addTrailingSlash = false;\n // A current directory, which we can always drop.\n if (piece === '.')\n continue;\n // A parent directory, we need to see if there are any real directories we can pop. Else, we\n // have an excess of parents, and we'll need to keep the \"..\".\n if (piece === '..') {\n if (positive) {\n addTrailingSlash = true;\n positive--;\n pointer--;\n }\n else if (relativePath) {\n // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n pieces[pointer++] = piece;\n }\n continue;\n }\n // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n // any popped or dropped directories.\n pieces[pointer++] = piece;\n positive++;\n }\n let path = '';\n for (let i = 1; i < pointer; i++) {\n path += '/' + pieces[i];\n }\n if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n path += '/';\n }\n url.path = path;\n}\n/**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\nfunction resolve(input, base) {\n if (!input && !base)\n return '';\n const url = parseUrl(input);\n // If we have a base, and the input isn't already an absolute URL, then we need to merge.\n if (base && !url.scheme) {\n const baseUrl = parseUrl(base);\n url.scheme = baseUrl.scheme;\n // If there's no host, then we were just a path.\n if (!url.host) {\n // The host, user, and port are joined, you can't copy one without the others.\n url.user = baseUrl.user;\n url.host = baseUrl.host;\n url.port = baseUrl.port;\n }\n mergePaths(url, baseUrl);\n }\n normalizePath(url);\n // If the input (and base, if there was one) are both relative, then we need to output a relative.\n if (url.relativePath) {\n // The first char is always a \"/\".\n const path = url.path.slice(1);\n if (!path)\n return '.';\n // If base started with a leading \".\", or there is no base and input started with a \".\", then we\n // need to ensure that the relative path starts with a \".\". We don't know if relative starts\n // with a \"..\", though, so check before prepending.\n const keepRelative = (base || input).startsWith('.');\n return !keepRelative || path.startsWith('.') ? path : './' + path;\n }\n // If there's no host (and no scheme/user/port), then we need to output an absolute path.\n if (!url.scheme && !url.host)\n return url.path;\n // We're outputting either an absolute URL, or a protocol relative one.\n return `${url.scheme}//${url.user}${url.host}${url.port}${url.path}`;\n}\n\nexport { resolve as default };\n//# sourceMappingURL=resolve-uri.mjs.map\n","import { encode, decode } from '@jridgewell/sourcemap-codec';\nimport resolveUri from '@jridgewell/resolve-uri';\n\nfunction resolve(input, base) {\n // The base is always treated as a directory, if it's not empty.\n // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327\n // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401\n if (base && !base.endsWith('/'))\n base += '/';\n return resolveUri(input, base);\n}\n\n/**\n * Removes everything after the last \"/\", but leaves the slash.\n */\nfunction stripFilename(path) {\n if (!path)\n return '';\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n\nconst COLUMN = 0;\nconst SOURCES_INDEX = 1;\nconst SOURCE_LINE = 2;\nconst SOURCE_COLUMN = 3;\nconst NAMES_INDEX = 4;\nconst REV_GENERATED_LINE = 1;\nconst REV_GENERATED_COLUMN = 2;\n\nfunction maybeSort(mappings, owned) {\n const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);\n if (unsortedIndex === mappings.length)\n return mappings;\n // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If\n // not, we do not want to modify the consumer's input array.\n if (!owned)\n mappings = mappings.slice();\n for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {\n mappings[i] = sortSegments(mappings[i], owned);\n }\n return mappings;\n}\nfunction nextUnsortedSegmentLine(mappings, start) {\n for (let i = start; i < mappings.length; i++) {\n if (!isSorted(mappings[i]))\n return i;\n }\n return mappings.length;\n}\nfunction isSorted(line) {\n for (let j = 1; j < line.length; j++) {\n if (line[j][COLUMN] < line[j - 1][COLUMN]) {\n return false;\n }\n }\n return true;\n}\nfunction sortSegments(line, owned) {\n if (!owned)\n line = line.slice();\n return line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[COLUMN] - b[COLUMN];\n}\n\nlet found = false;\n/**\n * A binary search implementation that returns the index if a match is found.\n * If no match is found, then the left-index (the index associated with the item that comes just\n * before the desired index) is returned. To maintain proper sort order, a splice would happen at\n * the next index:\n *\n * ```js\n * const array = [1, 3];\n * const needle = 2;\n * const index = binarySearch(array, needle, (item, needle) => item - needle);\n *\n * assert.equal(index, 0);\n * array.splice(index + 1, 0, needle);\n * assert.deepEqual(array, [1, 2, 3]);\n * ```\n */\nfunction binarySearch(haystack, needle, low, high) {\n while (low <= high) {\n const mid = low + ((high - low) >> 1);\n const cmp = haystack[mid][COLUMN] - needle;\n if (cmp === 0) {\n found = true;\n return mid;\n }\n if (cmp < 0) {\n low = mid + 1;\n }\n else {\n high = mid - 1;\n }\n }\n found = false;\n return low - 1;\n}\nfunction upperBound(haystack, needle, index) {\n for (let i = index + 1; i < haystack.length; i++, index++) {\n if (haystack[i][COLUMN] !== needle)\n break;\n }\n return index;\n}\nfunction lowerBound(haystack, needle, index) {\n for (let i = index - 1; i >= 0; i--, index--) {\n if (haystack[i][COLUMN] !== needle)\n break;\n }\n return index;\n}\nfunction memoizedState() {\n return {\n lastKey: -1,\n lastNeedle: -1,\n lastIndex: -1,\n };\n}\n/**\n * This overly complicated beast is just to record the last tested line/column and the resulting\n * index, allowing us to skip a few tests if mappings are monotonically increasing.\n */\nfunction memoizedBinarySearch(haystack, needle, state, key) {\n const { lastKey, lastNeedle, lastIndex } = state;\n let low = 0;\n let high = haystack.length - 1;\n if (key === lastKey) {\n if (needle === lastNeedle) {\n found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;\n return lastIndex;\n }\n if (needle >= lastNeedle) {\n // lastIndex may be -1 if the previous needle was not found.\n low = lastIndex === -1 ? 0 : lastIndex;\n }\n else {\n high = lastIndex;\n }\n }\n state.lastKey = key;\n state.lastNeedle = needle;\n return (state.lastIndex = binarySearch(haystack, needle, low, high));\n}\n\n// Rebuilds the original source files, with mappings that are ordered by source line/column instead\n// of generated line/column.\nfunction buildBySources(decoded, memos) {\n const sources = memos.map(buildNullArray);\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n if (seg.length === 1)\n continue;\n const sourceIndex = seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n const originalSource = sources[sourceIndex];\n const originalLine = (originalSource[sourceLine] || (originalSource[sourceLine] = []));\n const memo = memos[sourceIndex];\n // The binary search either found a match, or it found the left-index just before where the\n // segment should go. Either way, we want to insert after that. And there may be multiple\n // generated segments associated with an original location, so there may need to move several\n // indexes before we find where we need to insert.\n const index = upperBound(originalLine, sourceColumn, memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine));\n insert(originalLine, (memo.lastIndex = index + 1), [sourceColumn, i, seg[COLUMN]]);\n }\n }\n return sources;\n}\nfunction insert(array, index, value) {\n for (let i = array.length; i > index; i--) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n}\n// Null arrays allow us to use ordered index keys without actually allocating contiguous memory like\n// a real array. We use a null-prototype object to avoid prototype pollution and deoptimizations.\n// Numeric properties on objects are magically sorted in ascending order by the engine regardless of\n// the insertion order. So, by setting any numeric keys, even out of order, we'll get ascending\n// order when iterating with for-in.\nfunction buildNullArray() {\n return { __proto__: null };\n}\n\nconst AnyMap = function (map, mapUrl) {\n const parsed = typeof map === 'string' ? JSON.parse(map) : map;\n if (!('sections' in parsed))\n return new TraceMap(parsed, mapUrl);\n const mappings = [];\n const sources = [];\n const sourcesContent = [];\n const names = [];\n const { sections } = parsed;\n let i = 0;\n for (; i < sections.length - 1; i++) {\n const no = sections[i + 1].offset;\n addSection(sections[i], mapUrl, mappings, sources, sourcesContent, names, no.line, no.column);\n }\n if (sections.length > 0) {\n addSection(sections[i], mapUrl, mappings, sources, sourcesContent, names, Infinity, Infinity);\n }\n const joined = {\n version: 3,\n file: parsed.file,\n names,\n sources,\n sourcesContent,\n mappings,\n };\n return presortedDecodedMap(joined);\n};\nfunction addSection(section, mapUrl, mappings, sources, sourcesContent, names, stopLine, stopColumn) {\n const map = AnyMap(section.map, mapUrl);\n const { line: lineOffset, column: columnOffset } = section.offset;\n const sourcesOffset = sources.length;\n const namesOffset = names.length;\n const decoded = decodedMappings(map);\n const { resolvedSources } = map;\n append(sources, resolvedSources);\n append(sourcesContent, map.sourcesContent || fillSourcesContent(resolvedSources.length));\n append(names, map.names);\n // If this section jumps forwards several lines, we need to add lines to the output mappings catch up.\n for (let i = mappings.length; i <= lineOffset; i++)\n mappings.push([]);\n // We can only add so many lines before we step into the range that the next section's map\n // controls. When we get to the last line, then we'll start checking the segments to see if\n // they've crossed into the column range.\n const stopI = stopLine - lineOffset;\n const len = Math.min(decoded.length, stopI + 1);\n for (let i = 0; i < len; i++) {\n const line = decoded[i];\n // On the 0th loop, the line will already exist due to a previous section, or the line catch up\n // loop above.\n const out = i === 0 ? mappings[lineOffset] : (mappings[lineOffset + i] = []);\n // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the\n // map can be multiple lines), it doesn't.\n const cOffset = i === 0 ? columnOffset : 0;\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n const column = cOffset + seg[COLUMN];\n // If this segment steps into the column range that the next section's map controls, we need\n // to stop early.\n if (i === stopI && column >= stopColumn)\n break;\n if (seg.length === 1) {\n out.push([column]);\n continue;\n }\n const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n if (seg.length === 4) {\n out.push([column, sourcesIndex, sourceLine, sourceColumn]);\n continue;\n }\n out.push([column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]]);\n }\n }\n}\nfunction append(arr, other) {\n for (let i = 0; i < other.length; i++)\n arr.push(other[i]);\n}\n// Sourcemaps don't need to have sourcesContent, and if they don't, we need to create an array of\n// equal length to the sources. This is because the sources and sourcesContent are paired arrays,\n// where `sourcesContent[i]` is the content of the `sources[i]` file. If we didn't, then joined\n// sourcemap would desynchronize the sources/contents.\nfunction fillSourcesContent(len) {\n const sourcesContent = [];\n for (let i = 0; i < len; i++)\n sourcesContent[i] = null;\n return sourcesContent;\n}\n\nconst INVALID_ORIGINAL_MAPPING = Object.freeze({\n source: null,\n line: null,\n column: null,\n name: null,\n});\nconst INVALID_GENERATED_MAPPING = Object.freeze({\n line: null,\n column: null,\n});\nconst LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';\nconst COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';\nconst LEAST_UPPER_BOUND = -1;\nconst GREATEST_LOWER_BOUND = 1;\n/**\n * Returns the encoded (VLQ string) form of the SourceMap's mappings field.\n */\nlet encodedMappings;\n/**\n * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.\n */\nlet decodedMappings;\n/**\n * A low-level API to find the segment associated with a generated line/column (think, from a\n * stack trace). Line and column here are 0-based, unlike `originalPositionFor`.\n */\nlet traceSegment;\n/**\n * A higher-level API to find the source/line/column associated with a generated line/column\n * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in\n * `source-map` library.\n */\nlet originalPositionFor;\n/**\n * Finds the source/line/column directly after the mapping returned by originalPositionFor, provided\n * the found mapping is from the same source and line as the originalPositionFor mapping.\n *\n * Eg, in the code `let id = 1`, `originalPositionAfter` could find the mapping associated with `1`\n * using the same needle that would return `id` when calling `originalPositionFor`.\n */\nlet generatedPositionFor;\n/**\n * Iterates each mapping in generated position order.\n */\nlet eachMapping;\n/**\n * A helper that skips sorting of the input map's mappings array, which can be expensive for larger\n * maps.\n */\nlet presortedDecodedMap;\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nlet decodedMap;\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nlet encodedMap;\nclass TraceMap {\n constructor(map, mapUrl) {\n this._decodedMemo = memoizedState();\n this._bySources = undefined;\n this._bySourceMemos = undefined;\n const isString = typeof map === 'string';\n if (!isString && map.constructor === TraceMap)\n return map;\n const parsed = (isString ? JSON.parse(map) : map);\n const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;\n this.version = version;\n this.file = file;\n this.names = names;\n this.sourceRoot = sourceRoot;\n this.sources = sources;\n this.sourcesContent = sourcesContent;\n if (sourceRoot || mapUrl) {\n const from = resolve(sourceRoot || '', stripFilename(mapUrl));\n this.resolvedSources = sources.map((s) => resolve(s || '', from));\n }\n else {\n this.resolvedSources = sources.map((s) => s || '');\n }\n const { mappings } = parsed;\n if (typeof mappings === 'string') {\n this._encoded = mappings;\n this._decoded = undefined;\n }\n else {\n this._encoded = undefined;\n this._decoded = maybeSort(mappings, isString);\n }\n }\n}\n(() => {\n encodedMappings = (map) => {\n var _a;\n return ((_a = map._encoded) !== null && _a !== void 0 ? _a : (map._encoded = encode(map._decoded)));\n };\n decodedMappings = (map) => {\n return (map._decoded || (map._decoded = decode(map._encoded)));\n };\n traceSegment = (map, line, column) => {\n const decoded = decodedMappings(map);\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length)\n return null;\n return traceSegmentInternal(decoded[line], map._decodedMemo, line, column, GREATEST_LOWER_BOUND);\n };\n originalPositionFor = (map, { line, column, bias }) => {\n line--;\n if (line < 0)\n throw new Error(LINE_GTR_ZERO);\n if (column < 0)\n throw new Error(COL_GTR_EQ_ZERO);\n const decoded = decodedMappings(map);\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length)\n return INVALID_ORIGINAL_MAPPING;\n const segment = traceSegmentInternal(decoded[line], map._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND);\n if (segment == null)\n return INVALID_ORIGINAL_MAPPING;\n if (segment.length == 1)\n return INVALID_ORIGINAL_MAPPING;\n const { names, resolvedSources } = map;\n return {\n source: resolvedSources[segment[SOURCES_INDEX]],\n line: segment[SOURCE_LINE] + 1,\n column: segment[SOURCE_COLUMN],\n name: segment.length === 5 ? names[segment[NAMES_INDEX]] : null,\n };\n };\n generatedPositionFor = (map, { source, line, column, bias }) => {\n line--;\n if (line < 0)\n throw new Error(LINE_GTR_ZERO);\n if (column < 0)\n throw new Error(COL_GTR_EQ_ZERO);\n const { sources, resolvedSources } = map;\n let sourceIndex = sources.indexOf(source);\n if (sourceIndex === -1)\n sourceIndex = resolvedSources.indexOf(source);\n if (sourceIndex === -1)\n return INVALID_GENERATED_MAPPING;\n const generated = (map._bySources || (map._bySources = buildBySources(decodedMappings(map), (map._bySourceMemos = sources.map(memoizedState)))));\n const memos = map._bySourceMemos;\n const segments = generated[sourceIndex][line];\n if (segments == null)\n return INVALID_GENERATED_MAPPING;\n const segment = traceSegmentInternal(segments, memos[sourceIndex], line, column, bias || GREATEST_LOWER_BOUND);\n if (segment == null)\n return INVALID_GENERATED_MAPPING;\n return {\n line: segment[REV_GENERATED_LINE] + 1,\n column: segment[REV_GENERATED_COLUMN],\n };\n };\n eachMapping = (map, cb) => {\n const decoded = decodedMappings(map);\n const { names, resolvedSources } = map;\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n const generatedLine = i + 1;\n const generatedColumn = seg[0];\n let source = null;\n let originalLine = null;\n let originalColumn = null;\n let name = null;\n if (seg.length !== 1) {\n source = resolvedSources[seg[1]];\n originalLine = seg[2] + 1;\n originalColumn = seg[3];\n }\n if (seg.length === 5)\n name = names[seg[4]];\n cb({\n generatedLine,\n generatedColumn,\n source,\n originalLine,\n originalColumn,\n name,\n });\n }\n }\n };\n presortedDecodedMap = (map, mapUrl) => {\n const clone = Object.assign({}, map);\n clone.mappings = [];\n const tracer = new TraceMap(clone, mapUrl);\n tracer._decoded = map.mappings;\n return tracer;\n };\n decodedMap = (map) => {\n return {\n version: 3,\n file: map.file,\n names: map.names,\n sourceRoot: map.sourceRoot,\n sources: map.sources,\n sourcesContent: map.sourcesContent,\n mappings: decodedMappings(map),\n };\n };\n encodedMap = (map) => {\n return {\n version: 3,\n file: map.file,\n names: map.names,\n sourceRoot: map.sourceRoot,\n sources: map.sources,\n sourcesContent: map.sourcesContent,\n mappings: encodedMappings(map),\n };\n };\n})();\nfunction traceSegmentInternal(segments, memo, line, column, bias) {\n let index = memoizedBinarySearch(segments, column, memo, line);\n if (found) {\n index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);\n }\n else if (bias === LEAST_UPPER_BOUND)\n index++;\n if (index === -1 || index === segments.length)\n return null;\n return segments[index];\n}\n\nexport { AnyMap, GREATEST_LOWER_BOUND, LEAST_UPPER_BOUND, TraceMap, decodedMap, decodedMappings, eachMapping, encodedMap, encodedMappings, generatedPositionFor, originalPositionFor, presortedDecodedMap, traceSegment };\n//# sourceMappingURL=trace-mapping.mjs.map\n","/**\n * Gets the index associated with `key` in the backing array, if it is already present.\n */\nlet get;\n/**\n * Puts `key` into the backing array, if it is not already present. Returns\n * the index of the `key` in the backing array.\n */\nlet put;\n/**\n * Pops the last added item out of the SetArray.\n */\nlet pop;\n/**\n * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the\n * index of the `key` in the backing array.\n *\n * This is designed to allow synchronizing a second array with the contents of the backing array,\n * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,\n * and there are never duplicates.\n */\nclass SetArray {\n constructor() {\n this._indexes = { __proto__: null };\n this.array = [];\n }\n}\n(() => {\n get = (strarr, key) => strarr._indexes[key];\n put = (strarr, key) => {\n // The key may or may not be present. If it is present, it's a number.\n const index = get(strarr, key);\n if (index !== undefined)\n return index;\n const { array, _indexes: indexes } = strarr;\n return (indexes[key] = array.push(key) - 1);\n };\n pop = (strarr) => {\n const { array, _indexes: indexes } = strarr;\n if (array.length === 0)\n return;\n const last = array.pop();\n indexes[last] = undefined;\n };\n})();\n\nexport { SetArray, get, pop, put };\n//# sourceMappingURL=set-array.mjs.map\n","import { SetArray, put } from '@jridgewell/set-array';\nimport { encode } from '@jridgewell/sourcemap-codec';\nimport { TraceMap, decodedMappings } from '@jridgewell/trace-mapping';\n\nconst COLUMN = 0;\nconst SOURCES_INDEX = 1;\nconst SOURCE_LINE = 2;\nconst SOURCE_COLUMN = 3;\nconst NAMES_INDEX = 4;\n\nconst NO_NAME = -1;\n/**\n * A low-level API to associate a generated position with an original source position. Line and\n * column here are 0-based, unlike `addMapping`.\n */\nlet addSegment;\n/**\n * A high-level API to associate a generated position with an original source position. Line is\n * 1-based, but column is 0-based, due to legacy behavior in `source-map` library.\n */\nlet addMapping;\n/**\n * Same as `addSegment`, but will only add the segment if it generates useful information in the\n * resulting map. This only works correctly if segments are added **in order**, meaning you should\n * not add a segment with a lower generated line/column than one that came before.\n */\nlet maybeAddSegment;\n/**\n * Same as `addMapping`, but will only add the mapping if it generates useful information in the\n * resulting map. This only works correctly if mappings are added **in order**, meaning you should\n * not add a mapping with a lower generated line/column than one that came before.\n */\nlet maybeAddMapping;\n/**\n * Adds/removes the content of the source file to the source map.\n */\nlet setSourceContent;\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nlet toDecodedMap;\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nlet toEncodedMap;\n/**\n * Constructs a new GenMapping, using the already present mappings of the input.\n */\nlet fromMap;\n/**\n * Returns an array of high-level mapping objects for every recorded segment, which could then be\n * passed to the `source-map` library.\n */\nlet allMappings;\n// This split declaration is only so that terser can elminiate the static initialization block.\nlet addSegmentInternal;\n/**\n * Provides the state to generate a sourcemap.\n */\nclass GenMapping {\n constructor({ file, sourceRoot } = {}) {\n this._names = new SetArray();\n this._sources = new SetArray();\n this._sourcesContent = [];\n this._mappings = [];\n this.file = file;\n this.sourceRoot = sourceRoot;\n }\n}\n(() => {\n addSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name) => {\n return addSegmentInternal(false, map, genLine, genColumn, source, sourceLine, sourceColumn, name);\n };\n maybeAddSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name) => {\n return addSegmentInternal(true, map, genLine, genColumn, source, sourceLine, sourceColumn, name);\n };\n addMapping = (map, mapping) => {\n return addMappingInternal(false, map, mapping);\n };\n maybeAddMapping = (map, mapping) => {\n return addMappingInternal(true, map, mapping);\n };\n setSourceContent = (map, source, content) => {\n const { _sources: sources, _sourcesContent: sourcesContent } = map;\n sourcesContent[put(sources, source)] = content;\n };\n toDecodedMap = (map) => {\n const { file, sourceRoot, _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;\n removeEmptyFinalLines(mappings);\n return {\n version: 3,\n file: file || undefined,\n names: names.array,\n sourceRoot: sourceRoot || undefined,\n sources: sources.array,\n sourcesContent,\n mappings,\n };\n };\n toEncodedMap = (map) => {\n const decoded = toDecodedMap(map);\n return Object.assign(Object.assign({}, decoded), { mappings: encode(decoded.mappings) });\n };\n allMappings = (map) => {\n const out = [];\n const { _mappings: mappings, _sources: sources, _names: names } = map;\n for (let i = 0; i < mappings.length; i++) {\n const line = mappings[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n const generated = { line: i + 1, column: seg[COLUMN] };\n let source = undefined;\n let original = undefined;\n let name = undefined;\n if (seg.length !== 1) {\n source = sources.array[seg[SOURCES_INDEX]];\n original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] };\n if (seg.length === 5)\n name = names.array[seg[NAMES_INDEX]];\n }\n out.push({ generated, source, original, name });\n }\n }\n return out;\n };\n fromMap = (input) => {\n const map = new TraceMap(input);\n const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot });\n putAll(gen._names, map.names);\n putAll(gen._sources, map.sources);\n gen._sourcesContent = map.sourcesContent || map.sources.map(() => null);\n gen._mappings = decodedMappings(map);\n return gen;\n };\n // Internal helpers\n addSegmentInternal = (skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name) => {\n const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;\n const line = getLine(mappings, genLine);\n const index = getColumnIndex(line, genColumn);\n if (!source) {\n if (skipable && skipSourceless(line, index))\n return;\n return insert(line, index, [genColumn]);\n }\n const sourcesIndex = put(sources, source);\n const namesIndex = name ? put(names, name) : NO_NAME;\n if (sourcesIndex === sourcesContent.length)\n sourcesContent[sourcesIndex] = null;\n if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {\n return;\n }\n return insert(line, index, name\n ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]\n : [genColumn, sourcesIndex, sourceLine, sourceColumn]);\n };\n})();\nfunction getLine(mappings, index) {\n for (let i = mappings.length; i <= index; i++) {\n mappings[i] = [];\n }\n return mappings[index];\n}\nfunction getColumnIndex(line, genColumn) {\n let index = line.length;\n for (let i = index - 1; i >= 0; index = i--) {\n const current = line[i];\n if (genColumn >= current[COLUMN])\n break;\n }\n return index;\n}\nfunction insert(array, index, value) {\n for (let i = array.length; i > index; i--) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n}\nfunction removeEmptyFinalLines(mappings) {\n const { length } = mappings;\n let len = length;\n for (let i = len - 1; i >= 0; len = i, i--) {\n if (mappings[i].length > 0)\n break;\n }\n if (len < length)\n mappings.length = len;\n}\nfunction putAll(strarr, array) {\n for (let i = 0; i < array.length; i++)\n put(strarr, array[i]);\n}\nfunction skipSourceless(line, index) {\n // The start of a line is already sourceless, so adding a sourceless segment to the beginning\n // doesn't generate any useful information.\n if (index === 0)\n return true;\n const prev = line[index - 1];\n // If the previous segment is also sourceless, then adding another sourceless segment doesn't\n // genrate any new information. Else, this segment will end the source/named segment and point to\n // a sourceless position, which is useful.\n return prev.length === 1;\n}\nfunction skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) {\n // A source/named segment at the start of a line gives position at that genColumn\n if (index === 0)\n return false;\n const prev = line[index - 1];\n // If the previous segment is sourceless, then we're transitioning to a source.\n if (prev.length === 1)\n return false;\n // If the previous segment maps to the exact same source position, then this segment doesn't\n // provide any new position information.\n return (sourcesIndex === prev[SOURCES_INDEX] &&\n sourceLine === prev[SOURCE_LINE] &&\n sourceColumn === prev[SOURCE_COLUMN] &&\n namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME));\n}\nfunction addMappingInternal(skipable, map, mapping) {\n const { generated, source, original, name } = mapping;\n if (!source) {\n return addSegmentInternal(skipable, map, generated.line - 1, generated.column, null, null, null, null);\n }\n const s = source;\n return addSegmentInternal(skipable, map, generated.line - 1, generated.column, s, original.line - 1, original.column, name);\n}\n\nexport { GenMapping, addMapping, addSegment, allMappings, fromMap, maybeAddMapping, maybeAddSegment, setSourceContent, toDecodedMap, toEncodedMap };\n//# sourceMappingURL=gen-mapping.mjs.map\n","import { AnyMap, originalPositionFor } from '@jridgewell/trace-mapping';\nimport {\n GenMapping,\n maybeAddMapping,\n toDecodedMap,\n toEncodedMap,\n setSourceContent,\n} from '@jridgewell/gen-mapping';\n\nimport type { TraceMap, SectionedSourceMapInput } from '@jridgewell/trace-mapping';\nexport type { TraceMap, SectionedSourceMapInput };\n\nimport type { Mapping, EncodedSourceMap, DecodedSourceMap } from '@jridgewell/gen-mapping';\nexport type { Mapping, EncodedSourceMap, DecodedSourceMap };\n\nexport class SourceMapConsumer {\n private declare _map: TraceMap;\n declare file: TraceMap['file'];\n declare names: TraceMap['names'];\n declare sourceRoot: TraceMap['sourceRoot'];\n declare sources: TraceMap['sources'];\n declare sourcesContent: TraceMap['sourcesContent'];\n\n constructor(map: ConstructorParameters[0], mapUrl: Parameters[1]) {\n const trace = (this._map = new AnyMap(map, mapUrl));\n\n this.file = trace.file;\n this.names = trace.names;\n this.sourceRoot = trace.sourceRoot;\n this.sources = trace.resolvedSources;\n this.sourcesContent = trace.sourcesContent;\n }\n\n originalPositionFor(\n needle: Parameters[1],\n ): ReturnType {\n return originalPositionFor(this._map, needle);\n }\n\n destroy() {\n // noop.\n }\n}\n\nexport class SourceMapGenerator {\n private declare _map: GenMapping;\n\n constructor(opts: ConstructorParameters[0]) {\n this._map = new GenMapping(opts);\n }\n\n addMapping(mapping: Parameters[1]): ReturnType {\n maybeAddMapping(this._map, mapping);\n }\n\n setSourceContent(\n source: Parameters[1],\n content: Parameters[2],\n ): ReturnType {\n setSourceContent(this._map, source, content);\n }\n\n toJSON(): ReturnType {\n return toEncodedMap(this._map);\n }\n\n toDecodedMap(): ReturnType {\n return toDecodedMap(this._map);\n }\n}\n"],"names":["sortComparator","resolve","resolveUri","COLUMN","SOURCES_INDEX","SOURCE_LINE","SOURCE_COLUMN","NAMES_INDEX"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/source-map/dist/types/source-map.d.ts b/node_modules/@jridgewell/source-map/dist/types/source-map.d.ts
new file mode 100644
index 00000000..25ec1d08
--- /dev/null
+++ b/node_modules/@jridgewell/source-map/dist/types/source-map.d.ts
@@ -0,0 +1,25 @@
+import { AnyMap, originalPositionFor } from '@jridgewell/trace-mapping';
+import { GenMapping, maybeAddMapping, toDecodedMap, toEncodedMap, setSourceContent } from '@jridgewell/gen-mapping';
+import type { TraceMap, SectionedSourceMapInput } from '@jridgewell/trace-mapping';
+export type { TraceMap, SectionedSourceMapInput };
+import type { Mapping, EncodedSourceMap, DecodedSourceMap } from '@jridgewell/gen-mapping';
+export type { Mapping, EncodedSourceMap, DecodedSourceMap };
+export declare class SourceMapConsumer {
+ private _map;
+ file: TraceMap['file'];
+ names: TraceMap['names'];
+ sourceRoot: TraceMap['sourceRoot'];
+ sources: TraceMap['sources'];
+ sourcesContent: TraceMap['sourcesContent'];
+ constructor(map: ConstructorParameters[0], mapUrl: Parameters[1]);
+ originalPositionFor(needle: Parameters[1]): ReturnType;
+ destroy(): void;
+}
+export declare class SourceMapGenerator {
+ private _map;
+ constructor(opts: ConstructorParameters[0]);
+ addMapping(mapping: Parameters[1]): ReturnType;
+ setSourceContent(source: Parameters[1], content: Parameters[2]): ReturnType;
+ toJSON(): ReturnType;
+ toDecodedMap(): ReturnType;
+}
diff --git a/node_modules/@jridgewell/source-map/package.json b/node_modules/@jridgewell/source-map/package.json
new file mode 100644
index 00000000..023910ff
--- /dev/null
+++ b/node_modules/@jridgewell/source-map/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "@jridgewell/source-map",
+ "version": "0.3.3",
+ "description": "Packages @jridgewell/trace-mapping and @jridgewell/gen-mapping into the familiar source-map API",
+ "keywords": [
+ "sourcemap",
+ "source",
+ "map"
+ ],
+ "author": "Justin Ridgewell ",
+ "license": "MIT",
+ "repository": "https://github.com/jridgewell/source-map",
+ "main": "dist/source-map.umd.js",
+ "module": "dist/source-map.mjs",
+ "types": "dist/types/source-map.d.ts",
+ "exports": {
+ ".": [
+ {
+ "types": "./dist/types/source-map.d.ts",
+ "browser": "./dist/source-map.umd.js",
+ "require": "./dist/source-map.umd.js",
+ "import": "./dist/source-map.mjs"
+ },
+ "./dist/source-map.umd.js"
+ ],
+ "./package.json": "./package.json"
+ },
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "prebuild": "rm -rf dist",
+ "build": "run-s -n build:*",
+ "build:rollup": "rollup -c rollup.config.js",
+ "build:ts": "tsc --project tsconfig.build.json",
+ "lint": "run-s -n lint:*",
+ "lint:prettier": "npm run test:lint:prettier -- --write",
+ "lint:ts": "npm run test:lint:ts -- --fix",
+ "pretest": "run-s build:rollup",
+ "test": "run-s -n test:lint test:only",
+ "test:debug": "mocha --inspect-brk",
+ "test:lint": "run-s -n test:lint:*",
+ "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'",
+ "test:lint:ts": "eslint '{src,test}/**/*.ts'",
+ "test:only": "mocha",
+ "test:coverage": "c8 mocha",
+ "test:watch": "mocha --watch",
+ "prepublishOnly": "npm run preversion",
+ "preversion": "run-s test build"
+ },
+ "devDependencies": {
+ "@rollup/plugin-node-resolve": "13.2.1",
+ "@rollup/plugin-typescript": "8.3.0",
+ "@types/mocha": "9.1.1",
+ "@types/node": "17.0.30",
+ "@typescript-eslint/eslint-plugin": "5.10.0",
+ "@typescript-eslint/parser": "5.10.0",
+ "c8": "7.11.0",
+ "eslint": "8.7.0",
+ "eslint-config-prettier": "8.3.0",
+ "mocha": "9.2.0",
+ "npm-run-all": "4.1.5",
+ "prettier": "2.5.1",
+ "rollup": "2.66.0",
+ "typescript": "4.5.5"
+ },
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+}
diff --git a/node_modules/@jridgewell/sourcemap-codec/LICENSE b/node_modules/@jridgewell/sourcemap-codec/LICENSE
new file mode 100644
index 00000000..a331065a
--- /dev/null
+++ b/node_modules/@jridgewell/sourcemap-codec/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2015 Rich Harris
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/@jridgewell/sourcemap-codec/README.md b/node_modules/@jridgewell/sourcemap-codec/README.md
new file mode 100644
index 00000000..5cbb3152
--- /dev/null
+++ b/node_modules/@jridgewell/sourcemap-codec/README.md
@@ -0,0 +1,200 @@
+# @jridgewell/sourcemap-codec
+
+Encode/decode the `mappings` property of a [sourcemap](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit).
+
+
+## Why?
+
+Sourcemaps are difficult to generate and manipulate, because the `mappings` property – the part that actually links the generated code back to the original source – is encoded using an obscure method called [Variable-length quantity](https://en.wikipedia.org/wiki/Variable-length_quantity). On top of that, each segment in the mapping contains offsets rather than absolute indices, which means that you can't look at a segment in isolation – you have to understand the whole sourcemap.
+
+This package makes the process slightly easier.
+
+
+## Installation
+
+```bash
+npm install @jridgewell/sourcemap-codec
+```
+
+
+## Usage
+
+```js
+import { encode, decode } from '@jridgewell/sourcemap-codec';
+
+var decoded = decode( ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
+
+assert.deepEqual( decoded, [
+ // the first line (of the generated code) has no mappings,
+ // as shown by the starting semi-colon (which separates lines)
+ [],
+
+ // the second line contains four (comma-separated) segments
+ [
+ // segments are encoded as you'd expect:
+ // [ generatedCodeColumn, sourceIndex, sourceCodeLine, sourceCodeColumn, nameIndex ]
+
+ // i.e. the first segment begins at column 2, and maps back to the second column
+ // of the second line (both zero-based) of the 0th source, and uses the 0th
+ // name in the `map.names` array
+ [ 2, 0, 2, 2, 0 ],
+
+ // the remaining segments are 4-length rather than 5-length,
+ // because they don't map a name
+ [ 4, 0, 2, 4 ],
+ [ 6, 0, 2, 5 ],
+ [ 7, 0, 2, 7 ]
+ ],
+
+ // the final line contains two segments
+ [
+ [ 2, 1, 10, 19 ],
+ [ 12, 1, 11, 20 ]
+ ]
+]);
+
+var encoded = encode( decoded );
+assert.equal( encoded, ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
+```
+
+## Benchmarks
+
+```
+node v18.0.0
+
+amp.js.map - 45120 segments
+
+Decode Memory Usage:
+@jridgewell/sourcemap-codec 5479160 bytes
+sourcemap-codec 5659336 bytes
+source-map-0.6.1 17144440 bytes
+source-map-0.8.0 6867424 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Decode speed:
+decode: @jridgewell/sourcemap-codec x 502 ops/sec ±1.03% (90 runs sampled)
+decode: sourcemap-codec x 445 ops/sec ±0.97% (92 runs sampled)
+decode: source-map-0.6.1 x 36.01 ops/sec ±1.64% (49 runs sampled)
+decode: source-map-0.8.0 x 367 ops/sec ±0.04% (95 runs sampled)
+Fastest is decode: @jridgewell/sourcemap-codec
+
+Encode Memory Usage:
+@jridgewell/sourcemap-codec 1261620 bytes
+sourcemap-codec 9119248 bytes
+source-map-0.6.1 8968560 bytes
+source-map-0.8.0 8952952 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Encode speed:
+encode: @jridgewell/sourcemap-codec x 738 ops/sec ±0.42% (98 runs sampled)
+encode: sourcemap-codec x 238 ops/sec ±0.73% (88 runs sampled)
+encode: source-map-0.6.1 x 162 ops/sec ±0.43% (84 runs sampled)
+encode: source-map-0.8.0 x 191 ops/sec ±0.34% (90 runs sampled)
+Fastest is encode: @jridgewell/sourcemap-codec
+
+
+***
+
+
+babel.min.js.map - 347793 segments
+
+Decode Memory Usage:
+@jridgewell/sourcemap-codec 35338184 bytes
+sourcemap-codec 35922736 bytes
+source-map-0.6.1 62366360 bytes
+source-map-0.8.0 44337416 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Decode speed:
+decode: @jridgewell/sourcemap-codec x 40.35 ops/sec ±4.47% (54 runs sampled)
+decode: sourcemap-codec x 36.76 ops/sec ±3.67% (51 runs sampled)
+decode: source-map-0.6.1 x 4.44 ops/sec ±2.15% (16 runs sampled)
+decode: source-map-0.8.0 x 59.35 ops/sec ±0.05% (78 runs sampled)
+Fastest is decode: source-map-0.8.0
+
+Encode Memory Usage:
+@jridgewell/sourcemap-codec 7212604 bytes
+sourcemap-codec 21421456 bytes
+source-map-0.6.1 25286888 bytes
+source-map-0.8.0 25498744 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Encode speed:
+encode: @jridgewell/sourcemap-codec x 112 ops/sec ±0.13% (84 runs sampled)
+encode: sourcemap-codec x 30.23 ops/sec ±2.76% (53 runs sampled)
+encode: source-map-0.6.1 x 19.43 ops/sec ±3.70% (37 runs sampled)
+encode: source-map-0.8.0 x 19.40 ops/sec ±3.26% (37 runs sampled)
+Fastest is encode: @jridgewell/sourcemap-codec
+
+
+***
+
+
+preact.js.map - 1992 segments
+
+Decode Memory Usage:
+@jridgewell/sourcemap-codec 500272 bytes
+sourcemap-codec 516864 bytes
+source-map-0.6.1 1596672 bytes
+source-map-0.8.0 517272 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Decode speed:
+decode: @jridgewell/sourcemap-codec x 16,137 ops/sec ±0.17% (99 runs sampled)
+decode: sourcemap-codec x 12,139 ops/sec ±0.13% (99 runs sampled)
+decode: source-map-0.6.1 x 1,264 ops/sec ±0.12% (100 runs sampled)
+decode: source-map-0.8.0 x 9,894 ops/sec ±0.08% (101 runs sampled)
+Fastest is decode: @jridgewell/sourcemap-codec
+
+Encode Memory Usage:
+@jridgewell/sourcemap-codec 321026 bytes
+sourcemap-codec 830832 bytes
+source-map-0.6.1 586608 bytes
+source-map-0.8.0 586680 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Encode speed:
+encode: @jridgewell/sourcemap-codec x 19,876 ops/sec ±0.78% (95 runs sampled)
+encode: sourcemap-codec x 6,983 ops/sec ±0.15% (100 runs sampled)
+encode: source-map-0.6.1 x 5,070 ops/sec ±0.12% (102 runs sampled)
+encode: source-map-0.8.0 x 5,641 ops/sec ±0.17% (100 runs sampled)
+Fastest is encode: @jridgewell/sourcemap-codec
+
+
+***
+
+
+react.js.map - 5726 segments
+
+Decode Memory Usage:
+@jridgewell/sourcemap-codec 734848 bytes
+sourcemap-codec 954200 bytes
+source-map-0.6.1 2276432 bytes
+source-map-0.8.0 955488 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Decode speed:
+decode: @jridgewell/sourcemap-codec x 5,723 ops/sec ±0.12% (98 runs sampled)
+decode: sourcemap-codec x 4,555 ops/sec ±0.09% (101 runs sampled)
+decode: source-map-0.6.1 x 437 ops/sec ±0.11% (93 runs sampled)
+decode: source-map-0.8.0 x 3,441 ops/sec ±0.15% (100 runs sampled)
+Fastest is decode: @jridgewell/sourcemap-codec
+
+Encode Memory Usage:
+@jridgewell/sourcemap-codec 638672 bytes
+sourcemap-codec 1109840 bytes
+source-map-0.6.1 1321224 bytes
+source-map-0.8.0 1324448 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Encode speed:
+encode: @jridgewell/sourcemap-codec x 6,801 ops/sec ±0.48% (98 runs sampled)
+encode: sourcemap-codec x 2,533 ops/sec ±0.13% (101 runs sampled)
+encode: source-map-0.6.1 x 2,248 ops/sec ±0.08% (100 runs sampled)
+encode: source-map-0.8.0 x 2,303 ops/sec ±0.15% (100 runs sampled)
+Fastest is encode: @jridgewell/sourcemap-codec
+```
+
+# License
+
+MIT
diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
new file mode 100644
index 00000000..3dff3721
--- /dev/null
+++ b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
@@ -0,0 +1,164 @@
+const comma = ','.charCodeAt(0);
+const semicolon = ';'.charCodeAt(0);
+const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+const intToChar = new Uint8Array(64); // 64 possible chars.
+const charToInt = new Uint8Array(128); // z is 122 in ASCII
+for (let i = 0; i < chars.length; i++) {
+ const c = chars.charCodeAt(i);
+ intToChar[i] = c;
+ charToInt[c] = i;
+}
+// Provide a fallback for older environments.
+const td = typeof TextDecoder !== 'undefined'
+ ? /* #__PURE__ */ new TextDecoder()
+ : typeof Buffer !== 'undefined'
+ ? {
+ decode(buf) {
+ const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
+ return out.toString();
+ },
+ }
+ : {
+ decode(buf) {
+ let out = '';
+ for (let i = 0; i < buf.length; i++) {
+ out += String.fromCharCode(buf[i]);
+ }
+ return out;
+ },
+ };
+function decode(mappings) {
+ const state = new Int32Array(5);
+ const decoded = [];
+ let index = 0;
+ do {
+ const semi = indexOf(mappings, index);
+ const line = [];
+ let sorted = true;
+ let lastCol = 0;
+ state[0] = 0;
+ for (let i = index; i < semi; i++) {
+ let seg;
+ i = decodeInteger(mappings, i, state, 0); // genColumn
+ const col = state[0];
+ if (col < lastCol)
+ sorted = false;
+ lastCol = col;
+ if (hasMoreVlq(mappings, i, semi)) {
+ i = decodeInteger(mappings, i, state, 1); // sourcesIndex
+ i = decodeInteger(mappings, i, state, 2); // sourceLine
+ i = decodeInteger(mappings, i, state, 3); // sourceColumn
+ if (hasMoreVlq(mappings, i, semi)) {
+ i = decodeInteger(mappings, i, state, 4); // namesIndex
+ seg = [col, state[1], state[2], state[3], state[4]];
+ }
+ else {
+ seg = [col, state[1], state[2], state[3]];
+ }
+ }
+ else {
+ seg = [col];
+ }
+ line.push(seg);
+ }
+ if (!sorted)
+ sort(line);
+ decoded.push(line);
+ index = semi + 1;
+ } while (index <= mappings.length);
+ return decoded;
+}
+function indexOf(mappings, index) {
+ const idx = mappings.indexOf(';', index);
+ return idx === -1 ? mappings.length : idx;
+}
+function decodeInteger(mappings, pos, state, j) {
+ let value = 0;
+ let shift = 0;
+ let integer = 0;
+ do {
+ const c = mappings.charCodeAt(pos++);
+ integer = charToInt[c];
+ value |= (integer & 31) << shift;
+ shift += 5;
+ } while (integer & 32);
+ const shouldNegate = value & 1;
+ value >>>= 1;
+ if (shouldNegate) {
+ value = -0x80000000 | -value;
+ }
+ state[j] += value;
+ return pos;
+}
+function hasMoreVlq(mappings, i, length) {
+ if (i >= length)
+ return false;
+ return mappings.charCodeAt(i) !== comma;
+}
+function sort(line) {
+ line.sort(sortComparator);
+}
+function sortComparator(a, b) {
+ return a[0] - b[0];
+}
+function encode(decoded) {
+ const state = new Int32Array(5);
+ const bufLength = 1024 * 16;
+ const subLength = bufLength - 36;
+ const buf = new Uint8Array(bufLength);
+ const sub = buf.subarray(0, subLength);
+ let pos = 0;
+ let out = '';
+ for (let i = 0; i < decoded.length; i++) {
+ const line = decoded[i];
+ if (i > 0) {
+ if (pos === bufLength) {
+ out += td.decode(buf);
+ pos = 0;
+ }
+ buf[pos++] = semicolon;
+ }
+ if (line.length === 0)
+ continue;
+ state[0] = 0;
+ for (let j = 0; j < line.length; j++) {
+ const segment = line[j];
+ // We can push up to 5 ints, each int can take at most 7 chars, and we
+ // may push a comma.
+ if (pos > subLength) {
+ out += td.decode(sub);
+ buf.copyWithin(0, subLength, pos);
+ pos -= subLength;
+ }
+ if (j > 0)
+ buf[pos++] = comma;
+ pos = encodeInteger(buf, pos, state, segment, 0); // genColumn
+ if (segment.length === 1)
+ continue;
+ pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex
+ pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine
+ pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn
+ if (segment.length === 4)
+ continue;
+ pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex
+ }
+ }
+ return out + td.decode(buf.subarray(0, pos));
+}
+function encodeInteger(buf, pos, state, segment, j) {
+ const next = segment[j];
+ let num = next - state[j];
+ state[j] = next;
+ num = num < 0 ? (-num << 1) | 1 : num << 1;
+ do {
+ let clamped = num & 0b011111;
+ num >>>= 5;
+ if (num > 0)
+ clamped |= 0b100000;
+ buf[pos++] = intToChar[clamped];
+ } while (num > 0);
+ return pos;
+}
+
+export { decode, encode };
+//# sourceMappingURL=sourcemap-codec.mjs.map
diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map
new file mode 100644
index 00000000..236fd120
--- /dev/null
+++ b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"sourcemap-codec.mjs","sources":["../src/sourcemap-codec.ts"],"sourcesContent":["export type SourceMapSegment =\n | [number]\n | [number, number, number, number]\n | [number, number, number, number, number];\nexport type SourceMapLine = SourceMapSegment[];\nexport type SourceMapMappings = SourceMapLine[];\n\nconst comma = ','.charCodeAt(0);\nconst semicolon = ';'.charCodeAt(0);\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\n\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\n\n// Provide a fallback for older environments.\nconst td =\n typeof TextDecoder !== 'undefined'\n ? /* #__PURE__ */ new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf: Uint8Array) {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf: Uint8Array) {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\n\nexport function decode(mappings: string): SourceMapMappings {\n const state: [number, number, number, number, number] = new Int32Array(5) as any;\n const decoded: SourceMapMappings = [];\n\n let index = 0;\n do {\n const semi = indexOf(mappings, index);\n const line: SourceMapLine = [];\n let sorted = true;\n let lastCol = 0;\n state[0] = 0;\n\n for (let i = index; i < semi; i++) {\n let seg: SourceMapSegment;\n\n i = decodeInteger(mappings, i, state, 0); // genColumn\n const col = state[0];\n if (col < lastCol) sorted = false;\n lastCol = col;\n\n if (hasMoreVlq(mappings, i, semi)) {\n i = decodeInteger(mappings, i, state, 1); // sourcesIndex\n i = decodeInteger(mappings, i, state, 2); // sourceLine\n i = decodeInteger(mappings, i, state, 3); // sourceColumn\n\n if (hasMoreVlq(mappings, i, semi)) {\n i = decodeInteger(mappings, i, state, 4); // namesIndex\n seg = [col, state[1], state[2], state[3], state[4]];\n } else {\n seg = [col, state[1], state[2], state[3]];\n }\n } else {\n seg = [col];\n }\n\n line.push(seg);\n }\n\n if (!sorted) sort(line);\n decoded.push(line);\n index = semi + 1;\n } while (index <= mappings.length);\n\n return decoded;\n}\n\nfunction indexOf(mappings: string, index: number): number {\n const idx = mappings.indexOf(';', index);\n return idx === -1 ? mappings.length : idx;\n}\n\nfunction decodeInteger(mappings: string, pos: number, state: SourceMapSegment, j: number): number {\n let value = 0;\n let shift = 0;\n let integer = 0;\n\n do {\n const c = mappings.charCodeAt(pos++);\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n\n const shouldNegate = value & 1;\n value >>>= 1;\n\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n\n state[j] += value;\n return pos;\n}\n\nfunction hasMoreVlq(mappings: string, i: number, length: number): boolean {\n if (i >= length) return false;\n return mappings.charCodeAt(i) !== comma;\n}\n\nfunction sort(line: SourceMapSegment[]) {\n line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n return a[0] - b[0];\n}\n\nexport function encode(decoded: SourceMapMappings): string;\nexport function encode(decoded: Readonly): string;\nexport function encode(decoded: Readonly): string {\n const state: [number, number, number, number, number] = new Int32Array(5) as any;\n const bufLength = 1024 * 16;\n const subLength = bufLength - 36;\n const buf = new Uint8Array(bufLength);\n const sub = buf.subarray(0, subLength);\n let pos = 0;\n let out = '';\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) {\n if (pos === bufLength) {\n out += td.decode(buf);\n pos = 0;\n }\n buf[pos++] = semicolon;\n }\n if (line.length === 0) continue;\n\n state[0] = 0;\n\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n // We can push up to 5 ints, each int can take at most 7 chars, and we\n // may push a comma.\n if (pos > subLength) {\n out += td.decode(sub);\n buf.copyWithin(0, subLength, pos);\n pos -= subLength;\n }\n if (j > 0) buf[pos++] = comma;\n\n pos = encodeInteger(buf, pos, state, segment, 0); // genColumn\n\n if (segment.length === 1) continue;\n pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex\n pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine\n pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn\n\n if (segment.length === 4) continue;\n pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex\n }\n }\n\n return out + td.decode(buf.subarray(0, pos));\n}\n\nfunction encodeInteger(\n buf: Uint8Array,\n pos: number,\n state: SourceMapSegment,\n segment: SourceMapSegment,\n j: number,\n): number {\n const next = segment[j];\n let num = next - state[j];\n state[j] = next;\n\n num = num < 0 ? (-num << 1) | 1 : num << 1;\n do {\n let clamped = num & 0b011111;\n num >>>= 5;\n if (num > 0) clamped |= 0b100000;\n buf[pos++] = intToChar[clamped];\n } while (num > 0);\n\n return pos;\n}\n"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js
new file mode 100644
index 00000000..bec92a9c
--- /dev/null
+++ b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js
@@ -0,0 +1,175 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.sourcemapCodec = {}));
+})(this, (function (exports) { 'use strict';
+
+ const comma = ','.charCodeAt(0);
+ const semicolon = ';'.charCodeAt(0);
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+ const intToChar = new Uint8Array(64); // 64 possible chars.
+ const charToInt = new Uint8Array(128); // z is 122 in ASCII
+ for (let i = 0; i < chars.length; i++) {
+ const c = chars.charCodeAt(i);
+ intToChar[i] = c;
+ charToInt[c] = i;
+ }
+ // Provide a fallback for older environments.
+ const td = typeof TextDecoder !== 'undefined'
+ ? /* #__PURE__ */ new TextDecoder()
+ : typeof Buffer !== 'undefined'
+ ? {
+ decode(buf) {
+ const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
+ return out.toString();
+ },
+ }
+ : {
+ decode(buf) {
+ let out = '';
+ for (let i = 0; i < buf.length; i++) {
+ out += String.fromCharCode(buf[i]);
+ }
+ return out;
+ },
+ };
+ function decode(mappings) {
+ const state = new Int32Array(5);
+ const decoded = [];
+ let index = 0;
+ do {
+ const semi = indexOf(mappings, index);
+ const line = [];
+ let sorted = true;
+ let lastCol = 0;
+ state[0] = 0;
+ for (let i = index; i < semi; i++) {
+ let seg;
+ i = decodeInteger(mappings, i, state, 0); // genColumn
+ const col = state[0];
+ if (col < lastCol)
+ sorted = false;
+ lastCol = col;
+ if (hasMoreVlq(mappings, i, semi)) {
+ i = decodeInteger(mappings, i, state, 1); // sourcesIndex
+ i = decodeInteger(mappings, i, state, 2); // sourceLine
+ i = decodeInteger(mappings, i, state, 3); // sourceColumn
+ if (hasMoreVlq(mappings, i, semi)) {
+ i = decodeInteger(mappings, i, state, 4); // namesIndex
+ seg = [col, state[1], state[2], state[3], state[4]];
+ }
+ else {
+ seg = [col, state[1], state[2], state[3]];
+ }
+ }
+ else {
+ seg = [col];
+ }
+ line.push(seg);
+ }
+ if (!sorted)
+ sort(line);
+ decoded.push(line);
+ index = semi + 1;
+ } while (index <= mappings.length);
+ return decoded;
+ }
+ function indexOf(mappings, index) {
+ const idx = mappings.indexOf(';', index);
+ return idx === -1 ? mappings.length : idx;
+ }
+ function decodeInteger(mappings, pos, state, j) {
+ let value = 0;
+ let shift = 0;
+ let integer = 0;
+ do {
+ const c = mappings.charCodeAt(pos++);
+ integer = charToInt[c];
+ value |= (integer & 31) << shift;
+ shift += 5;
+ } while (integer & 32);
+ const shouldNegate = value & 1;
+ value >>>= 1;
+ if (shouldNegate) {
+ value = -0x80000000 | -value;
+ }
+ state[j] += value;
+ return pos;
+ }
+ function hasMoreVlq(mappings, i, length) {
+ if (i >= length)
+ return false;
+ return mappings.charCodeAt(i) !== comma;
+ }
+ function sort(line) {
+ line.sort(sortComparator);
+ }
+ function sortComparator(a, b) {
+ return a[0] - b[0];
+ }
+ function encode(decoded) {
+ const state = new Int32Array(5);
+ const bufLength = 1024 * 16;
+ const subLength = bufLength - 36;
+ const buf = new Uint8Array(bufLength);
+ const sub = buf.subarray(0, subLength);
+ let pos = 0;
+ let out = '';
+ for (let i = 0; i < decoded.length; i++) {
+ const line = decoded[i];
+ if (i > 0) {
+ if (pos === bufLength) {
+ out += td.decode(buf);
+ pos = 0;
+ }
+ buf[pos++] = semicolon;
+ }
+ if (line.length === 0)
+ continue;
+ state[0] = 0;
+ for (let j = 0; j < line.length; j++) {
+ const segment = line[j];
+ // We can push up to 5 ints, each int can take at most 7 chars, and we
+ // may push a comma.
+ if (pos > subLength) {
+ out += td.decode(sub);
+ buf.copyWithin(0, subLength, pos);
+ pos -= subLength;
+ }
+ if (j > 0)
+ buf[pos++] = comma;
+ pos = encodeInteger(buf, pos, state, segment, 0); // genColumn
+ if (segment.length === 1)
+ continue;
+ pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex
+ pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine
+ pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn
+ if (segment.length === 4)
+ continue;
+ pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex
+ }
+ }
+ return out + td.decode(buf.subarray(0, pos));
+ }
+ function encodeInteger(buf, pos, state, segment, j) {
+ const next = segment[j];
+ let num = next - state[j];
+ state[j] = next;
+ num = num < 0 ? (-num << 1) | 1 : num << 1;
+ do {
+ let clamped = num & 0b011111;
+ num >>>= 5;
+ if (num > 0)
+ clamped |= 0b100000;
+ buf[pos++] = intToChar[clamped];
+ } while (num > 0);
+ return pos;
+ }
+
+ exports.decode = decode;
+ exports.encode = encode;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+}));
+//# sourceMappingURL=sourcemap-codec.umd.js.map
diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map
new file mode 100644
index 00000000..b6b2003c
--- /dev/null
+++ b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"sourcemap-codec.umd.js","sources":["../src/sourcemap-codec.ts"],"sourcesContent":["export type SourceMapSegment =\n | [number]\n | [number, number, number, number]\n | [number, number, number, number, number];\nexport type SourceMapLine = SourceMapSegment[];\nexport type SourceMapMappings = SourceMapLine[];\n\nconst comma = ','.charCodeAt(0);\nconst semicolon = ';'.charCodeAt(0);\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\n\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\n\n// Provide a fallback for older environments.\nconst td =\n typeof TextDecoder !== 'undefined'\n ? /* #__PURE__ */ new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf: Uint8Array) {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf: Uint8Array) {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\n\nexport function decode(mappings: string): SourceMapMappings {\n const state: [number, number, number, number, number] = new Int32Array(5) as any;\n const decoded: SourceMapMappings = [];\n\n let index = 0;\n do {\n const semi = indexOf(mappings, index);\n const line: SourceMapLine = [];\n let sorted = true;\n let lastCol = 0;\n state[0] = 0;\n\n for (let i = index; i < semi; i++) {\n let seg: SourceMapSegment;\n\n i = decodeInteger(mappings, i, state, 0); // genColumn\n const col = state[0];\n if (col < lastCol) sorted = false;\n lastCol = col;\n\n if (hasMoreVlq(mappings, i, semi)) {\n i = decodeInteger(mappings, i, state, 1); // sourcesIndex\n i = decodeInteger(mappings, i, state, 2); // sourceLine\n i = decodeInteger(mappings, i, state, 3); // sourceColumn\n\n if (hasMoreVlq(mappings, i, semi)) {\n i = decodeInteger(mappings, i, state, 4); // namesIndex\n seg = [col, state[1], state[2], state[3], state[4]];\n } else {\n seg = [col, state[1], state[2], state[3]];\n }\n } else {\n seg = [col];\n }\n\n line.push(seg);\n }\n\n if (!sorted) sort(line);\n decoded.push(line);\n index = semi + 1;\n } while (index <= mappings.length);\n\n return decoded;\n}\n\nfunction indexOf(mappings: string, index: number): number {\n const idx = mappings.indexOf(';', index);\n return idx === -1 ? mappings.length : idx;\n}\n\nfunction decodeInteger(mappings: string, pos: number, state: SourceMapSegment, j: number): number {\n let value = 0;\n let shift = 0;\n let integer = 0;\n\n do {\n const c = mappings.charCodeAt(pos++);\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n\n const shouldNegate = value & 1;\n value >>>= 1;\n\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n\n state[j] += value;\n return pos;\n}\n\nfunction hasMoreVlq(mappings: string, i: number, length: number): boolean {\n if (i >= length) return false;\n return mappings.charCodeAt(i) !== comma;\n}\n\nfunction sort(line: SourceMapSegment[]) {\n line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n return a[0] - b[0];\n}\n\nexport function encode(decoded: SourceMapMappings): string;\nexport function encode(decoded: Readonly): string;\nexport function encode(decoded: Readonly): string {\n const state: [number, number, number, number, number] = new Int32Array(5) as any;\n const bufLength = 1024 * 16;\n const subLength = bufLength - 36;\n const buf = new Uint8Array(bufLength);\n const sub = buf.subarray(0, subLength);\n let pos = 0;\n let out = '';\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) {\n if (pos === bufLength) {\n out += td.decode(buf);\n pos = 0;\n }\n buf[pos++] = semicolon;\n }\n if (line.length === 0) continue;\n\n state[0] = 0;\n\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n // We can push up to 5 ints, each int can take at most 7 chars, and we\n // may push a comma.\n if (pos > subLength) {\n out += td.decode(sub);\n buf.copyWithin(0, subLength, pos);\n pos -= subLength;\n }\n if (j > 0) buf[pos++] = comma;\n\n pos = encodeInteger(buf, pos, state, segment, 0); // genColumn\n\n if (segment.length === 1) continue;\n pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex\n pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine\n pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn\n\n if (segment.length === 4) continue;\n pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex\n }\n }\n\n return out + td.decode(buf.subarray(0, pos));\n}\n\nfunction encodeInteger(\n buf: Uint8Array,\n pos: number,\n state: SourceMapSegment,\n segment: SourceMapSegment,\n j: number,\n): number {\n const next = segment[j];\n let num = next - state[j];\n state[j] = next;\n\n num = num < 0 ? (-num << 1) | 1 : num << 1;\n do {\n let clamped = num & 0b011111;\n num >>>= 5;\n if (num > 0) clamped |= 0b100000;\n buf[pos++] = intToChar[clamped];\n } while (num > 0);\n\n return pos;\n}\n"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts b/node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts
new file mode 100644
index 00000000..410d3202
--- /dev/null
+++ b/node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts
@@ -0,0 +1,6 @@
+export declare type SourceMapSegment = [number] | [number, number, number, number] | [number, number, number, number, number];
+export declare type SourceMapLine = SourceMapSegment[];
+export declare type SourceMapMappings = SourceMapLine[];
+export declare function decode(mappings: string): SourceMapMappings;
+export declare function encode(decoded: SourceMapMappings): string;
+export declare function encode(decoded: Readonly): string;
diff --git a/node_modules/@jridgewell/sourcemap-codec/package.json b/node_modules/@jridgewell/sourcemap-codec/package.json
new file mode 100644
index 00000000..578448f1
--- /dev/null
+++ b/node_modules/@jridgewell/sourcemap-codec/package.json
@@ -0,0 +1,74 @@
+{
+ "name": "@jridgewell/sourcemap-codec",
+ "version": "1.4.15",
+ "description": "Encode/decode sourcemap mappings",
+ "keywords": [
+ "sourcemap",
+ "vlq"
+ ],
+ "main": "dist/sourcemap-codec.umd.js",
+ "module": "dist/sourcemap-codec.mjs",
+ "types": "dist/types/sourcemap-codec.d.ts",
+ "files": [
+ "dist"
+ ],
+ "exports": {
+ ".": [
+ {
+ "types": "./dist/types/sourcemap-codec.d.ts",
+ "browser": "./dist/sourcemap-codec.umd.js",
+ "require": "./dist/sourcemap-codec.umd.js",
+ "import": "./dist/sourcemap-codec.mjs"
+ },
+ "./dist/sourcemap-codec.umd.js"
+ ],
+ "./package.json": "./package.json"
+ },
+ "scripts": {
+ "benchmark": "run-s build:rollup benchmark:*",
+ "benchmark:install": "cd benchmark && npm install",
+ "benchmark:only": "node --expose-gc benchmark/index.js",
+ "build": "run-s -n build:*",
+ "build:rollup": "rollup -c rollup.config.js",
+ "build:ts": "tsc --project tsconfig.build.json",
+ "lint": "run-s -n lint:*",
+ "lint:prettier": "npm run test:lint:prettier -- --write",
+ "lint:ts": "npm run test:lint:ts -- --fix",
+ "prebuild": "rm -rf dist",
+ "prepublishOnly": "npm run preversion",
+ "preversion": "run-s test build",
+ "pretest": "run-s build:rollup",
+ "test": "run-s -n test:lint test:only",
+ "test:debug": "mocha --inspect-brk",
+ "test:lint": "run-s -n test:lint:*",
+ "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'",
+ "test:lint:ts": "eslint '{src,test}/**/*.ts'",
+ "test:only": "mocha",
+ "test:coverage": "c8 mocha",
+ "test:watch": "mocha --watch"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jridgewell/sourcemap-codec.git"
+ },
+ "author": "Rich Harris",
+ "license": "MIT",
+ "devDependencies": {
+ "@rollup/plugin-typescript": "8.3.0",
+ "@types/node": "17.0.15",
+ "@typescript-eslint/eslint-plugin": "5.10.0",
+ "@typescript-eslint/parser": "5.10.0",
+ "benchmark": "2.1.4",
+ "c8": "7.11.2",
+ "eslint": "8.7.0",
+ "eslint-config-prettier": "8.3.0",
+ "mocha": "9.2.0",
+ "npm-run-all": "4.1.5",
+ "prettier": "2.5.1",
+ "rollup": "2.64.0",
+ "source-map": "0.6.1",
+ "source-map-js": "1.0.2",
+ "sourcemap-codec": "1.4.8",
+ "typescript": "4.5.4"
+ }
+}
diff --git a/node_modules/@jridgewell/trace-mapping/LICENSE b/node_modules/@jridgewell/trace-mapping/LICENSE
new file mode 100644
index 00000000..37bb488f
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/LICENSE
@@ -0,0 +1,19 @@
+Copyright 2022 Justin Ridgewell
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@jridgewell/trace-mapping/README.md b/node_modules/@jridgewell/trace-mapping/README.md
new file mode 100644
index 00000000..cc5e4f91
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/README.md
@@ -0,0 +1,252 @@
+# @jridgewell/trace-mapping
+
+> Trace the original position through a source map
+
+`trace-mapping` allows you to take the line and column of an output file and trace it to the
+original location in the source file through a source map.
+
+You may already be familiar with the [`source-map`][source-map] package's `SourceMapConsumer`. This
+provides the same `originalPositionFor` and `generatedPositionFor` API, without requiring WASM.
+
+## Installation
+
+```sh
+npm install @jridgewell/trace-mapping
+```
+
+## Usage
+
+```typescript
+import {
+ TraceMap,
+ originalPositionFor,
+ generatedPositionFor,
+ sourceContentFor,
+} from '@jridgewell/trace-mapping';
+
+const tracer = new TraceMap({
+ version: 3,
+ sources: ['input.js'],
+ sourcesContent: ['content of input.js'],
+ names: ['foo'],
+ mappings: 'KAyCIA',
+});
+
+// Lines start at line 1, columns at column 0.
+const traced = originalPositionFor(tracer, { line: 1, column: 5 });
+assert.deepEqual(traced, {
+ source: 'input.js',
+ line: 42,
+ column: 4,
+ name: 'foo',
+});
+
+const content = sourceContentFor(tracer, traced.source);
+assert.strictEqual(content, 'content for input.js');
+
+const generated = generatedPositionFor(tracer, {
+ source: 'input.js',
+ line: 42,
+ column: 4,
+});
+assert.deepEqual(generated, {
+ line: 1,
+ column: 5,
+});
+```
+
+We also provide a lower level API to get the actual segment that matches our line and column. Unlike
+`originalPositionFor`, `traceSegment` uses a 0-base for `line`:
+
+```typescript
+import { traceSegment } from '@jridgewell/trace-mapping';
+
+// line is 0-base.
+const traced = traceSegment(tracer, /* line */ 0, /* column */ 5);
+
+// Segments are [outputColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]
+// Again, line is 0-base and so is sourceLine
+assert.deepEqual(traced, [5, 0, 41, 4, 0]);
+```
+
+### SectionedSourceMaps
+
+The sourcemap spec defines a special `sections` field that's designed to handle concatenation of
+output code with associated sourcemaps. This type of sourcemap is rarely used (no major build tool
+produces it), but if you are hand coding a concatenation you may need it. We provide an `AnyMap`
+helper that can receive either a regular sourcemap or a `SectionedSourceMap` and returns a
+`TraceMap` instance:
+
+```typescript
+import { AnyMap } from '@jridgewell/trace-mapping';
+const fooOutput = 'foo';
+const barOutput = 'bar';
+const output = [fooOutput, barOutput].join('\n');
+
+const sectioned = new AnyMap({
+ version: 3,
+ sections: [
+ {
+ // 0-base line and column
+ offset: { line: 0, column: 0 },
+ // fooOutput's sourcemap
+ map: {
+ version: 3,
+ sources: ['foo.js'],
+ names: ['foo'],
+ mappings: 'AAAAA',
+ },
+ },
+ {
+ // barOutput's sourcemap will not affect the first line, only the second
+ offset: { line: 1, column: 0 },
+ map: {
+ version: 3,
+ sources: ['bar.js'],
+ names: ['bar'],
+ mappings: 'AAAAA',
+ },
+ },
+ ],
+});
+
+const traced = originalPositionFor(sectioned, {
+ line: 2,
+ column: 0,
+});
+
+assert.deepEqual(traced, {
+ source: 'bar.js',
+ line: 1,
+ column: 0,
+ name: 'bar',
+});
+```
+
+## Benchmarks
+
+```
+node v18.0.0
+
+amp.js.map - 45120 segments
+
+Memory Usage:
+trace-mapping decoded 562400 bytes
+trace-mapping encoded 5706544 bytes
+source-map-js 10717664 bytes
+source-map-0.6.1 17446384 bytes
+source-map-0.8.0 9701757 bytes
+Smallest memory usage is trace-mapping decoded
+
+Init speed:
+trace-mapping: decoded JSON input x 180 ops/sec ±0.34% (85 runs sampled)
+trace-mapping: encoded JSON input x 364 ops/sec ±1.77% (89 runs sampled)
+trace-mapping: decoded Object input x 3,116 ops/sec ±0.50% (96 runs sampled)
+trace-mapping: encoded Object input x 410 ops/sec ±2.62% (85 runs sampled)
+source-map-js: encoded Object input x 84.23 ops/sec ±0.91% (73 runs sampled)
+source-map-0.6.1: encoded Object input x 37.21 ops/sec ±2.08% (51 runs sampled)
+Fastest is trace-mapping: decoded Object input
+
+Trace speed:
+trace-mapping: decoded originalPositionFor x 3,952,212 ops/sec ±0.17% (98 runs sampled)
+trace-mapping: encoded originalPositionFor x 3,487,468 ops/sec ±1.58% (90 runs sampled)
+source-map-js: encoded originalPositionFor x 827,730 ops/sec ±0.78% (97 runs sampled)
+source-map-0.6.1: encoded originalPositionFor x 748,991 ops/sec ±0.53% (94 runs sampled)
+source-map-0.8.0: encoded originalPositionFor x 2,532,894 ops/sec ±0.57% (95 runs sampled)
+Fastest is trace-mapping: decoded originalPositionFor
+
+
+***
+
+
+babel.min.js.map - 347793 segments
+
+Memory Usage:
+trace-mapping decoded 89832 bytes
+trace-mapping encoded 35474640 bytes
+source-map-js 51257176 bytes
+source-map-0.6.1 63515664 bytes
+source-map-0.8.0 42933752 bytes
+Smallest memory usage is trace-mapping decoded
+
+Init speed:
+trace-mapping: decoded JSON input x 15.41 ops/sec ±8.65% (34 runs sampled)
+trace-mapping: encoded JSON input x 28.20 ops/sec ±12.87% (42 runs sampled)
+trace-mapping: decoded Object input x 964 ops/sec ±0.36% (99 runs sampled)
+trace-mapping: encoded Object input x 31.77 ops/sec ±13.79% (45 runs sampled)
+source-map-js: encoded Object input x 6.45 ops/sec ±5.16% (21 runs sampled)
+source-map-0.6.1: encoded Object input x 4.07 ops/sec ±5.24% (15 runs sampled)
+Fastest is trace-mapping: decoded Object input
+
+Trace speed:
+trace-mapping: decoded originalPositionFor x 7,183,038 ops/sec ±0.58% (95 runs sampled)
+trace-mapping: encoded originalPositionFor x 5,192,185 ops/sec ±0.41% (100 runs sampled)
+source-map-js: encoded originalPositionFor x 4,259,489 ops/sec ±0.79% (94 runs sampled)
+source-map-0.6.1: encoded originalPositionFor x 3,742,629 ops/sec ±0.71% (95 runs sampled)
+source-map-0.8.0: encoded originalPositionFor x 6,270,211 ops/sec ±0.64% (94 runs sampled)
+Fastest is trace-mapping: decoded originalPositionFor
+
+
+***
+
+
+preact.js.map - 1992 segments
+
+Memory Usage:
+trace-mapping decoded 37128 bytes
+trace-mapping encoded 247280 bytes
+source-map-js 1143536 bytes
+source-map-0.6.1 1290992 bytes
+source-map-0.8.0 96544 bytes
+Smallest memory usage is trace-mapping decoded
+
+Init speed:
+trace-mapping: decoded JSON input x 3,483 ops/sec ±0.30% (98 runs sampled)
+trace-mapping: encoded JSON input x 6,092 ops/sec ±0.18% (97 runs sampled)
+trace-mapping: decoded Object input x 249,076 ops/sec ±0.24% (98 runs sampled)
+trace-mapping: encoded Object input x 14,555 ops/sec ±0.48% (100 runs sampled)
+source-map-js: encoded Object input x 2,447 ops/sec ±0.36% (99 runs sampled)
+source-map-0.6.1: encoded Object input x 1,201 ops/sec ±0.57% (96 runs sampled)
+Fastest is trace-mapping: decoded Object input
+
+Trace speed:
+trace-mapping: decoded originalPositionFor x 7,620,192 ops/sec ±0.09% (99 runs sampled)
+trace-mapping: encoded originalPositionFor x 6,872,554 ops/sec ±0.30% (97 runs sampled)
+source-map-js: encoded originalPositionFor x 2,489,570 ops/sec ±0.35% (94 runs sampled)
+source-map-0.6.1: encoded originalPositionFor x 1,698,633 ops/sec ±0.28% (98 runs sampled)
+source-map-0.8.0: encoded originalPositionFor x 4,015,644 ops/sec ±0.22% (98 runs sampled)
+Fastest is trace-mapping: decoded originalPositionFor
+
+
+***
+
+
+react.js.map - 5726 segments
+
+Memory Usage:
+trace-mapping decoded 16176 bytes
+trace-mapping encoded 681552 bytes
+source-map-js 2418352 bytes
+source-map-0.6.1 2443672 bytes
+source-map-0.8.0 111768 bytes
+Smallest memory usage is trace-mapping decoded
+
+Init speed:
+trace-mapping: decoded JSON input x 1,720 ops/sec ±0.34% (98 runs sampled)
+trace-mapping: encoded JSON input x 4,406 ops/sec ±0.35% (100 runs sampled)
+trace-mapping: decoded Object input x 92,122 ops/sec ±0.10% (99 runs sampled)
+trace-mapping: encoded Object input x 5,385 ops/sec ±0.37% (99 runs sampled)
+source-map-js: encoded Object input x 794 ops/sec ±0.40% (98 runs sampled)
+source-map-0.6.1: encoded Object input x 416 ops/sec ±0.54% (91 runs sampled)
+Fastest is trace-mapping: decoded Object input
+
+Trace speed:
+trace-mapping: decoded originalPositionFor x 32,759,519 ops/sec ±0.33% (100 runs sampled)
+trace-mapping: encoded originalPositionFor x 31,116,306 ops/sec ±0.33% (97 runs sampled)
+source-map-js: encoded originalPositionFor x 17,458,435 ops/sec ±0.44% (97 runs sampled)
+source-map-0.6.1: encoded originalPositionFor x 12,687,097 ops/sec ±0.43% (95 runs sampled)
+source-map-0.8.0: encoded originalPositionFor x 23,538,275 ops/sec ±0.38% (95 runs sampled)
+Fastest is trace-mapping: decoded originalPositionFor
+```
+
+[source-map]: https://www.npmjs.com/package/source-map
diff --git a/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs
new file mode 100644
index 00000000..917a3303
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs
@@ -0,0 +1,552 @@
+import { encode, decode } from '@jridgewell/sourcemap-codec';
+import resolveUri from '@jridgewell/resolve-uri';
+
+function resolve(input, base) {
+ // The base is always treated as a directory, if it's not empty.
+ // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327
+ // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401
+ if (base && !base.endsWith('/'))
+ base += '/';
+ return resolveUri(input, base);
+}
+
+/**
+ * Removes everything after the last "/", but leaves the slash.
+ */
+function stripFilename(path) {
+ if (!path)
+ return '';
+ const index = path.lastIndexOf('/');
+ return path.slice(0, index + 1);
+}
+
+const COLUMN = 0;
+const SOURCES_INDEX = 1;
+const SOURCE_LINE = 2;
+const SOURCE_COLUMN = 3;
+const NAMES_INDEX = 4;
+const REV_GENERATED_LINE = 1;
+const REV_GENERATED_COLUMN = 2;
+
+function maybeSort(mappings, owned) {
+ const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);
+ if (unsortedIndex === mappings.length)
+ return mappings;
+ // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If
+ // not, we do not want to modify the consumer's input array.
+ if (!owned)
+ mappings = mappings.slice();
+ for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {
+ mappings[i] = sortSegments(mappings[i], owned);
+ }
+ return mappings;
+}
+function nextUnsortedSegmentLine(mappings, start) {
+ for (let i = start; i < mappings.length; i++) {
+ if (!isSorted(mappings[i]))
+ return i;
+ }
+ return mappings.length;
+}
+function isSorted(line) {
+ for (let j = 1; j < line.length; j++) {
+ if (line[j][COLUMN] < line[j - 1][COLUMN]) {
+ return false;
+ }
+ }
+ return true;
+}
+function sortSegments(line, owned) {
+ if (!owned)
+ line = line.slice();
+ return line.sort(sortComparator);
+}
+function sortComparator(a, b) {
+ return a[COLUMN] - b[COLUMN];
+}
+
+let found = false;
+/**
+ * A binary search implementation that returns the index if a match is found.
+ * If no match is found, then the left-index (the index associated with the item that comes just
+ * before the desired index) is returned. To maintain proper sort order, a splice would happen at
+ * the next index:
+ *
+ * ```js
+ * const array = [1, 3];
+ * const needle = 2;
+ * const index = binarySearch(array, needle, (item, needle) => item - needle);
+ *
+ * assert.equal(index, 0);
+ * array.splice(index + 1, 0, needle);
+ * assert.deepEqual(array, [1, 2, 3]);
+ * ```
+ */
+function binarySearch(haystack, needle, low, high) {
+ while (low <= high) {
+ const mid = low + ((high - low) >> 1);
+ const cmp = haystack[mid][COLUMN] - needle;
+ if (cmp === 0) {
+ found = true;
+ return mid;
+ }
+ if (cmp < 0) {
+ low = mid + 1;
+ }
+ else {
+ high = mid - 1;
+ }
+ }
+ found = false;
+ return low - 1;
+}
+function upperBound(haystack, needle, index) {
+ for (let i = index + 1; i < haystack.length; index = i++) {
+ if (haystack[i][COLUMN] !== needle)
+ break;
+ }
+ return index;
+}
+function lowerBound(haystack, needle, index) {
+ for (let i = index - 1; i >= 0; index = i--) {
+ if (haystack[i][COLUMN] !== needle)
+ break;
+ }
+ return index;
+}
+function memoizedState() {
+ return {
+ lastKey: -1,
+ lastNeedle: -1,
+ lastIndex: -1,
+ };
+}
+/**
+ * This overly complicated beast is just to record the last tested line/column and the resulting
+ * index, allowing us to skip a few tests if mappings are monotonically increasing.
+ */
+function memoizedBinarySearch(haystack, needle, state, key) {
+ const { lastKey, lastNeedle, lastIndex } = state;
+ let low = 0;
+ let high = haystack.length - 1;
+ if (key === lastKey) {
+ if (needle === lastNeedle) {
+ found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;
+ return lastIndex;
+ }
+ if (needle >= lastNeedle) {
+ // lastIndex may be -1 if the previous needle was not found.
+ low = lastIndex === -1 ? 0 : lastIndex;
+ }
+ else {
+ high = lastIndex;
+ }
+ }
+ state.lastKey = key;
+ state.lastNeedle = needle;
+ return (state.lastIndex = binarySearch(haystack, needle, low, high));
+}
+
+// Rebuilds the original source files, with mappings that are ordered by source line/column instead
+// of generated line/column.
+function buildBySources(decoded, memos) {
+ const sources = memos.map(buildNullArray);
+ for (let i = 0; i < decoded.length; i++) {
+ const line = decoded[i];
+ for (let j = 0; j < line.length; j++) {
+ const seg = line[j];
+ if (seg.length === 1)
+ continue;
+ const sourceIndex = seg[SOURCES_INDEX];
+ const sourceLine = seg[SOURCE_LINE];
+ const sourceColumn = seg[SOURCE_COLUMN];
+ const originalSource = sources[sourceIndex];
+ const originalLine = (originalSource[sourceLine] || (originalSource[sourceLine] = []));
+ const memo = memos[sourceIndex];
+ // The binary search either found a match, or it found the left-index just before where the
+ // segment should go. Either way, we want to insert after that. And there may be multiple
+ // generated segments associated with an original location, so there may need to move several
+ // indexes before we find where we need to insert.
+ const index = upperBound(originalLine, sourceColumn, memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine));
+ insert(originalLine, (memo.lastIndex = index + 1), [sourceColumn, i, seg[COLUMN]]);
+ }
+ }
+ return sources;
+}
+function insert(array, index, value) {
+ for (let i = array.length; i > index; i--) {
+ array[i] = array[i - 1];
+ }
+ array[index] = value;
+}
+// Null arrays allow us to use ordered index keys without actually allocating contiguous memory like
+// a real array. We use a null-prototype object to avoid prototype pollution and deoptimizations.
+// Numeric properties on objects are magically sorted in ascending order by the engine regardless of
+// the insertion order. So, by setting any numeric keys, even out of order, we'll get ascending
+// order when iterating with for-in.
+function buildNullArray() {
+ return { __proto__: null };
+}
+
+const AnyMap = function (map, mapUrl) {
+ const parsed = typeof map === 'string' ? JSON.parse(map) : map;
+ if (!('sections' in parsed))
+ return new TraceMap(parsed, mapUrl);
+ const mappings = [];
+ const sources = [];
+ const sourcesContent = [];
+ const names = [];
+ recurse(parsed, mapUrl, mappings, sources, sourcesContent, names, 0, 0, Infinity, Infinity);
+ const joined = {
+ version: 3,
+ file: parsed.file,
+ names,
+ sources,
+ sourcesContent,
+ mappings,
+ };
+ return presortedDecodedMap(joined);
+};
+function recurse(input, mapUrl, mappings, sources, sourcesContent, names, lineOffset, columnOffset, stopLine, stopColumn) {
+ const { sections } = input;
+ for (let i = 0; i < sections.length; i++) {
+ const { map, offset } = sections[i];
+ let sl = stopLine;
+ let sc = stopColumn;
+ if (i + 1 < sections.length) {
+ const nextOffset = sections[i + 1].offset;
+ sl = Math.min(stopLine, lineOffset + nextOffset.line);
+ if (sl === stopLine) {
+ sc = Math.min(stopColumn, columnOffset + nextOffset.column);
+ }
+ else if (sl < stopLine) {
+ sc = columnOffset + nextOffset.column;
+ }
+ }
+ addSection(map, mapUrl, mappings, sources, sourcesContent, names, lineOffset + offset.line, columnOffset + offset.column, sl, sc);
+ }
+}
+function addSection(input, mapUrl, mappings, sources, sourcesContent, names, lineOffset, columnOffset, stopLine, stopColumn) {
+ if ('sections' in input)
+ return recurse(...arguments);
+ const map = new TraceMap(input, mapUrl);
+ const sourcesOffset = sources.length;
+ const namesOffset = names.length;
+ const decoded = decodedMappings(map);
+ const { resolvedSources, sourcesContent: contents } = map;
+ append(sources, resolvedSources);
+ append(names, map.names);
+ if (contents)
+ append(sourcesContent, contents);
+ else
+ for (let i = 0; i < resolvedSources.length; i++)
+ sourcesContent.push(null);
+ for (let i = 0; i < decoded.length; i++) {
+ const lineI = lineOffset + i;
+ // We can only add so many lines before we step into the range that the next section's map
+ // controls. When we get to the last line, then we'll start checking the segments to see if
+ // they've crossed into the column range. But it may not have any columns that overstep, so we
+ // still need to check that we don't overstep lines, too.
+ if (lineI > stopLine)
+ return;
+ // The out line may already exist in mappings (if we're continuing the line started by a
+ // previous section). Or, we may have jumped ahead several lines to start this section.
+ const out = getLine(mappings, lineI);
+ // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the
+ // map can be multiple lines), it doesn't.
+ const cOffset = i === 0 ? columnOffset : 0;
+ const line = decoded[i];
+ for (let j = 0; j < line.length; j++) {
+ const seg = line[j];
+ const column = cOffset + seg[COLUMN];
+ // If this segment steps into the column range that the next section's map controls, we need
+ // to stop early.
+ if (lineI === stopLine && column >= stopColumn)
+ return;
+ if (seg.length === 1) {
+ out.push([column]);
+ continue;
+ }
+ const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX];
+ const sourceLine = seg[SOURCE_LINE];
+ const sourceColumn = seg[SOURCE_COLUMN];
+ out.push(seg.length === 4
+ ? [column, sourcesIndex, sourceLine, sourceColumn]
+ : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]]);
+ }
+ }
+}
+function append(arr, other) {
+ for (let i = 0; i < other.length; i++)
+ arr.push(other[i]);
+}
+function getLine(arr, index) {
+ for (let i = arr.length; i <= index; i++)
+ arr[i] = [];
+ return arr[index];
+}
+
+const LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';
+const COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';
+const LEAST_UPPER_BOUND = -1;
+const GREATEST_LOWER_BOUND = 1;
+/**
+ * Returns the encoded (VLQ string) form of the SourceMap's mappings field.
+ */
+let encodedMappings;
+/**
+ * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.
+ */
+let decodedMappings;
+/**
+ * A low-level API to find the segment associated with a generated line/column (think, from a
+ * stack trace). Line and column here are 0-based, unlike `originalPositionFor`.
+ */
+let traceSegment;
+/**
+ * A higher-level API to find the source/line/column associated with a generated line/column
+ * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in
+ * `source-map` library.
+ */
+let originalPositionFor;
+/**
+ * Finds the generated line/column position of the provided source/line/column source position.
+ */
+let generatedPositionFor;
+/**
+ * Finds all generated line/column positions of the provided source/line/column source position.
+ */
+let allGeneratedPositionsFor;
+/**
+ * Iterates each mapping in generated position order.
+ */
+let eachMapping;
+/**
+ * Retrieves the source content for a particular source, if its found. Returns null if not.
+ */
+let sourceContentFor;
+/**
+ * A helper that skips sorting of the input map's mappings array, which can be expensive for larger
+ * maps.
+ */
+let presortedDecodedMap;
+/**
+ * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+let decodedMap;
+/**
+ * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+let encodedMap;
+class TraceMap {
+ constructor(map, mapUrl) {
+ const isString = typeof map === 'string';
+ if (!isString && map._decodedMemo)
+ return map;
+ const parsed = (isString ? JSON.parse(map) : map);
+ const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;
+ this.version = version;
+ this.file = file;
+ this.names = names;
+ this.sourceRoot = sourceRoot;
+ this.sources = sources;
+ this.sourcesContent = sourcesContent;
+ const from = resolve(sourceRoot || '', stripFilename(mapUrl));
+ this.resolvedSources = sources.map((s) => resolve(s || '', from));
+ const { mappings } = parsed;
+ if (typeof mappings === 'string') {
+ this._encoded = mappings;
+ this._decoded = undefined;
+ }
+ else {
+ this._encoded = undefined;
+ this._decoded = maybeSort(mappings, isString);
+ }
+ this._decodedMemo = memoizedState();
+ this._bySources = undefined;
+ this._bySourceMemos = undefined;
+ }
+}
+(() => {
+ encodedMappings = (map) => {
+ var _a;
+ return ((_a = map._encoded) !== null && _a !== void 0 ? _a : (map._encoded = encode(map._decoded)));
+ };
+ decodedMappings = (map) => {
+ return (map._decoded || (map._decoded = decode(map._encoded)));
+ };
+ traceSegment = (map, line, column) => {
+ const decoded = decodedMappings(map);
+ // It's common for parent source maps to have pointers to lines that have no
+ // mapping (like a "//# sourceMappingURL=") at the end of the child file.
+ if (line >= decoded.length)
+ return null;
+ const segments = decoded[line];
+ const index = traceSegmentInternal(segments, map._decodedMemo, line, column, GREATEST_LOWER_BOUND);
+ return index === -1 ? null : segments[index];
+ };
+ originalPositionFor = (map, { line, column, bias }) => {
+ line--;
+ if (line < 0)
+ throw new Error(LINE_GTR_ZERO);
+ if (column < 0)
+ throw new Error(COL_GTR_EQ_ZERO);
+ const decoded = decodedMappings(map);
+ // It's common for parent source maps to have pointers to lines that have no
+ // mapping (like a "//# sourceMappingURL=") at the end of the child file.
+ if (line >= decoded.length)
+ return OMapping(null, null, null, null);
+ const segments = decoded[line];
+ const index = traceSegmentInternal(segments, map._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND);
+ if (index === -1)
+ return OMapping(null, null, null, null);
+ const segment = segments[index];
+ if (segment.length === 1)
+ return OMapping(null, null, null, null);
+ const { names, resolvedSources } = map;
+ return OMapping(resolvedSources[segment[SOURCES_INDEX]], segment[SOURCE_LINE] + 1, segment[SOURCE_COLUMN], segment.length === 5 ? names[segment[NAMES_INDEX]] : null);
+ };
+ allGeneratedPositionsFor = (map, { source, line, column, bias }) => {
+ // SourceMapConsumer uses LEAST_UPPER_BOUND for some reason, so we follow suit.
+ return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true);
+ };
+ generatedPositionFor = (map, { source, line, column, bias }) => {
+ return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false);
+ };
+ eachMapping = (map, cb) => {
+ const decoded = decodedMappings(map);
+ const { names, resolvedSources } = map;
+ for (let i = 0; i < decoded.length; i++) {
+ const line = decoded[i];
+ for (let j = 0; j < line.length; j++) {
+ const seg = line[j];
+ const generatedLine = i + 1;
+ const generatedColumn = seg[0];
+ let source = null;
+ let originalLine = null;
+ let originalColumn = null;
+ let name = null;
+ if (seg.length !== 1) {
+ source = resolvedSources[seg[1]];
+ originalLine = seg[2] + 1;
+ originalColumn = seg[3];
+ }
+ if (seg.length === 5)
+ name = names[seg[4]];
+ cb({
+ generatedLine,
+ generatedColumn,
+ source,
+ originalLine,
+ originalColumn,
+ name,
+ });
+ }
+ }
+ };
+ sourceContentFor = (map, source) => {
+ const { sources, resolvedSources, sourcesContent } = map;
+ if (sourcesContent == null)
+ return null;
+ let index = sources.indexOf(source);
+ if (index === -1)
+ index = resolvedSources.indexOf(source);
+ return index === -1 ? null : sourcesContent[index];
+ };
+ presortedDecodedMap = (map, mapUrl) => {
+ const tracer = new TraceMap(clone(map, []), mapUrl);
+ tracer._decoded = map.mappings;
+ return tracer;
+ };
+ decodedMap = (map) => {
+ return clone(map, decodedMappings(map));
+ };
+ encodedMap = (map) => {
+ return clone(map, encodedMappings(map));
+ };
+ function generatedPosition(map, source, line, column, bias, all) {
+ line--;
+ if (line < 0)
+ throw new Error(LINE_GTR_ZERO);
+ if (column < 0)
+ throw new Error(COL_GTR_EQ_ZERO);
+ const { sources, resolvedSources } = map;
+ let sourceIndex = sources.indexOf(source);
+ if (sourceIndex === -1)
+ sourceIndex = resolvedSources.indexOf(source);
+ if (sourceIndex === -1)
+ return all ? [] : GMapping(null, null);
+ const generated = (map._bySources || (map._bySources = buildBySources(decodedMappings(map), (map._bySourceMemos = sources.map(memoizedState)))));
+ const segments = generated[sourceIndex][line];
+ if (segments == null)
+ return all ? [] : GMapping(null, null);
+ const memo = map._bySourceMemos[sourceIndex];
+ if (all)
+ return sliceGeneratedPositions(segments, memo, line, column, bias);
+ const index = traceSegmentInternal(segments, memo, line, column, bias);
+ if (index === -1)
+ return GMapping(null, null);
+ const segment = segments[index];
+ return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]);
+ }
+})();
+function clone(map, mappings) {
+ return {
+ version: map.version,
+ file: map.file,
+ names: map.names,
+ sourceRoot: map.sourceRoot,
+ sources: map.sources,
+ sourcesContent: map.sourcesContent,
+ mappings,
+ };
+}
+function OMapping(source, line, column, name) {
+ return { source, line, column, name };
+}
+function GMapping(line, column) {
+ return { line, column };
+}
+function traceSegmentInternal(segments, memo, line, column, bias) {
+ let index = memoizedBinarySearch(segments, column, memo, line);
+ if (found) {
+ index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);
+ }
+ else if (bias === LEAST_UPPER_BOUND)
+ index++;
+ if (index === -1 || index === segments.length)
+ return -1;
+ return index;
+}
+function sliceGeneratedPositions(segments, memo, line, column, bias) {
+ let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND);
+ // We ignored the bias when tracing the segment so that we're guarnateed to find the first (in
+ // insertion order) segment that matched. Even if we did respect the bias when tracing, we would
+ // still need to call `lowerBound()` to find the first segment, which is slower than just looking
+ // for the GREATEST_LOWER_BOUND to begin with. The only difference that matters for us is when the
+ // binary search didn't match, in which case GREATEST_LOWER_BOUND just needs to increment to
+ // match LEAST_UPPER_BOUND.
+ if (!found && bias === LEAST_UPPER_BOUND)
+ min++;
+ if (min === -1 || min === segments.length)
+ return [];
+ // We may have found the segment that started at an earlier column. If this is the case, then we
+ // need to slice all generated segments that match _that_ column, because all such segments span
+ // to our desired column.
+ const matchedColumn = found ? column : segments[min][COLUMN];
+ // The binary search is not guaranteed to find the lower bound when a match wasn't found.
+ if (!found)
+ min = lowerBound(segments, matchedColumn, min);
+ const max = upperBound(segments, matchedColumn, min);
+ const result = [];
+ for (; min <= max; min++) {
+ const segment = segments[min];
+ result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]));
+ }
+ return result;
+}
+
+export { AnyMap, GREATEST_LOWER_BOUND, LEAST_UPPER_BOUND, TraceMap, allGeneratedPositionsFor, decodedMap, decodedMappings, eachMapping, encodedMap, encodedMappings, generatedPositionFor, originalPositionFor, presortedDecodedMap, sourceContentFor, traceSegment };
+//# sourceMappingURL=trace-mapping.mjs.map
diff --git a/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs.map b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs.map
new file mode 100644
index 00000000..4d40aa13
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"trace-mapping.mjs","sources":["../src/resolve.ts","../src/strip-filename.ts","../src/sourcemap-segment.ts","../src/sort.ts","../src/binary-search.ts","../src/by-source.ts","../src/any-map.ts","../src/trace-mapping.ts"],"sourcesContent":["import resolveUri from '@jridgewell/resolve-uri';\n\nexport default function resolve(input: string, base: string | undefined): string {\n // The base is always treated as a directory, if it's not empty.\n // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327\n // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401\n if (base && !base.endsWith('/')) base += '/';\n\n return resolveUri(input, base);\n}\n","/**\n * Removes everything after the last \"/\", but leaves the slash.\n */\nexport default function stripFilename(path: string | undefined | null): string {\n if (!path) return '';\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n","type GeneratedColumn = number;\ntype SourcesIndex = number;\ntype SourceLine = number;\ntype SourceColumn = number;\ntype NamesIndex = number;\n\ntype GeneratedLine = number;\n\nexport type SourceMapSegment =\n | [GeneratedColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];\n\nexport type ReverseSegment = [SourceColumn, GeneratedLine, GeneratedColumn];\n\nexport const COLUMN = 0;\nexport const SOURCES_INDEX = 1;\nexport const SOURCE_LINE = 2;\nexport const SOURCE_COLUMN = 3;\nexport const NAMES_INDEX = 4;\n\nexport const REV_GENERATED_LINE = 1;\nexport const REV_GENERATED_COLUMN = 2;\n","import { COLUMN } from './sourcemap-segment';\n\nimport type { SourceMapSegment } from './sourcemap-segment';\n\nexport default function maybeSort(\n mappings: SourceMapSegment[][],\n owned: boolean,\n): SourceMapSegment[][] {\n const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);\n if (unsortedIndex === mappings.length) return mappings;\n\n // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If\n // not, we do not want to modify the consumer's input array.\n if (!owned) mappings = mappings.slice();\n\n for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {\n mappings[i] = sortSegments(mappings[i], owned);\n }\n return mappings;\n}\n\nfunction nextUnsortedSegmentLine(mappings: SourceMapSegment[][], start: number): number {\n for (let i = start; i < mappings.length; i++) {\n if (!isSorted(mappings[i])) return i;\n }\n return mappings.length;\n}\n\nfunction isSorted(line: SourceMapSegment[]): boolean {\n for (let j = 1; j < line.length; j++) {\n if (line[j][COLUMN] < line[j - 1][COLUMN]) {\n return false;\n }\n }\n return true;\n}\n\nfunction sortSegments(line: SourceMapSegment[], owned: boolean): SourceMapSegment[] {\n if (!owned) line = line.slice();\n return line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n return a[COLUMN] - b[COLUMN];\n}\n","import type { SourceMapSegment, ReverseSegment } from './sourcemap-segment';\nimport { COLUMN } from './sourcemap-segment';\n\nexport type MemoState = {\n lastKey: number;\n lastNeedle: number;\n lastIndex: number;\n};\n\nexport let found = false;\n\n/**\n * A binary search implementation that returns the index if a match is found.\n * If no match is found, then the left-index (the index associated with the item that comes just\n * before the desired index) is returned. To maintain proper sort order, a splice would happen at\n * the next index:\n *\n * ```js\n * const array = [1, 3];\n * const needle = 2;\n * const index = binarySearch(array, needle, (item, needle) => item - needle);\n *\n * assert.equal(index, 0);\n * array.splice(index + 1, 0, needle);\n * assert.deepEqual(array, [1, 2, 3]);\n * ```\n */\nexport function binarySearch(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n low: number,\n high: number,\n): number {\n while (low <= high) {\n const mid = low + ((high - low) >> 1);\n const cmp = haystack[mid][COLUMN] - needle;\n\n if (cmp === 0) {\n found = true;\n return mid;\n }\n\n if (cmp < 0) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n found = false;\n return low - 1;\n}\n\nexport function upperBound(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n index: number,\n): number {\n for (let i = index + 1; i < haystack.length; index = i++) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\n\nexport function lowerBound(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n index: number,\n): number {\n for (let i = index - 1; i >= 0; index = i--) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\n\nexport function memoizedState(): MemoState {\n return {\n lastKey: -1,\n lastNeedle: -1,\n lastIndex: -1,\n };\n}\n\n/**\n * This overly complicated beast is just to record the last tested line/column and the resulting\n * index, allowing us to skip a few tests if mappings are monotonically increasing.\n */\nexport function memoizedBinarySearch(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n state: MemoState,\n key: number,\n): number {\n const { lastKey, lastNeedle, lastIndex } = state;\n\n let low = 0;\n let high = haystack.length - 1;\n if (key === lastKey) {\n if (needle === lastNeedle) {\n found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;\n return lastIndex;\n }\n\n if (needle >= lastNeedle) {\n // lastIndex may be -1 if the previous needle was not found.\n low = lastIndex === -1 ? 0 : lastIndex;\n } else {\n high = lastIndex;\n }\n }\n state.lastKey = key;\n state.lastNeedle = needle;\n\n return (state.lastIndex = binarySearch(haystack, needle, low, high));\n}\n","import { COLUMN, SOURCES_INDEX, SOURCE_LINE, SOURCE_COLUMN } from './sourcemap-segment';\nimport { memoizedBinarySearch, upperBound } from './binary-search';\n\nimport type { ReverseSegment, SourceMapSegment } from './sourcemap-segment';\nimport type { MemoState } from './binary-search';\n\nexport type Source = {\n __proto__: null;\n [line: number]: Exclude[];\n};\n\n// Rebuilds the original source files, with mappings that are ordered by source line/column instead\n// of generated line/column.\nexport default function buildBySources(\n decoded: readonly SourceMapSegment[][],\n memos: MemoState[],\n): Source[] {\n const sources: Source[] = memos.map(buildNullArray);\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n if (seg.length === 1) continue;\n\n const sourceIndex = seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n const originalSource = sources[sourceIndex];\n const originalLine = (originalSource[sourceLine] ||= []);\n const memo = memos[sourceIndex];\n\n // The binary search either found a match, or it found the left-index just before where the\n // segment should go. Either way, we want to insert after that. And there may be multiple\n // generated segments associated with an original location, so there may need to move several\n // indexes before we find where we need to insert.\n const index = upperBound(\n originalLine,\n sourceColumn,\n memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine),\n );\n\n insert(originalLine, (memo.lastIndex = index + 1), [sourceColumn, i, seg[COLUMN]]);\n }\n }\n\n return sources;\n}\n\nfunction insert(array: T[], index: number, value: T) {\n for (let i = array.length; i > index; i--) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n}\n\n// Null arrays allow us to use ordered index keys without actually allocating contiguous memory like\n// a real array. We use a null-prototype object to avoid prototype pollution and deoptimizations.\n// Numeric properties on objects are magically sorted in ascending order by the engine regardless of\n// the insertion order. So, by setting any numeric keys, even out of order, we'll get ascending\n// order when iterating with for-in.\nfunction buildNullArray(): T {\n return { __proto__: null } as T;\n}\n","import { TraceMap, presortedDecodedMap, decodedMappings } from './trace-mapping';\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n} from './sourcemap-segment';\n\nimport type {\n Section,\n SectionedSourceMap,\n DecodedSourceMap,\n SectionedSourceMapInput,\n Ro,\n} from './types';\nimport type { SourceMapSegment } from './sourcemap-segment';\n\ntype AnyMap = {\n new (map: SectionedSourceMapInput, mapUrl?: string | null): TraceMap;\n (map: SectionedSourceMapInput, mapUrl?: string | null): TraceMap;\n};\n\nexport const AnyMap: AnyMap = function (map, mapUrl) {\n const parsed =\n typeof map === 'string' ? (JSON.parse(map) as Exclude) : map;\n\n if (!('sections' in parsed)) return new TraceMap(parsed, mapUrl);\n\n const mappings: SourceMapSegment[][] = [];\n const sources: string[] = [];\n const sourcesContent: (string | null)[] = [];\n const names: string[] = [];\n\n recurse(parsed, mapUrl, mappings, sources, sourcesContent, names, 0, 0, Infinity, Infinity);\n\n const joined: DecodedSourceMap = {\n version: 3,\n file: parsed.file,\n names,\n sources,\n sourcesContent,\n mappings,\n };\n\n return presortedDecodedMap(joined);\n} as AnyMap;\n\nfunction recurse(\n input: Ro,\n mapUrl: string | null | undefined,\n mappings: SourceMapSegment[][],\n sources: string[],\n sourcesContent: (string | null)[],\n names: string[],\n lineOffset: number,\n columnOffset: number,\n stopLine: number,\n stopColumn: number,\n) {\n const { sections } = input;\n for (let i = 0; i < sections.length; i++) {\n const { map, offset } = sections[i];\n\n let sl = stopLine;\n let sc = stopColumn;\n if (i + 1 < sections.length) {\n const nextOffset = sections[i + 1].offset;\n sl = Math.min(stopLine, lineOffset + nextOffset.line);\n\n if (sl === stopLine) {\n sc = Math.min(stopColumn, columnOffset + nextOffset.column);\n } else if (sl < stopLine) {\n sc = columnOffset + nextOffset.column;\n }\n }\n\n addSection(\n map,\n mapUrl,\n mappings,\n sources,\n sourcesContent,\n names,\n lineOffset + offset.line,\n columnOffset + offset.column,\n sl,\n sc,\n );\n }\n}\n\nfunction addSection(\n input: Ro,\n mapUrl: string | null | undefined,\n mappings: SourceMapSegment[][],\n sources: string[],\n sourcesContent: (string | null)[],\n names: string[],\n lineOffset: number,\n columnOffset: number,\n stopLine: number,\n stopColumn: number,\n) {\n if ('sections' in input) return recurse(...(arguments as unknown as Parameters));\n\n const map = new TraceMap(input, mapUrl);\n const sourcesOffset = sources.length;\n const namesOffset = names.length;\n const decoded = decodedMappings(map);\n const { resolvedSources, sourcesContent: contents } = map;\n\n append(sources, resolvedSources);\n append(names, map.names);\n if (contents) append(sourcesContent, contents);\n else for (let i = 0; i < resolvedSources.length; i++) sourcesContent.push(null);\n\n for (let i = 0; i < decoded.length; i++) {\n const lineI = lineOffset + i;\n\n // We can only add so many lines before we step into the range that the next section's map\n // controls. When we get to the last line, then we'll start checking the segments to see if\n // they've crossed into the column range. But it may not have any columns that overstep, so we\n // still need to check that we don't overstep lines, too.\n if (lineI > stopLine) return;\n\n // The out line may already exist in mappings (if we're continuing the line started by a\n // previous section). Or, we may have jumped ahead several lines to start this section.\n const out = getLine(mappings, lineI);\n // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the\n // map can be multiple lines), it doesn't.\n const cOffset = i === 0 ? columnOffset : 0;\n\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n const column = cOffset + seg[COLUMN];\n\n // If this segment steps into the column range that the next section's map controls, we need\n // to stop early.\n if (lineI === stopLine && column >= stopColumn) return;\n\n if (seg.length === 1) {\n out.push([column]);\n continue;\n }\n\n const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n out.push(\n seg.length === 4\n ? [column, sourcesIndex, sourceLine, sourceColumn]\n : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]],\n );\n }\n }\n}\n\nfunction append(arr: T[], other: T[]) {\n for (let i = 0; i < other.length; i++) arr.push(other[i]);\n}\n\nfunction getLine(arr: T[][], index: number): T[] {\n for (let i = arr.length; i <= index; i++) arr[i] = [];\n return arr[index];\n}\n","import { encode, decode } from '@jridgewell/sourcemap-codec';\n\nimport resolve from './resolve';\nimport stripFilename from './strip-filename';\nimport maybeSort from './sort';\nimport buildBySources from './by-source';\nimport {\n memoizedState,\n memoizedBinarySearch,\n upperBound,\n lowerBound,\n found as bsFound,\n} from './binary-search';\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n REV_GENERATED_LINE,\n REV_GENERATED_COLUMN,\n} from './sourcemap-segment';\n\nimport type { SourceMapSegment, ReverseSegment } from './sourcemap-segment';\nimport type {\n SourceMapV3,\n DecodedSourceMap,\n EncodedSourceMap,\n InvalidOriginalMapping,\n OriginalMapping,\n InvalidGeneratedMapping,\n GeneratedMapping,\n SourceMapInput,\n Needle,\n SourceNeedle,\n SourceMap,\n EachMapping,\n Bias,\n} from './types';\nimport type { Source } from './by-source';\nimport type { MemoState } from './binary-search';\n\nexport type { SourceMapSegment } from './sourcemap-segment';\nexport type {\n SourceMapInput,\n SectionedSourceMapInput,\n DecodedSourceMap,\n EncodedSourceMap,\n SectionedSourceMap,\n InvalidOriginalMapping,\n OriginalMapping as Mapping,\n OriginalMapping,\n InvalidGeneratedMapping,\n GeneratedMapping,\n EachMapping,\n} from './types';\n\nconst LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';\nconst COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';\n\nexport const LEAST_UPPER_BOUND = -1;\nexport const GREATEST_LOWER_BOUND = 1;\n\n/**\n * Returns the encoded (VLQ string) form of the SourceMap's mappings field.\n */\nexport let encodedMappings: (map: TraceMap) => EncodedSourceMap['mappings'];\n\n/**\n * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.\n */\nexport let decodedMappings: (map: TraceMap) => Readonly;\n\n/**\n * A low-level API to find the segment associated with a generated line/column (think, from a\n * stack trace). Line and column here are 0-based, unlike `originalPositionFor`.\n */\nexport let traceSegment: (\n map: TraceMap,\n line: number,\n column: number,\n) => Readonly | null;\n\n/**\n * A higher-level API to find the source/line/column associated with a generated line/column\n * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in\n * `source-map` library.\n */\nexport let originalPositionFor: (\n map: TraceMap,\n needle: Needle,\n) => OriginalMapping | InvalidOriginalMapping;\n\n/**\n * Finds the generated line/column position of the provided source/line/column source position.\n */\nexport let generatedPositionFor: (\n map: TraceMap,\n needle: SourceNeedle,\n) => GeneratedMapping | InvalidGeneratedMapping;\n\n/**\n * Finds all generated line/column positions of the provided source/line/column source position.\n */\nexport let allGeneratedPositionsFor: (map: TraceMap, needle: SourceNeedle) => GeneratedMapping[];\n\n/**\n * Iterates each mapping in generated position order.\n */\nexport let eachMapping: (map: TraceMap, cb: (mapping: EachMapping) => void) => void;\n\n/**\n * Retrieves the source content for a particular source, if its found. Returns null if not.\n */\nexport let sourceContentFor: (map: TraceMap, source: string) => string | null;\n\n/**\n * A helper that skips sorting of the input map's mappings array, which can be expensive for larger\n * maps.\n */\nexport let presortedDecodedMap: (map: DecodedSourceMap, mapUrl?: string) => TraceMap;\n\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport let decodedMap: (\n map: TraceMap,\n) => Omit & { mappings: readonly SourceMapSegment[][] };\n\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport let encodedMap: (map: TraceMap) => EncodedSourceMap;\n\nexport { AnyMap } from './any-map';\n\nexport class TraceMap implements SourceMap {\n declare version: SourceMapV3['version'];\n declare file: SourceMapV3['file'];\n declare names: SourceMapV3['names'];\n declare sourceRoot: SourceMapV3['sourceRoot'];\n declare sources: SourceMapV3['sources'];\n declare sourcesContent: SourceMapV3['sourcesContent'];\n\n declare resolvedSources: string[];\n private declare _encoded: string | undefined;\n\n private declare _decoded: SourceMapSegment[][] | undefined;\n private declare _decodedMemo: MemoState;\n\n private declare _bySources: Source[] | undefined;\n private declare _bySourceMemos: MemoState[] | undefined;\n\n constructor(map: SourceMapInput, mapUrl?: string | null) {\n const isString = typeof map === 'string';\n\n if (!isString && (map as unknown as { _decodedMemo: any })._decodedMemo) return map as TraceMap;\n\n const parsed = (isString ? JSON.parse(map) : map) as DecodedSourceMap | EncodedSourceMap;\n\n const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;\n this.version = version;\n this.file = file;\n this.names = names;\n this.sourceRoot = sourceRoot;\n this.sources = sources;\n this.sourcesContent = sourcesContent;\n\n const from = resolve(sourceRoot || '', stripFilename(mapUrl));\n this.resolvedSources = sources.map((s) => resolve(s || '', from));\n\n const { mappings } = parsed;\n if (typeof mappings === 'string') {\n this._encoded = mappings;\n this._decoded = undefined;\n } else {\n this._encoded = undefined;\n this._decoded = maybeSort(mappings, isString);\n }\n\n this._decodedMemo = memoizedState();\n this._bySources = undefined;\n this._bySourceMemos = undefined;\n }\n\n static {\n encodedMappings = (map) => {\n return (map._encoded ??= encode(map._decoded!));\n };\n\n decodedMappings = (map) => {\n return (map._decoded ||= decode(map._encoded!));\n };\n\n traceSegment = (map, line, column) => {\n const decoded = decodedMappings(map);\n\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length) return null;\n\n const segments = decoded[line];\n const index = traceSegmentInternal(\n segments,\n map._decodedMemo,\n line,\n column,\n GREATEST_LOWER_BOUND,\n );\n\n return index === -1 ? null : segments[index];\n };\n\n originalPositionFor = (map, { line, column, bias }) => {\n line--;\n if (line < 0) throw new Error(LINE_GTR_ZERO);\n if (column < 0) throw new Error(COL_GTR_EQ_ZERO);\n\n const decoded = decodedMappings(map);\n\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length) return OMapping(null, null, null, null);\n\n const segments = decoded[line];\n const index = traceSegmentInternal(\n segments,\n map._decodedMemo,\n line,\n column,\n bias || GREATEST_LOWER_BOUND,\n );\n\n if (index === -1) return OMapping(null, null, null, null);\n\n const segment = segments[index];\n if (segment.length === 1) return OMapping(null, null, null, null);\n\n const { names, resolvedSources } = map;\n return OMapping(\n resolvedSources[segment[SOURCES_INDEX]],\n segment[SOURCE_LINE] + 1,\n segment[SOURCE_COLUMN],\n segment.length === 5 ? names[segment[NAMES_INDEX]] : null,\n );\n };\n\n allGeneratedPositionsFor = (map, { source, line, column, bias }) => {\n // SourceMapConsumer uses LEAST_UPPER_BOUND for some reason, so we follow suit.\n return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true);\n };\n\n generatedPositionFor = (map, { source, line, column, bias }) => {\n return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false);\n };\n\n eachMapping = (map, cb) => {\n const decoded = decodedMappings(map);\n const { names, resolvedSources } = map;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n\n const generatedLine = i + 1;\n const generatedColumn = seg[0];\n let source = null;\n let originalLine = null;\n let originalColumn = null;\n let name = null;\n if (seg.length !== 1) {\n source = resolvedSources[seg[1]];\n originalLine = seg[2] + 1;\n originalColumn = seg[3];\n }\n if (seg.length === 5) name = names[seg[4]];\n\n cb({\n generatedLine,\n generatedColumn,\n source,\n originalLine,\n originalColumn,\n name,\n } as EachMapping);\n }\n }\n };\n\n sourceContentFor = (map, source) => {\n const { sources, resolvedSources, sourcesContent } = map;\n if (sourcesContent == null) return null;\n\n let index = sources.indexOf(source);\n if (index === -1) index = resolvedSources.indexOf(source);\n\n return index === -1 ? null : sourcesContent[index];\n };\n\n presortedDecodedMap = (map, mapUrl) => {\n const tracer = new TraceMap(clone(map, []), mapUrl);\n tracer._decoded = map.mappings;\n return tracer;\n };\n\n decodedMap = (map) => {\n return clone(map, decodedMappings(map));\n };\n\n encodedMap = (map) => {\n return clone(map, encodedMappings(map));\n };\n\n function generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: false,\n ): GeneratedMapping | InvalidGeneratedMapping;\n function generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: true,\n ): GeneratedMapping[];\n function generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: boolean,\n ): GeneratedMapping | InvalidGeneratedMapping | GeneratedMapping[] {\n line--;\n if (line < 0) throw new Error(LINE_GTR_ZERO);\n if (column < 0) throw new Error(COL_GTR_EQ_ZERO);\n\n const { sources, resolvedSources } = map;\n let sourceIndex = sources.indexOf(source);\n if (sourceIndex === -1) sourceIndex = resolvedSources.indexOf(source);\n if (sourceIndex === -1) return all ? [] : GMapping(null, null);\n\n const generated = (map._bySources ||= buildBySources(\n decodedMappings(map),\n (map._bySourceMemos = sources.map(memoizedState)),\n ));\n\n const segments = generated[sourceIndex][line];\n if (segments == null) return all ? [] : GMapping(null, null);\n\n const memo = map._bySourceMemos![sourceIndex];\n\n if (all) return sliceGeneratedPositions(segments, memo, line, column, bias);\n\n const index = traceSegmentInternal(segments, memo, line, column, bias);\n if (index === -1) return GMapping(null, null);\n\n const segment = segments[index];\n return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]);\n }\n }\n}\n\nfunction clone(\n map: TraceMap | DecodedSourceMap | EncodedSourceMap,\n mappings: T,\n): T extends string ? EncodedSourceMap : DecodedSourceMap {\n return {\n version: map.version,\n file: map.file,\n names: map.names,\n sourceRoot: map.sourceRoot,\n sources: map.sources,\n sourcesContent: map.sourcesContent,\n mappings,\n } as any;\n}\n\nfunction OMapping(source: null, line: null, column: null, name: null): InvalidOriginalMapping;\nfunction OMapping(\n source: string,\n line: number,\n column: number,\n name: string | null,\n): OriginalMapping;\nfunction OMapping(\n source: string | null,\n line: number | null,\n column: number | null,\n name: string | null,\n): OriginalMapping | InvalidOriginalMapping {\n return { source, line, column, name } as any;\n}\n\nfunction GMapping(line: null, column: null): InvalidGeneratedMapping;\nfunction GMapping(line: number, column: number): GeneratedMapping;\nfunction GMapping(\n line: number | null,\n column: number | null,\n): GeneratedMapping | InvalidGeneratedMapping {\n return { line, column } as any;\n}\n\nfunction traceSegmentInternal(\n segments: SourceMapSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number;\nfunction traceSegmentInternal(\n segments: ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number;\nfunction traceSegmentInternal(\n segments: SourceMapSegment[] | ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number {\n let index = memoizedBinarySearch(segments, column, memo, line);\n if (bsFound) {\n index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);\n } else if (bias === LEAST_UPPER_BOUND) index++;\n\n if (index === -1 || index === segments.length) return -1;\n return index;\n}\n\nfunction sliceGeneratedPositions(\n segments: ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): GeneratedMapping[] {\n let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND);\n\n // We ignored the bias when tracing the segment so that we're guarnateed to find the first (in\n // insertion order) segment that matched. Even if we did respect the bias when tracing, we would\n // still need to call `lowerBound()` to find the first segment, which is slower than just looking\n // for the GREATEST_LOWER_BOUND to begin with. The only difference that matters for us is when the\n // binary search didn't match, in which case GREATEST_LOWER_BOUND just needs to increment to\n // match LEAST_UPPER_BOUND.\n if (!bsFound && bias === LEAST_UPPER_BOUND) min++;\n\n if (min === -1 || min === segments.length) return [];\n\n // We may have found the segment that started at an earlier column. If this is the case, then we\n // need to slice all generated segments that match _that_ column, because all such segments span\n // to our desired column.\n const matchedColumn = bsFound ? column : segments[min][COLUMN];\n\n // The binary search is not guaranteed to find the lower bound when a match wasn't found.\n if (!bsFound) min = lowerBound(segments, matchedColumn, min);\n const max = upperBound(segments, matchedColumn, min);\n\n const result = [];\n for (; min <= max; min++) {\n const segment = segments[min];\n result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]));\n }\n return result;\n}\n"],"names":["bsFound"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js
new file mode 100644
index 00000000..a3251f16
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js
@@ -0,0 +1,566 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@jridgewell/sourcemap-codec'), require('@jridgewell/resolve-uri')) :
+ typeof define === 'function' && define.amd ? define(['exports', '@jridgewell/sourcemap-codec', '@jridgewell/resolve-uri'], factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.traceMapping = {}, global.sourcemapCodec, global.resolveURI));
+})(this, (function (exports, sourcemapCodec, resolveUri) { 'use strict';
+
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
+
+ var resolveUri__default = /*#__PURE__*/_interopDefaultLegacy(resolveUri);
+
+ function resolve(input, base) {
+ // The base is always treated as a directory, if it's not empty.
+ // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327
+ // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401
+ if (base && !base.endsWith('/'))
+ base += '/';
+ return resolveUri__default["default"](input, base);
+ }
+
+ /**
+ * Removes everything after the last "/", but leaves the slash.
+ */
+ function stripFilename(path) {
+ if (!path)
+ return '';
+ const index = path.lastIndexOf('/');
+ return path.slice(0, index + 1);
+ }
+
+ const COLUMN = 0;
+ const SOURCES_INDEX = 1;
+ const SOURCE_LINE = 2;
+ const SOURCE_COLUMN = 3;
+ const NAMES_INDEX = 4;
+ const REV_GENERATED_LINE = 1;
+ const REV_GENERATED_COLUMN = 2;
+
+ function maybeSort(mappings, owned) {
+ const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);
+ if (unsortedIndex === mappings.length)
+ return mappings;
+ // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If
+ // not, we do not want to modify the consumer's input array.
+ if (!owned)
+ mappings = mappings.slice();
+ for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {
+ mappings[i] = sortSegments(mappings[i], owned);
+ }
+ return mappings;
+ }
+ function nextUnsortedSegmentLine(mappings, start) {
+ for (let i = start; i < mappings.length; i++) {
+ if (!isSorted(mappings[i]))
+ return i;
+ }
+ return mappings.length;
+ }
+ function isSorted(line) {
+ for (let j = 1; j < line.length; j++) {
+ if (line[j][COLUMN] < line[j - 1][COLUMN]) {
+ return false;
+ }
+ }
+ return true;
+ }
+ function sortSegments(line, owned) {
+ if (!owned)
+ line = line.slice();
+ return line.sort(sortComparator);
+ }
+ function sortComparator(a, b) {
+ return a[COLUMN] - b[COLUMN];
+ }
+
+ let found = false;
+ /**
+ * A binary search implementation that returns the index if a match is found.
+ * If no match is found, then the left-index (the index associated with the item that comes just
+ * before the desired index) is returned. To maintain proper sort order, a splice would happen at
+ * the next index:
+ *
+ * ```js
+ * const array = [1, 3];
+ * const needle = 2;
+ * const index = binarySearch(array, needle, (item, needle) => item - needle);
+ *
+ * assert.equal(index, 0);
+ * array.splice(index + 1, 0, needle);
+ * assert.deepEqual(array, [1, 2, 3]);
+ * ```
+ */
+ function binarySearch(haystack, needle, low, high) {
+ while (low <= high) {
+ const mid = low + ((high - low) >> 1);
+ const cmp = haystack[mid][COLUMN] - needle;
+ if (cmp === 0) {
+ found = true;
+ return mid;
+ }
+ if (cmp < 0) {
+ low = mid + 1;
+ }
+ else {
+ high = mid - 1;
+ }
+ }
+ found = false;
+ return low - 1;
+ }
+ function upperBound(haystack, needle, index) {
+ for (let i = index + 1; i < haystack.length; index = i++) {
+ if (haystack[i][COLUMN] !== needle)
+ break;
+ }
+ return index;
+ }
+ function lowerBound(haystack, needle, index) {
+ for (let i = index - 1; i >= 0; index = i--) {
+ if (haystack[i][COLUMN] !== needle)
+ break;
+ }
+ return index;
+ }
+ function memoizedState() {
+ return {
+ lastKey: -1,
+ lastNeedle: -1,
+ lastIndex: -1,
+ };
+ }
+ /**
+ * This overly complicated beast is just to record the last tested line/column and the resulting
+ * index, allowing us to skip a few tests if mappings are monotonically increasing.
+ */
+ function memoizedBinarySearch(haystack, needle, state, key) {
+ const { lastKey, lastNeedle, lastIndex } = state;
+ let low = 0;
+ let high = haystack.length - 1;
+ if (key === lastKey) {
+ if (needle === lastNeedle) {
+ found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;
+ return lastIndex;
+ }
+ if (needle >= lastNeedle) {
+ // lastIndex may be -1 if the previous needle was not found.
+ low = lastIndex === -1 ? 0 : lastIndex;
+ }
+ else {
+ high = lastIndex;
+ }
+ }
+ state.lastKey = key;
+ state.lastNeedle = needle;
+ return (state.lastIndex = binarySearch(haystack, needle, low, high));
+ }
+
+ // Rebuilds the original source files, with mappings that are ordered by source line/column instead
+ // of generated line/column.
+ function buildBySources(decoded, memos) {
+ const sources = memos.map(buildNullArray);
+ for (let i = 0; i < decoded.length; i++) {
+ const line = decoded[i];
+ for (let j = 0; j < line.length; j++) {
+ const seg = line[j];
+ if (seg.length === 1)
+ continue;
+ const sourceIndex = seg[SOURCES_INDEX];
+ const sourceLine = seg[SOURCE_LINE];
+ const sourceColumn = seg[SOURCE_COLUMN];
+ const originalSource = sources[sourceIndex];
+ const originalLine = (originalSource[sourceLine] || (originalSource[sourceLine] = []));
+ const memo = memos[sourceIndex];
+ // The binary search either found a match, or it found the left-index just before where the
+ // segment should go. Either way, we want to insert after that. And there may be multiple
+ // generated segments associated with an original location, so there may need to move several
+ // indexes before we find where we need to insert.
+ const index = upperBound(originalLine, sourceColumn, memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine));
+ insert(originalLine, (memo.lastIndex = index + 1), [sourceColumn, i, seg[COLUMN]]);
+ }
+ }
+ return sources;
+ }
+ function insert(array, index, value) {
+ for (let i = array.length; i > index; i--) {
+ array[i] = array[i - 1];
+ }
+ array[index] = value;
+ }
+ // Null arrays allow us to use ordered index keys without actually allocating contiguous memory like
+ // a real array. We use a null-prototype object to avoid prototype pollution and deoptimizations.
+ // Numeric properties on objects are magically sorted in ascending order by the engine regardless of
+ // the insertion order. So, by setting any numeric keys, even out of order, we'll get ascending
+ // order when iterating with for-in.
+ function buildNullArray() {
+ return { __proto__: null };
+ }
+
+ const AnyMap = function (map, mapUrl) {
+ const parsed = typeof map === 'string' ? JSON.parse(map) : map;
+ if (!('sections' in parsed))
+ return new TraceMap(parsed, mapUrl);
+ const mappings = [];
+ const sources = [];
+ const sourcesContent = [];
+ const names = [];
+ recurse(parsed, mapUrl, mappings, sources, sourcesContent, names, 0, 0, Infinity, Infinity);
+ const joined = {
+ version: 3,
+ file: parsed.file,
+ names,
+ sources,
+ sourcesContent,
+ mappings,
+ };
+ return exports.presortedDecodedMap(joined);
+ };
+ function recurse(input, mapUrl, mappings, sources, sourcesContent, names, lineOffset, columnOffset, stopLine, stopColumn) {
+ const { sections } = input;
+ for (let i = 0; i < sections.length; i++) {
+ const { map, offset } = sections[i];
+ let sl = stopLine;
+ let sc = stopColumn;
+ if (i + 1 < sections.length) {
+ const nextOffset = sections[i + 1].offset;
+ sl = Math.min(stopLine, lineOffset + nextOffset.line);
+ if (sl === stopLine) {
+ sc = Math.min(stopColumn, columnOffset + nextOffset.column);
+ }
+ else if (sl < stopLine) {
+ sc = columnOffset + nextOffset.column;
+ }
+ }
+ addSection(map, mapUrl, mappings, sources, sourcesContent, names, lineOffset + offset.line, columnOffset + offset.column, sl, sc);
+ }
+ }
+ function addSection(input, mapUrl, mappings, sources, sourcesContent, names, lineOffset, columnOffset, stopLine, stopColumn) {
+ if ('sections' in input)
+ return recurse(...arguments);
+ const map = new TraceMap(input, mapUrl);
+ const sourcesOffset = sources.length;
+ const namesOffset = names.length;
+ const decoded = exports.decodedMappings(map);
+ const { resolvedSources, sourcesContent: contents } = map;
+ append(sources, resolvedSources);
+ append(names, map.names);
+ if (contents)
+ append(sourcesContent, contents);
+ else
+ for (let i = 0; i < resolvedSources.length; i++)
+ sourcesContent.push(null);
+ for (let i = 0; i < decoded.length; i++) {
+ const lineI = lineOffset + i;
+ // We can only add so many lines before we step into the range that the next section's map
+ // controls. When we get to the last line, then we'll start checking the segments to see if
+ // they've crossed into the column range. But it may not have any columns that overstep, so we
+ // still need to check that we don't overstep lines, too.
+ if (lineI > stopLine)
+ return;
+ // The out line may already exist in mappings (if we're continuing the line started by a
+ // previous section). Or, we may have jumped ahead several lines to start this section.
+ const out = getLine(mappings, lineI);
+ // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the
+ // map can be multiple lines), it doesn't.
+ const cOffset = i === 0 ? columnOffset : 0;
+ const line = decoded[i];
+ for (let j = 0; j < line.length; j++) {
+ const seg = line[j];
+ const column = cOffset + seg[COLUMN];
+ // If this segment steps into the column range that the next section's map controls, we need
+ // to stop early.
+ if (lineI === stopLine && column >= stopColumn)
+ return;
+ if (seg.length === 1) {
+ out.push([column]);
+ continue;
+ }
+ const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX];
+ const sourceLine = seg[SOURCE_LINE];
+ const sourceColumn = seg[SOURCE_COLUMN];
+ out.push(seg.length === 4
+ ? [column, sourcesIndex, sourceLine, sourceColumn]
+ : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]]);
+ }
+ }
+ }
+ function append(arr, other) {
+ for (let i = 0; i < other.length; i++)
+ arr.push(other[i]);
+ }
+ function getLine(arr, index) {
+ for (let i = arr.length; i <= index; i++)
+ arr[i] = [];
+ return arr[index];
+ }
+
+ const LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';
+ const COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';
+ const LEAST_UPPER_BOUND = -1;
+ const GREATEST_LOWER_BOUND = 1;
+ /**
+ * Returns the encoded (VLQ string) form of the SourceMap's mappings field.
+ */
+ exports.encodedMappings = void 0;
+ /**
+ * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.
+ */
+ exports.decodedMappings = void 0;
+ /**
+ * A low-level API to find the segment associated with a generated line/column (think, from a
+ * stack trace). Line and column here are 0-based, unlike `originalPositionFor`.
+ */
+ exports.traceSegment = void 0;
+ /**
+ * A higher-level API to find the source/line/column associated with a generated line/column
+ * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in
+ * `source-map` library.
+ */
+ exports.originalPositionFor = void 0;
+ /**
+ * Finds the generated line/column position of the provided source/line/column source position.
+ */
+ exports.generatedPositionFor = void 0;
+ /**
+ * Finds all generated line/column positions of the provided source/line/column source position.
+ */
+ exports.allGeneratedPositionsFor = void 0;
+ /**
+ * Iterates each mapping in generated position order.
+ */
+ exports.eachMapping = void 0;
+ /**
+ * Retrieves the source content for a particular source, if its found. Returns null if not.
+ */
+ exports.sourceContentFor = void 0;
+ /**
+ * A helper that skips sorting of the input map's mappings array, which can be expensive for larger
+ * maps.
+ */
+ exports.presortedDecodedMap = void 0;
+ /**
+ * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+ exports.decodedMap = void 0;
+ /**
+ * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+ exports.encodedMap = void 0;
+ class TraceMap {
+ constructor(map, mapUrl) {
+ const isString = typeof map === 'string';
+ if (!isString && map._decodedMemo)
+ return map;
+ const parsed = (isString ? JSON.parse(map) : map);
+ const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;
+ this.version = version;
+ this.file = file;
+ this.names = names;
+ this.sourceRoot = sourceRoot;
+ this.sources = sources;
+ this.sourcesContent = sourcesContent;
+ const from = resolve(sourceRoot || '', stripFilename(mapUrl));
+ this.resolvedSources = sources.map((s) => resolve(s || '', from));
+ const { mappings } = parsed;
+ if (typeof mappings === 'string') {
+ this._encoded = mappings;
+ this._decoded = undefined;
+ }
+ else {
+ this._encoded = undefined;
+ this._decoded = maybeSort(mappings, isString);
+ }
+ this._decodedMemo = memoizedState();
+ this._bySources = undefined;
+ this._bySourceMemos = undefined;
+ }
+ }
+ (() => {
+ exports.encodedMappings = (map) => {
+ var _a;
+ return ((_a = map._encoded) !== null && _a !== void 0 ? _a : (map._encoded = sourcemapCodec.encode(map._decoded)));
+ };
+ exports.decodedMappings = (map) => {
+ return (map._decoded || (map._decoded = sourcemapCodec.decode(map._encoded)));
+ };
+ exports.traceSegment = (map, line, column) => {
+ const decoded = exports.decodedMappings(map);
+ // It's common for parent source maps to have pointers to lines that have no
+ // mapping (like a "//# sourceMappingURL=") at the end of the child file.
+ if (line >= decoded.length)
+ return null;
+ const segments = decoded[line];
+ const index = traceSegmentInternal(segments, map._decodedMemo, line, column, GREATEST_LOWER_BOUND);
+ return index === -1 ? null : segments[index];
+ };
+ exports.originalPositionFor = (map, { line, column, bias }) => {
+ line--;
+ if (line < 0)
+ throw new Error(LINE_GTR_ZERO);
+ if (column < 0)
+ throw new Error(COL_GTR_EQ_ZERO);
+ const decoded = exports.decodedMappings(map);
+ // It's common for parent source maps to have pointers to lines that have no
+ // mapping (like a "//# sourceMappingURL=") at the end of the child file.
+ if (line >= decoded.length)
+ return OMapping(null, null, null, null);
+ const segments = decoded[line];
+ const index = traceSegmentInternal(segments, map._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND);
+ if (index === -1)
+ return OMapping(null, null, null, null);
+ const segment = segments[index];
+ if (segment.length === 1)
+ return OMapping(null, null, null, null);
+ const { names, resolvedSources } = map;
+ return OMapping(resolvedSources[segment[SOURCES_INDEX]], segment[SOURCE_LINE] + 1, segment[SOURCE_COLUMN], segment.length === 5 ? names[segment[NAMES_INDEX]] : null);
+ };
+ exports.allGeneratedPositionsFor = (map, { source, line, column, bias }) => {
+ // SourceMapConsumer uses LEAST_UPPER_BOUND for some reason, so we follow suit.
+ return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true);
+ };
+ exports.generatedPositionFor = (map, { source, line, column, bias }) => {
+ return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false);
+ };
+ exports.eachMapping = (map, cb) => {
+ const decoded = exports.decodedMappings(map);
+ const { names, resolvedSources } = map;
+ for (let i = 0; i < decoded.length; i++) {
+ const line = decoded[i];
+ for (let j = 0; j < line.length; j++) {
+ const seg = line[j];
+ const generatedLine = i + 1;
+ const generatedColumn = seg[0];
+ let source = null;
+ let originalLine = null;
+ let originalColumn = null;
+ let name = null;
+ if (seg.length !== 1) {
+ source = resolvedSources[seg[1]];
+ originalLine = seg[2] + 1;
+ originalColumn = seg[3];
+ }
+ if (seg.length === 5)
+ name = names[seg[4]];
+ cb({
+ generatedLine,
+ generatedColumn,
+ source,
+ originalLine,
+ originalColumn,
+ name,
+ });
+ }
+ }
+ };
+ exports.sourceContentFor = (map, source) => {
+ const { sources, resolvedSources, sourcesContent } = map;
+ if (sourcesContent == null)
+ return null;
+ let index = sources.indexOf(source);
+ if (index === -1)
+ index = resolvedSources.indexOf(source);
+ return index === -1 ? null : sourcesContent[index];
+ };
+ exports.presortedDecodedMap = (map, mapUrl) => {
+ const tracer = new TraceMap(clone(map, []), mapUrl);
+ tracer._decoded = map.mappings;
+ return tracer;
+ };
+ exports.decodedMap = (map) => {
+ return clone(map, exports.decodedMappings(map));
+ };
+ exports.encodedMap = (map) => {
+ return clone(map, exports.encodedMappings(map));
+ };
+ function generatedPosition(map, source, line, column, bias, all) {
+ line--;
+ if (line < 0)
+ throw new Error(LINE_GTR_ZERO);
+ if (column < 0)
+ throw new Error(COL_GTR_EQ_ZERO);
+ const { sources, resolvedSources } = map;
+ let sourceIndex = sources.indexOf(source);
+ if (sourceIndex === -1)
+ sourceIndex = resolvedSources.indexOf(source);
+ if (sourceIndex === -1)
+ return all ? [] : GMapping(null, null);
+ const generated = (map._bySources || (map._bySources = buildBySources(exports.decodedMappings(map), (map._bySourceMemos = sources.map(memoizedState)))));
+ const segments = generated[sourceIndex][line];
+ if (segments == null)
+ return all ? [] : GMapping(null, null);
+ const memo = map._bySourceMemos[sourceIndex];
+ if (all)
+ return sliceGeneratedPositions(segments, memo, line, column, bias);
+ const index = traceSegmentInternal(segments, memo, line, column, bias);
+ if (index === -1)
+ return GMapping(null, null);
+ const segment = segments[index];
+ return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]);
+ }
+ })();
+ function clone(map, mappings) {
+ return {
+ version: map.version,
+ file: map.file,
+ names: map.names,
+ sourceRoot: map.sourceRoot,
+ sources: map.sources,
+ sourcesContent: map.sourcesContent,
+ mappings,
+ };
+ }
+ function OMapping(source, line, column, name) {
+ return { source, line, column, name };
+ }
+ function GMapping(line, column) {
+ return { line, column };
+ }
+ function traceSegmentInternal(segments, memo, line, column, bias) {
+ let index = memoizedBinarySearch(segments, column, memo, line);
+ if (found) {
+ index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);
+ }
+ else if (bias === LEAST_UPPER_BOUND)
+ index++;
+ if (index === -1 || index === segments.length)
+ return -1;
+ return index;
+ }
+ function sliceGeneratedPositions(segments, memo, line, column, bias) {
+ let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND);
+ // We ignored the bias when tracing the segment so that we're guarnateed to find the first (in
+ // insertion order) segment that matched. Even if we did respect the bias when tracing, we would
+ // still need to call `lowerBound()` to find the first segment, which is slower than just looking
+ // for the GREATEST_LOWER_BOUND to begin with. The only difference that matters for us is when the
+ // binary search didn't match, in which case GREATEST_LOWER_BOUND just needs to increment to
+ // match LEAST_UPPER_BOUND.
+ if (!found && bias === LEAST_UPPER_BOUND)
+ min++;
+ if (min === -1 || min === segments.length)
+ return [];
+ // We may have found the segment that started at an earlier column. If this is the case, then we
+ // need to slice all generated segments that match _that_ column, because all such segments span
+ // to our desired column.
+ const matchedColumn = found ? column : segments[min][COLUMN];
+ // The binary search is not guaranteed to find the lower bound when a match wasn't found.
+ if (!found)
+ min = lowerBound(segments, matchedColumn, min);
+ const max = upperBound(segments, matchedColumn, min);
+ const result = [];
+ for (; min <= max; min++) {
+ const segment = segments[min];
+ result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]));
+ }
+ return result;
+ }
+
+ exports.AnyMap = AnyMap;
+ exports.GREATEST_LOWER_BOUND = GREATEST_LOWER_BOUND;
+ exports.LEAST_UPPER_BOUND = LEAST_UPPER_BOUND;
+ exports.TraceMap = TraceMap;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+}));
+//# sourceMappingURL=trace-mapping.umd.js.map
diff --git a/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js.map b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js.map
new file mode 100644
index 00000000..fee12194
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"trace-mapping.umd.js","sources":["../src/resolve.ts","../src/strip-filename.ts","../src/sourcemap-segment.ts","../src/sort.ts","../src/binary-search.ts","../src/by-source.ts","../src/any-map.ts","../src/trace-mapping.ts"],"sourcesContent":["import resolveUri from '@jridgewell/resolve-uri';\n\nexport default function resolve(input: string, base: string | undefined): string {\n // The base is always treated as a directory, if it's not empty.\n // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327\n // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401\n if (base && !base.endsWith('/')) base += '/';\n\n return resolveUri(input, base);\n}\n","/**\n * Removes everything after the last \"/\", but leaves the slash.\n */\nexport default function stripFilename(path: string | undefined | null): string {\n if (!path) return '';\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n","type GeneratedColumn = number;\ntype SourcesIndex = number;\ntype SourceLine = number;\ntype SourceColumn = number;\ntype NamesIndex = number;\n\ntype GeneratedLine = number;\n\nexport type SourceMapSegment =\n | [GeneratedColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];\n\nexport type ReverseSegment = [SourceColumn, GeneratedLine, GeneratedColumn];\n\nexport const COLUMN = 0;\nexport const SOURCES_INDEX = 1;\nexport const SOURCE_LINE = 2;\nexport const SOURCE_COLUMN = 3;\nexport const NAMES_INDEX = 4;\n\nexport const REV_GENERATED_LINE = 1;\nexport const REV_GENERATED_COLUMN = 2;\n","import { COLUMN } from './sourcemap-segment';\n\nimport type { SourceMapSegment } from './sourcemap-segment';\n\nexport default function maybeSort(\n mappings: SourceMapSegment[][],\n owned: boolean,\n): SourceMapSegment[][] {\n const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);\n if (unsortedIndex === mappings.length) return mappings;\n\n // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If\n // not, we do not want to modify the consumer's input array.\n if (!owned) mappings = mappings.slice();\n\n for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {\n mappings[i] = sortSegments(mappings[i], owned);\n }\n return mappings;\n}\n\nfunction nextUnsortedSegmentLine(mappings: SourceMapSegment[][], start: number): number {\n for (let i = start; i < mappings.length; i++) {\n if (!isSorted(mappings[i])) return i;\n }\n return mappings.length;\n}\n\nfunction isSorted(line: SourceMapSegment[]): boolean {\n for (let j = 1; j < line.length; j++) {\n if (line[j][COLUMN] < line[j - 1][COLUMN]) {\n return false;\n }\n }\n return true;\n}\n\nfunction sortSegments(line: SourceMapSegment[], owned: boolean): SourceMapSegment[] {\n if (!owned) line = line.slice();\n return line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n return a[COLUMN] - b[COLUMN];\n}\n","import type { SourceMapSegment, ReverseSegment } from './sourcemap-segment';\nimport { COLUMN } from './sourcemap-segment';\n\nexport type MemoState = {\n lastKey: number;\n lastNeedle: number;\n lastIndex: number;\n};\n\nexport let found = false;\n\n/**\n * A binary search implementation that returns the index if a match is found.\n * If no match is found, then the left-index (the index associated with the item that comes just\n * before the desired index) is returned. To maintain proper sort order, a splice would happen at\n * the next index:\n *\n * ```js\n * const array = [1, 3];\n * const needle = 2;\n * const index = binarySearch(array, needle, (item, needle) => item - needle);\n *\n * assert.equal(index, 0);\n * array.splice(index + 1, 0, needle);\n * assert.deepEqual(array, [1, 2, 3]);\n * ```\n */\nexport function binarySearch(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n low: number,\n high: number,\n): number {\n while (low <= high) {\n const mid = low + ((high - low) >> 1);\n const cmp = haystack[mid][COLUMN] - needle;\n\n if (cmp === 0) {\n found = true;\n return mid;\n }\n\n if (cmp < 0) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n found = false;\n return low - 1;\n}\n\nexport function upperBound(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n index: number,\n): number {\n for (let i = index + 1; i < haystack.length; index = i++) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\n\nexport function lowerBound(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n index: number,\n): number {\n for (let i = index - 1; i >= 0; index = i--) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\n\nexport function memoizedState(): MemoState {\n return {\n lastKey: -1,\n lastNeedle: -1,\n lastIndex: -1,\n };\n}\n\n/**\n * This overly complicated beast is just to record the last tested line/column and the resulting\n * index, allowing us to skip a few tests if mappings are monotonically increasing.\n */\nexport function memoizedBinarySearch(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n state: MemoState,\n key: number,\n): number {\n const { lastKey, lastNeedle, lastIndex } = state;\n\n let low = 0;\n let high = haystack.length - 1;\n if (key === lastKey) {\n if (needle === lastNeedle) {\n found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;\n return lastIndex;\n }\n\n if (needle >= lastNeedle) {\n // lastIndex may be -1 if the previous needle was not found.\n low = lastIndex === -1 ? 0 : lastIndex;\n } else {\n high = lastIndex;\n }\n }\n state.lastKey = key;\n state.lastNeedle = needle;\n\n return (state.lastIndex = binarySearch(haystack, needle, low, high));\n}\n","import { COLUMN, SOURCES_INDEX, SOURCE_LINE, SOURCE_COLUMN } from './sourcemap-segment';\nimport { memoizedBinarySearch, upperBound } from './binary-search';\n\nimport type { ReverseSegment, SourceMapSegment } from './sourcemap-segment';\nimport type { MemoState } from './binary-search';\n\nexport type Source = {\n __proto__: null;\n [line: number]: Exclude[];\n};\n\n// Rebuilds the original source files, with mappings that are ordered by source line/column instead\n// of generated line/column.\nexport default function buildBySources(\n decoded: readonly SourceMapSegment[][],\n memos: MemoState[],\n): Source[] {\n const sources: Source[] = memos.map(buildNullArray);\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n if (seg.length === 1) continue;\n\n const sourceIndex = seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n const originalSource = sources[sourceIndex];\n const originalLine = (originalSource[sourceLine] ||= []);\n const memo = memos[sourceIndex];\n\n // The binary search either found a match, or it found the left-index just before where the\n // segment should go. Either way, we want to insert after that. And there may be multiple\n // generated segments associated with an original location, so there may need to move several\n // indexes before we find where we need to insert.\n const index = upperBound(\n originalLine,\n sourceColumn,\n memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine),\n );\n\n insert(originalLine, (memo.lastIndex = index + 1), [sourceColumn, i, seg[COLUMN]]);\n }\n }\n\n return sources;\n}\n\nfunction insert(array: T[], index: number, value: T) {\n for (let i = array.length; i > index; i--) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n}\n\n// Null arrays allow us to use ordered index keys without actually allocating contiguous memory like\n// a real array. We use a null-prototype object to avoid prototype pollution and deoptimizations.\n// Numeric properties on objects are magically sorted in ascending order by the engine regardless of\n// the insertion order. So, by setting any numeric keys, even out of order, we'll get ascending\n// order when iterating with for-in.\nfunction buildNullArray(): T {\n return { __proto__: null } as T;\n}\n","import { TraceMap, presortedDecodedMap, decodedMappings } from './trace-mapping';\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n} from './sourcemap-segment';\n\nimport type {\n Section,\n SectionedSourceMap,\n DecodedSourceMap,\n SectionedSourceMapInput,\n Ro,\n} from './types';\nimport type { SourceMapSegment } from './sourcemap-segment';\n\ntype AnyMap = {\n new (map: SectionedSourceMapInput, mapUrl?: string | null): TraceMap;\n (map: SectionedSourceMapInput, mapUrl?: string | null): TraceMap;\n};\n\nexport const AnyMap: AnyMap = function (map, mapUrl) {\n const parsed =\n typeof map === 'string' ? (JSON.parse(map) as Exclude) : map;\n\n if (!('sections' in parsed)) return new TraceMap(parsed, mapUrl);\n\n const mappings: SourceMapSegment[][] = [];\n const sources: string[] = [];\n const sourcesContent: (string | null)[] = [];\n const names: string[] = [];\n\n recurse(parsed, mapUrl, mappings, sources, sourcesContent, names, 0, 0, Infinity, Infinity);\n\n const joined: DecodedSourceMap = {\n version: 3,\n file: parsed.file,\n names,\n sources,\n sourcesContent,\n mappings,\n };\n\n return presortedDecodedMap(joined);\n} as AnyMap;\n\nfunction recurse(\n input: Ro,\n mapUrl: string | null | undefined,\n mappings: SourceMapSegment[][],\n sources: string[],\n sourcesContent: (string | null)[],\n names: string[],\n lineOffset: number,\n columnOffset: number,\n stopLine: number,\n stopColumn: number,\n) {\n const { sections } = input;\n for (let i = 0; i < sections.length; i++) {\n const { map, offset } = sections[i];\n\n let sl = stopLine;\n let sc = stopColumn;\n if (i + 1 < sections.length) {\n const nextOffset = sections[i + 1].offset;\n sl = Math.min(stopLine, lineOffset + nextOffset.line);\n\n if (sl === stopLine) {\n sc = Math.min(stopColumn, columnOffset + nextOffset.column);\n } else if (sl < stopLine) {\n sc = columnOffset + nextOffset.column;\n }\n }\n\n addSection(\n map,\n mapUrl,\n mappings,\n sources,\n sourcesContent,\n names,\n lineOffset + offset.line,\n columnOffset + offset.column,\n sl,\n sc,\n );\n }\n}\n\nfunction addSection(\n input: Ro,\n mapUrl: string | null | undefined,\n mappings: SourceMapSegment[][],\n sources: string[],\n sourcesContent: (string | null)[],\n names: string[],\n lineOffset: number,\n columnOffset: number,\n stopLine: number,\n stopColumn: number,\n) {\n if ('sections' in input) return recurse(...(arguments as unknown as Parameters));\n\n const map = new TraceMap(input, mapUrl);\n const sourcesOffset = sources.length;\n const namesOffset = names.length;\n const decoded = decodedMappings(map);\n const { resolvedSources, sourcesContent: contents } = map;\n\n append(sources, resolvedSources);\n append(names, map.names);\n if (contents) append(sourcesContent, contents);\n else for (let i = 0; i < resolvedSources.length; i++) sourcesContent.push(null);\n\n for (let i = 0; i < decoded.length; i++) {\n const lineI = lineOffset + i;\n\n // We can only add so many lines before we step into the range that the next section's map\n // controls. When we get to the last line, then we'll start checking the segments to see if\n // they've crossed into the column range. But it may not have any columns that overstep, so we\n // still need to check that we don't overstep lines, too.\n if (lineI > stopLine) return;\n\n // The out line may already exist in mappings (if we're continuing the line started by a\n // previous section). Or, we may have jumped ahead several lines to start this section.\n const out = getLine(mappings, lineI);\n // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the\n // map can be multiple lines), it doesn't.\n const cOffset = i === 0 ? columnOffset : 0;\n\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n const column = cOffset + seg[COLUMN];\n\n // If this segment steps into the column range that the next section's map controls, we need\n // to stop early.\n if (lineI === stopLine && column >= stopColumn) return;\n\n if (seg.length === 1) {\n out.push([column]);\n continue;\n }\n\n const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n out.push(\n seg.length === 4\n ? [column, sourcesIndex, sourceLine, sourceColumn]\n : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]],\n );\n }\n }\n}\n\nfunction append(arr: T[], other: T[]) {\n for (let i = 0; i < other.length; i++) arr.push(other[i]);\n}\n\nfunction getLine(arr: T[][], index: number): T[] {\n for (let i = arr.length; i <= index; i++) arr[i] = [];\n return arr[index];\n}\n","import { encode, decode } from '@jridgewell/sourcemap-codec';\n\nimport resolve from './resolve';\nimport stripFilename from './strip-filename';\nimport maybeSort from './sort';\nimport buildBySources from './by-source';\nimport {\n memoizedState,\n memoizedBinarySearch,\n upperBound,\n lowerBound,\n found as bsFound,\n} from './binary-search';\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n REV_GENERATED_LINE,\n REV_GENERATED_COLUMN,\n} from './sourcemap-segment';\n\nimport type { SourceMapSegment, ReverseSegment } from './sourcemap-segment';\nimport type {\n SourceMapV3,\n DecodedSourceMap,\n EncodedSourceMap,\n InvalidOriginalMapping,\n OriginalMapping,\n InvalidGeneratedMapping,\n GeneratedMapping,\n SourceMapInput,\n Needle,\n SourceNeedle,\n SourceMap,\n EachMapping,\n Bias,\n} from './types';\nimport type { Source } from './by-source';\nimport type { MemoState } from './binary-search';\n\nexport type { SourceMapSegment } from './sourcemap-segment';\nexport type {\n SourceMapInput,\n SectionedSourceMapInput,\n DecodedSourceMap,\n EncodedSourceMap,\n SectionedSourceMap,\n InvalidOriginalMapping,\n OriginalMapping as Mapping,\n OriginalMapping,\n InvalidGeneratedMapping,\n GeneratedMapping,\n EachMapping,\n} from './types';\n\nconst LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';\nconst COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';\n\nexport const LEAST_UPPER_BOUND = -1;\nexport const GREATEST_LOWER_BOUND = 1;\n\n/**\n * Returns the encoded (VLQ string) form of the SourceMap's mappings field.\n */\nexport let encodedMappings: (map: TraceMap) => EncodedSourceMap['mappings'];\n\n/**\n * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.\n */\nexport let decodedMappings: (map: TraceMap) => Readonly;\n\n/**\n * A low-level API to find the segment associated with a generated line/column (think, from a\n * stack trace). Line and column here are 0-based, unlike `originalPositionFor`.\n */\nexport let traceSegment: (\n map: TraceMap,\n line: number,\n column: number,\n) => Readonly | null;\n\n/**\n * A higher-level API to find the source/line/column associated with a generated line/column\n * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in\n * `source-map` library.\n */\nexport let originalPositionFor: (\n map: TraceMap,\n needle: Needle,\n) => OriginalMapping | InvalidOriginalMapping;\n\n/**\n * Finds the generated line/column position of the provided source/line/column source position.\n */\nexport let generatedPositionFor: (\n map: TraceMap,\n needle: SourceNeedle,\n) => GeneratedMapping | InvalidGeneratedMapping;\n\n/**\n * Finds all generated line/column positions of the provided source/line/column source position.\n */\nexport let allGeneratedPositionsFor: (map: TraceMap, needle: SourceNeedle) => GeneratedMapping[];\n\n/**\n * Iterates each mapping in generated position order.\n */\nexport let eachMapping: (map: TraceMap, cb: (mapping: EachMapping) => void) => void;\n\n/**\n * Retrieves the source content for a particular source, if its found. Returns null if not.\n */\nexport let sourceContentFor: (map: TraceMap, source: string) => string | null;\n\n/**\n * A helper that skips sorting of the input map's mappings array, which can be expensive for larger\n * maps.\n */\nexport let presortedDecodedMap: (map: DecodedSourceMap, mapUrl?: string) => TraceMap;\n\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport let decodedMap: (\n map: TraceMap,\n) => Omit & { mappings: readonly SourceMapSegment[][] };\n\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport let encodedMap: (map: TraceMap) => EncodedSourceMap;\n\nexport { AnyMap } from './any-map';\n\nexport class TraceMap implements SourceMap {\n declare version: SourceMapV3['version'];\n declare file: SourceMapV3['file'];\n declare names: SourceMapV3['names'];\n declare sourceRoot: SourceMapV3['sourceRoot'];\n declare sources: SourceMapV3['sources'];\n declare sourcesContent: SourceMapV3['sourcesContent'];\n\n declare resolvedSources: string[];\n private declare _encoded: string | undefined;\n\n private declare _decoded: SourceMapSegment[][] | undefined;\n private declare _decodedMemo: MemoState;\n\n private declare _bySources: Source[] | undefined;\n private declare _bySourceMemos: MemoState[] | undefined;\n\n constructor(map: SourceMapInput, mapUrl?: string | null) {\n const isString = typeof map === 'string';\n\n if (!isString && (map as unknown as { _decodedMemo: any })._decodedMemo) return map as TraceMap;\n\n const parsed = (isString ? JSON.parse(map) : map) as DecodedSourceMap | EncodedSourceMap;\n\n const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;\n this.version = version;\n this.file = file;\n this.names = names;\n this.sourceRoot = sourceRoot;\n this.sources = sources;\n this.sourcesContent = sourcesContent;\n\n const from = resolve(sourceRoot || '', stripFilename(mapUrl));\n this.resolvedSources = sources.map((s) => resolve(s || '', from));\n\n const { mappings } = parsed;\n if (typeof mappings === 'string') {\n this._encoded = mappings;\n this._decoded = undefined;\n } else {\n this._encoded = undefined;\n this._decoded = maybeSort(mappings, isString);\n }\n\n this._decodedMemo = memoizedState();\n this._bySources = undefined;\n this._bySourceMemos = undefined;\n }\n\n static {\n encodedMappings = (map) => {\n return (map._encoded ??= encode(map._decoded!));\n };\n\n decodedMappings = (map) => {\n return (map._decoded ||= decode(map._encoded!));\n };\n\n traceSegment = (map, line, column) => {\n const decoded = decodedMappings(map);\n\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length) return null;\n\n const segments = decoded[line];\n const index = traceSegmentInternal(\n segments,\n map._decodedMemo,\n line,\n column,\n GREATEST_LOWER_BOUND,\n );\n\n return index === -1 ? null : segments[index];\n };\n\n originalPositionFor = (map, { line, column, bias }) => {\n line--;\n if (line < 0) throw new Error(LINE_GTR_ZERO);\n if (column < 0) throw new Error(COL_GTR_EQ_ZERO);\n\n const decoded = decodedMappings(map);\n\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length) return OMapping(null, null, null, null);\n\n const segments = decoded[line];\n const index = traceSegmentInternal(\n segments,\n map._decodedMemo,\n line,\n column,\n bias || GREATEST_LOWER_BOUND,\n );\n\n if (index === -1) return OMapping(null, null, null, null);\n\n const segment = segments[index];\n if (segment.length === 1) return OMapping(null, null, null, null);\n\n const { names, resolvedSources } = map;\n return OMapping(\n resolvedSources[segment[SOURCES_INDEX]],\n segment[SOURCE_LINE] + 1,\n segment[SOURCE_COLUMN],\n segment.length === 5 ? names[segment[NAMES_INDEX]] : null,\n );\n };\n\n allGeneratedPositionsFor = (map, { source, line, column, bias }) => {\n // SourceMapConsumer uses LEAST_UPPER_BOUND for some reason, so we follow suit.\n return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true);\n };\n\n generatedPositionFor = (map, { source, line, column, bias }) => {\n return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false);\n };\n\n eachMapping = (map, cb) => {\n const decoded = decodedMappings(map);\n const { names, resolvedSources } = map;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n\n const generatedLine = i + 1;\n const generatedColumn = seg[0];\n let source = null;\n let originalLine = null;\n let originalColumn = null;\n let name = null;\n if (seg.length !== 1) {\n source = resolvedSources[seg[1]];\n originalLine = seg[2] + 1;\n originalColumn = seg[3];\n }\n if (seg.length === 5) name = names[seg[4]];\n\n cb({\n generatedLine,\n generatedColumn,\n source,\n originalLine,\n originalColumn,\n name,\n } as EachMapping);\n }\n }\n };\n\n sourceContentFor = (map, source) => {\n const { sources, resolvedSources, sourcesContent } = map;\n if (sourcesContent == null) return null;\n\n let index = sources.indexOf(source);\n if (index === -1) index = resolvedSources.indexOf(source);\n\n return index === -1 ? null : sourcesContent[index];\n };\n\n presortedDecodedMap = (map, mapUrl) => {\n const tracer = new TraceMap(clone(map, []), mapUrl);\n tracer._decoded = map.mappings;\n return tracer;\n };\n\n decodedMap = (map) => {\n return clone(map, decodedMappings(map));\n };\n\n encodedMap = (map) => {\n return clone(map, encodedMappings(map));\n };\n\n function generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: false,\n ): GeneratedMapping | InvalidGeneratedMapping;\n function generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: true,\n ): GeneratedMapping[];\n function generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: boolean,\n ): GeneratedMapping | InvalidGeneratedMapping | GeneratedMapping[] {\n line--;\n if (line < 0) throw new Error(LINE_GTR_ZERO);\n if (column < 0) throw new Error(COL_GTR_EQ_ZERO);\n\n const { sources, resolvedSources } = map;\n let sourceIndex = sources.indexOf(source);\n if (sourceIndex === -1) sourceIndex = resolvedSources.indexOf(source);\n if (sourceIndex === -1) return all ? [] : GMapping(null, null);\n\n const generated = (map._bySources ||= buildBySources(\n decodedMappings(map),\n (map._bySourceMemos = sources.map(memoizedState)),\n ));\n\n const segments = generated[sourceIndex][line];\n if (segments == null) return all ? [] : GMapping(null, null);\n\n const memo = map._bySourceMemos![sourceIndex];\n\n if (all) return sliceGeneratedPositions(segments, memo, line, column, bias);\n\n const index = traceSegmentInternal(segments, memo, line, column, bias);\n if (index === -1) return GMapping(null, null);\n\n const segment = segments[index];\n return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]);\n }\n }\n}\n\nfunction clone(\n map: TraceMap | DecodedSourceMap | EncodedSourceMap,\n mappings: T,\n): T extends string ? EncodedSourceMap : DecodedSourceMap {\n return {\n version: map.version,\n file: map.file,\n names: map.names,\n sourceRoot: map.sourceRoot,\n sources: map.sources,\n sourcesContent: map.sourcesContent,\n mappings,\n } as any;\n}\n\nfunction OMapping(source: null, line: null, column: null, name: null): InvalidOriginalMapping;\nfunction OMapping(\n source: string,\n line: number,\n column: number,\n name: string | null,\n): OriginalMapping;\nfunction OMapping(\n source: string | null,\n line: number | null,\n column: number | null,\n name: string | null,\n): OriginalMapping | InvalidOriginalMapping {\n return { source, line, column, name } as any;\n}\n\nfunction GMapping(line: null, column: null): InvalidGeneratedMapping;\nfunction GMapping(line: number, column: number): GeneratedMapping;\nfunction GMapping(\n line: number | null,\n column: number | null,\n): GeneratedMapping | InvalidGeneratedMapping {\n return { line, column } as any;\n}\n\nfunction traceSegmentInternal(\n segments: SourceMapSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number;\nfunction traceSegmentInternal(\n segments: ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number;\nfunction traceSegmentInternal(\n segments: SourceMapSegment[] | ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number {\n let index = memoizedBinarySearch(segments, column, memo, line);\n if (bsFound) {\n index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);\n } else if (bias === LEAST_UPPER_BOUND) index++;\n\n if (index === -1 || index === segments.length) return -1;\n return index;\n}\n\nfunction sliceGeneratedPositions(\n segments: ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): GeneratedMapping[] {\n let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND);\n\n // We ignored the bias when tracing the segment so that we're guarnateed to find the first (in\n // insertion order) segment that matched. Even if we did respect the bias when tracing, we would\n // still need to call `lowerBound()` to find the first segment, which is slower than just looking\n // for the GREATEST_LOWER_BOUND to begin with. The only difference that matters for us is when the\n // binary search didn't match, in which case GREATEST_LOWER_BOUND just needs to increment to\n // match LEAST_UPPER_BOUND.\n if (!bsFound && bias === LEAST_UPPER_BOUND) min++;\n\n if (min === -1 || min === segments.length) return [];\n\n // We may have found the segment that started at an earlier column. If this is the case, then we\n // need to slice all generated segments that match _that_ column, because all such segments span\n // to our desired column.\n const matchedColumn = bsFound ? column : segments[min][COLUMN];\n\n // The binary search is not guaranteed to find the lower bound when a match wasn't found.\n if (!bsFound) min = lowerBound(segments, matchedColumn, min);\n const max = upperBound(segments, matchedColumn, min);\n\n const result = [];\n for (; min <= max; min++) {\n const segment = segments[min];\n result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]));\n }\n return result;\n}\n"],"names":["resolveUri","presortedDecodedMap","decodedMappings","encodedMappings","traceSegment","originalPositionFor","generatedPositionFor","allGeneratedPositionsFor","eachMapping","sourceContentFor","decodedMap","encodedMap","encode","decode","bsFound"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/trace-mapping/dist/types/any-map.d.ts b/node_modules/@jridgewell/trace-mapping/dist/types/any-map.d.ts
new file mode 100644
index 00000000..08bca6bf
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/dist/types/any-map.d.ts
@@ -0,0 +1,8 @@
+import { TraceMap } from './trace-mapping';
+import type { SectionedSourceMapInput } from './types';
+declare type AnyMap = {
+ new (map: SectionedSourceMapInput, mapUrl?: string | null): TraceMap;
+ (map: SectionedSourceMapInput, mapUrl?: string | null): TraceMap;
+};
+export declare const AnyMap: AnyMap;
+export {};
diff --git a/node_modules/@jridgewell/trace-mapping/dist/types/binary-search.d.ts b/node_modules/@jridgewell/trace-mapping/dist/types/binary-search.d.ts
new file mode 100644
index 00000000..88820e50
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/dist/types/binary-search.d.ts
@@ -0,0 +1,32 @@
+import type { SourceMapSegment, ReverseSegment } from './sourcemap-segment';
+export declare type MemoState = {
+ lastKey: number;
+ lastNeedle: number;
+ lastIndex: number;
+};
+export declare let found: boolean;
+/**
+ * A binary search implementation that returns the index if a match is found.
+ * If no match is found, then the left-index (the index associated with the item that comes just
+ * before the desired index) is returned. To maintain proper sort order, a splice would happen at
+ * the next index:
+ *
+ * ```js
+ * const array = [1, 3];
+ * const needle = 2;
+ * const index = binarySearch(array, needle, (item, needle) => item - needle);
+ *
+ * assert.equal(index, 0);
+ * array.splice(index + 1, 0, needle);
+ * assert.deepEqual(array, [1, 2, 3]);
+ * ```
+ */
+export declare function binarySearch(haystack: SourceMapSegment[] | ReverseSegment[], needle: number, low: number, high: number): number;
+export declare function upperBound(haystack: SourceMapSegment[] | ReverseSegment[], needle: number, index: number): number;
+export declare function lowerBound(haystack: SourceMapSegment[] | ReverseSegment[], needle: number, index: number): number;
+export declare function memoizedState(): MemoState;
+/**
+ * This overly complicated beast is just to record the last tested line/column and the resulting
+ * index, allowing us to skip a few tests if mappings are monotonically increasing.
+ */
+export declare function memoizedBinarySearch(haystack: SourceMapSegment[] | ReverseSegment[], needle: number, state: MemoState, key: number): number;
diff --git a/node_modules/@jridgewell/trace-mapping/dist/types/by-source.d.ts b/node_modules/@jridgewell/trace-mapping/dist/types/by-source.d.ts
new file mode 100644
index 00000000..8d1e5383
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/dist/types/by-source.d.ts
@@ -0,0 +1,7 @@
+import type { ReverseSegment, SourceMapSegment } from './sourcemap-segment';
+import type { MemoState } from './binary-search';
+export declare type Source = {
+ __proto__: null;
+ [line: number]: Exclude[];
+};
+export default function buildBySources(decoded: readonly SourceMapSegment[][], memos: MemoState[]): Source[];
diff --git a/node_modules/@jridgewell/trace-mapping/dist/types/resolve.d.ts b/node_modules/@jridgewell/trace-mapping/dist/types/resolve.d.ts
new file mode 100644
index 00000000..cf7d4f8a
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/dist/types/resolve.d.ts
@@ -0,0 +1 @@
+export default function resolve(input: string, base: string | undefined): string;
diff --git a/node_modules/@jridgewell/trace-mapping/dist/types/sort.d.ts b/node_modules/@jridgewell/trace-mapping/dist/types/sort.d.ts
new file mode 100644
index 00000000..2bfb5dc1
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/dist/types/sort.d.ts
@@ -0,0 +1,2 @@
+import type { SourceMapSegment } from './sourcemap-segment';
+export default function maybeSort(mappings: SourceMapSegment[][], owned: boolean): SourceMapSegment[][];
diff --git a/node_modules/@jridgewell/trace-mapping/dist/types/sourcemap-segment.d.ts b/node_modules/@jridgewell/trace-mapping/dist/types/sourcemap-segment.d.ts
new file mode 100644
index 00000000..6d70924e
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/dist/types/sourcemap-segment.d.ts
@@ -0,0 +1,16 @@
+declare type GeneratedColumn = number;
+declare type SourcesIndex = number;
+declare type SourceLine = number;
+declare type SourceColumn = number;
+declare type NamesIndex = number;
+declare type GeneratedLine = number;
+export declare type SourceMapSegment = [GeneratedColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];
+export declare type ReverseSegment = [SourceColumn, GeneratedLine, GeneratedColumn];
+export declare const COLUMN = 0;
+export declare const SOURCES_INDEX = 1;
+export declare const SOURCE_LINE = 2;
+export declare const SOURCE_COLUMN = 3;
+export declare const NAMES_INDEX = 4;
+export declare const REV_GENERATED_LINE = 1;
+export declare const REV_GENERATED_COLUMN = 2;
+export {};
diff --git a/node_modules/@jridgewell/trace-mapping/dist/types/strip-filename.d.ts b/node_modules/@jridgewell/trace-mapping/dist/types/strip-filename.d.ts
new file mode 100644
index 00000000..bead5c12
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/dist/types/strip-filename.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Removes everything after the last "/", but leaves the slash.
+ */
+export default function stripFilename(path: string | undefined | null): string;
diff --git a/node_modules/@jridgewell/trace-mapping/dist/types/trace-mapping.d.ts b/node_modules/@jridgewell/trace-mapping/dist/types/trace-mapping.d.ts
new file mode 100644
index 00000000..c125ead3
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/dist/types/trace-mapping.d.ts
@@ -0,0 +1,74 @@
+import type { SourceMapSegment } from './sourcemap-segment';
+import type { SourceMapV3, DecodedSourceMap, EncodedSourceMap, InvalidOriginalMapping, OriginalMapping, InvalidGeneratedMapping, GeneratedMapping, SourceMapInput, Needle, SourceNeedle, SourceMap, EachMapping } from './types';
+export type { SourceMapSegment } from './sourcemap-segment';
+export type { SourceMapInput, SectionedSourceMapInput, DecodedSourceMap, EncodedSourceMap, SectionedSourceMap, InvalidOriginalMapping, OriginalMapping as Mapping, OriginalMapping, InvalidGeneratedMapping, GeneratedMapping, EachMapping, } from './types';
+export declare const LEAST_UPPER_BOUND = -1;
+export declare const GREATEST_LOWER_BOUND = 1;
+/**
+ * Returns the encoded (VLQ string) form of the SourceMap's mappings field.
+ */
+export declare let encodedMappings: (map: TraceMap) => EncodedSourceMap['mappings'];
+/**
+ * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.
+ */
+export declare let decodedMappings: (map: TraceMap) => Readonly;
+/**
+ * A low-level API to find the segment associated with a generated line/column (think, from a
+ * stack trace). Line and column here are 0-based, unlike `originalPositionFor`.
+ */
+export declare let traceSegment: (map: TraceMap, line: number, column: number) => Readonly | null;
+/**
+ * A higher-level API to find the source/line/column associated with a generated line/column
+ * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in
+ * `source-map` library.
+ */
+export declare let originalPositionFor: (map: TraceMap, needle: Needle) => OriginalMapping | InvalidOriginalMapping;
+/**
+ * Finds the generated line/column position of the provided source/line/column source position.
+ */
+export declare let generatedPositionFor: (map: TraceMap, needle: SourceNeedle) => GeneratedMapping | InvalidGeneratedMapping;
+/**
+ * Finds all generated line/column positions of the provided source/line/column source position.
+ */
+export declare let allGeneratedPositionsFor: (map: TraceMap, needle: SourceNeedle) => GeneratedMapping[];
+/**
+ * Iterates each mapping in generated position order.
+ */
+export declare let eachMapping: (map: TraceMap, cb: (mapping: EachMapping) => void) => void;
+/**
+ * Retrieves the source content for a particular source, if its found. Returns null if not.
+ */
+export declare let sourceContentFor: (map: TraceMap, source: string) => string | null;
+/**
+ * A helper that skips sorting of the input map's mappings array, which can be expensive for larger
+ * maps.
+ */
+export declare let presortedDecodedMap: (map: DecodedSourceMap, mapUrl?: string) => TraceMap;
+/**
+ * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+export declare let decodedMap: (map: TraceMap) => Omit & {
+ mappings: readonly SourceMapSegment[][];
+};
+/**
+ * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects
+ * a sourcemap, or to JSON.stringify.
+ */
+export declare let encodedMap: (map: TraceMap) => EncodedSourceMap;
+export { AnyMap } from './any-map';
+export declare class TraceMap implements SourceMap {
+ version: SourceMapV3['version'];
+ file: SourceMapV3['file'];
+ names: SourceMapV3['names'];
+ sourceRoot: SourceMapV3['sourceRoot'];
+ sources: SourceMapV3['sources'];
+ sourcesContent: SourceMapV3['sourcesContent'];
+ resolvedSources: string[];
+ private _encoded;
+ private _decoded;
+ private _decodedMemo;
+ private _bySources;
+ private _bySourceMemos;
+ constructor(map: SourceMapInput, mapUrl?: string | null);
+}
diff --git a/node_modules/@jridgewell/trace-mapping/dist/types/types.d.ts b/node_modules/@jridgewell/trace-mapping/dist/types/types.d.ts
new file mode 100644
index 00000000..2f4fd452
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/dist/types/types.d.ts
@@ -0,0 +1,92 @@
+import type { SourceMapSegment } from './sourcemap-segment';
+import type { GREATEST_LOWER_BOUND, LEAST_UPPER_BOUND, TraceMap } from './trace-mapping';
+export interface SourceMapV3 {
+ file?: string | null;
+ names: string[];
+ sourceRoot?: string;
+ sources: (string | null)[];
+ sourcesContent?: (string | null)[];
+ version: 3;
+}
+export interface EncodedSourceMap extends SourceMapV3 {
+ mappings: string;
+}
+export interface DecodedSourceMap extends SourceMapV3 {
+ mappings: SourceMapSegment[][];
+}
+export interface Section {
+ offset: {
+ line: number;
+ column: number;
+ };
+ map: EncodedSourceMap | DecodedSourceMap | SectionedSourceMap;
+}
+export interface SectionedSourceMap {
+ file?: string | null;
+ sections: Section[];
+ version: 3;
+}
+export declare type OriginalMapping = {
+ source: string | null;
+ line: number;
+ column: number;
+ name: string | null;
+};
+export declare type InvalidOriginalMapping = {
+ source: null;
+ line: null;
+ column: null;
+ name: null;
+};
+export declare type GeneratedMapping = {
+ line: number;
+ column: number;
+};
+export declare type InvalidGeneratedMapping = {
+ line: null;
+ column: null;
+};
+export declare type Bias = typeof GREATEST_LOWER_BOUND | typeof LEAST_UPPER_BOUND;
+export declare type SourceMapInput = string | Ro | Ro | TraceMap;
+export declare type SectionedSourceMapInput = SourceMapInput | Ro;
+export declare type Needle = {
+ line: number;
+ column: number;
+ bias?: Bias;
+};
+export declare type SourceNeedle = {
+ source: string;
+ line: number;
+ column: number;
+ bias?: Bias;
+};
+export declare type EachMapping = {
+ generatedLine: number;
+ generatedColumn: number;
+ source: null;
+ originalLine: null;
+ originalColumn: null;
+ name: null;
+} | {
+ generatedLine: number;
+ generatedColumn: number;
+ source: string | null;
+ originalLine: number;
+ originalColumn: number;
+ name: string | null;
+};
+export declare abstract class SourceMap {
+ version: SourceMapV3['version'];
+ file: SourceMapV3['file'];
+ names: SourceMapV3['names'];
+ sourceRoot: SourceMapV3['sourceRoot'];
+ sources: SourceMapV3['sources'];
+ sourcesContent: SourceMapV3['sourcesContent'];
+ resolvedSources: SourceMapV3['sources'];
+}
+export declare type Ro = T extends Array ? V[] | Readonly | RoArray | Readonly> : T extends object ? T | Readonly | RoObject | Readonly> : T;
+declare type RoArray = Ro[];
+declare type RoObject = {
+ [K in keyof T]: T[K] | Ro;
+};
+export {};
diff --git a/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/LICENSE b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/LICENSE
new file mode 100644
index 00000000..a331065a
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2015 Rich Harris
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/README.md b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/README.md
new file mode 100644
index 00000000..2b9e3971
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/README.md
@@ -0,0 +1,200 @@
+# sourcemap-codec
+
+Encode/decode the `mappings` property of a [sourcemap](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit).
+
+
+## Why?
+
+Sourcemaps are difficult to generate and manipulate, because the `mappings` property – the part that actually links the generated code back to the original source – is encoded using an obscure method called [Variable-length quantity](https://en.wikipedia.org/wiki/Variable-length_quantity). On top of that, each segment in the mapping contains offsets rather than absolute indices, which means that you can't look at a segment in isolation – you have to understand the whole sourcemap.
+
+This package makes the process slightly easier.
+
+
+## Installation
+
+```bash
+npm install sourcemap-codec
+```
+
+
+## Usage
+
+```js
+import { encode, decode } from 'sourcemap-codec';
+
+var decoded = decode( ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
+
+assert.deepEqual( decoded, [
+ // the first line (of the generated code) has no mappings,
+ // as shown by the starting semi-colon (which separates lines)
+ [],
+
+ // the second line contains four (comma-separated) segments
+ [
+ // segments are encoded as you'd expect:
+ // [ generatedCodeColumn, sourceIndex, sourceCodeLine, sourceCodeColumn, nameIndex ]
+
+ // i.e. the first segment begins at column 2, and maps back to the second column
+ // of the second line (both zero-based) of the 0th source, and uses the 0th
+ // name in the `map.names` array
+ [ 2, 0, 2, 2, 0 ],
+
+ // the remaining segments are 4-length rather than 5-length,
+ // because they don't map a name
+ [ 4, 0, 2, 4 ],
+ [ 6, 0, 2, 5 ],
+ [ 7, 0, 2, 7 ]
+ ],
+
+ // the final line contains two segments
+ [
+ [ 2, 1, 10, 19 ],
+ [ 12, 1, 11, 20 ]
+ ]
+]);
+
+var encoded = encode( decoded );
+assert.equal( encoded, ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
+```
+
+## Benchmarks
+
+```
+node v18.0.0
+
+amp.js.map - 45120 segments
+
+Decode Memory Usage:
+@jridgewell/sourcemap-codec 5479160 bytes
+sourcemap-codec 5659336 bytes
+source-map-0.6.1 17144440 bytes
+source-map-0.8.0 6867424 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Decode speed:
+decode: @jridgewell/sourcemap-codec x 502 ops/sec ±1.03% (90 runs sampled)
+decode: sourcemap-codec x 445 ops/sec ±0.97% (92 runs sampled)
+decode: source-map-0.6.1 x 36.01 ops/sec ±1.64% (49 runs sampled)
+decode: source-map-0.8.0 x 367 ops/sec ±0.04% (95 runs sampled)
+Fastest is decode: @jridgewell/sourcemap-codec
+
+Encode Memory Usage:
+@jridgewell/sourcemap-codec 1261620 bytes
+sourcemap-codec 9119248 bytes
+source-map-0.6.1 8968560 bytes
+source-map-0.8.0 8952952 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Encode speed:
+encode: @jridgewell/sourcemap-codec x 738 ops/sec ±0.42% (98 runs sampled)
+encode: sourcemap-codec x 238 ops/sec ±0.73% (88 runs sampled)
+encode: source-map-0.6.1 x 162 ops/sec ±0.43% (84 runs sampled)
+encode: source-map-0.8.0 x 191 ops/sec ±0.34% (90 runs sampled)
+Fastest is encode: @jridgewell/sourcemap-codec
+
+
+***
+
+
+babel.min.js.map - 347793 segments
+
+Decode Memory Usage:
+@jridgewell/sourcemap-codec 35338184 bytes
+sourcemap-codec 35922736 bytes
+source-map-0.6.1 62366360 bytes
+source-map-0.8.0 44337416 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Decode speed:
+decode: @jridgewell/sourcemap-codec x 40.35 ops/sec ±4.47% (54 runs sampled)
+decode: sourcemap-codec x 36.76 ops/sec ±3.67% (51 runs sampled)
+decode: source-map-0.6.1 x 4.44 ops/sec ±2.15% (16 runs sampled)
+decode: source-map-0.8.0 x 59.35 ops/sec ±0.05% (78 runs sampled)
+Fastest is decode: source-map-0.8.0
+
+Encode Memory Usage:
+@jridgewell/sourcemap-codec 7212604 bytes
+sourcemap-codec 21421456 bytes
+source-map-0.6.1 25286888 bytes
+source-map-0.8.0 25498744 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Encode speed:
+encode: @jridgewell/sourcemap-codec x 112 ops/sec ±0.13% (84 runs sampled)
+encode: sourcemap-codec x 30.23 ops/sec ±2.76% (53 runs sampled)
+encode: source-map-0.6.1 x 19.43 ops/sec ±3.70% (37 runs sampled)
+encode: source-map-0.8.0 x 19.40 ops/sec ±3.26% (37 runs sampled)
+Fastest is encode: @jridgewell/sourcemap-codec
+
+
+***
+
+
+preact.js.map - 1992 segments
+
+Decode Memory Usage:
+@jridgewell/sourcemap-codec 500272 bytes
+sourcemap-codec 516864 bytes
+source-map-0.6.1 1596672 bytes
+source-map-0.8.0 517272 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Decode speed:
+decode: @jridgewell/sourcemap-codec x 16,137 ops/sec ±0.17% (99 runs sampled)
+decode: sourcemap-codec x 12,139 ops/sec ±0.13% (99 runs sampled)
+decode: source-map-0.6.1 x 1,264 ops/sec ±0.12% (100 runs sampled)
+decode: source-map-0.8.0 x 9,894 ops/sec ±0.08% (101 runs sampled)
+Fastest is decode: @jridgewell/sourcemap-codec
+
+Encode Memory Usage:
+@jridgewell/sourcemap-codec 321026 bytes
+sourcemap-codec 830832 bytes
+source-map-0.6.1 586608 bytes
+source-map-0.8.0 586680 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Encode speed:
+encode: @jridgewell/sourcemap-codec x 19,876 ops/sec ±0.78% (95 runs sampled)
+encode: sourcemap-codec x 6,983 ops/sec ±0.15% (100 runs sampled)
+encode: source-map-0.6.1 x 5,070 ops/sec ±0.12% (102 runs sampled)
+encode: source-map-0.8.0 x 5,641 ops/sec ±0.17% (100 runs sampled)
+Fastest is encode: @jridgewell/sourcemap-codec
+
+
+***
+
+
+react.js.map - 5726 segments
+
+Decode Memory Usage:
+@jridgewell/sourcemap-codec 734848 bytes
+sourcemap-codec 954200 bytes
+source-map-0.6.1 2276432 bytes
+source-map-0.8.0 955488 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Decode speed:
+decode: @jridgewell/sourcemap-codec x 5,723 ops/sec ±0.12% (98 runs sampled)
+decode: sourcemap-codec x 4,555 ops/sec ±0.09% (101 runs sampled)
+decode: source-map-0.6.1 x 437 ops/sec ±0.11% (93 runs sampled)
+decode: source-map-0.8.0 x 3,441 ops/sec ±0.15% (100 runs sampled)
+Fastest is decode: @jridgewell/sourcemap-codec
+
+Encode Memory Usage:
+@jridgewell/sourcemap-codec 638672 bytes
+sourcemap-codec 1109840 bytes
+source-map-0.6.1 1321224 bytes
+source-map-0.8.0 1324448 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Encode speed:
+encode: @jridgewell/sourcemap-codec x 6,801 ops/sec ±0.48% (98 runs sampled)
+encode: sourcemap-codec x 2,533 ops/sec ±0.13% (101 runs sampled)
+encode: source-map-0.6.1 x 2,248 ops/sec ±0.08% (100 runs sampled)
+encode: source-map-0.8.0 x 2,303 ops/sec ±0.15% (100 runs sampled)
+Fastest is encode: @jridgewell/sourcemap-codec
+```
+
+# License
+
+MIT
diff --git a/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
new file mode 100644
index 00000000..3dff3721
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
@@ -0,0 +1,164 @@
+const comma = ','.charCodeAt(0);
+const semicolon = ';'.charCodeAt(0);
+const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+const intToChar = new Uint8Array(64); // 64 possible chars.
+const charToInt = new Uint8Array(128); // z is 122 in ASCII
+for (let i = 0; i < chars.length; i++) {
+ const c = chars.charCodeAt(i);
+ intToChar[i] = c;
+ charToInt[c] = i;
+}
+// Provide a fallback for older environments.
+const td = typeof TextDecoder !== 'undefined'
+ ? /* #__PURE__ */ new TextDecoder()
+ : typeof Buffer !== 'undefined'
+ ? {
+ decode(buf) {
+ const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
+ return out.toString();
+ },
+ }
+ : {
+ decode(buf) {
+ let out = '';
+ for (let i = 0; i < buf.length; i++) {
+ out += String.fromCharCode(buf[i]);
+ }
+ return out;
+ },
+ };
+function decode(mappings) {
+ const state = new Int32Array(5);
+ const decoded = [];
+ let index = 0;
+ do {
+ const semi = indexOf(mappings, index);
+ const line = [];
+ let sorted = true;
+ let lastCol = 0;
+ state[0] = 0;
+ for (let i = index; i < semi; i++) {
+ let seg;
+ i = decodeInteger(mappings, i, state, 0); // genColumn
+ const col = state[0];
+ if (col < lastCol)
+ sorted = false;
+ lastCol = col;
+ if (hasMoreVlq(mappings, i, semi)) {
+ i = decodeInteger(mappings, i, state, 1); // sourcesIndex
+ i = decodeInteger(mappings, i, state, 2); // sourceLine
+ i = decodeInteger(mappings, i, state, 3); // sourceColumn
+ if (hasMoreVlq(mappings, i, semi)) {
+ i = decodeInteger(mappings, i, state, 4); // namesIndex
+ seg = [col, state[1], state[2], state[3], state[4]];
+ }
+ else {
+ seg = [col, state[1], state[2], state[3]];
+ }
+ }
+ else {
+ seg = [col];
+ }
+ line.push(seg);
+ }
+ if (!sorted)
+ sort(line);
+ decoded.push(line);
+ index = semi + 1;
+ } while (index <= mappings.length);
+ return decoded;
+}
+function indexOf(mappings, index) {
+ const idx = mappings.indexOf(';', index);
+ return idx === -1 ? mappings.length : idx;
+}
+function decodeInteger(mappings, pos, state, j) {
+ let value = 0;
+ let shift = 0;
+ let integer = 0;
+ do {
+ const c = mappings.charCodeAt(pos++);
+ integer = charToInt[c];
+ value |= (integer & 31) << shift;
+ shift += 5;
+ } while (integer & 32);
+ const shouldNegate = value & 1;
+ value >>>= 1;
+ if (shouldNegate) {
+ value = -0x80000000 | -value;
+ }
+ state[j] += value;
+ return pos;
+}
+function hasMoreVlq(mappings, i, length) {
+ if (i >= length)
+ return false;
+ return mappings.charCodeAt(i) !== comma;
+}
+function sort(line) {
+ line.sort(sortComparator);
+}
+function sortComparator(a, b) {
+ return a[0] - b[0];
+}
+function encode(decoded) {
+ const state = new Int32Array(5);
+ const bufLength = 1024 * 16;
+ const subLength = bufLength - 36;
+ const buf = new Uint8Array(bufLength);
+ const sub = buf.subarray(0, subLength);
+ let pos = 0;
+ let out = '';
+ for (let i = 0; i < decoded.length; i++) {
+ const line = decoded[i];
+ if (i > 0) {
+ if (pos === bufLength) {
+ out += td.decode(buf);
+ pos = 0;
+ }
+ buf[pos++] = semicolon;
+ }
+ if (line.length === 0)
+ continue;
+ state[0] = 0;
+ for (let j = 0; j < line.length; j++) {
+ const segment = line[j];
+ // We can push up to 5 ints, each int can take at most 7 chars, and we
+ // may push a comma.
+ if (pos > subLength) {
+ out += td.decode(sub);
+ buf.copyWithin(0, subLength, pos);
+ pos -= subLength;
+ }
+ if (j > 0)
+ buf[pos++] = comma;
+ pos = encodeInteger(buf, pos, state, segment, 0); // genColumn
+ if (segment.length === 1)
+ continue;
+ pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex
+ pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine
+ pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn
+ if (segment.length === 4)
+ continue;
+ pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex
+ }
+ }
+ return out + td.decode(buf.subarray(0, pos));
+}
+function encodeInteger(buf, pos, state, segment, j) {
+ const next = segment[j];
+ let num = next - state[j];
+ state[j] = next;
+ num = num < 0 ? (-num << 1) | 1 : num << 1;
+ do {
+ let clamped = num & 0b011111;
+ num >>>= 5;
+ if (num > 0)
+ clamped |= 0b100000;
+ buf[pos++] = intToChar[clamped];
+ } while (num > 0);
+ return pos;
+}
+
+export { decode, encode };
+//# sourceMappingURL=sourcemap-codec.mjs.map
diff --git a/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map
new file mode 100644
index 00000000..36d72490
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"sourcemap-codec.mjs","sources":["../src/sourcemap-codec.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js
new file mode 100644
index 00000000..bec92a9c
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js
@@ -0,0 +1,175 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.sourcemapCodec = {}));
+})(this, (function (exports) { 'use strict';
+
+ const comma = ','.charCodeAt(0);
+ const semicolon = ';'.charCodeAt(0);
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+ const intToChar = new Uint8Array(64); // 64 possible chars.
+ const charToInt = new Uint8Array(128); // z is 122 in ASCII
+ for (let i = 0; i < chars.length; i++) {
+ const c = chars.charCodeAt(i);
+ intToChar[i] = c;
+ charToInt[c] = i;
+ }
+ // Provide a fallback for older environments.
+ const td = typeof TextDecoder !== 'undefined'
+ ? /* #__PURE__ */ new TextDecoder()
+ : typeof Buffer !== 'undefined'
+ ? {
+ decode(buf) {
+ const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
+ return out.toString();
+ },
+ }
+ : {
+ decode(buf) {
+ let out = '';
+ for (let i = 0; i < buf.length; i++) {
+ out += String.fromCharCode(buf[i]);
+ }
+ return out;
+ },
+ };
+ function decode(mappings) {
+ const state = new Int32Array(5);
+ const decoded = [];
+ let index = 0;
+ do {
+ const semi = indexOf(mappings, index);
+ const line = [];
+ let sorted = true;
+ let lastCol = 0;
+ state[0] = 0;
+ for (let i = index; i < semi; i++) {
+ let seg;
+ i = decodeInteger(mappings, i, state, 0); // genColumn
+ const col = state[0];
+ if (col < lastCol)
+ sorted = false;
+ lastCol = col;
+ if (hasMoreVlq(mappings, i, semi)) {
+ i = decodeInteger(mappings, i, state, 1); // sourcesIndex
+ i = decodeInteger(mappings, i, state, 2); // sourceLine
+ i = decodeInteger(mappings, i, state, 3); // sourceColumn
+ if (hasMoreVlq(mappings, i, semi)) {
+ i = decodeInteger(mappings, i, state, 4); // namesIndex
+ seg = [col, state[1], state[2], state[3], state[4]];
+ }
+ else {
+ seg = [col, state[1], state[2], state[3]];
+ }
+ }
+ else {
+ seg = [col];
+ }
+ line.push(seg);
+ }
+ if (!sorted)
+ sort(line);
+ decoded.push(line);
+ index = semi + 1;
+ } while (index <= mappings.length);
+ return decoded;
+ }
+ function indexOf(mappings, index) {
+ const idx = mappings.indexOf(';', index);
+ return idx === -1 ? mappings.length : idx;
+ }
+ function decodeInteger(mappings, pos, state, j) {
+ let value = 0;
+ let shift = 0;
+ let integer = 0;
+ do {
+ const c = mappings.charCodeAt(pos++);
+ integer = charToInt[c];
+ value |= (integer & 31) << shift;
+ shift += 5;
+ } while (integer & 32);
+ const shouldNegate = value & 1;
+ value >>>= 1;
+ if (shouldNegate) {
+ value = -0x80000000 | -value;
+ }
+ state[j] += value;
+ return pos;
+ }
+ function hasMoreVlq(mappings, i, length) {
+ if (i >= length)
+ return false;
+ return mappings.charCodeAt(i) !== comma;
+ }
+ function sort(line) {
+ line.sort(sortComparator);
+ }
+ function sortComparator(a, b) {
+ return a[0] - b[0];
+ }
+ function encode(decoded) {
+ const state = new Int32Array(5);
+ const bufLength = 1024 * 16;
+ const subLength = bufLength - 36;
+ const buf = new Uint8Array(bufLength);
+ const sub = buf.subarray(0, subLength);
+ let pos = 0;
+ let out = '';
+ for (let i = 0; i < decoded.length; i++) {
+ const line = decoded[i];
+ if (i > 0) {
+ if (pos === bufLength) {
+ out += td.decode(buf);
+ pos = 0;
+ }
+ buf[pos++] = semicolon;
+ }
+ if (line.length === 0)
+ continue;
+ state[0] = 0;
+ for (let j = 0; j < line.length; j++) {
+ const segment = line[j];
+ // We can push up to 5 ints, each int can take at most 7 chars, and we
+ // may push a comma.
+ if (pos > subLength) {
+ out += td.decode(sub);
+ buf.copyWithin(0, subLength, pos);
+ pos -= subLength;
+ }
+ if (j > 0)
+ buf[pos++] = comma;
+ pos = encodeInteger(buf, pos, state, segment, 0); // genColumn
+ if (segment.length === 1)
+ continue;
+ pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex
+ pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine
+ pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn
+ if (segment.length === 4)
+ continue;
+ pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex
+ }
+ }
+ return out + td.decode(buf.subarray(0, pos));
+ }
+ function encodeInteger(buf, pos, state, segment, j) {
+ const next = segment[j];
+ let num = next - state[j];
+ state[j] = next;
+ num = num < 0 ? (-num << 1) | 1 : num << 1;
+ do {
+ let clamped = num & 0b011111;
+ num >>>= 5;
+ if (num > 0)
+ clamped |= 0b100000;
+ buf[pos++] = intToChar[clamped];
+ } while (num > 0);
+ return pos;
+ }
+
+ exports.decode = decode;
+ exports.encode = encode;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+}));
+//# sourceMappingURL=sourcemap-codec.umd.js.map
diff --git a/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map
new file mode 100644
index 00000000..a7a4628d
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"sourcemap-codec.umd.js","sources":["../src/sourcemap-codec.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts
new file mode 100644
index 00000000..410d3202
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts
@@ -0,0 +1,6 @@
+export declare type SourceMapSegment = [number] | [number, number, number, number] | [number, number, number, number, number];
+export declare type SourceMapLine = SourceMapSegment[];
+export declare type SourceMapMappings = SourceMapLine[];
+export declare function decode(mappings: string): SourceMapMappings;
+export declare function encode(decoded: SourceMapMappings): string;
+export declare function encode(decoded: Readonly): string;
diff --git a/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/package.json b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/package.json
new file mode 100644
index 00000000..59450728
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/package.json
@@ -0,0 +1,75 @@
+{
+ "name": "@jridgewell/sourcemap-codec",
+ "version": "1.4.14",
+ "description": "Encode/decode sourcemap mappings",
+ "keywords": [
+ "sourcemap",
+ "vlq"
+ ],
+ "main": "dist/sourcemap-codec.umd.js",
+ "module": "dist/sourcemap-codec.mjs",
+ "typings": "dist/types/sourcemap-codec.d.ts",
+ "files": [
+ "dist",
+ "src"
+ ],
+ "exports": {
+ ".": [
+ {
+ "types": "./dist/types/sourcemap-codec.d.ts",
+ "browser": "./dist/sourcemap-codec.umd.js",
+ "import": "./dist/sourcemap-codec.mjs",
+ "require": "./dist/sourcemap-codec.umd.js"
+ },
+ "./dist/sourcemap-codec.umd.js"
+ ],
+ "./package.json": "./package.json"
+ },
+ "scripts": {
+ "benchmark": "run-s build:rollup benchmark:*",
+ "benchmark:install": "cd benchmark && npm install",
+ "benchmark:only": "node --expose-gc benchmark/index.js",
+ "build": "run-s -n build:*",
+ "build:rollup": "rollup -c rollup.config.js",
+ "build:ts": "tsc --project tsconfig.build.json",
+ "lint": "run-s -n lint:*",
+ "lint:prettier": "npm run test:lint:prettier -- --write",
+ "lint:ts": "npm run test:lint:ts -- --fix",
+ "prebuild": "rm -rf dist",
+ "prepublishOnly": "npm run preversion",
+ "preversion": "run-s test build",
+ "pretest": "run-s build:rollup",
+ "test": "run-s -n test:lint test:only",
+ "test:debug": "mocha --inspect-brk",
+ "test:lint": "run-s -n test:lint:*",
+ "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'",
+ "test:lint:ts": "eslint '{src,test}/**/*.ts'",
+ "test:only": "mocha",
+ "test:coverage": "c8 mocha",
+ "test:watch": "mocha --watch"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jridgewell/sourcemap-codec.git"
+ },
+ "author": "Rich Harris",
+ "license": "MIT",
+ "devDependencies": {
+ "@rollup/plugin-typescript": "8.3.0",
+ "@types/node": "17.0.15",
+ "@typescript-eslint/eslint-plugin": "5.10.0",
+ "@typescript-eslint/parser": "5.10.0",
+ "benchmark": "2.1.4",
+ "c8": "7.11.2",
+ "eslint": "8.7.0",
+ "eslint-config-prettier": "8.3.0",
+ "mocha": "9.2.0",
+ "npm-run-all": "4.1.5",
+ "prettier": "2.5.1",
+ "rollup": "2.64.0",
+ "source-map": "0.6.1",
+ "source-map-js": "1.0.2",
+ "sourcemap-codec": "1.4.8",
+ "typescript": "4.5.4"
+ }
+}
diff --git a/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts
new file mode 100644
index 00000000..cafd90ef
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts
@@ -0,0 +1,198 @@
+export type SourceMapSegment =
+ | [number]
+ | [number, number, number, number]
+ | [number, number, number, number, number];
+export type SourceMapLine = SourceMapSegment[];
+export type SourceMapMappings = SourceMapLine[];
+
+const comma = ','.charCodeAt(0);
+const semicolon = ';'.charCodeAt(0);
+const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+const intToChar = new Uint8Array(64); // 64 possible chars.
+const charToInt = new Uint8Array(128); // z is 122 in ASCII
+
+for (let i = 0; i < chars.length; i++) {
+ const c = chars.charCodeAt(i);
+ intToChar[i] = c;
+ charToInt[c] = i;
+}
+
+// Provide a fallback for older environments.
+const td =
+ typeof TextDecoder !== 'undefined'
+ ? /* #__PURE__ */ new TextDecoder()
+ : typeof Buffer !== 'undefined'
+ ? {
+ decode(buf: Uint8Array) {
+ const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
+ return out.toString();
+ },
+ }
+ : {
+ decode(buf: Uint8Array) {
+ let out = '';
+ for (let i = 0; i < buf.length; i++) {
+ out += String.fromCharCode(buf[i]);
+ }
+ return out;
+ },
+ };
+
+export function decode(mappings: string): SourceMapMappings {
+ const state: [number, number, number, number, number] = new Int32Array(5) as any;
+ const decoded: SourceMapMappings = [];
+
+ let index = 0;
+ do {
+ const semi = indexOf(mappings, index);
+ const line: SourceMapLine = [];
+ let sorted = true;
+ let lastCol = 0;
+ state[0] = 0;
+
+ for (let i = index; i < semi; i++) {
+ let seg: SourceMapSegment;
+
+ i = decodeInteger(mappings, i, state, 0); // genColumn
+ const col = state[0];
+ if (col < lastCol) sorted = false;
+ lastCol = col;
+
+ if (hasMoreVlq(mappings, i, semi)) {
+ i = decodeInteger(mappings, i, state, 1); // sourcesIndex
+ i = decodeInteger(mappings, i, state, 2); // sourceLine
+ i = decodeInteger(mappings, i, state, 3); // sourceColumn
+
+ if (hasMoreVlq(mappings, i, semi)) {
+ i = decodeInteger(mappings, i, state, 4); // namesIndex
+ seg = [col, state[1], state[2], state[3], state[4]];
+ } else {
+ seg = [col, state[1], state[2], state[3]];
+ }
+ } else {
+ seg = [col];
+ }
+
+ line.push(seg);
+ }
+
+ if (!sorted) sort(line);
+ decoded.push(line);
+ index = semi + 1;
+ } while (index <= mappings.length);
+
+ return decoded;
+}
+
+function indexOf(mappings: string, index: number): number {
+ const idx = mappings.indexOf(';', index);
+ return idx === -1 ? mappings.length : idx;
+}
+
+function decodeInteger(mappings: string, pos: number, state: SourceMapSegment, j: number): number {
+ let value = 0;
+ let shift = 0;
+ let integer = 0;
+
+ do {
+ const c = mappings.charCodeAt(pos++);
+ integer = charToInt[c];
+ value |= (integer & 31) << shift;
+ shift += 5;
+ } while (integer & 32);
+
+ const shouldNegate = value & 1;
+ value >>>= 1;
+
+ if (shouldNegate) {
+ value = -0x80000000 | -value;
+ }
+
+ state[j] += value;
+ return pos;
+}
+
+function hasMoreVlq(mappings: string, i: number, length: number): boolean {
+ if (i >= length) return false;
+ return mappings.charCodeAt(i) !== comma;
+}
+
+function sort(line: SourceMapSegment[]) {
+ line.sort(sortComparator);
+}
+
+function sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {
+ return a[0] - b[0];
+}
+
+export function encode(decoded: SourceMapMappings): string;
+export function encode(decoded: Readonly): string;
+export function encode(decoded: Readonly): string {
+ const state: [number, number, number, number, number] = new Int32Array(5) as any;
+ const bufLength = 1024 * 16;
+ const subLength = bufLength - 36;
+ const buf = new Uint8Array(bufLength);
+ const sub = buf.subarray(0, subLength);
+ let pos = 0;
+ let out = '';
+
+ for (let i = 0; i < decoded.length; i++) {
+ const line = decoded[i];
+ if (i > 0) {
+ if (pos === bufLength) {
+ out += td.decode(buf);
+ pos = 0;
+ }
+ buf[pos++] = semicolon;
+ }
+ if (line.length === 0) continue;
+
+ state[0] = 0;
+
+ for (let j = 0; j < line.length; j++) {
+ const segment = line[j];
+ // We can push up to 5 ints, each int can take at most 7 chars, and we
+ // may push a comma.
+ if (pos > subLength) {
+ out += td.decode(sub);
+ buf.copyWithin(0, subLength, pos);
+ pos -= subLength;
+ }
+ if (j > 0) buf[pos++] = comma;
+
+ pos = encodeInteger(buf, pos, state, segment, 0); // genColumn
+
+ if (segment.length === 1) continue;
+ pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex
+ pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine
+ pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn
+
+ if (segment.length === 4) continue;
+ pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex
+ }
+ }
+
+ return out + td.decode(buf.subarray(0, pos));
+}
+
+function encodeInteger(
+ buf: Uint8Array,
+ pos: number,
+ state: SourceMapSegment,
+ segment: SourceMapSegment,
+ j: number,
+): number {
+ const next = segment[j];
+ let num = next - state[j];
+ state[j] = next;
+
+ num = num < 0 ? (-num << 1) | 1 : num << 1;
+ do {
+ let clamped = num & 0b011111;
+ num >>>= 5;
+ if (num > 0) clamped |= 0b100000;
+ buf[pos++] = intToChar[clamped];
+ } while (num > 0);
+
+ return pos;
+}
diff --git a/node_modules/@jridgewell/trace-mapping/package.json b/node_modules/@jridgewell/trace-mapping/package.json
new file mode 100644
index 00000000..9fcc07f4
--- /dev/null
+++ b/node_modules/@jridgewell/trace-mapping/package.json
@@ -0,0 +1,75 @@
+{
+ "name": "@jridgewell/trace-mapping",
+ "version": "0.3.18",
+ "description": "Trace the original position through a source map",
+ "keywords": [
+ "source",
+ "map"
+ ],
+ "main": "dist/trace-mapping.umd.js",
+ "module": "dist/trace-mapping.mjs",
+ "types": "dist/types/trace-mapping.d.ts",
+ "files": [
+ "dist"
+ ],
+ "exports": {
+ ".": [
+ {
+ "types": "./dist/types/trace-mapping.d.ts",
+ "browser": "./dist/trace-mapping.umd.js",
+ "require": "./dist/trace-mapping.umd.js",
+ "import": "./dist/trace-mapping.mjs"
+ },
+ "./dist/trace-mapping.umd.js"
+ ],
+ "./package.json": "./package.json"
+ },
+ "author": "Justin Ridgewell ",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jridgewell/trace-mapping.git"
+ },
+ "license": "MIT",
+ "scripts": {
+ "benchmark": "run-s build:rollup benchmark:*",
+ "benchmark:install": "cd benchmark && npm install",
+ "benchmark:only": "node --expose-gc benchmark/index.mjs",
+ "build": "run-s -n build:*",
+ "build:rollup": "rollup -c rollup.config.js",
+ "build:ts": "tsc --project tsconfig.build.json",
+ "lint": "run-s -n lint:*",
+ "lint:prettier": "npm run test:lint:prettier -- --write",
+ "lint:ts": "npm run test:lint:ts -- --fix",
+ "prebuild": "rm -rf dist",
+ "prepublishOnly": "npm run preversion",
+ "preversion": "run-s test build",
+ "test": "run-s -n test:lint test:only",
+ "test:debug": "ava debug",
+ "test:lint": "run-s -n test:lint:*",
+ "test:lint:prettier": "prettier --check '{src,test}/**/*.ts' '**/*.md'",
+ "test:lint:ts": "eslint '{src,test}/**/*.ts'",
+ "test:only": "c8 ava",
+ "test:watch": "ava --watch"
+ },
+ "devDependencies": {
+ "@rollup/plugin-typescript": "8.5.0",
+ "@typescript-eslint/eslint-plugin": "5.39.0",
+ "@typescript-eslint/parser": "5.39.0",
+ "ava": "4.3.3",
+ "benchmark": "2.1.4",
+ "c8": "7.12.0",
+ "esbuild": "0.15.10",
+ "eslint": "8.25.0",
+ "eslint-config-prettier": "8.5.0",
+ "eslint-plugin-no-only-tests": "3.0.0",
+ "npm-run-all": "4.1.5",
+ "prettier": "2.7.1",
+ "rollup": "2.79.1",
+ "tsx": "3.10.1",
+ "typescript": "4.8.4"
+ },
+ "dependencies": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
+ }
+}
diff --git a/node_modules/@trysound/sax/LICENSE b/node_modules/@trysound/sax/LICENSE
new file mode 100644
index 00000000..19129e31
--- /dev/null
+++ b/node_modules/@trysound/sax/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/@trysound/sax/README.md b/node_modules/@trysound/sax/README.md
new file mode 100644
index 00000000..c43d2ac2
--- /dev/null
+++ b/node_modules/@trysound/sax/README.md
@@ -0,0 +1,202 @@
+# svg/sax
+
+A maintained fork of [sax-js](https://github.com/isaacs/sax-js) sax-style parser for XML and HTML.
+
+Designed with [node](http://nodejs.org/) in mind, but should work fine in
+the browser or other CommonJS implementations.
+
+## What This Is
+
+* A very simple tool to parse through an XML string.
+* A stepping stone to a streaming HTML parser.
+* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML
+ docs.
+
+## What This Is (probably) Not
+
+* An HTML Parser - That's a fine goal, but this isn't it. It's just
+ XML.
+* A DOM Builder - You can use it to build an object model out of XML,
+ but it doesn't do that out of the box.
+* XSLT - No DOM = no querying.
+* 100% Compliant with (some other SAX implementation) - Most SAX
+ implementations are in Java and do a lot more than this does.
+* An XML Validator - It does a little validation when in strict mode, but
+ not much.
+* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic
+ masochism.
+* A DTD-aware Thing - Fetching DTDs is a much bigger job.
+
+## Regarding `Hello, world!').close();
+```
+
+
+## Arguments
+
+Pass the following arguments to the parser function. All are optional.
+
+`strict` - Boolean. Whether or not to be a jerk. Default: `false`.
+
+`opt` - Object bag of settings regarding string formatting. All default to `false`.
+
+Settings supported:
+
+* `trim` - Boolean. Whether or not to trim text and comment nodes.
+* `normalize` - Boolean. If true, then turn any whitespace into a single
+ space.
+* `lowercase` - Boolean. If true, then lowercase tag names and attribute names
+ in loose mode, rather than uppercasing them.
+* `xmlns` - Boolean. If true, then namespaces are supported.
+* `position` - Boolean. If false, then don't track line/col/position.
+* `strictEntities` - Boolean. If true, only parse [predefined XML
+ entities](http://www.w3.org/TR/REC-xml/#sec-predefined-ent)
+ (`&`, `'`, `>`, `<`, and `"`)
+
+## Methods
+
+`write` - Write bytes onto the stream. You don't have to do this all at
+once. You can keep writing as much as you want.
+
+`close` - Close the stream. Once closed, no more data may be written until
+it is done processing the buffer, which is signaled by the `end` event.
+
+`resume` - To gracefully handle errors, assign a listener to the `error`
+event. Then, when the error is taken care of, you can call `resume` to
+continue parsing. Otherwise, the parser will not continue while in an error
+state.
+
+## Members
+
+At all times, the parser object will have the following members:
+
+`line`, `column`, `position` - Indications of the position in the XML
+document where the parser currently is looking.
+
+`startTagPosition` - Indicates the position where the current tag starts.
+
+`closed` - Boolean indicating whether or not the parser can be written to.
+If it's `true`, then wait for the `ready` event to write again.
+
+`strict` - Boolean indicating whether or not the parser is a jerk.
+
+`opt` - Any options passed into the constructor.
+
+`tag` - The current tag being dealt with.
+
+And a bunch of other stuff that you probably shouldn't touch.
+
+## Events
+
+All events emit with a single argument. To listen to an event, assign a
+function to `on`. Functions get executed in the this-context of
+the parser object. The list of supported events are also in the exported
+`EVENTS` array.
+
+`error` - Indication that something bad happened. The error will be hanging
+out on `parser.error`, and must be deleted before parsing can continue. By
+listening to this event, you can keep an eye on that kind of stuff. Note:
+this happens *much* more in strict mode. Argument: instance of `Error`.
+
+`text` - Text node. Argument: string of text.
+
+`doctype` - The ``. Argument:
+object with `name` and `body` members. Attributes are not parsed, as
+processing instructions have implementation dependent semantics.
+
+`sgmldeclaration` - Random SGML declarations. Stuff like ``
+would trigger this kind of event. This is a weird thing to support, so it
+might go away at some point. SAX isn't intended to be used to parse SGML,
+after all.
+
+`opentagstart` - Emitted immediately when the tag name is available,
+but before any attributes are encountered. Argument: object with a
+`name` field and an empty `attributes` set. Note that this is the
+same object that will later be emitted in the `opentag` event.
+
+`opentag` - An opening tag. Argument: object with `name` and `attributes`.
+In non-strict mode, tag names are uppercased, unless the `lowercase`
+option is set. If the `xmlns` option is set, then it will contain
+namespace binding information on the `ns` member, and will have a
+`local`, `prefix`, and `uri` member.
+
+`closetag` - A closing tag. In loose mode, tags are auto-closed if their
+parent closes. In strict mode, well-formedness is enforced. Note that
+self-closing tags will have `closeTag` emitted immediately after `openTag`.
+Argument: tag name.
+
+`attribute` - An attribute node. Argument: object with `name` and `value`.
+In non-strict mode, attribute names are uppercased, unless the `lowercase`
+option is set. If the `xmlns` option is set, it will also contains namespace
+information.
+
+`comment` - A comment node. Argument: the string of the comment.
+
+`opencdata` - The opening tag of a ``) of a `` tags trigger a `"script"`
+event, and their contents are not checked for special xml characters.
+If you pass `noscript: true`, then this behavior is suppressed.
+
+## Reporting Problems
+
+It's best to write a failing test if you find an issue. I will always
+accept pull requests with failing tests if they demonstrate intended
+behavior, but it is very hard to figure out what issue you're describing
+without a test. Writing a test is also the best way for you yourself
+to figure out if you really understand the issue you think you have with
+sax-js.
diff --git a/node_modules/@trysound/sax/lib/sax.js b/node_modules/@trysound/sax/lib/sax.js
new file mode 100644
index 00000000..5416e88a
--- /dev/null
+++ b/node_modules/@trysound/sax/lib/sax.js
@@ -0,0 +1,1413 @@
+;(function (sax) { // wrapper for non-node envs
+ sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }
+ sax.SAXParser = SAXParser
+
+ // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.
+ // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),
+ // since that's the earliest that a buffer overrun could occur. This way, checks are
+ // as rare as required, but as often as necessary to ensure never crossing this bound.
+ // Furthermore, buffers are only tested at most once per write(), so passing a very
+ // large string into write() might have undesirable effects, but this is manageable by
+ // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme
+ // edge case, result in creating at most one complete copy of the string passed in.
+ // Set to Infinity to have unlimited buffers.
+ sax.MAX_BUFFER_LENGTH = 64 * 1024
+
+ var buffers = [
+ 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',
+ 'procInstName', 'procInstBody', 'entity', 'attribName',
+ 'attribValue', 'cdata', 'script'
+ ]
+
+ sax.EVENTS = [
+ 'text',
+ 'processinginstruction',
+ 'sgmldeclaration',
+ 'doctype',
+ 'comment',
+ 'opentagstart',
+ 'attribute',
+ 'opentag',
+ 'closetag',
+ 'opencdata',
+ 'cdata',
+ 'closecdata',
+ 'error',
+ 'end',
+ 'ready',
+ 'script',
+ 'opennamespace',
+ 'closenamespace'
+ ]
+
+ function SAXParser (strict, opt) {
+ if (!(this instanceof SAXParser)) {
+ return new SAXParser(strict, opt)
+ }
+
+ var parser = this
+ clearBuffers(parser)
+ parser.q = parser.c = ''
+ parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH
+ parser.opt = opt || {}
+ parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags
+ parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'
+ parser.tags = []
+ parser.closed = parser.closedRoot = parser.sawRoot = false
+ parser.tag = parser.error = null
+ parser.strict = !!strict
+ parser.noscript = !!(strict || parser.opt.noscript)
+ parser.state = S.BEGIN
+ parser.strictEntities = parser.opt.strictEntities
+ parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)
+ parser.attribList = []
+
+ // namespaces form a prototype chain.
+ // it always points at the current tag,
+ // which protos to its parent tag.
+ if (parser.opt.xmlns) {
+ parser.ns = Object.create(rootNS)
+ }
+
+ // mostly just for error reporting
+ parser.trackPosition = parser.opt.position !== false
+ if (parser.trackPosition) {
+ parser.position = parser.line = parser.column = 0
+ }
+ emit(parser, 'onready')
+ }
+
+ if (!Object.create) {
+ Object.create = function (o) {
+ function F () {}
+ F.prototype = o
+ var newf = new F()
+ return newf
+ }
+ }
+
+ if (!Object.keys) {
+ Object.keys = function (o) {
+ var a = []
+ for (var i in o) if (o.hasOwnProperty(i)) a.push(i)
+ return a
+ }
+ }
+
+ function checkBufferLength (parser) {
+ var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)
+ var maxActual = 0
+ for (var i = 0, l = buffers.length; i < l; i++) {
+ var len = parser[buffers[i]].length
+ if (len > maxAllowed) {
+ // Text/cdata nodes can get big, and since they're buffered,
+ // we can get here under normal conditions.
+ // Avoid issues by emitting the text node now,
+ // so at least it won't get any bigger.
+ switch (buffers[i]) {
+ case 'textNode':
+ closeText(parser)
+ break
+
+ case 'cdata':
+ emitNode(parser, 'oncdata', parser.cdata)
+ parser.cdata = ''
+ break
+
+ case 'script':
+ emitNode(parser, 'onscript', parser.script)
+ parser.script = ''
+ break
+
+ default:
+ error(parser, 'Max buffer length exceeded: ' + buffers[i])
+ }
+ }
+ maxActual = Math.max(maxActual, len)
+ }
+ // schedule the next check for the earliest possible buffer overrun.
+ var m = sax.MAX_BUFFER_LENGTH - maxActual
+ parser.bufferCheckPosition = m + parser.position
+ }
+
+ function clearBuffers (parser) {
+ for (var i = 0, l = buffers.length; i < l; i++) {
+ parser[buffers[i]] = ''
+ }
+ }
+
+ function flushBuffers (parser) {
+ closeText(parser)
+ if (parser.cdata !== '') {
+ emitNode(parser, 'oncdata', parser.cdata)
+ parser.cdata = ''
+ }
+ if (parser.script !== '') {
+ emitNode(parser, 'onscript', parser.script)
+ parser.script = ''
+ }
+ }
+
+ SAXParser.prototype = {
+ end: function () { end(this) },
+ write: write,
+ resume: function () { this.error = null; return this },
+ close: function () { return this.write(null) },
+ flush: function () { flushBuffers(this) }
+ }
+
+ // this really needs to be replaced with character classes.
+ // XML allows all manner of ridiculous numbers and digits.
+ var CDATA = '[CDATA['
+ var DOCTYPE = 'DOCTYPE'
+ var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'
+ var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'
+ var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }
+
+ // http://www.w3.org/TR/REC-xml/#NT-NameStartChar
+ // This implementation works on strings, a single character at a time
+ // as such, it cannot ever support astral-plane characters (10000-EFFFF)
+ // without a significant breaking change to either this parser, or the
+ // JavaScript language. Implementation of an emoji-capable xml parser
+ // is left as an exercise for the reader.
+ var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/
+
+ var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/
+
+ var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/
+ var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/
+
+ function isWhitespace (c) {
+ return c === ' ' || c === '\n' || c === '\r' || c === '\t'
+ }
+
+ function isQuote (c) {
+ return c === '"' || c === '\''
+ }
+
+ function isAttribEnd (c) {
+ return c === '>' || isWhitespace(c)
+ }
+
+ function isMatch (regex, c) {
+ return regex.test(c)
+ }
+
+ function notMatch (regex, c) {
+ return !isMatch(regex, c)
+ }
+
+ var S = 0
+ sax.STATE = {
+ BEGIN: S++, // leading byte order mark or whitespace
+ BEGIN_WHITESPACE: S++, // leading whitespace
+ TEXT: S++, // general stuff
+ TEXT_ENTITY: S++, // & and such.
+ OPEN_WAKA: S++, // <
+ SGML_DECL: S++, //
+ SCRIPT: S++, // ";
+const handler = new DomHandler((error, dom) => {
+ if (error) {
+ // Handle error
+ } else {
+ // Parsing completed, do something
+ console.log(dom);
+ }
+});
+const parser = new Parser(handler);
+parser.write(rawHtml);
+parser.end();
+```
+
+Output:
+
+```javascript
+[
+ {
+ data: "Xyz ",
+ type: "text",
+ },
+ {
+ type: "script",
+ name: "script",
+ attribs: {
+ language: "javascript",
+ },
+ children: [
+ {
+ data: "var foo = '';<",
+ type: "text",
+ },
+ ],
+ },
+ {
+ data: "
+
+
+
+
+
+```
+
+## Top level API
+
+![API map](https://cdn.rawgit.com/csstree/csstree/aaf327e/docs/api-map.svg)
+
+## License
+
+MIT
diff --git a/node_modules/css-tree/cjs/convertor/create.cjs b/node_modules/css-tree/cjs/convertor/create.cjs
new file mode 100644
index 00000000..55c655b2
--- /dev/null
+++ b/node_modules/css-tree/cjs/convertor/create.cjs
@@ -0,0 +1,32 @@
+'use strict';
+
+const List = require('../utils/List.cjs');
+
+function createConvertor(walk) {
+ return {
+ fromPlainObject(ast) {
+ walk(ast, {
+ enter(node) {
+ if (node.children && node.children instanceof List.List === false) {
+ node.children = new List.List().fromArray(node.children);
+ }
+ }
+ });
+
+ return ast;
+ },
+ toPlainObject(ast) {
+ walk(ast, {
+ leave(node) {
+ if (node.children && node.children instanceof List.List) {
+ node.children = node.children.toArray();
+ }
+ }
+ });
+
+ return ast;
+ }
+ };
+}
+
+exports.createConvertor = createConvertor;
diff --git a/node_modules/css-tree/cjs/convertor/index.cjs b/node_modules/css-tree/cjs/convertor/index.cjs
new file mode 100644
index 00000000..66542785
--- /dev/null
+++ b/node_modules/css-tree/cjs/convertor/index.cjs
@@ -0,0 +1,8 @@
+'use strict';
+
+const create = require('./create.cjs');
+const index$1 = require('../walker/index.cjs');
+
+const index = create.createConvertor(index$1);
+
+module.exports = index;
diff --git a/node_modules/css-tree/cjs/data-patch.cjs b/node_modules/css-tree/cjs/data-patch.cjs
new file mode 100644
index 00000000..9103ea4c
--- /dev/null
+++ b/node_modules/css-tree/cjs/data-patch.cjs
@@ -0,0 +1,7 @@
+'use strict';
+
+const patch = require('../data/patch.json');
+
+const patch$1 = patch;
+
+module.exports = patch$1;
diff --git a/node_modules/css-tree/cjs/data.cjs b/node_modules/css-tree/cjs/data.cjs
new file mode 100644
index 00000000..3ef8afdb
--- /dev/null
+++ b/node_modules/css-tree/cjs/data.cjs
@@ -0,0 +1,99 @@
+'use strict';
+
+const dataPatch = require('./data-patch.cjs');
+
+const mdnAtrules = require('mdn-data/css/at-rules.json');
+const mdnProperties = require('mdn-data/css/properties.json');
+const mdnSyntaxes = require('mdn-data/css/syntaxes.json');
+
+const extendSyntax = /^\s*\|\s*/;
+
+function preprocessAtrules(dict) {
+ const result = Object.create(null);
+
+ for (const atruleName in dict) {
+ const atrule = dict[atruleName];
+ let descriptors = null;
+
+ if (atrule.descriptors) {
+ descriptors = Object.create(null);
+
+ for (const descriptor in atrule.descriptors) {
+ descriptors[descriptor] = atrule.descriptors[descriptor].syntax;
+ }
+ }
+
+ result[atruleName.substr(1)] = {
+ prelude: atrule.syntax.trim().replace(/\{(.|\s)+\}/, '').match(/^@\S+\s+([^;\{]*)/)[1].trim() || null,
+ descriptors
+ };
+ }
+
+ return result;
+}
+
+function patchDictionary(dict, patchDict) {
+ const result = {};
+
+ // copy all syntaxes for an original dict
+ for (const key in dict) {
+ result[key] = dict[key].syntax || dict[key];
+ }
+
+ // apply a patch
+ for (const key in patchDict) {
+ if (key in dict) {
+ if (patchDict[key].syntax) {
+ result[key] = extendSyntax.test(patchDict[key].syntax)
+ ? result[key] + ' ' + patchDict[key].syntax.trim()
+ : patchDict[key].syntax;
+ } else {
+ delete result[key];
+ }
+ } else {
+ if (patchDict[key].syntax) {
+ result[key] = patchDict[key].syntax.replace(extendSyntax, '');
+ }
+ }
+ }
+
+ return result;
+}
+
+function patchAtrules(dict, patchDict) {
+ const result = {};
+
+ // copy all syntaxes for an original dict
+ for (const key in dict) {
+ const atrulePatch = patchDict[key] || {};
+
+ result[key] = {
+ prelude: key in patchDict && 'prelude' in atrulePatch
+ ? atrulePatch.prelude
+ : dict[key].prelude || null,
+ descriptors: patchDictionary(dict[key].descriptors || {}, atrulePatch.descriptors || {})
+ };
+ }
+
+ // apply a patch
+ for (const key in patchDict) {
+ if (!hasOwnProperty.call(dict, key)) {
+ const atrulePatch = patchDict[key] || {};
+
+ result[key] = {
+ prelude: atrulePatch.prelude || null,
+ descriptors: atrulePatch.descriptors && patchDictionary({}, atrulePatch.descriptors)
+ };
+ }
+ }
+
+ return result;
+}
+
+const definitions = {
+ types: patchDictionary(mdnSyntaxes, dataPatch.types),
+ atrules: patchAtrules(preprocessAtrules(mdnAtrules), dataPatch.atrules),
+ properties: patchDictionary(mdnProperties, dataPatch.properties)
+};
+
+module.exports = definitions;
diff --git a/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs b/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs
new file mode 100644
index 00000000..d24e7ced
--- /dev/null
+++ b/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs
@@ -0,0 +1,16 @@
+'use strict';
+
+const createCustomError = require('../utils/create-custom-error.cjs');
+
+function SyntaxError(message, input, offset) {
+ return Object.assign(createCustomError.createCustomError('SyntaxError', message), {
+ input,
+ offset,
+ rawMessage: message,
+ message: message + '\n' +
+ ' ' + input + '\n' +
+ '--' + new Array((offset || input.length) + 1).join('-') + '^'
+ });
+}
+
+exports.SyntaxError = SyntaxError;
diff --git a/node_modules/css-tree/cjs/definition-syntax/generate.cjs b/node_modules/css-tree/cjs/definition-syntax/generate.cjs
new file mode 100644
index 00000000..785af062
--- /dev/null
+++ b/node_modules/css-tree/cjs/definition-syntax/generate.cjs
@@ -0,0 +1,135 @@
+'use strict';
+
+function noop(value) {
+ return value;
+}
+
+function generateMultiplier(multiplier) {
+ const { min, max, comma } = multiplier;
+
+ if (min === 0 && max === 0) {
+ return comma ? '#?' : '*';
+ }
+
+ if (min === 0 && max === 1) {
+ return '?';
+ }
+
+ if (min === 1 && max === 0) {
+ return comma ? '#' : '+';
+ }
+
+ if (min === 1 && max === 1) {
+ return '';
+ }
+
+ return (
+ (comma ? '#' : '') +
+ (min === max
+ ? '{' + min + '}'
+ : '{' + min + ',' + (max !== 0 ? max : '') + '}'
+ )
+ );
+}
+
+function generateTypeOpts(node) {
+ switch (node.type) {
+ case 'Range':
+ return (
+ ' [' +
+ (node.min === null ? '-∞' : node.min) +
+ ',' +
+ (node.max === null ? '∞' : node.max) +
+ ']'
+ );
+
+ default:
+ throw new Error('Unknown node type `' + node.type + '`');
+ }
+}
+
+function generateSequence(node, decorate, forceBraces, compact) {
+ const combinator = node.combinator === ' ' || compact ? node.combinator : ' ' + node.combinator + ' ';
+ const result = node.terms
+ .map(term => internalGenerate(term, decorate, forceBraces, compact))
+ .join(combinator);
+
+ if (node.explicit || forceBraces) {
+ return (compact || result[0] === ',' ? '[' : '[ ') + result + (compact ? ']' : ' ]');
+ }
+
+ return result;
+}
+
+function internalGenerate(node, decorate, forceBraces, compact) {
+ let result;
+
+ switch (node.type) {
+ case 'Group':
+ result =
+ generateSequence(node, decorate, forceBraces, compact) +
+ (node.disallowEmpty ? '!' : '');
+ break;
+
+ case 'Multiplier':
+ // return since node is a composition
+ return (
+ internalGenerate(node.term, decorate, forceBraces, compact) +
+ decorate(generateMultiplier(node), node)
+ );
+
+ case 'Type':
+ result = '<' + node.name + (node.opts ? decorate(generateTypeOpts(node.opts), node.opts) : '') + '>';
+ break;
+
+ case 'Property':
+ result = '<\'' + node.name + '\'>';
+ break;
+
+ case 'Keyword':
+ result = node.name;
+ break;
+
+ case 'AtKeyword':
+ result = '@' + node.name;
+ break;
+
+ case 'Function':
+ result = node.name + '(';
+ break;
+
+ case 'String':
+ case 'Token':
+ result = node.value;
+ break;
+
+ case 'Comma':
+ result = ',';
+ break;
+
+ default:
+ throw new Error('Unknown node type `' + node.type + '`');
+ }
+
+ return decorate(result, node);
+}
+
+function generate(node, options) {
+ let decorate = noop;
+ let forceBraces = false;
+ let compact = false;
+
+ if (typeof options === 'function') {
+ decorate = options;
+ } else if (options) {
+ forceBraces = Boolean(options.forceBraces);
+ compact = Boolean(options.compact);
+ if (typeof options.decorate === 'function') {
+ decorate = options.decorate;
+ }
+ }
+
+ return internalGenerate(node, decorate, forceBraces, compact);
+}
+
+exports.generate = generate;
diff --git a/node_modules/css-tree/cjs/definition-syntax/index.cjs b/node_modules/css-tree/cjs/definition-syntax/index.cjs
new file mode 100644
index 00000000..0afb505c
--- /dev/null
+++ b/node_modules/css-tree/cjs/definition-syntax/index.cjs
@@ -0,0 +1,13 @@
+'use strict';
+
+const SyntaxError = require('./SyntaxError.cjs');
+const generate = require('./generate.cjs');
+const parse = require('./parse.cjs');
+const walk = require('./walk.cjs');
+
+
+
+exports.SyntaxError = SyntaxError.SyntaxError;
+exports.generate = generate.generate;
+exports.parse = parse.parse;
+exports.walk = walk.walk;
diff --git a/node_modules/css-tree/cjs/definition-syntax/parse.cjs b/node_modules/css-tree/cjs/definition-syntax/parse.cjs
new file mode 100644
index 00000000..53eee015
--- /dev/null
+++ b/node_modules/css-tree/cjs/definition-syntax/parse.cjs
@@ -0,0 +1,588 @@
+'use strict';
+
+const tokenizer = require('./tokenizer.cjs');
+
+const TAB = 9;
+const N = 10;
+const F = 12;
+const R = 13;
+const SPACE = 32;
+const EXCLAMATIONMARK = 33; // !
+const NUMBERSIGN = 35; // #
+const AMPERSAND = 38; // &
+const APOSTROPHE = 39; // '
+const LEFTPARENTHESIS = 40; // (
+const RIGHTPARENTHESIS = 41; // )
+const ASTERISK = 42; // *
+const PLUSSIGN = 43; // +
+const COMMA = 44; // ,
+const HYPERMINUS = 45; // -
+const LESSTHANSIGN = 60; // <
+const GREATERTHANSIGN = 62; // >
+const QUESTIONMARK = 63; // ?
+const COMMERCIALAT = 64; // @
+const LEFTSQUAREBRACKET = 91; // [
+const RIGHTSQUAREBRACKET = 93; // ]
+const LEFTCURLYBRACKET = 123; // {
+const VERTICALLINE = 124; // |
+const RIGHTCURLYBRACKET = 125; // }
+const INFINITY = 8734; // ∞
+const NAME_CHAR = new Uint8Array(128).map((_, idx) =>
+ /[a-zA-Z0-9\-]/.test(String.fromCharCode(idx)) ? 1 : 0
+);
+const COMBINATOR_PRECEDENCE = {
+ ' ': 1,
+ '&&': 2,
+ '||': 3,
+ '|': 4
+};
+
+function scanSpaces(tokenizer) {
+ return tokenizer.substringToPos(
+ tokenizer.findWsEnd(tokenizer.pos)
+ );
+}
+
+function scanWord(tokenizer) {
+ let end = tokenizer.pos;
+
+ for (; end < tokenizer.str.length; end++) {
+ const code = tokenizer.str.charCodeAt(end);
+ if (code >= 128 || NAME_CHAR[code] === 0) {
+ break;
+ }
+ }
+
+ if (tokenizer.pos === end) {
+ tokenizer.error('Expect a keyword');
+ }
+
+ return tokenizer.substringToPos(end);
+}
+
+function scanNumber(tokenizer) {
+ let end = tokenizer.pos;
+
+ for (; end < tokenizer.str.length; end++) {
+ const code = tokenizer.str.charCodeAt(end);
+ if (code < 48 || code > 57) {
+ break;
+ }
+ }
+
+ if (tokenizer.pos === end) {
+ tokenizer.error('Expect a number');
+ }
+
+ return tokenizer.substringToPos(end);
+}
+
+function scanString(tokenizer) {
+ const end = tokenizer.str.indexOf('\'', tokenizer.pos + 1);
+
+ if (end === -1) {
+ tokenizer.pos = tokenizer.str.length;
+ tokenizer.error('Expect an apostrophe');
+ }
+
+ return tokenizer.substringToPos(end + 1);
+}
+
+function readMultiplierRange(tokenizer) {
+ let min = null;
+ let max = null;
+
+ tokenizer.eat(LEFTCURLYBRACKET);
+
+ min = scanNumber(tokenizer);
+
+ if (tokenizer.charCode() === COMMA) {
+ tokenizer.pos++;
+ if (tokenizer.charCode() !== RIGHTCURLYBRACKET) {
+ max = scanNumber(tokenizer);
+ }
+ } else {
+ max = min;
+ }
+
+ tokenizer.eat(RIGHTCURLYBRACKET);
+
+ return {
+ min: Number(min),
+ max: max ? Number(max) : 0
+ };
+}
+
+function readMultiplier(tokenizer) {
+ let range = null;
+ let comma = false;
+
+ switch (tokenizer.charCode()) {
+ case ASTERISK:
+ tokenizer.pos++;
+
+ range = {
+ min: 0,
+ max: 0
+ };
+
+ break;
+
+ case PLUSSIGN:
+ tokenizer.pos++;
+
+ range = {
+ min: 1,
+ max: 0
+ };
+
+ break;
+
+ case QUESTIONMARK:
+ tokenizer.pos++;
+
+ range = {
+ min: 0,
+ max: 1
+ };
+
+ break;
+
+ case NUMBERSIGN:
+ tokenizer.pos++;
+
+ comma = true;
+
+ if (tokenizer.charCode() === LEFTCURLYBRACKET) {
+ range = readMultiplierRange(tokenizer);
+ } else if (tokenizer.charCode() === QUESTIONMARK) {
+ // https://www.w3.org/TR/css-values-4/#component-multipliers
+ // > the # and ? multipliers may be stacked as #?
+ // In this case just treat "#?" as a single multiplier
+ // { min: 0, max: 0, comma: true }
+ tokenizer.pos++;
+ range = {
+ min: 0,
+ max: 0
+ };
+ } else {
+ range = {
+ min: 1,
+ max: 0
+ };
+ }
+
+ break;
+
+ case LEFTCURLYBRACKET:
+ range = readMultiplierRange(tokenizer);
+ break;
+
+ default:
+ return null;
+ }
+
+ return {
+ type: 'Multiplier',
+ comma,
+ min: range.min,
+ max: range.max,
+ term: null
+ };
+}
+
+function maybeMultiplied(tokenizer, node) {
+ const multiplier = readMultiplier(tokenizer);
+
+ if (multiplier !== null) {
+ multiplier.term = node;
+
+ // https://www.w3.org/TR/css-values-4/#component-multipliers
+ // > The + and # multipliers may be stacked as +#;
+ // Represent "+#" as nested multipliers:
+ // { ...,
+ // term: {
+ // ...,
+ // term: node
+ // }
+ // }
+ if (tokenizer.charCode() === NUMBERSIGN &&
+ tokenizer.charCodeAt(tokenizer.pos - 1) === PLUSSIGN) {
+ return maybeMultiplied(tokenizer, multiplier);
+ }
+
+ return multiplier;
+ }
+
+ return node;
+}
+
+function maybeToken(tokenizer) {
+ const ch = tokenizer.peek();
+
+ if (ch === '') {
+ return null;
+ }
+
+ return {
+ type: 'Token',
+ value: ch
+ };
+}
+
+function readProperty(tokenizer) {
+ let name;
+
+ tokenizer.eat(LESSTHANSIGN);
+ tokenizer.eat(APOSTROPHE);
+
+ name = scanWord(tokenizer);
+
+ tokenizer.eat(APOSTROPHE);
+ tokenizer.eat(GREATERTHANSIGN);
+
+ return maybeMultiplied(tokenizer, {
+ type: 'Property',
+ name
+ });
+}
+
+// https://drafts.csswg.org/css-values-3/#numeric-ranges
+// 4.1. Range Restrictions and Range Definition Notation
+//
+// Range restrictions can be annotated in the numeric type notation using CSS bracketed
+// range notation—[min,max]—within the angle brackets, after the identifying keyword,
+// indicating a closed range between (and including) min and max.
+// For example, indicates an integer between 0 and 10, inclusive.
+function readTypeRange(tokenizer) {
+ // use null for Infinity to make AST format JSON serializable/deserializable
+ let min = null; // -Infinity
+ let max = null; // Infinity
+ let sign = 1;
+
+ tokenizer.eat(LEFTSQUAREBRACKET);
+
+ if (tokenizer.charCode() === HYPERMINUS) {
+ tokenizer.peek();
+ sign = -1;
+ }
+
+ if (sign == -1 && tokenizer.charCode() === INFINITY) {
+ tokenizer.peek();
+ } else {
+ min = sign * Number(scanNumber(tokenizer));
+
+ if (NAME_CHAR[tokenizer.charCode()] !== 0) {
+ min += scanWord(tokenizer);
+ }
+ }
+
+ scanSpaces(tokenizer);
+ tokenizer.eat(COMMA);
+ scanSpaces(tokenizer);
+
+ if (tokenizer.charCode() === INFINITY) {
+ tokenizer.peek();
+ } else {
+ sign = 1;
+
+ if (tokenizer.charCode() === HYPERMINUS) {
+ tokenizer.peek();
+ sign = -1;
+ }
+
+ max = sign * Number(scanNumber(tokenizer));
+
+ if (NAME_CHAR[tokenizer.charCode()] !== 0) {
+ max += scanWord(tokenizer);
+ }
+ }
+
+ tokenizer.eat(RIGHTSQUAREBRACKET);
+
+ return {
+ type: 'Range',
+ min,
+ max
+ };
+}
+
+function readType(tokenizer) {
+ let name;
+ let opts = null;
+
+ tokenizer.eat(LESSTHANSIGN);
+ name = scanWord(tokenizer);
+
+ if (tokenizer.charCode() === LEFTPARENTHESIS &&
+ tokenizer.nextCharCode() === RIGHTPARENTHESIS) {
+ tokenizer.pos += 2;
+ name += '()';
+ }
+
+ if (tokenizer.charCodeAt(tokenizer.findWsEnd(tokenizer.pos)) === LEFTSQUAREBRACKET) {
+ scanSpaces(tokenizer);
+ opts = readTypeRange(tokenizer);
+ }
+
+ tokenizer.eat(GREATERTHANSIGN);
+
+ return maybeMultiplied(tokenizer, {
+ type: 'Type',
+ name,
+ opts
+ });
+}
+
+function readKeywordOrFunction(tokenizer) {
+ const name = scanWord(tokenizer);
+
+ if (tokenizer.charCode() === LEFTPARENTHESIS) {
+ tokenizer.pos++;
+
+ return {
+ type: 'Function',
+ name
+ };
+ }
+
+ return maybeMultiplied(tokenizer, {
+ type: 'Keyword',
+ name
+ });
+}
+
+function regroupTerms(terms, combinators) {
+ function createGroup(terms, combinator) {
+ return {
+ type: 'Group',
+ terms,
+ combinator,
+ disallowEmpty: false,
+ explicit: false
+ };
+ }
+
+ let combinator;
+
+ combinators = Object.keys(combinators)
+ .sort((a, b) => COMBINATOR_PRECEDENCE[a] - COMBINATOR_PRECEDENCE[b]);
+
+ while (combinators.length > 0) {
+ combinator = combinators.shift();
+
+ let i = 0;
+ let subgroupStart = 0;
+
+ for (; i < terms.length; i++) {
+ const term = terms[i];
+
+ if (term.type === 'Combinator') {
+ if (term.value === combinator) {
+ if (subgroupStart === -1) {
+ subgroupStart = i - 1;
+ }
+ terms.splice(i, 1);
+ i--;
+ } else {
+ if (subgroupStart !== -1 && i - subgroupStart > 1) {
+ terms.splice(
+ subgroupStart,
+ i - subgroupStart,
+ createGroup(terms.slice(subgroupStart, i), combinator)
+ );
+ i = subgroupStart + 1;
+ }
+ subgroupStart = -1;
+ }
+ }
+ }
+
+ if (subgroupStart !== -1 && combinators.length) {
+ terms.splice(
+ subgroupStart,
+ i - subgroupStart,
+ createGroup(terms.slice(subgroupStart, i), combinator)
+ );
+ }
+ }
+
+ return combinator;
+}
+
+function readImplicitGroup(tokenizer) {
+ const terms = [];
+ const combinators = {};
+ let token;
+ let prevToken = null;
+ let prevTokenPos = tokenizer.pos;
+
+ while (token = peek(tokenizer)) {
+ if (token.type !== 'Spaces') {
+ if (token.type === 'Combinator') {
+ // check for combinator in group beginning and double combinator sequence
+ if (prevToken === null || prevToken.type === 'Combinator') {
+ tokenizer.pos = prevTokenPos;
+ tokenizer.error('Unexpected combinator');
+ }
+
+ combinators[token.value] = true;
+ } else if (prevToken !== null && prevToken.type !== 'Combinator') {
+ combinators[' '] = true; // a b
+ terms.push({
+ type: 'Combinator',
+ value: ' '
+ });
+ }
+
+ terms.push(token);
+ prevToken = token;
+ prevTokenPos = tokenizer.pos;
+ }
+ }
+
+ // check for combinator in group ending
+ if (prevToken !== null && prevToken.type === 'Combinator') {
+ tokenizer.pos -= prevTokenPos;
+ tokenizer.error('Unexpected combinator');
+ }
+
+ return {
+ type: 'Group',
+ terms,
+ combinator: regroupTerms(terms, combinators) || ' ',
+ disallowEmpty: false,
+ explicit: false
+ };
+}
+
+function readGroup(tokenizer) {
+ let result;
+
+ tokenizer.eat(LEFTSQUAREBRACKET);
+ result = readImplicitGroup(tokenizer);
+ tokenizer.eat(RIGHTSQUAREBRACKET);
+
+ result.explicit = true;
+
+ if (tokenizer.charCode() === EXCLAMATIONMARK) {
+ tokenizer.pos++;
+ result.disallowEmpty = true;
+ }
+
+ return result;
+}
+
+function peek(tokenizer) {
+ let code = tokenizer.charCode();
+
+ if (code < 128 && NAME_CHAR[code] === 1) {
+ return readKeywordOrFunction(tokenizer);
+ }
+
+ switch (code) {
+ case RIGHTSQUAREBRACKET:
+ // don't eat, stop scan a group
+ break;
+
+ case LEFTSQUAREBRACKET:
+ return maybeMultiplied(tokenizer, readGroup(tokenizer));
+
+ case LESSTHANSIGN:
+ return tokenizer.nextCharCode() === APOSTROPHE
+ ? readProperty(tokenizer)
+ : readType(tokenizer);
+
+ case VERTICALLINE:
+ return {
+ type: 'Combinator',
+ value: tokenizer.substringToPos(
+ tokenizer.pos + (tokenizer.nextCharCode() === VERTICALLINE ? 2 : 1)
+ )
+ };
+
+ case AMPERSAND:
+ tokenizer.pos++;
+ tokenizer.eat(AMPERSAND);
+
+ return {
+ type: 'Combinator',
+ value: '&&'
+ };
+
+ case COMMA:
+ tokenizer.pos++;
+ return {
+ type: 'Comma'
+ };
+
+ case APOSTROPHE:
+ return maybeMultiplied(tokenizer, {
+ type: 'String',
+ value: scanString(tokenizer)
+ });
+
+ case SPACE:
+ case TAB:
+ case N:
+ case R:
+ case F:
+ return {
+ type: 'Spaces',
+ value: scanSpaces(tokenizer)
+ };
+
+ case COMMERCIALAT:
+ code = tokenizer.nextCharCode();
+
+ if (code < 128 && NAME_CHAR[code] === 1) {
+ tokenizer.pos++;
+ return {
+ type: 'AtKeyword',
+ name: scanWord(tokenizer)
+ };
+ }
+
+ return maybeToken(tokenizer);
+
+ case ASTERISK:
+ case PLUSSIGN:
+ case QUESTIONMARK:
+ case NUMBERSIGN:
+ case EXCLAMATIONMARK:
+ // prohibited tokens (used as a multiplier start)
+ break;
+
+ case LEFTCURLYBRACKET:
+ // LEFTCURLYBRACKET is allowed since mdn/data uses it w/o quoting
+ // check next char isn't a number, because it's likely a disjoined multiplier
+ code = tokenizer.nextCharCode();
+
+ if (code < 48 || code > 57) {
+ return maybeToken(tokenizer);
+ }
+
+ break;
+
+ default:
+ return maybeToken(tokenizer);
+ }
+}
+
+function parse(source) {
+ const tokenizer$1 = new tokenizer.Tokenizer(source);
+ const result = readImplicitGroup(tokenizer$1);
+
+ if (tokenizer$1.pos !== source.length) {
+ tokenizer$1.error('Unexpected input');
+ }
+
+ // reduce redundant groups with single group term
+ if (result.terms.length === 1 && result.terms[0].type === 'Group') {
+ return result.terms[0];
+ }
+
+ return result;
+}
+
+exports.parse = parse;
diff --git a/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs b/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs
new file mode 100644
index 00000000..6ab5ece2
--- /dev/null
+++ b/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs
@@ -0,0 +1,56 @@
+'use strict';
+
+const SyntaxError = require('./SyntaxError.cjs');
+
+const TAB = 9;
+const N = 10;
+const F = 12;
+const R = 13;
+const SPACE = 32;
+
+class Tokenizer {
+ constructor(str) {
+ this.str = str;
+ this.pos = 0;
+ }
+ charCodeAt(pos) {
+ return pos < this.str.length ? this.str.charCodeAt(pos) : 0;
+ }
+ charCode() {
+ return this.charCodeAt(this.pos);
+ }
+ nextCharCode() {
+ return this.charCodeAt(this.pos + 1);
+ }
+ nextNonWsCode(pos) {
+ return this.charCodeAt(this.findWsEnd(pos));
+ }
+ findWsEnd(pos) {
+ for (; pos < this.str.length; pos++) {
+ const code = this.str.charCodeAt(pos);
+ if (code !== R && code !== N && code !== F && code !== SPACE && code !== TAB) {
+ break;
+ }
+ }
+
+ return pos;
+ }
+ substringToPos(end) {
+ return this.str.substring(this.pos, this.pos = end);
+ }
+ eat(code) {
+ if (this.charCode() !== code) {
+ this.error('Expect `' + String.fromCharCode(code) + '`');
+ }
+
+ this.pos++;
+ }
+ peek() {
+ return this.pos < this.str.length ? this.str.charAt(this.pos++) : '';
+ }
+ error(message) {
+ throw new SyntaxError.SyntaxError(message, this.str, this.pos);
+ }
+}
+
+exports.Tokenizer = Tokenizer;
diff --git a/node_modules/css-tree/cjs/definition-syntax/walk.cjs b/node_modules/css-tree/cjs/definition-syntax/walk.cjs
new file mode 100644
index 00000000..728a446d
--- /dev/null
+++ b/node_modules/css-tree/cjs/definition-syntax/walk.cjs
@@ -0,0 +1,56 @@
+'use strict';
+
+const noop = function() {};
+
+function ensureFunction(value) {
+ return typeof value === 'function' ? value : noop;
+}
+
+function walk(node, options, context) {
+ function walk(node) {
+ enter.call(context, node);
+
+ switch (node.type) {
+ case 'Group':
+ node.terms.forEach(walk);
+ break;
+
+ case 'Multiplier':
+ walk(node.term);
+ break;
+
+ case 'Type':
+ case 'Property':
+ case 'Keyword':
+ case 'AtKeyword':
+ case 'Function':
+ case 'String':
+ case 'Token':
+ case 'Comma':
+ break;
+
+ default:
+ throw new Error('Unknown type: ' + node.type);
+ }
+
+ leave.call(context, node);
+ }
+
+ let enter = noop;
+ let leave = noop;
+
+ if (typeof options === 'function') {
+ enter = options;
+ } else if (options) {
+ enter = ensureFunction(options.enter);
+ leave = ensureFunction(options.leave);
+ }
+
+ if (enter === noop && leave === noop) {
+ throw new Error('Neither `enter` nor `leave` walker handler is set or both aren\'t a function');
+ }
+
+ walk(node);
+}
+
+exports.walk = walk;
diff --git a/node_modules/css-tree/cjs/generator/create.cjs b/node_modules/css-tree/cjs/generator/create.cjs
new file mode 100644
index 00000000..ab80f3ac
--- /dev/null
+++ b/node_modules/css-tree/cjs/generator/create.cjs
@@ -0,0 +1,103 @@
+'use strict';
+
+const index = require('../tokenizer/index.cjs');
+const sourceMap = require('./sourceMap.cjs');
+const tokenBefore = require('./token-before.cjs');
+const types = require('../tokenizer/types.cjs');
+
+const REVERSESOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\)
+
+function processChildren(node, delimeter) {
+ if (typeof delimeter === 'function') {
+ let prev = null;
+
+ node.children.forEach(node => {
+ if (prev !== null) {
+ delimeter.call(this, prev);
+ }
+
+ this.node(node);
+ prev = node;
+ });
+
+ return;
+ }
+
+ node.children.forEach(this.node, this);
+}
+
+function processChunk(chunk) {
+ index.tokenize(chunk, (type, start, end) => {
+ this.token(type, chunk.slice(start, end));
+ });
+}
+
+function createGenerator(config) {
+ const types$1 = new Map();
+
+ for (let name in config.node) {
+ const item = config.node[name];
+ const fn = item.generate || item;
+
+ if (typeof fn === 'function') {
+ types$1.set(name, item.generate || item);
+ }
+ }
+
+ return function(node, options) {
+ let buffer = '';
+ let prevCode = 0;
+ let handlers = {
+ node(node) {
+ if (types$1.has(node.type)) {
+ types$1.get(node.type).call(publicApi, node);
+ } else {
+ throw new Error('Unknown node type: ' + node.type);
+ }
+ },
+ tokenBefore: tokenBefore.safe,
+ token(type, value) {
+ prevCode = this.tokenBefore(prevCode, type, value);
+
+ this.emit(value, type, false);
+
+ if (type === types.Delim && value.charCodeAt(0) === REVERSESOLIDUS) {
+ this.emit('\n', types.WhiteSpace, true);
+ }
+ },
+ emit(value) {
+ buffer += value;
+ },
+ result() {
+ return buffer;
+ }
+ };
+
+ if (options) {
+ if (typeof options.decorator === 'function') {
+ handlers = options.decorator(handlers);
+ }
+
+ if (options.sourceMap) {
+ handlers = sourceMap.generateSourceMap(handlers);
+ }
+
+ if (options.mode in tokenBefore) {
+ handlers.tokenBefore = tokenBefore[options.mode];
+ }
+ }
+
+ const publicApi = {
+ node: (node) => handlers.node(node),
+ children: processChildren,
+ token: (type, value) => handlers.token(type, value),
+ tokenize: processChunk
+ };
+
+ handlers.node(node);
+
+ return handlers.result();
+ };
+}
+
+exports.createGenerator = createGenerator;
diff --git a/node_modules/css-tree/cjs/generator/index.cjs b/node_modules/css-tree/cjs/generator/index.cjs
new file mode 100644
index 00000000..5c87cd34
--- /dev/null
+++ b/node_modules/css-tree/cjs/generator/index.cjs
@@ -0,0 +1,8 @@
+'use strict';
+
+const create = require('./create.cjs');
+const generator = require('../syntax/config/generator.cjs');
+
+const index = create.createGenerator(generator);
+
+module.exports = index;
diff --git a/node_modules/css-tree/cjs/generator/sourceMap.cjs b/node_modules/css-tree/cjs/generator/sourceMap.cjs
new file mode 100644
index 00000000..efbc5b9e
--- /dev/null
+++ b/node_modules/css-tree/cjs/generator/sourceMap.cjs
@@ -0,0 +1,96 @@
+'use strict';
+
+const sourceMapGenerator_js = require('source-map-js/lib/source-map-generator.js');
+
+const trackNodes = new Set(['Atrule', 'Selector', 'Declaration']);
+
+function generateSourceMap(handlers) {
+ const map = new sourceMapGenerator_js.SourceMapGenerator();
+ const generated = {
+ line: 1,
+ column: 0
+ };
+ const original = {
+ line: 0, // should be zero to add first mapping
+ column: 0
+ };
+ const activatedGenerated = {
+ line: 1,
+ column: 0
+ };
+ const activatedMapping = {
+ generated: activatedGenerated
+ };
+ let line = 1;
+ let column = 0;
+ let sourceMappingActive = false;
+
+ const origHandlersNode = handlers.node;
+ handlers.node = function(node) {
+ if (node.loc && node.loc.start && trackNodes.has(node.type)) {
+ const nodeLine = node.loc.start.line;
+ const nodeColumn = node.loc.start.column - 1;
+
+ if (original.line !== nodeLine ||
+ original.column !== nodeColumn) {
+ original.line = nodeLine;
+ original.column = nodeColumn;
+
+ generated.line = line;
+ generated.column = column;
+
+ if (sourceMappingActive) {
+ sourceMappingActive = false;
+ if (generated.line !== activatedGenerated.line ||
+ generated.column !== activatedGenerated.column) {
+ map.addMapping(activatedMapping);
+ }
+ }
+
+ sourceMappingActive = true;
+ map.addMapping({
+ source: node.loc.source,
+ original,
+ generated
+ });
+ }
+ }
+
+ origHandlersNode.call(this, node);
+
+ if (sourceMappingActive && trackNodes.has(node.type)) {
+ activatedGenerated.line = line;
+ activatedGenerated.column = column;
+ }
+ };
+
+ const origHandlersEmit = handlers.emit;
+ handlers.emit = function(value, type, auto) {
+ for (let i = 0; i < value.length; i++) {
+ if (value.charCodeAt(i) === 10) { // \n
+ line++;
+ column = 0;
+ } else {
+ column++;
+ }
+ }
+
+ origHandlersEmit(value, type, auto);
+ };
+
+ const origHandlersResult = handlers.result;
+ handlers.result = function() {
+ if (sourceMappingActive) {
+ map.addMapping(activatedMapping);
+ }
+
+ return {
+ css: origHandlersResult(),
+ map
+ };
+ };
+
+ return handlers;
+}
+
+exports.generateSourceMap = generateSourceMap;
diff --git a/node_modules/css-tree/cjs/generator/token-before.cjs b/node_modules/css-tree/cjs/generator/token-before.cjs
new file mode 100644
index 00000000..87bf4a3e
--- /dev/null
+++ b/node_modules/css-tree/cjs/generator/token-before.cjs
@@ -0,0 +1,170 @@
+'use strict';
+
+const types = require('../tokenizer/types.cjs');
+
+const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
+const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)
+
+const code = (type, value) => {
+ if (type === types.Delim) {
+ type = value;
+ }
+
+ if (typeof type === 'string') {
+ const charCode = type.charCodeAt(0);
+ return charCode > 0x7F ? 0x8000 : charCode << 8;
+ }
+
+ return type;
+};
+
+// https://www.w3.org/TR/css-syntax-3/#serialization
+// The only requirement for serialization is that it must "round-trip" with parsing,
+// that is, parsing the stylesheet must produce the same data structures as parsing,
+// serializing, and parsing again, except for consecutive s,
+// which may be collapsed into a single token.
+
+const specPairs = [
+ [types.Ident, types.Ident],
+ [types.Ident, types.Function],
+ [types.Ident, types.Url],
+ [types.Ident, types.BadUrl],
+ [types.Ident, '-'],
+ [types.Ident, types.Number],
+ [types.Ident, types.Percentage],
+ [types.Ident, types.Dimension],
+ [types.Ident, types.CDC],
+ [types.Ident, types.LeftParenthesis],
+
+ [types.AtKeyword, types.Ident],
+ [types.AtKeyword, types.Function],
+ [types.AtKeyword, types.Url],
+ [types.AtKeyword, types.BadUrl],
+ [types.AtKeyword, '-'],
+ [types.AtKeyword, types.Number],
+ [types.AtKeyword, types.Percentage],
+ [types.AtKeyword, types.Dimension],
+ [types.AtKeyword, types.CDC],
+
+ [types.Hash, types.Ident],
+ [types.Hash, types.Function],
+ [types.Hash, types.Url],
+ [types.Hash, types.BadUrl],
+ [types.Hash, '-'],
+ [types.Hash, types.Number],
+ [types.Hash, types.Percentage],
+ [types.Hash, types.Dimension],
+ [types.Hash, types.CDC],
+
+ [types.Dimension, types.Ident],
+ [types.Dimension, types.Function],
+ [types.Dimension, types.Url],
+ [types.Dimension, types.BadUrl],
+ [types.Dimension, '-'],
+ [types.Dimension, types.Number],
+ [types.Dimension, types.Percentage],
+ [types.Dimension, types.Dimension],
+ [types.Dimension, types.CDC],
+
+ ['#', types.Ident],
+ ['#', types.Function],
+ ['#', types.Url],
+ ['#', types.BadUrl],
+ ['#', '-'],
+ ['#', types.Number],
+ ['#', types.Percentage],
+ ['#', types.Dimension],
+ ['#', types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874
+
+ ['-', types.Ident],
+ ['-', types.Function],
+ ['-', types.Url],
+ ['-', types.BadUrl],
+ ['-', '-'],
+ ['-', types.Number],
+ ['-', types.Percentage],
+ ['-', types.Dimension],
+ ['-', types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874
+
+ [types.Number, types.Ident],
+ [types.Number, types.Function],
+ [types.Number, types.Url],
+ [types.Number, types.BadUrl],
+ [types.Number, types.Number],
+ [types.Number, types.Percentage],
+ [types.Number, types.Dimension],
+ [types.Number, '%'],
+ [types.Number, types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874
+
+ ['@', types.Ident],
+ ['@', types.Function],
+ ['@', types.Url],
+ ['@', types.BadUrl],
+ ['@', '-'],
+ ['@', types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874
+
+ ['.', types.Number],
+ ['.', types.Percentage],
+ ['.', types.Dimension],
+
+ ['+', types.Number],
+ ['+', types.Percentage],
+ ['+', types.Dimension],
+
+ ['/', '*']
+];
+// validate with scripts/generate-safe
+const safePairs = specPairs.concat([
+ [types.Ident, types.Hash],
+
+ [types.Dimension, types.Hash],
+
+ [types.Hash, types.Hash],
+
+ [types.AtKeyword, types.LeftParenthesis],
+ [types.AtKeyword, types.String],
+ [types.AtKeyword, types.Colon],
+
+ [types.Percentage, types.Percentage],
+ [types.Percentage, types.Dimension],
+ [types.Percentage, types.Function],
+ [types.Percentage, '-'],
+
+ [types.RightParenthesis, types.Ident],
+ [types.RightParenthesis, types.Function],
+ [types.RightParenthesis, types.Percentage],
+ [types.RightParenthesis, types.Dimension],
+ [types.RightParenthesis, types.Hash],
+ [types.RightParenthesis, '-']
+]);
+
+function createMap(pairs) {
+ const isWhiteSpaceRequired = new Set(
+ pairs.map(([prev, next]) => (code(prev) << 16 | code(next)))
+ );
+
+ return function(prevCode, type, value) {
+ const nextCode = code(type, value);
+ const nextCharCode = value.charCodeAt(0);
+ const emitWs =
+ (nextCharCode === HYPHENMINUS &&
+ type !== types.Ident &&
+ type !== types.Function &&
+ type !== types.CDC) ||
+ (nextCharCode === PLUSSIGN)
+ ? isWhiteSpaceRequired.has(prevCode << 16 | nextCharCode << 8)
+ : isWhiteSpaceRequired.has(prevCode << 16 | nextCode);
+
+ if (emitWs) {
+ this.emit(' ', types.WhiteSpace, true);
+ }
+
+ return nextCode;
+ };
+}
+
+const spec = createMap(specPairs);
+const safe = createMap(safePairs);
+
+exports.safe = safe;
+exports.spec = spec;
diff --git a/node_modules/css-tree/cjs/index.cjs b/node_modules/css-tree/cjs/index.cjs
new file mode 100644
index 00000000..b781d15b
--- /dev/null
+++ b/node_modules/css-tree/cjs/index.cjs
@@ -0,0 +1,63 @@
+'use strict';
+
+const index$1 = require('./syntax/index.cjs');
+const version = require('./version.cjs');
+const create = require('./syntax/create.cjs');
+const List = require('./utils/List.cjs');
+const Lexer = require('./lexer/Lexer.cjs');
+const index = require('./definition-syntax/index.cjs');
+const clone = require('./utils/clone.cjs');
+const names$1 = require('./utils/names.cjs');
+const ident = require('./utils/ident.cjs');
+const string = require('./utils/string.cjs');
+const url = require('./utils/url.cjs');
+const types = require('./tokenizer/types.cjs');
+const names = require('./tokenizer/names.cjs');
+const TokenStream = require('./tokenizer/TokenStream.cjs');
+
+const {
+ tokenize,
+ parse,
+ generate,
+ lexer,
+ createLexer,
+
+ walk,
+ find,
+ findLast,
+ findAll,
+
+ toPlainObject,
+ fromPlainObject,
+
+ fork
+} = index$1;
+
+exports.version = version.version;
+exports.createSyntax = create;
+exports.List = List.List;
+exports.Lexer = Lexer.Lexer;
+exports.definitionSyntax = index;
+exports.clone = clone.clone;
+exports.isCustomProperty = names$1.isCustomProperty;
+exports.keyword = names$1.keyword;
+exports.property = names$1.property;
+exports.vendorPrefix = names$1.vendorPrefix;
+exports.ident = ident;
+exports.string = string;
+exports.url = url;
+exports.tokenTypes = types;
+exports.tokenNames = names;
+exports.TokenStream = TokenStream.TokenStream;
+exports.createLexer = createLexer;
+exports.find = find;
+exports.findAll = findAll;
+exports.findLast = findLast;
+exports.fork = fork;
+exports.fromPlainObject = fromPlainObject;
+exports.generate = generate;
+exports.lexer = lexer;
+exports.parse = parse;
+exports.toPlainObject = toPlainObject;
+exports.tokenize = tokenize;
+exports.walk = walk;
diff --git a/node_modules/css-tree/cjs/lexer/Lexer.cjs b/node_modules/css-tree/cjs/lexer/Lexer.cjs
new file mode 100644
index 00000000..46380fae
--- /dev/null
+++ b/node_modules/css-tree/cjs/lexer/Lexer.cjs
@@ -0,0 +1,470 @@
+'use strict';
+
+const error = require('./error.cjs');
+const names = require('../utils/names.cjs');
+const genericConst = require('./generic-const.cjs');
+const generic = require('./generic.cjs');
+const units = require('./units.cjs');
+const prepareTokens = require('./prepare-tokens.cjs');
+const matchGraph = require('./match-graph.cjs');
+const match = require('./match.cjs');
+const trace = require('./trace.cjs');
+const search = require('./search.cjs');
+const structure = require('./structure.cjs');
+const parse = require('../definition-syntax/parse.cjs');
+const generate = require('../definition-syntax/generate.cjs');
+const walk = require('../definition-syntax/walk.cjs');
+
+const cssWideKeywordsSyntax = matchGraph.buildMatchGraph(genericConst.cssWideKeywords.join(' | '));
+
+function dumpMapSyntax(map, compact, syntaxAsAst) {
+ const result = {};
+
+ for (const name in map) {
+ if (map[name].syntax) {
+ result[name] = syntaxAsAst
+ ? map[name].syntax
+ : generate.generate(map[name].syntax, { compact });
+ }
+ }
+
+ return result;
+}
+
+function dumpAtruleMapSyntax(map, compact, syntaxAsAst) {
+ const result = {};
+
+ for (const [name, atrule] of Object.entries(map)) {
+ result[name] = {
+ prelude: atrule.prelude && (
+ syntaxAsAst
+ ? atrule.prelude.syntax
+ : generate.generate(atrule.prelude.syntax, { compact })
+ ),
+ descriptors: atrule.descriptors && dumpMapSyntax(atrule.descriptors, compact, syntaxAsAst)
+ };
+ }
+
+ return result;
+}
+
+function valueHasVar(tokens) {
+ for (let i = 0; i < tokens.length; i++) {
+ if (tokens[i].value.toLowerCase() === 'var(') {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function buildMatchResult(matched, error, iterations) {
+ return {
+ matched,
+ iterations,
+ error,
+ ...trace
+ };
+}
+
+function matchSyntax(lexer, syntax, value, useCssWideKeywords) {
+ const tokens = prepareTokens(value, lexer.syntax);
+ let result;
+
+ if (valueHasVar(tokens)) {
+ return buildMatchResult(null, new Error('Matching for a tree with var() is not supported'));
+ }
+
+ if (useCssWideKeywords) {
+ result = match.matchAsTree(tokens, lexer.cssWideKeywordsSyntax, lexer);
+ }
+
+ if (!useCssWideKeywords || !result.match) {
+ result = match.matchAsTree(tokens, syntax.match, lexer);
+ if (!result.match) {
+ return buildMatchResult(
+ null,
+ new error.SyntaxMatchError(result.reason, syntax.syntax, value, result),
+ result.iterations
+ );
+ }
+ }
+
+ return buildMatchResult(result.match, null, result.iterations);
+}
+
+class Lexer {
+ constructor(config, syntax, structure$1) {
+ this.cssWideKeywordsSyntax = cssWideKeywordsSyntax;
+ this.syntax = syntax;
+ this.generic = false;
+ this.units = { ...units };
+ this.atrules = Object.create(null);
+ this.properties = Object.create(null);
+ this.types = Object.create(null);
+ this.structure = structure$1 || structure.getStructureFromConfig(config);
+
+ if (config) {
+ if (config.units) {
+ for (const group of Object.keys(units)) {
+ if (Array.isArray(config.units[group])) {
+ this.units[group] = config.units[group];
+ }
+ }
+ }
+
+ if (config.types) {
+ for (const name in config.types) {
+ this.addType_(name, config.types[name]);
+ }
+ }
+
+ if (config.generic) {
+ this.generic = true;
+ for (const [name, value] of Object.entries(generic.createGenericTypes(this.units))) {
+ this.addType_(name, value);
+ }
+ }
+
+ if (config.atrules) {
+ for (const name in config.atrules) {
+ this.addAtrule_(name, config.atrules[name]);
+ }
+ }
+
+ if (config.properties) {
+ for (const name in config.properties) {
+ this.addProperty_(name, config.properties[name]);
+ }
+ }
+ }
+ }
+
+ checkStructure(ast) {
+ function collectWarning(node, message) {
+ warns.push({ node, message });
+ }
+
+ const structure = this.structure;
+ const warns = [];
+
+ this.syntax.walk(ast, function(node) {
+ if (structure.hasOwnProperty(node.type)) {
+ structure[node.type].check(node, collectWarning);
+ } else {
+ collectWarning(node, 'Unknown node type `' + node.type + '`');
+ }
+ });
+
+ return warns.length ? warns : false;
+ }
+
+ createDescriptor(syntax, type, name, parent = null) {
+ const ref = {
+ type,
+ name
+ };
+ const descriptor = {
+ type,
+ name,
+ parent,
+ serializable: typeof syntax === 'string' || (syntax && typeof syntax.type === 'string'),
+ syntax: null,
+ match: null
+ };
+
+ if (typeof syntax === 'function') {
+ descriptor.match = matchGraph.buildMatchGraph(syntax, ref);
+ } else {
+ if (typeof syntax === 'string') {
+ // lazy parsing on first access
+ Object.defineProperty(descriptor, 'syntax', {
+ get() {
+ Object.defineProperty(descriptor, 'syntax', {
+ value: parse.parse(syntax)
+ });
+
+ return descriptor.syntax;
+ }
+ });
+ } else {
+ descriptor.syntax = syntax;
+ }
+
+ // lazy graph build on first access
+ Object.defineProperty(descriptor, 'match', {
+ get() {
+ Object.defineProperty(descriptor, 'match', {
+ value: matchGraph.buildMatchGraph(descriptor.syntax, ref)
+ });
+
+ return descriptor.match;
+ }
+ });
+ }
+
+ return descriptor;
+ }
+ addAtrule_(name, syntax) {
+ if (!syntax) {
+ return;
+ }
+
+ this.atrules[name] = {
+ type: 'Atrule',
+ name: name,
+ prelude: syntax.prelude ? this.createDescriptor(syntax.prelude, 'AtrulePrelude', name) : null,
+ descriptors: syntax.descriptors
+ ? Object.keys(syntax.descriptors).reduce(
+ (map, descName) => {
+ map[descName] = this.createDescriptor(syntax.descriptors[descName], 'AtruleDescriptor', descName, name);
+ return map;
+ },
+ Object.create(null)
+ )
+ : null
+ };
+ }
+ addProperty_(name, syntax) {
+ if (!syntax) {
+ return;
+ }
+
+ this.properties[name] = this.createDescriptor(syntax, 'Property', name);
+ }
+ addType_(name, syntax) {
+ if (!syntax) {
+ return;
+ }
+
+ this.types[name] = this.createDescriptor(syntax, 'Type', name);
+ }
+
+ checkAtruleName(atruleName) {
+ if (!this.getAtrule(atruleName)) {
+ return new error.SyntaxReferenceError('Unknown at-rule', '@' + atruleName);
+ }
+ }
+ checkAtrulePrelude(atruleName, prelude) {
+ const error = this.checkAtruleName(atruleName);
+
+ if (error) {
+ return error;
+ }
+
+ const atrule = this.getAtrule(atruleName);
+
+ if (!atrule.prelude && prelude) {
+ return new SyntaxError('At-rule `@' + atruleName + '` should not contain a prelude');
+ }
+
+ if (atrule.prelude && !prelude) {
+ if (!matchSyntax(this, atrule.prelude, '', false).matched) {
+ return new SyntaxError('At-rule `@' + atruleName + '` should contain a prelude');
+ }
+ }
+ }
+ checkAtruleDescriptorName(atruleName, descriptorName) {
+ const error$1 = this.checkAtruleName(atruleName);
+
+ if (error$1) {
+ return error$1;
+ }
+
+ const atrule = this.getAtrule(atruleName);
+ const descriptor = names.keyword(descriptorName);
+
+ if (!atrule.descriptors) {
+ return new SyntaxError('At-rule `@' + atruleName + '` has no known descriptors');
+ }
+
+ if (!atrule.descriptors[descriptor.name] &&
+ !atrule.descriptors[descriptor.basename]) {
+ return new error.SyntaxReferenceError('Unknown at-rule descriptor', descriptorName);
+ }
+ }
+ checkPropertyName(propertyName) {
+ if (!this.getProperty(propertyName)) {
+ return new error.SyntaxReferenceError('Unknown property', propertyName);
+ }
+ }
+
+ matchAtrulePrelude(atruleName, prelude) {
+ const error = this.checkAtrulePrelude(atruleName, prelude);
+
+ if (error) {
+ return buildMatchResult(null, error);
+ }
+
+ const atrule = this.getAtrule(atruleName);
+
+ if (!atrule.prelude) {
+ return buildMatchResult(null, null);
+ }
+
+ return matchSyntax(this, atrule.prelude, prelude || '', false);
+ }
+ matchAtruleDescriptor(atruleName, descriptorName, value) {
+ const error = this.checkAtruleDescriptorName(atruleName, descriptorName);
+
+ if (error) {
+ return buildMatchResult(null, error);
+ }
+
+ const atrule = this.getAtrule(atruleName);
+ const descriptor = names.keyword(descriptorName);
+
+ return matchSyntax(this, atrule.descriptors[descriptor.name] || atrule.descriptors[descriptor.basename], value, false);
+ }
+ matchDeclaration(node) {
+ if (node.type !== 'Declaration') {
+ return buildMatchResult(null, new Error('Not a Declaration node'));
+ }
+
+ return this.matchProperty(node.property, node.value);
+ }
+ matchProperty(propertyName, value) {
+ // don't match syntax for a custom property at the moment
+ if (names.property(propertyName).custom) {
+ return buildMatchResult(null, new Error('Lexer matching doesn\'t applicable for custom properties'));
+ }
+
+ const error = this.checkPropertyName(propertyName);
+
+ if (error) {
+ return buildMatchResult(null, error);
+ }
+
+ return matchSyntax(this, this.getProperty(propertyName), value, true);
+ }
+ matchType(typeName, value) {
+ const typeSyntax = this.getType(typeName);
+
+ if (!typeSyntax) {
+ return buildMatchResult(null, new error.SyntaxReferenceError('Unknown type', typeName));
+ }
+
+ return matchSyntax(this, typeSyntax, value, false);
+ }
+ match(syntax, value) {
+ if (typeof syntax !== 'string' && (!syntax || !syntax.type)) {
+ return buildMatchResult(null, new error.SyntaxReferenceError('Bad syntax'));
+ }
+
+ if (typeof syntax === 'string' || !syntax.match) {
+ syntax = this.createDescriptor(syntax, 'Type', 'anonymous');
+ }
+
+ return matchSyntax(this, syntax, value, false);
+ }
+
+ findValueFragments(propertyName, value, type, name) {
+ return search.matchFragments(this, value, this.matchProperty(propertyName, value), type, name);
+ }
+ findDeclarationValueFragments(declaration, type, name) {
+ return search.matchFragments(this, declaration.value, this.matchDeclaration(declaration), type, name);
+ }
+ findAllFragments(ast, type, name) {
+ const result = [];
+
+ this.syntax.walk(ast, {
+ visit: 'Declaration',
+ enter: (declaration) => {
+ result.push.apply(result, this.findDeclarationValueFragments(declaration, type, name));
+ }
+ });
+
+ return result;
+ }
+
+ getAtrule(atruleName, fallbackBasename = true) {
+ const atrule = names.keyword(atruleName);
+ const atruleEntry = atrule.vendor && fallbackBasename
+ ? this.atrules[atrule.name] || this.atrules[atrule.basename]
+ : this.atrules[atrule.name];
+
+ return atruleEntry || null;
+ }
+ getAtrulePrelude(atruleName, fallbackBasename = true) {
+ const atrule = this.getAtrule(atruleName, fallbackBasename);
+
+ return atrule && atrule.prelude || null;
+ }
+ getAtruleDescriptor(atruleName, name) {
+ return this.atrules.hasOwnProperty(atruleName) && this.atrules.declarators
+ ? this.atrules[atruleName].declarators[name] || null
+ : null;
+ }
+ getProperty(propertyName, fallbackBasename = true) {
+ const property = names.property(propertyName);
+ const propertyEntry = property.vendor && fallbackBasename
+ ? this.properties[property.name] || this.properties[property.basename]
+ : this.properties[property.name];
+
+ return propertyEntry || null;
+ }
+ getType(name) {
+ return hasOwnProperty.call(this.types, name) ? this.types[name] : null;
+ }
+
+ validate() {
+ function validate(syntax, name, broken, descriptor) {
+ if (broken.has(name)) {
+ return broken.get(name);
+ }
+
+ broken.set(name, false);
+ if (descriptor.syntax !== null) {
+ walk.walk(descriptor.syntax, function(node) {
+ if (node.type !== 'Type' && node.type !== 'Property') {
+ return;
+ }
+
+ const map = node.type === 'Type' ? syntax.types : syntax.properties;
+ const brokenMap = node.type === 'Type' ? brokenTypes : brokenProperties;
+
+ if (!hasOwnProperty.call(map, node.name) || validate(syntax, node.name, brokenMap, map[node.name])) {
+ broken.set(name, true);
+ }
+ }, this);
+ }
+ }
+
+ let brokenTypes = new Map();
+ let brokenProperties = new Map();
+
+ for (const key in this.types) {
+ validate(this, key, brokenTypes, this.types[key]);
+ }
+
+ for (const key in this.properties) {
+ validate(this, key, brokenProperties, this.properties[key]);
+ }
+
+ brokenTypes = [...brokenTypes.keys()].filter(name => brokenTypes.get(name));
+ brokenProperties = [...brokenProperties.keys()].filter(name => brokenProperties.get(name));
+
+ if (brokenTypes.length || brokenProperties.length) {
+ return {
+ types: brokenTypes,
+ properties: brokenProperties
+ };
+ }
+
+ return null;
+ }
+ dump(syntaxAsAst, pretty) {
+ return {
+ generic: this.generic,
+ units: this.units,
+ types: dumpMapSyntax(this.types, !pretty, syntaxAsAst),
+ properties: dumpMapSyntax(this.properties, !pretty, syntaxAsAst),
+ atrules: dumpAtruleMapSyntax(this.atrules, !pretty, syntaxAsAst)
+ };
+ }
+ toString() {
+ return JSON.stringify(this.dump());
+ }
+}
+
+exports.Lexer = Lexer;
diff --git a/node_modules/css-tree/cjs/lexer/error.cjs b/node_modules/css-tree/cjs/lexer/error.cjs
new file mode 100644
index 00000000..8d252eeb
--- /dev/null
+++ b/node_modules/css-tree/cjs/lexer/error.cjs
@@ -0,0 +1,128 @@
+'use strict';
+
+const createCustomError = require('../utils/create-custom-error.cjs');
+const generate = require('../definition-syntax/generate.cjs');
+
+const defaultLoc = { offset: 0, line: 1, column: 1 };
+
+function locateMismatch(matchResult, node) {
+ const tokens = matchResult.tokens;
+ const longestMatch = matchResult.longestMatch;
+ const mismatchNode = longestMatch < tokens.length ? tokens[longestMatch].node || null : null;
+ const badNode = mismatchNode !== node ? mismatchNode : null;
+ let mismatchOffset = 0;
+ let mismatchLength = 0;
+ let entries = 0;
+ let css = '';
+ let start;
+ let end;
+
+ for (let i = 0; i < tokens.length; i++) {
+ const token = tokens[i].value;
+
+ if (i === longestMatch) {
+ mismatchLength = token.length;
+ mismatchOffset = css.length;
+ }
+
+ if (badNode !== null && tokens[i].node === badNode) {
+ if (i <= longestMatch) {
+ entries++;
+ } else {
+ entries = 0;
+ }
+ }
+
+ css += token;
+ }
+
+ if (longestMatch === tokens.length || entries > 1) { // last
+ start = fromLoc(badNode || node, 'end') || buildLoc(defaultLoc, css);
+ end = buildLoc(start);
+ } else {
+ start = fromLoc(badNode, 'start') ||
+ buildLoc(fromLoc(node, 'start') || defaultLoc, css.slice(0, mismatchOffset));
+ end = fromLoc(badNode, 'end') ||
+ buildLoc(start, css.substr(mismatchOffset, mismatchLength));
+ }
+
+ return {
+ css,
+ mismatchOffset,
+ mismatchLength,
+ start,
+ end
+ };
+}
+
+function fromLoc(node, point) {
+ const value = node && node.loc && node.loc[point];
+
+ if (value) {
+ return 'line' in value ? buildLoc(value) : value;
+ }
+
+ return null;
+}
+
+function buildLoc({ offset, line, column }, extra) {
+ const loc = {
+ offset,
+ line,
+ column
+ };
+
+ if (extra) {
+ const lines = extra.split(/\n|\r\n?|\f/);
+
+ loc.offset += extra.length;
+ loc.line += lines.length - 1;
+ loc.column = lines.length === 1 ? loc.column + extra.length : lines.pop().length + 1;
+ }
+
+ return loc;
+}
+
+const SyntaxReferenceError = function(type, referenceName) {
+ const error = createCustomError.createCustomError(
+ 'SyntaxReferenceError',
+ type + (referenceName ? ' `' + referenceName + '`' : '')
+ );
+
+ error.reference = referenceName;
+
+ return error;
+};
+
+const SyntaxMatchError = function(message, syntax, node, matchResult) {
+ const error = createCustomError.createCustomError('SyntaxMatchError', message);
+ const {
+ css,
+ mismatchOffset,
+ mismatchLength,
+ start,
+ end
+ } = locateMismatch(matchResult, node);
+
+ error.rawMessage = message;
+ error.syntax = syntax ? generate.generate(syntax) : '';
+ error.css = css;
+ error.mismatchOffset = mismatchOffset;
+ error.mismatchLength = mismatchLength;
+ error.message = message + '\n' +
+ ' syntax: ' + error.syntax + '\n' +
+ ' value: ' + (css || '') + '\n' +
+ ' --------' + new Array(error.mismatchOffset + 1).join('-') + '^';
+
+ Object.assign(error, start);
+ error.loc = {
+ source: (node && node.loc && node.loc.source) || '',
+ start,
+ end
+ };
+
+ return error;
+};
+
+exports.SyntaxMatchError = SyntaxMatchError;
+exports.SyntaxReferenceError = SyntaxReferenceError;
diff --git a/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs b/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs
new file mode 100644
index 00000000..a5dfba3e
--- /dev/null
+++ b/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs
@@ -0,0 +1,235 @@
+'use strict';
+
+const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');
+const types = require('../tokenizer/types.cjs');
+const utils = require('../tokenizer/utils.cjs');
+
+const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
+const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)
+const N = 0x006E; // U+006E LATIN SMALL LETTER N (n)
+const DISALLOW_SIGN = true;
+const ALLOW_SIGN = false;
+
+function isDelim(token, code) {
+ return token !== null && token.type === types.Delim && token.value.charCodeAt(0) === code;
+}
+
+function skipSC(token, offset, getNextToken) {
+ while (token !== null && (token.type === types.WhiteSpace || token.type === types.Comment)) {
+ token = getNextToken(++offset);
+ }
+
+ return offset;
+}
+
+function checkInteger(token, valueOffset, disallowSign, offset) {
+ if (!token) {
+ return 0;
+ }
+
+ const code = token.value.charCodeAt(valueOffset);
+
+ if (code === PLUSSIGN || code === HYPHENMINUS) {
+ if (disallowSign) {
+ // Number sign is not allowed
+ return 0;
+ }
+ valueOffset++;
+ }
+
+ for (; valueOffset < token.value.length; valueOffset++) {
+ if (!charCodeDefinitions.isDigit(token.value.charCodeAt(valueOffset))) {
+ // Integer is expected
+ return 0;
+ }
+ }
+
+ return offset + 1;
+}
+
+// ...
+// ... ['+' | '-']
+function consumeB(token, offset_, getNextToken) {
+ let sign = false;
+ let offset = skipSC(token, offset_, getNextToken);
+
+ token = getNextToken(offset);
+
+ if (token === null) {
+ return offset_;
+ }
+
+ if (token.type !== types.Number) {
+ if (isDelim(token, PLUSSIGN) || isDelim(token, HYPHENMINUS)) {
+ sign = true;
+ offset = skipSC(getNextToken(++offset), offset, getNextToken);
+ token = getNextToken(offset);
+
+ if (token === null || token.type !== types.Number) {
+ return 0;
+ }
+ } else {
+ return offset_;
+ }
+ }
+
+ if (!sign) {
+ const code = token.value.charCodeAt(0);
+ if (code !== PLUSSIGN && code !== HYPHENMINUS) {
+ // Number sign is expected
+ return 0;
+ }
+ }
+
+ return checkInteger(token, sign ? 0 : 1, sign, offset);
+}
+
+// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb
+function anPlusB(token, getNextToken) {
+ /* eslint-disable brace-style*/
+ let offset = 0;
+
+ if (!token) {
+ return 0;
+ }
+
+ //
+ if (token.type === types.Number) {
+ return checkInteger(token, 0, ALLOW_SIGN, offset); // b
+ }
+
+ // -n
+ // -n
+ // -n ['+' | '-']
+ // -n-
+ //
+ else if (token.type === types.Ident && token.value.charCodeAt(0) === HYPHENMINUS) {
+ // expect 1st char is N
+ if (!utils.cmpChar(token.value, 1, N)) {
+ return 0;
+ }
+
+ switch (token.value.length) {
+ // -n
+ // -n
+ // -n ['+' | '-']
+ case 2:
+ return consumeB(getNextToken(++offset), offset, getNextToken);
+
+ // -n-
+ case 3:
+ if (token.value.charCodeAt(2) !== HYPHENMINUS) {
+ return 0;
+ }
+
+ offset = skipSC(getNextToken(++offset), offset, getNextToken);
+ token = getNextToken(offset);
+
+ return checkInteger(token, 0, DISALLOW_SIGN, offset);
+
+ //
+ default:
+ if (token.value.charCodeAt(2) !== HYPHENMINUS) {
+ return 0;
+ }
+
+ return checkInteger(token, 3, DISALLOW_SIGN, offset);
+ }
+ }
+
+ // '+'? n
+ // '+'? n
+ // '+'? n ['+' | '-']
+ // '+'? n-
+ // '+'?
+ else if (token.type === types.Ident || (isDelim(token, PLUSSIGN) && getNextToken(offset + 1).type === types.Ident)) {
+ // just ignore a plus
+ if (token.type !== types.Ident) {
+ token = getNextToken(++offset);
+ }
+
+ if (token === null || !utils.cmpChar(token.value, 0, N)) {
+ return 0;
+ }
+
+ switch (token.value.length) {
+ // '+'? n
+ // '+'? n
+ // '+'? n ['+' | '-']
+ case 1:
+ return consumeB(getNextToken(++offset), offset, getNextToken);
+
+ // '+'? n-
+ case 2:
+ if (token.value.charCodeAt(1) !== HYPHENMINUS) {
+ return 0;
+ }
+
+ offset = skipSC(getNextToken(++offset), offset, getNextToken);
+ token = getNextToken(offset);
+
+ return checkInteger(token, 0, DISALLOW_SIGN, offset);
+
+ // '+'?
+ default:
+ if (token.value.charCodeAt(1) !== HYPHENMINUS) {
+ return 0;
+ }
+
+ return checkInteger(token, 2, DISALLOW_SIGN, offset);
+ }
+ }
+
+ //
+ //
+ //
+ //
+ // ['+' | '-']
+ else if (token.type === types.Dimension) {
+ let code = token.value.charCodeAt(0);
+ let sign = code === PLUSSIGN || code === HYPHENMINUS ? 1 : 0;
+ let i = sign;
+
+ for (; i < token.value.length; i++) {
+ if (!charCodeDefinitions.isDigit(token.value.charCodeAt(i))) {
+ break;
+ }
+ }
+
+ if (i === sign) {
+ // Integer is expected
+ return 0;
+ }
+
+ if (!utils.cmpChar(token.value, i, N)) {
+ return 0;
+ }
+
+ //
+ //
+ // ['+' | '-']
+ if (i + 1 === token.value.length) {
+ return consumeB(getNextToken(++offset), offset, getNextToken);
+ } else {
+ if (token.value.charCodeAt(i + 1) !== HYPHENMINUS) {
+ return 0;
+ }
+
+ //
+ if (i + 2 === token.value.length) {
+ offset = skipSC(getNextToken(++offset), offset, getNextToken);
+ token = getNextToken(offset);
+
+ return checkInteger(token, 0, DISALLOW_SIGN, offset);
+ }
+ //
+ else {
+ return checkInteger(token, i + 2, DISALLOW_SIGN, offset);
+ }
+ }
+ }
+
+ return 0;
+}
+
+module.exports = anPlusB;
diff --git a/node_modules/css-tree/cjs/lexer/generic-const.cjs b/node_modules/css-tree/cjs/lexer/generic-const.cjs
new file mode 100644
index 00000000..9b9f6157
--- /dev/null
+++ b/node_modules/css-tree/cjs/lexer/generic-const.cjs
@@ -0,0 +1,12 @@
+'use strict';
+
+// https://drafts.csswg.org/css-cascade-5/
+const cssWideKeywords = [
+ 'initial',
+ 'inherit',
+ 'unset',
+ 'revert',
+ 'revert-layer'
+];
+
+exports.cssWideKeywords = cssWideKeywords;
diff --git a/node_modules/css-tree/cjs/lexer/generic-urange.cjs b/node_modules/css-tree/cjs/lexer/generic-urange.cjs
new file mode 100644
index 00000000..ce167bb1
--- /dev/null
+++ b/node_modules/css-tree/cjs/lexer/generic-urange.cjs
@@ -0,0 +1,149 @@
+'use strict';
+
+const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');
+const types = require('../tokenizer/types.cjs');
+const utils = require('../tokenizer/utils.cjs');
+
+const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
+const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)
+const QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?)
+const U = 0x0075; // U+0075 LATIN SMALL LETTER U (u)
+
+function isDelim(token, code) {
+ return token !== null && token.type === types.Delim && token.value.charCodeAt(0) === code;
+}
+
+function startsWith(token, code) {
+ return token.value.charCodeAt(0) === code;
+}
+
+function hexSequence(token, offset, allowDash) {
+ let hexlen = 0;
+
+ for (let pos = offset; pos < token.value.length; pos++) {
+ const code = token.value.charCodeAt(pos);
+
+ if (code === HYPHENMINUS && allowDash && hexlen !== 0) {
+ hexSequence(token, offset + hexlen + 1, false);
+ return 6; // dissallow following question marks
+ }
+
+ if (!charCodeDefinitions.isHexDigit(code)) {
+ return 0; // not a hex digit
+ }
+
+ if (++hexlen > 6) {
+ return 0; // too many hex digits
+ } }
+
+ return hexlen;
+}
+
+function withQuestionMarkSequence(consumed, length, getNextToken) {
+ if (!consumed) {
+ return 0; // nothing consumed
+ }
+
+ while (isDelim(getNextToken(length), QUESTIONMARK)) {
+ if (++consumed > 6) {
+ return 0; // too many question marks
+ }
+
+ length++;
+ }
+
+ return length;
+}
+
+// https://drafts.csswg.org/css-syntax/#urange
+// Informally, the production has three forms:
+// U+0001
+// Defines a range consisting of a single code point, in this case the code point "1".
+// U+0001-00ff
+// Defines a range of codepoints between the first and the second value, in this case
+// the range between "1" and "ff" (255 in decimal) inclusive.
+// U+00??
+// Defines a range of codepoints where the "?" characters range over all hex digits,
+// in this case defining the same as the value U+0000-00ff.
+// In each form, a maximum of 6 digits is allowed for each hexadecimal number (if you treat "?" as a hexadecimal digit).
+//
+// =
+// u '+' '?'* |
+// u '?'* |
+// u '?'* |
+// u |
+// u |
+// u '+' '?'+
+function urange(token, getNextToken) {
+ let length = 0;
+
+ // should start with `u` or `U`
+ if (token === null || token.type !== types.Ident || !utils.cmpChar(token.value, 0, U)) {
+ return 0;
+ }
+
+ token = getNextToken(++length);
+ if (token === null) {
+ return 0;
+ }
+
+ // u '+' '?'*
+ // u '+' '?'+
+ if (isDelim(token, PLUSSIGN)) {
+ token = getNextToken(++length);
+ if (token === null) {
+ return 0;
+ }
+
+ if (token.type === types.Ident) {
+ // u '+' '?'*
+ return withQuestionMarkSequence(hexSequence(token, 0, true), ++length, getNextToken);
+ }
+
+ if (isDelim(token, QUESTIONMARK)) {
+ // u '+' '?'+
+ return withQuestionMarkSequence(1, ++length, getNextToken);
+ }
+
+ // Hex digit or question mark is expected
+ return 0;
+ }
+
+ // u '?'*
+ // u
+ // u
+ if (token.type === types.Number) {
+ const consumedHexLength = hexSequence(token, 1, true);
+ if (consumedHexLength === 0) {
+ return 0;
+ }
+
+ token = getNextToken(++length);
+ if (token === null) {
+ // u
+ return length;
+ }
+
+ if (token.type === types.Dimension || token.type === types.Number) {
+ // u
+ // u
+ if (!startsWith(token, HYPHENMINUS) || !hexSequence(token, 1, false)) {
+ return 0;
+ }
+
+ return length + 1;
+ }
+
+ // u '?'*
+ return withQuestionMarkSequence(consumedHexLength, length, getNextToken);
+ }
+
+ // u '?'*
+ if (token.type === types.Dimension) {
+ return withQuestionMarkSequence(hexSequence(token, 1, true), ++length, getNextToken);
+ }
+
+ return 0;
+}
+
+module.exports = urange;
diff --git a/node_modules/css-tree/cjs/lexer/generic.cjs b/node_modules/css-tree/cjs/lexer/generic.cjs
new file mode 100644
index 00000000..6b9e5ced
--- /dev/null
+++ b/node_modules/css-tree/cjs/lexer/generic.cjs
@@ -0,0 +1,573 @@
+'use strict';
+
+const genericConst = require('./generic-const.cjs');
+const genericAnPlusB = require('./generic-an-plus-b.cjs');
+const genericUrange = require('./generic-urange.cjs');
+const types = require('../tokenizer/types.cjs');
+const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');
+const utils = require('../tokenizer/utils.cjs');
+
+const calcFunctionNames = ['calc(', '-moz-calc(', '-webkit-calc('];
+const balancePair = new Map([
+ [types.Function, types.RightParenthesis],
+ [types.LeftParenthesis, types.RightParenthesis],
+ [types.LeftSquareBracket, types.RightSquareBracket],
+ [types.LeftCurlyBracket, types.RightCurlyBracket]
+]);
+
+// safe char code getter
+function charCodeAt(str, index) {
+ return index < str.length ? str.charCodeAt(index) : 0;
+}
+
+function eqStr(actual, expected) {
+ return utils.cmpStr(actual, 0, actual.length, expected);
+}
+
+function eqStrAny(actual, expected) {
+ for (let i = 0; i < expected.length; i++) {
+ if (eqStr(actual, expected[i])) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+// IE postfix hack, i.e. 123\0 or 123px\9
+function isPostfixIeHack(str, offset) {
+ if (offset !== str.length - 2) {
+ return false;
+ }
+
+ return (
+ charCodeAt(str, offset) === 0x005C && // U+005C REVERSE SOLIDUS (\)
+ charCodeDefinitions.isDigit(charCodeAt(str, offset + 1))
+ );
+}
+
+function outOfRange(opts, value, numEnd) {
+ if (opts && opts.type === 'Range') {
+ const num = Number(
+ numEnd !== undefined && numEnd !== value.length
+ ? value.substr(0, numEnd)
+ : value
+ );
+
+ if (isNaN(num)) {
+ return true;
+ }
+
+ // FIXME: when opts.min is a string it's a dimension, skip a range validation
+ // for now since it requires a type covertation which is not implmented yet
+ if (opts.min !== null && num < opts.min && typeof opts.min !== 'string') {
+ return true;
+ }
+
+ // FIXME: when opts.max is a string it's a dimension, skip a range validation
+ // for now since it requires a type covertation which is not implmented yet
+ if (opts.max !== null && num > opts.max && typeof opts.max !== 'string') {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function consumeFunction(token, getNextToken) {
+ let balanceCloseType = 0;
+ let balanceStash = [];
+ let length = 0;
+
+ // balanced token consuming
+ scan:
+ do {
+ switch (token.type) {
+ case types.RightCurlyBracket:
+ case types.RightParenthesis:
+ case types.RightSquareBracket:
+ if (token.type !== balanceCloseType) {
+ break scan;
+ }
+
+ balanceCloseType = balanceStash.pop();
+
+ if (balanceStash.length === 0) {
+ length++;
+ break scan;
+ }
+
+ break;
+
+ case types.Function:
+ case types.LeftParenthesis:
+ case types.LeftSquareBracket:
+ case types.LeftCurlyBracket:
+ balanceStash.push(balanceCloseType);
+ balanceCloseType = balancePair.get(token.type);
+ break;
+ }
+
+ length++;
+ } while (token = getNextToken(length));
+
+ return length;
+}
+
+// TODO: implement
+// can be used wherever , , ,