linearly 0.3.0 → 0.4.1

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.
Files changed (79) hide show
  1. package/lib/{common.d.ts → cjs/common.d.ts} +1 -0
  2. package/lib/cjs/common.d.ts.map +1 -0
  3. package/lib/cjs/common.js +20 -0
  4. package/lib/{index.d.ts → cjs/index.d.ts} +1 -0
  5. package/lib/cjs/index.d.ts.map +1 -0
  6. package/lib/cjs/index.js +35 -0
  7. package/lib/{mat2.d.ts → cjs/mat2.d.ts} +1 -0
  8. package/lib/cjs/mat2.d.ts.map +1 -0
  9. package/lib/cjs/mat2.js +224 -0
  10. package/lib/{mat2d.d.ts → cjs/mat2d.d.ts} +1 -0
  11. package/lib/cjs/mat2d.d.ts.map +1 -0
  12. package/lib/cjs/mat2d.js +291 -0
  13. package/lib/{mat3.d.ts → cjs/mat3.d.ts} +1 -0
  14. package/lib/cjs/mat3.d.ts.map +1 -0
  15. package/lib/cjs/mat3.js +450 -0
  16. package/lib/{mat4.d.ts → cjs/mat4.d.ts} +1 -0
  17. package/lib/cjs/mat4.d.ts.map +1 -0
  18. package/lib/cjs/mat4.js +1250 -0
  19. package/lib/{quat.d.ts → cjs/quat.d.ts} +1 -0
  20. package/lib/cjs/quat.d.ts.map +1 -0
  21. package/lib/cjs/quat.js +504 -0
  22. package/lib/{vec2.d.ts → cjs/vec2.d.ts} +1 -0
  23. package/lib/cjs/vec2.d.ts.map +1 -0
  24. package/lib/cjs/vec2.js +205 -0
  25. package/lib/{vec3.d.ts → cjs/vec3.d.ts} +1 -0
  26. package/lib/cjs/vec3.d.ts.map +1 -0
  27. package/lib/cjs/vec3.js +409 -0
  28. package/lib/{vec4.d.ts → cjs/vec4.d.ts} +1 -0
  29. package/lib/cjs/vec4.d.ts.map +1 -0
  30. package/lib/cjs/vec4.js +319 -0
  31. package/lib/esm/common.d.ts +12 -0
  32. package/lib/esm/common.d.ts.map +1 -0
  33. package/lib/esm/common.js +16 -0
  34. package/lib/esm/index.d.ts +17 -0
  35. package/lib/esm/index.d.ts.map +1 -0
  36. package/lib/esm/index.js +9 -0
  37. package/lib/esm/mat2.d.ts +91 -0
  38. package/lib/esm/mat2.d.ts.map +1 -0
  39. package/lib/esm/mat2.js +179 -0
  40. package/lib/esm/mat2d.d.ts +102 -0
  41. package/lib/esm/mat2d.d.ts.map +1 -0
  42. package/lib/esm/mat2d.js +246 -0
  43. package/lib/esm/mat3.d.ts +120 -0
  44. package/lib/esm/mat3.d.ts.map +1 -0
  45. package/lib/esm/mat3.js +400 -0
  46. package/lib/esm/mat4.d.ts +313 -0
  47. package/lib/esm/mat4.d.ts.map +1 -0
  48. package/lib/esm/mat4.js +1183 -0
  49. package/lib/esm/quat.d.ts +220 -0
  50. package/lib/esm/quat.d.ts.map +1 -0
  51. package/lib/esm/quat.js +458 -0
  52. package/lib/esm/vec2.d.ts +66 -0
  53. package/lib/esm/vec2.d.ts.map +1 -0
  54. package/lib/esm/vec2.js +149 -0
  55. package/lib/esm/vec3.d.ts +167 -0
  56. package/lib/esm/vec3.d.ts.map +1 -0
  57. package/lib/esm/vec3.js +348 -0
  58. package/lib/esm/vec4.d.ts +116 -0
  59. package/lib/esm/vec4.d.ts.map +1 -0
  60. package/lib/esm/vec4.js +266 -0
  61. package/package.json +6 -4
  62. package/lib/common.js +0 -30
  63. package/lib/index.js +0 -45
  64. package/lib/mat2.js +0 -234
  65. package/lib/mat2d.js +0 -301
  66. package/lib/mat2d.test.d.ts +0 -1
  67. package/lib/mat2d.test.js +0 -123
  68. package/lib/mat3.js +0 -460
  69. package/lib/mat4.js +0 -1260
  70. package/lib/quat.js +0 -514
  71. package/lib/vec2.js +0 -215
  72. package/lib/vec2.test.d.ts +0 -1
  73. package/lib/vec2.test.js +0 -147
  74. package/lib/vec3.js +0 -419
  75. package/lib/vec3.test.d.ts +0 -1
  76. package/lib/vec3.test.js +0 -149
  77. package/lib/vec4.js +0 -329
  78. package/lib/vec4.test.d.ts +0 -1
  79. package/lib/vec4.test.js +0 -45
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.equals = exports.exactEquals = exports.angle = exports.rotate = exports.transformMat3 = exports.transformMat2d = exports.transformMat2 = exports.lerp = exports.cross = exports.dot = exports.normalize = exports.inverse = exports.negate = exports.squaredLength = exports.length = exports.squaredDistance = exports.distance = exports.scaleAndAdd = exports.scale = exports.round = exports.clamp = exports.max = exports.min = exports.floor = exports.ceil = exports.divide = exports.multiply = exports.subtract = exports.add = exports.one = exports.zero = exports.of = void 0;
27
+ const Common = __importStar(require("./common"));
28
+ function of(x, y = x) {
29
+ return [x, y];
30
+ }
31
+ exports.of = of;
32
+ exports.zero = Object.freeze([0, 0]);
33
+ exports.one = Object.freeze([1, 1]);
34
+ function add(a, b) {
35
+ return [a[0] + b[0], a[1] + b[1]];
36
+ }
37
+ exports.add = add;
38
+ function subtract(a, b) {
39
+ return [a[0] - b[0], a[1] - b[1]];
40
+ }
41
+ exports.subtract = subtract;
42
+ function multiply(a, b) {
43
+ return [a[0] * b[0], a[1] * b[1]];
44
+ }
45
+ exports.multiply = multiply;
46
+ function divide(a, b) {
47
+ return [a[0] / b[0], a[1] / b[1]];
48
+ }
49
+ exports.divide = divide;
50
+ function ceil(a) {
51
+ return [Math.ceil(a[0]), Math.ceil(a[1])];
52
+ }
53
+ exports.ceil = ceil;
54
+ function floor(a) {
55
+ return [Math.floor(a[0]), Math.floor(a[1])];
56
+ }
57
+ exports.floor = floor;
58
+ function min(a, b) {
59
+ return [Math.min(a[0], b[0]), Math.min(a[1], b[1])];
60
+ }
61
+ exports.min = min;
62
+ function max(a, b) {
63
+ return [Math.max(a[0], b[0]), Math.max(a[1], b[1])];
64
+ }
65
+ exports.max = max;
66
+ /**
67
+ * Constrain a value to lie between two further values
68
+ */
69
+ function clamp(a, min, max) {
70
+ return [
71
+ Math.min(Math.max(a[0], min[0]), max[0]),
72
+ Math.min(Math.max(a[1], min[1]), max[1]),
73
+ ];
74
+ }
75
+ exports.clamp = clamp;
76
+ /**
77
+ * symmetric round the components of a vec2
78
+ */
79
+ function round(a) {
80
+ return [Common.round(a[0]), Common.round(a[1])];
81
+ }
82
+ exports.round = round;
83
+ function scale(a, s) {
84
+ return [a[0] * s, a[1] * s];
85
+ }
86
+ exports.scale = scale;
87
+ /**
88
+ * Adds two vec2's after scaling the second operand by a scalar value
89
+ */
90
+ function scaleAndAdd(a, b, scale) {
91
+ return [a[0] + b[0] * scale, a[1] + b[1] * scale];
92
+ }
93
+ exports.scaleAndAdd = scaleAndAdd;
94
+ function distance(a, b) {
95
+ const x = b[0] - a[0], y = b[1] - a[1];
96
+ return Math.sqrt(x * x + y * y);
97
+ }
98
+ exports.distance = distance;
99
+ function squaredDistance(a, b) {
100
+ const x = b[0] - a[0], y = b[1] - a[1];
101
+ return x * x + y * y;
102
+ }
103
+ exports.squaredDistance = squaredDistance;
104
+ function length(v) {
105
+ return Math.sqrt(v[0] ** 2 + v[1] ** 2);
106
+ }
107
+ exports.length = length;
108
+ function squaredLength(v) {
109
+ return v[0] ** 2 + v[1] ** 2;
110
+ }
111
+ exports.squaredLength = squaredLength;
112
+ function negate(v) {
113
+ return [-v[0], -v[1]];
114
+ }
115
+ exports.negate = negate;
116
+ function inverse(v) {
117
+ return [1 / v[0], 1 / v[1]];
118
+ }
119
+ exports.inverse = inverse;
120
+ function normalize(v) {
121
+ const hyp = v[0] ** 2 + v[1] ** 2;
122
+ const len = hyp === 0 ? 0 : 1 / Math.sqrt(hyp);
123
+ return [v[0] * len, v[1] * len];
124
+ }
125
+ exports.normalize = normalize;
126
+ function dot(a, b) {
127
+ return a[0] * b[0] + a[1] * b[1];
128
+ }
129
+ exports.dot = dot;
130
+ function cross(a, b) {
131
+ const z = a[0] * b[1] - a[1] * b[0];
132
+ return [0, 0, z];
133
+ }
134
+ exports.cross = cross;
135
+ /**
136
+ * Performs a linear interpolation between two Vec2's
137
+ */
138
+ function lerp(a, b, t) {
139
+ const [ax, ay] = a;
140
+ return [ax + t * (b[0] - ax), ay + t * (b[1] - ay)];
141
+ }
142
+ exports.lerp = lerp;
143
+ function transformMat2(a, m) {
144
+ const [x, y] = a;
145
+ return [m[0] * x + m[2] * y, m[1] * x + m[3] * y];
146
+ }
147
+ exports.transformMat2 = transformMat2;
148
+ function transformMat2d(a, m) {
149
+ const [x, y] = a;
150
+ return [m[0] * x + m[2] * y + m[4], m[1] * x + m[3] * y + m[5]];
151
+ }
152
+ exports.transformMat2d = transformMat2d;
153
+ /**
154
+ * Transforms the vec2 with a mat3
155
+ * 3rd vector component is implicitly '1'
156
+ */
157
+ function transformMat3(a, m) {
158
+ const [x, y] = a;
159
+ return [m[0] * x + m[3] * y + m[6], m[1] * x + m[4] * y + m[7]];
160
+ }
161
+ exports.transformMat3 = transformMat3;
162
+ /**
163
+ * Rotate a 2D vector
164
+ */
165
+ function rotate(a, origin, rad) {
166
+ // Translate point to the origin
167
+ const p0 = a[0] - origin[0], p1 = a[1] - origin[1], sinC = Math.sin(rad), cosC = Math.cos(rad);
168
+ // Perform rotation and translate to correct position
169
+ return [p0 * cosC - p1 * sinC + origin[0], p0 * sinC + p1 * cosC + origin[1]];
170
+ }
171
+ exports.rotate = rotate;
172
+ /**
173
+ * Get the angle between two 2D vectors
174
+ */
175
+ function angle(a, b) {
176
+ const [x1, y1] = a;
177
+ const [x2, y2] = b;
178
+ // mag is the product of the magnitudes of a and b
179
+ const mag = Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2));
180
+ // mag &&.. short circuits if mag == 0
181
+ const cosine = mag && (x1 * x2 + y1 * y2) / mag;
182
+ // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1
183
+ return Math.acos(Math.min(Math.max(cosine, -1), 1));
184
+ }
185
+ exports.angle = angle;
186
+ /**
187
+ * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)
188
+ */
189
+ function exactEquals(a, b) {
190
+ return a[0] === b[0] && a[1] === b[1];
191
+ }
192
+ exports.exactEquals = exactEquals;
193
+ /**
194
+ * Returns whether or not the vectors have approximately the same elements in the same position.
195
+ */
196
+ function equals(a, b) {
197
+ const [a0, a1] = a;
198
+ const [b0, b1] = b;
199
+ return (Math.abs(a0 - b0) <=
200
+ Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
201
+ Math.abs(a1 - b1) <=
202
+ Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)));
203
+ }
204
+ exports.equals = equals;
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjMi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZWMyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQWtDO0FBUWxDLFNBQWdCLEVBQUUsQ0FBQyxDQUFTLEVBQUUsSUFBWSxDQUFDO0lBQzFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDZCxDQUFDO0FBRkQsZ0JBRUM7QUFFWSxRQUFBLElBQUksR0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFbEMsUUFBQSxHQUFHLEdBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBRTlDLFNBQWdCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDbEMsQ0FBQztBQUZELGtCQUVDO0FBRUQsU0FBZ0IsUUFBUSxDQUFDLENBQU8sRUFBRSxDQUFPO0lBQ3hDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNsQyxDQUFDO0FBRkQsNEJBRUM7QUFFRCxTQUFnQixRQUFRLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDeEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMs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
@@ -164,3 +164,4 @@ export declare function exactEquals(a: Vec3, b: Vec3): boolean;
164
164
  * Returns whether or not the vectors have approximately the same elements in the same position.
