@khanacademy/kmath 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @khanacademy/kmath
2
2
 
3
+ ## 0.1.9
4
+
5
+ ### Patch Changes
6
+
7
+ - [#949](https://github.com/Khan/perseus/pull/949) [`59ce1e09`](https://github.com/Khan/perseus/commit/59ce1e0990cecd1123d7b9a671b032fcd03ce1b1) Thanks [@benchristel](https://github.com/benchristel)! - Internal: use built-in JS functions instead of underscore
8
+
9
+ ## 0.1.8
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [[`1f4e17ba`](https://github.com/Khan/perseus/commit/1f4e17ba77e1491523813655af18a70285a25989), [`8857950b`](https://github.com/Khan/perseus/commit/8857950bdeeb6e13bc3766b1c6545289b21cbe2a)]:
14
+ - @khanacademy/perseus-core@1.4.1
15
+
3
16
  ## 0.1.7
4
17
 
5
18
  ### Patch Changes
package/dist/es/index.js CHANGED
@@ -3,7 +3,7 @@ import _ from 'underscore';
3
3
 
4
4
  // This file is processed by a Rollup plugin (replace) to inject the production
5
5
  const libName = "@khanacademy/kmath";
6
- const libVersion = "0.1.7";
6
+ const libVersion = "0.1.9";
7
7
  addLibraryVersionToPerseusDebug(libName, libVersion);
8
8
 
9
9
  /**
@@ -120,6 +120,14 @@ function arraySum(array) {
120
120
  function arrayProduct(array) {
121
121
  return array.reduce((memo, arg) => memo * arg, 1);
122
122
  }
123
+ function zip(...arrays) {
124
+ const n = Math.min(...arrays.map(a => a.length));
125
+ const results = [];
126
+ for (let i = 0; i < n; i++) {
127
+ results.push(arrays.map(a => a[i]));
128
+ }
129
+ return results;
130
+ }
123
131
 
124
132
  /**
125
133
  * Checks if the given vector contains only numbers and, optionally, is of the
@@ -130,7 +138,7 @@ function arrayProduct(array) {
130
138
  * is([1, 2, 3], 1) -> false
131
139
  */
132
140
  function is$1(vec, dimension) {
133
- if (!_.isArray(vec)) {
141
+ if (!Array.isArray(vec)) {
134
142
  return false;
135
143
  }
136
144
  if (dimension !== undefined && vec.length !== dimension) {
@@ -150,7 +158,7 @@ function length(v) {
150
158
  }
151
159
  // Dot product of two vectors
152
160
  function dot(a, b) {
153
- const zipped = _.zip(a, b);
161
+ const zipped = zip(a, b);
154
162
  const multiplied = zipped.map(arrayProduct);
155
163
  return arraySum(multiplied);
156
164
  }
@@ -160,13 +168,13 @@ function dot(a, b) {
160
168
  * add([1, 2], [3, 4]) -> [4, 6]
161
169
  */
162
170
  function add(...vecs) {
163
- const zipped = _.zip(...vecs);
171
+ const zipped = zip(...vecs);
164
172
  // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.
165
173
  return zipped.map(arraySum);
166
174
  }
167
175
  function subtract(v1, v2) {
168
176
  // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.
169
- return _.zip(v1, v2).map(dim => dim[0] - dim[1]);
177
+ return zip(v1, v2).map(dim => dim[0] - dim[1]);
170
178
  }
171
179
  function negate(v) {
172
180
  // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.
@@ -183,11 +191,7 @@ function scale(v1, scalar) {
183
191
  });
184
192
  }
185
193
  function equal$3(v1, v2, tolerance) {
186
- // _.zip will nicely deal with the lengths, going through
187
- // the length of the longest vector. knumber.equal then
188
- // returns false for any number compared to the undefined
189
- // passed in if one of the vectors is shorter.
190
- return _.zip(v1, v2).every(pair => equal$4(pair[0], pair[1], tolerance));
194
+ return v1.length === v2.length && zip(v1, v2).every(pair => equal$4(pair[0], pair[1], tolerance));
191
195
  }
192
196
  function codirectional(v1, v2, tolerance) {
193
197
  // The origin is trivially codirectional with all other vectors.
@@ -290,6 +294,7 @@ function ceilTo$1(vec, increment) {
290
294
 
291
295
  var vector = /*#__PURE__*/Object.freeze({
292
296
  __proto__: null,
297
+ zip: zip,
293
298
  is: is$1,
294
299
  normalize: normalize,
295
300
  length: length,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/version.ts","../../src/number.ts","../../src/vector.ts","../../src/point.ts","../../src/line.ts","../../src/ray.ts"],"sourcesContent":["// This file is processed by a Rollup plugin (replace) to inject the production\n// version number during the release build.\n// In dev, you'll never see the version number.\n\nimport {addLibraryVersionToPerseusDebug} from \"@khanacademy/perseus-core\";\n\nconst libName = \"@khanacademy/kmath\";\nexport const libVersion = \"__lib_version__\";\n\naddLibraryVersionToPerseusDebug(libName, libVersion);\n","/**\n * Number Utils\n * A number is a js-number, e.g. 5.12\n */\n\nimport _ from \"underscore\";\n\nexport const DEFAULT_TOLERANCE = 1e-9;\n\n// TODO: Should this just be Number.Epsilon\nexport const EPSILON: number = Math.pow(2, -42);\n\nexport function is(x: any): boolean {\n return _.isNumber(x) && !_.isNaN(x);\n}\n\nexport function equal(x: number, y: number, tolerance?: number): boolean {\n // Checking for undefined makes this function behave nicely\n // with vectors of different lengths that are _.zip'd together\n if (x == null || y == null) {\n return x === y;\n }\n // We check === here so that +/-Infinity comparisons work correctly\n if (x === y) {\n return true;\n }\n if (tolerance == null) {\n tolerance = DEFAULT_TOLERANCE;\n }\n return Math.abs(x - y) < tolerance;\n}\n\nexport function sign(\n x: number,\n tolerance?: number,\n): number /* Should be: 0 | 1 | -1 */ {\n return equal(x, 0, tolerance) ? 0 : Math.abs(x) / x;\n}\n\nexport function isInteger(num: number, tolerance?: number): boolean {\n return equal(Math.round(num), num, tolerance);\n}\n\n// Round a number to a certain number of decimal places\nexport function round(num: number, precision: number): number {\n const factor = Math.pow(10, precision);\n return Math.round(num * factor) / factor;\n}\n\n// Round num to the nearest multiple of increment\n// i.e. roundTo(83, 5) -> 85\nexport function roundTo(num: number, increment: number): number {\n return Math.round(num / increment) * increment;\n}\n\nexport function floorTo(num: number, increment: number): number {\n return Math.floor(num / increment) * increment;\n}\n\nexport function ceilTo(num: number, increment: number): number {\n return Math.ceil(num / increment) * increment;\n}\n\n/**\n * toFraction\n *\n * Returns a [numerator, denominator] array rational representation\n * of `decimal`\n *\n * See http://en.wikipedia.org/wiki/Continued_fraction for implementation\n * details\n *\n * toFraction(4/8) => [1, 2]\n * toFraction(0.66) => [33, 50]\n * toFraction(0.66, 0.01) => [2/3]\n * toFraction(283 + 1/3) => [850, 3]\n */\nexport function toFraction(\n decimal: number,\n // can't be 0\n tolerance: number = EPSILON,\n maxDenominator = 1000,\n): [number, number] {\n // Initialize everything to compute successive terms of\n // continued-fraction approximations via recurrence relation\n let n = [1, 0];\n let d = [0, 1];\n let a = Math.floor(decimal);\n let rem = decimal - a;\n\n while (d[0] <= maxDenominator) {\n if (equal(n[0] / d[0], decimal, tolerance)) {\n return [n[0], d[0]];\n }\n n = [a * n[0] + n[1], n[0]];\n d = [a * d[0] + d[1], d[0]];\n a = Math.floor(1 / rem);\n rem = 1 / rem - a;\n }\n\n // We failed to find a nice rational representation,\n // so return an irrational \"fraction\"\n return [decimal, 1];\n}\n","/**\n * Vector Utils\n * A vector is an array of numbers e.g. [0, 3, 4].\n */\n\nimport _ from \"underscore\";\n\nimport * as knumber from \"./number\";\n\ntype Vector = ReadonlyArray<number>;\n\nfunction arraySum(array: ReadonlyArray<number>): number {\n return array.reduce((memo, arg) => memo + arg, 0);\n}\n\nfunction arrayProduct(array: ReadonlyArray<number>): number {\n return array.reduce((memo, arg) => memo * arg, 1);\n}\n\n/**\n * Checks if the given vector contains only numbers and, optionally, is of the\n * right dimension (length).\n *\n * is([1, 2, 3]) -> true\n * is([1, \"Hello\", 3]) -> false\n * is([1, 2, 3], 1) -> false\n */\nexport function is<T>(vec: ReadonlyArray<T>, dimension?: number): boolean {\n if (!_.isArray(vec)) {\n return false;\n }\n if (dimension !== undefined && vec.length !== dimension) {\n return false;\n }\n return vec.every(knumber.is);\n}\n\n// Normalize to a unit vector\nexport function normalize<V extends Vector>(v: V): V {\n return scale(v, 1 / length(v));\n}\n\n// Length/magnitude of a vector\nexport function length(v: Vector): number {\n return Math.sqrt(dot(v, v));\n}\n// Dot product of two vectors\nexport function dot(a: Vector, b: Vector): number {\n const zipped = _.zip(a, b);\n const multiplied = zipped.map(arrayProduct);\n return arraySum(multiplied);\n}\n\n/* vector-add multiple [x, y] coords/vectors\n *\n * add([1, 2], [3, 4]) -> [4, 6]\n */\nexport function add<V extends Vector>(...vecs: ReadonlyArray<V>): V {\n const zipped = _.zip(...vecs);\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return zipped.map(arraySum);\n}\n\nexport function subtract<V extends Vector>(v1: V, v2: V): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return _.zip(v1, v2).map((dim) => dim[0] - dim[1]);\n}\n\nexport function negate<V extends Vector>(v: V): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return v.map((x) => {\n return -x;\n });\n}\n\n// Scale a vector\nexport function scale<V extends Vector>(v1: V, scalar: number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return v1.map((x) => {\n return x * scalar;\n });\n}\n\nexport function equal(v1: Vector, v2: Vector, tolerance?: number): boolean {\n // _.zip will nicely deal with the lengths, going through\n // the length of the longest vector. knumber.equal then\n // returns false for any number compared to the undefined\n // passed in if one of the vectors is shorter.\n return _.zip(v1, v2).every((pair) =>\n knumber.equal(pair[0], pair[1], tolerance),\n );\n}\n\nexport function codirectional(\n v1: Vector,\n v2: Vector,\n tolerance?: number,\n): boolean {\n // The origin is trivially codirectional with all other vectors.\n // This gives nice semantics for codirectionality between points when\n // comparing their difference vectors.\n if (\n knumber.equal(length(v1), 0, tolerance) ||\n knumber.equal(length(v2), 0, tolerance)\n ) {\n return true;\n }\n\n v1 = normalize(v1);\n v2 = normalize(v2);\n\n return equal(v1, v2, tolerance);\n}\n\nexport function collinear(v1: Vector, v2: Vector, tolerance?: number): boolean {\n return (\n codirectional(v1, v2, tolerance) ||\n codirectional(v1, negate(v2), tolerance)\n );\n}\n\n// TODO(jeremy) These coordinate conversion functions really only handle 2D points (ie. [number, number])\n\n// Convert a cartesian coordinate into a radian polar coordinate\nexport function polarRadFromCart(\n v: ReadonlyArray<number>,\n): ReadonlyArray<number> {\n const radius = length(v);\n let theta = Math.atan2(v[1], v[0]);\n\n // Convert angle range from [-pi, pi] to [0, 2pi]\n if (theta < 0) {\n theta += 2 * Math.PI;\n }\n\n return [radius, theta];\n}\n\n// Converts a cartesian coordinate into a degree polar coordinate\nexport function polarDegFromCart(\n v: ReadonlyArray<number>,\n): ReadonlyArray<number> /* TODO: convert to tuple/Point */ {\n const polar = polarRadFromCart(v);\n return [polar[0], (polar[1] * 180) / Math.PI];\n}\n\n/* Convert a polar coordinate into a cartesian coordinate\n *\n * Examples:\n * cartFromPolarRad(5, Math.PI)\n */\nexport function cartFromPolarRad(\n radius: number,\n theta = 0,\n): ReadonlyArray<number> /* TODO: convert to tuple/Point */ {\n return [radius * Math.cos(theta), radius * Math.sin(theta)];\n}\n\n/* Convert a polar coordinate into a cartesian coordinate\n *\n * Examples:\n * cartFromPolarDeg(5, 30)\n */\nexport function cartFromPolarDeg(\n radius: number,\n theta = 0,\n): ReadonlyArray<number> {\n return cartFromPolarRad(radius, (theta * Math.PI) / 180);\n}\n\n// Rotate vector\nexport function rotateRad(\n v: ReadonlyArray<number>,\n theta: number,\n): ReadonlyArray<number> {\n const polar = polarRadFromCart(v);\n const angle = polar[1] + theta;\n return cartFromPolarRad(polar[0], angle);\n}\n\nexport function rotateDeg(\n v: ReadonlyArray<number>,\n theta: number,\n): ReadonlyArray<number> {\n const polar = polarDegFromCart(v);\n const angle = polar[1] + theta;\n return cartFromPolarDeg(polar[0], angle);\n}\n\n// Angle between two vectors\nexport function angleRad(v1: Vector, v2: Vector): number {\n return Math.acos(dot(v1, v2) / (length(v1) * length(v2)));\n}\n\nexport function angleDeg(v1: Vector, v2: Vector): number {\n return (angleRad(v1, v2) * 180) / Math.PI;\n}\n\n// Vector projection of v1 onto v2\nexport function projection<V extends Vector>(v1: V, v2: V): V {\n const scalar = dot(v1, v2) / dot(v2, v2);\n return scale(v2, scalar);\n}\n\n// Round each number to a certain number of decimal places\nexport function round<V extends Vector>(vec: V, precision: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) => knumber.round(elem, precision[i] || precision));\n}\n\n// Round each number to the nearest increment\nexport function roundTo<V extends Vector>(vec: V, increment: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) =>\n knumber.roundTo(elem, increment[i] || increment),\n );\n}\n\nexport function floorTo<V extends Vector>(vec: V, increment: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) =>\n knumber.floorTo(elem, increment[i] || increment),\n );\n}\n\nexport function ceilTo<V extends Vector>(vec: V, increment: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) =>\n knumber.ceilTo(elem, increment[i] || increment),\n );\n}\n","/**\n * Point Utils\n * A point is an array of two numbers e.g. [0, 0].\n */\n\nimport _ from \"underscore\";\n\nimport * as knumber from \"./number\";\nimport * as kvector from \"./vector\";\n\n// A point, in 2D, 3D, or nD space.\nexport type Point = ReadonlyArray<number>;\n\n// Rotate point (around origin unless a center is specified)\nexport function rotateRad(point: Point, theta: number, center?: Point): Point {\n if (center === undefined) {\n return kvector.rotateRad(point, theta);\n } else {\n return kvector.add(\n center,\n kvector.rotateRad(kvector.subtract(point, center), theta),\n );\n }\n}\n\nexport function rotateDeg(point: Point, theta: number, center?: Point): Point {\n if (center === undefined) {\n return kvector.rotateDeg(point, theta);\n } else {\n return kvector.add(\n center,\n kvector.rotateDeg(kvector.subtract(point, center), theta),\n );\n }\n}\n\n// Distance between two points\nexport function distanceToPoint(point1: Point, point2: Point): number {\n return kvector.length(kvector.subtract(point1, point2));\n}\n\n// Distance between point and line\nexport function distanceToLine(point: Point, line: [Point, Point]): number {\n const lv = kvector.subtract(line[1], line[0]);\n const pv = kvector.subtract(point, line[0]);\n const projectedPv = kvector.projection(pv, lv);\n const distancePv = kvector.subtract(projectedPv, pv);\n return kvector.length(distancePv);\n}\n\n// Reflect point over line\nexport function reflectOverLine<P extends Point>(point: P, line: [P, P]): P {\n const lv = kvector.subtract(line[1], line[0]);\n const pv = kvector.subtract(point, line[0]);\n const projectedPv = kvector.projection(pv, lv);\n const reflectedPv = kvector.subtract(kvector.scale(projectedPv, 2), pv);\n return kvector.add(line[0], reflectedPv);\n}\n\n/**\n * Compares two points, returning -1, 0, or 1, for use with\n * Array.prototype.sort\n *\n * Note: This technically doesn't satisfy the total-ordering\n * requirements of Array.prototype.sort unless equalityTolerance\n * is 0. In some cases very close points that compare within a\n * few equalityTolerances could appear in the wrong order.\n */\nexport function compare(\n point1: Point,\n point2: Point,\n equalityTolerance?: number,\n): number /* TODO: convert to -1 | 0 | 1 type */ {\n if (point1.length !== point2.length) {\n return point1.length - point2.length;\n }\n for (let i = 0; i < point1.length; i++) {\n if (!knumber.equal(point1[i], point2[i], equalityTolerance)) {\n return point1[i] - point2[i];\n }\n }\n return 0;\n}\n\n// Check if a value is a point\nexport const is = kvector.is;\n\n// Add and subtract vector(s)\nexport const addVector = kvector.add;\nexport const addVectors = kvector.add;\nexport const subtractVector = kvector.subtract;\nexport const equal = kvector.equal;\n\n// Convert from cartesian to polar and back\nexport const polarRadFromCart = kvector.polarRadFromCart;\nexport const polarDegFromCart = kvector.polarDegFromCart;\nexport const cartFromPolarRad = kvector.cartFromPolarRad;\nexport const cartFromPolarDeg = kvector.cartFromPolarDeg;\n\n// Rounding\nexport const round = kvector.round;\nexport const roundTo = kvector.roundTo;\nexport const floorTo = kvector.floorTo;\nexport const ceilTo = kvector.ceilTo;\n","/**\n * Line Utils\n * A line is an array of two points e.g. [[-5, 0], [5, 0]].\n */\n\nimport * as kpoint from \"./point\";\nimport * as kvector from \"./vector\";\n\nimport type {Point} from \"./point\";\n\nexport type Line = [Point, Point];\n\nexport function distanceToPoint(line: Line, point: Point): number {\n return kpoint.distanceToLine(point, line);\n}\n\nexport function reflectPoint(line: Line, point: Point): Point {\n return kpoint.reflectOverLine(point, line);\n}\n\nexport function midpoint(line: Line): Point {\n return [(line[0][0] + line[1][0]) / 2, (line[0][1] + line[1][1]) / 2];\n}\n\nexport function equal(line1: Line, line2: Line, tolerance?: number): boolean {\n // TODO: A nicer implementation might just check collinearity of\n // vectors using underscore magick\n // Compare the directions of the lines\n const v1 = kvector.subtract(line1[1], line1[0]);\n const v2 = kvector.subtract(line2[1], line2[0]);\n if (!kvector.collinear(v1, v2, tolerance)) {\n return false;\n }\n // If the start point is the same for the two lines, then they are the same\n if (kpoint.equal(line1[0], line2[0])) {\n return true;\n }\n // Make sure that the direction to get from line1 to\n // line2 is the same as the direction of the lines\n const line1ToLine2Vector = kvector.subtract(line2[0], line1[0]);\n return kvector.collinear(v1, line1ToLine2Vector, tolerance);\n}\n","/**\n * Ray Utils\n * A ray (→) is an array of an endpoint and another point along the ray.\n * For example, [[0, 0], [1, 0]] is the ray starting at the origin and\n * traveling along the positive x-axis.\n */\n\nimport * as kpoint from \"./point\";\nimport * as kvector from \"./vector\";\n\nimport type {Point} from \"./point\";\n\nexport type Ray = [Point, Point];\n\nexport function equal(ray1: Ray, ray2: Ray, tolerance?: number): boolean {\n // Compare the directions of the rays\n const v1 = kvector.subtract(ray1[1], ray1[0]);\n const v2 = kvector.subtract(ray2[1], ray2[0]);\n\n const sameOrigin = kpoint.equal(ray1[0], ray2[0]);\n const codirectional = kvector.codirectional(v1, v2, tolerance);\n\n return sameOrigin && codirectional;\n}\n"],"names":["libName","libVersion","addLibraryVersionToPerseusDebug","DEFAULT_TOLERANCE","EPSILON","Math","pow","is","x","_","isNumber","isNaN","equal","y","tolerance","abs","sign","isInteger","num","round","precision","factor","roundTo","increment","floorTo","floor","ceilTo","ceil","toFraction","decimal","maxDenominator","n","d","a","rem","arraySum","array","reduce","memo","arg","arrayProduct","vec","dimension","isArray","undefined","length","every","knumber","normalize","v","scale","sqrt","dot","b","zipped","zip","multiplied","map","add","vecs","subtract","v1","v2","dim","negate","scalar","pair","codirectional","collinear","polarRadFromCart","radius","theta","atan2","PI","polarDegFromCart","polar","cartFromPolarRad","cos","sin","cartFromPolarDeg","rotateRad","angle","rotateDeg","angleRad","acos","angleDeg","projection","elem","i","point","center","kvector","distanceToPoint","point1","point2","distanceToLine","line","lv","pv","projectedPv","distancePv","reflectOverLine","reflectedPv","compare","equalityTolerance","addVector","addVectors","subtractVector","kpoint","reflectPoint","midpoint","line1","line2","line1ToLine2Vector","ray1","ray2","sameOrigin"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/version.ts","../../src/number.ts","../../src/vector.ts","../../src/point.ts","../../src/line.ts","../../src/ray.ts"],"sourcesContent":["// This file is processed by a Rollup plugin (replace) to inject the production\n// version number during the release build.\n// In dev, you'll never see the version number.\n\nimport {addLibraryVersionToPerseusDebug} from \"@khanacademy/perseus-core\";\n\nconst libName = \"@khanacademy/kmath\";\nexport const libVersion = \"__lib_version__\";\n\naddLibraryVersionToPerseusDebug(libName, libVersion);\n","/**\n * Number Utils\n * A number is a js-number, e.g. 5.12\n */\n\nimport _ from \"underscore\";\n\nexport const DEFAULT_TOLERANCE = 1e-9;\n\n// TODO: Should this just be Number.Epsilon\nexport const EPSILON: number = Math.pow(2, -42);\n\nexport function is(x: any): boolean {\n return _.isNumber(x) && !_.isNaN(x);\n}\n\nexport function equal(x: number, y: number, tolerance?: number): boolean {\n // Checking for undefined makes this function behave nicely\n // with vectors of different lengths that are _.zip'd together\n if (x == null || y == null) {\n return x === y;\n }\n // We check === here so that +/-Infinity comparisons work correctly\n if (x === y) {\n return true;\n }\n if (tolerance == null) {\n tolerance = DEFAULT_TOLERANCE;\n }\n return Math.abs(x - y) < tolerance;\n}\n\nexport function sign(\n x: number,\n tolerance?: number,\n): number /* Should be: 0 | 1 | -1 */ {\n return equal(x, 0, tolerance) ? 0 : Math.abs(x) / x;\n}\n\nexport function isInteger(num: number, tolerance?: number): boolean {\n return equal(Math.round(num), num, tolerance);\n}\n\n// Round a number to a certain number of decimal places\nexport function round(num: number, precision: number): number {\n const factor = Math.pow(10, precision);\n return Math.round(num * factor) / factor;\n}\n\n// Round num to the nearest multiple of increment\n// i.e. roundTo(83, 5) -> 85\nexport function roundTo(num: number, increment: number): number {\n return Math.round(num / increment) * increment;\n}\n\nexport function floorTo(num: number, increment: number): number {\n return Math.floor(num / increment) * increment;\n}\n\nexport function ceilTo(num: number, increment: number): number {\n return Math.ceil(num / increment) * increment;\n}\n\n/**\n * toFraction\n *\n * Returns a [numerator, denominator] array rational representation\n * of `decimal`\n *\n * See http://en.wikipedia.org/wiki/Continued_fraction for implementation\n * details\n *\n * toFraction(4/8) => [1, 2]\n * toFraction(0.66) => [33, 50]\n * toFraction(0.66, 0.01) => [2/3]\n * toFraction(283 + 1/3) => [850, 3]\n */\nexport function toFraction(\n decimal: number,\n // can't be 0\n tolerance: number = EPSILON,\n maxDenominator = 1000,\n): [number, number] {\n // Initialize everything to compute successive terms of\n // continued-fraction approximations via recurrence relation\n let n = [1, 0];\n let d = [0, 1];\n let a = Math.floor(decimal);\n let rem = decimal - a;\n\n while (d[0] <= maxDenominator) {\n if (equal(n[0] / d[0], decimal, tolerance)) {\n return [n[0], d[0]];\n }\n n = [a * n[0] + n[1], n[0]];\n d = [a * d[0] + d[1], d[0]];\n a = Math.floor(1 / rem);\n rem = 1 / rem - a;\n }\n\n // We failed to find a nice rational representation,\n // so return an irrational \"fraction\"\n return [decimal, 1];\n}\n","/**\n * Vector Utils\n * A vector is an array of numbers e.g. [0, 3, 4].\n */\n\nimport * as knumber from \"./number\";\n\ntype Vector = ReadonlyArray<number>;\n\nfunction arraySum(array: ReadonlyArray<number>): number {\n return array.reduce((memo, arg) => memo + arg, 0);\n}\n\nfunction arrayProduct(array: ReadonlyArray<number>): number {\n return array.reduce((memo, arg) => memo * arg, 1);\n}\n\nexport function zip<T>(xs: ReadonlyArray<T>, ys: ReadonlyArray<T>): [T, T][];\nexport function zip<T>(...arrays: ReadonlyArray<T>[]): T[][];\nexport function zip<T>(...arrays: ReadonlyArray<T>[]): T[][] {\n const n = Math.min(...arrays.map((a) => a.length));\n const results: T[][] = [];\n for (let i = 0; i < n; i++) {\n results.push(arrays.map((a) => a[i]));\n }\n return results;\n}\n\n/**\n * Checks if the given vector contains only numbers and, optionally, is of the\n * right dimension (length).\n *\n * is([1, 2, 3]) -> true\n * is([1, \"Hello\", 3]) -> false\n * is([1, 2, 3], 1) -> false\n */\nexport function is<T>(vec: ReadonlyArray<T>, dimension?: number): boolean {\n if (!Array.isArray(vec)) {\n return false;\n }\n if (dimension !== undefined && vec.length !== dimension) {\n return false;\n }\n return vec.every(knumber.is);\n}\n\n// Normalize to a unit vector\nexport function normalize<V extends Vector>(v: V): V {\n return scale(v, 1 / length(v));\n}\n\n// Length/magnitude of a vector\nexport function length(v: Vector): number {\n return Math.sqrt(dot(v, v));\n}\n// Dot product of two vectors\nexport function dot(a: Vector, b: Vector): number {\n const zipped = zip(a, b);\n const multiplied = zipped.map(arrayProduct);\n return arraySum(multiplied);\n}\n\n/* vector-add multiple [x, y] coords/vectors\n *\n * add([1, 2], [3, 4]) -> [4, 6]\n */\nexport function add<V extends Vector>(...vecs: ReadonlyArray<V>): V {\n const zipped = zip(...vecs);\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return zipped.map(arraySum);\n}\n\nexport function subtract<V extends Vector>(v1: V, v2: V): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return zip(v1, v2).map((dim) => dim[0] - dim[1]);\n}\n\nexport function negate<V extends Vector>(v: V): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return v.map((x) => {\n return -x;\n });\n}\n\n// Scale a vector\nexport function scale<V extends Vector>(v1: V, scalar: number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return v1.map((x) => {\n return x * scalar;\n });\n}\n\nexport function equal(v1: Vector, v2: Vector, tolerance?: number): boolean {\n return (\n v1.length === v2.length &&\n zip(v1, v2).every((pair) => knumber.equal(pair[0], pair[1], tolerance))\n );\n}\n\nexport function codirectional(\n v1: Vector,\n v2: Vector,\n tolerance?: number,\n): boolean {\n // The origin is trivially codirectional with all other vectors.\n // This gives nice semantics for codirectionality between points when\n // comparing their difference vectors.\n if (\n knumber.equal(length(v1), 0, tolerance) ||\n knumber.equal(length(v2), 0, tolerance)\n ) {\n return true;\n }\n\n v1 = normalize(v1);\n v2 = normalize(v2);\n\n return equal(v1, v2, tolerance);\n}\n\nexport function collinear(v1: Vector, v2: Vector, tolerance?: number): boolean {\n return (\n codirectional(v1, v2, tolerance) ||\n codirectional(v1, negate(v2), tolerance)\n );\n}\n\n// TODO(jeremy) These coordinate conversion functions really only handle 2D points (ie. [number, number])\n\n// Convert a cartesian coordinate into a radian polar coordinate\nexport function polarRadFromCart(\n v: ReadonlyArray<number>,\n): ReadonlyArray<number> {\n const radius = length(v);\n let theta = Math.atan2(v[1], v[0]);\n\n // Convert angle range from [-pi, pi] to [0, 2pi]\n if (theta < 0) {\n theta += 2 * Math.PI;\n }\n\n return [radius, theta];\n}\n\n// Converts a cartesian coordinate into a degree polar coordinate\nexport function polarDegFromCart(\n v: ReadonlyArray<number>,\n): ReadonlyArray<number> /* TODO: convert to tuple/Point */ {\n const polar = polarRadFromCart(v);\n return [polar[0], (polar[1] * 180) / Math.PI];\n}\n\n/* Convert a polar coordinate into a cartesian coordinate\n *\n * Examples:\n * cartFromPolarRad(5, Math.PI)\n */\nexport function cartFromPolarRad(\n radius: number,\n theta = 0,\n): ReadonlyArray<number> /* TODO: convert to tuple/Point */ {\n return [radius * Math.cos(theta), radius * Math.sin(theta)];\n}\n\n/* Convert a polar coordinate into a cartesian coordinate\n *\n * Examples:\n * cartFromPolarDeg(5, 30)\n */\nexport function cartFromPolarDeg(\n radius: number,\n theta = 0,\n): ReadonlyArray<number> {\n return cartFromPolarRad(radius, (theta * Math.PI) / 180);\n}\n\n// Rotate vector\nexport function rotateRad(\n v: ReadonlyArray<number>,\n theta: number,\n): ReadonlyArray<number> {\n const polar = polarRadFromCart(v);\n const angle = polar[1] + theta;\n return cartFromPolarRad(polar[0], angle);\n}\n\nexport function rotateDeg(\n v: ReadonlyArray<number>,\n theta: number,\n): ReadonlyArray<number> {\n const polar = polarDegFromCart(v);\n const angle = polar[1] + theta;\n return cartFromPolarDeg(polar[0], angle);\n}\n\n// Angle between two vectors\nexport function angleRad(v1: Vector, v2: Vector): number {\n return Math.acos(dot(v1, v2) / (length(v1) * length(v2)));\n}\n\nexport function angleDeg(v1: Vector, v2: Vector): number {\n return (angleRad(v1, v2) * 180) / Math.PI;\n}\n\n// Vector projection of v1 onto v2\nexport function projection<V extends Vector>(v1: V, v2: V): V {\n const scalar = dot(v1, v2) / dot(v2, v2);\n return scale(v2, scalar);\n}\n\n// Round each number to a certain number of decimal places\nexport function round<V extends Vector>(vec: V, precision: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) => knumber.round(elem, precision[i] || precision));\n}\n\n// Round each number to the nearest increment\nexport function roundTo<V extends Vector>(vec: V, increment: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) =>\n knumber.roundTo(elem, increment[i] || increment),\n );\n}\n\nexport function floorTo<V extends Vector>(vec: V, increment: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) =>\n knumber.floorTo(elem, increment[i] || increment),\n );\n}\n\nexport function ceilTo<V extends Vector>(vec: V, increment: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) =>\n knumber.ceilTo(elem, increment[i] || increment),\n );\n}\n","/**\n * Point Utils\n * A point is an array of two numbers e.g. [0, 0].\n */\n\nimport * as knumber from \"./number\";\nimport * as kvector from \"./vector\";\n\n// A point, in 2D, 3D, or nD space.\nexport type Point = ReadonlyArray<number>;\n\n// Rotate point (around origin unless a center is specified)\nexport function rotateRad(point: Point, theta: number, center?: Point): Point {\n if (center === undefined) {\n return kvector.rotateRad(point, theta);\n } else {\n return kvector.add(\n center,\n kvector.rotateRad(kvector.subtract(point, center), theta),\n );\n }\n}\n\nexport function rotateDeg(point: Point, theta: number, center?: Point): Point {\n if (center === undefined) {\n return kvector.rotateDeg(point, theta);\n } else {\n return kvector.add(\n center,\n kvector.rotateDeg(kvector.subtract(point, center), theta),\n );\n }\n}\n\n// Distance between two points\nexport function distanceToPoint(point1: Point, point2: Point): number {\n return kvector.length(kvector.subtract(point1, point2));\n}\n\n// Distance between point and line\nexport function distanceToLine(point: Point, line: [Point, Point]): number {\n const lv = kvector.subtract(line[1], line[0]);\n const pv = kvector.subtract(point, line[0]);\n const projectedPv = kvector.projection(pv, lv);\n const distancePv = kvector.subtract(projectedPv, pv);\n return kvector.length(distancePv);\n}\n\n// Reflect point over line\nexport function reflectOverLine<P extends Point>(point: P, line: [P, P]): P {\n const lv = kvector.subtract(line[1], line[0]);\n const pv = kvector.subtract(point, line[0]);\n const projectedPv = kvector.projection(pv, lv);\n const reflectedPv = kvector.subtract(kvector.scale(projectedPv, 2), pv);\n return kvector.add(line[0], reflectedPv);\n}\n\n/**\n * Compares two points, returning -1, 0, or 1, for use with\n * Array.prototype.sort\n *\n * Note: This technically doesn't satisfy the total-ordering\n * requirements of Array.prototype.sort unless equalityTolerance\n * is 0. In some cases very close points that compare within a\n * few equalityTolerances could appear in the wrong order.\n */\nexport function compare(\n point1: Point,\n point2: Point,\n equalityTolerance?: number,\n): number /* TODO: convert to -1 | 0 | 1 type */ {\n if (point1.length !== point2.length) {\n return point1.length - point2.length;\n }\n for (let i = 0; i < point1.length; i++) {\n if (!knumber.equal(point1[i], point2[i], equalityTolerance)) {\n return point1[i] - point2[i];\n }\n }\n return 0;\n}\n\n// Check if a value is a point\nexport const is = kvector.is;\n\n// Add and subtract vector(s)\nexport const addVector = kvector.add;\nexport const addVectors = kvector.add;\nexport const subtractVector = kvector.subtract;\nexport const equal = kvector.equal;\n\n// Convert from cartesian to polar and back\nexport const polarRadFromCart = kvector.polarRadFromCart;\nexport const polarDegFromCart = kvector.polarDegFromCart;\nexport const cartFromPolarRad = kvector.cartFromPolarRad;\nexport const cartFromPolarDeg = kvector.cartFromPolarDeg;\n\n// Rounding\nexport const round = kvector.round;\nexport const roundTo = kvector.roundTo;\nexport const floorTo = kvector.floorTo;\nexport const ceilTo = kvector.ceilTo;\n","/**\n * Line Utils\n * A line is an array of two points e.g. [[-5, 0], [5, 0]].\n */\n\nimport * as kpoint from \"./point\";\nimport * as kvector from \"./vector\";\n\nimport type {Point} from \"./point\";\n\nexport type Line = [Point, Point];\n\nexport function distanceToPoint(line: Line, point: Point): number {\n return kpoint.distanceToLine(point, line);\n}\n\nexport function reflectPoint(line: Line, point: Point): Point {\n return kpoint.reflectOverLine(point, line);\n}\n\nexport function midpoint(line: Line): Point {\n return [(line[0][0] + line[1][0]) / 2, (line[0][1] + line[1][1]) / 2];\n}\n\nexport function equal(line1: Line, line2: Line, tolerance?: number): boolean {\n // TODO: A nicer implementation might just check collinearity of\n // vectors using underscore magick\n // Compare the directions of the lines\n const v1 = kvector.subtract(line1[1], line1[0]);\n const v2 = kvector.subtract(line2[1], line2[0]);\n if (!kvector.collinear(v1, v2, tolerance)) {\n return false;\n }\n // If the start point is the same for the two lines, then they are the same\n if (kpoint.equal(line1[0], line2[0])) {\n return true;\n }\n // Make sure that the direction to get from line1 to\n // line2 is the same as the direction of the lines\n const line1ToLine2Vector = kvector.subtract(line2[0], line1[0]);\n return kvector.collinear(v1, line1ToLine2Vector, tolerance);\n}\n","/**\n * Ray Utils\n * A ray (→) is an array of an endpoint and another point along the ray.\n * For example, [[0, 0], [1, 0]] is the ray starting at the origin and\n * traveling along the positive x-axis.\n */\n\nimport * as kpoint from \"./point\";\nimport * as kvector from \"./vector\";\n\nimport type {Point} from \"./point\";\n\nexport type Ray = [Point, Point];\n\nexport function equal(ray1: Ray, ray2: Ray, tolerance?: number): boolean {\n // Compare the directions of the rays\n const v1 = kvector.subtract(ray1[1], ray1[0]);\n const v2 = kvector.subtract(ray2[1], ray2[0]);\n\n const sameOrigin = kpoint.equal(ray1[0], ray2[0]);\n const codirectional = kvector.codirectional(v1, v2, tolerance);\n\n return sameOrigin && codirectional;\n}\n"],"names":["libName","libVersion","addLibraryVersionToPerseusDebug","DEFAULT_TOLERANCE","EPSILON","Math","pow","is","x","_","isNumber","isNaN","equal","y","tolerance","abs","sign","isInteger","num","round","precision","factor","roundTo","increment","floorTo","floor","ceilTo","ceil","toFraction","decimal","maxDenominator","n","d","a","rem","arraySum","array","reduce","memo","arg","arrayProduct","zip","arrays","min","map","length","results","i","push","vec","dimension","Array","isArray","undefined","every","knumber","normalize","v","scale","sqrt","dot","b","zipped","multiplied","add","vecs","subtract","v1","v2","dim","negate","scalar","pair","codirectional","collinear","polarRadFromCart","radius","theta","atan2","PI","polarDegFromCart","polar","cartFromPolarRad","cos","sin","cartFromPolarDeg","rotateRad","angle","rotateDeg","angleRad","acos","angleDeg","projection","elem","point","center","kvector","distanceToPoint","point1","point2","distanceToLine","line","lv","pv","projectedPv","distancePv","reflectOverLine","reflectedPv","compare","equalityTolerance","addVector","addVectors","subtractVector","kpoint","reflectPoint","midpoint","line1","line2","line1ToLine2Vector","ray1","ray2","sameOrigin"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ var ___default = /*#__PURE__*/_interopDefaultLegacy(_);
11
11
 
12
12
  // This file is processed by a Rollup plugin (replace) to inject the production
13
13
  const libName = "@khanacademy/kmath";
14
- const libVersion = "0.1.7";
14
+ const libVersion = "0.1.9";
15
15
  perseusCore.addLibraryVersionToPerseusDebug(libName, libVersion);
16
16
 
17
17
  /**
@@ -128,6 +128,17 @@ function arraySum(array) {
128
128
  function arrayProduct(array) {
129
129
  return array.reduce((memo, arg) => memo * arg, 1);
130
130
  }
131
+ function zip() {
132
+ for (var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++) {
133
+ arrays[_key] = arguments[_key];
134
+ }
135
+ const n = Math.min(...arrays.map(a => a.length));
136
+ const results = [];
137
+ for (let i = 0; i < n; i++) {
138
+ results.push(arrays.map(a => a[i]));
139
+ }
140
+ return results;
141
+ }
131
142
 
132
143
  /**
133
144
  * Checks if the given vector contains only numbers and, optionally, is of the
@@ -138,7 +149,7 @@ function arrayProduct(array) {
138
149
  * is([1, 2, 3], 1) -> false
139
150
  */
140
151
  function is$1(vec, dimension) {
141
- if (!___default["default"].isArray(vec)) {
152
+ if (!Array.isArray(vec)) {
142
153
  return false;
143
154
  }
144
155
  if (dimension !== undefined && vec.length !== dimension) {
@@ -158,7 +169,7 @@ function length(v) {
158
169
  }
159
170
  // Dot product of two vectors
160
171
  function dot(a, b) {
161
- const zipped = ___default["default"].zip(a, b);
172
+ const zipped = zip(a, b);
162
173
  const multiplied = zipped.map(arrayProduct);
163
174
  return arraySum(multiplied);
164
175
  }
@@ -168,13 +179,13 @@ function dot(a, b) {
168
179
  * add([1, 2], [3, 4]) -> [4, 6]
169
180
  */
170
181
  function add() {
171
- const zipped = ___default["default"].zip(...arguments);
182
+ const zipped = zip(...arguments);
172
183
  // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.
173
184
  return zipped.map(arraySum);
174
185
  }
175
186
  function subtract(v1, v2) {
176
187
  // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.
177
- return ___default["default"].zip(v1, v2).map(dim => dim[0] - dim[1]);
188
+ return zip(v1, v2).map(dim => dim[0] - dim[1]);
178
189
  }
179
190
  function negate(v) {
180
191
  // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.
@@ -191,11 +202,7 @@ function scale(v1, scalar) {
191
202
  });
192
203
  }
193
204
  function equal$3(v1, v2, tolerance) {
194
- // _.zip will nicely deal with the lengths, going through
195
- // the length of the longest vector. knumber.equal then
196
- // returns false for any number compared to the undefined
197
- // passed in if one of the vectors is shorter.
198
- return ___default["default"].zip(v1, v2).every(pair => equal$4(pair[0], pair[1], tolerance));
205
+ return v1.length === v2.length && zip(v1, v2).every(pair => equal$4(pair[0], pair[1], tolerance));
199
206
  }
200
207
  function codirectional(v1, v2, tolerance) {
201
208
  // The origin is trivially codirectional with all other vectors.
@@ -300,6 +307,7 @@ function ceilTo$1(vec, increment) {
300
307
 
301
308
  var vector = /*#__PURE__*/Object.freeze({
302
309
  __proto__: null,
310
+ zip: zip,
303
311
  is: is$1,
304
312
  normalize: normalize,
305
313
  length: length,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/version.ts","../src/number.ts","../src/vector.ts","../src/point.ts","../src/line.ts","../src/ray.ts"],"sourcesContent":["// This file is processed by a Rollup plugin (replace) to inject the production\n// version number during the release build.\n// In dev, you'll never see the version number.\n\nimport {addLibraryVersionToPerseusDebug} from \"@khanacademy/perseus-core\";\n\nconst libName = \"@khanacademy/kmath\";\nexport const libVersion = \"__lib_version__\";\n\naddLibraryVersionToPerseusDebug(libName, libVersion);\n","/**\n * Number Utils\n * A number is a js-number, e.g. 5.12\n */\n\nimport _ from \"underscore\";\n\nexport const DEFAULT_TOLERANCE = 1e-9;\n\n// TODO: Should this just be Number.Epsilon\nexport const EPSILON: number = Math.pow(2, -42);\n\nexport function is(x: any): boolean {\n return _.isNumber(x) && !_.isNaN(x);\n}\n\nexport function equal(x: number, y: number, tolerance?: number): boolean {\n // Checking for undefined makes this function behave nicely\n // with vectors of different lengths that are _.zip'd together\n if (x == null || y == null) {\n return x === y;\n }\n // We check === here so that +/-Infinity comparisons work correctly\n if (x === y) {\n return true;\n }\n if (tolerance == null) {\n tolerance = DEFAULT_TOLERANCE;\n }\n return Math.abs(x - y) < tolerance;\n}\n\nexport function sign(\n x: number,\n tolerance?: number,\n): number /* Should be: 0 | 1 | -1 */ {\n return equal(x, 0, tolerance) ? 0 : Math.abs(x) / x;\n}\n\nexport function isInteger(num: number, tolerance?: number): boolean {\n return equal(Math.round(num), num, tolerance);\n}\n\n// Round a number to a certain number of decimal places\nexport function round(num: number, precision: number): number {\n const factor = Math.pow(10, precision);\n return Math.round(num * factor) / factor;\n}\n\n// Round num to the nearest multiple of increment\n// i.e. roundTo(83, 5) -> 85\nexport function roundTo(num: number, increment: number): number {\n return Math.round(num / increment) * increment;\n}\n\nexport function floorTo(num: number, increment: number): number {\n return Math.floor(num / increment) * increment;\n}\n\nexport function ceilTo(num: number, increment: number): number {\n return Math.ceil(num / increment) * increment;\n}\n\n/**\n * toFraction\n *\n * Returns a [numerator, denominator] array rational representation\n * of `decimal`\n *\n * See http://en.wikipedia.org/wiki/Continued_fraction for implementation\n * details\n *\n * toFraction(4/8) => [1, 2]\n * toFraction(0.66) => [33, 50]\n * toFraction(0.66, 0.01) => [2/3]\n * toFraction(283 + 1/3) => [850, 3]\n */\nexport function toFraction(\n decimal: number,\n // can't be 0\n tolerance: number = EPSILON,\n maxDenominator = 1000,\n): [number, number] {\n // Initialize everything to compute successive terms of\n // continued-fraction approximations via recurrence relation\n let n = [1, 0];\n let d = [0, 1];\n let a = Math.floor(decimal);\n let rem = decimal - a;\n\n while (d[0] <= maxDenominator) {\n if (equal(n[0] / d[0], decimal, tolerance)) {\n return [n[0], d[0]];\n }\n n = [a * n[0] + n[1], n[0]];\n d = [a * d[0] + d[1], d[0]];\n a = Math.floor(1 / rem);\n rem = 1 / rem - a;\n }\n\n // We failed to find a nice rational representation,\n // so return an irrational \"fraction\"\n return [decimal, 1];\n}\n","/**\n * Vector Utils\n * A vector is an array of numbers e.g. [0, 3, 4].\n */\n\nimport _ from \"underscore\";\n\nimport * as knumber from \"./number\";\n\ntype Vector = ReadonlyArray<number>;\n\nfunction arraySum(array: ReadonlyArray<number>): number {\n return array.reduce((memo, arg) => memo + arg, 0);\n}\n\nfunction arrayProduct(array: ReadonlyArray<number>): number {\n return array.reduce((memo, arg) => memo * arg, 1);\n}\n\n/**\n * Checks if the given vector contains only numbers and, optionally, is of the\n * right dimension (length).\n *\n * is([1, 2, 3]) -> true\n * is([1, \"Hello\", 3]) -> false\n * is([1, 2, 3], 1) -> false\n */\nexport function is<T>(vec: ReadonlyArray<T>, dimension?: number): boolean {\n if (!_.isArray(vec)) {\n return false;\n }\n if (dimension !== undefined && vec.length !== dimension) {\n return false;\n }\n return vec.every(knumber.is);\n}\n\n// Normalize to a unit vector\nexport function normalize<V extends Vector>(v: V): V {\n return scale(v, 1 / length(v));\n}\n\n// Length/magnitude of a vector\nexport function length(v: Vector): number {\n return Math.sqrt(dot(v, v));\n}\n// Dot product of two vectors\nexport function dot(a: Vector, b: Vector): number {\n const zipped = _.zip(a, b);\n const multiplied = zipped.map(arrayProduct);\n return arraySum(multiplied);\n}\n\n/* vector-add multiple [x, y] coords/vectors\n *\n * add([1, 2], [3, 4]) -> [4, 6]\n */\nexport function add<V extends Vector>(...vecs: ReadonlyArray<V>): V {\n const zipped = _.zip(...vecs);\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return zipped.map(arraySum);\n}\n\nexport function subtract<V extends Vector>(v1: V, v2: V): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return _.zip(v1, v2).map((dim) => dim[0] - dim[1]);\n}\n\nexport function negate<V extends Vector>(v: V): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return v.map((x) => {\n return -x;\n });\n}\n\n// Scale a vector\nexport function scale<V extends Vector>(v1: V, scalar: number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return v1.map((x) => {\n return x * scalar;\n });\n}\n\nexport function equal(v1: Vector, v2: Vector, tolerance?: number): boolean {\n // _.zip will nicely deal with the lengths, going through\n // the length of the longest vector. knumber.equal then\n // returns false for any number compared to the undefined\n // passed in if one of the vectors is shorter.\n return _.zip(v1, v2).every((pair) =>\n knumber.equal(pair[0], pair[1], tolerance),\n );\n}\n\nexport function codirectional(\n v1: Vector,\n v2: Vector,\n tolerance?: number,\n): boolean {\n // The origin is trivially codirectional with all other vectors.\n // This gives nice semantics for codirectionality between points when\n // comparing their difference vectors.\n if (\n knumber.equal(length(v1), 0, tolerance) ||\n knumber.equal(length(v2), 0, tolerance)\n ) {\n return true;\n }\n\n v1 = normalize(v1);\n v2 = normalize(v2);\n\n return equal(v1, v2, tolerance);\n}\n\nexport function collinear(v1: Vector, v2: Vector, tolerance?: number): boolean {\n return (\n codirectional(v1, v2, tolerance) ||\n codirectional(v1, negate(v2), tolerance)\n );\n}\n\n// TODO(jeremy) These coordinate conversion functions really only handle 2D points (ie. [number, number])\n\n// Convert a cartesian coordinate into a radian polar coordinate\nexport function polarRadFromCart(\n v: ReadonlyArray<number>,\n): ReadonlyArray<number> {\n const radius = length(v);\n let theta = Math.atan2(v[1], v[0]);\n\n // Convert angle range from [-pi, pi] to [0, 2pi]\n if (theta < 0) {\n theta += 2 * Math.PI;\n }\n\n return [radius, theta];\n}\n\n// Converts a cartesian coordinate into a degree polar coordinate\nexport function polarDegFromCart(\n v: ReadonlyArray<number>,\n): ReadonlyArray<number> /* TODO: convert to tuple/Point */ {\n const polar = polarRadFromCart(v);\n return [polar[0], (polar[1] * 180) / Math.PI];\n}\n\n/* Convert a polar coordinate into a cartesian coordinate\n *\n * Examples:\n * cartFromPolarRad(5, Math.PI)\n */\nexport function cartFromPolarRad(\n radius: number,\n theta = 0,\n): ReadonlyArray<number> /* TODO: convert to tuple/Point */ {\n return [radius * Math.cos(theta), radius * Math.sin(theta)];\n}\n\n/* Convert a polar coordinate into a cartesian coordinate\n *\n * Examples:\n * cartFromPolarDeg(5, 30)\n */\nexport function cartFromPolarDeg(\n radius: number,\n theta = 0,\n): ReadonlyArray<number> {\n return cartFromPolarRad(radius, (theta * Math.PI) / 180);\n}\n\n// Rotate vector\nexport function rotateRad(\n v: ReadonlyArray<number>,\n theta: number,\n): ReadonlyArray<number> {\n const polar = polarRadFromCart(v);\n const angle = polar[1] + theta;\n return cartFromPolarRad(polar[0], angle);\n}\n\nexport function rotateDeg(\n v: ReadonlyArray<number>,\n theta: number,\n): ReadonlyArray<number> {\n const polar = polarDegFromCart(v);\n const angle = polar[1] + theta;\n return cartFromPolarDeg(polar[0], angle);\n}\n\n// Angle between two vectors\nexport function angleRad(v1: Vector, v2: Vector): number {\n return Math.acos(dot(v1, v2) / (length(v1) * length(v2)));\n}\n\nexport function angleDeg(v1: Vector, v2: Vector): number {\n return (angleRad(v1, v2) * 180) / Math.PI;\n}\n\n// Vector projection of v1 onto v2\nexport function projection<V extends Vector>(v1: V, v2: V): V {\n const scalar = dot(v1, v2) / dot(v2, v2);\n return scale(v2, scalar);\n}\n\n// Round each number to a certain number of decimal places\nexport function round<V extends Vector>(vec: V, precision: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) => knumber.round(elem, precision[i] || precision));\n}\n\n// Round each number to the nearest increment\nexport function roundTo<V extends Vector>(vec: V, increment: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) =>\n knumber.roundTo(elem, increment[i] || increment),\n );\n}\n\nexport function floorTo<V extends Vector>(vec: V, increment: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) =>\n knumber.floorTo(elem, increment[i] || increment),\n );\n}\n\nexport function ceilTo<V extends Vector>(vec: V, increment: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) =>\n knumber.ceilTo(elem, increment[i] || increment),\n );\n}\n","/**\n * Point Utils\n * A point is an array of two numbers e.g. [0, 0].\n */\n\nimport _ from \"underscore\";\n\nimport * as knumber from \"./number\";\nimport * as kvector from \"./vector\";\n\n// A point, in 2D, 3D, or nD space.\nexport type Point = ReadonlyArray<number>;\n\n// Rotate point (around origin unless a center is specified)\nexport function rotateRad(point: Point, theta: number, center?: Point): Point {\n if (center === undefined) {\n return kvector.rotateRad(point, theta);\n } else {\n return kvector.add(\n center,\n kvector.rotateRad(kvector.subtract(point, center), theta),\n );\n }\n}\n\nexport function rotateDeg(point: Point, theta: number, center?: Point): Point {\n if (center === undefined) {\n return kvector.rotateDeg(point, theta);\n } else {\n return kvector.add(\n center,\n kvector.rotateDeg(kvector.subtract(point, center), theta),\n );\n }\n}\n\n// Distance between two points\nexport function distanceToPoint(point1: Point, point2: Point): number {\n return kvector.length(kvector.subtract(point1, point2));\n}\n\n// Distance between point and line\nexport function distanceToLine(point: Point, line: [Point, Point]): number {\n const lv = kvector.subtract(line[1], line[0]);\n const pv = kvector.subtract(point, line[0]);\n const projectedPv = kvector.projection(pv, lv);\n const distancePv = kvector.subtract(projectedPv, pv);\n return kvector.length(distancePv);\n}\n\n// Reflect point over line\nexport function reflectOverLine<P extends Point>(point: P, line: [P, P]): P {\n const lv = kvector.subtract(line[1], line[0]);\n const pv = kvector.subtract(point, line[0]);\n const projectedPv = kvector.projection(pv, lv);\n const reflectedPv = kvector.subtract(kvector.scale(projectedPv, 2), pv);\n return kvector.add(line[0], reflectedPv);\n}\n\n/**\n * Compares two points, returning -1, 0, or 1, for use with\n * Array.prototype.sort\n *\n * Note: This technically doesn't satisfy the total-ordering\n * requirements of Array.prototype.sort unless equalityTolerance\n * is 0. In some cases very close points that compare within a\n * few equalityTolerances could appear in the wrong order.\n */\nexport function compare(\n point1: Point,\n point2: Point,\n equalityTolerance?: number,\n): number /* TODO: convert to -1 | 0 | 1 type */ {\n if (point1.length !== point2.length) {\n return point1.length - point2.length;\n }\n for (let i = 0; i < point1.length; i++) {\n if (!knumber.equal(point1[i], point2[i], equalityTolerance)) {\n return point1[i] - point2[i];\n }\n }\n return 0;\n}\n\n// Check if a value is a point\nexport const is = kvector.is;\n\n// Add and subtract vector(s)\nexport const addVector = kvector.add;\nexport const addVectors = kvector.add;\nexport const subtractVector = kvector.subtract;\nexport const equal = kvector.equal;\n\n// Convert from cartesian to polar and back\nexport const polarRadFromCart = kvector.polarRadFromCart;\nexport const polarDegFromCart = kvector.polarDegFromCart;\nexport const cartFromPolarRad = kvector.cartFromPolarRad;\nexport const cartFromPolarDeg = kvector.cartFromPolarDeg;\n\n// Rounding\nexport const round = kvector.round;\nexport const roundTo = kvector.roundTo;\nexport const floorTo = kvector.floorTo;\nexport const ceilTo = kvector.ceilTo;\n","/**\n * Line Utils\n * A line is an array of two points e.g. [[-5, 0], [5, 0]].\n */\n\nimport * as kpoint from \"./point\";\nimport * as kvector from \"./vector\";\n\nimport type {Point} from \"./point\";\n\nexport type Line = [Point, Point];\n\nexport function distanceToPoint(line: Line, point: Point): number {\n return kpoint.distanceToLine(point, line);\n}\n\nexport function reflectPoint(line: Line, point: Point): Point {\n return kpoint.reflectOverLine(point, line);\n}\n\nexport function midpoint(line: Line): Point {\n return [(line[0][0] + line[1][0]) / 2, (line[0][1] + line[1][1]) / 2];\n}\n\nexport function equal(line1: Line, line2: Line, tolerance?: number): boolean {\n // TODO: A nicer implementation might just check collinearity of\n // vectors using underscore magick\n // Compare the directions of the lines\n const v1 = kvector.subtract(line1[1], line1[0]);\n const v2 = kvector.subtract(line2[1], line2[0]);\n if (!kvector.collinear(v1, v2, tolerance)) {\n return false;\n }\n // If the start point is the same for the two lines, then they are the same\n if (kpoint.equal(line1[0], line2[0])) {\n return true;\n }\n // Make sure that the direction to get from line1 to\n // line2 is the same as the direction of the lines\n const line1ToLine2Vector = kvector.subtract(line2[0], line1[0]);\n return kvector.collinear(v1, line1ToLine2Vector, tolerance);\n}\n","/**\n * Ray Utils\n * A ray (→) is an array of an endpoint and another point along the ray.\n * For example, [[0, 0], [1, 0]] is the ray starting at the origin and\n * traveling along the positive x-axis.\n */\n\nimport * as kpoint from \"./point\";\nimport * as kvector from \"./vector\";\n\nimport type {Point} from \"./point\";\n\nexport type Ray = [Point, Point];\n\nexport function equal(ray1: Ray, ray2: Ray, tolerance?: number): boolean {\n // Compare the directions of the rays\n const v1 = kvector.subtract(ray1[1], ray1[0]);\n const v2 = kvector.subtract(ray2[1], ray2[0]);\n\n const sameOrigin = kpoint.equal(ray1[0], ray2[0]);\n const codirectional = kvector.codirectional(v1, v2, tolerance);\n\n return sameOrigin && codirectional;\n}\n"],"names":["libName","libVersion","addLibraryVersionToPerseusDebug","DEFAULT_TOLERANCE","EPSILON","Math","pow","is","x","_","isNumber","isNaN","equal","y","tolerance","abs","sign","isInteger","num","round","precision","factor","roundTo","increment","floorTo","floor","ceilTo","ceil","toFraction","decimal","arguments","length","undefined","maxDenominator","n","d","a","rem","arraySum","array","reduce","memo","arg","arrayProduct","vec","dimension","isArray","every","knumber","normalize","v","scale","sqrt","dot","b","zipped","zip","multiplied","map","add","subtract","v1","v2","dim","negate","scalar","pair","codirectional","collinear","polarRadFromCart","radius","theta","atan2","PI","polarDegFromCart","polar","cartFromPolarRad","cos","sin","cartFromPolarDeg","rotateRad","angle","rotateDeg","angleRad","acos","angleDeg","projection","elem","i","point","center","kvector","distanceToPoint","point1","point2","distanceToLine","line","lv","pv","projectedPv","distancePv","reflectOverLine","reflectedPv","compare","equalityTolerance","addVector","addVectors","subtractVector","kpoint","reflectPoint","midpoint","line1","line2","line1ToLine2Vector","ray1","ray2","sameOrigin"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/version.ts","../src/number.ts","../src/vector.ts","../src/point.ts","../src/line.ts","../src/ray.ts"],"sourcesContent":["// This file is processed by a Rollup plugin (replace) to inject the production\n// version number during the release build.\n// In dev, you'll never see the version number.\n\nimport {addLibraryVersionToPerseusDebug} from \"@khanacademy/perseus-core\";\n\nconst libName = \"@khanacademy/kmath\";\nexport const libVersion = \"__lib_version__\";\n\naddLibraryVersionToPerseusDebug(libName, libVersion);\n","/**\n * Number Utils\n * A number is a js-number, e.g. 5.12\n */\n\nimport _ from \"underscore\";\n\nexport const DEFAULT_TOLERANCE = 1e-9;\n\n// TODO: Should this just be Number.Epsilon\nexport const EPSILON: number = Math.pow(2, -42);\n\nexport function is(x: any): boolean {\n return _.isNumber(x) && !_.isNaN(x);\n}\n\nexport function equal(x: number, y: number, tolerance?: number): boolean {\n // Checking for undefined makes this function behave nicely\n // with vectors of different lengths that are _.zip'd together\n if (x == null || y == null) {\n return x === y;\n }\n // We check === here so that +/-Infinity comparisons work correctly\n if (x === y) {\n return true;\n }\n if (tolerance == null) {\n tolerance = DEFAULT_TOLERANCE;\n }\n return Math.abs(x - y) < tolerance;\n}\n\nexport function sign(\n x: number,\n tolerance?: number,\n): number /* Should be: 0 | 1 | -1 */ {\n return equal(x, 0, tolerance) ? 0 : Math.abs(x) / x;\n}\n\nexport function isInteger(num: number, tolerance?: number): boolean {\n return equal(Math.round(num), num, tolerance);\n}\n\n// Round a number to a certain number of decimal places\nexport function round(num: number, precision: number): number {\n const factor = Math.pow(10, precision);\n return Math.round(num * factor) / factor;\n}\n\n// Round num to the nearest multiple of increment\n// i.e. roundTo(83, 5) -> 85\nexport function roundTo(num: number, increment: number): number {\n return Math.round(num / increment) * increment;\n}\n\nexport function floorTo(num: number, increment: number): number {\n return Math.floor(num / increment) * increment;\n}\n\nexport function ceilTo(num: number, increment: number): number {\n return Math.ceil(num / increment) * increment;\n}\n\n/**\n * toFraction\n *\n * Returns a [numerator, denominator] array rational representation\n * of `decimal`\n *\n * See http://en.wikipedia.org/wiki/Continued_fraction for implementation\n * details\n *\n * toFraction(4/8) => [1, 2]\n * toFraction(0.66) => [33, 50]\n * toFraction(0.66, 0.01) => [2/3]\n * toFraction(283 + 1/3) => [850, 3]\n */\nexport function toFraction(\n decimal: number,\n // can't be 0\n tolerance: number = EPSILON,\n maxDenominator = 1000,\n): [number, number] {\n // Initialize everything to compute successive terms of\n // continued-fraction approximations via recurrence relation\n let n = [1, 0];\n let d = [0, 1];\n let a = Math.floor(decimal);\n let rem = decimal - a;\n\n while (d[0] <= maxDenominator) {\n if (equal(n[0] / d[0], decimal, tolerance)) {\n return [n[0], d[0]];\n }\n n = [a * n[0] + n[1], n[0]];\n d = [a * d[0] + d[1], d[0]];\n a = Math.floor(1 / rem);\n rem = 1 / rem - a;\n }\n\n // We failed to find a nice rational representation,\n // so return an irrational \"fraction\"\n return [decimal, 1];\n}\n","/**\n * Vector Utils\n * A vector is an array of numbers e.g. [0, 3, 4].\n */\n\nimport * as knumber from \"./number\";\n\ntype Vector = ReadonlyArray<number>;\n\nfunction arraySum(array: ReadonlyArray<number>): number {\n return array.reduce((memo, arg) => memo + arg, 0);\n}\n\nfunction arrayProduct(array: ReadonlyArray<number>): number {\n return array.reduce((memo, arg) => memo * arg, 1);\n}\n\nexport function zip<T>(xs: ReadonlyArray<T>, ys: ReadonlyArray<T>): [T, T][];\nexport function zip<T>(...arrays: ReadonlyArray<T>[]): T[][];\nexport function zip<T>(...arrays: ReadonlyArray<T>[]): T[][] {\n const n = Math.min(...arrays.map((a) => a.length));\n const results: T[][] = [];\n for (let i = 0; i < n; i++) {\n results.push(arrays.map((a) => a[i]));\n }\n return results;\n}\n\n/**\n * Checks if the given vector contains only numbers and, optionally, is of the\n * right dimension (length).\n *\n * is([1, 2, 3]) -> true\n * is([1, \"Hello\", 3]) -> false\n * is([1, 2, 3], 1) -> false\n */\nexport function is<T>(vec: ReadonlyArray<T>, dimension?: number): boolean {\n if (!Array.isArray(vec)) {\n return false;\n }\n if (dimension !== undefined && vec.length !== dimension) {\n return false;\n }\n return vec.every(knumber.is);\n}\n\n// Normalize to a unit vector\nexport function normalize<V extends Vector>(v: V): V {\n return scale(v, 1 / length(v));\n}\n\n// Length/magnitude of a vector\nexport function length(v: Vector): number {\n return Math.sqrt(dot(v, v));\n}\n// Dot product of two vectors\nexport function dot(a: Vector, b: Vector): number {\n const zipped = zip(a, b);\n const multiplied = zipped.map(arrayProduct);\n return arraySum(multiplied);\n}\n\n/* vector-add multiple [x, y] coords/vectors\n *\n * add([1, 2], [3, 4]) -> [4, 6]\n */\nexport function add<V extends Vector>(...vecs: ReadonlyArray<V>): V {\n const zipped = zip(...vecs);\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return zipped.map(arraySum);\n}\n\nexport function subtract<V extends Vector>(v1: V, v2: V): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return zip(v1, v2).map((dim) => dim[0] - dim[1]);\n}\n\nexport function negate<V extends Vector>(v: V): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return v.map((x) => {\n return -x;\n });\n}\n\n// Scale a vector\nexport function scale<V extends Vector>(v1: V, scalar: number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return v1.map((x) => {\n return x * scalar;\n });\n}\n\nexport function equal(v1: Vector, v2: Vector, tolerance?: number): boolean {\n return (\n v1.length === v2.length &&\n zip(v1, v2).every((pair) => knumber.equal(pair[0], pair[1], tolerance))\n );\n}\n\nexport function codirectional(\n v1: Vector,\n v2: Vector,\n tolerance?: number,\n): boolean {\n // The origin is trivially codirectional with all other vectors.\n // This gives nice semantics for codirectionality between points when\n // comparing their difference vectors.\n if (\n knumber.equal(length(v1), 0, tolerance) ||\n knumber.equal(length(v2), 0, tolerance)\n ) {\n return true;\n }\n\n v1 = normalize(v1);\n v2 = normalize(v2);\n\n return equal(v1, v2, tolerance);\n}\n\nexport function collinear(v1: Vector, v2: Vector, tolerance?: number): boolean {\n return (\n codirectional(v1, v2, tolerance) ||\n codirectional(v1, negate(v2), tolerance)\n );\n}\n\n// TODO(jeremy) These coordinate conversion functions really only handle 2D points (ie. [number, number])\n\n// Convert a cartesian coordinate into a radian polar coordinate\nexport function polarRadFromCart(\n v: ReadonlyArray<number>,\n): ReadonlyArray<number> {\n const radius = length(v);\n let theta = Math.atan2(v[1], v[0]);\n\n // Convert angle range from [-pi, pi] to [0, 2pi]\n if (theta < 0) {\n theta += 2 * Math.PI;\n }\n\n return [radius, theta];\n}\n\n// Converts a cartesian coordinate into a degree polar coordinate\nexport function polarDegFromCart(\n v: ReadonlyArray<number>,\n): ReadonlyArray<number> /* TODO: convert to tuple/Point */ {\n const polar = polarRadFromCart(v);\n return [polar[0], (polar[1] * 180) / Math.PI];\n}\n\n/* Convert a polar coordinate into a cartesian coordinate\n *\n * Examples:\n * cartFromPolarRad(5, Math.PI)\n */\nexport function cartFromPolarRad(\n radius: number,\n theta = 0,\n): ReadonlyArray<number> /* TODO: convert to tuple/Point */ {\n return [radius * Math.cos(theta), radius * Math.sin(theta)];\n}\n\n/* Convert a polar coordinate into a cartesian coordinate\n *\n * Examples:\n * cartFromPolarDeg(5, 30)\n */\nexport function cartFromPolarDeg(\n radius: number,\n theta = 0,\n): ReadonlyArray<number> {\n return cartFromPolarRad(radius, (theta * Math.PI) / 180);\n}\n\n// Rotate vector\nexport function rotateRad(\n v: ReadonlyArray<number>,\n theta: number,\n): ReadonlyArray<number> {\n const polar = polarRadFromCart(v);\n const angle = polar[1] + theta;\n return cartFromPolarRad(polar[0], angle);\n}\n\nexport function rotateDeg(\n v: ReadonlyArray<number>,\n theta: number,\n): ReadonlyArray<number> {\n const polar = polarDegFromCart(v);\n const angle = polar[1] + theta;\n return cartFromPolarDeg(polar[0], angle);\n}\n\n// Angle between two vectors\nexport function angleRad(v1: Vector, v2: Vector): number {\n return Math.acos(dot(v1, v2) / (length(v1) * length(v2)));\n}\n\nexport function angleDeg(v1: Vector, v2: Vector): number {\n return (angleRad(v1, v2) * 180) / Math.PI;\n}\n\n// Vector projection of v1 onto v2\nexport function projection<V extends Vector>(v1: V, v2: V): V {\n const scalar = dot(v1, v2) / dot(v2, v2);\n return scale(v2, scalar);\n}\n\n// Round each number to a certain number of decimal places\nexport function round<V extends Vector>(vec: V, precision: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) => knumber.round(elem, precision[i] || precision));\n}\n\n// Round each number to the nearest increment\nexport function roundTo<V extends Vector>(vec: V, increment: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) =>\n knumber.roundTo(elem, increment[i] || increment),\n );\n}\n\nexport function floorTo<V extends Vector>(vec: V, increment: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) =>\n knumber.floorTo(elem, increment[i] || increment),\n );\n}\n\nexport function ceilTo<V extends Vector>(vec: V, increment: V | number): V {\n // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.\n return vec.map((elem, i) =>\n knumber.ceilTo(elem, increment[i] || increment),\n );\n}\n","/**\n * Point Utils\n * A point is an array of two numbers e.g. [0, 0].\n */\n\nimport * as knumber from \"./number\";\nimport * as kvector from \"./vector\";\n\n// A point, in 2D, 3D, or nD space.\nexport type Point = ReadonlyArray<number>;\n\n// Rotate point (around origin unless a center is specified)\nexport function rotateRad(point: Point, theta: number, center?: Point): Point {\n if (center === undefined) {\n return kvector.rotateRad(point, theta);\n } else {\n return kvector.add(\n center,\n kvector.rotateRad(kvector.subtract(point, center), theta),\n );\n }\n}\n\nexport function rotateDeg(point: Point, theta: number, center?: Point): Point {\n if (center === undefined) {\n return kvector.rotateDeg(point, theta);\n } else {\n return kvector.add(\n center,\n kvector.rotateDeg(kvector.subtract(point, center), theta),\n );\n }\n}\n\n// Distance between two points\nexport function distanceToPoint(point1: Point, point2: Point): number {\n return kvector.length(kvector.subtract(point1, point2));\n}\n\n// Distance between point and line\nexport function distanceToLine(point: Point, line: [Point, Point]): number {\n const lv = kvector.subtract(line[1], line[0]);\n const pv = kvector.subtract(point, line[0]);\n const projectedPv = kvector.projection(pv, lv);\n const distancePv = kvector.subtract(projectedPv, pv);\n return kvector.length(distancePv);\n}\n\n// Reflect point over line\nexport function reflectOverLine<P extends Point>(point: P, line: [P, P]): P {\n const lv = kvector.subtract(line[1], line[0]);\n const pv = kvector.subtract(point, line[0]);\n const projectedPv = kvector.projection(pv, lv);\n const reflectedPv = kvector.subtract(kvector.scale(projectedPv, 2), pv);\n return kvector.add(line[0], reflectedPv);\n}\n\n/**\n * Compares two points, returning -1, 0, or 1, for use with\n * Array.prototype.sort\n *\n * Note: This technically doesn't satisfy the total-ordering\n * requirements of Array.prototype.sort unless equalityTolerance\n * is 0. In some cases very close points that compare within a\n * few equalityTolerances could appear in the wrong order.\n */\nexport function compare(\n point1: Point,\n point2: Point,\n equalityTolerance?: number,\n): number /* TODO: convert to -1 | 0 | 1 type */ {\n if (point1.length !== point2.length) {\n return point1.length - point2.length;\n }\n for (let i = 0; i < point1.length; i++) {\n if (!knumber.equal(point1[i], point2[i], equalityTolerance)) {\n return point1[i] - point2[i];\n }\n }\n return 0;\n}\n\n// Check if a value is a point\nexport const is = kvector.is;\n\n// Add and subtract vector(s)\nexport const addVector = kvector.add;\nexport const addVectors = kvector.add;\nexport const subtractVector = kvector.subtract;\nexport const equal = kvector.equal;\n\n// Convert from cartesian to polar and back\nexport const polarRadFromCart = kvector.polarRadFromCart;\nexport const polarDegFromCart = kvector.polarDegFromCart;\nexport const cartFromPolarRad = kvector.cartFromPolarRad;\nexport const cartFromPolarDeg = kvector.cartFromPolarDeg;\n\n// Rounding\nexport const round = kvector.round;\nexport const roundTo = kvector.roundTo;\nexport const floorTo = kvector.floorTo;\nexport const ceilTo = kvector.ceilTo;\n","/**\n * Line Utils\n * A line is an array of two points e.g. [[-5, 0], [5, 0]].\n */\n\nimport * as kpoint from \"./point\";\nimport * as kvector from \"./vector\";\n\nimport type {Point} from \"./point\";\n\nexport type Line = [Point, Point];\n\nexport function distanceToPoint(line: Line, point: Point): number {\n return kpoint.distanceToLine(point, line);\n}\n\nexport function reflectPoint(line: Line, point: Point): Point {\n return kpoint.reflectOverLine(point, line);\n}\n\nexport function midpoint(line: Line): Point {\n return [(line[0][0] + line[1][0]) / 2, (line[0][1] + line[1][1]) / 2];\n}\n\nexport function equal(line1: Line, line2: Line, tolerance?: number): boolean {\n // TODO: A nicer implementation might just check collinearity of\n // vectors using underscore magick\n // Compare the directions of the lines\n const v1 = kvector.subtract(line1[1], line1[0]);\n const v2 = kvector.subtract(line2[1], line2[0]);\n if (!kvector.collinear(v1, v2, tolerance)) {\n return false;\n }\n // If the start point is the same for the two lines, then they are the same\n if (kpoint.equal(line1[0], line2[0])) {\n return true;\n }\n // Make sure that the direction to get from line1 to\n // line2 is the same as the direction of the lines\n const line1ToLine2Vector = kvector.subtract(line2[0], line1[0]);\n return kvector.collinear(v1, line1ToLine2Vector, tolerance);\n}\n","/**\n * Ray Utils\n * A ray (→) is an array of an endpoint and another point along the ray.\n * For example, [[0, 0], [1, 0]] is the ray starting at the origin and\n * traveling along the positive x-axis.\n */\n\nimport * as kpoint from \"./point\";\nimport * as kvector from \"./vector\";\n\nimport type {Point} from \"./point\";\n\nexport type Ray = [Point, Point];\n\nexport function equal(ray1: Ray, ray2: Ray, tolerance?: number): boolean {\n // Compare the directions of the rays\n const v1 = kvector.subtract(ray1[1], ray1[0]);\n const v2 = kvector.subtract(ray2[1], ray2[0]);\n\n const sameOrigin = kpoint.equal(ray1[0], ray2[0]);\n const codirectional = kvector.codirectional(v1, v2, tolerance);\n\n return sameOrigin && codirectional;\n}\n"],"names":["libName","libVersion","addLibraryVersionToPerseusDebug","DEFAULT_TOLERANCE","EPSILON","Math","pow","is","x","_","isNumber","isNaN","equal","y","tolerance","abs","sign","isInteger","num","round","precision","factor","roundTo","increment","floorTo","floor","ceilTo","ceil","toFraction","decimal","arguments","length","undefined","maxDenominator","n","d","a","rem","arraySum","array","reduce","memo","arg","arrayProduct","zip","_len","arrays","Array","_key","min","map","results","i","push","vec","dimension","isArray","every","knumber","normalize","v","scale","sqrt","dot","b","zipped","multiplied","add","subtract","v1","v2","dim","negate","scalar","pair","codirectional","collinear","polarRadFromCart","radius","theta","atan2","PI","polarDegFromCart","polar","cartFromPolarRad","cos","sin","cartFromPolarDeg","rotateRad","angle","rotateDeg","angleRad","acos","angleDeg","projection","elem","point","center","kvector","distanceToPoint","point1","point2","distanceToLine","line","lv","pv","projectedPv","distancePv","reflectOverLine","reflectedPv","compare","equalityTolerance","addVector","addVectors","subtractVector","kpoint","reflectPoint","midpoint","line1","line2","line1ToLine2Vector","ray1","ray2","sameOrigin"],"mappings":"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"}
package/dist/vector.d.ts CHANGED
@@ -3,6 +3,8 @@
3
3
  * A vector is an array of numbers e.g. [0, 3, 4].
4
4
  */
5
5
  type Vector = ReadonlyArray<number>;
6
+ export declare function zip<T>(xs: ReadonlyArray<T>, ys: ReadonlyArray<T>): [T, T][];
7
+ export declare function zip<T>(...arrays: ReadonlyArray<T>[]): T[][];
6
8
  /**
7
9
  * Checks if the given vector contains only numbers and, optionally, is of the
8
10
  * right dimension (length).
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Khan Academy's Javascript Numeric Math Utilities",
4
4
  "author": "Khan Academy",
5
5
  "license": "MIT",
6
- "version": "0.1.7",
6
+ "version": "0.1.9",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
@@ -21,7 +21,7 @@
21
21
  "test": "bash -c 'yarn --silent --cwd \"../..\" test ${@:0} $($([[ ${@: -1} = -* ]] || [[ ${@: -1} = bash ]]) && echo $PWD)'"
22
22
  },
23
23
  "dependencies": {
24
- "@khanacademy/perseus-core": "1.4.0"
24
+ "@khanacademy/perseus-core": "1.4.1"
25
25
  },
26
26
  "devDependencies": {
27
27
  "perseus-build-settings": "^0.3.0",
@@ -1,6 +1,31 @@
1
1
  import * as vector from "../vector";
2
2
 
3
3
  describe("kvector", function () {
4
+ it("vector.zip should return empty given empty", function () {
5
+ expect(vector.zip([], [])).toEqual([]);
6
+ });
7
+
8
+ it("vector.zip should create vectors from x and y coords", function () {
9
+ expect(vector.zip([1, 2], [3, 4])).toEqual([
10
+ [1, 3],
11
+ [2, 4],
12
+ ]);
13
+ });
14
+
15
+ it("vector.zip should ignore extra xs", function () {
16
+ expect(vector.zip([1, 2, 9], [3, 4])).toEqual([
17
+ [1, 3],
18
+ [2, 4],
19
+ ]);
20
+ });
21
+
22
+ it("vector.zip should ignore extra ys", function () {
23
+ expect(vector.zip([1, 2], [3, 4, 9])).toEqual([
24
+ [1, 3],
25
+ [2, 4],
26
+ ]);
27
+ });
28
+
4
29
  it("vector.add should add two 2D vectors", function () {
5
30
  const result = vector.add([1, 2], [3, 4]);
6
31
  expect(result).toStrictEqual([4, 6]);
package/src/point.ts CHANGED
@@ -3,8 +3,6 @@
3
3
  * A point is an array of two numbers e.g. [0, 0].
4
4
  */
5
5
 
6
- import _ from "underscore";
7
-
8
6
  import * as knumber from "./number";
9
7
  import * as kvector from "./vector";
10
8
 
package/src/vector.ts CHANGED
@@ -3,8 +3,6 @@
3
3
  * A vector is an array of numbers e.g. [0, 3, 4].
4
4
  */
5
5
 
6
- import _ from "underscore";
7
-
8
6
  import * as knumber from "./number";
9
7
 
10
8
  type Vector = ReadonlyArray<number>;
@@ -17,6 +15,17 @@ function arrayProduct(array: ReadonlyArray<number>): number {
17
15
  return array.reduce((memo, arg) => memo * arg, 1);
18
16
  }
19
17
 
18
+ export function zip<T>(xs: ReadonlyArray<T>, ys: ReadonlyArray<T>): [T, T][];
19
+ export function zip<T>(...arrays: ReadonlyArray<T>[]): T[][];
20
+ export function zip<T>(...arrays: ReadonlyArray<T>[]): T[][] {
21
+ const n = Math.min(...arrays.map((a) => a.length));
22
+ const results: T[][] = [];
23
+ for (let i = 0; i < n; i++) {
24
+ results.push(arrays.map((a) => a[i]));
25
+ }
26
+ return results;
27
+ }
28
+
20
29
  /**
21
30
  * Checks if the given vector contains only numbers and, optionally, is of the
22
31
  * right dimension (length).
@@ -26,7 +35,7 @@ function arrayProduct(array: ReadonlyArray<number>): number {
26
35
  * is([1, 2, 3], 1) -> false
27
36
  */
28
37
  export function is<T>(vec: ReadonlyArray<T>, dimension?: number): boolean {
29
- if (!_.isArray(vec)) {
38
+ if (!Array.isArray(vec)) {
30
39
  return false;
31
40
  }
32
41
  if (dimension !== undefined && vec.length !== dimension) {
@@ -46,7 +55,7 @@ export function length(v: Vector): number {
46
55
  }
47
56
  // Dot product of two vectors
48
57
  export function dot(a: Vector, b: Vector): number {
49
- const zipped = _.zip(a, b);
58
+ const zipped = zip(a, b);
50
59
  const multiplied = zipped.map(arrayProduct);
51
60
  return arraySum(multiplied);
52
61
  }
@@ -56,14 +65,14 @@ export function dot(a: Vector, b: Vector): number {
56
65
  * add([1, 2], [3, 4]) -> [4, 6]
57
66
  */
58
67
  export function add<V extends Vector>(...vecs: ReadonlyArray<V>): V {
59
- const zipped = _.zip(...vecs);
68
+ const zipped = zip(...vecs);
60
69
  // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.
61
70
  return zipped.map(arraySum);
62
71
  }
63
72
 
64
73
  export function subtract<V extends Vector>(v1: V, v2: V): V {
65
74
  // @ts-expect-error - TS2322 - Type 'number[]' is not assignable to type 'V'.
66
- return _.zip(v1, v2).map((dim) => dim[0] - dim[1]);
75
+ return zip(v1, v2).map((dim) => dim[0] - dim[1]);
67
76
  }
68
77
 
69
78
  export function negate<V extends Vector>(v: V): V {
@@ -82,12 +91,9 @@ export function scale<V extends Vector>(v1: V, scalar: number): V {
82
91
  }
83
92
 
84
93
  export function equal(v1: Vector, v2: Vector, tolerance?: number): boolean {
85
- // _.zip will nicely deal with the lengths, going through
86
- // the length of the longest vector. knumber.equal then
87
- // returns false for any number compared to the undefined
88
- // passed in if one of the vectors is shorter.
89
- return _.zip(v1, v2).every((pair) =>
90
- knumber.equal(pair[0], pair[1], tolerance),
94
+ return (
95
+ v1.length === v2.length &&
96
+ zip(v1, v2).every((pair) => knumber.equal(pair[0], pair[1], tolerance))
91
97
  );
92
98
  }
93
99
 
@@ -1 +1 @@
1
- {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.es2016.full.d.ts","../perseus-core/dist/analytics.d.ts","../perseus-core/dist/types.d.ts","../perseus-core/dist/utils/add-library-version-to-perseus-debug.d.ts","../perseus-core/dist/version.d.ts","../perseus-core/dist/index.d.ts","./src/version.ts","../../node_modules/@types/underscore/index.d.ts","./src/number.ts","./src/vector.ts","./src/point.ts","./src/line.ts","./src/ray.ts","./src/index.ts","./src/logo.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/scheduler/tracing.d.ts","../../node_modules/@types/react/index.d.ts","./types/aphrodite.d.ts","./types/assets.d.ts","./types/hubble.d.ts","./types/jsdiff.d.ts","./types/raphael.d.ts","./types/utility.d.ts","../../node_modules/@types/aria-query/index.d.ts","../../node_modules/@babel/types/lib/index.d.ts","../../node_modules/@types/babel__generator/index.d.ts","../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/@types/babel__template/index.d.ts","../../node_modules/@types/babel__traverse/index.d.ts","../../node_modules/@types/babel__core/index.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/dom-events.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/readline/promises.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/globals.global.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/@types/connect/index.d.ts","../../node_modules/@types/body-parser/index.d.ts","../../node_modules/@types/bonjour/index.d.ts","../../node_modules/@types/range-parser/index.d.ts","../../node_modules/@types/qs/index.d.ts","../../node_modules/@types/connect-history-api-fallback/node_modules/@types/express-serve-static-core/index.d.ts","../../node_modules/@types/connect-history-api-fallback/index.d.ts","../../node_modules/@types/cross-spawn/index.d.ts","../../node_modules/@types/detect-port/index.d.ts","../../node_modules/@types/doctrine/index.d.ts","../../node_modules/@types/ejs/index.d.ts","../../node_modules/@types/emscripten/index.d.ts","../../node_modules/@types/escodegen/index.d.ts","../../node_modules/@types/eslint/helpers.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/eslint/index.d.ts","../../node_modules/@types/eslint-scope/index.d.ts","../../node_modules/@types/send/node_modules/@types/mime/index.d.ts","../../node_modules/@types/send/index.d.ts","../../node_modules/@types/express-serve-static-core/index.d.ts","../../node_modules/@types/http-errors/index.d.ts","../../node_modules/@types/mime/Mime.d.ts","../../node_modules/@types/mime/index.d.ts","../../node_modules/@types/serve-static/index.d.ts","../../node_modules/@types/express/index.d.ts","../../node_modules/@types/find-cache-dir/index.d.ts","../../node_modules/@types/graceful-fs/index.d.ts","../../node_modules/@types/hoist-non-react-statics/index.d.ts","../../node_modules/@types/html-minifier-terser/index.d.ts","../../node_modules/@types/http-proxy/index.d.ts","../../node_modules/@types/is-ci/node_modules/ci-info/index.d.ts","../../node_modules/@types/is-ci/index.d.ts","../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../node_modules/@types/istanbul-lib-report/index.d.ts","../../node_modules/@types/istanbul-reports/index.d.ts","../../node_modules/expect/node_modules/@jest/expect-utils/build/index.d.ts","../../node_modules/chalk/index.d.ts","../../node_modules/@sinclair/typebox/typebox.d.ts","../../node_modules/expect/node_modules/@jest/schemas/build/index.d.ts","../../node_modules/expect/node_modules/pretty-format/build/index.d.ts","../../node_modules/expect/node_modules/jest-diff/build/index.d.ts","../../node_modules/expect/node_modules/jest-matcher-utils/build/index.d.ts","../../node_modules/expect/build/index.d.ts","../../node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","../../node_modules/@types/jest/index.d.ts","../../node_modules/@types/jquery/JQueryStatic.d.ts","../../node_modules/@types/jquery/JQuery.d.ts","../../node_modules/@types/jquery/misc.d.ts","../../node_modules/@types/jquery/legacy.d.ts","../../node_modules/@types/sizzle/index.d.ts","../../node_modules/@types/jquery/index.d.ts","../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts","../../node_modules/@types/parse5/index.d.ts","../../node_modules/@types/tough-cookie/index.d.ts","../../node_modules/@types/jsdom/base.d.ts","../../node_modules/@types/jsdom/ts4.0/index.d.ts","../../node_modules/@types/jsdom/index.d.ts","../../node_modules/@types/json5/index.d.ts","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../../node_modules/@types/mdx/types.d.ts","../../node_modules/@types/mdx/index.d.ts","../../node_modules/@types/mime-types/index.d.ts","../../node_modules/@types/minimist/index.d.ts","../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts","../../node_modules/@types/node-fetch/externals.d.ts","../../node_modules/@types/node-fetch/index.d.ts","../../node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/@types/parse-json/index.d.ts","../../node_modules/@types/prettier/index.d.ts","../../node_modules/@types/pretty-hrtime/index.d.ts","../../node_modules/@types/react-dom/index.d.ts","../../node_modules/redux/index.d.ts","../../node_modules/@types/react-redux/index.d.ts","../../node_modules/@types/react-transition-group/Transition.d.ts","../../node_modules/@types/react-transition-group/CSSTransition.d.ts","../../node_modules/@types/react-transition-group/TransitionGroup.d.ts","../../node_modules/@types/react-transition-group/SwitchTransition.d.ts","../../node_modules/@types/react-transition-group/config.d.ts","../../node_modules/@types/react-transition-group/index.d.ts","../../node_modules/@types/resolve/index.d.ts","../../node_modules/@types/retry/index.d.ts","../../node_modules/@types/scheduler/index.d.ts","../../node_modules/@types/semver/classes/semver.d.ts","../../node_modules/@types/semver/functions/parse.d.ts","../../node_modules/@types/semver/functions/valid.d.ts","../../node_modules/@types/semver/functions/clean.d.ts","../../node_modules/@types/semver/functions/inc.d.ts","../../node_modules/@types/semver/functions/diff.d.ts","../../node_modules/@types/semver/functions/major.d.ts","../../node_modules/@types/semver/functions/minor.d.ts","../../node_modules/@types/semver/functions/patch.d.ts","../../node_modules/@types/semver/functions/prerelease.d.ts","../../node_modules/@types/semver/functions/compare.d.ts","../../node_modules/@types/semver/functions/rcompare.d.ts","../../node_modules/@types/semver/functions/compare-loose.d.ts","../../node_modules/@types/semver/functions/compare-build.d.ts","../../node_modules/@types/semver/functions/sort.d.ts","../../node_modules/@types/semver/functions/rsort.d.ts","../../node_modules/@types/semver/functions/gt.d.ts","../../node_modules/@types/semver/functions/lt.d.ts","../../node_modules/@types/semver/functions/eq.d.ts","../../node_modules/@types/semver/functions/neq.d.ts","../../node_modules/@types/semver/functions/gte.d.ts","../../node_modules/@types/semver/functions/lte.d.ts","../../node_modules/@types/semver/functions/cmp.d.ts","../../node_modules/@types/semver/functions/coerce.d.ts","../../node_modules/@types/semver/classes/comparator.d.ts","../../node_modules/@types/semver/classes/range.d.ts","../../node_modules/@types/semver/functions/satisfies.d.ts","../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../node_modules/@types/semver/ranges/min-version.d.ts","../../node_modules/@types/semver/ranges/valid.d.ts","../../node_modules/@types/semver/ranges/outside.d.ts","../../node_modules/@types/semver/ranges/gtr.d.ts","../../node_modules/@types/semver/ranges/ltr.d.ts","../../node_modules/@types/semver/ranges/intersects.d.ts","../../node_modules/@types/semver/ranges/simplify.d.ts","../../node_modules/@types/semver/ranges/subset.d.ts","../../node_modules/@types/semver/internals/identifiers.d.ts","../../node_modules/@types/semver/index.d.ts","../../node_modules/@types/serve-index/index.d.ts","../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../node_modules/@types/sockjs/index.d.ts","../../node_modules/@types/stack-utils/index.d.ts","../../node_modules/@types/testing-library__jest-dom/matchers.d.ts","../../node_modules/@types/testing-library__jest-dom/index.d.ts","../../node_modules/@types/unist/index.d.ts","../../node_modules/@types/ws/index.d.ts","../../node_modules/@types/yargs-parser/index.d.ts","../../node_modules/@types/yargs/index.d.ts","../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true},{"version":"f3d4da15233e593eacb3965cde7960f3fddf5878528d882bcedd5cbaba0193c7","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"2dfbb27de6bf0db1018122b054d26cf1fc47bc1979d096aec101b08a42c63b13","d71feefe369cb739bee1dc859c5a152c9abfcf1dac1c650f30ee57e80f45d2fd","58b905d0c7f042660b9c9a49400f06515f806b44646f2048308029b524a2c5a6","97d42d4332ec94afd5aae9318a21ac5bbb8fda10c719282d3a0f53d3cef83e32","ddc281c37e4be5c6a450b5d0d74a89fb041ecba2d9bfd34f3869488e92f2a495","952545fecba997842b1c3c573f59356d349c24941216706be8bfcd5fa6e498f4",{"version":"a24a36714fd0e68f628157a0337d610b89654b8578884cd2822390b278fdb7cf","signature":"ddc281c37e4be5c6a450b5d0d74a89fb041ecba2d9bfd34f3869488e92f2a495"},{"version":"0609dda5350cd6d8c42daef710dffe3b51521ffbd00109e234f7bfb7533194e7","affectsGlobalScope":true},{"version":"f1faefe79884a95adc5ec8b0cb5d03fad1ba35d7e826b91fa22e489fbd2cbc7c","signature":"d9b30b29356620aaddeb219c153dc34515445c361420ab49a115ad1b22fffe6c"},{"version":"8745570159453293fa20b5e36c8e10888a74c507339e2ad3d2623b2742ddc1a0","signature":"17638540e753ed5daf84ede88f54e268084f3d2c53d90b67201d5fd515bd89e1"},{"version":"dcaae2d7b0b3a4d80a4721b107340418d1a1e44d1f2cdd809822b3d03b562f82","signature":"cfd1fc940ca2510d7cf16cfb60383b477f9dc0d80c12d287d8842055571d386b"},{"version":"78017a04da00b4051f3d0a1f75e721758809ec79c5d76f76bdd86a73b64320de","signature":"a4d4a367ae452f0855c8022ccf08b882bad0476aa6ed2ac94a342102e611a2fb"},{"version":"2bcec68ac1b6d18fd626c18d33ec5093d66dad2bea7b7a34eb973450013eddad","signature":"13193d4b8fd20df7306ae964d3d379279249e0f27e1d5cc26a854235828be8f0"},{"version":"d081ee3ddc2790c14aa1ba344395d08b1db7ee9d066d80efef03094a6838ab31","signature":"bf62ce1b2ee3835aa1d7c55cdd6d07477514987e579cca02c0dfa6cdc98e95e2"},{"version":"cf0c37ed7fa4f67287c5d1f7f7c8221a85ff659405b6323c2a4529c37d5a45f2","signature":"ac633955e18ace62eee12752b874917f1e6f27d26884503a3e739df6387b53fc"},{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"4c68749a564a6facdf675416d75789ee5a557afda8960e0803cf6711fa569288","8c6aac56e9dddb1f02d8e75478b79da0d25a1d0e38e75d5b8947534f61f3785e","5f8f00356f6a82e21493b2d57b2178f11b00cf8960df00bd37bdcae24c9333ca",{"version":"51da54ddc920585f6f7ad98b6ba9916dfbb42ce4b8a872fd4f9a4cc93491f404","affectsGlobalScope":true},"80bf2d65930700aa5ab33d87e073c14e2f92c121ff492a46f7365bc9ad454566",{"version":"d9f662e1ab29cb98ba13723ab3efcbf6c0cad3edc8081071197935cb91dea636","affectsGlobalScope":true},"b04fc8bb50157c7def1b0b87a86a353d4f29b41b01e2d36b1b79ccaf1af83147","b5ae8664ca4f6bea8f4280758ac550f18f6ae1c63e1465f805a85bbec5601025","cc83d06659665af854af51145672028ecf3df00200dab93048c89b5eabb3d0fe",{"version":"ae14b3079eafca36309e6db62f65fc3977e12092cf738eff34f5eca3d139bed2","affectsGlobalScope":true},"5024433f8da3a7968f6d12cffd32f2cefae4442a9ad1c965fa2d23342338b700","f713064ca751dc588bc13832137c418cb70cf0446de92ade60ad631071558fca","7a1f3d0b8dd0e869c58b44848d9f0be3592c3ff6dc77091e7130306f6d2907ed","96c23535f4f9dd15beb767e070559ea672f6a35f103152836a67100605136a96","670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","29a46d003ca3c721e6405f00dee7e3de91b14e09701eba5d887bf76fb2d47d38","3df59a50b6fdd703016b81e254633080b3fa1e9035a462e730235876470d0012","7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"54ba7456adb777a685250cd144115ea51379784012ba1311255b715c6bdcff2a","affectsGlobalScope":true},"11e2d554398d2bd460e7d06b2fa5827a297c8acfbe00b4f894a224ac0862857f",{"version":"e193e634a99c9c1d71f1c6e4e1567a4a73584328d21ea02dd5cddbaad6693f61","affectsGlobalScope":true},"374ca798f244e464346f14301dc2a8b4b111af1a83b49fffef5906c338a1f922","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","e596c9bb2f29a2699fdd4ae89139612652245192f67f45617c5a4b20832aaae9","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","489532ff54b714f0e0939947a1c560e516d3ae93d51d639ab02e907a0e950114","216717f17c095cde1dc19375e1ab3af0a4a485355860c077a4f9d6ea59fab5b5","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"816ad2e607a96de5bcac7d437f843f5afd8957f1fa5eefa6bba8e4ed7ca8fd84","affectsGlobalScope":true},"80473bd0dd90ca1e166514c2dfead9d5803f9c51418864ca35abbeec6e6847e1","1c84b46267610a34028edfd0d035509341751262bac1062857f3c8df7aff7153","e6c86d83bd526c8bdb5d0bf935b8e72ce983763d600743f74d812fdf4abf4df6","04eb6578a588d6a46f50299b55f30e3a04ef27d0c5a46c57d8fcc211cd530faa","8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e630e5528e899219ae319e83bef54bf3bcb91b01d76861ecf881e8e614b167f0","affectsGlobalScope":true},"bcebb922784739bdb34c18ee51095d25a92b560c78ccd2eaacd6bd00f7443d83","7ee6ed878c4528215c82b664fe0cfe80e8b4da6c0d4cc80869367868774db8b1","b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30",{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true},{"version":"0715e4cd28ad471b2a93f3e552ff51a3ae423417a01a10aa1d3bc7c6b95059d6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","7d55d78cd47cf5280643b53434b16c2d9d11d144126932759fbdd51da525eec4","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","f69ff39996a61a0dd10f4bce73272b52e8024a4d58b13ab32bf4712909d0a2b7",{"version":"3c4ba1dd9b12ffa284b565063108f2f031d150ea15b8fafbdc17f5d2a07251f3","affectsGlobalScope":true},"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","c4577fb855ca259bdbf3ea663ca73988ce5f84251a92b4aef80a1f4122b6f98e","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"f0900cd5d00fe1263ff41201fb8073dbeb984397e4af3b8002a5c207a30bdc33","affectsGlobalScope":true},{"version":"ff07a9a03c65732ccc59b3c65bc584173da093bd563a6565411c01f5703bd3cb","affectsGlobalScope":true},"6de4a219df57d2b27274d59b67708f13c2cbf7ed211abe57d8f9ab8b25cde776","a5edeccc71da079d52df5b6492f577d0131c102fc6296632a04f3dd07247911b","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa",{"version":"da26af7362f53d122283bc69fed862b9a9fe27e01bc6a69d1d682e0e5a4df3e6","affectsGlobalScope":true},"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"d8d555f3d607ecaa18d55de6995ea8f206342ecc93305919eac945c7c78c78c6","104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","d78e5898c8de5e0f934eee83f680262de005caa268d137101b833fd932f95e07","2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","fedd311d427fdafac411b4e0edc0d1014668853679e021e04717a6de45ff5c0c",{"version":"c5dd1fef4cd4aaffc78786047bed5ae6fc1200d19a1946cbc4e2d3ed4d62c8fa","affectsGlobalScope":true},"56cbe80e6c42d7e6e66b6f048add8b01c663797b843a074d9f19c4a3d63a269a","56a7c3edfea83c399e455abf803b6d9387da5838b1bcb9e34d7e68d4c2d9cb38","72dff7d18139f0d579db7e4b904fb39f5740423f656edc1f84e4baa936b1fac0","febcc45f9517827496659c229a21b058831eef4cf9b71b77fd9a364ae12c3b9e","f2a60d253f7206372203b736144906bf135762100a2b3d1b415776ebf6575d07",{"version":"fa4546e9b67dbdcc0fa8d8653c6b89d49b9e7b637b3340bea78107ca161595fa","affectsGlobalScope":true},"9dffc5c0859e5aeba5e40b079d2f5e8047bdff91d0b3477d77b6fb66ee76c99d",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"ee7d8894904b465b072be0d2e4b45cf6b887cdba16a467645c4e200982ece7ea","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","df95e00612c1faa5e0e7ef0dba589b18665bbeb3221db2b6cee1fe4d0e61921f","1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a",{"version":"4d0536bbf67bc4301ebb5154eeb38168db0f7b34c490a80b6fa41bc6b751bcb4","affectsGlobalScope":true},"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","d2a38ad7bb4676e7fd5d058a08105d81ac232c363ee56be0b401fc277d50dbb1","2ac2e08e0d0ed266849cb9da521c3be170a8bc111d25eeeb668c7dbf0ac4171a","34118be360cdd3381bbebbfd4b093c394460c8fc5df40688d58f45d86ab1448b","43cdd474c5aa3340da4816bb8f1ae7f3b1bcf9e70d997afc36a0f2c432378c84","19f1159e1fa24300e2eaf72cb53f0815f5879ec53cad3c606802f0c55f0917e9","afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","bfe1b52cf71aea9bf8815810cc5d9490fa9617313e3d3c2ee3809a28b80d0bb4","ee65fe452abe1309389c5f50710f24114e08a302d40708101c4aa950a2a7d044","54c9959f2d8ba97a5fcc4345ac2fca6f1bc20fe5764570b7fef37bea107bc70b","913754f9281683f22d98d0ba7796896cee30c302baefa3dda69f61af8de244d8","a3e5b8b86e7bd38d9afdc294875c4445c535319e288d3a13c1e2e41f9af934f2","035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","6c1e688f95fcaf53b1e41c0fdadf2c1cfc96fa924eaf7f9fdb60f96deb0a4986","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","6cffc933aac260d5ac5d45a00b35454c98edbb6c0e80b964871b268cc199a871","43883cf3635bb1846cbdc6c363787b76227677388c74f7313e3f0edb380840fa","2d47012580f859dae201d2eef898a416bdae719dffc087dfd06aefe3de2f9c8d","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","2cec1a31729b9b01e9294c33fc9425d336eff067282809761ad2e74425d6d2a5","2d47012580f859dae201d2eef898a416bdae719dffc087dfd06aefe3de2f9c8d",{"version":"458e2fd1185e659cb800ef68d01ef77de70dcab8860bedf6d94eaebe736751f1","affectsGlobalScope":true},{"version":"115761f64ad832d1c1d25b6d88968dbcbd9f041f26dcf4fee24c72f1877676ab","affectsGlobalScope":true},{"version":"fa0c33084cd3ff947ba61f0f6e3082eb0642482875d0600e1d555323f40bdb8e","affectsGlobalScope":true},{"version":"201995bd39718f4a520a5e89b0a378bc12821478d4ea46c70520728d6d79e7e4","affectsGlobalScope":true},{"version":"6f1f78e8c2a5c7cd2c38aa9cc5da26d9c039f2bbfa753f2a0a54ce41c4dff8d0","affectsGlobalScope":true},"ec89427601297d439c961528832a75017d9356bec2ee42c1d16f2274590d9330","2b1af4170f6dfa90f43d2fe3d6c36f95b7fa121aa434a2acefb763d7be460a53","fc37aca06f6b8b296c42412a2e75ab53d30cd1fa8a340a3bb328a723fd678377","5f2c582b9ef260cb9559a64221b38606378c1fabe17694592cdfe5975a6d7efa","cc256fd958b33576ed32c7338c64adb0d08fc0c2c6525010202fab83f32745da","fd20dfa2434a61a87e3fa9450f9de2ed2c365ea43b17b34ac6616d90d9681381","389303117a81e90897689e7adb4b53a062e68a6fe4067088fae9552907aa28c3",{"version":"d4c4fe14b23180acf25e4a68dc3bb9e5c38233dd3de12a4ab9569e636090ac9b","affectsGlobalScope":true},"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","32ab25b7b28b24a138d879ca371b18c8fdfdd564ad5107e1333c5aa5d5fea494","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","6f294731b495c65ecf46a5694f0082954b961cf05463bea823f8014098eaffa0","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","b82fc740467e59abe3d6170417e461527d2a95610f55915fc59557c4b7be55ba","45b6a651b5e502cdfa93dc2f23779752def4ada323ebcfc34e4a4d22e9589971","54f1d17f9f484650cd49b53d9a6ba75593955a9ead093628888a37407b6ecd51","169cc96316cacf8b489aaab4ac6bcef7b33e8779a8902bce57c737b4aa372d16","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","4340936f4e937c452ae783514e7c7bbb7fc06d0c97993ff4865370d0962bb9cf","5009c081fd8ca3fcd6f3adcd071a1c79a933a400532b897822aad0943688a1f1","22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","916be7d770b0ae0406be9486ac12eb9825f21514961dd050594c4b250617d5a8","429b6df7d7b94389bd42cfdf39bccea903acd3628498cec6172302801fbeac89","d7c30ea636d7d7cbeba0795baa8ec1bbd06274bd19a23ec0d7c84d0610a5f0c7","b567296d1820a1e50b6522c99a4f272c70eb2cba690da6e64a25635b70b1383f",{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true},"1781e7a2a01c07c7295d3ce885d5d2905bec6449725937e3b8776c9b5ab4bf5b","332c7ccf95426d3156ebedb7295979ef2435bd1c1a940024a4d068da3418718f","e03334588c63840b7054accd0b90f29c5890db6a6555ac0869a78a23297f1396","c3052485f32a96bfde75a2976c1238995522584ba464f04ff16a8a40af5e50d1","c220410b8e956fa157ce4e5e6ac871f0f433aa120c334d906ff1f5e2c7369e95","960a68ced7820108787135bdae5265d2cc4b511b7dcfd5b8f213432a8483daf1","5e8db4872785292074b394d821ae2fc10e4f8edc597776368aebbe8aefb24422","8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","0c681cfae79b859ed0c5ddc1160c0ea0a529f5d81b3488fb0641105bd8757200","cc0700b1b97e18a3d5d9184470502d8762ec85158819d662730c3a8c5d702584","9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","f77ff4cd234d3fd18ddd5aeadb6f94374511931976d41f4b9f594cb71f7ce6f3","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","4f18b4e6081e5e980ef53ddf57b9c959d36cffe1eb153865f512a01aeffb5e1e","7f17d4846a88eca5fe71c4474ef687ee89c4acf9b5372ab9b2ee68644b7e0fe0","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","85f8ebd7f245e8bf29da270e8b53dcdd17528826ffd27176c5fc7e426213ef5a","acebfe99678cf7cddcddc3435222cf132052b1226e902daac9fbb495c321a9b5","550650516d34048712520ffb1fce4a02f2d837761ee45c7d9868a7a35e7b0343","82b1f9a6eefef7386aebe22ac49f23b806421e82dbf35c6e5b7132d79e4165da","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","bd0f4458d57115491a1dd9fe522fa1d6ffe45a85b12bbd463967f90b50e43c29",{"version":"06279f0df6f368af41fe267319e90b5af9d89ad489d1662164b94ce30a797c79","affectsGlobalScope":true},"6d09838b65c3c780513878793fc394ae29b8595d9e4729246d14ce69abc71140","77c5c7f8578d139c74102a29384f5f4f0792a12d819ddcdcaf8307185ff2d45d","bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","610960e660271e158ba1656254569c3d72ff172a5eae5999f8970fadab3f86e5","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":1,"module":99,"noImplicitAny":false,"outDir":"./dist","rootDir":"./src","skipDefaultLibCheck":true,"skipLibCheck":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":false,"strictNullChecks":true,"strictPropertyInitialization":true,"target":3},"fileIdsList":[[73,125,188,189,190],[125,188,189,190],[73,74,75,76,77,125,188,189,190],[73,75,125,188,189,190],[98,125,132,133,188,189,190],[89,125,132,188,189,190],[124,125,132,138,188,189,190],[95,98,125,132,136,137,188,189,190],[98,125,132,188,189,190],[84,125,132,188,189,190],[125,147,149,188,189,190],[125,146,147,148,188,189,190],[95,98,125,132,136,137,152,188,189,190],[125,134,137,153,157,188,189,190],[96,125,132,188,189,190],[65,125,188,189,190],[95,98,100,103,113,124,125,132,188,189,190],[125,164,188,189,190],[125,166,188,189,190],[125,167,188,189,190],[125,173,176,188,189,190],[125,172,188,189,190],[125,179,180,181,182,183,188,189,190],[95,125,127,132,186,187,189,190],[125,188,189],[125,188,190],[125,188,189,190,192,194,195,196,197,198,199,200,201,202,203,204],[125,188,189,190,192,193,195,196,197,198,199,200,201,202,203,204],[125,188,189,190,193,194,195,196,197,198,199,200,201,202,203,204],[125,188,189,190,192,193,194,196,197,198,199,200,201,202,203,204],[125,188,189,190,192,193,194,195,197,198,199,200,201,202,203,204],[125,188,189,190,192,193,194,195,196,198,199,200,201,202,203,204],[125,188,189,190,192,193,194,195,196,197,199,200,201,202,203,204],[125,188,189,190,192,193,194,195,196,197,198,200,201,202,203,204],[125,188,189,190,192,193,194,195,196,197,198,199,201,202,203,204],[125,188,189,190,192,193,194,195,196,197,198,199,200,202,203,204],[125,188,189,190,192,193,194,195,196,197,198,199,200,201,203,204],[125,188,189,190,192,193,194,195,196,197,198,199,200,201,202,204],[125,188,189,190,192,193,194,195,196,197,198,199,200,201,202,203],[125,188,189,190,205,206],[125,156,188,189,190],[125,155,188,189,190],[98,124,125,132,188,189,190,209,210],[98,113,125,132,188,189,190],[79,125,188,189,190],[82,125,188,189,190],[83,88,116,125,188,189,190],[84,95,96,103,113,124,125,188,189,190],[84,85,95,103,125,188,189,190],[86,125,188,189,190],[87,88,96,104,125,188,189,190],[88,113,121,125,188,189,190],[89,91,95,103,125,188,189,190],[90,125,188,189,190],[91,92,125,188,189,190],[95,125,188,189,190],[93,95,125,188,189,190],[95,96,97,113,124,125,188,189,190],[95,96,97,110,113,116,125,188,189,190],[125,129,188,189,190],[91,98,103,113,124,125,188,189,190],[95,96,98,99,103,113,121,124,125,188,189,190],[98,100,113,121,124,125,188,189,190],[79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,188,189,190],[95,101,125,188,189,190],[102,124,125,188,189,190],[91,95,103,113,125,188,189,190],[104,125,188,189,190],[105,125,188,189,190],[82,106,125,188,189,190],[107,123,125,129,188,189,190],[108,125,188,189,190],[109,125,188,189,190],[95,110,111,125,188,189,190],[110,112,125,127,188,189,190],[83,95,113,114,115,116,125,188,189,190],[83,113,115,125,188,189,190],[113,114,125,188,189,190],[116,125,188,189,190],[117,125,188,189,190],[95,119,120,125,188,189,190],[119,120,125,188,189,190],[88,103,113,121,125,188,189,190],[122,125,188,189,190],[103,123,125,188,189,190],[83,98,109,124,125,188,189,190],[88,125,188,189,190],[113,125,126,188,189,190],[125,127,188,189,190],[125,128,188,189,190],[83,88,95,97,106,113,124,125,127,129,188,189,190],[113,125,130,188,189,190],[125,185,188,189,190],[125,186,188,189,190],[65,125,161,188,189,190,217],[65,125,188,189,190,219],[125,188,189,190,219,220,221,222,223],[61,62,63,64,125,188,189,190],[125,132,188,189,190],[125,188,189,190,228,267],[125,188,189,190,228,252,267],[125,188,189,190,267],[125,188,189,190,228],[125,188,189,190,228,253,267],[125,188,189,190,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266],[125,188,189,190,253,267],[96,113,125,132,151,188,189,190],[96,125,158,188,189,190],[98,125,132,154,156,188,189,190],[125,178,188,189,190,272],[95,98,100,113,121,124,125,130,132,188,189,190],[125,188,189,190,276],[95,113,125,132,188,189,190],[125,169,175,188,189,190],[125,171,188,189,190],[125,173,188,189,190],[125,170,174,188,189,190],[52,54,55,56,57,58,125,188,189,190],[55,56,125,188,189,190],[53,125,188,189,190],[53,54,55,125,188,189,190],[53,54,125,188,189,190],[51,125,188,189,190],[47,48,49,50,125,188,189,190],[52,54,55,56,57,58],[56],[55]],"referencedMap":[[75,1],[73,2],[171,2],[72,2],[78,3],[74,1],[76,4],[77,1],[134,5],[135,6],[139,7],[138,8],[133,9],[140,10],[141,2],[142,2],[143,2],[144,2],[145,2],[150,11],[146,2],[149,12],[147,2],[153,13],[158,14],[159,2],[160,15],[161,16],[162,2],[154,2],[163,17],[165,18],[164,2],[166,2],[167,19],[168,20],[178,21],[177,22],[180,2],[179,2],[184,23],[182,2],[181,2],[188,24],[190,25],[189,26],[148,2],[191,2],[193,27],[194,28],[192,29],[195,30],[196,31],[197,32],[198,33],[199,34],[200,35],[201,36],[202,37],[203,38],[204,39],[206,40],[205,2],[207,2],[155,41],[156,42],[208,2],[210,2],[211,43],[209,44],[79,45],[80,45],[82,46],[83,47],[84,48],[85,49],[86,50],[87,51],[88,52],[89,53],[90,54],[91,55],[92,55],[94,56],[93,57],[95,56],[96,58],[97,59],[81,60],[131,2],[98,61],[99,62],[100,63],[132,64],[101,65],[102,66],[103,67],[104,68],[105,69],[106,70],[107,71],[108,72],[109,73],[110,74],[111,74],[112,75],[113,76],[115,77],[114,78],[116,79],[117,80],[118,2],[119,81],[120,82],[121,83],[122,84],[123,85],[124,86],[125,87],[126,88],[127,89],[128,90],[129,91],[130,92],[212,2],[213,2],[186,93],[185,94],[214,2],[215,2],[63,2],[137,2],[136,2],[216,16],[218,95],[220,96],[222,16],[219,16],[221,96],[223,2],[224,97],[61,2],[65,98],[225,99],[226,2],[227,2],[64,2],[252,100],[253,101],[228,102],[231,102],[250,100],[251,100],[241,100],[240,103],[238,100],[233,100],[246,100],[244,100],[248,100],[232,100],[245,100],[249,100],[234,100],[235,100],[247,100],[229,100],[236,100],[237,100],[239,100],[243,100],[254,104],[242,100],[230,100],[267,105],[266,2],[261,104],[263,106],[262,104],[255,104],[256,104],[258,104],[260,104],[264,106],[265,106],[257,106],[259,106],[152,107],[151,2],[268,108],[157,109],[269,2],[183,2],[270,9],[271,2],[273,110],[272,2],[187,2],[53,2],[274,2],[275,111],[276,2],[277,112],[278,113],[170,2],[62,2],[176,114],[169,2],[172,115],[174,116],[175,117],[173,22],[217,2],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[46,2],[4,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[36,2],[33,2],[34,2],[35,2],[37,2],[7,2],[38,2],[43,2],[44,2],[39,2],[40,2],[41,2],[42,2],[1,2],[45,2],[11,2],[10,2],[59,118],[57,119],[60,2],[54,120],[56,121],[58,119],[55,122],[52,123],[66,16],[67,2],[68,2],[69,2],[70,2],[71,2],[47,2],[51,124],[48,2],[49,2],[50,2]],"exportedModulesMap":[[75,1],[73,2],[171,2],[72,2],[78,3],[74,1],[76,4],[77,1],[134,5],[135,6],[139,7],[138,8],[133,9],[140,10],[141,2],[142,2],[143,2],[144,2],[145,2],[150,11],[146,2],[149,12],[147,2],[153,13],[158,14],[159,2],[160,15],[161,16],[162,2],[154,2],[163,17],[165,18],[164,2],[166,2],[167,19],[168,20],[178,21],[177,22],[180,2],[179,2],[184,23],[182,2],[181,2],[188,24],[190,25],[189,26],[148,2],[191,2],[193,27],[194,28],[192,29],[195,30],[196,31],[197,32],[198,33],[199,34],[200,35],[201,36],[202,37],[203,38],[204,39],[206,40],[205,2],[207,2],[155,41],[156,42],[208,2],[210,2],[211,43],[209,44],[79,45],[80,45],[82,46],[83,47],[84,48],[85,49],[86,50],[87,51],[88,52],[89,53],[90,54],[91,55],[92,55],[94,56],[93,57],[95,56],[96,58],[97,59],[81,60],[131,2],[98,61],[99,62],[100,63],[132,64],[101,65],[102,66],[103,67],[104,68],[105,69],[106,70],[107,71],[108,72],[109,73],[110,74],[111,74],[112,75],[113,76],[115,77],[114,78],[116,79],[117,80],[118,2],[119,81],[120,82],[121,83],[122,84],[123,85],[124,86],[125,87],[126,88],[127,89],[128,90],[129,91],[130,92],[212,2],[213,2],[186,93],[185,94],[214,2],[215,2],[63,2],[137,2],[136,2],[216,16],[218,95],[220,96],[222,16],[219,16],[221,96],[223,2],[224,97],[61,2],[65,98],[225,99],[226,2],[227,2],[64,2],[252,100],[253,101],[228,102],[231,102],[250,100],[251,100],[241,100],[240,103],[238,100],[233,100],[246,100],[244,100],[248,100],[232,100],[245,100],[249,100],[234,100],[235,100],[247,100],[229,100],[236,100],[237,100],[239,100],[243,100],[254,104],[242,100],[230,100],[267,105],[266,2],[261,104],[263,106],[262,104],[255,104],[256,104],[258,104],[260,104],[264,106],[265,106],[257,106],[259,106],[152,107],[151,2],[268,108],[157,109],[269,2],[183,2],[270,9],[271,2],[273,110],[272,2],[187,2],[53,2],[274,2],[275,111],[276,2],[277,112],[278,113],[170,2],[62,2],[176,114],[169,2],[172,115],[174,116],[175,117],[173,22],[217,2],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[46,2],[4,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[36,2],[33,2],[34,2],[35,2],[37,2],[7,2],[38,2],[43,2],[44,2],[39,2],[40,2],[41,2],[42,2],[1,2],[45,2],[11,2],[10,2],[59,125],[57,126],[56,127],[58,126],[66,16],[67,2],[68,2],[69,2],[70,2],[71,2],[47,2],[51,124],[48,2],[49,2],[50,2]],"semanticDiagnosticsPerFile":[75,73,171,72,78,74,76,77,134,135,139,138,133,140,141,142,143,144,145,150,146,149,147,153,158,159,160,161,162,154,163,165,164,166,167,168,178,177,180,179,184,182,181,188,190,189,148,191,193,194,192,195,196,197,198,199,200,201,202,203,204,206,205,207,155,156,208,210,211,209,79,80,82,83,84,85,86,87,88,89,90,91,92,94,93,95,96,97,81,131,98,99,100,132,101,102,103,104,105,106,107,108,109,110,111,112,113,115,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,212,213,186,185,214,215,63,137,136,216,218,220,222,219,221,223,224,61,65,225,226,227,64,252,253,228,231,250,251,241,240,238,233,246,244,248,232,245,249,234,235,247,229,236,237,239,243,254,242,230,267,266,261,263,262,255,256,258,260,264,265,257,259,152,151,268,157,269,183,270,271,273,272,187,53,274,275,276,277,278,170,62,176,169,172,174,175,173,217,8,9,13,12,2,14,15,16,17,18,19,20,21,3,46,4,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,43,44,39,40,41,42,1,45,11,10,59,57,60,54,56,58,55,52,66,67,68,69,70,71,47,51,48,49,50],"latestChangedDtsFile":"./dist/logo.d.ts"},"version":"4.9.5"}
1
+ {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.es2016.full.d.ts","../perseus-core/dist/analytics.d.ts","../perseus-core/dist/types.d.ts","../perseus-core/dist/utils/add-library-version-to-perseus-debug.d.ts","../perseus-core/dist/version.d.ts","../perseus-core/dist/index.d.ts","./src/version.ts","../../node_modules/@types/underscore/index.d.ts","./src/number.ts","./src/vector.ts","./src/point.ts","./src/line.ts","./src/ray.ts","./src/index.ts","./src/logo.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/scheduler/tracing.d.ts","../../node_modules/@types/react/index.d.ts","./types/aphrodite.d.ts","./types/assets.d.ts","./types/hubble.d.ts","./types/jsdiff.d.ts","./types/raphael.d.ts","./types/utility.d.ts","../../node_modules/@types/aria-query/index.d.ts","../../node_modules/@babel/types/lib/index.d.ts","../../node_modules/@types/babel__generator/index.d.ts","../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/@types/babel__template/index.d.ts","../../node_modules/@types/babel__traverse/index.d.ts","../../node_modules/@types/babel__core/index.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/dom-events.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/readline/promises.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/globals.global.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/@types/connect/index.d.ts","../../node_modules/@types/body-parser/index.d.ts","../../node_modules/@types/bonjour/index.d.ts","../../node_modules/@types/range-parser/index.d.ts","../../node_modules/@types/qs/index.d.ts","../../node_modules/@types/connect-history-api-fallback/node_modules/@types/express-serve-static-core/index.d.ts","../../node_modules/@types/connect-history-api-fallback/index.d.ts","../../node_modules/@types/cross-spawn/index.d.ts","../../node_modules/@types/detect-port/index.d.ts","../../node_modules/@types/doctrine/index.d.ts","../../node_modules/@types/ejs/index.d.ts","../../node_modules/@types/emscripten/index.d.ts","../../node_modules/@types/escodegen/index.d.ts","../../node_modules/@types/eslint/helpers.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/eslint/index.d.ts","../../node_modules/@types/eslint-scope/index.d.ts","../../node_modules/@types/send/node_modules/@types/mime/index.d.ts","../../node_modules/@types/send/index.d.ts","../../node_modules/@types/express-serve-static-core/index.d.ts","../../node_modules/@types/http-errors/index.d.ts","../../node_modules/@types/mime/Mime.d.ts","../../node_modules/@types/mime/index.d.ts","../../node_modules/@types/serve-static/index.d.ts","../../node_modules/@types/express/index.d.ts","../../node_modules/@types/find-cache-dir/index.d.ts","../../node_modules/@types/graceful-fs/index.d.ts","../../node_modules/@types/html-minifier-terser/index.d.ts","../../node_modules/@types/http-proxy/index.d.ts","../../node_modules/@types/is-ci/node_modules/ci-info/index.d.ts","../../node_modules/@types/is-ci/index.d.ts","../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../node_modules/@types/istanbul-lib-report/index.d.ts","../../node_modules/@types/istanbul-reports/index.d.ts","../../node_modules/@types/jest/node_modules/@jest/expect-utils/build/index.d.ts","../../node_modules/chalk/index.d.ts","../../node_modules/@sinclair/typebox/typebox.d.ts","../../node_modules/@types/jest/node_modules/@jest/schemas/build/index.d.ts","../../node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","../../node_modules/@types/jest/node_modules/jest-diff/build/index.d.ts","../../node_modules/@types/jest/node_modules/jest-matcher-utils/build/index.d.ts","../../node_modules/@types/jest/node_modules/expect/build/index.d.ts","../../node_modules/@types/jest/index.d.ts","../../node_modules/@types/jquery/JQueryStatic.d.ts","../../node_modules/@types/jquery/JQuery.d.ts","../../node_modules/@types/jquery/misc.d.ts","../../node_modules/@types/jquery/legacy.d.ts","../../node_modules/@types/sizzle/index.d.ts","../../node_modules/@types/jquery/index.d.ts","../../node_modules/parse5/dist/common/html.d.ts","../../node_modules/parse5/dist/common/token.d.ts","../../node_modules/parse5/dist/common/error-codes.d.ts","../../node_modules/parse5/dist/tokenizer/preprocessor.d.ts","../../node_modules/parse5/dist/tokenizer/index.d.ts","../../node_modules/parse5/dist/tree-adapters/interface.d.ts","../../node_modules/parse5/dist/parser/open-element-stack.d.ts","../../node_modules/parse5/dist/parser/formatting-element-list.d.ts","../../node_modules/parse5/dist/parser/index.d.ts","../../node_modules/parse5/dist/tree-adapters/default.d.ts","../../node_modules/parse5/dist/serializer/index.d.ts","../../node_modules/parse5/dist/common/foreign-content.d.ts","../../node_modules/parse5/dist/index.d.ts","../../node_modules/@types/tough-cookie/index.d.ts","../../node_modules/@types/jsdom/base.d.ts","../../node_modules/@types/jsdom/index.d.ts","../../node_modules/@types/json5/index.d.ts","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../../node_modules/@types/mdx/types.d.ts","../../node_modules/@types/mdx/index.d.ts","../../node_modules/@types/mime-types/index.d.ts","../../node_modules/@types/minimist/index.d.ts","../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts","../../node_modules/@types/node-fetch/externals.d.ts","../../node_modules/@types/node-fetch/index.d.ts","../../node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/@types/parse-json/index.d.ts","../../node_modules/@types/prettier/index.d.ts","../../node_modules/@types/pretty-hrtime/index.d.ts","../../node_modules/@types/react-dom/index.d.ts","../../node_modules/@types/react-transition-group/Transition.d.ts","../../node_modules/@types/react-transition-group/CSSTransition.d.ts","../../node_modules/@types/react-transition-group/TransitionGroup.d.ts","../../node_modules/@types/react-transition-group/SwitchTransition.d.ts","../../node_modules/@types/react-transition-group/config.d.ts","../../node_modules/@types/react-transition-group/index.d.ts","../../node_modules/@types/resolve/index.d.ts","../../node_modules/@types/retry/index.d.ts","../../node_modules/@types/scheduler/index.d.ts","../../node_modules/@types/semver/classes/semver.d.ts","../../node_modules/@types/semver/functions/parse.d.ts","../../node_modules/@types/semver/functions/valid.d.ts","../../node_modules/@types/semver/functions/clean.d.ts","../../node_modules/@types/semver/functions/inc.d.ts","../../node_modules/@types/semver/functions/diff.d.ts","../../node_modules/@types/semver/functions/major.d.ts","../../node_modules/@types/semver/functions/minor.d.ts","../../node_modules/@types/semver/functions/patch.d.ts","../../node_modules/@types/semver/functions/prerelease.d.ts","../../node_modules/@types/semver/functions/compare.d.ts","../../node_modules/@types/semver/functions/rcompare.d.ts","../../node_modules/@types/semver/functions/compare-loose.d.ts","../../node_modules/@types/semver/functions/compare-build.d.ts","../../node_modules/@types/semver/functions/sort.d.ts","../../node_modules/@types/semver/functions/rsort.d.ts","../../node_modules/@types/semver/functions/gt.d.ts","../../node_modules/@types/semver/functions/lt.d.ts","../../node_modules/@types/semver/functions/eq.d.ts","../../node_modules/@types/semver/functions/neq.d.ts","../../node_modules/@types/semver/functions/gte.d.ts","../../node_modules/@types/semver/functions/lte.d.ts","../../node_modules/@types/semver/functions/cmp.d.ts","../../node_modules/@types/semver/functions/coerce.d.ts","../../node_modules/@types/semver/classes/comparator.d.ts","../../node_modules/@types/semver/classes/range.d.ts","../../node_modules/@types/semver/functions/satisfies.d.ts","../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../node_modules/@types/semver/ranges/min-version.d.ts","../../node_modules/@types/semver/ranges/valid.d.ts","../../node_modules/@types/semver/ranges/outside.d.ts","../../node_modules/@types/semver/ranges/gtr.d.ts","../../node_modules/@types/semver/ranges/ltr.d.ts","../../node_modules/@types/semver/ranges/intersects.d.ts","../../node_modules/@types/semver/ranges/simplify.d.ts","../../node_modules/@types/semver/ranges/subset.d.ts","../../node_modules/@types/semver/internals/identifiers.d.ts","../../node_modules/@types/semver/index.d.ts","../../node_modules/@types/serve-index/index.d.ts","../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../node_modules/@types/sockjs/index.d.ts","../../node_modules/@types/stack-utils/index.d.ts","../../node_modules/@types/testing-library__jest-dom/matchers.d.ts","../../node_modules/@types/testing-library__jest-dom/index.d.ts","../../node_modules/@types/unist/index.d.ts","../../node_modules/@types/ws/index.d.ts","../../node_modules/@types/yargs-parser/index.d.ts","../../node_modules/@types/yargs/index.d.ts","../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true},{"version":"f3d4da15233e593eacb3965cde7960f3fddf5878528d882bcedd5cbaba0193c7","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"2dfbb27de6bf0db1018122b054d26cf1fc47bc1979d096aec101b08a42c63b13","30369d2114b141ecfeb15d64190371cb868a6190b1d80a563bf5816b6772ede6","58b905d0c7f042660b9c9a49400f06515f806b44646f2048308029b524a2c5a6","97d42d4332ec94afd5aae9318a21ac5bbb8fda10c719282d3a0f53d3cef83e32","ddc281c37e4be5c6a450b5d0d74a89fb041ecba2d9bfd34f3869488e92f2a495","952545fecba997842b1c3c573f59356d349c24941216706be8bfcd5fa6e498f4",{"version":"a24a36714fd0e68f628157a0337d610b89654b8578884cd2822390b278fdb7cf","signature":"ddc281c37e4be5c6a450b5d0d74a89fb041ecba2d9bfd34f3869488e92f2a495"},{"version":"0609dda5350cd6d8c42daef710dffe3b51521ffbd00109e234f7bfb7533194e7","affectsGlobalScope":true},{"version":"f1faefe79884a95adc5ec8b0cb5d03fad1ba35d7e826b91fa22e489fbd2cbc7c","signature":"d9b30b29356620aaddeb219c153dc34515445c361420ab49a115ad1b22fffe6c"},{"version":"cd7e1fbd34d0e425b2f4c01300b23974137ae1a72b372fb5136bd7a08426814e","signature":"883d9f7f906c179c964440c9232f7ba83ea6d9ef33b1cab2276ab543b33ded2d"},{"version":"e1e1ba8e77b37502b2f31d99b5244ab697ff59f73d81aad8a8c2cc08f516a67b","signature":"cfd1fc940ca2510d7cf16cfb60383b477f9dc0d80c12d287d8842055571d386b"},{"version":"78017a04da00b4051f3d0a1f75e721758809ec79c5d76f76bdd86a73b64320de","signature":"a4d4a367ae452f0855c8022ccf08b882bad0476aa6ed2ac94a342102e611a2fb"},{"version":"2bcec68ac1b6d18fd626c18d33ec5093d66dad2bea7b7a34eb973450013eddad","signature":"13193d4b8fd20df7306ae964d3d379279249e0f27e1d5cc26a854235828be8f0"},{"version":"d081ee3ddc2790c14aa1ba344395d08b1db7ee9d066d80efef03094a6838ab31","signature":"bf62ce1b2ee3835aa1d7c55cdd6d07477514987e579cca02c0dfa6cdc98e95e2"},{"version":"cf0c37ed7fa4f67287c5d1f7f7c8221a85ff659405b6323c2a4529c37d5a45f2","signature":"ac633955e18ace62eee12752b874917f1e6f27d26884503a3e739df6387b53fc"},{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"4c68749a564a6facdf675416d75789ee5a557afda8960e0803cf6711fa569288","8c6aac56e9dddb1f02d8e75478b79da0d25a1d0e38e75d5b8947534f61f3785e","5f8f00356f6a82e21493b2d57b2178f11b00cf8960df00bd37bdcae24c9333ca",{"version":"51da54ddc920585f6f7ad98b6ba9916dfbb42ce4b8a872fd4f9a4cc93491f404","affectsGlobalScope":true},"80bf2d65930700aa5ab33d87e073c14e2f92c121ff492a46f7365bc9ad454566",{"version":"d9f662e1ab29cb98ba13723ab3efcbf6c0cad3edc8081071197935cb91dea636","affectsGlobalScope":true},"b04fc8bb50157c7def1b0b87a86a353d4f29b41b01e2d36b1b79ccaf1af83147","b5ae8664ca4f6bea8f4280758ac550f18f6ae1c63e1465f805a85bbec5601025","cc83d06659665af854af51145672028ecf3df00200dab93048c89b5eabb3d0fe",{"version":"ae14b3079eafca36309e6db62f65fc3977e12092cf738eff34f5eca3d139bed2","affectsGlobalScope":true},"5024433f8da3a7968f6d12cffd32f2cefae4442a9ad1c965fa2d23342338b700","f713064ca751dc588bc13832137c418cb70cf0446de92ade60ad631071558fca","7a1f3d0b8dd0e869c58b44848d9f0be3592c3ff6dc77091e7130306f6d2907ed","96c23535f4f9dd15beb767e070559ea672f6a35f103152836a67100605136a96","670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","29a46d003ca3c721e6405f00dee7e3de91b14e09701eba5d887bf76fb2d47d38","3df59a50b6fdd703016b81e254633080b3fa1e9035a462e730235876470d0012","7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"54ba7456adb777a685250cd144115ea51379784012ba1311255b715c6bdcff2a","affectsGlobalScope":true},"11e2d554398d2bd460e7d06b2fa5827a297c8acfbe00b4f894a224ac0862857f",{"version":"e193e634a99c9c1d71f1c6e4e1567a4a73584328d21ea02dd5cddbaad6693f61","affectsGlobalScope":true},"374ca798f244e464346f14301dc2a8b4b111af1a83b49fffef5906c338a1f922","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","e596c9bb2f29a2699fdd4ae89139612652245192f67f45617c5a4b20832aaae9","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","489532ff54b714f0e0939947a1c560e516d3ae93d51d639ab02e907a0e950114","216717f17c095cde1dc19375e1ab3af0a4a485355860c077a4f9d6ea59fab5b5","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"816ad2e607a96de5bcac7d437f843f5afd8957f1fa5eefa6bba8e4ed7ca8fd84","affectsGlobalScope":true},"80473bd0dd90ca1e166514c2dfead9d5803f9c51418864ca35abbeec6e6847e1","1c84b46267610a34028edfd0d035509341751262bac1062857f3c8df7aff7153","e6c86d83bd526c8bdb5d0bf935b8e72ce983763d600743f74d812fdf4abf4df6","04eb6578a588d6a46f50299b55f30e3a04ef27d0c5a46c57d8fcc211cd530faa","8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e630e5528e899219ae319e83bef54bf3bcb91b01d76861ecf881e8e614b167f0","affectsGlobalScope":true},"bcebb922784739bdb34c18ee51095d25a92b560c78ccd2eaacd6bd00f7443d83","7ee6ed878c4528215c82b664fe0cfe80e8b4da6c0d4cc80869367868774db8b1","b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30",{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true},{"version":"0715e4cd28ad471b2a93f3e552ff51a3ae423417a01a10aa1d3bc7c6b95059d6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","7d55d78cd47cf5280643b53434b16c2d9d11d144126932759fbdd51da525eec4","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","f69ff39996a61a0dd10f4bce73272b52e8024a4d58b13ab32bf4712909d0a2b7",{"version":"3c4ba1dd9b12ffa284b565063108f2f031d150ea15b8fafbdc17f5d2a07251f3","affectsGlobalScope":true},"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","c4577fb855ca259bdbf3ea663ca73988ce5f84251a92b4aef80a1f4122b6f98e","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"f0900cd5d00fe1263ff41201fb8073dbeb984397e4af3b8002a5c207a30bdc33","affectsGlobalScope":true},{"version":"ff07a9a03c65732ccc59b3c65bc584173da093bd563a6565411c01f5703bd3cb","affectsGlobalScope":true},"6de4a219df57d2b27274d59b67708f13c2cbf7ed211abe57d8f9ab8b25cde776","a5edeccc71da079d52df5b6492f577d0131c102fc6296632a04f3dd07247911b","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa",{"version":"da26af7362f53d122283bc69fed862b9a9fe27e01bc6a69d1d682e0e5a4df3e6","affectsGlobalScope":true},"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"d8d555f3d607ecaa18d55de6995ea8f206342ecc93305919eac945c7c78c78c6","104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","d78e5898c8de5e0f934eee83f680262de005caa268d137101b833fd932f95e07","2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","fedd311d427fdafac411b4e0edc0d1014668853679e021e04717a6de45ff5c0c",{"version":"c5dd1fef4cd4aaffc78786047bed5ae6fc1200d19a1946cbc4e2d3ed4d62c8fa","affectsGlobalScope":true},"56cbe80e6c42d7e6e66b6f048add8b01c663797b843a074d9f19c4a3d63a269a","56a7c3edfea83c399e455abf803b6d9387da5838b1bcb9e34d7e68d4c2d9cb38","72dff7d18139f0d579db7e4b904fb39f5740423f656edc1f84e4baa936b1fac0","febcc45f9517827496659c229a21b058831eef4cf9b71b77fd9a364ae12c3b9e","f2a60d253f7206372203b736144906bf135762100a2b3d1b415776ebf6575d07",{"version":"fa4546e9b67dbdcc0fa8d8653c6b89d49b9e7b637b3340bea78107ca161595fa","affectsGlobalScope":true},"9dffc5c0859e5aeba5e40b079d2f5e8047bdff91d0b3477d77b6fb66ee76c99d",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"ee7d8894904b465b072be0d2e4b45cf6b887cdba16a467645c4e200982ece7ea","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","df95e00612c1faa5e0e7ef0dba589b18665bbeb3221db2b6cee1fe4d0e61921f","1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a",{"version":"4d0536bbf67bc4301ebb5154eeb38168db0f7b34c490a80b6fa41bc6b751bcb4","affectsGlobalScope":true},"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","d2a38ad7bb4676e7fd5d058a08105d81ac232c363ee56be0b401fc277d50dbb1","2ac2e08e0d0ed266849cb9da521c3be170a8bc111d25eeeb668c7dbf0ac4171a","34118be360cdd3381bbebbfd4b093c394460c8fc5df40688d58f45d86ab1448b","43cdd474c5aa3340da4816bb8f1ae7f3b1bcf9e70d997afc36a0f2c432378c84","19f1159e1fa24300e2eaf72cb53f0815f5879ec53cad3c606802f0c55f0917e9","afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","ee65fe452abe1309389c5f50710f24114e08a302d40708101c4aa950a2a7d044","54c9959f2d8ba97a5fcc4345ac2fca6f1bc20fe5764570b7fef37bea107bc70b","913754f9281683f22d98d0ba7796896cee30c302baefa3dda69f61af8de244d8","a3e5b8b86e7bd38d9afdc294875c4445c535319e288d3a13c1e2e41f9af934f2","035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","6c1e688f95fcaf53b1e41c0fdadf2c1cfc96fa924eaf7f9fdb60f96deb0a4986","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","6cffc933aac260d5ac5d45a00b35454c98edbb6c0e80b964871b268cc199a871","43883cf3635bb1846cbdc6c363787b76227677388c74f7313e3f0edb380840fa","2d47012580f859dae201d2eef898a416bdae719dffc087dfd06aefe3de2f9c8d","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","2cec1a31729b9b01e9294c33fc9425d336eff067282809761ad2e74425d6d2a5",{"version":"458e2fd1185e659cb800ef68d01ef77de70dcab8860bedf6d94eaebe736751f1","affectsGlobalScope":true},{"version":"115761f64ad832d1c1d25b6d88968dbcbd9f041f26dcf4fee24c72f1877676ab","affectsGlobalScope":true},{"version":"fa0c33084cd3ff947ba61f0f6e3082eb0642482875d0600e1d555323f40bdb8e","affectsGlobalScope":true},{"version":"201995bd39718f4a520a5e89b0a378bc12821478d4ea46c70520728d6d79e7e4","affectsGlobalScope":true},{"version":"6f1f78e8c2a5c7cd2c38aa9cc5da26d9c039f2bbfa753f2a0a54ce41c4dff8d0","affectsGlobalScope":true},"ec89427601297d439c961528832a75017d9356bec2ee42c1d16f2274590d9330","2b1af4170f6dfa90f43d2fe3d6c36f95b7fa121aa434a2acefb763d7be460a53","ba600bf38b5c1a5dffa1b99dd7a783549082bbba3b4fe9497eaaf5e4c1764b20","ae8cd6af37275eac75f5369cdb5f01063bcf1f48d74cb434303ee50ec446acfe","2518830a2fda9c272ba48798d0e7b857037443b06594db8e42c87e86944ee9e4","95c1cf650d16b197525b5bfdf8dd7abba0a49d99ddb12a4ba66466a8a6903e49","1fe0aabe758d56ad72495d6e6c7b6ae75619faaeaaf03f0ddf1948eea4cfac84","bbc57966c8c48ee78fd58aadb893784025be056ae538ae22d1e83c502a987e68","5e5d6f6697e378b0660b567866bf67d099d0ea754f8810c0dabe737805f5cf03","99ab49d4732fdc98cf5c495925e65e796544cb4086fe42afc235dfc02bcf2351","af8339d509c40da075088e544c28ed37b519876e5c4d36a48644ebfb3c6ae6c8","d393adc32e520d4274bb4c3dfdcdb342b806a230b66ef0f82b35bffbc4aa2590","c26af7eaedb4f710984634e419ab15e54e5bb99a0b3cae71188c2fff572276de","38b58ef018d0aeee42ef74c42978bb5805503233fdeeb82cd2aed2199fb0d013","3b6040253231d44e6778eb6861cc86c1758562e77783d21b7ecbc73322ded539","cc256fd958b33576ed32c7338c64adb0d08fc0c2c6525010202fab83f32745da","fd0589ca571ad090b531d8c095e26caa53d4825c64d3ff2b2b1ab95d72294175",{"version":"669843ecafb89ae1e944df06360e8966219e4c1c34c0d28aa2503272cdd444a7","affectsGlobalScope":true},"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","32ab25b7b28b24a138d879ca371b18c8fdfdd564ad5107e1333c5aa5d5fea494","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","6f294731b495c65ecf46a5694f0082954b961cf05463bea823f8014098eaffa0","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","b82fc740467e59abe3d6170417e461527d2a95610f55915fc59557c4b7be55ba","45b6a651b5e502cdfa93dc2f23779752def4ada323ebcfc34e4a4d22e9589971","54f1d17f9f484650cd49b53d9a6ba75593955a9ead093628888a37407b6ecd51","169cc96316cacf8b489aaab4ac6bcef7b33e8779a8902bce57c737b4aa372d16","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","4340936f4e937c452ae783514e7c7bbb7fc06d0c97993ff4865370d0962bb9cf","5009c081fd8ca3fcd6f3adcd071a1c79a933a400532b897822aad0943688a1f1","22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","916be7d770b0ae0406be9486ac12eb9825f21514961dd050594c4b250617d5a8","429b6df7d7b94389bd42cfdf39bccea903acd3628498cec6172302801fbeac89","d7c30ea636d7d7cbeba0795baa8ec1bbd06274bd19a23ec0d7c84d0610a5f0c7","b567296d1820a1e50b6522c99a4f272c70eb2cba690da6e64a25635b70b1383f","332c7ccf95426d3156ebedb7295979ef2435bd1c1a940024a4d068da3418718f","e03334588c63840b7054accd0b90f29c5890db6a6555ac0869a78a23297f1396","c3052485f32a96bfde75a2976c1238995522584ba464f04ff16a8a40af5e50d1","c220410b8e956fa157ce4e5e6ac871f0f433aa120c334d906ff1f5e2c7369e95","960a68ced7820108787135bdae5265d2cc4b511b7dcfd5b8f213432a8483daf1","5e8db4872785292074b394d821ae2fc10e4f8edc597776368aebbe8aefb24422","8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","0c681cfae79b859ed0c5ddc1160c0ea0a529f5d81b3488fb0641105bd8757200","cc0700b1b97e18a3d5d9184470502d8762ec85158819d662730c3a8c5d702584","9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","f77ff4cd234d3fd18ddd5aeadb6f94374511931976d41f4b9f594cb71f7ce6f3","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","4f18b4e6081e5e980ef53ddf57b9c959d36cffe1eb153865f512a01aeffb5e1e","7f17d4846a88eca5fe71c4474ef687ee89c4acf9b5372ab9b2ee68644b7e0fe0","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","85f8ebd7f245e8bf29da270e8b53dcdd17528826ffd27176c5fc7e426213ef5a","acebfe99678cf7cddcddc3435222cf132052b1226e902daac9fbb495c321a9b5","550650516d34048712520ffb1fce4a02f2d837761ee45c7d9868a7a35e7b0343","82b1f9a6eefef7386aebe22ac49f23b806421e82dbf35c6e5b7132d79e4165da","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","bd0f4458d57115491a1dd9fe522fa1d6ffe45a85b12bbd463967f90b50e43c29",{"version":"06279f0df6f368af41fe267319e90b5af9d89ad489d1662164b94ce30a797c79","affectsGlobalScope":true},"6d09838b65c3c780513878793fc394ae29b8595d9e4729246d14ce69abc71140","77c5c7f8578d139c74102a29384f5f4f0792a12d819ddcdcaf8307185ff2d45d","bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","610960e660271e158ba1656254569c3d72ff172a5eae5999f8970fadab3f86e5","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":1,"module":99,"noImplicitAny":false,"outDir":"./dist","rootDir":"./src","skipDefaultLibCheck":true,"skipLibCheck":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":false,"strictNullChecks":true,"strictPropertyInitialization":true,"target":3},"fileIdsList":[[73,125],[125],[73,74,75,76,77,125],[73,75,125],[98,125,132,133],[89,125,132],[124,125,132,138],[95,98,125,132,136,137],[98,125,132],[84,125,132],[125,147,149],[125,146,147,148],[95,98,125,132,136,137,152],[125,134,137,153,157],[96,125,132],[95,98,100,103,113,124,125,132],[125,163],[125,165],[125,166],[125,172,175],[125,170],[125,168,174],[125,172],[125,169,173],[125,171],[125,177,178,179,180,181],[95,125,127,132,195,196,198],[125,197],[125,200,202,203,204,205,206,207,208,209,210,211,212],[125,200,201,203,204,205,206,207,208,209,210,211,212],[125,201,202,203,204,205,206,207,208,209,210,211,212],[125,200,201,202,204,205,206,207,208,209,210,211,212],[125,200,201,202,203,205,206,207,208,209,210,211,212],[125,200,201,202,203,204,206,207,208,209,210,211,212],[125,200,201,202,203,204,205,207,208,209,210,211,212],[125,200,201,202,203,204,205,206,208,209,210,211,212],[125,200,201,202,203,204,205,206,207,209,210,211,212],[125,200,201,202,203,204,205,206,207,208,210,211,212],[125,200,201,202,203,204,205,206,207,208,209,211,212],[125,200,201,202,203,204,205,206,207,208,209,210,212],[125,200,201,202,203,204,205,206,207,208,209,210,211],[125,213,214],[125,156],[125,155],[98,124,125,132,217,218],[98,113,125,132],[79,125],[82,125],[83,88,116,125],[84,95,96,103,113,124,125],[84,85,95,103,125],[86,125],[87,88,96,104,125],[88,113,121,125],[89,91,95,103,125],[90,125],[91,92,125],[95,125],[93,95,125],[95,96,97,113,124,125],[95,96,97,110,113,116,125],[125,129],[91,98,103,113,124,125],[95,96,98,99,103,113,121,124,125],[98,100,113,121,124,125],[79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131],[95,101,125],[102,124,125],[91,95,103,113,125],[104,125],[105,125],[82,106,125],[107,123,125,129],[108,125],[109,125],[95,110,111,125],[110,112,125,127],[83,95,113,114,115,116,125],[83,113,115,125],[113,114,125],[116,125],[117,125],[95,119,120,125],[119,120,125],[88,103,113,121,125],[122,125],[103,123,125],[83,98,109,124,125],[88,125],[113,125,126],[125,127],[125,128],[83,88,95,97,106,113,124,125,127,129],[113,125,130],[65,125],[65,125,225],[125,225,226,227,228,229],[61,62,63,64,125],[125,132],[125,234,273],[125,234,258,273],[125,273],[125,234],[125,234,259,273],[125,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272],[125,259,273],[96,113,125,132,151],[96,125,158],[98,125,132,154,156],[125,176,278],[95,98,100,113,121,124,125,130,132],[125,282],[95,113,125,132],[125,184],[125,183,184],[125,183],[125,183,184,185,187,188,191,192,193,194],[125,184,188],[125,183,184,185,187,188,189,190],[125,183,188],[125,188,192],[125,184,185,186],[125,185],[125,183,184,188],[52,54,55,56,57,58,125],[55,56,125],[53,125],[54,55,125],[54,125],[51,125],[47,48,49,50,125],[52,54,55,56,57,58],[56],[55]],"referencedMap":[[75,1],[73,2],[170,2],[72,2],[78,3],[74,1],[76,4],[77,1],[134,5],[135,6],[139,7],[138,8],[133,9],[140,10],[141,2],[142,2],[143,2],[144,2],[145,2],[150,11],[146,2],[149,12],[147,2],[153,13],[158,14],[159,2],[160,15],[161,2],[154,2],[162,16],[164,17],[163,2],[165,2],[166,18],[167,19],[176,20],[168,2],[171,21],[175,22],[173,23],[174,24],[172,25],[178,2],[177,2],[182,26],[180,2],[179,2],[197,27],[198,28],[148,2],[199,2],[201,29],[202,30],[200,31],[203,32],[204,33],[205,34],[206,35],[207,36],[208,37],[209,38],[210,39],[211,40],[212,41],[214,42],[213,2],[215,2],[155,43],[156,44],[216,2],[218,2],[219,45],[217,46],[79,47],[80,47],[82,48],[83,49],[84,50],[85,51],[86,52],[87,53],[88,54],[89,55],[90,56],[91,57],[92,57],[94,58],[93,59],[95,58],[96,60],[97,61],[81,62],[131,2],[98,63],[99,64],[100,65],[132,66],[101,67],[102,68],[103,69],[104,70],[105,71],[106,72],[107,73],[108,74],[109,75],[110,76],[111,76],[112,77],[113,78],[115,79],[114,80],[116,81],[117,82],[118,2],[119,83],[120,84],[121,85],[122,86],[123,87],[124,88],[125,89],[126,90],[127,91],[128,92],[129,93],[130,94],[220,2],[221,2],[222,2],[223,2],[63,2],[137,2],[136,2],[224,95],[226,96],[228,95],[225,95],[227,96],[229,2],[230,97],[61,2],[65,98],[231,99],[232,2],[233,2],[64,2],[258,100],[259,101],[234,102],[237,102],[256,100],[257,100],[247,100],[246,103],[244,100],[239,100],[252,100],[250,100],[254,100],[238,100],[251,100],[255,100],[240,100],[241,100],[253,100],[235,100],[242,100],[243,100],[245,100],[249,100],[260,104],[248,100],[236,100],[273,105],[272,2],[267,104],[269,106],[268,104],[261,104],[262,104],[264,104],[266,104],[270,106],[271,106],[263,106],[265,106],[152,107],[151,2],[274,108],[157,109],[275,2],[181,2],[276,9],[277,2],[279,110],[278,2],[196,2],[53,2],[280,2],[281,111],[282,2],[283,112],[284,113],[169,2],[62,2],[185,114],[194,115],[183,2],[184,116],[195,117],[190,118],[191,119],[189,120],[193,121],[187,122],[186,123],[192,124],[188,115],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[46,2],[4,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[36,2],[33,2],[34,2],[35,2],[37,2],[7,2],[38,2],[43,2],[44,2],[39,2],[40,2],[41,2],[42,2],[1,2],[45,2],[11,2],[10,2],[59,125],[57,126],[60,2],[54,127],[56,128],[58,126],[55,129],[52,130],[66,95],[67,2],[68,2],[69,2],[70,2],[71,2],[47,2],[51,131],[48,2],[49,2],[50,2]],"exportedModulesMap":[[75,1],[73,2],[170,2],[72,2],[78,3],[74,1],[76,4],[77,1],[134,5],[135,6],[139,7],[138,8],[133,9],[140,10],[141,2],[142,2],[143,2],[144,2],[145,2],[150,11],[146,2],[149,12],[147,2],[153,13],[158,14],[159,2],[160,15],[161,2],[154,2],[162,16],[164,17],[163,2],[165,2],[166,18],[167,19],[176,20],[168,2],[171,21],[175,22],[173,23],[174,24],[172,25],[178,2],[177,2],[182,26],[180,2],[179,2],[197,27],[198,28],[148,2],[199,2],[201,29],[202,30],[200,31],[203,32],[204,33],[205,34],[206,35],[207,36],[208,37],[209,38],[210,39],[211,40],[212,41],[214,42],[213,2],[215,2],[155,43],[156,44],[216,2],[218,2],[219,45],[217,46],[79,47],[80,47],[82,48],[83,49],[84,50],[85,51],[86,52],[87,53],[88,54],[89,55],[90,56],[91,57],[92,57],[94,58],[93,59],[95,58],[96,60],[97,61],[81,62],[131,2],[98,63],[99,64],[100,65],[132,66],[101,67],[102,68],[103,69],[104,70],[105,71],[106,72],[107,73],[108,74],[109,75],[110,76],[111,76],[112,77],[113,78],[115,79],[114,80],[116,81],[117,82],[118,2],[119,83],[120,84],[121,85],[122,86],[123,87],[124,88],[125,89],[126,90],[127,91],[128,92],[129,93],[130,94],[220,2],[221,2],[222,2],[223,2],[63,2],[137,2],[136,2],[224,95],[226,96],[228,95],[225,95],[227,96],[229,2],[230,97],[61,2],[65,98],[231,99],[232,2],[233,2],[64,2],[258,100],[259,101],[234,102],[237,102],[256,100],[257,100],[247,100],[246,103],[244,100],[239,100],[252,100],[250,100],[254,100],[238,100],[251,100],[255,100],[240,100],[241,100],[253,100],[235,100],[242,100],[243,100],[245,100],[249,100],[260,104],[248,100],[236,100],[273,105],[272,2],[267,104],[269,106],[268,104],[261,104],[262,104],[264,104],[266,104],[270,106],[271,106],[263,106],[265,106],[152,107],[151,2],[274,108],[157,109],[275,2],[181,2],[276,9],[277,2],[279,110],[278,2],[196,2],[53,2],[280,2],[281,111],[282,2],[283,112],[284,113],[169,2],[62,2],[185,114],[194,115],[183,2],[184,116],[195,117],[190,118],[191,119],[189,120],[193,121],[187,122],[186,123],[192,124],[188,115],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[46,2],[4,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[36,2],[33,2],[34,2],[35,2],[37,2],[7,2],[38,2],[43,2],[44,2],[39,2],[40,2],[41,2],[42,2],[1,2],[45,2],[11,2],[10,2],[59,132],[57,133],[56,134],[58,133],[66,95],[67,2],[68,2],[69,2],[70,2],[71,2],[47,2],[51,131],[48,2],[49,2],[50,2]],"semanticDiagnosticsPerFile":[75,73,170,72,78,74,76,77,134,135,139,138,133,140,141,142,143,144,145,150,146,149,147,153,158,159,160,161,154,162,164,163,165,166,167,176,168,171,175,173,174,172,178,177,182,180,179,197,198,148,199,201,202,200,203,204,205,206,207,208,209,210,211,212,214,213,215,155,156,216,218,219,217,79,80,82,83,84,85,86,87,88,89,90,91,92,94,93,95,96,97,81,131,98,99,100,132,101,102,103,104,105,106,107,108,109,110,111,112,113,115,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,220,221,222,223,63,137,136,224,226,228,225,227,229,230,61,65,231,232,233,64,258,259,234,237,256,257,247,246,244,239,252,250,254,238,251,255,240,241,253,235,242,243,245,249,260,248,236,273,272,267,269,268,261,262,264,266,270,271,263,265,152,151,274,157,275,181,276,277,279,278,196,53,280,281,282,283,284,169,62,185,194,183,184,195,190,191,189,193,187,186,192,188,8,9,13,12,2,14,15,16,17,18,19,20,21,3,46,4,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,43,44,39,40,41,42,1,45,11,10,59,57,60,54,56,58,55,52,66,67,68,69,70,71,47,51,48,49,50],"latestChangedDtsFile":"./dist/logo.d.ts"},"version":"4.9.5"}