165
165
  */
166
166
  export declare function equals(a: Vec3, b: Vec3): boolean;
167
+ //# sourceMappingURL=vec3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vec3.d.ts","sourceRoot":"","sources":["../../src/vec3.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,409 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.equals = exports.exactEquals = exports.angle = exports.rotateZ = exports.rotateY = exports.rotateX = exports.transformQuat = exports.transformMat3 = exports.transformMat4 = exports.bezier = exports.hermite = exports.slerp = exports.lerp = exports.cross = exports.dot = exports.normalize = exports.inverse = exports.negate = exports.squaredLength = exports.length = exports.squaredDistance = exports.distance = exports.scaleAndAdd = exports.scale = exports.round = exports.clamp = exports.max = exports.min = exports.floor = exports.ceil = exports.divide = exports.multiply = exports.subtract = exports.add = exports.one = exports.zero = exports.of = void 0;
27
+ const Common = __importStar(require("./common"));
28
+ function of(x, y, z) {
29
+ if (y === undefined && z === undefined) {
30
+ y = z = x;
31
+ }
32
+ if (y === undefined)
33
+ y = 0;
34
+ if (z === undefined)
35
+ z = 0;
36
+ return [x, y, z];
37
+ }
38
+ exports.of = of;
39
+ exports.zero = Object.freeze([0, 0, 0]);
40
+ exports.one = Object.freeze([1, 1, 1]);
41
+ /**
42
+ * Adds two vec3's
43
+ */
44
+ function add(a, b) {
45
+ return [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
46
+ }
47
+ exports.add = add;
48
+ /**
49
+ * Subtracts vector b from vector a
50
+ */
51
+ function subtract(a, b) {
52
+ return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
53
+ }
54
+ exports.subtract = subtract;
55
+ /**
56
+ * Multiplies two vec3's
57
+ */
58
+ function multiply(a, b) {
59
+ return [a[0] * b[0], a[1] * b[1], a[2] * b[2]];
60
+ }
61
+ exports.multiply = multiply;
62
+ /**
63
+ * Divides two vec3's
64
+ */
65
+ function divide(a, b) {
66
+ return [a[0] / b[0], a[1] / b[1], a[2] / b[2]];
67
+ }
68
+ exports.divide = divide;
69
+ /**
70
+ * Math.ceil the components of a vec3
71
+ */
72
+ function ceil(a) {
73
+ return [Math.ceil(a[0]), Math.ceil(a[1]), Math.ceil(a[2])];
74
+ }
75
+ exports.ceil = ceil;
76
+ /**
77
+ * Math.floor the components of a vec3
78
+ */
79
+ function floor(a) {
80
+ return [Math.floor(a[0]), Math.floor(a[1]), Math.floor(a[2])];
81
+ }
82
+ exports.floor = floor;
83
+ /**
84
+ * Returns the minimum of two vec3's
85
+ */
86
+ function min(a, b) {
87
+ return [Math.min(a[0], b[0]), Math.min(a[1], b[1]), Math.min(a[2], b[2])];
88
+ }
89
+ exports.min = min;
90
+ /**
91
+ * Returns the maximum of two vec3's
92
+ */
93
+ function max(a, b) {
94
+ return [Math.max(a[0], b[0]), Math.max(a[1], b[1]), Math.max(a[2], b[2])];
95
+ }
96
+ exports.max = max;
97
+ /**
98
+ * Constrain a value to lie between two further values
99
+ */
100
+ function clamp(a, min, max) {
101
+ return [
102
+ Math.min(Math.max(a[0], min[0]), max[0]),
103
+ Math.min(Math.max(a[1], min[1]), max[1]),
104
+ Math.min(Math.max(a[2], min[2]), max[2]),
105
+ ];
106
+ }
107
+ exports.clamp = clamp;
108
+ /**
109
+ * symmetric round the components of a vec3
110
+ */
111
+ function round(a) {
112
+ return [Common.round(a[0]), Common.round(a[1]), Common.round(a[2])];
113
+ }
114
+ exports.round = round;
115
+ /**
116
+ * Scales a vec3 by a scalar number
117
+ */
118
+ function scale(a, s) {
119
+ return [a[0] * s, a[1] * s, a[2] * s];
120
+ }
121
+ exports.scale = scale;
122
+ /**
123
+ * Adds two vec3's after scaling the second operand by a scalar value
124
+ */
125
+ function scaleAndAdd(a, b, scale) {
126
+ return [a[0] + b[0] * scale, a[1] + b[1] * scale, a[2] + b[2] * scale];
127
+ }
128
+ exports.scaleAndAdd = scaleAndAdd;
129
+ /**
130
+ * Calculates the euclidian distance between two vec3's
131
+ */
132
+ function distance(a, b) {
133
+ const x = b[0] - a[0];
134
+ const y = b[1] - a[1];
135
+ const z = b[2] - a[2];
136
+ return Math.sqrt(x * x + y * y + z * z);
137
+ }
138
+ exports.distance = distance;
139
+ /**
140
+ * Calculates the squared euclidian distance between two vec3's
141
+ */
142
+ function squaredDistance(a, b) {
143
+ const x = b[0] - a[0];
144
+ const y = b[1] - a[1];
145
+ const z = b[2] - a[2];
146
+ return x * x + y * y + z * z;
147
+ }
148
+ exports.squaredDistance = squaredDistance;
149
+ /**
150
+ * Calculates the length of a vec3
151
+ */
152
+ function length(a) {
153
+ const [x, y, z] = a;
154
+ return Math.sqrt(x * x + y * y + z * z);
155
+ }
156
+ exports.length = length;
157
+ /**
158
+ * Calculates the squared length of a vec3
159
+ */
160
+ function squaredLength(a) {
161
+ const x = a[0];
162
+ const y = a[1];
163
+ const z = a[2];
164
+ return x * x + y * y + z * z;
165
+ }
166
+ exports.squaredLength = squaredLength;
167
+ /**
168
+ * Negates the components of a vec3
169
+ */
170
+ function negate(a) {
171
+ return [-a[0], -a[1], -a[2]];
172
+ }
173
+ exports.negate = negate;
174
+ /**
175
+ * Returns the inverse of the components of a vec3
176
+ */
177
+ function inverse(a) {
178
+ return [1 / a[0], 1 / a[1], 1 / a[2]];
179
+ }
180
+ exports.inverse = inverse;
181
+ /**
182
+ * Normalize a vec3
183
+ */
184
+ function normalize(a) {
185
+ const [x, y, z] = a;
186
+ const hyp = x * x + y * y + z * z;
187
+ const len = hyp === 0 ? 0 : 1 / Math.sqrt(hyp);
188
+ return [a[0] * len, a[1] * len, a[2] * len];
189
+ }
190
+ exports.normalize = normalize;
191
+ /**
192
+ * Calculates the dot product of two vec3's
193
+ */
194
+ function dot(a, b) {
195
+ return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
196
+ }
197
+ exports.dot = dot;
198
+ /**
199
+ * Computes the cross product of two vec3's
200
+ */
201
+ function cross(a, b) {
202
+ const [ax, ay, az] = a;
203
+ const [bx, by, bz] = b;
204
+ return [ay * bz - az * by, az * bx - ax * bz, ax * by - ay * bx];
205
+ }
206
+ exports.cross = cross;
207
+ /**
208
+ * Performs a linear interpolation between two vec3's
209
+ */
210
+ function lerp(a, b, t) {
211
+ const [ax, ay, az] = a;
212
+ return [ax + t * (b[0] - ax), ay + t * (b[1] - ay), az + t * (b[2] - az)];
213
+ }
214
+ exports.lerp = lerp;
215
+ /**
216
+ * Performs a spherical linear interpolation between two vec3's
217
+ */
218
+ function slerp(a, b, t) {
219
+ const angle = Math.acos(Math.min(Math.max(dot(a, b), -1), 1));
220
+ const sinTotal = Math.sin(angle);
221
+ const ratioA = Math.sin((1 - t) * angle) / sinTotal;
222
+ const ratioB = Math.sin(t * angle) / sinTotal;
223
+ return [
224
+ ratioA * a[0] + ratioB * b[0],
225
+ ratioA * a[1] + ratioB * b[1],
226
+ ratioA * a[2] + ratioB * b[2],
227
+ ];
228
+ }
229
+ exports.slerp = slerp;
230
+ /**
231
+ * Performs a hermite interpolation with two control points
232
+ *
233
+ * @param a the first operand
234
+ * @param b the second operand
235
+ * @param c the third operand
236
+ * @param d the fourth operand
237
+ * @param t interpolation amount, in the range [0-1], between the two inputs
238
+ */
239
+ function hermite(a, b, c, d, t) {
240
+ const factorTimes2 = t * t;
241
+ const factor1 = factorTimes2 * (2 * t - 3) + 1;
242
+ const factor2 = factorTimes2 * (t - 2) + t;
243
+ const factor3 = factorTimes2 * (t - 1);
244
+ const factor4 = factorTimes2 * (3 - 2 * t);
245
+ return [
246
+ a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4,
247
+ a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4,
248
+ a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4,
249
+ ];
250
+ }
251
+ exports.hermite = hermite;
252
+ /**
253
+ * Performs a bezier interpolation with two control points
254
+ */
255
+ function bezier(a, b, c, d, t) {
256
+ const inverseFactor = 1 - t;
257
+ const inverseFactorTimesTwo = inverseFactor * inverseFactor;
258
+ const factorTimes2 = t * t;
259
+ const factor1 = inverseFactorTimesTwo * inverseFactor;
260
+ const factor2 = 3 * t * inverseFactorTimesTwo;
261
+ const factor3 = 3 * factorTimes2 * inverseFactor;
262
+ const factor4 = factorTimes2 * t;
263
+ return [
264
+ a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4,
265
+ a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4,
266
+ a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4,
267
+ ];
268
+ }
269
+ exports.bezier = bezier;
270
+ /**
271
+ * Transforms the vec3 with a mat4.
272
+ * 4th vector component is implicitly '1'
273
+ */
274
+ function transformMat4(a, m) {
275
+ const [x, y, z] = a;
276
+ const w = m[3] * x + m[7] * y + m[11] * z + m[15] || 1;
277
+ return [
278
+ (m[0] * x + m[4] * y + m[8] * z + m[12]) / w,
279
+ (m[1] * x + m[5] * y + m[9] * z + m[13]) / w,
280
+ (m[2] * x + m[6] * y + m[10] * z + m[14]) / w,
281
+ ];
282
+ }
283
+ exports.transformMat4 = transformMat4;
284
+ /**
285
+ * Transforms the vec3 with a mat3.
286
+ */
287
+ function transformMat3(a, m) {
288
+ const x = a[0], y = a[1], z = a[2];
289
+ return [
290
+ x * m[0] + y * m[3] + z * m[6],
291
+ x * m[1] + y * m[4] + z * m[7],
292
+ x * m[2] + y * m[5] + z * m[8],
293
+ ];
294
+ }
295
+ exports.transformMat3 = transformMat3;
296
+ /**
297
+ * Transforms the vec3 with a quat
298
+ * Can also be used for dual quaternions. (Multiply it with the real part)
299
+ *
300
+ * @param a the vector to transform
301
+ * @param q quaternion to transform with
302
+ */
303
+ // https://github.com/stackgl/gl-vec3/blob/master/transformQuat.js
304
+ function transformQuat(a, q) {
305
+ // benchmarks: http://jsperf.com/quaternion-transform-vec3-implementations
306
+ const x = a[0], y = a[1], z = a[2], qx = q[0], qy = q[1], qz = q[2], qw = q[3],
307
+ // calculate quat * vec
308
+ ix = qw * x + qy * z - qz * y, iy = qw * y + qz * x - qx * z, iz = qw * z + qx * y - qy * x, iw = -qx * x - qy * y - qz * z;
309
+ // calculate result * inverse quat
310
+ return [
311
+ ix * qw + iw * -qx + iy * -qz - iz * -qy,
312
+ iy * qw + iw * -qy + iz * -qx - ix * -qz,
313
+ iz * qw + iw * -qz + ix * -qy - iy * -qx,
314
+ ];
315
+ }
316
+ exports.transformQuat = transformQuat;
317
+ /**
318
+ * Rotate a 3D vector around the x-axis
319
+ * @param a The vec3 point to rotate
320
+ * @param b The origin of the rotation
321
+ * @param rad The angle of rotation in radians
322
+ */
323
+ function rotateX(a, b, rad) {
324
+ //Translate point to the origin
325
+ const p = [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
326
+ //perform rotation
327
+ const r = [
328
+ p[0],
329
+ p[1] * Math.cos(rad) - p[2] * Math.sin(rad),
330
+ p[1] * Math.sin(rad) + p[2] * Math.cos(rad),
331
+ ];
332
+ //translate to correct position
333
+ return [r[0] + b[0], r[1] + b[1], r[2] + b[2]];
334
+ }
335
+ exports.rotateX = rotateX;
336
+ /**
337
+ * Rotate a 3D vector around the y-axis
338
+ * @param a The vec3 point to rotate
339
+ * @param origin The origin of the rotation
340
+ * @param rad The angle of rotation in radians
341
+ */
342
+ function rotateY(a, origin, rad) {
343
+ //Translate point to the origin
344
+ const p = [a[0] - origin[0], a[1] - origin[1], a[2] - origin[2]];
345
+ //perform rotation
346
+ const r = [
347
+ p[2] * Math.sin(rad) + p[0] * Math.cos(rad),
348
+ p[1],
349
+ p[2] * Math.cos(rad) - p[0] * Math.sin(rad),
350
+ ];
351
+ //translate to correct position
352
+ return [r[0] + origin[0], r[1] + origin[1], r[2] + origin[2]];
353
+ }
354
+ exports.rotateY = rotateY;
355
+ /**
356
+ * Rotate a 3D vector around the z-axis
357
+ * @param a The vec3 point to rotate
358
+ * @param b The origin of the rotation
359
+ * @param rad The angle of rotation in radians
360
+ */
361
+ function rotateZ(a, b, rad) {
362
+ //Translate point to the origin
363
+ const p = [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
364
+ //perform rotation
365
+ const r = [
366
+ p[0] * Math.cos(rad) - p[1] * Math.sin(rad),
367
+ p[0] * Math.sin(rad) + p[1] * Math.cos(rad),
368
+ p[2],
369
+ ];
370
+ //translate to correct position
371
+ return [r[0] + b[0], r[1] + b[1], r[2] + b[2]];
372
+ }
373
+ exports.rotateZ = rotateZ;
374
+ /**
375
+ * Get the angle between two 3D vectors
376
+ * @param a The first operand
377
+ * @param b The second operand
378
+ * @returns The angle in radians
379
+ */
380
+ function angle(a, b) {
381
+ const [ax, ay, az] = a;
382
+ const [bx, by, bz] = b;
383
+ const mag = Math.sqrt((ax * ax + ay * ay + az * az) * (bx * bx + by * by + bz * bz));
384
+ const cosine = mag && dot(a, b) / mag;
385
+ return Math.acos(Math.min(Math.max(cosine, -1), 1));
386
+ }
387
+ exports.angle = angle;
388
+ /**
389
+ * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)
390
+ */
391
+ function exactEquals(a, b) {
392
+ return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];
393
+ }
394
+ exports.exactEquals = exactEquals;
395
+ /**
396
+ * Returns whether or not the vectors have approximately the same elements in the same position.
397
+ */
398
+ function equals(a, b) {
399
+ const [a0, a1, a2] = a;
400
+ const [b0, b1, b2] = b;
401
+ return (Math.abs(a0 - b0) <=
402
+ Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
403
+ Math.abs(a1 - b1) <=
404
+ Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
405
+ Math.abs(a2 - b2) <=
406
+ Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)));
407
+ }
408
+ exports.equals = equals;
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjMy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZWMzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQWtDO0FBT2xDLFNBQWdCLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBVSxFQUFFLENBQVU7SUFDbkQsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUU7UUFDdkMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDVDtJQUNELElBQUksQ0FBQyxLQUFLLFNBQVM7UUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFCLElBQUksQ0FBQyxLQUFLLFNBQVM7UUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTFCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ2pCLENBQUM7QUFSRCxnQkFRQztBQUVZLFFBQUEsSUFBSSxHQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFckMsUUFBQSxHQUFHLEdBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUVqRDs7R0FFRztBQUNILFNBQWdCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRkQsa0JBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUN4QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRkQsNEJBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUN4QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRkQsNEJBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLE1BQU0sQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUN0QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRkQsd0JBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLElBQUksQ0FBQyxDQUFPO0lBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzNELENBQUM7QUFGRCxvQkFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsS0FBSyxDQUFDLENBQU87SUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDOUQsQ0FBQztBQUZELHNCQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixHQUFHLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDMUUsQ0FBQztBQUZELGtCQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixHQUFHLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDMUUsQ0FBQztBQUZELGtCQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixLQUFLLENBQUMsQ0FBTyxFQUFFLEdBQVMsRUFBRSxHQUFTO0lBQ2xELE9BQU87UUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN4QyxDQUFBO0FBQ0YsQ0FBQztBQU5ELHNCQU1DO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixLQUFLLENBQUMsQ0FBTztJQUM1QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNwRSxDQUFDO0FBRkQsc0JBRUM7QUFDRDs7R0FFRztBQUNILFNBQWdCLEtBQUssQ0FBQyxDQUFPLEVBQUUsQ0FBUztJQUN2QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUN0QyxDQUFDO0FBRkQsc0JBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxDQUFPLEVBQUUsQ0FBTyxFQUFFLEtBQWE7SUFDMUQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7QUFDdkUsQ0FBQztBQUZELGtDQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDeEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFDeEMsQ0FBQztBQUxELDRCQUtDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckIs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