@m2c2kit/core 0.3.29 → 0.3.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -43,6 +43,17 @@ var ActionType = /* @__PURE__ */ ((ActionType2) => {
43
43
  return ActionType2;
44
44
  })(ActionType || {});
45
45
 
46
+ class M2Error extends Error {
47
+ constructor(...params) {
48
+ super(...params);
49
+ this.name = "M2Error";
50
+ Object.setPrototypeOf(this, M2Error.prototype);
51
+ if (Error.captureStackTrace) {
52
+ Error.captureStackTrace(this, M2Error);
53
+ }
54
+ }
55
+ }
56
+
46
57
  const _Easings = class _Easings {
47
58
  static toTypeAsString(easingFunction) {
48
59
  switch (easingFunction) {
@@ -116,7 +127,7 @@ const _Easings = class _Easings {
116
127
  return "CircularInOut";
117
128
  }
118
129
  default: {
119
- throw new Error("Easings.toTypeAsString(): Unknown easing function");
130
+ throw new M2Error("Easings.toTypeAsString(): Unknown easing function");
120
131
  }
121
132
  }
122
133
  }
@@ -192,7 +203,7 @@ const _Easings = class _Easings {
192
203
  return _Easings.circularInOut;
193
204
  }
194
205
  default: {
195
- throw new Error(
206
+ throw new M2Error(
196
207
  `Easings.fromTypeAsString(): Unknown easing function type ${easingType}`
197
208
  );
198
209
  }
@@ -394,12 +405,12 @@ const _Timer = class _Timer {
394
405
  static start(name) {
395
406
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
396
407
  if (timer === void 0) {
397
- throw new Error(
408
+ throw new M2Error(
398
409
  `can't start timer. timer with name ${name} does not exist.`
399
410
  );
400
411
  } else {
401
412
  if (timer.stopped === false) {
402
- throw new Error(
413
+ throw new M2Error(
403
414
  `can't start timer. timer with name ${name} is already started.`
404
415
  );
405
416
  }
@@ -419,12 +430,12 @@ const _Timer = class _Timer {
419
430
  static stop(name) {
420
431
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
421
432
  if (timer === void 0) {
422
- throw new Error(
433
+ throw new M2Error(
423
434
  `can't stop timer. timer with name ${name} does not exist.`
424
435
  );
425
436
  }
426
437
  if (timer.stopped === true) {
427
- throw new Error(
438
+ throw new M2Error(
428
439
  `can't stop timer. timer with name ${name} is already stopped.`
429
440
  );
430
441
  }
@@ -445,7 +456,7 @@ const _Timer = class _Timer {
445
456
  static elapsed(name) {
446
457
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
447
458
  if (timer === void 0) {
448
- throw new Error(
459
+ throw new M2Error(
449
460
  `can't get elapsed time. timer with name ${name} does not exist.`
450
461
  );
451
462
  }
@@ -467,7 +478,7 @@ const _Timer = class _Timer {
467
478
  static remove(name) {
468
479
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
469
480
  if (timer === void 0) {
470
- throw new Error(
481
+ throw new M2Error(
471
482
  `can't remove timer. timer with name ${name} does not exist.`
472
483
  );
473
484
  }
@@ -761,7 +772,7 @@ class M2c2KitHelpers {
761
772
  if (typeof value2 === "boolean") {
762
773
  return value2.toString();
763
774
  }
764
- throw new Error(`Error parsing "${value2}" as a string.`);
775
+ throw new M2Error(`Error parsing "${value2}" as a string.`);
765
776
  }
766
777
  function canBeNumber(value2) {
767
778
  if (typeof value2 === "number") {
@@ -781,11 +792,11 @@ class M2c2KitHelpers {
781
792
  return value2;
782
793
  }
783
794
  if (typeof value2 !== "string") {
784
- throw new Error(`Error parsing "${value2}" as a number.`);
795
+ throw new M2Error(`Error parsing "${value2}" as a number.`);
785
796
  }
786
797
  const n = parseFloat(value2);
787
798
  if (Number.isNaN(n)) {
788
- throw new Error(`Error parsing "${value2}" as a number.`);
799
+ throw new M2Error(`Error parsing "${value2}" as a number.`);
789
800
  }
790
801
  return n;
791
802
  }
@@ -807,11 +818,11 @@ class M2c2KitHelpers {
807
818
  return value2;
808
819
  }
809
820
  if (typeof value2 !== "string") {
810
- throw new Error(`Error parsing "${value2}" as an integer.`);
821
+ throw new M2Error(`Error parsing "${value2}" as an integer.`);
811
822
  }
812
823
  const n = parseInt(value2);
813
824
  if (Number.isNaN(n)) {
814
- throw new Error(`Error parsing "${value2}" as an integer.`);
825
+ throw new M2Error(`Error parsing "${value2}" as an integer.`);
815
826
  }
816
827
  return n;
817
828
  }
@@ -829,7 +840,7 @@ class M2c2KitHelpers {
829
840
  return value2;
830
841
  }
831
842
  if (value2 !== "true" && value2 !== "false") {
832
- throw new Error(`Error parsing "${value2}" as a boolean.`);
843
+ throw new M2Error(`Error parsing "${value2}" as a boolean.`);
833
844
  }
834
845
  return value2 === "true";
835
846
  }
@@ -858,7 +869,7 @@ class M2c2KitHelpers {
858
869
  return value2;
859
870
  }
860
871
  if (typeof value2 !== "string") {
861
- throw new Error(`Error parsing "${value2}" as an array.`);
872
+ throw new M2Error(`Error parsing "${value2}" as an array.`);
862
873
  }
863
874
  try {
864
875
  const a = JSON.parse(value2);
@@ -871,7 +882,7 @@ class M2c2KitHelpers {
871
882
  return a;
872
883
  }
873
884
  }
874
- throw new Error(`Error parsing "${value2}" as an array.`);
885
+ throw new M2Error(`Error parsing "${value2}" as an array.`);
875
886
  }
876
887
  function canBeObject(value2) {
877
888
  if (typeof value2 === "object" && !Array.isArray(value2) && value2 !== null) {
@@ -898,7 +909,7 @@ class M2c2KitHelpers {
898
909
  return value2;
899
910
  }
900
911
  if (typeof value2 !== "string") {
901
- throw new Error(`Error parsing "${value2}" as an object.`);
912
+ throw new M2Error(`Error parsing "${value2}" as an object.`);
902
913
  }
903
914
  try {
904
915
  const o = JSON.parse(value2);
@@ -911,7 +922,7 @@ class M2c2KitHelpers {
911
922
  return o;
912
923
  }
913
924
  }
914
- throw new Error(`Error parsing "${value2}" as an object.`);
925
+ throw new M2Error(`Error parsing "${value2}" as an object.`);
915
926
  }
916
927
  function canBeNull(value2) {
917
928
  if (value2 === null || value2 === "null") {
@@ -921,7 +932,7 @@ class M2c2KitHelpers {
921
932
  }
922
933
  function asNull(value2) {
923
934
  if (value2 !== "null" && value2 !== null) {
924
- throw new Error(`Error parsing "${value2}" as null.`);
935
+ throw new M2Error(`Error parsing "${value2}" as null.`);
925
936
  }
926
937
  return null;
927
938
  }
@@ -944,20 +955,20 @@ class M2c2KitHelpers {
944
955
  null: asNull
945
956
  };
946
957
  if (type === void 0) {
947
- throw new Error(`Error with "${value}" as a target type.`);
958
+ throw new M2Error(`Error with "${value}" as a target type.`);
948
959
  }
949
960
  if (!Array.isArray(type)) {
950
961
  if (typeCheckers[type](value)) {
951
962
  return typeConverters[type](value);
952
963
  }
953
- throw new Error(`Error parsing "${value}" as a ${type}.`);
964
+ throw new M2Error(`Error parsing "${value}" as a ${type}.`);
954
965
  }
955
966
  for (const t of type) {
956
967
  if (typeCheckers[t](value)) {
957
968
  return typeConverters[t](value);
958
969
  }
959
970
  }
960
- throw new Error(`Error parsing "${value}" as one of ${type}.`);
971
+ throw new M2Error(`Error parsing "${value}" as one of ${type}.`);
961
972
  }
962
973
  /**
963
974
  * Load scripts from URLs.
@@ -1237,7 +1248,7 @@ class M2c2KitHelpers {
1237
1248
  */
1238
1249
  static isPointInsideRectangle(point, rect) {
1239
1250
  if (rect.length !== 4) {
1240
- throw new Error("Invalid input: expected an array of four points");
1251
+ throw new M2Error("Invalid input: expected an array of four points");
1241
1252
  }
1242
1253
  return M2c2KitHelpers.arePointsOnSameSideOfLine(
1243
1254
  point,
@@ -1300,7 +1311,7 @@ class M2c2KitHelpers {
1300
1311
  */
1301
1312
  static findCentroid(points) {
1302
1313
  if (points.length !== 4) {
1303
- throw new Error("Invalid input: expected an array of four points");
1314
+ throw new M2Error("Invalid input: expected an array of four points");
1304
1315
  }
1305
1316
  let xSum = 0;
1306
1317
  let ySum = 0;
@@ -1383,7 +1394,7 @@ function nodeNeedsRotation(node) {
1383
1394
  }
1384
1395
  function rotateRectangle(rect, radians, center) {
1385
1396
  if (rect.length !== 4) {
1386
- throw new Error("Invalid input: expected an array of four points");
1397
+ throw new M2Error("Invalid input: expected an array of four points");
1387
1398
  }
1388
1399
  const rotated = [];
1389
1400
  for (const p of rect) {
@@ -1421,7 +1432,7 @@ class Futurable {
1421
1432
  */
1422
1433
  pushToExpression(value) {
1423
1434
  if (value === this) {
1424
- throw new Error(
1435
+ throw new M2Error(
1425
1436
  "Cannot add, subtract, or assign a Futurable with itself."
1426
1437
  );
1427
1438
  }
@@ -1760,7 +1771,7 @@ class Action {
1760
1771
  Action.evaluateRotateAction(action, node, elapsed, dt);
1761
1772
  break;
1762
1773
  default:
1763
- throw new Error(`Action type not recognized: ${action.type}`);
1774
+ throw new M2Error(`Action type not recognized: ${action.type}`);
1764
1775
  }
1765
1776
  }
1766
1777
  static evaluateRepeatingActions(action, now) {
@@ -1778,7 +1789,7 @@ class Action {
1778
1789
  action.restartAction(action, now);
1779
1790
  } else {
1780
1791
  if (action.type === ActionType.RepeatForever) {
1781
- throw new Error("RepeatForever action should never complete");
1792
+ throw new M2Error("RepeatForever action should never complete");
1782
1793
  }
1783
1794
  action.duration.assign(action.cumulativeDuration);
1784
1795
  action.running = false;
@@ -1884,7 +1895,7 @@ class Action {
1884
1895
  }
1885
1896
  static evaluatePlayAction(node, action) {
1886
1897
  if (node.type !== M2NodeType.SoundPlayer) {
1887
- throw new Error("Play action can only be used with a SoundPlayer");
1898
+ throw new M2Error("Play action can only be used with a SoundPlayer");
1888
1899
  }
1889
1900
  const playAction = action;
1890
1901
  const soundPlayer = node;
@@ -1907,7 +1918,7 @@ class Action {
1907
1918
  playAction.started = true;
1908
1919
  } else {
1909
1920
  if (m2Sound.status === M2SoundStatus.Error) {
1910
- throw new Error(
1921
+ throw new M2Error(
1911
1922
  `error loading sound ${m2Sound.soundName} (url ${m2Sound.url})`
1912
1923
  );
1913
1924
  }
@@ -2075,13 +2086,17 @@ class Action {
2075
2086
  */
2076
2087
  static rotate(options) {
2077
2088
  if (options.byAngle !== void 0 && options.toAngle !== void 0) {
2078
- throw new Error("rotate Action: cannot specify both byAngle and toAngle");
2089
+ throw new M2Error(
2090
+ "rotate Action: cannot specify both byAngle and toAngle"
2091
+ );
2079
2092
  }
2080
2093
  if (options.byAngle === void 0 && options.toAngle === void 0) {
2081
- throw new Error("rotate Action: must specify either byAngle or toAngle");
2094
+ throw new M2Error(
2095
+ "rotate Action: must specify either byAngle or toAngle"
2096
+ );
2082
2097
  }
2083
2098
  if (options.toAngle === void 0 && options.shortestUnitArc !== void 0) {
2084
- throw new Error(
2099
+ throw new M2Error(
2085
2100
  "rotate Action: shortestUnitArc can only be specified when toAngle is provided"
2086
2101
  );
2087
2102
  }
@@ -2252,7 +2267,7 @@ class RepeatAction extends Action {
2252
2267
  }
2253
2268
  clone() {
2254
2269
  if (this.children.length !== 1) {
2255
- throw new Error("Repeat action must have exactly one child");
2270
+ throw new M2Error("Repeat action must have exactly one child");
2256
2271
  }
2257
2272
  const clonedAction = Action.repeat({
2258
2273
  // RepeatAction always has exactly one child
@@ -2297,7 +2312,7 @@ class RepeatForeverAction extends RepeatAction {
2297
2312
  }
2298
2313
  clone() {
2299
2314
  if (this.children.length !== 1) {
2300
- throw new Error("RepeatForever action must have exactly one child");
2315
+ throw new M2Error("RepeatForever action must have exactly one child");
2301
2316
  }
2302
2317
  const clonedAction = Action.repeatForever({
2303
2318
  // RepeatForeverAction always has exactly one child
@@ -2982,10 +2997,10 @@ class M2Node {
2982
2997
  }
2983
2998
  // we will override this in each derived class. This method will never be called.
2984
2999
  initialize() {
2985
- throw new Error("initialize() called in abstract base class Node.");
3000
+ throw new M2Error("initialize() called in abstract base class Node.");
2986
3001
  }
2987
3002
  get completeNodeOptions() {
2988
- throw new Error(
3003
+ throw new M2Error(
2989
3004
  "get completeNodeOptions() called in abstract base class Node."
2990
3005
  );
2991
3006
  }
@@ -3055,7 +3070,7 @@ class M2Node {
3055
3070
  get game() {
3056
3071
  const findParentScene = (node) => {
3057
3072
  if (!node.parent) {
3058
- throw new Error(`Node ${this} has not been added to a scene.`);
3073
+ throw new M2Error(`Node ${this} has not been added to a scene.`);
3059
3074
  } else if (node.parent.type === M2NodeType.Scene) {
3060
3075
  return node.parent;
3061
3076
  } else {
@@ -3097,17 +3112,17 @@ class M2Node {
3097
3112
  addChild(child) {
3098
3113
  const suppressEvents = this.suppressEvents || child.suppressEvents;
3099
3114
  if (child === this) {
3100
- throw new Error(
3115
+ throw new M2Error(
3101
3116
  `Cannot add node ${child.toString()} as a child to itself.`
3102
3117
  );
3103
3118
  }
3104
3119
  if (child.type == M2NodeType.Scene) {
3105
- throw new Error(
3120
+ throw new M2Error(
3106
3121
  `Cannot add scene ${child.toString()} as a child to node ${this.toString()}. A scene cannot be the child of a node. A scene can only be added to a game object.`
3107
3122
  );
3108
3123
  }
3109
3124
  if (this.children.filter((c) => c !== child).map((c) => c.name).includes(child.name)) {
3110
- throw new Error(
3125
+ throw new M2Error(
3111
3126
  `Cannot add child node ${child.toString()} to parent node ${this.toString()}. A child with name "${child.name}" already exists on this parent.`
3112
3127
  );
3113
3128
  }
@@ -3138,11 +3153,11 @@ class M2Node {
3138
3153
  }
3139
3154
  const firstOtherParent = otherParents.find(Boolean);
3140
3155
  if (firstOtherParent === this) {
3141
- throw new Error(
3156
+ throw new M2Error(
3142
3157
  `Cannot add child node ${child.toString()} to parent node ${this.toString()}. This child already exists on this parent. The child cannot be added again.`
3143
3158
  );
3144
3159
  }
3145
- throw new Error(
3160
+ throw new M2Error(
3146
3161
  `Cannot add child node ${child.toString()} to parent node ${this.toString()}. This child already exists on other parent node: ${firstOtherParent?.toString()}}. Remove the child from the other parent first.`
3147
3162
  );
3148
3163
  }
@@ -3181,7 +3196,7 @@ class M2Node {
3181
3196
  child.parent = void 0;
3182
3197
  this.children = this.children.filter((c) => c !== child);
3183
3198
  } else {
3184
- throw new Error(
3199
+ throw new M2Error(
3185
3200
  `cannot remove node ${child} from parent ${this} because the node is not currently a child of the parent`
3186
3201
  );
3187
3202
  }
@@ -3205,7 +3220,7 @@ class M2Node {
3205
3220
  removeChildren(children) {
3206
3221
  children.forEach((child) => {
3207
3222
  if (!this.children.includes(child)) {
3208
- throw new Error(
3223
+ throw new M2Error(
3209
3224
  `cannot remove node ${child} from parent ${this} because the node is not currently a child of the parent`
3210
3225
  );
3211
3226
  }
@@ -3224,7 +3239,7 @@ class M2Node {
3224
3239
  descendant(name) {
3225
3240
  const descendant = this.descendants.filter((child) => child.name === name).find(Boolean);
3226
3241
  if (descendant === void 0) {
3227
- throw new Error(
3242
+ throw new M2Error(
3228
3243
  `descendant with name ${name} not found on parent ${this.toString()}`
3229
3244
  );
3230
3245
  }
@@ -3449,7 +3464,7 @@ class M2Node {
3449
3464
  additionalExceptionMessage = `. sibling node named "${nodeName}" has not been added to the game object`;
3450
3465
  }
3451
3466
  if (node === void 0) {
3452
- throw new Error(
3467
+ throw new M2Error(
3453
3468
  "could not find sibling node for constraint" + additionalExceptionMessage
3454
3469
  );
3455
3470
  }
@@ -3612,7 +3627,7 @@ class M2Node {
3612
3627
  }
3613
3628
  }
3614
3629
  if (siblingConstraint === void 0) {
3615
- throw new Error(
3630
+ throw new M2Error(
3616
3631
  "error getting uuid of sibling constraint" + additionalExceptionMessage
3617
3632
  );
3618
3633
  }
@@ -3637,7 +3652,7 @@ class M2Node {
3637
3652
  uuidsInUpdateOrder.forEach((uuid) => {
3638
3653
  const child = this.children.filter((c) => c.uuid === uuid).find(Boolean);
3639
3654
  if (child === void 0) {
3640
- throw new Error("error in dag topological sort");
3655
+ throw new M2Error("error in dag topological sort");
3641
3656
  }
3642
3657
  childrenInUpdateOrder.push(child);
3643
3658
  });
@@ -3705,7 +3720,7 @@ class M2Node {
3705
3720
  }
3706
3721
  getDrawableOptions() {
3707
3722
  if (!this.isDrawable) {
3708
- throw new Error(
3723
+ throw new M2Error(
3709
3724
  "getDrawableOptions() called object that is not IDrawable"
3710
3725
  );
3711
3726
  }
@@ -3717,7 +3732,7 @@ class M2Node {
3717
3732
  }
3718
3733
  getTextOptions() {
3719
3734
  if (!this.isText) {
3720
- throw new Error("getTextOptions() called object that is not IText");
3735
+ throw new M2Error("getTextOptions() called object that is not IText");
3721
3736
  }
3722
3737
  const textOptions = {
3723
3738
  text: this.text,
@@ -3734,7 +3749,7 @@ class M2Node {
3734
3749
  */
3735
3750
  // get parentScene(): Scene {
3736
3751
  // if (this.type === M2NodeType.scene) {
3737
- // throw new Error(
3752
+ // throw new M2Error(
3738
3753
  // `Node ${this} is a scene and cannot have a parent scene`
3739
3754
  // );
3740
3755
  // }
@@ -3743,21 +3758,23 @@ class M2Node {
3743
3758
  // } else if (this.parent) {
3744
3759
  // return this.parent.parentScene;
3745
3760
  // }
3746
- // throw new Error(`Node ${this} has not been added to a scene`);
3761
+ // throw new M2Error(`Node ${this} has not been added to a scene`);
3747
3762
  // }
3748
3763
  get canvasKit() {
3749
3764
  return this.game.canvasKit;
3750
3765
  }
3751
3766
  get parentSceneAsNode() {
3752
3767
  if (this.type === M2NodeType.Scene) {
3753
- throw new Error(`Node ${this} is a scene and cannot have a parent scene`);
3768
+ throw new M2Error(
3769
+ `Node ${this} is a scene and cannot have a parent scene`
3770
+ );
3754
3771
  }
3755
3772
  if (this.parent && this.parent.type === M2NodeType.Scene) {
3756
3773
  return this.parent;
3757
3774
  } else if (this.parent) {
3758
3775
  return this.parent.parentSceneAsNode;
3759
3776
  }
3760
- throw new Error(`Node ${this} has not been added to a scene`);
3777
+ throw new M2Error(`Node ${this} has not been added to a scene`);
3761
3778
  }
3762
3779
  get size() {
3763
3780
  const node = this;
@@ -3908,7 +3925,7 @@ class M2Node {
3908
3925
  if (inDegree.has(edge)) {
3909
3926
  const inDegreeCount = inDegree.get(edge);
3910
3927
  if (inDegreeCount === void 0) {
3911
- throw new Error(`Could not find inDegree for edge ${edge}`);
3928
+ throw new M2Error(`Could not find inDegree for edge ${edge}`);
3912
3929
  }
3913
3930
  inDegree.set(edge, inDegreeCount + 1);
3914
3931
  } else {
@@ -3932,7 +3949,7 @@ class M2Node {
3932
3949
  adjList.get(current)?.forEach((edge) => {
3933
3950
  const inDegreeCount = inDegree.get(edge);
3934
3951
  if (inDegreeCount === void 0) {
3935
- throw new Error(`Could not find inDegree for edge ${edge}`);
3952
+ throw new M2Error(`Could not find inDegree for edge ${edge}`);
3936
3953
  }
3937
3954
  if (inDegree.has(edge) && inDegreeCount > 0) {
3938
3955
  const newDegree = inDegreeCount - 1;
@@ -4173,7 +4190,7 @@ class ImageManager {
4173
4190
  localizeImageUrl(url, locale) {
4174
4191
  const extensionIndex = url.lastIndexOf(".");
4175
4192
  if (extensionIndex === -1) {
4176
- throw new Error("URL does not have an extension");
4193
+ throw new M2Error("URL does not have an extension");
4177
4194
  }
4178
4195
  const localizedUrl = url.slice(0, extensionIndex) + `.${locale}` + url.slice(extensionIndex);
4179
4196
  return localizedUrl;
@@ -4201,7 +4218,7 @@ class ImageManager {
4201
4218
  browserImages.map((i) => i.imageName)
4202
4219
  );
4203
4220
  if (duplicateImageNames.length > 0) {
4204
- throw new Error(
4221
+ throw new M2Error(
4205
4222
  `image names must be unique. these image names are duplicated within a game ${this.game.id}: ` + duplicateImageNames.join(", ")
4206
4223
  );
4207
4224
  }
@@ -4229,7 +4246,7 @@ class ImageManager {
4229
4246
  if (error instanceof Error) {
4230
4247
  throw error;
4231
4248
  } else {
4232
- throw new Error(
4249
+ throw new M2Error(
4233
4250
  `prepareDeferredImage(): unable to render image named ${image.imageName}. image source was ${image.svgString ? "svgString" : `url: ${image.url}`}`
4234
4251
  );
4235
4252
  }
@@ -4256,7 +4273,7 @@ class ImageManager {
4256
4273
  const imgElement = document.createElement("img");
4257
4274
  const renderAfterBrowserLoad = (resolve) => {
4258
4275
  if (!this.scratchCanvas || !this.ctx || !this.scale) {
4259
- throw new Error("image manager not set up");
4276
+ throw new M2Error("image manager not set up");
4260
4277
  }
4261
4278
  this.scratchCanvas.width = image.width * this.scale;
4262
4279
  this.scratchCanvas.height = image.height * this.scale;
@@ -4265,14 +4282,14 @@ class ImageManager {
4265
4282
  this.ctx.drawImage(imgElement, 0, 0, image.width, image.height);
4266
4283
  this.scratchCanvas.toBlob((blob) => {
4267
4284
  if (!blob) {
4268
- throw new Error(
4285
+ throw new M2Error(
4269
4286
  `renderM2Image(): blob is undefined for ${image.imageName}`
4270
4287
  );
4271
4288
  }
4272
4289
  blob.arrayBuffer().then((buffer) => {
4273
4290
  const canvaskitImage = this.canvasKit.MakeImageFromEncoded(buffer);
4274
4291
  if (!canvaskitImage) {
4275
- throw new Error(
4292
+ throw new M2Error(
4276
4293
  `could not create image with name "${image.imageName}."`
4277
4294
  );
4278
4295
  }
@@ -4308,12 +4325,12 @@ class ImageManager {
4308
4325
  renderAfterBrowserLoad(resolve);
4309
4326
  };
4310
4327
  if (!image.svgString && !image.url) {
4311
- throw new Error(
4328
+ throw new M2Error(
4312
4329
  `no svgString or url provided for image named ${image.imageName}`
4313
4330
  );
4314
4331
  }
4315
4332
  if (image.svgString && image.url) {
4316
- throw new Error(
4333
+ throw new M2Error(
4317
4334
  `provide svgString or url. both were provided for image named ${image.imageName}`
4318
4335
  );
4319
4336
  }
@@ -4419,7 +4436,9 @@ class ImageManager {
4419
4436
  document.body.appendChild(this._scratchCanvas);
4420
4437
  const context2d = this._scratchCanvas.getContext("2d");
4421
4438
  if (context2d === null) {
4422
- throw new Error("could not get 2d canvas context from scratch canvas");
4439
+ throw new M2Error(
4440
+ "could not get 2d canvas context from scratch canvas"
4441
+ );
4423
4442
  }
4424
4443
  this.ctx = context2d;
4425
4444
  this.scale = window.devicePixelRatio;
@@ -4432,6 +4451,8 @@ class ImageManager {
4432
4451
  }
4433
4452
  }
4434
4453
 
4454
+ const STRING_INTERPOLATION_CHARACTERS = "{{}}";
4455
+ const TRANSLATION_INTERPOLATION_CHARACTERS = "[[]]";
4435
4456
  class I18n {
4436
4457
  /**
4437
4458
  * The I18n class localizes text and images.
@@ -4539,39 +4560,198 @@ class I18n {
4539
4560
  }
4540
4561
  }
4541
4562
  /**
4563
+ * Returns the localized text and font information for the given key in the
4564
+ * current locale.
4542
4565
  *
4543
4566
  * @param key - Translation key
4544
4567
  * @param interpolation - Interpolation keys and values to replace
4545
- * placeholders in the translated text
4546
- * @returns a `TextLocalizationResult` object with the localized text, font
4547
- * information, and whether the translation is a fallback.
4568
+ * string interpolation placeholders in the translated text
4569
+ * @returns object with the localized text, font information, and whether the
4570
+ * translation is a fallback.
4548
4571
  */
4549
4572
  getTextLocalization(key, interpolation) {
4550
- let localizedText = "";
4551
- let isFallbackOrMissingTranslation = false;
4573
+ const primaryResult = this.attemptTranslation(key, interpolation);
4574
+ if (primaryResult.isFallbackOrMissingTranslation) {
4575
+ const placeholdersResult = this.handleTranslationPlaceholders(
4576
+ key,
4577
+ primaryResult,
4578
+ interpolation
4579
+ );
4580
+ if (placeholdersResult) {
4581
+ if (interpolation !== void 0) {
4582
+ placeholdersResult.text = this.insertInterpolations(
4583
+ STRING_INTERPOLATION_CHARACTERS,
4584
+ placeholdersResult.text,
4585
+ interpolation
4586
+ );
4587
+ }
4588
+ return placeholdersResult;
4589
+ }
4590
+ }
4591
+ return primaryResult;
4592
+ }
4593
+ /**
4594
+ *
4595
+ * @param key - Translation key to be translated
4596
+ * @param interpolation - String interpolation keys and values to replace
4597
+ * @returns result object with the localized text, font
4598
+ */
4599
+ attemptTranslation(key, interpolation) {
4552
4600
  let tf = this.tf(key, interpolation);
4553
- if (tf?.text !== void 0) {
4554
- localizedText = tf.text;
4555
- } else {
4601
+ let isFallbackOrMissingTranslation = false;
4602
+ if (tf?.text === void 0) {
4556
4603
  tf = this.tf(key, {
4557
4604
  useFallbackLocale: true,
4558
4605
  ...interpolation
4559
4606
  });
4560
- if (tf === void 0 || tf.text === void 0) {
4561
- localizedText = key;
4562
- } else {
4563
- localizedText = tf.text;
4564
- }
4565
4607
  isFallbackOrMissingTranslation = true;
4566
4608
  }
4609
+ const text = tf?.text ?? key;
4567
4610
  return {
4568
- text: localizedText,
4611
+ text,
4569
4612
  fontSize: tf?.fontSize,
4570
4613
  fontName: tf?.fontName,
4571
4614
  fontNames: tf?.fontNames,
4572
4615
  isFallbackOrMissingTranslation
4573
4616
  };
4574
4617
  }
4618
+ /**
4619
+ * Handles translation placeholders in a string.
4620
+ *
4621
+ * @remarks The value of a translation placeholder (text within `[[]]`)
4622
+ * may also contain string interpolation placeholders (`{{}}`), so we need
4623
+ * to handle that as well.
4624
+ *
4625
+ * @param key - Translation key for the string to be localized
4626
+ * @param initialResult - Initial translation result for the string
4627
+ * @param interpolation - Interpolation keys and values to replace
4628
+ * interpolation placeholders in the translated text
4629
+ * @returns result object with the localized text,
4630
+ */
4631
+ handleTranslationPlaceholders(key, initialResult, interpolation) {
4632
+ const placeholders = this.getTranslationPlaceholders(key);
4633
+ if (placeholders.length === 0) {
4634
+ return null;
4635
+ }
4636
+ const fontProps = {
4637
+ size: /* @__PURE__ */ new Set(),
4638
+ name: /* @__PURE__ */ new Set(),
4639
+ names: /* @__PURE__ */ new Set()
4640
+ };
4641
+ const interpolationMap = {};
4642
+ let isFallbackOrMissingTranslation = false;
4643
+ placeholders.forEach((placeholderKey) => {
4644
+ const placeholderResult = this.translatePlaceholder(
4645
+ placeholderKey,
4646
+ fontProps,
4647
+ interpolation
4648
+ );
4649
+ interpolationMap[placeholderKey] = placeholderResult.text;
4650
+ isFallbackOrMissingTranslation = isFallbackOrMissingTranslation || placeholderResult.isFallback;
4651
+ });
4652
+ this.warnConflictingFontProperties(key, fontProps);
4653
+ const text = this.insertInterpolations(
4654
+ TRANSLATION_INTERPOLATION_CHARACTERS,
4655
+ key,
4656
+ interpolationMap
4657
+ );
4658
+ const fontSize = initialResult.fontSize || (fontProps.size.size > 0 ? [...fontProps.size][0] : void 0);
4659
+ const fontName = initialResult.fontName || (fontProps.name.size > 0 ? [...fontProps.name][0] : void 0);
4660
+ const fontNames = initialResult.fontNames || (fontProps.names.size > 0 ? [...fontProps.names][0].split(",") : void 0);
4661
+ return {
4662
+ text,
4663
+ fontSize,
4664
+ fontName,
4665
+ fontNames,
4666
+ isFallbackOrMissingTranslation
4667
+ };
4668
+ }
4669
+ /**
4670
+ * Translates a translation placeholder key to its text and collects font properties.
4671
+ *
4672
+ * @param placeholderKey - Translation key for the placeholder
4673
+ * @param fontProps - Font properties sets to collect font information
4674
+ * @param interpolation - Interpolation keys and values to replace
4675
+ * string interpolation placeholders in the translated text
4676
+ * @returns result object with the translated text and whether it is a fallback translation
4677
+ */
4678
+ translatePlaceholder(placeholderKey, fontProps, interpolation) {
4679
+ let tf = this.tf(placeholderKey, interpolation);
4680
+ let isFallback = false;
4681
+ if (tf?.text === void 0) {
4682
+ tf = this.tf(placeholderKey, {
4683
+ useFallbackLocale: true,
4684
+ ...interpolation
4685
+ });
4686
+ isFallback = true;
4687
+ }
4688
+ if (tf?.fontSize !== void 0) {
4689
+ fontProps.size.add(tf.fontSize);
4690
+ }
4691
+ if (tf?.fontName !== void 0) {
4692
+ fontProps.name.add(tf.fontName);
4693
+ }
4694
+ if (tf?.fontNames !== void 0) {
4695
+ fontProps.names.add(tf.fontNames.sort().join(","));
4696
+ }
4697
+ return {
4698
+ text: tf?.text ?? placeholderKey,
4699
+ isFallback
4700
+ };
4701
+ }
4702
+ /**
4703
+ * Extracts translation key placeholders from a string.
4704
+ *
4705
+ * @remarks Translation key placeholders are denoted by double square brackets,
4706
+ * e.g., "The translated word is [[RED]]", and RED is a key for translation.
4707
+ *
4708
+ * @param s - string to search for placeholders
4709
+ * @returns an array of placeholders found in the string, without the square
4710
+ * brackets
4711
+ */
4712
+ getTranslationPlaceholders(s) {
4713
+ const [open, close] = [
4714
+ TRANSLATION_INTERPOLATION_CHARACTERS.slice(0, 2),
4715
+ TRANSLATION_INTERPOLATION_CHARACTERS.slice(2)
4716
+ ];
4717
+ const escapedOpen = open.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4718
+ const escapedClose = close.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4719
+ const regex = new RegExp(`${escapedOpen}(.*?)${escapedClose}`, "g");
4720
+ const matches = s.match(regex);
4721
+ if (!matches) {
4722
+ return [];
4723
+ }
4724
+ return matches.map(
4725
+ (placeholder) => placeholder.slice(open.length, -close.length).trim()
4726
+ );
4727
+ }
4728
+ /**
4729
+ * Logs warnings if the string to be localized has conflicting font
4730
+ * properties.
4731
+ *
4732
+ * @remarks This can happen due to multiple placeholders in the string
4733
+ * that specify different font sizes, font names, or font names arrays.
4734
+ *
4735
+ * @param key - Translation key for which the string is being localized
4736
+ * @param fontProps - font properties sets collected from the placeholders
4737
+ */
4738
+ warnConflictingFontProperties(key, fontProps) {
4739
+ if (fontProps.size.size > 1) {
4740
+ console.warn(
4741
+ `i18n: placeholders set multiple different font sizes in string to be localized. Only one will be used. String: ${key}`
4742
+ );
4743
+ }
4744
+ if (fontProps.name.size > 1) {
4745
+ console.warn(
4746
+ `i18n: placeholders set multiple different font names within string to be localized. Only one will be used. String: ${key}`
4747
+ );
4748
+ }
4749
+ if (fontProps.names.size > 1) {
4750
+ console.warn(
4751
+ `i18n: placeholders set multiple different font names arrays within string to be localized. Only one will be used. String: ${key}`
4752
+ );
4753
+ }
4754
+ }
4575
4755
  /**
4576
4756
  * Returns the translation text for the given key in the current locale.
4577
4757
  *
@@ -4604,6 +4784,7 @@ class I18n {
4604
4784
  const t = this.translation[this.locale]?.[key];
4605
4785
  if (this.isStringOrTextWithFontCustomization(t)) {
4606
4786
  return this.insertInterpolations(
4787
+ STRING_INTERPOLATION_CHARACTERS,
4607
4788
  this.getKeyText(t),
4608
4789
  interpolationMap
4609
4790
  );
@@ -4613,6 +4794,7 @@ class I18n {
4613
4794
  const fallbackT = this.translation[this.fallbackLocale]?.[key];
4614
4795
  if (this.isStringOrTextWithFontCustomization(fallbackT)) {
4615
4796
  return this.insertInterpolations(
4797
+ STRING_INTERPOLATION_CHARACTERS,
4616
4798
  this.getKeyText(fallbackT),
4617
4799
  interpolationMap
4618
4800
  );
@@ -4641,6 +4823,7 @@ class I18n {
4641
4823
  const tf = this.getKeyTextAndFont(t, this.locale);
4642
4824
  if (tf.text) {
4643
4825
  tf.text = this.insertInterpolations(
4826
+ STRING_INTERPOLATION_CHARACTERS,
4644
4827
  tf.text,
4645
4828
  interpolationMap
4646
4829
  );
@@ -4657,6 +4840,7 @@ class I18n {
4657
4840
  );
4658
4841
  if (tf.text) {
4659
4842
  tf.text = this.insertInterpolations(
4843
+ STRING_INTERPOLATION_CHARACTERS,
4660
4844
  tf.text,
4661
4845
  interpolationMap
4662
4846
  );
@@ -4713,15 +4897,19 @@ class I18n {
4713
4897
  return { text, fontSize, fontNames };
4714
4898
  }
4715
4899
  }
4716
- insertInterpolations(text, options) {
4900
+ insertInterpolations(specialChars, text, options) {
4717
4901
  if (!options) {
4718
4902
  return text;
4719
4903
  }
4720
- return text.replace(/\{\{(.*?)\}\}/g, (_match, key) => {
4904
+ const [open, close] = [specialChars.slice(0, 2), specialChars.slice(2)];
4905
+ const escapedOpen = open.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4906
+ const escapedClose = close.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4907
+ const regex = new RegExp(`${escapedOpen}(.*?)${escapedClose}`, "g");
4908
+ return text.replace(regex, (_match, key) => {
4721
4909
  if (Object.prototype.hasOwnProperty.call(options, key)) {
4722
4910
  return options[key];
4723
4911
  } else {
4724
- throw new Error(
4912
+ throw new M2Error(
4725
4913
  `insertInterpolations(): placeholder "${key}" not found. Text was ${text}, provided interpolation was ${JSON.stringify(options)}`
4726
4914
  );
4727
4915
  }
@@ -4931,7 +5119,7 @@ class EventStore {
4931
5119
  while (this.events.length > 0 && this.events[0].timestamp <= replayTimestamp) {
4932
5120
  const event = this.events.shift();
4933
5121
  if (!event) {
4934
- throw new Error("EventStore.dequeueEvents(): undefined event");
5122
+ throw new M2Error("EventStore.dequeueEvents(): undefined event");
4935
5123
  }
4936
5124
  if (event.sequence !== void 0 && event.sequence > this.replayThoughSequence) {
4937
5125
  continue;
@@ -4951,7 +5139,7 @@ class EventStore {
4951
5139
  sortEventStore(events) {
4952
5140
  events.sort((a, b) => {
4953
5141
  if (a.sequence === void 0 || b.sequence === void 0) {
4954
- throw new Error("EventStore.sortEventStore(): undefined sequence");
5142
+ throw new M2Error("EventStore.sortEventStore(): undefined sequence");
4955
5143
  }
4956
5144
  if (a.sequence !== b.sequence) {
4957
5145
  return a.sequence - b.sequence;
@@ -4979,7 +5167,9 @@ const M2FontStatus = {
4979
5167
  const TAG_NAME = {
4980
5168
  UNDERLINE: "u",
4981
5169
  ITALIC: "i",
4982
- BOLD: "b"
5170
+ BOLD: "b",
5171
+ STRIKETHROUGH: "s",
5172
+ OVERLINE: "o"
4983
5173
  };
4984
5174
  class Label extends M2Node {
4985
5175
  /**
@@ -5011,10 +5201,9 @@ class Label extends M2Node {
5011
5201
  // public getter/setter is below
5012
5202
  this._localize = true;
5013
5203
  this.localizedFontNames = [];
5204
+ this.textAfterLocalization = "";
5014
5205
  this.plainText = "";
5015
5206
  this.styleSegments = [];
5016
- this.underlinedRanges = [];
5017
- this.currentBuilderPosition = 0;
5018
5207
  handleInterfaceOptions(this, options);
5019
5208
  if (options.horizontalAlignmentMode) {
5020
5209
  this.horizontalAlignmentMode = options.horizontalAlignmentMode;
@@ -5055,7 +5244,7 @@ class Label extends M2Node {
5055
5244
  ckTextAlign = this.canvasKit.TextAlign.Right;
5056
5245
  break;
5057
5246
  default:
5058
- throw new Error("unknown horizontalAlignmentMode");
5247
+ throw new M2Error("unknown horizontalAlignmentMode");
5059
5248
  }
5060
5249
  if (!this.text) {
5061
5250
  this.text = "";
@@ -5066,14 +5255,13 @@ class Label extends M2Node {
5066
5255
  this.fontColor[2],
5067
5256
  this.fontColor[3]
5068
5257
  );
5069
- let textAfterLocalization;
5070
5258
  const i18n = this.game.i18n;
5071
5259
  if (i18n && this.localize !== false) {
5072
5260
  const textLocalization = i18n.getTextLocalization(
5073
5261
  this.text,
5074
5262
  this.interpolation
5075
5263
  );
5076
- textAfterLocalization = textLocalization.text;
5264
+ this.textAfterLocalization = textLocalization.text;
5077
5265
  this.localizedFontSize = textLocalization.fontSize;
5078
5266
  this.localizedFontName = textLocalization.fontName;
5079
5267
  this.localizedFontNames = textLocalization.fontNames ?? [];
@@ -5086,15 +5274,13 @@ class Label extends M2Node {
5086
5274
  );
5087
5275
  }
5088
5276
  } else {
5089
- textAfterLocalization = this.text;
5277
+ this.textAfterLocalization = this.text;
5090
5278
  }
5091
- this.currentBuilderPosition = 0;
5092
- this.underlinedRanges = [];
5093
- const parsedText = this.parseFormattedText(textAfterLocalization);
5279
+ const parsedText = this.parseFormattedText(this.textAfterLocalization);
5094
5280
  this.plainText = parsedText.plainText;
5095
5281
  this.styleSegments = parsedText.styleSegments;
5096
5282
  if (this.fontName && this.fontNames) {
5097
- throw new Error("cannot specify both fontName and fontNames");
5283
+ throw new M2Error("cannot specify both fontName and fontNames");
5098
5284
  }
5099
5285
  const fontManager = this.game.fontManager;
5100
5286
  const requiredFonts = this.getRequiredLabelFonts(fontManager);
@@ -5132,13 +5318,6 @@ class Label extends M2Node {
5132
5318
  } else {
5133
5319
  this.backgroundPaint.setColor(this.canvasKit.Color(0, 0, 0, 0));
5134
5320
  }
5135
- if (!this._underlinePaint) {
5136
- this._underlinePaint = new this.canvasKit.Paint();
5137
- }
5138
- this.underlinePaint.setColor(this.fontPaint.getColor());
5139
- this.underlinePaint.setAlphaf(this.absoluteAlpha);
5140
- this.underlinePaint.setStyle(this.canvasKit.PaintStyle.Fill);
5141
- this.underlinePaint.setAntiAlias(true);
5142
5321
  const defaultStyle = {
5143
5322
  fontFamilies: requiredFonts.map((font) => font.fontName),
5144
5323
  fontSize: (this.localizedFontSize ?? this.fontSize) * m2c2Globals.canvasScale,
@@ -5164,7 +5343,11 @@ class Label extends M2Node {
5164
5343
  this.fontPaint,
5165
5344
  this.backgroundPaint
5166
5345
  );
5167
- this.addTextWithStylesToParagraphBuilder(defaultStyle);
5346
+ this.addStyleSegmentsToParagraphBuilder(
5347
+ this.builder,
5348
+ this.styleSegments,
5349
+ defaultStyle
5350
+ );
5168
5351
  if (this.paragraph) {
5169
5352
  this.paragraph.delete();
5170
5353
  }
@@ -5176,7 +5359,9 @@ class Label extends M2Node {
5176
5359
  let calculatedWidth = preferredWidth;
5177
5360
  if (preferredWidth === 0 || this.layout.width === 0) {
5178
5361
  if (this.parent === void 0) {
5179
- throw new Error("width is set to match parent, but node has no parent");
5362
+ throw new M2Error(
5363
+ "width is set to match parent, but node has no parent"
5364
+ );
5180
5365
  }
5181
5366
  const marginStart = this.layout.marginStart ?? 0;
5182
5367
  const marginEnd = this.layout.marginEnd ?? 0;
@@ -5209,7 +5394,9 @@ class Label extends M2Node {
5209
5394
  const validTags = /* @__PURE__ */ new Set([
5210
5395
  TAG_NAME.UNDERLINE,
5211
5396
  TAG_NAME.BOLD,
5212
- TAG_NAME.ITALIC
5397
+ TAG_NAME.ITALIC,
5398
+ TAG_NAME.STRIKETHROUGH,
5399
+ TAG_NAME.OVERLINE
5213
5400
  ]);
5214
5401
  const tagPattern = /<\/?([^>]+)>/g;
5215
5402
  let lastIndex = 0;
@@ -5247,13 +5434,13 @@ class Label extends M2Node {
5247
5434
  plainIndex += beforeTag.length;
5248
5435
  if (isClosing) {
5249
5436
  if (tagStack.length === 0) {
5250
- throw new Error(
5437
+ throw new M2Error(
5251
5438
  `Label has closing tag </${tagName}> at ${position} without matching opening tag. Text is: ${text}`
5252
5439
  );
5253
5440
  }
5254
5441
  const lastOpenTag = tagStack.pop();
5255
5442
  if (lastOpenTag !== tagName) {
5256
- throw new Error(
5443
+ throw new M2Error(
5257
5444
  `Label has improperly nested tags at ${position}. Expected </${lastOpenTag}> but found </${tagName}>. Tags must be properly nested. Text is: ${text}`
5258
5445
  );
5259
5446
  }
@@ -5274,7 +5461,7 @@ class Label extends M2Node {
5274
5461
  }
5275
5462
  plainText += text.substring(lastIndex);
5276
5463
  if (tagStack.length > 0) {
5277
- throw new Error(
5464
+ throw new M2Error(
5278
5465
  `Label has unclosed format tags: <${tagStack.join(">, <")}>. All tags must be closed. Text is: ${text}`
5279
5466
  );
5280
5467
  }
@@ -5303,17 +5490,22 @@ class Label extends M2Node {
5303
5490
  styleSegments: segments
5304
5491
  };
5305
5492
  }
5306
- addTextWithStylesToParagraphBuilder(defaultStyle) {
5307
- if (this.styleSegments.length === 0) {
5308
- if (!this.builder) {
5309
- throw new Error("ParagraphBuilder is undefined");
5310
- }
5311
- this.builder.addText(this.plainText);
5493
+ /**
5494
+ * Adds text segments with consistent styling to the paragraph builder.
5495
+ *
5496
+ * @param builder - {@link ParagraphBuilder}
5497
+ * @param styleSegments - Segments of text with consistent styling
5498
+ * @param defaultStyle - Default style to apply
5499
+ */
5500
+ addStyleSegmentsToParagraphBuilder(builder, styleSegments, defaultStyle) {
5501
+ if (styleSegments.length === 0) {
5502
+ builder.addText(this.plainText);
5312
5503
  } else {
5313
5504
  let lastIndex = 0;
5314
- for (const segment of this.styleSegments) {
5505
+ for (const segment of styleSegments) {
5315
5506
  if (segment.start > lastIndex) {
5316
5507
  this.addTextWithStyle(
5508
+ builder,
5317
5509
  this.plainText.substring(lastIndex, segment.start),
5318
5510
  defaultStyle
5319
5511
  );
@@ -5321,8 +5513,8 @@ class Label extends M2Node {
5321
5513
  const styleModifiers = {};
5322
5514
  if (segment.styles.has(TAG_NAME.BOLD)) {
5323
5515
  styleModifiers.fontStyle = {
5324
- ...defaultStyle.fontStyle,
5325
- weight: this.canvasKit.FontWeight.Bold
5516
+ ...styleModifiers.fontStyle || defaultStyle.fontStyle,
5517
+ weight: this.canvasKit.FontWeight.Black
5326
5518
  };
5327
5519
  }
5328
5520
  if (segment.styles.has(TAG_NAME.ITALIC)) {
@@ -5332,9 +5524,35 @@ class Label extends M2Node {
5332
5524
  };
5333
5525
  }
5334
5526
  if (segment.styles.has(TAG_NAME.UNDERLINE)) {
5335
- styleModifiers.underline = true;
5527
+ styleModifiers.decoration = this.canvasKit.UnderlineDecoration;
5528
+ styleModifiers.decorationThickness = 1;
5529
+ styleModifiers.decorationStyle = this.canvasKit.DecorationStyle.Solid;
5530
+ styleModifiers.decorationColor = this.fontColor;
5531
+ }
5532
+ if (segment.styles.has(TAG_NAME.STRIKETHROUGH)) {
5533
+ styleModifiers.decoration = this.canvasKit.LineThroughDecoration;
5534
+ styleModifiers.decorationThickness = 1;
5535
+ styleModifiers.decorationStyle = this.canvasKit.DecorationStyle.Solid;
5536
+ styleModifiers.decorationColor = this.fontColor;
5537
+ }
5538
+ if (segment.styles.has(TAG_NAME.OVERLINE)) {
5539
+ styleModifiers.decoration = this.canvasKit.OverlineDecoration;
5540
+ styleModifiers.decorationThickness = 1;
5541
+ styleModifiers.decorationStyle = this.canvasKit.DecorationStyle.Solid;
5542
+ styleModifiers.decorationColor = this.fontColor;
5543
+ }
5544
+ const numberOfDecorations = [
5545
+ TAG_NAME.UNDERLINE,
5546
+ TAG_NAME.STRIKETHROUGH,
5547
+ TAG_NAME.OVERLINE
5548
+ ].filter((tag) => segment.styles.has(tag)).length;
5549
+ if (numberOfDecorations > 1) {
5550
+ throw new M2Error(
5551
+ `Label does not support multiple text decorations (underline, overline, or strikethrough) on a single text segment. Text is: ${this.textAfterLocalization}`
5552
+ );
5336
5553
  }
5337
5554
  this.addTextWithStyle(
5555
+ builder,
5338
5556
  this.plainText.substring(segment.start, segment.end),
5339
5557
  defaultStyle,
5340
5558
  styleModifiers
@@ -5343,33 +5561,31 @@ class Label extends M2Node {
5343
5561
  }
5344
5562
  if (lastIndex < this.plainText.length) {
5345
5563
  this.addTextWithStyle(
5564
+ builder,
5346
5565
  this.plainText.substring(lastIndex),
5347
5566
  defaultStyle
5348
5567
  );
5349
5568
  }
5350
5569
  }
5351
5570
  }
5352
- // Helper to apply style and add text
5353
- addTextWithStyle(text, defaultStyle, styleModifiers = {}) {
5571
+ /**
5572
+ * Helper that adds text to the paragraph builder with the specified style.
5573
+ *
5574
+ * @param builder - {@link ParagraphBuilder}
5575
+ * @param text - The text to add
5576
+ * @param defaultStyle - The default style to apply
5577
+ * @param styleModifiers - Additional style modifications
5578
+ * @returns void
5579
+ */
5580
+ addTextWithStyle(builder, text, defaultStyle, styleModifiers = {}) {
5354
5581
  if (!text) return;
5355
5582
  const style = {
5356
5583
  ...defaultStyle,
5357
5584
  ...styleModifiers
5358
5585
  };
5359
- if (styleModifiers.underline) {
5360
- const currentPosition = this.currentBuilderPosition;
5361
- this.underlinedRanges.push({
5362
- start: currentPosition,
5363
- end: currentPosition + text.length
5364
- });
5365
- }
5366
- if (!this.builder) {
5367
- throw new Error("ParagraphBuilder is undefined");
5368
- }
5369
- this.builder.pushPaintStyle(style, this.fontPaint, this.backgroundPaint);
5370
- this.builder.addText(text);
5371
- this.currentBuilderPosition += text.length;
5372
- this.builder.pop();
5586
+ builder.pushPaintStyle(style, this.fontPaint, this.backgroundPaint);
5587
+ builder.addText(text);
5588
+ builder.pop();
5373
5589
  }
5374
5590
  /**
5375
5591
  * Determines the M2Font objects that need to be ready in order to draw
@@ -5401,7 +5617,7 @@ class Label extends M2Node {
5401
5617
  } else if (this.fontNames !== void 0 && this.fontNames.length > 0) {
5402
5618
  requiredFonts = this.fontNames.map((font) => fontManager.fonts[font]);
5403
5619
  } else {
5404
- throw new Error("cannot determine required fonts");
5620
+ throw new M2Error("cannot determine required fonts");
5405
5621
  }
5406
5622
  return requiredFonts;
5407
5623
  }
@@ -5411,9 +5627,7 @@ class Label extends M2Node {
5411
5627
  this.builder,
5412
5628
  this._fontPaint,
5413
5629
  // use backing field since it may be undefined
5414
- this._backgroundPaint,
5415
- // use backing field since it may be undefined
5416
- this._underlinePaint
5630
+ this._backgroundPaint
5417
5631
  // use backing field since it may be undefined
5418
5632
  ]);
5419
5633
  }
@@ -5578,7 +5792,7 @@ class Label extends M2Node {
5578
5792
  }
5579
5793
  get backgroundPaint() {
5580
5794
  if (!this._backgroundPaint) {
5581
- throw new Error("backgroundPaint cannot be undefined");
5795
+ throw new M2Error("backgroundPaint cannot be undefined");
5582
5796
  }
5583
5797
  return this._backgroundPaint;
5584
5798
  }
@@ -5587,22 +5801,13 @@ class Label extends M2Node {
5587
5801
  }
5588
5802
  get fontPaint() {
5589
5803
  if (!this._fontPaint) {
5590
- throw new Error("fontPaint cannot be undefined");
5804
+ throw new M2Error("fontPaint cannot be undefined");
5591
5805
  }
5592
5806
  return this._fontPaint;
5593
5807
  }
5594
5808
  set fontPaint(fontPaint) {
5595
5809
  this._fontPaint = fontPaint;
5596
5810
  }
5597
- get underlinePaint() {
5598
- if (!this._underlinePaint) {
5599
- throw new Error("underlinePaint cannot be undefined");
5600
- }
5601
- return this._underlinePaint;
5602
- }
5603
- set underlinePaint(underlinePaint) {
5604
- this._underlinePaint = underlinePaint;
5605
- }
5606
5811
  /**
5607
5812
  * Duplicates a node using deep copy.
5608
5813
  *
@@ -5647,45 +5852,13 @@ class Label extends M2Node {
5647
5852
  const x = (this.absolutePosition.x - this.size.width * this.anchorPoint.x * this.absoluteScale) * drawScale;
5648
5853
  const y = (this.absolutePosition.y - this.size.height * this.anchorPoint.y * this.absoluteScale) * drawScale;
5649
5854
  if (this.paragraph === void 0) {
5650
- throw new Error("no paragraph");
5855
+ throw new M2Error("no paragraph");
5651
5856
  }
5652
5857
  canvas.drawParagraph(this.paragraph, x, y);
5653
- if (this.underlinedRanges.length > 0) {
5654
- this.drawUnderlines(canvas, this.paragraph, x, y);
5655
- }
5656
5858
  canvas.restore();
5657
5859
  }
5658
5860
  super.drawChildren(canvas);
5659
5861
  }
5660
- drawUnderlines(canvas, paragraph, x, y) {
5661
- const drawScale = m2c2Globals.canvasScale / this.absoluteScale;
5662
- for (const range of this.underlinedRanges) {
5663
- const positions = paragraph.getRectsForRange(
5664
- range.start,
5665
- range.end,
5666
- this.canvasKit.RectHeightStyle.Max,
5667
- this.canvasKit.RectWidthStyle.Tight
5668
- );
5669
- for (const rect of positions) {
5670
- const rectHeight = rect.rect[3] - rect.rect[1];
5671
- const underlineVerticalOffset = -rectHeight * 0.08 * drawScale * this.absoluteScale;
5672
- const lineThickness = rectHeight * 0.04 * drawScale * this.absoluteScale;
5673
- canvas.drawRect(
5674
- [
5675
- x + rect.rect[0],
5676
- // left
5677
- y + rect.rect[3] + underlineVerticalOffset,
5678
- // bottom of text + offset
5679
- x + rect.rect[2],
5680
- // right
5681
- y + rect.rect[3] + underlineVerticalOffset + lineThickness
5682
- // bottom of text + offset + thickness
5683
- ],
5684
- this.underlinePaint
5685
- );
5686
- }
5687
- }
5688
- }
5689
5862
  warmup(canvas) {
5690
5863
  const i18n = this.game.i18n;
5691
5864
  if (i18n && this.localize !== false) {
@@ -5705,7 +5878,7 @@ class Label extends M2Node {
5705
5878
  }
5706
5879
  this.initialize();
5707
5880
  if (!this.paragraph) {
5708
- throw new Error(
5881
+ throw new M2Error(
5709
5882
  `warmup Label node ${this.toString()}: paragraph is undefined`
5710
5883
  );
5711
5884
  }
@@ -5774,7 +5947,7 @@ class Scene extends M2Node {
5774
5947
  */
5775
5948
  get game() {
5776
5949
  if (this._game === void 0) {
5777
- throw new Error(`Scene ${this} has not been added to a game.`);
5950
+ throw new M2Error(`Scene ${this} has not been added to a game.`);
5778
5951
  }
5779
5952
  return this._game;
5780
5953
  }
@@ -5926,7 +6099,7 @@ class Scene extends M2Node {
5926
6099
  canvas.scale(1 / drawScale, 1 / drawScale);
5927
6100
  M2c2KitHelpers.rotateCanvasForDrawableNode(canvas, this);
5928
6101
  if (!this.backgroundPaint) {
5929
- throw new Error(`in Scene ${this}, background paint is undefined.`);
6102
+ throw new M2Error(`in Scene ${this}, background paint is undefined.`);
5930
6103
  }
5931
6104
  if (this.absoluteAlphaChange !== 0) {
5932
6105
  this.backgroundPaint.setAlphaf(this.absoluteAlpha);
@@ -5949,7 +6122,7 @@ class Scene extends M2Node {
5949
6122
  const drawScale = m2c2Globals.canvasScale / this.absoluteScale;
5950
6123
  canvas.scale(1 / drawScale, 1 / drawScale);
5951
6124
  if (!this.backgroundPaint) {
5952
- throw new Error(`in Scene ${this}, background paint is undefined.`);
6125
+ throw new M2Error(`in Scene ${this}, background paint is undefined.`);
5953
6126
  }
5954
6127
  canvas.drawRect(
5955
6128
  [
@@ -6008,7 +6181,7 @@ class Shape extends M2Node {
6008
6181
  }
6009
6182
  if (this.shapeIsSvgStringPath()) {
6010
6183
  if (options.size !== void 0) {
6011
- throw new Error(
6184
+ throw new M2Error(
6012
6185
  "Size cannot be specified when path is SVG string path"
6013
6186
  );
6014
6187
  }
@@ -6016,7 +6189,7 @@ class Shape extends M2Node {
6016
6189
  this.svgPathRequestedWidth = options.path.width;
6017
6190
  this.svgPathRequestedHeight = options.path.height;
6018
6191
  if (this.svgPathRequestedHeight !== void 0 && this.svgPathRequestedWidth !== void 0) {
6019
- throw new Error(
6192
+ throw new M2Error(
6020
6193
  "Cannot specify both width and height for SVG string path."
6021
6194
  );
6022
6195
  }
@@ -6027,7 +6200,7 @@ class Shape extends M2Node {
6027
6200
  this.lineWidth = Constants.DEFAULT_PATH_LINE_WIDTH;
6028
6201
  }
6029
6202
  if (options.circleOfRadius || options.rect) {
6030
- throw new Error(
6203
+ throw new M2Error(
6031
6204
  "Shape must specify only one of: path, circleOfRadius, or rect"
6032
6205
  );
6033
6206
  }
@@ -6036,10 +6209,10 @@ class Shape extends M2Node {
6036
6209
  this.circleOfRadius = options.circleOfRadius;
6037
6210
  this.shapeType = ShapeType.Circle;
6038
6211
  if (options.size !== void 0) {
6039
- throw new Error("Size cannot be specified for circle shape");
6212
+ throw new M2Error("Size cannot be specified for circle shape");
6040
6213
  }
6041
6214
  if (options.path || options.rect) {
6042
- throw new Error(
6215
+ throw new M2Error(
6043
6216
  "Shape must specify only one of: path, circleOfRadius, or rect"
6044
6217
  );
6045
6218
  }
@@ -6062,7 +6235,7 @@ class Shape extends M2Node {
6062
6235
  }
6063
6236
  this.shapeType = ShapeType.Rectangle;
6064
6237
  if (options.size !== void 0) {
6065
- throw new Error("Size cannot be specified for rectangle shape");
6238
+ throw new M2Error("Size cannot be specified for rectangle shape");
6066
6239
  }
6067
6240
  }
6068
6241
  if (options.cornerRadius !== void 0) {
@@ -6117,7 +6290,7 @@ class Shape extends M2Node {
6117
6290
  if (this.shapeIsSvgStringPath()) {
6118
6291
  const pathString = this.path.pathString ?? this.path.svgPathString;
6119
6292
  if (!pathString) {
6120
- throw new Error("SVG Path string is null/undefined");
6293
+ throw new M2Error("SVG Path string is null/undefined");
6121
6294
  }
6122
6295
  if (this.path.svgPathString !== void 0) {
6123
6296
  console.warn(
@@ -6126,7 +6299,7 @@ class Shape extends M2Node {
6126
6299
  }
6127
6300
  this.ckPath = this.canvasKit.Path.MakeFromSVGString(pathString);
6128
6301
  if (!this.ckPath) {
6129
- throw new Error("could not make CanvasKit Path from SVG string");
6302
+ throw new M2Error("could not make CanvasKit Path from SVG string");
6130
6303
  }
6131
6304
  const bounds = this.ckPath.getBounds();
6132
6305
  this.svgPathWidth = bounds[2] + (bounds[0] < 0 ? Math.abs(bounds[0]) : 0);
@@ -6144,7 +6317,7 @@ class Shape extends M2Node {
6144
6317
  }
6145
6318
  if (this.shapeIsM2Path()) {
6146
6319
  if (this.size.width === 0 || this.size.height === 0 || this.size.width === void 0 || this.size.height === void 0) {
6147
- throw new Error(
6320
+ throw new M2Error(
6148
6321
  "Size of shape must have non-zero height and width when path is M2Path"
6149
6322
  );
6150
6323
  }
@@ -6336,7 +6509,7 @@ class Shape extends M2Node {
6336
6509
  }
6337
6510
  }
6338
6511
  if (paint === void 0) {
6339
- throw new Error("paint is undefined");
6512
+ throw new M2Error("paint is undefined");
6340
6513
  }
6341
6514
  canvas.drawLine(
6342
6515
  pathOriginX + points[i].x * m2c2Globals.canvasScale,
@@ -6649,7 +6822,7 @@ class Shape extends M2Node {
6649
6822
  }
6650
6823
  get fillColorPaintAntialiased() {
6651
6824
  if (!this._fillColorPaintAntialiased) {
6652
- throw new Error("fillColorPaintAntiAliased is undefined");
6825
+ throw new M2Error("fillColorPaintAntiAliased is undefined");
6653
6826
  }
6654
6827
  return this._fillColorPaintAntialiased;
6655
6828
  }
@@ -6658,7 +6831,7 @@ class Shape extends M2Node {
6658
6831
  }
6659
6832
  get strokeColorPaintAntialiased() {
6660
6833
  if (!this._strokeColorPaintAntialiased) {
6661
- throw new Error("strokeColorPaintAntiAliased is undefined");
6834
+ throw new M2Error("strokeColorPaintAntiAliased is undefined");
6662
6835
  }
6663
6836
  return this._strokeColorPaintAntialiased;
6664
6837
  }
@@ -6667,7 +6840,7 @@ class Shape extends M2Node {
6667
6840
  }
6668
6841
  get fillColorPaintNotAntialiased() {
6669
6842
  if (!this._fillColorPaintNotAntialiased) {
6670
- throw new Error("fillColorPaintNotAntiAliased is undefined");
6843
+ throw new M2Error("fillColorPaintNotAntiAliased is undefined");
6671
6844
  }
6672
6845
  return this._fillColorPaintNotAntialiased;
6673
6846
  }
@@ -6676,7 +6849,7 @@ class Shape extends M2Node {
6676
6849
  }
6677
6850
  get strokeColorPaintNotAntialiased() {
6678
6851
  if (!this._strokeColorPaintNotAntialiased) {
6679
- throw new Error("strokeColorPaintNotAntiAliased is undefined");
6852
+ throw new M2Error("strokeColorPaintNotAntiAliased is undefined");
6680
6853
  }
6681
6854
  return this._strokeColorPaintNotAntialiased;
6682
6855
  }
@@ -6774,7 +6947,7 @@ class TextLine extends M2Node {
6774
6947
  getRequiredTextLineFont(fontManager) {
6775
6948
  if (this.game.i18n) {
6776
6949
  if (this.localizedFontName !== void 0 && this.localizedFontNames.length !== 0 || this.localizedFontNames.length > 1) {
6777
- throw new Error(
6950
+ throw new M2Error(
6778
6951
  `TextLine supports only one font, but multiple fonts are specified in translation.`
6779
6952
  );
6780
6953
  }
@@ -6986,7 +7159,7 @@ class TextLine extends M2Node {
6986
7159
  const x = this.absolutePosition.x * drawScale;
6987
7160
  const y = (this.absolutePosition.y + this.size.height * this.anchorPoint.y * this.absoluteScale) * drawScale;
6988
7161
  if (this.paint === void 0 || this.font === void 0) {
6989
- throw new Error(
7162
+ throw new M2Error(
6990
7163
  `in TextLine node ${this}, Paint or Font is undefined.`
6991
7164
  );
6992
7165
  }
@@ -7014,7 +7187,7 @@ class TextLine extends M2Node {
7014
7187
  }
7015
7188
  this.initialize();
7016
7189
  if (this.paint === void 0 || this.font === void 0) {
7017
- throw new Error(
7190
+ throw new M2Error(
7018
7191
  `warmup TextLine node ${this.toString()}: Paint or Font is undefined.`
7019
7192
  );
7020
7193
  }
@@ -7056,7 +7229,7 @@ class Sprite extends M2Node {
7056
7229
  initialize() {
7057
7230
  this.m2Image = this.game.imageManager.getImage(this._imageName);
7058
7231
  if (!this.m2Image) {
7059
- throw new Error(
7232
+ throw new M2Error(
7060
7233
  `could not create sprite. the image named ${this._imageName} has not been loaded`
7061
7234
  );
7062
7235
  }
@@ -7127,7 +7300,7 @@ class Sprite extends M2Node {
7127
7300
  }
7128
7301
  get paint() {
7129
7302
  if (!this._paint) {
7130
- throw new Error(
7303
+ throw new M2Error(
7131
7304
  `in paint getter: Sprite node ${this.toString()} paint is undefined.`
7132
7305
  );
7133
7306
  }
@@ -7187,7 +7360,7 @@ class Sprite extends M2Node {
7187
7360
  this.game.imageManager.prepareDeferredImage(this.m2Image);
7188
7361
  }
7189
7362
  if (this.m2Image.status === M2ImageStatus.Error) {
7190
- throw new Error(
7363
+ throw new M2Error(
7191
7364
  `error status on image ${this.m2Image.imageName} for Sprite node ${this.toString()}`
7192
7365
  );
7193
7366
  }
@@ -7201,12 +7374,12 @@ class Sprite extends M2Node {
7201
7374
  if (this.m2Image?.status === M2ImageStatus.Ready) {
7202
7375
  this.initialize();
7203
7376
  if (!this.m2Image) {
7204
- throw new Error(
7377
+ throw new M2Error(
7205
7378
  `in Sprite.warmup(): Sprite node ${this.toString()}: image not loaded.`
7206
7379
  );
7207
7380
  }
7208
7381
  if (!this.m2Image.canvaskitImage) {
7209
- throw new Error(
7382
+ throw new M2Error(
7210
7383
  `in Sprite.warmup(): Sprite node ${this.toString()} image ${this.m2Image.imageName} is undefined.`
7211
7384
  );
7212
7385
  }
@@ -7268,10 +7441,10 @@ class M2NodeFactory {
7268
7441
  createNode(type, compositeType, options) {
7269
7442
  const classNameToCreate = compositeType ? compositeType : type;
7270
7443
  if (!this.hasClassRegistration(classNameToCreate)) {
7271
- throw new Error(`Unknown node type: ${classNameToCreate}`);
7444
+ throw new M2Error(`Unknown node type: ${classNameToCreate}`);
7272
7445
  }
7273
7446
  if (!m2c2Globals.m2NodeClassRegistry) {
7274
- throw new Error("Node class registry is not initialized.");
7447
+ throw new M2Error("Node class registry is not initialized.");
7275
7448
  }
7276
7449
  const classToInstantiate = m2c2Globals.m2NodeClassRegistry[classNameToCreate];
7277
7450
  const node = new classToInstantiate(options);
@@ -7390,7 +7563,7 @@ class FontManager {
7390
7563
  async fetchFontAsArrayBuffer(font) {
7391
7564
  const response = await fetch(font.url);
7392
7565
  if (!response.ok) {
7393
- throw new Error(
7566
+ throw new M2Error(
7394
7567
  `cannot fetch font ${font.fontName} at url ${font.url}: ${response.statusText}`
7395
7568
  );
7396
7569
  }
@@ -7401,7 +7574,7 @@ class FontManager {
7401
7574
  this.provider.registerFont(arrayBuffer, font.fontName);
7402
7575
  const typeface = this.canvasKit.Typeface.MakeFreeTypeFaceFromData(arrayBuffer);
7403
7576
  if (!typeface) {
7404
- throw new Error(
7577
+ throw new M2Error(
7405
7578
  `cannot make typeface for font ${font.fontName} at url ${font.url}`
7406
7579
  );
7407
7580
  }
@@ -7438,7 +7611,7 @@ class FontManager {
7438
7611
  getDefaultFont() {
7439
7612
  const defaultFont = Object.values(this.fonts).find((font) => font.default);
7440
7613
  if (!defaultFont) {
7441
- throw new Error(
7614
+ throw new M2Error(
7442
7615
  `no default font found; please make sure at least one font is loaded`
7443
7616
  );
7444
7617
  }
@@ -7470,7 +7643,7 @@ class FontManager {
7470
7643
  getTypeface(fontName) {
7471
7644
  const typeface = this.fonts[fontName]?.typeface;
7472
7645
  if (!typeface) {
7473
- throw new Error(`font ${fontName} not found`);
7646
+ throw new M2Error(`font ${fontName} not found`);
7474
7647
  }
7475
7648
  return typeface;
7476
7649
  }
@@ -7790,272 +7963,276 @@ function requireCanvaskit () {
7790
7963
  return (
7791
7964
  function(moduleArg = {}) {
7792
7965
 
7793
- var w=moduleArg,ba,fa;w.ready=new Promise((a,b)=>{ba=a;fa=b;});
7794
- (function(a){a.Td=a.Td||[];a.Td.push(function(){a.MakeSWCanvasSurface=function(b){var c=b,f="undefined"!==typeof OffscreenCanvas&&c instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&c instanceof HTMLCanvasElement||f||(c=document.getElementById(b),c)))throw "Canvas with id "+b+" was not found";if(b=a.MakeSurface(c.width,c.height))b.Ld=c;return b};a.MakeCanvasSurface||(a.MakeCanvasSurface=a.MakeSWCanvasSurface);a.MakeSurface=function(b,c){var f={width:b,height:c,colorType:a.ColorType.RGBA_8888,
7795
- alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB},h=b*c*4,m=a._malloc(h);if(f=a.Surface._makeRasterDirect(f,m,4*b))f.Ld=null,f.Hf=b,f.Df=c,f.Ff=h,f.bf=m,f.getCanvas().clear(a.TRANSPARENT);return f};a.MakeRasterDirectSurface=function(b,c,f){return a.Surface._makeRasterDirect(b,c.byteOffset,f)};a.Surface.prototype.flush=function(b){a.Md(this.Kd);this._flush();if(this.Ld){var c=new Uint8ClampedArray(a.HEAPU8.buffer,this.bf,this.Ff);c=new ImageData(c,this.Hf,this.Df);b?this.Ld.getContext("2d").putImageData(c,
7796
- 0,0,b[0],b[1],b[2]-b[0],b[3]-b[1]):this.Ld.getContext("2d").putImageData(c,0,0);}};a.Surface.prototype.dispose=function(){this.bf&&a._free(this.bf);this.delete();};a.Md=a.Md||function(){};a.Te=a.Te||function(){return null};});})(w);
7797
- (function(a){a.Td=a.Td||[];a.Td.push(function(){function b(n,p,v){return n&&n.hasOwnProperty(p)?n[p]:v}function c(n){var p=ha(ia);ia[p]=n;return p}function f(n){return n.naturalHeight||n.videoHeight||n.displayHeight||n.height}function h(n){return n.naturalWidth||n.videoWidth||n.displayWidth||n.width}function m(n,p,v,E){n.bindTexture(n.TEXTURE_2D,p);E||v.alphaType!==a.AlphaType.Premul||n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,true);return p}function u(n,p,v){v||p.alphaType!==a.AlphaType.Premul||
7966
+ var w=moduleArg,aa,ca;w.ready=new Promise((a,b)=>{aa=a;ca=b;});
7967
+ (function(a){a.ke=a.ke||[];a.ke.push(function(){a.MakeSWCanvasSurface=function(b){var c=b,f="undefined"!==typeof OffscreenCanvas&&c instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&c instanceof HTMLCanvasElement||f||(c=document.getElementById(b),c)))throw "Canvas with id "+b+" was not found";if(b=a.MakeSurface(c.width,c.height))b.ce=c;return b};a.MakeCanvasSurface||(a.MakeCanvasSurface=a.MakeSWCanvasSurface);a.MakeSurface=function(b,c){var f={width:b,height:c,colorType:a.ColorType.RGBA_8888,
7968
+ alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB},h=b*c*4,m=a._malloc(h);if(f=a.Surface._makeRasterDirect(f,m,4*b))f.ce=null,f.Xf=b,f.Tf=c,f.Vf=h,f.wf=m,f.getCanvas().clear(a.TRANSPARENT);return f};a.MakeRasterDirectSurface=function(b,c,f){return a.Surface._makeRasterDirect(b,c.byteOffset,f)};a.Surface.prototype.flush=function(b){a.de(this.be);this._flush();if(this.ce){var c=new Uint8ClampedArray(a.HEAPU8.buffer,this.wf,this.Vf);c=new ImageData(c,this.Xf,this.Tf);b?this.ce.getContext("2d").putImageData(c,
7969
+ 0,0,b[0],b[1],b[2]-b[0],b[3]-b[1]):this.ce.getContext("2d").putImageData(c,0,0);}};a.Surface.prototype.dispose=function(){this.wf&&a._free(this.wf);this.delete();};a.de=a.de||function(){};a.mf=a.mf||function(){return null};});})(w);
7970
+ (function(a){a.ke=a.ke||[];a.ke.push(function(){function b(n,p,v){return n&&n.hasOwnProperty(p)?n[p]:v}function c(n){var p=da(ha);ha[p]=n;return p}function f(n){return n.naturalHeight||n.videoHeight||n.displayHeight||n.height}function h(n){return n.naturalWidth||n.videoWidth||n.displayWidth||n.width}function m(n,p,v,E){n.bindTexture(n.TEXTURE_2D,p);E||v.alphaType!==a.AlphaType.Premul||n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,true);return p}function u(n,p,v){v||p.alphaType!==a.AlphaType.Premul||
7798
7971
  n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,false);n.bindTexture(n.TEXTURE_2D,null);}a.GetWebGLContext=function(n,p){if(!n)throw "null canvas passed into makeWebGLContext";var v={alpha:b(p,"alpha",1),depth:b(p,"depth",1),stencil:b(p,"stencil",8),antialias:b(p,"antialias",0),premultipliedAlpha:b(p,"premultipliedAlpha",1),preserveDrawingBuffer:b(p,"preserveDrawingBuffer",0),preferLowPowerToHighPerformance:b(p,"preferLowPowerToHighPerformance",0),failIfMajorPerformanceCaveat:b(p,"failIfMajorPerformanceCaveat",
7799
- 0),enableExtensionsByDefault:b(p,"enableExtensionsByDefault",1),explicitSwapControl:b(p,"explicitSwapControl",0),renderViaOffscreenBackBuffer:b(p,"renderViaOffscreenBackBuffer",0)};v.majorVersion=p&&p.majorVersion?p.majorVersion:"undefined"!==typeof WebGL2RenderingContext?2:1;if(v.explicitSwapControl)throw "explicitSwapControl is not supported";n=la(n,v);if(!n)return 0;oa(n);A.fe.getExtension("WEBGL_debug_renderer_info");return n};a.deleteContext=function(n){A===pa[n]&&(A=null);"object"==typeof JSEvents&&
7800
- JSEvents.ug(pa[n].fe.canvas);pa[n]&&pa[n].fe.canvas&&(pa[n].fe.canvas.zf=void 0);pa[n]=null;};a._setTextureCleanup({deleteTexture:function(n,p){var v=ia[p];v&&pa[n].fe.deleteTexture(v);ia[p]=null;}});a.MakeWebGLContext=function(n){if(!this.Md(n))return null;var p=this._MakeGrContext();if(!p)return null;p.Kd=n;var v=p.delete.bind(p);p["delete"]=function(){a.Md(this.Kd);v();}.bind(p);return A.ff=p};a.MakeGrContext=a.MakeWebGLContext;a.GrDirectContext.prototype.getResourceCacheLimitBytes=function(){a.Md(this.Kd);
7801
- this._getResourceCacheLimitBytes();};a.GrDirectContext.prototype.getResourceCacheUsageBytes=function(){a.Md(this.Kd);this._getResourceCacheUsageBytes();};a.GrDirectContext.prototype.releaseResourcesAndAbandonContext=function(){a.Md(this.Kd);this._releaseResourcesAndAbandonContext();};a.GrDirectContext.prototype.setResourceCacheLimitBytes=function(n){a.Md(this.Kd);this._setResourceCacheLimitBytes(n);};a.MakeOnScreenGLSurface=function(n,p,v,E,H,L){if(!this.Md(n.Kd))return null;p=void 0===H||void 0===L?
7802
- this._MakeOnScreenGLSurface(n,p,v,E):this._MakeOnScreenGLSurface(n,p,v,E,H,L);if(!p)return null;p.Kd=n.Kd;return p};a.MakeRenderTarget=function(){var n=arguments[0];if(!this.Md(n.Kd))return null;if(3===arguments.length){var p=this._MakeRenderTargetWH(n,arguments[1],arguments[2]);if(!p)return null}else if(2===arguments.length){if(p=this._MakeRenderTargetII(n,arguments[1]),!p)return null}else return null;p.Kd=n.Kd;return p};a.MakeWebGLCanvasSurface=function(n,p,v){p=p||null;var E=n,H="undefined"!==
7803
- typeof OffscreenCanvas&&E instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&E instanceof HTMLCanvasElement||H||(E=document.getElementById(n),E)))throw "Canvas with id "+n+" was not found";n=this.GetWebGLContext(E,v);if(!n||0>n)throw "failed to create webgl context: err "+n;n=this.MakeWebGLContext(n);p=this.MakeOnScreenGLSurface(n,E.width,E.height,p);return p?p:(p=E.cloneNode(true),E.parentNode.replaceChild(p,E),p.classList.add("ck-replaced"),a.MakeSWCanvasSurface(p))};a.MakeCanvasSurface=
7804
- a.MakeWebGLCanvasSurface;a.Surface.prototype.makeImageFromTexture=function(n,p){a.Md(this.Kd);n=c(n);if(p=this._makeImageFromTexture(this.Kd,n,p))p.Le=n;return p};a.Surface.prototype.makeImageFromTextureSource=function(n,p,v){p||(p={height:f(n),width:h(n),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul});p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);a.Md(this.Kd);var E=A.fe;v=m(E,E.createTexture(),p,v);2===A.version?E.texImage2D(E.TEXTURE_2D,0,E.RGBA,p.width,p.height,
7805
- 0,E.RGBA,E.UNSIGNED_BYTE,n):E.texImage2D(E.TEXTURE_2D,0,E.RGBA,E.RGBA,E.UNSIGNED_BYTE,n);u(E,p);this._resetContext();return this.makeImageFromTexture(v,p)};a.Surface.prototype.updateTextureFromSource=function(n,p,v){if(n.Le){a.Md(this.Kd);var E=n.getImageInfo(),H=A.fe,L=m(H,ia[n.Le],E,v);2===A.version?H.texImage2D(H.TEXTURE_2D,0,H.RGBA,h(p),f(p),0,H.RGBA,H.UNSIGNED_BYTE,p):H.texImage2D(H.TEXTURE_2D,0,H.RGBA,H.RGBA,H.UNSIGNED_BYTE,p);u(H,E,v);this._resetContext();ia[n.Le]=null;n.Le=c(L);E.colorSpace=
7806
- n.getColorSpace();p=this._makeImageFromTexture(this.Kd,n.Le,E);v=n.Jd.Rd;H=n.Jd.Yd;n.Jd.Rd=p.Jd.Rd;n.Jd.Yd=p.Jd.Yd;p.Jd.Rd=v;p.Jd.Yd=H;p.delete();E.colorSpace.delete();}};a.MakeLazyImageFromTextureSource=function(n,p,v){p||(p={height:f(n),width:h(n),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul});p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);var E={makeTexture:function(){var H=A,L=H.fe,y=m(L,L.createTexture(),p,v);2===H.version?L.texImage2D(L.TEXTURE_2D,0,L.RGBA,
7807
- p.width,p.height,0,L.RGBA,L.UNSIGNED_BYTE,n):L.texImage2D(L.TEXTURE_2D,0,L.RGBA,L.RGBA,L.UNSIGNED_BYTE,n);u(L,p,v);return c(y)},freeSrc:function(){}};"VideoFrame"===n.constructor.name&&(E.freeSrc=function(){n.close();});return a.Image._makeFromGenerator(p,E)};a.Md=function(n){return n?oa(n):false};a.Te=function(){return A&&A.ff&&!A.ff.isDeleted()?A.ff:null};});})(w);
7972
+ 0),enableExtensionsByDefault:b(p,"enableExtensionsByDefault",1),explicitSwapControl:b(p,"explicitSwapControl",0),renderViaOffscreenBackBuffer:b(p,"renderViaOffscreenBackBuffer",0)};v.majorVersion=p&&p.majorVersion?p.majorVersion:"undefined"!==typeof WebGL2RenderingContext?2:1;if(v.explicitSwapControl)throw "explicitSwapControl is not supported";n=ia(n,v);if(!n)return 0;ja(n);B.xe.getExtension("WEBGL_debug_renderer_info");return n};a.deleteContext=function(n){B===ma[n]&&(B=null);"object"==typeof JSEvents&&
7973
+ JSEvents.Mg(ma[n].xe.canvas);ma[n]&&ma[n].xe.canvas&&(ma[n].xe.canvas.Rf=void 0);ma[n]=null;};a._setTextureCleanup({deleteTexture:function(n,p){var v=ha[p];v&&ma[n].xe.deleteTexture(v);ha[p]=null;}});a.MakeWebGLContext=function(n){if(!this.de(n))return null;var p=this._MakeGrContext();if(!p)return null;p.be=n;var v=p.delete.bind(p);p["delete"]=function(){a.de(this.be);v();}.bind(p);return B.Af=p};a.MakeGrContext=a.MakeWebGLContext;a.GrDirectContext.prototype.getResourceCacheLimitBytes=function(){a.de(this.be);
7974
+ this._getResourceCacheLimitBytes();};a.GrDirectContext.prototype.getResourceCacheUsageBytes=function(){a.de(this.be);this._getResourceCacheUsageBytes();};a.GrDirectContext.prototype.releaseResourcesAndAbandonContext=function(){a.de(this.be);this._releaseResourcesAndAbandonContext();};a.GrDirectContext.prototype.setResourceCacheLimitBytes=function(n){a.de(this.be);this._setResourceCacheLimitBytes(n);};a.MakeOnScreenGLSurface=function(n,p,v,E,G,L){if(!this.de(n.be))return null;p=void 0===G||void 0===L?
7975
+ this._MakeOnScreenGLSurface(n,p,v,E):this._MakeOnScreenGLSurface(n,p,v,E,G,L);if(!p)return null;p.be=n.be;return p};a.MakeRenderTarget=function(){var n=arguments[0];if(!this.de(n.be))return null;if(3===arguments.length){var p=this._MakeRenderTargetWH(n,arguments[1],arguments[2]);if(!p)return null}else if(2===arguments.length){if(p=this._MakeRenderTargetII(n,arguments[1]),!p)return null}else return null;p.be=n.be;return p};a.MakeWebGLCanvasSurface=function(n,p,v){p=p||null;var E=n,G="undefined"!==
7976
+ typeof OffscreenCanvas&&E instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&E instanceof HTMLCanvasElement||G||(E=document.getElementById(n),E)))throw "Canvas with id "+n+" was not found";n=this.GetWebGLContext(E,v);if(!n||0>n)throw "failed to create webgl context: err "+n;n=this.MakeWebGLContext(n);p=this.MakeOnScreenGLSurface(n,E.width,E.height,p);return p?p:(p=E.cloneNode(true),E.parentNode.replaceChild(p,E),p.classList.add("ck-replaced"),a.MakeSWCanvasSurface(p))};a.MakeCanvasSurface=
7977
+ a.MakeWebGLCanvasSurface;a.Surface.prototype.makeImageFromTexture=function(n,p){a.de(this.be);n=c(n);if(p=this._makeImageFromTexture(this.be,n,p))p.cf=n;return p};a.Surface.prototype.makeImageFromTextureSource=function(n,p,v){p||(p={height:f(n),width:h(n),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul});p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);a.de(this.be);var E=B.xe;v=m(E,E.createTexture(),p,v);2===B.version?E.texImage2D(E.TEXTURE_2D,0,E.RGBA,p.width,p.height,
7978
+ 0,E.RGBA,E.UNSIGNED_BYTE,n):E.texImage2D(E.TEXTURE_2D,0,E.RGBA,E.RGBA,E.UNSIGNED_BYTE,n);u(E,p);this._resetContext();return this.makeImageFromTexture(v,p)};a.Surface.prototype.updateTextureFromSource=function(n,p,v){if(n.cf){a.de(this.be);var E=n.getImageInfo(),G=B.xe,L=m(G,ha[n.cf],E,v);2===B.version?G.texImage2D(G.TEXTURE_2D,0,G.RGBA,h(p),f(p),0,G.RGBA,G.UNSIGNED_BYTE,p):G.texImage2D(G.TEXTURE_2D,0,G.RGBA,G.RGBA,G.UNSIGNED_BYTE,p);u(G,E,v);this._resetContext();ha[n.cf]=null;n.cf=c(L);E.colorSpace=
7979
+ n.getColorSpace();p=this._makeImageFromTexture(this.be,n.cf,E);v=n.ae.ie;G=n.ae.pe;n.ae.ie=p.ae.ie;n.ae.pe=p.ae.pe;p.ae.ie=v;p.ae.pe=G;p.delete();E.colorSpace.delete();}};a.MakeLazyImageFromTextureSource=function(n,p,v){p||(p={height:f(n),width:h(n),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul});p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);var E={makeTexture:function(){var G=B,L=G.xe,y=m(L,L.createTexture(),p,v);2===G.version?L.texImage2D(L.TEXTURE_2D,0,L.RGBA,
7980
+ p.width,p.height,0,L.RGBA,L.UNSIGNED_BYTE,n):L.texImage2D(L.TEXTURE_2D,0,L.RGBA,L.RGBA,L.UNSIGNED_BYTE,n);u(L,p,v);return c(y)},freeSrc:function(){}};"VideoFrame"===n.constructor.name&&(E.freeSrc=function(){n.close();});return a.Image._makeFromGenerator(p,E)};a.de=function(n){return n?ja(n):false};a.mf=function(){return B&&B.Af&&!B.Af.isDeleted()?B.Af:null};});})(w);
7808
7981
  (function(a){function b(e,d,g,l,t){for(var x=0;x<e.length;x++)d[x*g+(x*t+l+g)%g]=e[x];return d}function c(e){for(var d=e*e,g=Array(d);d--;)g[d]=0===d%(e+1)?1:0;return g}function f(e){return e?e.constructor===Float32Array&&4===e.length:false}function h(e){return (n(255*e[3])<<24|n(255*e[0])<<16|n(255*e[1])<<8|n(255*e[2])<<0)>>>0}function m(e){if(e&&e._ck)return e;if(e instanceof Float32Array){for(var d=Math.floor(e.length/4),g=new Uint32Array(d),l=0;l<d;l++)g[l]=h(e.slice(4*l,4*(l+1)));return g}if(e instanceof
7809
- Uint32Array)return e;if(e instanceof Array&&e[0]instanceof Float32Array)return e.map(h)}function u(e){if(void 0===e)return 1;var d=parseFloat(e);return e&&-1!==e.indexOf("%")?d/100:d}function n(e){return Math.round(Math.max(0,Math.min(e||0,255)))}function p(e,d){d&&d._ck||a._free(e);}function v(e,d,g){if(!e||!e.length)return W;if(e&&e._ck)return e.byteOffset;var l=a[d].BYTES_PER_ELEMENT;g||(g=a._malloc(e.length*l));a[d].set(e,g/l);return g}function E(e){var d={be:W,count:e.length,colorType:a.ColorType.RGBA_F32};
7810
- if(e instanceof Float32Array)d.be=v(e,"HEAPF32"),d.count=e.length/4;else if(e instanceof Uint32Array)d.be=v(e,"HEAPU32"),d.colorType=a.ColorType.RGBA_8888;else if(e instanceof Array){if(e&&e.length){for(var g=a._malloc(16*e.length),l=0,t=g/4,x=0;x<e.length;x++)for(var C=0;4>C;C++)a.HEAPF32[t+l]=e[x][C],l++;e=g;}else e=W;d.be=e;}else throw "Invalid argument to copyFlexibleColorArray, Not a color array "+typeof e;return d}function H(e){if(!e)return W;var d=Vb.toTypedArray();if(e.length){if(6===e.length||
7811
- 9===e.length)return v(e,"HEAPF32",Na),6===e.length&&a.HEAPF32.set(wd,6+Na/4),Na;if(16===e.length)return d[0]=e[0],d[1]=e[1],d[2]=e[3],d[3]=e[4],d[4]=e[5],d[5]=e[7],d[6]=e[12],d[7]=e[13],d[8]=e[15],Na;throw "invalid matrix size";}if(void 0===e.m11)throw "invalid matrix argument";d[0]=e.m11;d[1]=e.m21;d[2]=e.m41;d[3]=e.m12;d[4]=e.m22;d[5]=e.m42;d[6]=e.m14;d[7]=e.m24;d[8]=e.m44;return Na}function L(e){if(!e)return W;var d=Wb.toTypedArray();if(e.length){if(16!==e.length&&6!==e.length&&9!==e.length)throw "invalid matrix size";
7812
- if(16===e.length)return v(e,"HEAPF32",$a);d.fill(0);d[0]=e[0];d[1]=e[1];d[3]=e[2];d[4]=e[3];d[5]=e[4];d[7]=e[5];d[10]=1;d[12]=e[6];d[13]=e[7];d[15]=e[8];6===e.length&&(d[12]=0,d[13]=0,d[15]=1);return $a}if(void 0===e.m11)throw "invalid matrix argument";d[0]=e.m11;d[1]=e.m21;d[2]=e.m31;d[3]=e.m41;d[4]=e.m12;d[5]=e.m22;d[6]=e.m32;d[7]=e.m42;d[8]=e.m13;d[9]=e.m23;d[10]=e.m33;d[11]=e.m43;d[12]=e.m14;d[13]=e.m24;d[14]=e.m34;d[15]=e.m44;return $a}function y(e,d){return v(e,"HEAPF32",d||Ta)}function N(e,
7813
- d,g,l){var t=Xb.toTypedArray();t[0]=e;t[1]=d;t[2]=g;t[3]=l;return Ta}function T(e){for(var d=new Float32Array(4),g=0;4>g;g++)d[g]=a.HEAPF32[e/4+g];return d}function S(e,d){return v(e,"HEAPF32",d||ja)}function sa(e,d){return v(e,"HEAPF32",d||Yb)}function ma(){for(var e=0,d=0;d<arguments.length-1;d+=2)e+=arguments[d]*arguments[d+1];return e}function gb(e,d,g){for(var l=Array(e.length),t=0;t<g;t++)for(var x=0;x<g;x++){for(var C=0,J=0;J<g;J++)C+=e[g*t+J]*d[g*J+x];l[t*g+x]=C;}return l}function hb(e,d){for(var g=
7814
- gb(d[0],d[1],e),l=2;l<d.length;)g=gb(g,d[l],e),l++;return g}a.Color=function(e,d,g,l){ void 0===l&&(l=1);return a.Color4f(n(e)/255,n(d)/255,n(g)/255,l)};a.ColorAsInt=function(e,d,g,l){ void 0===l&&(l=255);return (n(l)<<24|n(e)<<16|n(d)<<8|n(g)<<0&268435455)>>>0};a.Color4f=function(e,d,g,l){ void 0===l&&(l=1);return Float32Array.of(e,d,g,l)};Object.defineProperty(a,"TRANSPARENT",{get:function(){return a.Color4f(0,0,0,0)}});Object.defineProperty(a,"BLACK",{get:function(){return a.Color4f(0,0,0,1)}});Object.defineProperty(a,
7982
+ Uint32Array)return e;if(e instanceof Array&&e[0]instanceof Float32Array)return e.map(h)}function u(e){if(void 0===e)return 1;var d=parseFloat(e);return e&&-1!==e.indexOf("%")?d/100:d}function n(e){return Math.round(Math.max(0,Math.min(e||0,255)))}function p(e,d){d&&d._ck||a._free(e);}function v(e,d,g){if(!e||!e.length)return X;if(e&&e._ck)return e.byteOffset;var l=a[d].BYTES_PER_ELEMENT;g||(g=a._malloc(e.length*l));a[d].set(e,g/l);return g}function E(e){var d={te:X,count:e.length,colorType:a.ColorType.RGBA_F32};
7983
+ if(e instanceof Float32Array)d.te=v(e,"HEAPF32"),d.count=e.length/4;else if(e instanceof Uint32Array)d.te=v(e,"HEAPU32"),d.colorType=a.ColorType.RGBA_8888;else if(e instanceof Array){if(e&&e.length){for(var g=a._malloc(16*e.length),l=0,t=g/4,x=0;x<e.length;x++)for(var C=0;4>C;C++)a.HEAPF32[t+l]=e[x][C],l++;e=g;}else e=X;d.te=e;}else throw "Invalid argument to copyFlexibleColorArray, Not a color array "+typeof e;return d}function G(e){if(!e)return X;var d=Xb.toTypedArray();if(e.length){if(6===e.length||
7984
+ 9===e.length)return v(e,"HEAPF32",Oa),6===e.length&&a.HEAPF32.set(Hd,6+Oa/4),Oa;if(16===e.length)return d[0]=e[0],d[1]=e[1],d[2]=e[3],d[3]=e[4],d[4]=e[5],d[5]=e[7],d[6]=e[12],d[7]=e[13],d[8]=e[15],Oa;throw "invalid matrix size";}if(void 0===e.m11)throw "invalid matrix argument";d[0]=e.m11;d[1]=e.m21;d[2]=e.m41;d[3]=e.m12;d[4]=e.m22;d[5]=e.m42;d[6]=e.m14;d[7]=e.m24;d[8]=e.m44;return Oa}function L(e){if(!e)return X;var d=Yb.toTypedArray();if(e.length){if(16!==e.length&&6!==e.length&&9!==e.length)throw "invalid matrix size";
7985
+ if(16===e.length)return v(e,"HEAPF32",bb);d.fill(0);d[0]=e[0];d[1]=e[1];d[3]=e[2];d[4]=e[3];d[5]=e[4];d[7]=e[5];d[10]=1;d[12]=e[6];d[13]=e[7];d[15]=e[8];6===e.length&&(d[12]=0,d[13]=0,d[15]=1);return bb}if(void 0===e.m11)throw "invalid matrix argument";d[0]=e.m11;d[1]=e.m21;d[2]=e.m31;d[3]=e.m41;d[4]=e.m12;d[5]=e.m22;d[6]=e.m32;d[7]=e.m42;d[8]=e.m13;d[9]=e.m23;d[10]=e.m33;d[11]=e.m43;d[12]=e.m14;d[13]=e.m24;d[14]=e.m34;d[15]=e.m44;return bb}function y(e,d){return v(e,"HEAPF32",d||Va)}function M(e,
7986
+ d,g,l){var t=Zb.toTypedArray();t[0]=e;t[1]=d;t[2]=g;t[3]=l;return Va}function T(e){for(var d=new Float32Array(4),g=0;4>g;g++)d[g]=a.HEAPF32[e/4+g];return d}function S(e,d){return v(e,"HEAPF32",d||ka)}function sa(e,d){return v(e,"HEAPF32",d||$b)}function pa(){for(var e=0,d=0;d<arguments.length-1;d+=2)e+=arguments[d]*arguments[d+1];return e}function ib(e,d,g){for(var l=Array(e.length),t=0;t<g;t++)for(var x=0;x<g;x++){for(var C=0,K=0;K<g;K++)C+=e[g*t+K]*d[g*K+x];l[t*g+x]=C;}return l}function jb(e,d){for(var g=
7987
+ ib(d[0],d[1],e),l=2;l<d.length;)g=ib(g,d[l],e),l++;return g}a.Color=function(e,d,g,l){ void 0===l&&(l=1);return a.Color4f(n(e)/255,n(d)/255,n(g)/255,l)};a.ColorAsInt=function(e,d,g,l){ void 0===l&&(l=255);return (n(l)<<24|n(e)<<16|n(d)<<8|n(g)<<0&268435455)>>>0};a.Color4f=function(e,d,g,l){ void 0===l&&(l=1);return Float32Array.of(e,d,g,l)};Object.defineProperty(a,"TRANSPARENT",{get:function(){return a.Color4f(0,0,0,0)}});Object.defineProperty(a,"BLACK",{get:function(){return a.Color4f(0,0,0,1)}});Object.defineProperty(a,
7815
7988
  "WHITE",{get:function(){return a.Color4f(1,1,1,1)}});Object.defineProperty(a,"RED",{get:function(){return a.Color4f(1,0,0,1)}});Object.defineProperty(a,"GREEN",{get:function(){return a.Color4f(0,1,0,1)}});Object.defineProperty(a,"BLUE",{get:function(){return a.Color4f(0,0,1,1)}});Object.defineProperty(a,"YELLOW",{get:function(){return a.Color4f(1,1,0,1)}});Object.defineProperty(a,"CYAN",{get:function(){return a.Color4f(0,1,1,1)}});Object.defineProperty(a,"MAGENTA",{get:function(){return a.Color4f(1,
7816
7989
  0,1,1)}});a.getColorComponents=function(e){return [Math.floor(255*e[0]),Math.floor(255*e[1]),Math.floor(255*e[2]),e[3]]};a.parseColorString=function(e,d){e=e.toLowerCase();if(e.startsWith("#")){d=255;switch(e.length){case 9:d=parseInt(e.slice(7,9),16);case 7:var g=parseInt(e.slice(1,3),16);var l=parseInt(e.slice(3,5),16);var t=parseInt(e.slice(5,7),16);break;case 5:d=17*parseInt(e.slice(4,5),16);case 4:g=17*parseInt(e.slice(1,2),16),l=17*parseInt(e.slice(2,3),16),t=17*parseInt(e.slice(3,4),16);}return a.Color(g,
7817
- l,t,d/255)}return e.startsWith("rgba")?(e=e.slice(5,-1),e=e.split(","),a.Color(+e[0],+e[1],+e[2],u(e[3]))):e.startsWith("rgb")?(e=e.slice(4,-1),e=e.split(","),a.Color(+e[0],+e[1],+e[2],u(e[3]))):e.startsWith("gray(")||e.startsWith("hsl")||!d||(e=d[e],void 0===e)?a.BLACK:e};a.multiplyByAlpha=function(e,d){e=e.slice();e[3]=Math.max(0,Math.min(e[3]*d,1));return e};a.Malloc=function(e,d){var g=a._malloc(d*e.BYTES_PER_ELEMENT);return {_ck:true,length:d,byteOffset:g,qe:null,subarray:function(l,t){l=this.toTypedArray().subarray(l,
7818
- t);l._ck=true;return l},toTypedArray:function(){if(this.qe&&this.qe.length)return this.qe;this.qe=new e(a.HEAPU8.buffer,g,d);this.qe._ck=true;return this.qe}}};a.Free=function(e){a._free(e.byteOffset);e.byteOffset=W;e.toTypedArray=null;e.qe=null;};var Na=W,Vb,$a=W,Wb,Ta=W,Xb,Ba,ja=W,xc,Oa=W,yc,Zb=W,zc,$b=W,yb,ib=W,Ac,Yb=W,Bc,Cc=W,wd=Float32Array.of(0,0,1),W=0;a.onRuntimeInitialized=function(){function e(d,g,l,t,x,C,J){C||(C=4*t.width,t.colorType===a.ColorType.RGBA_F16?C*=2:t.colorType===a.ColorType.RGBA_F32&&
7819
- (C*=4));var P=C*t.height;var O=x?x.byteOffset:a._malloc(P);if(J?!d._readPixels(t,O,C,g,l,J):!d._readPixels(t,O,C,g,l))return x||a._free(O),null;if(x)return x.toTypedArray();switch(t.colorType){case a.ColorType.RGBA_8888:case a.ColorType.RGBA_F16:d=(new Uint8Array(a.HEAPU8.buffer,O,P)).slice();break;case a.ColorType.RGBA_F32:d=(new Float32Array(a.HEAPU8.buffer,O,P)).slice();break;default:return null}a._free(O);return d}Xb=a.Malloc(Float32Array,4);Ta=Xb.byteOffset;Wb=a.Malloc(Float32Array,16);$a=Wb.byteOffset;
7820
- Vb=a.Malloc(Float32Array,9);Na=Vb.byteOffset;Ac=a.Malloc(Float32Array,12);Yb=Ac.byteOffset;Bc=a.Malloc(Float32Array,12);Cc=Bc.byteOffset;Ba=a.Malloc(Float32Array,4);ja=Ba.byteOffset;xc=a.Malloc(Float32Array,4);Oa=xc.byteOffset;yc=a.Malloc(Float32Array,3);Zb=yc.byteOffset;zc=a.Malloc(Float32Array,3);$b=zc.byteOffset;yb=a.Malloc(Int32Array,4);ib=yb.byteOffset;a.ColorSpace.SRGB=a.ColorSpace._MakeSRGB();a.ColorSpace.DISPLAY_P3=a.ColorSpace._MakeDisplayP3();a.ColorSpace.ADOBE_RGB=a.ColorSpace._MakeAdobeRGB();
7821
- a.GlyphRunFlags={IsWhiteSpace:a._GlyphRunFlags_isWhiteSpace};a.Path.MakeFromCmds=function(d){var g=v(d,"HEAPF32"),l=a.Path._MakeFromCmds(g,d.length);p(g,d);return l};a.Path.MakeFromVerbsPointsWeights=function(d,g,l){var t=v(d,"HEAPU8"),x=v(g,"HEAPF32"),C=v(l,"HEAPF32"),J=a.Path._MakeFromVerbsPointsWeights(t,d.length,x,g.length,C,l&&l.length||0);p(t,d);p(x,g);p(C,l);return J};a.Path.prototype.addArc=function(d,g,l){d=S(d);this._addArc(d,g,l);return this};a.Path.prototype.addCircle=function(d,g,l,t){this._addCircle(d,
7990
+ l,t,d/255)}return e.startsWith("rgba")?(e=e.slice(5,-1),e=e.split(","),a.Color(+e[0],+e[1],+e[2],u(e[3]))):e.startsWith("rgb")?(e=e.slice(4,-1),e=e.split(","),a.Color(+e[0],+e[1],+e[2],u(e[3]))):e.startsWith("gray(")||e.startsWith("hsl")||!d||(e=d[e],void 0===e)?a.BLACK:e};a.multiplyByAlpha=function(e,d){e=e.slice();e[3]=Math.max(0,Math.min(e[3]*d,1));return e};a.Malloc=function(e,d){var g=a._malloc(d*e.BYTES_PER_ELEMENT);return {_ck:true,length:d,byteOffset:g,Je:null,subarray:function(l,t){l=this.toTypedArray().subarray(l,
7991
+ t);l._ck=true;return l},toTypedArray:function(){if(this.Je&&this.Je.length)return this.Je;this.Je=new e(a.HEAPU8.buffer,g,d);this.Je._ck=true;return this.Je}}};a.Free=function(e){a._free(e.byteOffset);e.byteOffset=X;e.toTypedArray=null;e.Je=null;};var Oa=X,Xb,bb=X,Yb,Va=X,Zb,Ca,ka=X,zc,Pa=X,Ac,ac=X,Bc,bc=X,Ab,kb=X,Cc,$b=X,Dc,Ec=X,Hd=Float32Array.of(0,0,1),X=0;a.onRuntimeInitialized=function(){function e(d,g,l,t,x,C,K){C||(C=4*t.width,t.colorType===a.ColorType.RGBA_F16?C*=2:t.colorType===a.ColorType.RGBA_F32&&
7992
+ (C*=4));var O=C*t.height;var P=x?x.byteOffset:a._malloc(O);if(K?!d._readPixels(t,P,C,g,l,K):!d._readPixels(t,P,C,g,l))return x||a._free(P),null;if(x)return x.toTypedArray();switch(t.colorType){case a.ColorType.RGBA_8888:case a.ColorType.RGBA_F16:d=(new Uint8Array(a.HEAPU8.buffer,P,O)).slice();break;case a.ColorType.RGBA_F32:d=(new Float32Array(a.HEAPU8.buffer,P,O)).slice();break;default:return null}a._free(P);return d}Zb=a.Malloc(Float32Array,4);Va=Zb.byteOffset;Yb=a.Malloc(Float32Array,16);bb=Yb.byteOffset;
7993
+ Xb=a.Malloc(Float32Array,9);Oa=Xb.byteOffset;Cc=a.Malloc(Float32Array,12);$b=Cc.byteOffset;Dc=a.Malloc(Float32Array,12);Ec=Dc.byteOffset;Ca=a.Malloc(Float32Array,4);ka=Ca.byteOffset;zc=a.Malloc(Float32Array,4);Pa=zc.byteOffset;Ac=a.Malloc(Float32Array,3);ac=Ac.byteOffset;Bc=a.Malloc(Float32Array,3);bc=Bc.byteOffset;Ab=a.Malloc(Int32Array,4);kb=Ab.byteOffset;a.ColorSpace.SRGB=a.ColorSpace._MakeSRGB();a.ColorSpace.DISPLAY_P3=a.ColorSpace._MakeDisplayP3();a.ColorSpace.ADOBE_RGB=a.ColorSpace._MakeAdobeRGB();
7994
+ a.GlyphRunFlags={IsWhiteSpace:a._GlyphRunFlags_isWhiteSpace};a.Path.MakeFromCmds=function(d){var g=v(d,"HEAPF32"),l=a.Path._MakeFromCmds(g,d.length);p(g,d);return l};a.Path.MakeFromVerbsPointsWeights=function(d,g,l){var t=v(d,"HEAPU8"),x=v(g,"HEAPF32"),C=v(l,"HEAPF32"),K=a.Path._MakeFromVerbsPointsWeights(t,d.length,x,g.length,C,l&&l.length||0);p(t,d);p(x,g);p(C,l);return K};a.Path.prototype.addArc=function(d,g,l){d=S(d);this._addArc(d,g,l);return this};a.Path.prototype.addCircle=function(d,g,l,t){this._addCircle(d,
7822
7995
  g,l,!!t);return this};a.Path.prototype.addOval=function(d,g,l){ void 0===l&&(l=1);d=S(d);this._addOval(d,!!g,l);return this};a.Path.prototype.addPath=function(){var d=Array.prototype.slice.call(arguments),g=d[0],l=false;"boolean"===typeof d[d.length-1]&&(l=d.pop());if(1===d.length)this._addPath(g,1,0,0,0,1,0,0,0,1,l);else if(2===d.length)d=d[1],this._addPath(g,d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1,l);else if(7===d.length||10===d.length)this._addPath(g,d[1],d[2],d[3],d[4],d[5],d[6],d[7]||
7823
7996
  0,d[8]||0,d[9]||1,l);else return null;return this};a.Path.prototype.addPoly=function(d,g){var l=v(d,"HEAPF32");this._addPoly(l,d.length/2,g);p(l,d);return this};a.Path.prototype.addRect=function(d,g){d=S(d);this._addRect(d,!!g);return this};a.Path.prototype.addRRect=function(d,g){d=sa(d);this._addRRect(d,!!g);return this};a.Path.prototype.addVerbsPointsWeights=function(d,g,l){var t=v(d,"HEAPU8"),x=v(g,"HEAPF32"),C=v(l,"HEAPF32");this._addVerbsPointsWeights(t,d.length,x,g.length,C,l&&l.length||0);
7824
- p(t,d);p(x,g);p(C,l);};a.Path.prototype.arc=function(d,g,l,t,x,C){d=a.LTRBRect(d-l,g-l,d+l,g+l);x=(x-t)/Math.PI*180-360*!!C;C=new a.Path;C.addArc(d,t/Math.PI*180,x);this.addPath(C,true);C.delete();return this};a.Path.prototype.arcToOval=function(d,g,l,t){d=S(d);this._arcToOval(d,g,l,t);return this};a.Path.prototype.arcToRotated=function(d,g,l,t,x,C,J){this._arcToRotated(d,g,l,!!t,!!x,C,J);return this};a.Path.prototype.arcToTangent=function(d,g,l,t,x){this._arcToTangent(d,g,l,t,x);return this};a.Path.prototype.close=
7825
- function(){this._close();return this};a.Path.prototype.conicTo=function(d,g,l,t,x){this._conicTo(d,g,l,t,x);return this};a.Path.prototype.computeTightBounds=function(d){this._computeTightBounds(ja);var g=Ba.toTypedArray();return d?(d.set(g),d):g.slice()};a.Path.prototype.cubicTo=function(d,g,l,t,x,C){this._cubicTo(d,g,l,t,x,C);return this};a.Path.prototype.dash=function(d,g,l){return this._dash(d,g,l)?this:null};a.Path.prototype.getBounds=function(d){this._getBounds(ja);var g=Ba.toTypedArray();return d?
7826
- (d.set(g),d):g.slice()};a.Path.prototype.lineTo=function(d,g){this._lineTo(d,g);return this};a.Path.prototype.moveTo=function(d,g){this._moveTo(d,g);return this};a.Path.prototype.offset=function(d,g){this._transform(1,0,d,0,1,g,0,0,1);return this};a.Path.prototype.quadTo=function(d,g,l,t){this._quadTo(d,g,l,t);return this};a.Path.prototype.rArcTo=function(d,g,l,t,x,C,J){this._rArcTo(d,g,l,t,x,C,J);return this};a.Path.prototype.rConicTo=function(d,g,l,t,x){this._rConicTo(d,g,l,t,x);return this};a.Path.prototype.rCubicTo=
7997
+ p(t,d);p(x,g);p(C,l);};a.Path.prototype.arc=function(d,g,l,t,x,C){d=a.LTRBRect(d-l,g-l,d+l,g+l);x=(x-t)/Math.PI*180-360*!!C;C=new a.Path;C.addArc(d,t/Math.PI*180,x);this.addPath(C,true);C.delete();return this};a.Path.prototype.arcToOval=function(d,g,l,t){d=S(d);this._arcToOval(d,g,l,t);return this};a.Path.prototype.arcToRotated=function(d,g,l,t,x,C,K){this._arcToRotated(d,g,l,!!t,!!x,C,K);return this};a.Path.prototype.arcToTangent=function(d,g,l,t,x){this._arcToTangent(d,g,l,t,x);return this};a.Path.prototype.close=
7998
+ function(){this._close();return this};a.Path.prototype.conicTo=function(d,g,l,t,x){this._conicTo(d,g,l,t,x);return this};a.Path.prototype.computeTightBounds=function(d){this._computeTightBounds(ka);var g=Ca.toTypedArray();return d?(d.set(g),d):g.slice()};a.Path.prototype.cubicTo=function(d,g,l,t,x,C){this._cubicTo(d,g,l,t,x,C);return this};a.Path.prototype.dash=function(d,g,l){return this._dash(d,g,l)?this:null};a.Path.prototype.getBounds=function(d){this._getBounds(ka);var g=Ca.toTypedArray();return d?
7999
+ (d.set(g),d):g.slice()};a.Path.prototype.lineTo=function(d,g){this._lineTo(d,g);return this};a.Path.prototype.moveTo=function(d,g){this._moveTo(d,g);return this};a.Path.prototype.offset=function(d,g){this._transform(1,0,d,0,1,g,0,0,1);return this};a.Path.prototype.quadTo=function(d,g,l,t){this._quadTo(d,g,l,t);return this};a.Path.prototype.rArcTo=function(d,g,l,t,x,C,K){this._rArcTo(d,g,l,t,x,C,K);return this};a.Path.prototype.rConicTo=function(d,g,l,t,x){this._rConicTo(d,g,l,t,x);return this};a.Path.prototype.rCubicTo=
7827
8000
  function(d,g,l,t,x,C){this._rCubicTo(d,g,l,t,x,C);return this};a.Path.prototype.rLineTo=function(d,g){this._rLineTo(d,g);return this};a.Path.prototype.rMoveTo=function(d,g){this._rMoveTo(d,g);return this};a.Path.prototype.rQuadTo=function(d,g,l,t){this._rQuadTo(d,g,l,t);return this};a.Path.prototype.stroke=function(d){d=d||{};d.width=d.width||1;d.miter_limit=d.miter_limit||4;d.cap=d.cap||a.StrokeCap.Butt;d.join=d.join||a.StrokeJoin.Miter;d.precision=d.precision||1;return this._stroke(d)?this:null};
7828
8001
  a.Path.prototype.transform=function(){if(1===arguments.length){var d=arguments[0];this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1);}else if(6===arguments.length||9===arguments.length)d=arguments,this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1);else throw "transform expected to take 1 or 9 arguments. Got "+arguments.length;return this};a.Path.prototype.trim=function(d,g,l){return this._trim(d,g,!!l)?this:null};a.Image.prototype.encodeToBytes=function(d,g){var l=
7829
- a.Te();d=d||a.ImageFormat.PNG;g=g||100;return l?this._encodeToBytes(d,g,l):this._encodeToBytes(d,g)};a.Image.prototype.makeShaderCubic=function(d,g,l,t,x){x=H(x);return this._makeShaderCubic(d,g,l,t,x)};a.Image.prototype.makeShaderOptions=function(d,g,l,t,x){x=H(x);return this._makeShaderOptions(d,g,l,t,x)};a.Image.prototype.readPixels=function(d,g,l,t,x){var C=a.Te();return e(this,d,g,l,t,x,C)};a.Canvas.prototype.clear=function(d){a.Md(this.Kd);d=y(d);this._clear(d);};a.Canvas.prototype.clipRRect=
7830
- function(d,g,l){a.Md(this.Kd);d=sa(d);this._clipRRect(d,g,l);};a.Canvas.prototype.clipRect=function(d,g,l){a.Md(this.Kd);d=S(d);this._clipRect(d,g,l);};a.Canvas.prototype.concat=function(d){a.Md(this.Kd);d=L(d);this._concat(d);};a.Canvas.prototype.drawArc=function(d,g,l,t,x){a.Md(this.Kd);d=S(d);this._drawArc(d,g,l,t,x);};a.Canvas.prototype.drawAtlas=function(d,g,l,t,x,C,J){if(d&&t&&g&&l&&g.length===l.length){a.Md(this.Kd);x||(x=a.BlendMode.SrcOver);var P=v(g,"HEAPF32"),O=v(l,"HEAPF32"),Y=l.length/4,
7831
- aa=v(m(C),"HEAPU32");if(J&&"B"in J&&"C"in J)this._drawAtlasCubic(d,O,P,aa,Y,x,J.B,J.C,t);else {let r=a.FilterMode.Linear,D=a.MipmapMode.None;J&&(r=J.filter,"mipmap"in J&&(D=J.mipmap));this._drawAtlasOptions(d,O,P,aa,Y,x,r,D,t);}p(P,g);p(O,l);p(aa,C);}};a.Canvas.prototype.drawCircle=function(d,g,l,t){a.Md(this.Kd);this._drawCircle(d,g,l,t);};a.Canvas.prototype.drawColor=function(d,g){a.Md(this.Kd);d=y(d);void 0!==g?this._drawColor(d,g):this._drawColor(d);};a.Canvas.prototype.drawColorInt=function(d,g){a.Md(this.Kd);
7832
- this._drawColorInt(d,g||a.BlendMode.SrcOver);};a.Canvas.prototype.drawColorComponents=function(d,g,l,t,x){a.Md(this.Kd);d=N(d,g,l,t);void 0!==x?this._drawColor(d,x):this._drawColor(d);};a.Canvas.prototype.drawDRRect=function(d,g,l){a.Md(this.Kd);d=sa(d,Yb);g=sa(g,Cc);this._drawDRRect(d,g,l);};a.Canvas.prototype.drawImage=function(d,g,l,t){a.Md(this.Kd);this._drawImage(d,g,l,t||null);};a.Canvas.prototype.drawImageCubic=function(d,g,l,t,x,C){a.Md(this.Kd);this._drawImageCubic(d,g,l,t,x,C||null);};a.Canvas.prototype.drawImageOptions=
7833
- function(d,g,l,t,x,C){a.Md(this.Kd);this._drawImageOptions(d,g,l,t,x,C||null);};a.Canvas.prototype.drawImageNine=function(d,g,l,t,x){a.Md(this.Kd);g=v(g,"HEAP32",ib);l=S(l);this._drawImageNine(d,g,l,t,x||null);};a.Canvas.prototype.drawImageRect=function(d,g,l,t,x){a.Md(this.Kd);S(g,ja);S(l,Oa);this._drawImageRect(d,ja,Oa,t,!!x);};a.Canvas.prototype.drawImageRectCubic=function(d,g,l,t,x,C){a.Md(this.Kd);S(g,ja);S(l,Oa);this._drawImageRectCubic(d,ja,Oa,t,x,C||null);};a.Canvas.prototype.drawImageRectOptions=
7834
- function(d,g,l,t,x,C){a.Md(this.Kd);S(g,ja);S(l,Oa);this._drawImageRectOptions(d,ja,Oa,t,x,C||null);};a.Canvas.prototype.drawLine=function(d,g,l,t,x){a.Md(this.Kd);this._drawLine(d,g,l,t,x);};a.Canvas.prototype.drawOval=function(d,g){a.Md(this.Kd);d=S(d);this._drawOval(d,g);};a.Canvas.prototype.drawPaint=function(d){a.Md(this.Kd);this._drawPaint(d);};a.Canvas.prototype.drawParagraph=function(d,g,l){a.Md(this.Kd);this._drawParagraph(d,g,l);};a.Canvas.prototype.drawPatch=function(d,g,l,t,x){if(24>d.length)throw "Need 12 cubic points";
7835
- if(g&&4>g.length)throw "Need 4 colors";if(l&&8>l.length)throw "Need 4 shader coordinates";a.Md(this.Kd);const C=v(d,"HEAPF32"),J=g?v(m(g),"HEAPU32"):W,P=l?v(l,"HEAPF32"):W;t||(t=a.BlendMode.Modulate);this._drawPatch(C,J,P,t,x);p(P,l);p(J,g);p(C,d);};a.Canvas.prototype.drawPath=function(d,g){a.Md(this.Kd);this._drawPath(d,g);};a.Canvas.prototype.drawPicture=function(d){a.Md(this.Kd);this._drawPicture(d);};a.Canvas.prototype.drawPoints=function(d,g,l){a.Md(this.Kd);var t=v(g,"HEAPF32");this._drawPoints(d,
7836
- t,g.length/2,l);p(t,g);};a.Canvas.prototype.drawRRect=function(d,g){a.Md(this.Kd);d=sa(d);this._drawRRect(d,g);};a.Canvas.prototype.drawRect=function(d,g){a.Md(this.Kd);d=S(d);this._drawRect(d,g);};a.Canvas.prototype.drawRect4f=function(d,g,l,t,x){a.Md(this.Kd);this._drawRect4f(d,g,l,t,x);};a.Canvas.prototype.drawShadow=function(d,g,l,t,x,C,J){a.Md(this.Kd);var P=v(x,"HEAPF32"),O=v(C,"HEAPF32");g=v(g,"HEAPF32",Zb);l=v(l,"HEAPF32",$b);this._drawShadow(d,g,l,t,P,O,J);p(P,x);p(O,C);};a.getShadowLocalBounds=
7837
- function(d,g,l,t,x,C,J){d=H(d);l=v(l,"HEAPF32",Zb);t=v(t,"HEAPF32",$b);if(!this._getShadowLocalBounds(d,g,l,t,x,C,ja))return null;g=Ba.toTypedArray();return J?(J.set(g),J):g.slice()};a.Canvas.prototype.drawTextBlob=function(d,g,l,t){a.Md(this.Kd);this._drawTextBlob(d,g,l,t);};a.Canvas.prototype.drawVertices=function(d,g,l){a.Md(this.Kd);this._drawVertices(d,g,l);};a.Canvas.prototype.getDeviceClipBounds=function(d){this._getDeviceClipBounds(ib);var g=yb.toTypedArray();d?d.set(g):d=g.slice();return d};
7838
- a.Canvas.prototype.getLocalToDevice=function(){this._getLocalToDevice($a);for(var d=$a,g=Array(16),l=0;16>l;l++)g[l]=a.HEAPF32[d/4+l];return g};a.Canvas.prototype.getTotalMatrix=function(){this._getTotalMatrix(Na);for(var d=Array(9),g=0;9>g;g++)d[g]=a.HEAPF32[Na/4+g];return d};a.Canvas.prototype.makeSurface=function(d){d=this._makeSurface(d);d.Kd=this.Kd;return d};a.Canvas.prototype.readPixels=function(d,g,l,t,x){a.Md(this.Kd);return e(this,d,g,l,t,x)};a.Canvas.prototype.saveLayer=function(d,g,l,
7839
- t){g=S(g);return this._saveLayer(d||null,g,l||null,t||0)};a.Canvas.prototype.writePixels=function(d,g,l,t,x,C,J,P){if(d.byteLength%(g*l))throw "pixels length must be a multiple of the srcWidth * srcHeight";a.Md(this.Kd);var O=d.byteLength/(g*l);C=C||a.AlphaType.Unpremul;J=J||a.ColorType.RGBA_8888;P=P||a.ColorSpace.SRGB;var Y=O*g;O=v(d,"HEAPU8");g=this._writePixels({width:g,height:l,colorType:J,alphaType:C,colorSpace:P},O,Y,t,x);p(O,d);return g};a.ColorFilter.MakeBlend=function(d,g,l){d=y(d);l=l||a.ColorSpace.SRGB;
7840
- return a.ColorFilter._MakeBlend(d,g,l)};a.ColorFilter.MakeMatrix=function(d){if(!d||20!==d.length)throw "invalid color matrix";var g=v(d,"HEAPF32"),l=a.ColorFilter._makeMatrix(g);p(g,d);return l};a.ContourMeasure.prototype.getPosTan=function(d,g){this._getPosTan(d,ja);d=Ba.toTypedArray();return g?(g.set(d),g):d.slice()};a.ImageFilter.prototype.getOutputBounds=function(d,g,l){d=S(d,ja);g=H(g);this._getOutputBounds(d,g,ib);g=yb.toTypedArray();return l?(l.set(g),l):g.slice()};a.ImageFilter.MakeDropShadow=
7841
- function(d,g,l,t,x,C){x=y(x,Ta);return a.ImageFilter._MakeDropShadow(d,g,l,t,x,C)};a.ImageFilter.MakeDropShadowOnly=function(d,g,l,t,x,C){x=y(x,Ta);return a.ImageFilter._MakeDropShadowOnly(d,g,l,t,x,C)};a.ImageFilter.MakeImage=function(d,g,l,t){l=S(l,ja);t=S(t,Oa);if("B"in g&&"C"in g)return a.ImageFilter._MakeImageCubic(d,g.B,g.C,l,t);const x=g.filter;let C=a.MipmapMode.None;"mipmap"in g&&(C=g.mipmap);return a.ImageFilter._MakeImageOptions(d,x,C,l,t)};a.ImageFilter.MakeMatrixTransform=function(d,
7842
- g,l){d=H(d);if("B"in g&&"C"in g)return a.ImageFilter._MakeMatrixTransformCubic(d,g.B,g.C,l);const t=g.filter;let x=a.MipmapMode.None;"mipmap"in g&&(x=g.mipmap);return a.ImageFilter._MakeMatrixTransformOptions(d,t,x,l)};a.Paint.prototype.getColor=function(){this._getColor(Ta);return T(Ta)};a.Paint.prototype.setColor=function(d,g){g=g||null;d=y(d);this._setColor(d,g);};a.Paint.prototype.setColorComponents=function(d,g,l,t,x){x=x||null;d=N(d,g,l,t);this._setColor(d,x);};a.Path.prototype.getPoint=function(d,
7843
- g){this._getPoint(d,ja);d=Ba.toTypedArray();return g?(g[0]=d[0],g[1]=d[1],g):d.slice(0,2)};a.Picture.prototype.makeShader=function(d,g,l,t,x){t=H(t);x=S(x);return this._makeShader(d,g,l,t,x)};a.Picture.prototype.cullRect=function(d){this._cullRect(ja);var g=Ba.toTypedArray();return d?(d.set(g),d):g.slice()};a.PictureRecorder.prototype.beginRecording=function(d,g){d=S(d);return this._beginRecording(d,!!g)};a.Surface.prototype.getCanvas=function(){var d=this._getCanvas();d.Kd=this.Kd;return d};a.Surface.prototype.makeImageSnapshot=
7844
- function(d){a.Md(this.Kd);d=v(d,"HEAP32",ib);return this._makeImageSnapshot(d)};a.Surface.prototype.makeSurface=function(d){a.Md(this.Kd);d=this._makeSurface(d);d.Kd=this.Kd;return d};a.Surface.prototype.Gf=function(d,g){this.He||(this.He=this.getCanvas());return requestAnimationFrame(function(){a.Md(this.Kd);d(this.He);this.flush(g);}.bind(this))};a.Surface.prototype.requestAnimationFrame||(a.Surface.prototype.requestAnimationFrame=a.Surface.prototype.Gf);a.Surface.prototype.Cf=function(d,g){this.He||
7845
- (this.He=this.getCanvas());requestAnimationFrame(function(){a.Md(this.Kd);d(this.He);this.flush(g);this.dispose();}.bind(this));};a.Surface.prototype.drawOnce||(a.Surface.prototype.drawOnce=a.Surface.prototype.Cf);a.PathEffect.MakeDash=function(d,g){g||(g=0);if(!d.length||1===d.length%2)throw "Intervals array must have even length";var l=v(d,"HEAPF32");g=a.PathEffect._MakeDash(l,d.length,g);p(l,d);return g};a.PathEffect.MakeLine2D=function(d,g){g=H(g);return a.PathEffect._MakeLine2D(d,g)};a.PathEffect.MakePath2D=
7846
- function(d,g){d=H(d);return a.PathEffect._MakePath2D(d,g)};a.Shader.MakeColor=function(d,g){g=g||null;d=y(d);return a.Shader._MakeColor(d,g)};a.Shader.Blend=a.Shader.MakeBlend;a.Shader.Color=a.Shader.MakeColor;a.Shader.MakeLinearGradient=function(d,g,l,t,x,C,J,P){P=P||null;var O=E(l),Y=v(t,"HEAPF32");J=J||0;C=H(C);var aa=Ba.toTypedArray();aa.set(d);aa.set(g,2);d=a.Shader._MakeLinearGradient(ja,O.be,O.colorType,Y,O.count,x,J,C,P);p(O.be,l);t&&p(Y,t);return d};a.Shader.MakeRadialGradient=function(d,
7847
- g,l,t,x,C,J,P){P=P||null;var O=E(l),Y=v(t,"HEAPF32");J=J||0;C=H(C);d=a.Shader._MakeRadialGradient(d[0],d[1],g,O.be,O.colorType,Y,O.count,x,J,C,P);p(O.be,l);t&&p(Y,t);return d};a.Shader.MakeSweepGradient=function(d,g,l,t,x,C,J,P,O,Y){Y=Y||null;var aa=E(l),r=v(t,"HEAPF32");J=J||0;P=P||0;O=O||360;C=H(C);d=a.Shader._MakeSweepGradient(d,g,aa.be,aa.colorType,r,aa.count,x,P,O,J,C,Y);p(aa.be,l);t&&p(r,t);return d};a.Shader.MakeTwoPointConicalGradient=function(d,g,l,t,x,C,J,P,O,Y){Y=Y||null;var aa=E(x),r=
7848
- v(C,"HEAPF32");O=O||0;P=H(P);var D=Ba.toTypedArray();D.set(d);D.set(l,2);d=a.Shader._MakeTwoPointConicalGradient(ja,g,t,aa.be,aa.colorType,r,aa.count,J,O,P,Y);p(aa.be,x);C&&p(r,C);return d};a.Vertices.prototype.bounds=function(d){this._bounds(ja);var g=Ba.toTypedArray();return d?(d.set(g),d):g.slice()};a.Td&&a.Td.forEach(function(d){d();});};a.computeTonalColors=function(e){var d=v(e.ambient,"HEAPF32"),g=v(e.spot,"HEAPF32");this._computeTonalColors(d,g);var l={ambient:T(d),spot:T(g)};p(d,e.ambient);
7849
- p(g,e.spot);return l};a.LTRBRect=function(e,d,g,l){return Float32Array.of(e,d,g,l)};a.XYWHRect=function(e,d,g,l){return Float32Array.of(e,d,e+g,d+l)};a.LTRBiRect=function(e,d,g,l){return Int32Array.of(e,d,g,l)};a.XYWHiRect=function(e,d,g,l){return Int32Array.of(e,d,e+g,d+l)};a.RRectXY=function(e,d,g){return Float32Array.of(e[0],e[1],e[2],e[3],d,g,d,g,d,g,d,g)};a.MakeAnimatedImageFromEncoded=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return (e=a._decodeAnimatedImage(d,
7850
- e.byteLength))?e:null};a.MakeImageFromEncoded=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return (e=a._decodeImage(d,e.byteLength))?e:null};var jb=null;a.MakeImageFromCanvasImageSource=function(e){var d=e.width,g=e.height;jb||(jb=document.createElement("canvas"));jb.width=d;jb.height=g;var l=jb.getContext("2d",{willReadFrequently:true});l.drawImage(e,0,0);e=l.getImageData(0,0,d,g);return a.MakeImage({width:d,height:g,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,
7851
- colorSpace:a.ColorSpace.SRGB},e.data,4*d)};a.MakeImage=function(e,d,g){var l=a._malloc(d.length);a.HEAPU8.set(d,l);return a._MakeImage(e,l,d.length,g)};a.MakeVertices=function(e,d,g,l,t,x){var C=t&&t.length||0,J=0;g&&g.length&&(J|=1);l&&l.length&&(J|=2);void 0===x||x||(J|=4);e=new a._VerticesBuilder(e,d.length/2,C,J);v(d,"HEAPF32",e.positions());e.texCoords()&&v(g,"HEAPF32",e.texCoords());e.colors()&&v(m(l),"HEAPU32",e.colors());e.indices()&&v(t,"HEAPU16",e.indices());return e.detach()};a.Matrix=
7852
- {};a.Matrix.identity=function(){return c(3)};a.Matrix.invert=function(e){var d=e[0]*e[4]*e[8]+e[1]*e[5]*e[6]+e[2]*e[3]*e[7]-e[2]*e[4]*e[6]-e[1]*e[3]*e[8]-e[0]*e[5]*e[7];return d?[(e[4]*e[8]-e[5]*e[7])/d,(e[2]*e[7]-e[1]*e[8])/d,(e[1]*e[5]-e[2]*e[4])/d,(e[5]*e[6]-e[3]*e[8])/d,(e[0]*e[8]-e[2]*e[6])/d,(e[2]*e[3]-e[0]*e[5])/d,(e[3]*e[7]-e[4]*e[6])/d,(e[1]*e[6]-e[0]*e[7])/d,(e[0]*e[4]-e[1]*e[3])/d]:null};a.Matrix.mapPoints=function(e,d){for(var g=0;g<d.length;g+=2){var l=d[g],t=d[g+1],x=e[6]*l+e[7]*t+e[8],
7853
- C=e[3]*l+e[4]*t+e[5];d[g]=(e[0]*l+e[1]*t+e[2])/x;d[g+1]=C/x;}return d};a.Matrix.multiply=function(){return hb(3,arguments)};a.Matrix.rotated=function(e,d,g){d=d||0;g=g||0;var l=Math.sin(e);e=Math.cos(e);return [e,-l,ma(l,g,1-e,d),l,e,ma(-l,d,1-e,g),0,0,1]};a.Matrix.scaled=function(e,d,g,l){g=g||0;l=l||0;var t=b([e,d],c(3),3,0,1);return b([g-e*g,l-d*l],t,3,2,0)};a.Matrix.skewed=function(e,d,g,l){g=g||0;l=l||0;var t=b([e,d],c(3),3,1,-1);return b([-e*g,-d*l],t,3,2,0)};a.Matrix.translated=function(e,d){return b(arguments,
7854
- c(3),3,2,0)};a.Vector={};a.Vector.dot=function(e,d){return e.map(function(g,l){return g*d[l]}).reduce(function(g,l){return g+l})};a.Vector.lengthSquared=function(e){return a.Vector.dot(e,e)};a.Vector.length=function(e){return Math.sqrt(a.Vector.lengthSquared(e))};a.Vector.mulScalar=function(e,d){return e.map(function(g){return g*d})};a.Vector.add=function(e,d){return e.map(function(g,l){return g+d[l]})};a.Vector.sub=function(e,d){return e.map(function(g,l){return g-d[l]})};a.Vector.dist=function(e,
7855
- d){return a.Vector.length(a.Vector.sub(e,d))};a.Vector.normalize=function(e){return a.Vector.mulScalar(e,1/a.Vector.length(e))};a.Vector.cross=function(e,d){return [e[1]*d[2]-e[2]*d[1],e[2]*d[0]-e[0]*d[2],e[0]*d[1]-e[1]*d[0]]};a.M44={};a.M44.identity=function(){return c(4)};a.M44.translated=function(e){return b(e,c(4),4,3,0)};a.M44.scaled=function(e){return b(e,c(4),4,0,1)};a.M44.rotated=function(e,d){return a.M44.rotatedUnitSinCos(a.Vector.normalize(e),Math.sin(d),Math.cos(d))};a.M44.rotatedUnitSinCos=
7856
- function(e,d,g){var l=e[0],t=e[1];e=e[2];var x=1-g;return [x*l*l+g,x*l*t-d*e,x*l*e+d*t,0,x*l*t+d*e,x*t*t+g,x*t*e-d*l,0,x*l*e-d*t,x*t*e+d*l,x*e*e+g,0,0,0,0,1]};a.M44.lookat=function(e,d,g){d=a.Vector.normalize(a.Vector.sub(d,e));g=a.Vector.normalize(g);g=a.Vector.normalize(a.Vector.cross(d,g));var l=a.M44.identity();b(g,l,4,0,0);b(a.Vector.cross(g,d),l,4,1,0);b(a.Vector.mulScalar(d,-1),l,4,2,0);b(e,l,4,3,0);e=a.M44.invert(l);return null===e?a.M44.identity():e};a.M44.perspective=function(e,d,g){var l=
7857
- 1/(d-e);g/=2;g=Math.cos(g)/Math.sin(g);return [g,0,0,0,0,g,0,0,0,0,(d+e)*l,2*d*e*l,0,0,-1,1]};a.M44.rc=function(e,d,g){return e[4*d+g]};a.M44.multiply=function(){return hb(4,arguments)};a.M44.invert=function(e){var d=e[0],g=e[4],l=e[8],t=e[12],x=e[1],C=e[5],J=e[9],P=e[13],O=e[2],Y=e[6],aa=e[10],r=e[14],D=e[3],U=e[7],ca=e[11];e=e[15];var ka=d*C-g*x,va=d*J-l*x,wa=d*P-t*x,na=g*J-l*C,G=g*P-t*C,k=l*P-t*J,q=O*U-Y*D,z=O*ca-aa*D,B=O*e-r*D,F=Y*ca-aa*U,I=Y*e-r*U,M=aa*e-r*ca,da=ka*M-va*I+wa*F+na*B-G*z+k*q,ea=
7858
- 1/da;if(0===da||Infinity===ea)return null;ka*=ea;va*=ea;wa*=ea;na*=ea;G*=ea;k*=ea;q*=ea;z*=ea;B*=ea;F*=ea;I*=ea;M*=ea;d=[C*M-J*I+P*F,J*B-x*M-P*z,x*I-C*B+P*q,C*z-x*F-J*q,l*I-g*M-t*F,d*M-l*B+t*z,g*B-d*I-t*q,d*F-g*z+l*q,U*k-ca*G+e*na,ca*wa-D*k-e*va,D*G-U*wa+e*ka,U*va-D*na-ca*ka,aa*G-Y*k-r*na,O*k-aa*wa+r*va,Y*wa-O*G-r*ka,O*na-Y*va+aa*ka];return d.every(function(Ia){return !isNaN(Ia)&&Infinity!==Ia&&-Infinity!==Ia})?d:null};a.M44.transpose=function(e){return [e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],
7859
- e[6],e[10],e[14],e[3],e[7],e[11],e[15]]};a.M44.mustInvert=function(e){e=a.M44.invert(e);if(null===e)throw "Matrix not invertible";return e};a.M44.setupCamera=function(e,d,g){var l=a.M44.lookat(g.eye,g.coa,g.up);g=a.M44.perspective(g.near,g.far,g.angle);d=[(e[2]-e[0])/2,(e[3]-e[1])/2,d];e=a.M44.multiply(a.M44.translated([(e[0]+e[2])/2,(e[1]+e[3])/2,0]),a.M44.scaled(d));return a.M44.multiply(e,g,l,a.M44.mustInvert(e))};a.ColorMatrix={};a.ColorMatrix.identity=function(){var e=new Float32Array(20);e[0]=
7860
- 1;e[6]=1;e[12]=1;e[18]=1;return e};a.ColorMatrix.scaled=function(e,d,g,l){var t=new Float32Array(20);t[0]=e;t[6]=d;t[12]=g;t[18]=l;return t};var xd=[[6,7,11,12],[0,10,2,12],[0,1,5,6]];a.ColorMatrix.rotated=function(e,d,g){var l=a.ColorMatrix.identity();e=xd[e];l[e[0]]=g;l[e[1]]=d;l[e[2]]=-d;l[e[3]]=g;return l};a.ColorMatrix.postTranslate=function(e,d,g,l,t){e[4]+=d;e[9]+=g;e[14]+=l;e[19]+=t;return e};a.ColorMatrix.concat=function(e,d){for(var g=new Float32Array(20),l=0,t=0;20>t;t+=5){for(var x=0;4>
7861
- x;x++)g[l++]=e[t]*d[x]+e[t+1]*d[x+5]+e[t+2]*d[x+10]+e[t+3]*d[x+15];g[l++]=e[t]*d[4]+e[t+1]*d[9]+e[t+2]*d[14]+e[t+3]*d[19]+e[t+4];}return g};(function(e){e.Td=e.Td||[];e.Td.push(function(){function d(r){r&&(r.dir=0===r.dir?e.TextDirection.RTL:e.TextDirection.LTR);return r}function g(r){if(!r||!r.length)return [];for(var D=[],U=0;U<r.length;U+=5){var ca=e.LTRBRect(r[U],r[U+1],r[U+2],r[U+3]),ka=e.TextDirection.LTR;0===r[U+4]&&(ka=e.TextDirection.RTL);D.push({rect:ca,dir:ka});}e._free(r.byteOffset);return D}
7862
- function l(r){r=r||{};void 0===r.weight&&(r.weight=e.FontWeight.Normal);r.width=r.width||e.FontWidth.Normal;r.slant=r.slant||e.FontSlant.Upright;return r}function t(r){if(!r||!r.length)return W;for(var D=[],U=0;U<r.length;U++){var ca=x(r[U]);D.push(ca);}return v(D,"HEAPU32")}function x(r){if(P[r])return P[r];var D=qa(r)+1,U=e._malloc(D);ra(r,K,U,D);return P[r]=U}function C(r){r._colorPtr=y(r.color);r._foregroundColorPtr=W;r._backgroundColorPtr=W;r._decorationColorPtr=W;r.foregroundColor&&(r._foregroundColorPtr=
7863
- y(r.foregroundColor,O));r.backgroundColor&&(r._backgroundColorPtr=y(r.backgroundColor,Y));r.decorationColor&&(r._decorationColorPtr=y(r.decorationColor,aa));Array.isArray(r.fontFamilies)&&r.fontFamilies.length?(r._fontFamiliesPtr=t(r.fontFamilies),r._fontFamiliesLen=r.fontFamilies.length):(r._fontFamiliesPtr=W,r._fontFamiliesLen=0);if(r.locale){var D=r.locale;r._localePtr=x(D);r._localeLen=qa(D)+1;}else r._localePtr=W,r._localeLen=0;if(Array.isArray(r.shadows)&&r.shadows.length){D=r.shadows;var U=
7864
- D.map(function(G){return G.color||e.BLACK}),ca=D.map(function(G){return G.blurRadius||0});r._shadowLen=D.length;for(var ka=e._malloc(8*D.length),va=ka/4,wa=0;wa<D.length;wa++){var na=D[wa].offset||[0,0];e.HEAPF32[va]=na[0];e.HEAPF32[va+1]=na[1];va+=2;}r._shadowColorsPtr=E(U).be;r._shadowOffsetsPtr=ka;r._shadowBlurRadiiPtr=v(ca,"HEAPF32");}else r._shadowLen=0,r._shadowColorsPtr=W,r._shadowOffsetsPtr=W,r._shadowBlurRadiiPtr=W;Array.isArray(r.fontFeatures)&&r.fontFeatures.length?(D=r.fontFeatures,U=D.map(function(G){return G.name}),
7865
- ca=D.map(function(G){return G.value}),r._fontFeatureLen=D.length,r._fontFeatureNamesPtr=t(U),r._fontFeatureValuesPtr=v(ca,"HEAPU32")):(r._fontFeatureLen=0,r._fontFeatureNamesPtr=W,r._fontFeatureValuesPtr=W);Array.isArray(r.fontVariations)&&r.fontVariations.length?(D=r.fontVariations,U=D.map(function(G){return G.axis}),ca=D.map(function(G){return G.value}),r._fontVariationLen=D.length,r._fontVariationAxesPtr=t(U),r._fontVariationValuesPtr=v(ca,"HEAPF32")):(r._fontVariationLen=0,r._fontVariationAxesPtr=
7866
- W,r._fontVariationValuesPtr=W);}function J(r){e._free(r._fontFamiliesPtr);e._free(r._shadowColorsPtr);e._free(r._shadowOffsetsPtr);e._free(r._shadowBlurRadiiPtr);e._free(r._fontFeatureNamesPtr);e._free(r._fontFeatureValuesPtr);e._free(r._fontVariationAxesPtr);e._free(r._fontVariationValuesPtr);}e.Paragraph.prototype.getRectsForRange=function(r,D,U,ca){r=this._getRectsForRange(r,D,U,ca);return g(r)};e.Paragraph.prototype.getRectsForPlaceholders=function(){var r=this._getRectsForPlaceholders();return g(r)};
7867
- e.Paragraph.prototype.getGlyphInfoAt=function(r){return d(this._getGlyphInfoAt(r))};e.Paragraph.prototype.getClosestGlyphInfoAtCoordinate=function(r,D){return d(this._getClosestGlyphInfoAtCoordinate(r,D))};e.TypefaceFontProvider.prototype.registerFont=function(r,D){r=e.Typeface.MakeFreeTypeFaceFromData(r);if(!r)return null;D=x(D);this._registerFont(r,D);};e.ParagraphStyle=function(r){r.disableHinting=r.disableHinting||false;if(r.ellipsis){var D=r.ellipsis;r._ellipsisPtr=x(D);r._ellipsisLen=qa(D)+1;}else r._ellipsisPtr=
7868
- W,r._ellipsisLen=0;null==r.heightMultiplier&&(r.heightMultiplier=-1);r.maxLines=r.maxLines||0;r.replaceTabCharacters=r.replaceTabCharacters||false;D=(D=r.strutStyle)||{};D.strutEnabled=D.strutEnabled||false;D.strutEnabled&&Array.isArray(D.fontFamilies)&&D.fontFamilies.length?(D._fontFamiliesPtr=t(D.fontFamilies),D._fontFamiliesLen=D.fontFamilies.length):(D._fontFamiliesPtr=W,D._fontFamiliesLen=0);D.fontStyle=l(D.fontStyle);null==D.fontSize&&(D.fontSize=-1);null==D.heightMultiplier&&(D.heightMultiplier=
7869
- -1);D.halfLeading=D.halfLeading||false;D.leading=D.leading||0;D.forceStrutHeight=D.forceStrutHeight||false;r.strutStyle=D;r.textAlign=r.textAlign||e.TextAlign.Start;r.textDirection=r.textDirection||e.TextDirection.LTR;r.textHeightBehavior=r.textHeightBehavior||e.TextHeightBehavior.All;r.textStyle=e.TextStyle(r.textStyle);r.applyRoundingHack=false!==r.applyRoundingHack;return r};e.TextStyle=function(r){r.color||(r.color=e.BLACK);r.decoration=r.decoration||0;r.decorationThickness=r.decorationThickness||0;r.decorationStyle=
7870
- r.decorationStyle||e.DecorationStyle.Solid;r.textBaseline=r.textBaseline||e.TextBaseline.Alphabetic;null==r.fontSize&&(r.fontSize=-1);r.letterSpacing=r.letterSpacing||0;r.wordSpacing=r.wordSpacing||0;null==r.heightMultiplier&&(r.heightMultiplier=-1);r.halfLeading=r.halfLeading||false;r.fontStyle=l(r.fontStyle);return r};var P={},O=e._malloc(16),Y=e._malloc(16),aa=e._malloc(16);e.ParagraphBuilder.Make=function(r,D){C(r.textStyle);D=e.ParagraphBuilder._Make(r,D);J(r.textStyle);return D};e.ParagraphBuilder.MakeFromFontProvider=
7871
- function(r,D){C(r.textStyle);D=e.ParagraphBuilder._MakeFromFontProvider(r,D);J(r.textStyle);return D};e.ParagraphBuilder.MakeFromFontCollection=function(r,D){C(r.textStyle);D=e.ParagraphBuilder._MakeFromFontCollection(r,D);J(r.textStyle);return D};e.ParagraphBuilder.ShapeText=function(r,D,U){let ca=0;for(const ka of D)ca+=ka.length;if(ca!==r.length)throw "Accumulated block lengths must equal text.length";return e.ParagraphBuilder._ShapeText(r,D,U)};e.ParagraphBuilder.prototype.pushStyle=function(r){C(r);
7872
- this._pushStyle(r);J(r);};e.ParagraphBuilder.prototype.pushPaintStyle=function(r,D,U){C(r);this._pushPaintStyle(r,D,U);J(r);};e.ParagraphBuilder.prototype.addPlaceholder=function(r,D,U,ca,ka){U=U||e.PlaceholderAlignment.Baseline;ca=ca||e.TextBaseline.Alphabetic;this._addPlaceholder(r||0,D||0,U,ca,ka||0);};e.ParagraphBuilder.prototype.setWordsUtf8=function(r){var D=v(r,"HEAPU32");this._setWordsUtf8(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setWordsUtf16=function(r){var D=v(r,"HEAPU32");this._setWordsUtf16(D,
7873
- r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setGraphemeBreaksUtf8=function(r){var D=v(r,"HEAPU32");this._setGraphemeBreaksUtf8(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setGraphemeBreaksUtf16=function(r){var D=v(r,"HEAPU32");this._setGraphemeBreaksUtf16(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setLineBreaksUtf8=function(r){var D=v(r,"HEAPU32");this._setLineBreaksUtf8(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setLineBreaksUtf16=function(r){var D=v(r,
7874
- "HEAPU32");this._setLineBreaksUtf16(D,r&&r.length||0);p(D,r);};});})(w);a.Td=a.Td||[];a.Td.push(function(){a.Path.prototype.op=function(e,d){return this._op(e,d)?this:null};a.Path.prototype.simplify=function(){return this._simplify()?this:null};});a.Td=a.Td||[];a.Td.push(function(){a.Canvas.prototype.drawText=function(e,d,g,l,t){var x=qa(e),C=a._malloc(x+1);ra(e,K,C,x+1);this._drawSimpleText(C,x,d,g,t,l);a._free(C);};a.Canvas.prototype.drawGlyphs=function(e,d,g,l,t,x){if(!(2*e.length<=d.length))throw "Not enough positions for the array of gyphs";
7875
- a.Md(this.Kd);const C=v(e,"HEAPU16"),J=v(d,"HEAPF32");this._drawGlyphs(e.length,C,J,g,l,t,x);p(J,d);p(C,e);};a.Font.prototype.getGlyphBounds=function(e,d,g){var l=v(e,"HEAPU16"),t=a._malloc(16*e.length);this._getGlyphWidthBounds(l,e.length,W,t,d||null);d=new Float32Array(a.HEAPU8.buffer,t,4*e.length);p(l,e);if(g)return g.set(d),a._free(t),g;e=Float32Array.from(d);a._free(t);return e};a.Font.prototype.getGlyphIDs=function(e,d,g){d||(d=e.length);var l=qa(e)+1,t=a._malloc(l);ra(e,K,t,l);e=a._malloc(2*
7876
- d);d=this._getGlyphIDs(t,l-1,d,e);a._free(t);if(0>d)return a._free(e),null;t=new Uint16Array(a.HEAPU8.buffer,e,d);if(g)return g.set(t),a._free(e),g;g=Uint16Array.from(t);a._free(e);return g};a.Font.prototype.getGlyphIntercepts=function(e,d,g,l){var t=v(e,"HEAPU16"),x=v(d,"HEAPF32");return this._getGlyphIntercepts(t,e.length,!(e&&e._ck),x,d.length,!(d&&d._ck),g,l)};a.Font.prototype.getGlyphWidths=function(e,d,g){var l=v(e,"HEAPU16"),t=a._malloc(4*e.length);this._getGlyphWidthBounds(l,e.length,t,W,
7877
- d||null);d=new Float32Array(a.HEAPU8.buffer,t,e.length);p(l,e);if(g)return g.set(d),a._free(t),g;e=Float32Array.from(d);a._free(t);return e};a.FontMgr.FromData=function(){if(!arguments.length)return null;var e=arguments;1===e.length&&Array.isArray(e[0])&&(e=arguments[0]);if(!e.length)return null;for(var d=[],g=[],l=0;l<e.length;l++){var t=new Uint8Array(e[l]),x=v(t,"HEAPU8");d.push(x);g.push(t.byteLength);}d=v(d,"HEAPU32");g=v(g,"HEAPU32");e=a.FontMgr._fromData(d,g,e.length);a._free(d);a._free(g);
7878
- return e};a.Typeface.MakeFreeTypeFaceFromData=function(e){e=new Uint8Array(e);var d=v(e,"HEAPU8");return (e=a.Typeface._MakeFreeTypeFaceFromData(d,e.byteLength))?e:null};a.Typeface.prototype.getGlyphIDs=function(e,d,g){d||(d=e.length);var l=qa(e)+1,t=a._malloc(l);ra(e,K,t,l);e=a._malloc(2*d);d=this._getGlyphIDs(t,l-1,d,e);a._free(t);if(0>d)return a._free(e),null;t=new Uint16Array(a.HEAPU8.buffer,e,d);if(g)return g.set(t),a._free(e),g;g=Uint16Array.from(t);a._free(e);return g};a.TextBlob.MakeOnPath=
7879
- function(e,d,g,l){if(e&&e.length&&d&&d.countPoints()){if(1===d.countPoints())return this.MakeFromText(e,g);l||(l=0);var t=g.getGlyphIDs(e);t=g.getGlyphWidths(t);var x=[];d=new a.ContourMeasureIter(d,false,1);for(var C=d.next(),J=new Float32Array(4),P=0;P<e.length&&C;P++){var O=t[P];l+=O/2;if(l>C.length()){C.delete();C=d.next();if(!C){e=e.substring(0,P);break}l=O/2;}C.getPosTan(l,J);var Y=J[2],aa=J[3];x.push(Y,aa,J[0]-O/2*Y,J[1]-O/2*aa);l+=O/2;}e=this.MakeFromRSXform(e,x,g);C&&C.delete();d.delete();return e}};
7880
- a.TextBlob.MakeFromRSXform=function(e,d,g){var l=qa(e)+1,t=a._malloc(l);ra(e,K,t,l);e=v(d,"HEAPF32");g=a.TextBlob._MakeFromRSXform(t,l-1,e,g);a._free(t);return g?g:null};a.TextBlob.MakeFromRSXformGlyphs=function(e,d,g){var l=v(e,"HEAPU16");d=v(d,"HEAPF32");g=a.TextBlob._MakeFromRSXformGlyphs(l,2*e.length,d,g);p(l,e);return g?g:null};a.TextBlob.MakeFromGlyphs=function(e,d){var g=v(e,"HEAPU16");d=a.TextBlob._MakeFromGlyphs(g,2*e.length,d);p(g,e);return d?d:null};a.TextBlob.MakeFromText=function(e,d){var g=
7881
- qa(e)+1,l=a._malloc(g);ra(e,K,l,g);e=a.TextBlob._MakeFromText(l,g-1,d);a._free(l);return e?e:null};a.MallocGlyphIDs=function(e){return a.Malloc(Uint16Array,e)};});a.Td=a.Td||[];a.Td.push(function(){a.MakePicture=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return (e=a._MakePicture(d,e.byteLength))?e:null};});a.Td=a.Td||[];a.Td.push(function(){a.RuntimeEffect.Make=function(e,d){return a.RuntimeEffect._Make(e,{onError:d||function(g){console.log("RuntimeEffect error",
7882
- g);}})};a.RuntimeEffect.MakeForBlender=function(e,d){return a.RuntimeEffect._MakeForBlender(e,{onError:d||function(g){console.log("RuntimeEffect error",g);}})};a.RuntimeEffect.prototype.makeShader=function(e,d){var g=!e._ck,l=v(e,"HEAPF32");d=H(d);return this._makeShader(l,4*e.length,g,d)};a.RuntimeEffect.prototype.makeShaderWithChildren=function(e,d,g){var l=!e._ck,t=v(e,"HEAPF32");g=H(g);for(var x=[],C=0;C<d.length;C++)x.push(d[C].Jd.Rd);d=v(x,"HEAPU32");return this._makeShaderWithChildren(t,4*e.length,
7883
- l,d,x.length,g)};a.RuntimeEffect.prototype.makeBlender=function(e){var d=!e._ck,g=v(e,"HEAPF32");return this._makeBlender(g,4*e.length,d)};});(function(){function e(G){for(var k=0;k<G.length;k++)if(void 0!==G[k]&&!Number.isFinite(G[k]))return false;return true}function d(G){var k=a.getColorComponents(G);G=k[0];var q=k[1],z=k[2];k=k[3];if(1===k)return G=G.toString(16).toLowerCase(),q=q.toString(16).toLowerCase(),z=z.toString(16).toLowerCase(),G=1===G.length?"0"+G:G,q=1===q.length?"0"+q:q,z=1===z.length?"0"+
7884
- z:z,"#"+G+q+z;k=0===k||1===k?k:k.toFixed(8);return "rgba("+G+", "+q+", "+z+", "+k+")"}function g(G){return a.parseColorString(G,va)}function l(G){G=wa.exec(G);if(!G)return null;var k=parseFloat(G[4]),q=16;switch(G[5]){case "em":case "rem":q=16*k;break;case "pt":q=4*k/3;break;case "px":q=k;break;case "pc":q=16*k;break;case "in":q=96*k;break;case "cm":q=96*k/2.54;break;case "mm":q=96/25.4*k;break;case "q":q=96/25.4/4*k;break;case "%":q=16/75*k;}return {style:G[1],variant:G[2],weight:G[3],sizePx:q,family:G[6].trim()}}
7885
- function t(G){this.Ld=G;this.Od=new a.Paint;this.Od.setAntiAlias(true);this.Od.setStrokeMiter(10);this.Od.setStrokeCap(a.StrokeCap.Butt);this.Od.setStrokeJoin(a.StrokeJoin.Miter);this.Re="10px monospace";this.me=new a.Font(null,10);this.me.setSubpixel(true);this.ae=this.ge=a.BLACK;this.ve=0;this.Je=a.TRANSPARENT;this.xe=this.we=0;this.Ke=this.ie=1;this.Ie=0;this.ue=[];this.Nd=a.BlendMode.SrcOver;this.Od.setStrokeWidth(this.Ke);this.Od.setBlendMode(this.Nd);this.Qd=new a.Path;this.Sd=a.Matrix.identity();
7886
- this.lf=[];this.Be=[];this.le=function(){this.Qd.delete();this.Od.delete();this.me.delete();this.Be.forEach(function(k){k.le();});};Object.defineProperty(this,"currentTransform",{enumerable:true,get:function(){return {a:this.Sd[0],c:this.Sd[1],e:this.Sd[2],b:this.Sd[3],d:this.Sd[4],f:this.Sd[5]}},set:function(k){k.a&&this.setTransform(k.a,k.b,k.c,k.d,k.e,k.f);}});Object.defineProperty(this,"fillStyle",{enumerable:true,get:function(){return f(this.ae)?d(this.ae):this.ae},set:function(k){"string"===typeof k?
7887
- this.ae=g(k):k.te&&(this.ae=k);}});Object.defineProperty(this,"font",{enumerable:true,get:function(){return this.Re},set:function(k){var q=l(k),z=q.family;q.typeface=na[z]?na[z][(q.style||"normal")+"|"+(q.variant||"normal")+"|"+(q.weight||"normal")]||na[z]["*"]:null;q&&(this.me.setSize(q.sizePx),this.me.setTypeface(q.typeface),this.Re=k);}});Object.defineProperty(this,"globalAlpha",{enumerable:true,get:function(){return this.ie},set:function(k){!isFinite(k)||0>k||1<k||(this.ie=k);}});Object.defineProperty(this,
7888
- "globalCompositeOperation",{enumerable:true,get:function(){switch(this.Nd){case a.BlendMode.SrcOver:return "source-over";case a.BlendMode.DstOver:return "destination-over";case a.BlendMode.Src:return "copy";case a.BlendMode.Dst:return "destination";case a.BlendMode.Clear:return "clear";case a.BlendMode.SrcIn:return "source-in";case a.BlendMode.DstIn:return "destination-in";case a.BlendMode.SrcOut:return "source-out";case a.BlendMode.DstOut:return "destination-out";case a.BlendMode.SrcATop:return "source-atop";
7889
- case a.BlendMode.DstATop:return "destination-atop";case a.BlendMode.Xor:return "xor";case a.BlendMode.Plus:return "lighter";case a.BlendMode.Multiply:return "multiply";case a.BlendMode.Screen:return "screen";case a.BlendMode.Overlay:return "overlay";case a.BlendMode.Darken:return "darken";case a.BlendMode.Lighten:return "lighten";case a.BlendMode.ColorDodge:return "color-dodge";case a.BlendMode.ColorBurn:return "color-burn";case a.BlendMode.HardLight:return "hard-light";case a.BlendMode.SoftLight:return "soft-light";
7890
- case a.BlendMode.Difference:return "difference";case a.BlendMode.Exclusion:return "exclusion";case a.BlendMode.Hue:return "hue";case a.BlendMode.Saturation:return "saturation";case a.BlendMode.Color:return "color";case a.BlendMode.Luminosity:return "luminosity"}},set:function(k){switch(k){case "source-over":this.Nd=a.BlendMode.SrcOver;break;case "destination-over":this.Nd=a.BlendMode.DstOver;break;case "copy":this.Nd=a.BlendMode.Src;break;case "destination":this.Nd=a.BlendMode.Dst;break;case "clear":this.Nd=
7891
- a.BlendMode.Clear;break;case "source-in":this.Nd=a.BlendMode.SrcIn;break;case "destination-in":this.Nd=a.BlendMode.DstIn;break;case "source-out":this.Nd=a.BlendMode.SrcOut;break;case "destination-out":this.Nd=a.BlendMode.DstOut;break;case "source-atop":this.Nd=a.BlendMode.SrcATop;break;case "destination-atop":this.Nd=a.BlendMode.DstATop;break;case "xor":this.Nd=a.BlendMode.Xor;break;case "lighter":this.Nd=a.BlendMode.Plus;break;case "plus-lighter":this.Nd=a.BlendMode.Plus;break;case "plus-darker":throw "plus-darker is not supported";
7892
- case "multiply":this.Nd=a.BlendMode.Multiply;break;case "screen":this.Nd=a.BlendMode.Screen;break;case "overlay":this.Nd=a.BlendMode.Overlay;break;case "darken":this.Nd=a.BlendMode.Darken;break;case "lighten":this.Nd=a.BlendMode.Lighten;break;case "color-dodge":this.Nd=a.BlendMode.ColorDodge;break;case "color-burn":this.Nd=a.BlendMode.ColorBurn;break;case "hard-light":this.Nd=a.BlendMode.HardLight;break;case "soft-light":this.Nd=a.BlendMode.SoftLight;break;case "difference":this.Nd=a.BlendMode.Difference;
7893
- break;case "exclusion":this.Nd=a.BlendMode.Exclusion;break;case "hue":this.Nd=a.BlendMode.Hue;break;case "saturation":this.Nd=a.BlendMode.Saturation;break;case "color":this.Nd=a.BlendMode.Color;break;case "luminosity":this.Nd=a.BlendMode.Luminosity;break;default:return}this.Od.setBlendMode(this.Nd);}});Object.defineProperty(this,"imageSmoothingEnabled",{enumerable:true,get:function(){return true},set:function(){}});Object.defineProperty(this,"imageSmoothingQuality",{enumerable:true,get:function(){return "high"},
7894
- set:function(){}});Object.defineProperty(this,"lineCap",{enumerable:true,get:function(){switch(this.Od.getStrokeCap()){case a.StrokeCap.Butt:return "butt";case a.StrokeCap.Round:return "round";case a.StrokeCap.Square:return "square"}},set:function(k){switch(k){case "butt":this.Od.setStrokeCap(a.StrokeCap.Butt);break;case "round":this.Od.setStrokeCap(a.StrokeCap.Round);break;case "square":this.Od.setStrokeCap(a.StrokeCap.Square);}}});Object.defineProperty(this,"lineDashOffset",{enumerable:true,get:function(){return this.Ie},
7895
- set:function(k){isFinite(k)&&(this.Ie=k);}});Object.defineProperty(this,"lineJoin",{enumerable:true,get:function(){switch(this.Od.getStrokeJoin()){case a.StrokeJoin.Miter:return "miter";case a.StrokeJoin.Round:return "round";case a.StrokeJoin.Bevel:return "bevel"}},set:function(k){switch(k){case "miter":this.Od.setStrokeJoin(a.StrokeJoin.Miter);break;case "round":this.Od.setStrokeJoin(a.StrokeJoin.Round);break;case "bevel":this.Od.setStrokeJoin(a.StrokeJoin.Bevel);}}});Object.defineProperty(this,"lineWidth",
7896
- {enumerable:true,get:function(){return this.Od.getStrokeWidth()},set:function(k){0>=k||!k||(this.Ke=k,this.Od.setStrokeWidth(k));}});Object.defineProperty(this,"miterLimit",{enumerable:true,get:function(){return this.Od.getStrokeMiter()},set:function(k){0>=k||!k||this.Od.setStrokeMiter(k);}});Object.defineProperty(this,"shadowBlur",{enumerable:true,get:function(){return this.ve},set:function(k){0>k||!isFinite(k)||(this.ve=k);}});Object.defineProperty(this,"shadowColor",{enumerable:true,get:function(){return d(this.Je)},
7897
- set:function(k){this.Je=g(k);}});Object.defineProperty(this,"shadowOffsetX",{enumerable:true,get:function(){return this.we},set:function(k){isFinite(k)&&(this.we=k);}});Object.defineProperty(this,"shadowOffsetY",{enumerable:true,get:function(){return this.xe},set:function(k){isFinite(k)&&(this.xe=k);}});Object.defineProperty(this,"strokeStyle",{enumerable:true,get:function(){return d(this.ge)},set:function(k){"string"===typeof k?this.ge=g(k):k.te&&(this.ge=k);}});this.arc=function(k,q,z,B,F,I){r(this.Qd,k,
7898
- q,z,z,0,B,F,I);};this.arcTo=function(k,q,z,B,F){O(this.Qd,k,q,z,B,F);};this.beginPath=function(){this.Qd.delete();this.Qd=new a.Path;};this.bezierCurveTo=function(k,q,z,B,F,I){var M=this.Qd;e([k,q,z,B,F,I])&&(M.isEmpty()&&M.moveTo(k,q),M.cubicTo(k,q,z,B,F,I));};this.clearRect=function(k,q,z,B){this.Od.setStyle(a.PaintStyle.Fill);this.Od.setBlendMode(a.BlendMode.Clear);this.Ld.drawRect(a.XYWHRect(k,q,z,B),this.Od);this.Od.setBlendMode(this.Nd);};this.clip=function(k,q){"string"===typeof k?(q=k,k=this.Qd):
7899
- k&&k.af&&(k=k.Ud);k||(k=this.Qd);k=k.copy();q&&"evenodd"===q.toLowerCase()?k.setFillType(a.FillType.EvenOdd):k.setFillType(a.FillType.Winding);this.Ld.clipPath(k,a.ClipOp.Intersect,true);k.delete();};this.closePath=function(){Y(this.Qd);};this.createImageData=function(){if(1===arguments.length){var k=arguments[0];return new J(new Uint8ClampedArray(4*k.width*k.height),k.width,k.height)}if(2===arguments.length){k=arguments[0];var q=arguments[1];return new J(new Uint8ClampedArray(4*k*q),k,q)}throw "createImageData expects 1 or 2 arguments, got "+
7900
- arguments.length;};this.createLinearGradient=function(k,q,z,B){if(e(arguments)){var F=new P(k,q,z,B);this.Be.push(F);return F}};this.createPattern=function(k,q){k=new ca(k,q);this.Be.push(k);return k};this.createRadialGradient=function(k,q,z,B,F,I){if(e(arguments)){var M=new ka(k,q,z,B,F,I);this.Be.push(M);return M}};this.drawImage=function(k){k instanceof C&&(k=k.tf());var q=this.Qe();if(3===arguments.length||5===arguments.length)var z=a.XYWHRect(arguments[1],arguments[2],arguments[3]||k.width(),
7901
- arguments[4]||k.height()),B=a.XYWHRect(0,0,k.width(),k.height());else if(9===arguments.length)z=a.XYWHRect(arguments[5],arguments[6],arguments[7],arguments[8]),B=a.XYWHRect(arguments[1],arguments[2],arguments[3],arguments[4]);else throw "invalid number of args for drawImage, need 3, 5, or 9; got "+arguments.length;this.Ld.drawImageRect(k,B,z,q,false);q.dispose();};this.ellipse=function(k,q,z,B,F,I,M,da){r(this.Qd,k,q,z,B,F,I,M,da);};this.Qe=function(){var k=this.Od.copy();k.setStyle(a.PaintStyle.Fill);
7902
- if(f(this.ae)){var q=a.multiplyByAlpha(this.ae,this.ie);k.setColor(q);}else q=this.ae.te(this.Sd),k.setColor(a.Color(0,0,0,this.ie)),k.setShader(q);k.dispose=function(){this.delete();};return k};this.fill=function(k,q){"string"===typeof k?(q=k,k=this.Qd):k&&k.af&&(k=k.Ud);if("evenodd"===q)this.Qd.setFillType(a.FillType.EvenOdd);else {if("nonzero"!==q&&q)throw "invalid fill rule";this.Qd.setFillType(a.FillType.Winding);}k||(k=this.Qd);q=this.Qe();var z=this.ye(q);z&&(this.Ld.save(),this.re(),this.Ld.drawPath(k,
7903
- z),this.Ld.restore(),z.dispose());this.Ld.drawPath(k,q);q.dispose();};this.fillRect=function(k,q,z,B){var F=this.Qe(),I=this.ye(F);I&&(this.Ld.save(),this.re(),this.Ld.drawRect(a.XYWHRect(k,q,z,B),I),this.Ld.restore(),I.dispose());this.Ld.drawRect(a.XYWHRect(k,q,z,B),F);F.dispose();};this.fillText=function(k,q,z){var B=this.Qe();k=a.TextBlob.MakeFromText(k,this.me);var F=this.ye(B);F&&(this.Ld.save(),this.re(),this.Ld.drawTextBlob(k,q,z,F),this.Ld.restore(),F.dispose());this.Ld.drawTextBlob(k,q,z,B);
7904
- k.delete();B.dispose();};this.getImageData=function(k,q,z,B){return (k=this.Ld.readPixels(k,q,{width:z,height:B,colorType:a.ColorType.RGBA_8888,alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB}))?new J(new Uint8ClampedArray(k.buffer),z,B):null};this.getLineDash=function(){return this.ue.slice()};this.mf=function(k){var q=a.Matrix.invert(this.Sd);a.Matrix.mapPoints(q,k);return k};this.isPointInPath=function(k,q,z){var B=arguments;if(3===B.length)var F=this.Qd;else if(4===B.length)F=B[0],k=
7905
- B[1],q=B[2],z=B[3];else throw "invalid arg count, need 3 or 4, got "+B.length;if(!isFinite(k)||!isFinite(q))return false;z=z||"nonzero";if("nonzero"!==z&&"evenodd"!==z)return false;B=this.mf([k,q]);k=B[0];q=B[1];F.setFillType("nonzero"===z?a.FillType.Winding:a.FillType.EvenOdd);return F.contains(k,q)};this.isPointInStroke=function(k,q){var z=arguments;if(2===z.length)var B=this.Qd;else if(3===z.length)B=z[0],k=z[1],q=z[2];else throw "invalid arg count, need 2 or 3, got "+z.length;if(!isFinite(k)||!isFinite(q))return false;
7906
- z=this.mf([k,q]);k=z[0];q=z[1];B=B.copy();B.setFillType(a.FillType.Winding);B.stroke({width:this.lineWidth,miter_limit:this.miterLimit,cap:this.Od.getStrokeCap(),join:this.Od.getStrokeJoin(),precision:.3});z=B.contains(k,q);B.delete();return z};this.lineTo=function(k,q){D(this.Qd,k,q);};this.measureText=function(k){k=this.me.getGlyphIDs(k);k=this.me.getGlyphWidths(k);let q=0;for(const z of k)q+=z;return {width:q}};this.moveTo=function(k,q){var z=this.Qd;e([k,q])&&z.moveTo(k,q);};this.putImageData=function(k,
7907
- q,z,B,F,I,M){if(e([q,z,B,F,I,M]))if(void 0===B)this.Ld.writePixels(k.data,k.width,k.height,q,z);else if(B=B||0,F=F||0,I=I||k.width,M=M||k.height,0>I&&(B+=I,I=Math.abs(I)),0>M&&(F+=M,M=Math.abs(M)),0>B&&(I+=B,B=0),0>F&&(M+=F,F=0),!(0>=I||0>=M)){k=a.MakeImage({width:k.width,height:k.height,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},k.data,4*k.width);var da=a.XYWHRect(B,F,I,M);q=a.XYWHRect(q+B,z+F,I,M);z=a.Matrix.invert(this.Sd);this.Ld.save();this.Ld.concat(z);
7908
- this.Ld.drawImageRect(k,da,q,null,false);this.Ld.restore();k.delete();}};this.quadraticCurveTo=function(k,q,z,B){var F=this.Qd;e([k,q,z,B])&&(F.isEmpty()&&F.moveTo(k,q),F.quadTo(k,q,z,B));};this.rect=function(k,q,z,B){var F=this.Qd;k=a.XYWHRect(k,q,z,B);e(k)&&F.addRect(k);};this.resetTransform=function(){this.Qd.transform(this.Sd);var k=a.Matrix.invert(this.Sd);this.Ld.concat(k);this.Sd=this.Ld.getTotalMatrix();};this.restore=function(){var k=this.lf.pop();if(k){var q=a.Matrix.multiply(this.Sd,a.Matrix.invert(k.Jf));
7909
- this.Qd.transform(q);this.Od.delete();this.Od=k.ag;this.ue=k.Zf;this.Ke=k.mg;this.ge=k.lg;this.ae=k.fs;this.we=k.jg;this.xe=k.kg;this.ve=k.sb;this.Je=k.ig;this.ie=k.ga;this.Nd=k.Qf;this.Ie=k.$f;this.Re=k.Pf;this.Ld.restore();this.Sd=this.Ld.getTotalMatrix();}};this.rotate=function(k){if(isFinite(k)){var q=a.Matrix.rotated(-k);this.Qd.transform(q);this.Ld.rotate(k/Math.PI*180,0,0);this.Sd=this.Ld.getTotalMatrix();}};this.save=function(){if(this.ae.se){var k=this.ae.se();this.Be.push(k);}else k=this.ae;
7910
- if(this.ge.se){var q=this.ge.se();this.Be.push(q);}else q=this.ge;this.lf.push({Jf:this.Sd.slice(),Zf:this.ue.slice(),mg:this.Ke,lg:q,fs:k,jg:this.we,kg:this.xe,sb:this.ve,ig:this.Je,ga:this.ie,$f:this.Ie,Qf:this.Nd,ag:this.Od.copy(),Pf:this.Re});this.Ld.save();};this.scale=function(k,q){if(e(arguments)){var z=a.Matrix.scaled(1/k,1/q);this.Qd.transform(z);this.Ld.scale(k,q);this.Sd=this.Ld.getTotalMatrix();}};this.setLineDash=function(k){for(var q=0;q<k.length;q++)if(!isFinite(k[q])||0>k[q])return;1===
7911
- k.length%2&&Array.prototype.push.apply(k,k);this.ue=k;};this.setTransform=function(k,q,z,B,F,I){e(arguments)&&(this.resetTransform(),this.transform(k,q,z,B,F,I));};this.re=function(){var k=a.Matrix.invert(this.Sd);this.Ld.concat(k);this.Ld.concat(a.Matrix.translated(this.we,this.xe));this.Ld.concat(this.Sd);};this.ye=function(k){var q=a.multiplyByAlpha(this.Je,this.ie);if(!a.getColorComponents(q)[3]||!(this.ve||this.xe||this.we))return null;k=k.copy();k.setColor(q);var z=a.MaskFilter.MakeBlur(a.BlurStyle.Normal,
7912
- this.ve/2,false);k.setMaskFilter(z);k.dispose=function(){z.delete();this.delete();};return k};this.cf=function(){var k=this.Od.copy();k.setStyle(a.PaintStyle.Stroke);if(f(this.ge)){var q=a.multiplyByAlpha(this.ge,this.ie);k.setColor(q);}else q=this.ge.te(this.Sd),k.setColor(a.Color(0,0,0,this.ie)),k.setShader(q);k.setStrokeWidth(this.Ke);if(this.ue.length){var z=a.PathEffect.MakeDash(this.ue,this.Ie);k.setPathEffect(z);}k.dispose=function(){z&&z.delete();this.delete();};return k};this.stroke=function(k){k=
7913
- k?k.Ud:this.Qd;var q=this.cf(),z=this.ye(q);z&&(this.Ld.save(),this.re(),this.Ld.drawPath(k,z),this.Ld.restore(),z.dispose());this.Ld.drawPath(k,q);q.dispose();};this.strokeRect=function(k,q,z,B){var F=this.cf(),I=this.ye(F);I&&(this.Ld.save(),this.re(),this.Ld.drawRect(a.XYWHRect(k,q,z,B),I),this.Ld.restore(),I.dispose());this.Ld.drawRect(a.XYWHRect(k,q,z,B),F);F.dispose();};this.strokeText=function(k,q,z){var B=this.cf();k=a.TextBlob.MakeFromText(k,this.me);var F=this.ye(B);F&&(this.Ld.save(),this.re(),
7914
- this.Ld.drawTextBlob(k,q,z,F),this.Ld.restore(),F.dispose());this.Ld.drawTextBlob(k,q,z,B);k.delete();B.dispose();};this.translate=function(k,q){if(e(arguments)){var z=a.Matrix.translated(-k,-q);this.Qd.transform(z);this.Ld.translate(k,q);this.Sd=this.Ld.getTotalMatrix();}};this.transform=function(k,q,z,B,F,I){k=[k,z,F,q,B,I,0,0,1];q=a.Matrix.invert(k);this.Qd.transform(q);this.Ld.concat(k);this.Sd=this.Ld.getTotalMatrix();};this.addHitRegion=function(){};this.clearHitRegions=function(){};this.drawFocusIfNeeded=
7915
- function(){};this.removeHitRegion=function(){};this.scrollPathIntoView=function(){};Object.defineProperty(this,"canvas",{value:null,writable:false});}function x(G){this.df=G;this.Kd=new t(G.getCanvas());this.Se=[];this.decodeImage=function(k){k=a.MakeImageFromEncoded(k);if(!k)throw "Invalid input";this.Se.push(k);return new C(k)};this.loadFont=function(k,q){k=a.Typeface.MakeFreeTypeFaceFromData(k);if(!k)return null;this.Se.push(k);var z=(q.style||"normal")+"|"+(q.variant||"normal")+"|"+(q.weight||"normal");
7916
- q=q.family;na[q]||(na[q]={"*":k});na[q][z]=k;};this.makePath2D=function(k){k=new U(k);this.Se.push(k.Ud);return k};this.getContext=function(k){return "2d"===k?this.Kd:null};this.toDataURL=function(k,q){this.df.flush();var z=this.df.makeImageSnapshot();if(z){k=k||"image/png";var B=a.ImageFormat.PNG;"image/jpeg"===k&&(B=a.ImageFormat.JPEG);if(q=z.encodeToBytes(B,q||.92)){z.delete();k="data:"+k+";base64,";if("undefined"!==typeof Buffer)q=Buffer.from(q).toString("base64");else {z=0;B=q.length;for(var F=
7917
- "",I;z<B;)I=q.slice(z,Math.min(z+32768,B)),F+=String.fromCharCode.apply(null,I),z+=32768;q=btoa(F);}return k+q}}};this.dispose=function(){this.Kd.le();this.Se.forEach(function(k){k.delete();});this.df.dispose();};}function C(G){this.width=G.width();this.height=G.height();this.naturalWidth=this.width;this.naturalHeight=this.height;this.tf=function(){return G};}function J(G,k,q){if(!k||0===q)throw "invalid dimensions, width and height must be non-zero";if(G.length%4)throw "arr must be a multiple of 4";q=q||
7918
- G.length/(4*k);Object.defineProperty(this,"data",{value:G,writable:false});Object.defineProperty(this,"height",{value:q,writable:false});Object.defineProperty(this,"width",{value:k,writable:false});}function P(G,k,q,z){this.Wd=null;this.ce=[];this.Zd=[];this.addColorStop=function(B,F){if(0>B||1<B||!isFinite(B))throw "offset must be between 0 and 1 inclusively";F=g(F);var I=this.Zd.indexOf(B);if(-1!==I)this.ce[I]=F;else {for(I=0;I<this.Zd.length&&!(this.Zd[I]>B);I++);this.Zd.splice(I,0,B);this.ce.splice(I,0,F);}};
7919
- this.se=function(){var B=new P(G,k,q,z);B.ce=this.ce.slice();B.Zd=this.Zd.slice();return B};this.le=function(){this.Wd&&(this.Wd.delete(),this.Wd=null);};this.te=function(B){var F=[G,k,q,z];a.Matrix.mapPoints(B,F);B=F[0];var I=F[1],M=F[2];F=F[3];this.le();return this.Wd=a.Shader.MakeLinearGradient([B,I],[M,F],this.ce,this.Zd,a.TileMode.Clamp)};}function O(G,k,q,z,B,F){if(e([k,q,z,B,F])){if(0>F)throw "radii cannot be negative";G.isEmpty()&&G.moveTo(k,q);G.arcToTangent(k,q,z,B,F);}}function Y(G){if(!G.isEmpty()){var k=
7920
- G.getBounds();(k[3]-k[1]||k[2]-k[0])&&G.close();}}function aa(G,k,q,z,B,F,I){I=(I-F)/Math.PI*180;F=F/Math.PI*180;k=a.LTRBRect(k-z,q-B,k+z,q+B);1E-5>Math.abs(Math.abs(I)-360)?(q=I/2,G.arcToOval(k,F,q,false),G.arcToOval(k,F+q,q,false)):G.arcToOval(k,F,I,false);}function r(G,k,q,z,B,F,I,M,da){if(e([k,q,z,B,F,I,M])){if(0>z||0>B)throw "radii cannot be negative";var ea=2*Math.PI,Ia=I%ea;0>Ia&&(Ia+=ea);var ab=Ia-I;I=Ia;M+=ab;!da&&M-I>=ea?M=I+ea:da&&I-M>=ea?M=I-ea:!da&&I>M?M=I+(ea-(I-M)%ea):da&&I<M&&(M=I-(ea-(M-I)%ea));
7921
- F?(da=a.Matrix.rotated(F,k,q),F=a.Matrix.rotated(-F,k,q),G.transform(F),aa(G,k,q,z,B,I,M),G.transform(da)):aa(G,k,q,z,B,I,M);}}function D(G,k,q){e([k,q])&&(G.isEmpty()&&G.moveTo(k,q),G.lineTo(k,q));}function U(G){this.Ud=null;this.Ud="string"===typeof G?a.Path.MakeFromSVGString(G):G&&G.af?G.Ud.copy():new a.Path;this.af=function(){return this.Ud};this.addPath=function(k,q){q||(q={a:1,c:0,e:0,b:0,d:1,f:0});this.Ud.addPath(k.Ud,[q.a,q.c,q.e,q.b,q.d,q.f]);};this.arc=function(k,q,z,B,F,I){r(this.Ud,k,q,z,
7922
- z,0,B,F,I);};this.arcTo=function(k,q,z,B,F){O(this.Ud,k,q,z,B,F);};this.bezierCurveTo=function(k,q,z,B,F,I){var M=this.Ud;e([k,q,z,B,F,I])&&(M.isEmpty()&&M.moveTo(k,q),M.cubicTo(k,q,z,B,F,I));};this.closePath=function(){Y(this.Ud);};this.ellipse=function(k,q,z,B,F,I,M,da){r(this.Ud,k,q,z,B,F,I,M,da);};this.lineTo=function(k,q){D(this.Ud,k,q);};this.moveTo=function(k,q){var z=this.Ud;e([k,q])&&z.moveTo(k,q);};this.quadraticCurveTo=function(k,q,z,B){var F=this.Ud;e([k,q,z,B])&&(F.isEmpty()&&F.moveTo(k,q),
7923
- F.quadTo(k,q,z,B));};this.rect=function(k,q,z,B){var F=this.Ud;k=a.XYWHRect(k,q,z,B);e(k)&&F.addRect(k);};}function ca(G,k){this.Wd=null;G instanceof C&&(G=G.tf());this.Ef=G;this._transform=a.Matrix.identity();""===k&&(k="repeat");switch(k){case "repeat-x":this.ze=a.TileMode.Repeat;this.Ae=a.TileMode.Decal;break;case "repeat-y":this.ze=a.TileMode.Decal;this.Ae=a.TileMode.Repeat;break;case "repeat":this.Ae=this.ze=a.TileMode.Repeat;break;case "no-repeat":this.Ae=this.ze=a.TileMode.Decal;break;default:throw "invalid repetition mode "+
7924
- k;}this.setTransform=function(q){q=[q.a,q.c,q.e,q.b,q.d,q.f,0,0,1];e(q)&&(this._transform=q);};this.se=function(){var q=new ca;q.ze=this.ze;q.Ae=this.Ae;return q};this.le=function(){this.Wd&&(this.Wd.delete(),this.Wd=null);};this.te=function(){this.le();return this.Wd=this.Ef.makeShaderCubic(this.ze,this.Ae,1/3,1/3,this._transform)};}function ka(G,k,q,z,B,F){this.Wd=null;this.ce=[];this.Zd=[];this.addColorStop=function(I,M){if(0>I||1<I||!isFinite(I))throw "offset must be between 0 and 1 inclusively";
7925
- M=g(M);var da=this.Zd.indexOf(I);if(-1!==da)this.ce[da]=M;else {for(da=0;da<this.Zd.length&&!(this.Zd[da]>I);da++);this.Zd.splice(da,0,I);this.ce.splice(da,0,M);}};this.se=function(){var I=new ka(G,k,q,z,B,F);I.ce=this.ce.slice();I.Zd=this.Zd.slice();return I};this.le=function(){this.Wd&&(this.Wd.delete(),this.Wd=null);};this.te=function(I){var M=[G,k,z,B];a.Matrix.mapPoints(I,M);var da=M[0],ea=M[1],Ia=M[2];M=M[3];var ab=(Math.abs(I[0])+Math.abs(I[4]))/2;I=q*ab;ab*=F;this.le();return this.Wd=a.Shader.MakeTwoPointConicalGradient([da,
7926
- ea],I,[Ia,M],ab,this.ce,this.Zd,a.TileMode.Clamp)};}a._testing={};var va={aliceblue:Float32Array.of(.941,.973,1,1),antiquewhite:Float32Array.of(.98,.922,.843,1),aqua:Float32Array.of(0,1,1,1),aquamarine:Float32Array.of(.498,1,.831,1),azure:Float32Array.of(.941,1,1,1),beige:Float32Array.of(.961,.961,.863,1),bisque:Float32Array.of(1,.894,.769,1),black:Float32Array.of(0,0,0,1),blanchedalmond:Float32Array.of(1,.922,.804,1),blue:Float32Array.of(0,0,1,1),blueviolet:Float32Array.of(.541,.169,.886,1),brown:Float32Array.of(.647,
7927
- .165,.165,1),burlywood:Float32Array.of(.871,.722,.529,1),cadetblue:Float32Array.of(.373,.62,.627,1),chartreuse:Float32Array.of(.498,1,0,1),chocolate:Float32Array.of(.824,.412,.118,1),coral:Float32Array.of(1,.498,.314,1),cornflowerblue:Float32Array.of(.392,.584,.929,1),cornsilk:Float32Array.of(1,.973,.863,1),crimson:Float32Array.of(.863,.078,.235,1),cyan:Float32Array.of(0,1,1,1),darkblue:Float32Array.of(0,0,.545,1),darkcyan:Float32Array.of(0,.545,.545,1),darkgoldenrod:Float32Array.of(.722,.525,.043,
7928
- 1),darkgray:Float32Array.of(.663,.663,.663,1),darkgreen:Float32Array.of(0,.392,0,1),darkgrey:Float32Array.of(.663,.663,.663,1),darkkhaki:Float32Array.of(.741,.718,.42,1),darkmagenta:Float32Array.of(.545,0,.545,1),darkolivegreen:Float32Array.of(.333,.42,.184,1),darkorange:Float32Array.of(1,.549,0,1),darkorchid:Float32Array.of(.6,.196,.8,1),darkred:Float32Array.of(.545,0,0,1),darksalmon:Float32Array.of(.914,.588,.478,1),darkseagreen:Float32Array.of(.561,.737,.561,1),darkslateblue:Float32Array.of(.282,
7929
- .239,.545,1),darkslategray:Float32Array.of(.184,.31,.31,1),darkslategrey:Float32Array.of(.184,.31,.31,1),darkturquoise:Float32Array.of(0,.808,.82,1),darkviolet:Float32Array.of(.58,0,.827,1),deeppink:Float32Array.of(1,.078,.576,1),deepskyblue:Float32Array.of(0,.749,1,1),dimgray:Float32Array.of(.412,.412,.412,1),dimgrey:Float32Array.of(.412,.412,.412,1),dodgerblue:Float32Array.of(.118,.565,1,1),firebrick:Float32Array.of(.698,.133,.133,1),floralwhite:Float32Array.of(1,.98,.941,1),forestgreen:Float32Array.of(.133,
7930
- .545,.133,1),fuchsia:Float32Array.of(1,0,1,1),gainsboro:Float32Array.of(.863,.863,.863,1),ghostwhite:Float32Array.of(.973,.973,1,1),gold:Float32Array.of(1,.843,0,1),goldenrod:Float32Array.of(.855,.647,.125,1),gray:Float32Array.of(.502,.502,.502,1),green:Float32Array.of(0,.502,0,1),greenyellow:Float32Array.of(.678,1,.184,1),grey:Float32Array.of(.502,.502,.502,1),honeydew:Float32Array.of(.941,1,.941,1),hotpink:Float32Array.of(1,.412,.706,1),indianred:Float32Array.of(.804,.361,.361,1),indigo:Float32Array.of(.294,
7931
- 0,.51,1),ivory:Float32Array.of(1,1,.941,1),khaki:Float32Array.of(.941,.902,.549,1),lavender:Float32Array.of(.902,.902,.98,1),lavenderblush:Float32Array.of(1,.941,.961,1),lawngreen:Float32Array.of(.486,.988,0,1),lemonchiffon:Float32Array.of(1,.98,.804,1),lightblue:Float32Array.of(.678,.847,.902,1),lightcoral:Float32Array.of(.941,.502,.502,1),lightcyan:Float32Array.of(.878,1,1,1),lightgoldenrodyellow:Float32Array.of(.98,.98,.824,1),lightgray:Float32Array.of(.827,.827,.827,1),lightgreen:Float32Array.of(.565,
7932
- .933,.565,1),lightgrey:Float32Array.of(.827,.827,.827,1),lightpink:Float32Array.of(1,.714,.757,1),lightsalmon:Float32Array.of(1,.627,.478,1),lightseagreen:Float32Array.of(.125,.698,.667,1),lightskyblue:Float32Array.of(.529,.808,.98,1),lightslategray:Float32Array.of(.467,.533,.6,1),lightslategrey:Float32Array.of(.467,.533,.6,1),lightsteelblue:Float32Array.of(.69,.769,.871,1),lightyellow:Float32Array.of(1,1,.878,1),lime:Float32Array.of(0,1,0,1),limegreen:Float32Array.of(.196,.804,.196,1),linen:Float32Array.of(.98,
7933
- .941,.902,1),magenta:Float32Array.of(1,0,1,1),maroon:Float32Array.of(.502,0,0,1),mediumaquamarine:Float32Array.of(.4,.804,.667,1),mediumblue:Float32Array.of(0,0,.804,1),mediumorchid:Float32Array.of(.729,.333,.827,1),mediumpurple:Float32Array.of(.576,.439,.859,1),mediumseagreen:Float32Array.of(.235,.702,.443,1),mediumslateblue:Float32Array.of(.482,.408,.933,1),mediumspringgreen:Float32Array.of(0,.98,.604,1),mediumturquoise:Float32Array.of(.282,.82,.8,1),mediumvioletred:Float32Array.of(.78,.082,.522,
7934
- 1),midnightblue:Float32Array.of(.098,.098,.439,1),mintcream:Float32Array.of(.961,1,.98,1),mistyrose:Float32Array.of(1,.894,.882,1),moccasin:Float32Array.of(1,.894,.71,1),navajowhite:Float32Array.of(1,.871,.678,1),navy:Float32Array.of(0,0,.502,1),oldlace:Float32Array.of(.992,.961,.902,1),olive:Float32Array.of(.502,.502,0,1),olivedrab:Float32Array.of(.42,.557,.137,1),orange:Float32Array.of(1,.647,0,1),orangered:Float32Array.of(1,.271,0,1),orchid:Float32Array.of(.855,.439,.839,1),palegoldenrod:Float32Array.of(.933,
7935
- .91,.667,1),palegreen:Float32Array.of(.596,.984,.596,1),paleturquoise:Float32Array.of(.686,.933,.933,1),palevioletred:Float32Array.of(.859,.439,.576,1),papayawhip:Float32Array.of(1,.937,.835,1),peachpuff:Float32Array.of(1,.855,.725,1),peru:Float32Array.of(.804,.522,.247,1),pink:Float32Array.of(1,.753,.796,1),plum:Float32Array.of(.867,.627,.867,1),powderblue:Float32Array.of(.69,.878,.902,1),purple:Float32Array.of(.502,0,.502,1),rebeccapurple:Float32Array.of(.4,.2,.6,1),red:Float32Array.of(1,0,0,1),
7936
- rosybrown:Float32Array.of(.737,.561,.561,1),royalblue:Float32Array.of(.255,.412,.882,1),saddlebrown:Float32Array.of(.545,.271,.075,1),salmon:Float32Array.of(.98,.502,.447,1),sandybrown:Float32Array.of(.957,.643,.376,1),seagreen:Float32Array.of(.18,.545,.341,1),seashell:Float32Array.of(1,.961,.933,1),sienna:Float32Array.of(.627,.322,.176,1),silver:Float32Array.of(.753,.753,.753,1),skyblue:Float32Array.of(.529,.808,.922,1),slateblue:Float32Array.of(.416,.353,.804,1),slategray:Float32Array.of(.439,.502,
7937
- .565,1),slategrey:Float32Array.of(.439,.502,.565,1),snow:Float32Array.of(1,.98,.98,1),springgreen:Float32Array.of(0,1,.498,1),steelblue:Float32Array.of(.275,.51,.706,1),tan:Float32Array.of(.824,.706,.549,1),teal:Float32Array.of(0,.502,.502,1),thistle:Float32Array.of(.847,.749,.847,1),tomato:Float32Array.of(1,.388,.278,1),transparent:Float32Array.of(0,0,0,0),turquoise:Float32Array.of(.251,.878,.816,1),violet:Float32Array.of(.933,.51,.933,1),wheat:Float32Array.of(.961,.871,.702,1),white:Float32Array.of(1,
7938
- 1,1,1),whitesmoke:Float32Array.of(.961,.961,.961,1),yellow:Float32Array.of(1,1,0,1),yellowgreen:Float32Array.of(.604,.804,.196,1)};a._testing.parseColor=g;a._testing.colorToString=d;var wa=RegExp("(italic|oblique|normal|)\\s*(small-caps|normal|)\\s*(bold|bolder|lighter|[1-9]00|normal|)\\s*([\\d\\.]+)(px|pt|pc|in|cm|mm|%|em|ex|ch|rem|q)(.+)"),na={"Noto Mono":{"*":null},monospace:{"*":null}};a._testing.parseFontString=l;a.MakeCanvas=function(G,k){return (G=a.MakeSurface(G,k))?new x(G):null};a.ImageData=
7939
- function(){if(2===arguments.length){var G=arguments[0],k=arguments[1];return new J(new Uint8ClampedArray(4*G*k),G,k)}if(3===arguments.length){var q=arguments[0];if(q.prototype.constructor!==Uint8ClampedArray)throw "bytes must be given as a Uint8ClampedArray";G=arguments[1];k=arguments[2];if(q%4)throw "bytes must be given in a multiple of 4";if(q%G)throw "bytes must divide evenly by width";if(k&&k!==q/(4*G))throw "invalid height given";return new J(q,G,q/(4*G))}throw "invalid number of arguments - takes 2 or 3, saw "+
7940
- arguments.length;};})();})(w);var ta=Object.assign({},w),ua="./this.program",xa=(a,b)=>{throw b;},ya="object"==typeof window,za="function"==typeof importScripts,Aa="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,Ca="",Da,Ea,Fa;
7941
- if(Aa){var fs=require$$0,Ga=require$$1;Ca=za?Ga.dirname(Ca)+"/":__dirname+"/";Da=(a,b)=>{a=a.startsWith("file://")?new URL(a):Ga.normalize(a);return fs.readFileSync(a,b?void 0:"utf8")};Fa=a=>{a=Da(a,true);a.buffer||(a=new Uint8Array(a));return a};Ea=(a,b,c,f=true)=>{a=a.startsWith("file://")?new URL(a):Ga.normalize(a);fs.readFile(a,f?void 0:"utf8",(h,m)=>{h?c(h):b(f?m.buffer:m);});};!w.thisProgram&&1<process.argv.length&&(ua=process.argv[1].replace(/\\/g,"/"));process.argv.slice(2);xa=(a,b)=>{process.exitCode=
7942
- a;throw b;};w.inspect=()=>"[Emscripten Module object]";}else if(ya||za)za?Ca=self.location.href:"undefined"!=typeof document&&document.currentScript&&(Ca=document.currentScript.src),_scriptDir&&(Ca=_scriptDir),0!==Ca.indexOf("blob:")?Ca=Ca.substr(0,Ca.replace(/[?#].*/,"").lastIndexOf("/")+1):Ca="",Da=a=>{var b=new XMLHttpRequest;b.open("GET",a,false);b.send(null);return b.responseText},za&&(Fa=a=>{var b=new XMLHttpRequest;b.open("GET",a,false);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),
7943
- Ea=(a,b,c)=>{var f=new XMLHttpRequest;f.open("GET",a,true);f.responseType="arraybuffer";f.onload=()=>{200==f.status||0==f.status&&f.response?b(f.response):c();};f.onerror=c;f.send(null);};var Ha=w.print||console.log.bind(console),Ja=w.printErr||console.error.bind(console);Object.assign(w,ta);ta=null;w.thisProgram&&(ua=w.thisProgram);w.quit&&(xa=w.quit);var Ka;w.wasmBinary&&(Ka=w.wasmBinary);w.noExitRuntime||true;"object"!=typeof WebAssembly&&La("no native wasm support detected");
7944
- var Ma,Q,Pa=false,Qa,K,Ra,Sa,R,Ua,V,Va;function Wa(){var a=Ma.buffer;w.HEAP8=Qa=new Int8Array(a);w.HEAP16=Ra=new Int16Array(a);w.HEAP32=R=new Int32Array(a);w.HEAPU8=K=new Uint8Array(a);w.HEAPU16=Sa=new Uint16Array(a);w.HEAPU32=Ua=new Uint32Array(a);w.HEAPF32=V=new Float32Array(a);w.HEAPF64=Va=new Float64Array(a);}var Xa,Ya=[],Za=[],bb=[];function cb(){var a=w.preRun.shift();Ya.unshift(a);}var db=0,fb=null;
7945
- function La(a){if(w.onAbort)w.onAbort(a);a="Aborted("+a+")";Ja(a);Pa=true;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");fa(a);throw a;}function kb(a){return a.startsWith("data:application/octet-stream;base64,")}var lb;lb="canvaskit.wasm";if(!kb(lb)){var mb=lb;lb=w.locateFile?w.locateFile(mb,Ca):Ca+mb;}function nb(a){if(a==lb&&Ka)return new Uint8Array(Ka);if(Fa)return Fa(a);throw "both async and sync fetching of the wasm failed";}
7946
- function ob(a){if(!Ka&&(ya||za)){if("function"==typeof fetch&&!a.startsWith("file://"))return fetch(a,{credentials:"same-origin"}).then(b=>{if(!b.ok)throw "failed to load wasm binary file at '"+a+"'";return b.arrayBuffer()}).catch(()=>nb(a));if(Ea)return new Promise((b,c)=>{Ea(a,f=>b(new Uint8Array(f)),c);})}return Promise.resolve().then(()=>nb(a))}function pb(a,b,c){return ob(a).then(f=>WebAssembly.instantiate(f,b)).then(f=>f).then(c,f=>{Ja("failed to asynchronously prepare wasm: "+f);La(f);})}
7947
- function qb(a,b){var c=lb;return Ka||"function"!=typeof WebAssembly.instantiateStreaming||kb(c)||c.startsWith("file://")||Aa||"function"!=typeof fetch?pb(c,a,b):fetch(c,{credentials:"same-origin"}).then(f=>WebAssembly.instantiateStreaming(f,a).then(b,function(h){Ja("wasm streaming compile failed: "+h);Ja("falling back to ArrayBuffer instantiation");return pb(c,a,b)}))}function rb(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a;}
7948
- var sb=a=>{for(;0<a.length;)a.shift()(w);},tb="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,ub=(a,b,c)=>{var f=b+c;for(c=b;a[c]&&!(c>=f);)++c;if(16<c-b&&a.buffer&&tb)return tb.decode(a.subarray(b,c));for(f="";b<c;){var h=a[b++];if(h&128){var m=a[b++]&63;if(192==(h&224))f+=String.fromCharCode((h&31)<<6|m);else {var u=a[b++]&63;h=224==(h&240)?(h&15)<<12|m<<6|u:(h&7)<<18|m<<12|u<<6|a[b++]&63;65536>h?f+=String.fromCharCode(h):(h-=65536,f+=String.fromCharCode(55296|h>>10,56320|h&1023));}}else f+=
7949
- String.fromCharCode(h);}return f},vb={};function wb(a){for(;a.length;){var b=a.pop();a.pop()(b);}}function xb(a){return this.fromWireType(R[a>>2])}var zb={},Ab={},Bb={},Cb=void 0;function Db(a){throw new Cb(a);}
7950
- function Eb(a,b,c){function f(n){n=c(n);n.length!==a.length&&Db("Mismatched type converter count");for(var p=0;p<a.length;++p)Fb(a[p],n[p]);}a.forEach(function(n){Bb[n]=b;});var h=Array(b.length),m=[],u=0;b.forEach((n,p)=>{Ab.hasOwnProperty(n)?h[p]=Ab[n]:(m.push(n),zb.hasOwnProperty(n)||(zb[n]=[]),zb[n].push(()=>{h[p]=Ab[n];++u;u===m.length&&f(h);}));});0===m.length&&f(h);}
7951
- function Gb(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${a}`);}}var Hb=void 0;function Ib(a){for(var b="";K[a];)b+=Hb[K[a++]];return b}var Jb=void 0;function X(a){throw new Jb(a);}
7952
- function Kb(a,b,c={}){var f=b.name;a||X(`type "${f}" must have a positive integer typeid pointer`);if(Ab.hasOwnProperty(a)){if(c.Wf)return;X(`Cannot register type '${f}' twice`);}Ab[a]=b;delete Bb[a];zb.hasOwnProperty(a)&&(b=zb[a],delete zb[a],b.forEach(h=>h()));}function Fb(a,b,c={}){if(!("argPackAdvance"in b))throw new TypeError("registerType registeredInstance requires argPackAdvance");Kb(a,b,c);}function Lb(a){X(a.Jd.Vd.Pd.name+" instance already deleted");}var Mb=false;function Nb(){}
7953
- function Ob(a){--a.count.value;0===a.count.value&&(a.Yd?a.ee.ke(a.Yd):a.Vd.Pd.ke(a.Rd));}function Pb(a,b,c){if(b===c)return a;if(void 0===c.$d)return null;a=Pb(a,b,c.$d);return null===a?null:c.Mf(a)}var Qb={},Rb=[];function Sb(){for(;Rb.length;){var a=Rb.pop();a.Jd.Ee=false;a["delete"]();}}var Tb=void 0,Ub={};function ac(a,b){for(void 0===b&&X("ptr should not be undefined");a.$d;)b=a.Oe(b),a=a.$d;return Ub[b]}
7954
- function bc(a,b){b.Vd&&b.Rd||Db("makeClassHandle requires ptr and ptrType");!!b.ee!==!!b.Yd&&Db("Both smartPtrType and smartPtr must be specified");b.count={value:1};return cc(Object.create(a,{Jd:{value:b}}))}function cc(a){if("undefined"===typeof FinalizationRegistry)return cc=b=>b,a;Mb=new FinalizationRegistry(b=>{Ob(b.Jd);});cc=b=>{var c=b.Jd;c.Yd&&Mb.register(b,{Jd:c},b);return b};Nb=b=>{Mb.unregister(b);};return cc(a)}function dc(){}
7955
- function ec(a){if(void 0===a)return "_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a}function fc(a,b){a=ec(a);return {[a]:function(){return b.apply(this,arguments)}}[a]}
7956
- function gc(a,b,c){if(void 0===a[b].Xd){var f=a[b];a[b]=function(){a[b].Xd.hasOwnProperty(arguments.length)||X(`Function '${c}' called with an invalid number of arguments (${arguments.length}) - expects one of (${a[b].Xd})!`);return a[b].Xd[arguments.length].apply(this,arguments)};a[b].Xd=[];a[b].Xd[f.Ce]=f;}}
7957
- function hc(a,b,c){w.hasOwnProperty(a)?((void 0===c||void 0!==w[a].Xd&&void 0!==w[a].Xd[c])&&X(`Cannot register public name '${a}' twice`),gc(w,a,a),w.hasOwnProperty(c)&&X(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`),w[a].Xd[c]=b):(w[a]=b,void 0!==c&&(w[a].tg=c));}function ic(a,b,c,f,h,m,u,n){this.name=a;this.constructor=b;this.Fe=c;this.ke=f;this.$d=h;this.Rf=m;this.Oe=u;this.Mf=n;this.cg=[];}
7958
- function jc(a,b,c){for(;b!==c;)b.Oe||X(`Expected null or instance of ${c.name}, got an instance of ${b.name}`),a=b.Oe(a),b=b.$d;return a}function kc(a,b){if(null===b)return this.gf&&X(`null is not a valid ${this.name}`),0;b.Jd||X(`Cannot pass "${lc(b)}" as a ${this.name}`);b.Jd.Rd||X(`Cannot pass deleted object as a pointer of type ${this.name}`);return jc(b.Jd.Rd,b.Jd.Vd.Pd,this.Pd)}
7959
- function mc(a,b){if(null===b){this.gf&&X(`null is not a valid ${this.name}`);if(this.Ve){var c=this.hf();null!==a&&a.push(this.ke,c);return c}return 0}b.Jd||X(`Cannot pass "${lc(b)}" as a ${this.name}`);b.Jd.Rd||X(`Cannot pass deleted object as a pointer of type ${this.name}`);!this.Ue&&b.Jd.Vd.Ue&&X(`Cannot convert argument of type ${b.Jd.ee?b.Jd.ee.name:b.Jd.Vd.name} to parameter type ${this.name}`);c=jc(b.Jd.Rd,b.Jd.Vd.Pd,this.Pd);if(this.Ve)switch(void 0===b.Jd.Yd&&X("Passing raw pointer to smart pointer is illegal"),
7960
- this.hg){case 0:b.Jd.ee===this?c=b.Jd.Yd:X(`Cannot convert argument of type ${b.Jd.ee?b.Jd.ee.name:b.Jd.Vd.name} to parameter type ${this.name}`);break;case 1:c=b.Jd.Yd;break;case 2:if(b.Jd.ee===this)c=b.Jd.Yd;else {var f=b.clone();c=this.dg(c,nc(function(){f["delete"]();}));null!==a&&a.push(this.ke,c);}break;default:X("Unsupporting sharing policy");}return c}
7961
- function oc(a,b){if(null===b)return this.gf&&X(`null is not a valid ${this.name}`),0;b.Jd||X(`Cannot pass "${lc(b)}" as a ${this.name}`);b.Jd.Rd||X(`Cannot pass deleted object as a pointer of type ${this.name}`);b.Jd.Vd.Ue&&X(`Cannot convert argument of type ${b.Jd.Vd.name} to parameter type ${this.name}`);return jc(b.Jd.Rd,b.Jd.Vd.Pd,this.Pd)}
7962
- function pc(a,b,c,f,h,m,u,n,p,v,E){this.name=a;this.Pd=b;this.gf=c;this.Ue=f;this.Ve=h;this.bg=m;this.hg=u;this.vf=n;this.hf=p;this.dg=v;this.ke=E;h||void 0!==b.$d?this.toWireType=mc:(this.toWireType=f?kc:oc,this.de=null);}function qc(a,b,c){w.hasOwnProperty(a)||Db("Replacing nonexistant public symbol");void 0!==w[a].Xd&&void 0!==c?w[a].Xd[c]=b:(w[a]=b,w[a].Ce=c);}
7963
- var rc=(a,b)=>{var c=[];return function(){c.length=0;Object.assign(c,arguments);if(a.includes("j")){var f=w["dynCall_"+a];f=c&&c.length?f.apply(null,[b].concat(c)):f.call(null,b);}else f=Xa.get(b).apply(null,c);return f}};function sc(a,b){a=Ib(a);var c=a.includes("j")?rc(a,b):Xa.get(b);"function"!=typeof c&&X(`unknown function pointer with signature ${a}: ${b}`);return c}var tc=void 0;function uc(a){a=vc(a);var b=Ib(a);wc(a);return b}
7964
- function Dc(a,b){function c(m){h[m]||Ab[m]||(Bb[m]?Bb[m].forEach(c):(f.push(m),h[m]=true));}var f=[],h={};b.forEach(c);throw new tc(`${a}: `+f.map(uc).join([", "]));}
7965
- function Ec(a,b,c,f,h){var m=b.length;2>m&&X("argTypes array size mismatch! Must at least get return value and 'this' types!");var u=null!==b[1]&&null!==c,n=false;for(c=1;c<b.length;++c)if(null!==b[c]&&void 0===b[c].de){n=true;break}var p="void"!==b[0].name,v=m-2,E=Array(v),H=[],L=[];return function(){arguments.length!==v&&X(`function ${a} called with ${arguments.length} arguments, expected ${v} args!`);L.length=0;H.length=u?2:1;H[0]=h;if(u){var y=b[1].toWireType(L,this);H[1]=y;}for(var N=0;N<v;++N)E[N]=
7966
- b[N+2].toWireType(L,arguments[N]),H.push(E[N]);N=f.apply(null,H);if(n)wb(L);else for(var T=u?1:2;T<b.length;T++){var S=1===T?y:E[T-2];null!==b[T].de&&b[T].de(S);}y=p?b[0].fromWireType(N):void 0;return y}}function Fc(a,b){for(var c=[],f=0;f<a;f++)c.push(Ua[b+4*f>>2]);return c}function Gc(){this.je=[void 0];this.sf=[];}var Hc=new Gc;function Ic(a){a>=Hc.Ge&&0===--Hc.get(a).wf&&Hc.Bf(a);}
7967
- var Jc=a=>{a||X("Cannot use deleted val. handle = "+a);return Hc.get(a).value},nc=a=>{switch(a){case void 0:return 1;case null:return 2;case true:return 3;case false:return 4;default:return Hc.Af({wf:1,value:a})}};function Kc(a,b,c){switch(b){case 0:return function(f){return this.fromWireType((c?Qa:K)[f])};case 1:return function(f){return this.fromWireType((c?Ra:Sa)[f>>1])};case 2:return function(f){return this.fromWireType((c?R:Ua)[f>>2])};default:throw new TypeError("Unknown integer type: "+a);}}
7968
- function Lc(a,b){var c=Ab[a];void 0===c&&X(b+" has unknown type "+uc(a));return c}function lc(a){if(null===a)return "null";var b=typeof a;return "object"===b||"array"===b||"function"===b?a.toString():""+a}function Mc(a,b){switch(b){case 2:return function(c){return this.fromWireType(V[c>>2])};case 3:return function(c){return this.fromWireType(Va[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}
7969
- function Nc(a,b,c){switch(b){case 0:return c?function(f){return Qa[f]}:function(f){return K[f]};case 1:return c?function(f){return Ra[f>>1]}:function(f){return Sa[f>>1]};case 2:return c?function(f){return R[f>>2]}:function(f){return Ua[f>>2]};default:throw new TypeError("Unknown integer type: "+a);}}
7970
- var ra=(a,b,c,f)=>{if(!(0<f))return 0;var h=c;f=c+f-1;for(var m=0;m<a.length;++m){var u=a.charCodeAt(m);if(55296<=u&&57343>=u){var n=a.charCodeAt(++m);u=65536+((u&1023)<<10)|n&1023;}if(127>=u){if(c>=f)break;b[c++]=u;}else {if(2047>=u){if(c+1>=f)break;b[c++]=192|u>>6;}else {if(65535>=u){if(c+2>=f)break;b[c++]=224|u>>12;}else {if(c+3>=f)break;b[c++]=240|u>>18;b[c++]=128|u>>12&63;}b[c++]=128|u>>6&63;}b[c++]=128|u&63;}}b[c]=0;return c-h},qa=a=>{for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);127>=f?b++:2047>=
7971
- f?b+=2:55296<=f&&57343>=f?(b+=4,++c):b+=3;}return b},Oc="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,Pc=(a,b)=>{var c=a>>1;for(var f=c+b/2;!(c>=f)&&Sa[c];)++c;c<<=1;if(32<c-a&&Oc)return Oc.decode(K.subarray(a,c));c="";for(f=0;!(f>=b/2);++f){var h=Ra[a+2*f>>1];if(0==h)break;c+=String.fromCharCode(h);}return c},Qc=(a,b,c)=>{ void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var f=b;c=c<2*a.length?c/2:a.length;for(var h=0;h<c;++h)Ra[b>>1]=a.charCodeAt(h),b+=2;Ra[b>>1]=0;return b-f},
7972
- Rc=a=>2*a.length,Sc=(a,b)=>{for(var c=0,f="";!(c>=b/4);){var h=R[a+4*c>>2];if(0==h)break;++c;65536<=h?(h-=65536,f+=String.fromCharCode(55296|h>>10,56320|h&1023)):f+=String.fromCharCode(h);}return f},Tc=(a,b,c)=>{ void 0===c&&(c=2147483647);if(4>c)return 0;var f=b;c=f+c-4;for(var h=0;h<a.length;++h){var m=a.charCodeAt(h);if(55296<=m&&57343>=m){var u=a.charCodeAt(++h);m=65536+((m&1023)<<10)|u&1023;}R[b>>2]=m;b+=4;if(b+4>c)break}R[b>>2]=0;return b-f},Uc=a=>{for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);
7973
- 55296<=f&&57343>=f&&++c;b+=4;}return b},Vc={};function Wc(a){var b=Vc[a];return void 0===b?Ib(a):b}var Xc=[];
7974
- function Yc(){function a(b){b.$$$embind_global$$$=b;var c="object"==typeof $$$embind_global$$$&&b.$$$embind_global$$$==b;c||delete b.$$$embind_global$$$;return c}if("object"==typeof globalThis)return globalThis;if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;"object"==typeof commonjsGlobal&&a(commonjsGlobal)?$$$embind_global$$$=commonjsGlobal:"object"==typeof self&&a(self)&&($$$embind_global$$$=self);if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;throw Error("unable to get global object.");
7975
- }function Zc(a){var b=Xc.length;Xc.push(a);return b}function $c(a,b){for(var c=Array(a),f=0;f<a;++f)c[f]=Lc(Ua[b+4*f>>2],"parameter "+f);return c}var ad=[];function bd(a){var b=Array(a+1);return function(c,f,h){b[0]=c;for(var m=0;m<a;++m){var u=Lc(Ua[f+4*m>>2],"parameter "+m);b[m+1]=u.readValueFromPointer(h);h+=u.argPackAdvance;}c=new (c.bind.apply(c,b));return nc(c)}}var cd={};
7976
- function dd(a){var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=function(c,f){b.vertexAttribDivisorANGLE(c,f);},a.drawArraysInstanced=function(c,f,h,m){b.drawArraysInstancedANGLE(c,f,h,m);},a.drawElementsInstanced=function(c,f,h,m,u){b.drawElementsInstancedANGLE(c,f,h,m,u);});}
7977
- function ed(a){var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=function(){return b.createVertexArrayOES()},a.deleteVertexArray=function(c){b.deleteVertexArrayOES(c);},a.bindVertexArray=function(c){b.bindVertexArrayOES(c);},a.isVertexArray=function(c){return b.isVertexArrayOES(c)});}function fd(a){var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=function(c,f){b.drawBuffersWEBGL(c,f);});}
7978
- var gd=1,hd=[],jd=[],kd=[],ld=[],ia=[],md=[],nd=[],pa=[],od=[],pd=[],qd={},rd={},sd=4;function td(a){ud||(ud=a);}function ha(a){for(var b=gd++,c=a.length;c<b;c++)a[c]=null;return b}function la(a,b){a.Ge||(a.Ge=a.getContext,a.getContext=function(f,h){h=a.Ge(f,h);return "webgl"==f==h instanceof WebGLRenderingContext?h:null});var c=1<b.majorVersion?a.getContext("webgl2",b):a.getContext("webgl",b);return c?vd(c,b):0}
7979
- function vd(a,b){var c=ha(pa),f={handle:c,attributes:b,version:b.majorVersion,fe:a};a.canvas&&(a.canvas.zf=f);pa[c]=f;("undefined"==typeof b.Nf||b.Nf)&&yd(f);return c}function oa(a){A=pa[a];w.rg=Z=A&&A.fe;return !(a&&!Z)}
7980
- function yd(a){a||(a=A);if(!a.Xf){a.Xf=true;var b=a.fe;dd(b);ed(b);fd(b);b.pf=b.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");b.uf=b.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");2<=a.version&&(b.qf=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.qf)b.qf=b.getExtension("EXT_disjoint_timer_query");b.sg=b.getExtension("WEBGL_multi_draw");(b.getSupportedExtensions()||[]).forEach(function(c){c.includes("lose_context")||c.includes("debug")||b.getExtension(c);});}}
7981
- var A,ud,zd={},Bd=()=>{if(!Ad){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:ua||"./this.program"},b;for(b in zd) void 0===zd[b]?delete a[b]:a[b]=zd[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);Ad=c;}return Ad},Ad,Cd=[null,[],[]];function Dd(a){Z.bindVertexArray(nd[a]);}
7982
- function Ed(a,b){for(var c=0;c<a;c++){var f=R[b+4*c>>2];Z.deleteVertexArray(nd[f]);nd[f]=null;}}var Fd=[];function Gd(a,b,c,f){Z.drawElements(a,b,c,f);}function Hd(a,b,c,f){for(var h=0;h<a;h++){var m=Z[c](),u=m&&ha(f);m?(m.name=u,f[u]=m):td(1282);R[b+4*h>>2]=u;}}function Id(a,b){Hd(a,b,"createVertexArray",nd);}
7983
- function Jd(a,b,c){if(b){var f=void 0;switch(a){case 36346:f=1;break;case 36344:0!=c&&1!=c&&td(1280);return;case 34814:case 36345:f=0;break;case 34466:var h=Z.getParameter(34467);f=h?h.length:0;break;case 33309:if(2>A.version){td(1282);return}f=2*(Z.getSupportedExtensions()||[]).length;break;case 33307:case 33308:if(2>A.version){td(1280);return}f=33307==a?3:0;}if(void 0===f)switch(h=Z.getParameter(a),typeof h){case "number":f=h;break;case "boolean":f=h?1:0;break;case "string":td(1280);return;case "object":if(null===
7984
- h)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:f=0;break;default:td(1280);return}else {if(h instanceof Float32Array||h instanceof Uint32Array||h instanceof Int32Array||h instanceof Array){for(a=0;a<h.length;++a)switch(c){case 0:R[b+4*a>>2]=h[a];break;case 2:V[b+4*a>>2]=h[a];break;case 4:Qa[b+a>>0]=h[a]?1:0;}return}try{f=h.name|
7985
- 0;}catch(m){td(1280);Ja("GL_INVALID_ENUM in glGet"+c+"v: Unknown object returned from WebGL getParameter("+a+")! (error: "+m+")");return}}break;default:td(1280);Ja("GL_INVALID_ENUM in glGet"+c+"v: Native code calling glGet"+c+"v("+a+") and it returns "+h+" of type "+typeof h+"!");return}switch(c){case 1:c=f;Ua[b>>2]=c;Ua[b+4>>2]=(c-Ua[b>>2])/4294967296;break;case 0:R[b>>2]=f;break;case 2:V[b>>2]=f;break;case 4:Qa[b>>0]=f?1:0;}}else td(1281);}var Ld=a=>{var b=qa(a)+1,c=Kd(b);c&&ra(a,K,c,b);return c};
7986
- function Md(a){return "]"==a.slice(-1)&&a.lastIndexOf("[")}function Nd(a){a-=5120;return 0==a?Qa:1==a?K:2==a?Ra:4==a?R:6==a?V:5==a||28922==a||28520==a||30779==a||30782==a?Ua:Sa}function Od(a,b,c,f,h){a=Nd(a);var m=31-Math.clz32(a.BYTES_PER_ELEMENT),u=sd;return a.subarray(h>>m,h+f*(c*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*(1<<m)+u-1&-u)>>m)}
7987
- function Pd(a){var b=Z.Kf;if(b){var c=b.Ne[a];"number"==typeof c&&(b.Ne[a]=c=Z.getUniformLocation(b,b.xf[a]+(0<c?"["+c+"]":"")));return c}td(1282);}var Qd=[],Rd=[],Sd=a=>0===a%4&&(0!==a%100||0===a%400),Td=[31,29,31,30,31,30,31,31,30,31,30,31],Ud=[31,28,31,30,31,30,31,31,30,31,30,31];function Vd(a){var b=Array(qa(a)+1);ra(a,b,0,b.length);return b}
7988
- var Wd=(a,b,c,f)=>{function h(y,N,T){for(y="number"==typeof y?y.toString():y||"";y.length<N;)y=T[0]+y;return y}function m(y,N){return h(y,N,"0")}function u(y,N){function T(sa){return 0>sa?-1:0<sa?1:0}var S;0===(S=T(y.getFullYear()-N.getFullYear()))&&0===(S=T(y.getMonth()-N.getMonth()))&&(S=T(y.getDate()-N.getDate()));return S}function n(y){switch(y.getDay()){case 0:return new Date(y.getFullYear()-1,11,29);case 1:return y;case 2:return new Date(y.getFullYear(),0,3);case 3:return new Date(y.getFullYear(),
7989
- 0,2);case 4:return new Date(y.getFullYear(),0,1);case 5:return new Date(y.getFullYear()-1,11,31);case 6:return new Date(y.getFullYear()-1,11,30)}}function p(y){var N=y.oe;for(y=new Date((new Date(y.pe+1900,0,1)).getTime());0<N;){var T=y.getMonth(),S=(Sd(y.getFullYear())?Td:Ud)[T];if(N>S-y.getDate())N-=S-y.getDate()+1,y.setDate(1),11>T?y.setMonth(T+1):(y.setMonth(0),y.setFullYear(y.getFullYear()+1));else {y.setDate(y.getDate()+N);break}}T=new Date(y.getFullYear()+1,0,4);N=n(new Date(y.getFullYear(),
7990
- 0,4));T=n(T);return 0>=u(N,y)?0>=u(T,y)?y.getFullYear()+1:y.getFullYear():y.getFullYear()-1}var v=R[f+40>>2];f={pg:R[f>>2],og:R[f+4>>2],Ze:R[f+8>>2],jf:R[f+12>>2],$e:R[f+16>>2],pe:R[f+20>>2],he:R[f+24>>2],oe:R[f+28>>2],vg:R[f+32>>2],ng:R[f+36>>2],qg:v?v?ub(K,v):"":""};c=c?ub(K,c):"";v={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y",
7991
- "%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var E in v)c=c.replace(new RegExp(E,"g"),v[E]);var H="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),L="January February March April May June July August September October November December".split(" ");v={"%a":y=>H[y.he].substring(0,3),"%A":y=>H[y.he],"%b":y=>L[y.$e].substring(0,3),"%B":y=>L[y.$e],"%C":y=>m((y.pe+1900)/
7992
- 100|0,2),"%d":y=>m(y.jf,2),"%e":y=>h(y.jf,2," "),"%g":y=>p(y).toString().substring(2),"%G":y=>p(y),"%H":y=>m(y.Ze,2),"%I":y=>{y=y.Ze;0==y?y=12:12<y&&(y-=12);return m(y,2)},"%j":y=>{for(var N=0,T=0;T<=y.$e-1;N+=(Sd(y.pe+1900)?Td:Ud)[T++]);return m(y.jf+N,3)},"%m":y=>m(y.$e+1,2),"%M":y=>m(y.og,2),"%n":()=>"\n","%p":y=>0<=y.Ze&&12>y.Ze?"AM":"PM","%S":y=>m(y.pg,2),"%t":()=>"\t","%u":y=>y.he||7,"%U":y=>m(Math.floor((y.oe+7-y.he)/7),2),"%V":y=>{var N=Math.floor((y.oe+7-(y.he+6)%7)/7);2>=(y.he+371-y.oe-
7993
- 2)%7&&N++;if(N)53==N&&(T=(y.he+371-y.oe)%7,4==T||3==T&&Sd(y.pe)||(N=1));else {N=52;var T=(y.he+7-y.oe-1)%7;(4==T||5==T&&Sd(y.pe%400-1))&&N++;}return m(N,2)},"%w":y=>y.he,"%W":y=>m(Math.floor((y.oe+7-(y.he+6)%7)/7),2),"%y":y=>(y.pe+1900).toString().substring(2),"%Y":y=>y.pe+1900,"%z":y=>{y=y.ng;var N=0<=y;y=Math.abs(y)/60;return (N?"+":"-")+String("0000"+(y/60*100+y%60)).slice(-4)},"%Z":y=>y.qg,"%%":()=>"%"};c=c.replace(/%%/g,"\x00\x00");for(E in v)c.includes(E)&&(c=c.replace(new RegExp(E,"g"),v[E](f)));
7994
- c=c.replace(/\0\0/g,"%");E=Vd(c);if(E.length>b)return 0;Qa.set(E,a);return E.length-1};Cb=w.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError";}};for(var Xd=Array(256),Yd=0;256>Yd;++Yd)Xd[Yd]=String.fromCharCode(Yd);Hb=Xd;Jb=w.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError";}};
7995
- dc.prototype.isAliasOf=function(a){if(!(this instanceof dc&&a instanceof dc))return false;var b=this.Jd.Vd.Pd,c=this.Jd.Rd,f=a.Jd.Vd.Pd;for(a=a.Jd.Rd;b.$d;)c=b.Oe(c),b=b.$d;for(;f.$d;)a=f.Oe(a),f=f.$d;return b===f&&c===a};
7996
- dc.prototype.clone=function(){this.Jd.Rd||Lb(this);if(this.Jd.Me)return this.Jd.count.value+=1,this;var a=cc,b=Object,c=b.create,f=Object.getPrototypeOf(this),h=this.Jd;a=a(c.call(b,f,{Jd:{value:{count:h.count,Ee:h.Ee,Me:h.Me,Rd:h.Rd,Vd:h.Vd,Yd:h.Yd,ee:h.ee}}}));a.Jd.count.value+=1;a.Jd.Ee=false;return a};dc.prototype["delete"]=function(){this.Jd.Rd||Lb(this);this.Jd.Ee&&!this.Jd.Me&&X("Object already scheduled for deletion");Nb(this);Ob(this.Jd);this.Jd.Me||(this.Jd.Yd=void 0,this.Jd.Rd=void 0);};
7997
- dc.prototype.isDeleted=function(){return !this.Jd.Rd};dc.prototype.deleteLater=function(){this.Jd.Rd||Lb(this);this.Jd.Ee&&!this.Jd.Me&&X("Object already scheduled for deletion");Rb.push(this);1===Rb.length&&Tb&&Tb(Sb);this.Jd.Ee=true;return this};w.getInheritedInstanceCount=function(){return Object.keys(Ub).length};w.getLiveInheritedInstances=function(){var a=[],b;for(b in Ub)Ub.hasOwnProperty(b)&&a.push(Ub[b]);return a};w.flushPendingDeletes=Sb;w.setDelayFunction=function(a){Tb=a;Rb.length&&Tb&&Tb(Sb);};
7998
- pc.prototype.Sf=function(a){this.vf&&(a=this.vf(a));return a};pc.prototype.nf=function(a){this.ke&&this.ke(a);};pc.prototype.argPackAdvance=8;pc.prototype.readValueFromPointer=xb;pc.prototype.deleteObject=function(a){if(null!==a)a["delete"]();};
7999
- pc.prototype.fromWireType=function(a){function b(){return this.Ve?bc(this.Pd.Fe,{Vd:this.bg,Rd:c,ee:this,Yd:a}):bc(this.Pd.Fe,{Vd:this,Rd:a})}var c=this.Sf(a);if(!c)return this.nf(a),null;var f=ac(this.Pd,c);if(void 0!==f){if(0===f.Jd.count.value)return f.Jd.Rd=c,f.Jd.Yd=a,f.clone();f=f.clone();this.nf(a);return f}f=this.Pd.Rf(c);f=Qb[f];if(!f)return b.call(this);f=this.Ue?f.If:f.pointerType;var h=Pb(c,this.Pd,f.Pd);return null===h?b.call(this):this.Ve?bc(f.Pd.Fe,{Vd:f,Rd:h,ee:this,Yd:a}):bc(f.Pd.Fe,
8000
- {Vd:f,Rd:h})};tc=w.UnboundTypeError=function(a,b){var c=fc(b,function(f){this.name=b;this.message=f;f=Error(f).stack;void 0!==f&&(this.stack=this.toString()+"\n"+f.replace(/^Error(:[^\n]*)?\n/,""));});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c}(Error,"UnboundTypeError");
8001
- Object.assign(Gc.prototype,{get(a){return this.je[a]},has(a){return void 0!==this.je[a]},Af(a){var b=this.sf.pop()||this.je.length;this.je[b]=a;return b},Bf(a){this.je[a]=void 0;this.sf.push(a);}});Hc.je.push({value:void 0},{value:null},{value:true},{value:false});Hc.Ge=Hc.je.length;w.count_emval_handles=function(){for(var a=0,b=Hc.Ge;b<Hc.je.length;++b) void 0!==Hc.je[b]&&++a;return a};for(var Z,Zd=0;32>Zd;++Zd)Fd.push(Array(Zd));var $d=new Float32Array(288);
8002
- for(Zd=0;288>Zd;++Zd)Qd[Zd]=$d.subarray(0,Zd+1);var ae=new Int32Array(288);for(Zd=0;288>Zd;++Zd)Rd[Zd]=ae.subarray(0,Zd+1);
8003
- var qe={T:function(){return 0},Bb:()=>{},Db:function(){return 0},yb:()=>{},zb:()=>{},U:function(){},Ab:()=>{},C:function(a){var b=vb[a];delete vb[a];var c=b.hf,f=b.ke,h=b.rf,m=h.map(u=>u.Vf).concat(h.map(u=>u.fg));Eb([a],m,u=>{var n={};h.forEach((p,v)=>{var E=u[v],H=p.Tf,L=p.Uf,y=u[v+h.length],N=p.eg,T=p.gg;n[p.Of]={read:S=>E.fromWireType(H(L,S)),write:(S,sa)=>{var ma=[];N(T,S,y.toWireType(ma,sa));wb(ma);}};});return [{name:b.name,fromWireType:function(p){var v={},E;for(E in n)v[E]=n[E].read(p);f(p);
8004
- return v},toWireType:function(p,v){for(var E in n)if(!(E in v))throw new TypeError(`Missing field: "${E}"`);var H=c();for(E in n)n[E].write(H,v[E]);null!==p&&p.push(f,H);return H},argPackAdvance:8,readValueFromPointer:xb,de:f}]});},qb:function(){},Hb:function(a,b,c,f,h){var m=Gb(c);b=Ib(b);Fb(a,{name:b,fromWireType:function(u){return !!u},toWireType:function(u,n){return n?f:h},argPackAdvance:8,readValueFromPointer:function(u){if(1===c)var n=Qa;else if(2===c)n=Ra;else if(4===c)n=R;else throw new TypeError("Unknown boolean type size: "+
8005
- b);return this.fromWireType(n[u>>m])},de:null});},m:function(a,b,c,f,h,m,u,n,p,v,E,H,L){E=Ib(E);m=sc(h,m);n&&(n=sc(u,n));v&&(v=sc(p,v));L=sc(H,L);var y=ec(E);hc(y,function(){Dc(`Cannot construct ${E} due to unbound types`,[f]);});Eb([a,b,c],f?[f]:[],function(N){N=N[0];if(f){var T=N.Pd;var S=T.Fe;}else S=dc.prototype;N=fc(y,function(){if(Object.getPrototypeOf(this)!==sa)throw new Jb("Use 'new' to construct "+E);if(void 0===ma.ne)throw new Jb(E+" has no accessible constructor");var hb=ma.ne[arguments.length];
8006
- if(void 0===hb)throw new Jb(`Tried to invoke ctor of ${E} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(ma.ne).toString()}) parameters instead!`);return hb.apply(this,arguments)});var sa=Object.create(S,{constructor:{value:N}});N.prototype=sa;var ma=new ic(E,N,sa,L,T,m,n,v);ma.$d&&(void 0===ma.$d.Pe&&(ma.$d.Pe=[]),ma.$d.Pe.push(ma));T=new pc(E,ma,true,false,false);S=new pc(E+"*",ma,false,false,false);var gb=new pc(E+" const*",ma,false,true,false);Qb[a]={pointerType:S,If:gb};qc(y,N);return [T,
8007
- S,gb]});},f:function(a,b,c,f,h,m,u){var n=Fc(c,f);b=Ib(b);m=sc(h,m);Eb([],[a],function(p){function v(){Dc(`Cannot call ${E} due to unbound types`,n);}p=p[0];var E=`${p.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);var H=p.Pd.constructor;void 0===H[b]?(v.Ce=c-1,H[b]=v):(gc(H,b,E),H[b].Xd[c-1]=v);Eb([],n,function(L){L=[L[0],null].concat(L.slice(1));L=Ec(E,L,null,m,u);void 0===H[b].Xd?(L.Ce=c-1,H[b]=L):H[b].Xd[c-1]=L;if(p.Pd.Pe)for(const y of p.Pd.Pe)y.constructor.hasOwnProperty(b)||(y.constructor[b]=
8008
- L);return []});return []});},A:function(a,b,c,f,h,m){var u=Fc(b,c);h=sc(f,h);Eb([],[a],function(n){n=n[0];var p=`constructor ${n.name}`;void 0===n.Pd.ne&&(n.Pd.ne=[]);if(void 0!==n.Pd.ne[b-1])throw new Jb(`Cannot register multiple constructors with identical number of parameters (${b-1}) for class '${n.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);n.Pd.ne[b-1]=()=>{Dc(`Cannot construct ${n.name} due to unbound types`,u);};Eb([],u,function(v){v.splice(1,
8009
- 0,null);n.Pd.ne[b-1]=Ec(p,v,null,h,m);return []});return []});},b:function(a,b,c,f,h,m,u,n){var p=Fc(c,f);b=Ib(b);m=sc(h,m);Eb([],[a],function(v){function E(){Dc(`Cannot call ${H} due to unbound types`,p);}v=v[0];var H=`${v.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);n&&v.Pd.cg.push(b);var L=v.Pd.Fe,y=L[b];void 0===y||void 0===y.Xd&&y.className!==v.name&&y.Ce===c-2?(E.Ce=c-2,E.className=v.name,L[b]=E):(gc(L,b,H),L[b].Xd[c-2]=E);Eb([],p,function(N){N=Ec(H,N,v,m,u);void 0===L[b].Xd?(N.Ce=
8010
- c-2,L[b]=N):L[b].Xd[c-2]=N;return []});return []});},t:function(a,b,c){a=Ib(a);Eb([],[b],function(f){f=f[0];w[a]=f.fromWireType(c);return []});},Gb:function(a,b){b=Ib(b);Fb(a,{name:b,fromWireType:function(c){var f=Jc(c);Ic(c);return f},toWireType:function(c,f){return nc(f)},argPackAdvance:8,readValueFromPointer:xb,de:null});},l:function(a,b,c,f){function h(){}c=Gb(c);b=Ib(b);h.values={};Fb(a,{name:b,constructor:h,fromWireType:function(m){return this.constructor.values[m]},toWireType:function(m,u){return u.value},
8011
- argPackAdvance:8,readValueFromPointer:Kc(b,c,f),de:null});hc(b,h);},c:function(a,b,c){var f=Lc(a,"enum");b=Ib(b);a=f.constructor;f=Object.create(f.constructor.prototype,{value:{value:c},constructor:{value:fc(`${f.name}_${b}`,function(){})}});a.values[c]=f;a[b]=f;},W:function(a,b,c){c=Gb(c);b=Ib(b);Fb(a,{name:b,fromWireType:function(f){return f},toWireType:function(f,h){return h},argPackAdvance:8,readValueFromPointer:Mc(b,c),de:null});},y:function(a,b,c,f,h,m){var u=Fc(b,c);a=Ib(a);h=sc(f,h);hc(a,function(){Dc(`Cannot call ${a} due to unbound types`,
8012
- u);},b-1);Eb([],u,function(n){n=[n[0],null].concat(n.slice(1));qc(a,Ec(a,n,null,h,m),b-1);return []});},E:function(a,b,c,f,h){b=Ib(b);-1===h&&(h=4294967295);h=Gb(c);var m=n=>n;if(0===f){var u=32-8*c;m=n=>n<<u>>>u;}c=b.includes("unsigned")?function(n,p){return p>>>0}:function(n,p){return p};Fb(a,{name:b,fromWireType:m,toWireType:c,argPackAdvance:8,readValueFromPointer:Nc(b,h,0!==f),de:null});},s:function(a,b,c){function f(m){m>>=2;var u=Ua;return new h(u.buffer,u[m+1],u[m])}var h=[Int8Array,Uint8Array,
8013
- Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=Ib(c);Fb(a,{name:c,fromWireType:f,argPackAdvance:8,readValueFromPointer:f},{Wf:true});},q:function(a,b,c,f,h,m,u,n,p,v,E,H){c=Ib(c);m=sc(h,m);n=sc(u,n);v=sc(p,v);H=sc(E,H);Eb([a],[b],function(L){L=L[0];return [new pc(c,L.Pd,false,false,true,L,f,m,n,v,H)]});},V:function(a,b){b=Ib(b);var c="std::string"===b;Fb(a,{name:b,fromWireType:function(f){var h=Ua[f>>2],m=f+4;if(c)for(var u=m,n=0;n<=h;++n){var p=m+n;if(n==h||0==K[p]){u=u?ub(K,u,
8014
- p-u):"";if(void 0===v)var v=u;else v+=String.fromCharCode(0),v+=u;u=p+1;}}else {v=Array(h);for(n=0;n<h;++n)v[n]=String.fromCharCode(K[m+n]);v=v.join("");}wc(f);return v},toWireType:function(f,h){h instanceof ArrayBuffer&&(h=new Uint8Array(h));var m="string"==typeof h;m||h instanceof Uint8Array||h instanceof Uint8ClampedArray||h instanceof Int8Array||X("Cannot pass non-string to std::string");var u=c&&m?qa(h):h.length;var n=Kd(4+u+1),p=n+4;Ua[n>>2]=u;if(c&&m)ra(h,K,p,u+1);else if(m)for(m=0;m<u;++m){var v=
8015
- h.charCodeAt(m);255<v&&(wc(p),X("String has UTF-16 code units that do not fit in 8 bits"));K[p+m]=v;}else for(m=0;m<u;++m)K[p+m]=h[m];null!==f&&f.push(wc,n);return n},argPackAdvance:8,readValueFromPointer:xb,de:function(f){wc(f);}});},N:function(a,b,c){c=Ib(c);if(2===b){var f=Pc;var h=Qc;var m=Rc;var u=()=>Sa;var n=1;}else 4===b&&(f=Sc,h=Tc,m=Uc,u=()=>Ua,n=2);Fb(a,{name:c,fromWireType:function(p){for(var v=Ua[p>>2],E=u(),H,L=p+4,y=0;y<=v;++y){var N=p+4+y*b;if(y==v||0==E[N>>n])L=f(L,N-L),void 0===H?H=
8016
- L:(H+=String.fromCharCode(0),H+=L),L=N+b;}wc(p);return H},toWireType:function(p,v){"string"!=typeof v&&X(`Cannot pass non-string to C++ string type ${c}`);var E=m(v),H=Kd(4+E+b);Ua[H>>2]=E>>n;h(v,H+4,E+b);null!==p&&p.push(wc,H);return H},argPackAdvance:8,readValueFromPointer:xb,de:function(p){wc(p);}});},D:function(a,b,c,f,h,m){vb[a]={name:Ib(b),hf:sc(c,f),ke:sc(h,m),rf:[]};},e:function(a,b,c,f,h,m,u,n,p,v){vb[a].rf.push({Of:Ib(b),Vf:c,Tf:sc(f,h),Uf:m,fg:u,eg:sc(n,p),gg:v});},Ib:function(a,b){b=Ib(b);
8017
- Fb(a,{Yf:true,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}});},Fb:()=>true,ub:()=>{throw Infinity;},F:function(a,b,c){a=Jc(a);b=Lc(b,"emval::as");var f=[],h=nc(f);Ua[c>>2]=h;return b.toWireType(f,a)},Z:function(a,b,c,f,h){a=Xc[a];b=Jc(b);c=Wc(c);var m=[];Ua[f>>2]=nc(m);return a(b,c,m,h)},w:function(a,b,c,f){a=Xc[a];b=Jc(b);c=Wc(c);a(b,c,null,f);},d:Ic,K:function(a){if(0===a)return nc(Yc());a=Wc(a);return nc(Yc()[a])},u:function(a,b){var c=$c(a,b),f=c[0];b=f.name+"_$"+c.slice(1).map(function(u){return u.name}).join("_")+
8018
- "$";var h=ad[b];if(void 0!==h)return h;var m=Array(a-1);h=Zc((u,n,p,v)=>{for(var E=0,H=0;H<a-1;++H)m[H]=c[H+1].readValueFromPointer(v+E),E+=c[H+1].argPackAdvance;u=u[n].apply(u,m);for(H=0;H<a-1;++H)c[H+1].Lf&&c[H+1].Lf(m[H]);if(!f.Yf)return f.toWireType(p,u)});return ad[b]=h},z:function(a,b){a=Jc(a);b=Jc(b);return nc(a[b])},p:function(a){4<a&&(Hc.get(a).wf+=1);},J:function(a,b,c,f){a=Jc(a);var h=cd[b];h||(h=bd(b),cd[b]=h);return h(a,c,f)},H:function(){return nc([])},g:function(a){return nc(Wc(a))},
8019
- G:function(){return nc({})},kb:function(a){a=Jc(a);return !a},B:function(a){var b=Jc(a);wb(b);Ic(a);},i:function(a,b,c){a=Jc(a);b=Jc(b);c=Jc(c);a[b]=c;},h:function(a,b){a=Lc(a,"_emval_take_value");a=a.readValueFromPointer(b);return nc(a)},nb:function(){return -52},ob:function(){},a:()=>{La("");},Eb:()=>performance.now(),vb:a=>{var b=K.length;a>>>=0;if(2147483648<a)return false;for(var c=1;4>=c;c*=2){var f=b*(1+.2/c);f=Math.min(f,a+100663296);var h=Math;f=Math.max(a,f);a:{h=h.min.call(h,2147483648,f+(65536-
8020
- f%65536)%65536)-Ma.buffer.byteLength+65535>>>16;try{Ma.grow(h);Wa();var m=1;break a}catch(u){}m=void 0;}if(m)return true}return false},lb:function(){return A?A.handle:0},wb:(a,b)=>{var c=0;Bd().forEach(function(f,h){var m=b+c;h=Ua[a+4*h>>2]=m;for(m=0;m<f.length;++m)Qa[h++>>0]=f.charCodeAt(m);Qa[h>>0]=0;c+=f.length+1;});return 0},xb:(a,b)=>{var c=Bd();Ua[a>>2]=c.length;var f=0;c.forEach(function(h){f+=h.length+1;});Ua[b>>2]=f;return 0},Jb:a=>{xa(a,new rb(a));},
8021
- M:()=>52,mb:function(){return 52},Cb:()=>52,pb:function(){return 70},S:(a,b,c,f)=>{for(var h=0,m=0;m<c;m++){var u=Ua[b>>2],n=Ua[b+4>>2];b+=8;for(var p=0;p<n;p++){var v=K[u+p],E=Cd[a];0===v||10===v?((1===a?Ha:Ja)(ub(E,0)),E.length=0):E.push(v);}h+=n;}Ua[f>>2]=h;return 0},aa:function(a){Z.activeTexture(a);},ba:function(a,b){Z.attachShader(jd[a],md[b]);},ca:function(a,b,c){Z.bindAttribLocation(jd[a],b,c?ub(K,c):"");},da:function(a,b){35051==a?Z.ef=b:35052==a&&(Z.De=b);Z.bindBuffer(a,hd[b]);},$:function(a,
8022
- b){Z.bindFramebuffer(a,kd[b]);},fc:function(a,b){Z.bindRenderbuffer(a,ld[b]);},Rb:function(a,b){Z.bindSampler(a,od[b]);},ea:function(a,b){Z.bindTexture(a,ia[b]);},zc:Dd,Cc:Dd,fa:function(a,b,c,f){Z.blendColor(a,b,c,f);},ga:function(a){Z.blendEquation(a);},ha:function(a,b){Z.blendFunc(a,b);},$b:function(a,b,c,f,h,m,u,n,p,v){Z.blitFramebuffer(a,b,c,f,h,m,u,n,p,v);},ia:function(a,b,c,f){2<=A.version?c&&b?Z.bufferData(a,K,f,c,b):Z.bufferData(a,b,f):Z.bufferData(a,c?K.subarray(c,c+b):b,f);},ja:function(a,b,c,f){2<=
8023
- A.version?c&&Z.bufferSubData(a,b,K,f,c):Z.bufferSubData(a,b,K.subarray(f,f+c));},gc:function(a){return Z.checkFramebufferStatus(a)},Q:function(a){Z.clear(a);},_:function(a,b,c,f){Z.clearColor(a,b,c,f);},R:function(a){Z.clearStencil(a);},sb:function(a,b,c,f){return Z.clientWaitSync(pd[a],b,(c>>>0)+4294967296*f)},ka:function(a,b,c,f){Z.colorMask(!!a,!!b,!!c,!!f);},la:function(a){Z.compileShader(md[a]);},ma:function(a,b,c,f,h,m,u,n){2<=A.version?Z.De||!u?Z.compressedTexImage2D(a,b,c,f,h,m,u,n):Z.compressedTexImage2D(a,
8024
- b,c,f,h,m,K,n,u):Z.compressedTexImage2D(a,b,c,f,h,m,n?K.subarray(n,n+u):null);},na:function(a,b,c,f,h,m,u,n,p){2<=A.version?Z.De||!n?Z.compressedTexSubImage2D(a,b,c,f,h,m,u,n,p):Z.compressedTexSubImage2D(a,b,c,f,h,m,u,K,p,n):Z.compressedTexSubImage2D(a,b,c,f,h,m,u,p?K.subarray(p,p+n):null);},Zb:function(a,b,c,f,h){Z.copyBufferSubData(a,b,c,f,h);},oa:function(a,b,c,f,h,m,u,n){Z.copyTexSubImage2D(a,b,c,f,h,m,u,n);},pa:function(){var a=ha(jd),b=Z.createProgram();b.name=a;b.Ye=b.We=b.Xe=0;b.kf=1;jd[a]=b;
8025
- return a},qa:function(a){var b=ha(md);md[b]=Z.createShader(a);return b},ra:function(a){Z.cullFace(a);},sa:function(a,b){for(var c=0;c<a;c++){var f=R[b+4*c>>2],h=hd[f];h&&(Z.deleteBuffer(h),h.name=0,hd[f]=null,f==Z.ef&&(Z.ef=0),f==Z.De&&(Z.De=0));}},hc:function(a,b){for(var c=0;c<a;++c){var f=R[b+4*c>>2],h=kd[f];h&&(Z.deleteFramebuffer(h),h.name=0,kd[f]=null);}},ta:function(a){if(a){var b=jd[a];b?(Z.deleteProgram(b),b.name=0,jd[a]=null):td(1281);}},ic:function(a,b){for(var c=0;c<a;c++){var f=R[b+4*c>>
8026
- 2],h=ld[f];h&&(Z.deleteRenderbuffer(h),h.name=0,ld[f]=null);}},Sb:function(a,b){for(var c=0;c<a;c++){var f=R[b+4*c>>2],h=od[f];h&&(Z.deleteSampler(h),h.name=0,od[f]=null);}},ua:function(a){if(a){var b=md[a];b?(Z.deleteShader(b),md[a]=null):td(1281);}},_b:function(a){if(a){var b=pd[a];b?(Z.deleteSync(b),b.name=0,pd[a]=null):td(1281);}},va:function(a,b){for(var c=0;c<a;c++){var f=R[b+4*c>>2],h=ia[f];h&&(Z.deleteTexture(h),h.name=0,ia[f]=null);}},Ac:Ed,Dc:Ed,wa:function(a){Z.depthMask(!!a);},xa:function(a){Z.disable(a);},
8027
- ya:function(a){Z.disableVertexAttribArray(a);},za:function(a,b,c){Z.drawArrays(a,b,c);},xc:function(a,b,c,f){Z.drawArraysInstanced(a,b,c,f);},vc:function(a,b,c,f,h){Z.pf.drawArraysInstancedBaseInstanceWEBGL(a,b,c,f,h);},tc:function(a,b){for(var c=Fd[a],f=0;f<a;f++)c[f]=R[b+4*f>>2];Z.drawBuffers(c);},Aa:Gd,yc:function(a,b,c,f,h){Z.drawElementsInstanced(a,b,c,f,h);},wc:function(a,b,c,f,h,m,u){Z.pf.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,f,h,m,u);},nc:function(a,b,c,f,h,m){Gd(a,f,h,m);},Ba:function(a){Z.enable(a);},
8028
- Ca:function(a){Z.enableVertexAttribArray(a);},Xb:function(a,b){return (a=Z.fenceSync(a,b))?(b=ha(pd),a.name=b,pd[b]=a,b):0},Da:function(){Z.finish();},Ea:function(){Z.flush();},jc:function(a,b,c,f){Z.framebufferRenderbuffer(a,b,c,ld[f]);},kc:function(a,b,c,f,h){Z.framebufferTexture2D(a,b,c,ia[f],h);},Fa:function(a){Z.frontFace(a);},Ga:function(a,b){Hd(a,b,"createBuffer",hd);},lc:function(a,b){Hd(a,b,"createFramebuffer",kd);},mc:function(a,b){Hd(a,b,"createRenderbuffer",ld);},Tb:function(a,b){Hd(a,b,"createSampler",
8029
- od);},Ha:function(a,b){Hd(a,b,"createTexture",ia);},Bc:Id,Ec:Id,bc:function(a){Z.generateMipmap(a);},Ia:function(a,b,c){c?R[c>>2]=Z.getBufferParameter(a,b):td(1281);},Ja:function(){var a=Z.getError()||ud;ud=0;return a},Ka:function(a,b){Jd(a,b,2);},cc:function(a,b,c,f){a=Z.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;R[f>>2]=a;},L:function(a,b){Jd(a,b,0);},La:function(a,b,c,f){a=Z.getProgramInfoLog(jd[a]);null===a&&(a="(unknown error)");
8030
- b=0<b&&f?ra(a,K,f,b):0;c&&(R[c>>2]=b);},Ma:function(a,b,c){if(c)if(a>=gd)td(1281);else if(a=jd[a],35716==b)a=Z.getProgramInfoLog(a),null===a&&(a="(unknown error)"),R[c>>2]=a.length+1;else if(35719==b){if(!a.Ye)for(b=0;b<Z.getProgramParameter(a,35718);++b)a.Ye=Math.max(a.Ye,Z.getActiveUniform(a,b).name.length+1);R[c>>2]=a.Ye;}else if(35722==b){if(!a.We)for(b=0;b<Z.getProgramParameter(a,35721);++b)a.We=Math.max(a.We,Z.getActiveAttrib(a,b).name.length+1);R[c>>2]=a.We;}else if(35381==b){if(!a.Xe)for(b=0;b<
8031
- Z.getProgramParameter(a,35382);++b)a.Xe=Math.max(a.Xe,Z.getActiveUniformBlockName(a,b).length+1);R[c>>2]=a.Xe;}else R[c>>2]=Z.getProgramParameter(a,b);else td(1281);},dc:function(a,b,c){c?R[c>>2]=Z.getRenderbufferParameter(a,b):td(1281);},Na:function(a,b,c,f){a=Z.getShaderInfoLog(md[a]);null===a&&(a="(unknown error)");b=0<b&&f?ra(a,K,f,b):0;c&&(R[c>>2]=b);},Ob:function(a,b,c,f){a=Z.getShaderPrecisionFormat(a,b);R[c>>2]=a.rangeMin;R[c+4>>2]=a.rangeMax;R[f>>2]=a.precision;},Oa:function(a,b,c){c?35716==b?
8032
- (a=Z.getShaderInfoLog(md[a]),null===a&&(a="(unknown error)"),R[c>>2]=a?a.length+1:0):35720==b?(a=Z.getShaderSource(md[a]),R[c>>2]=a?a.length+1:0):R[c>>2]=Z.getShaderParameter(md[a],b):td(1281);},P:function(a){var b=qd[a];if(!b){switch(a){case 7939:b=Z.getSupportedExtensions()||[];b=b.concat(b.map(function(f){return "GL_"+f}));b=Ld(b.join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=Z.getParameter(a))||td(1280);b=b&&Ld(b);break;case 7938:b=Z.getParameter(7938);b=2<=A.version?"OpenGL ES 3.0 ("+
8033
- b+")":"OpenGL ES 2.0 ("+b+")";b=Ld(b);break;case 35724:b=Z.getParameter(35724);var c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b="OpenGL ES GLSL ES "+c[1]+" ("+b+")");b=Ld(b);break;default:td(1280);}qd[a]=b;}return b},jb:function(a,b){if(2>A.version)return td(1282),0;var c=rd[a];if(c)return 0>b||b>=c.length?(td(1281),0):c[b];switch(a){case 7939:return c=Z.getSupportedExtensions()||[],c=c.concat(c.map(function(f){return "GL_"+f})),c=c.map(function(f){return Ld(f)}),
8034
- c=rd[a]=c,0>b||b>=c.length?(td(1281),0):c[b];default:return td(1280),0}},Pa:function(a,b){b=b?ub(K,b):"";if(a=jd[a]){var c=a,f=c.Ne,h=c.yf,m;if(!f)for(c.Ne=f={},c.xf={},m=0;m<Z.getProgramParameter(c,35718);++m){var u=Z.getActiveUniform(c,m);var n=u.name;u=u.size;var p=Md(n);p=0<p?n.slice(0,p):n;var v=c.kf;c.kf+=u;h[p]=[u,v];for(n=0;n<u;++n)f[v]=n,c.xf[v++]=p;}c=a.Ne;f=0;h=b;m=Md(b);0<m&&(f=parseInt(b.slice(m+1))>>>0,h=b.slice(0,m));if((h=a.yf[h])&&f<h[0]&&(f+=h[1],c[f]=c[f]||Z.getUniformLocation(a,
8035
- b)))return f}else td(1281);return -1},Pb:function(a,b,c){for(var f=Fd[b],h=0;h<b;h++)f[h]=R[c+4*h>>2];Z.invalidateFramebuffer(a,f);},Qb:function(a,b,c,f,h,m,u){for(var n=Fd[b],p=0;p<b;p++)n[p]=R[c+4*p>>2];Z.invalidateSubFramebuffer(a,n,f,h,m,u);},Yb:function(a){return Z.isSync(pd[a])},Qa:function(a){return (a=ia[a])?Z.isTexture(a):0},Ra:function(a){Z.lineWidth(a);},Sa:function(a){a=jd[a];Z.linkProgram(a);a.Ne=0;a.yf={};},rc:function(a,b,c,f,h,m){Z.uf.multiDrawArraysInstancedBaseInstanceWEBGL(a,R,b>>2,R,
8036
- c>>2,R,f>>2,Ua,h>>2,m);},sc:function(a,b,c,f,h,m,u,n){Z.uf.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,R,b>>2,c,R,f>>2,R,h>>2,R,m>>2,Ua,u>>2,n);},Ta:function(a,b){3317==a&&(sd=b);Z.pixelStorei(a,b);},uc:function(a){Z.readBuffer(a);},Ua:function(a,b,c,f,h,m,u){if(2<=A.version)if(Z.ef)Z.readPixels(a,b,c,f,h,m,u);else {var n=Nd(m);Z.readPixels(a,b,c,f,h,m,n,u>>31-Math.clz32(n.BYTES_PER_ELEMENT));}else (u=Od(m,h,c,f,u))?Z.readPixels(a,b,c,f,h,m,u):td(1280);},ec:function(a,b,c,f){Z.renderbufferStorage(a,
8037
- b,c,f);},ac:function(a,b,c,f,h){Z.renderbufferStorageMultisample(a,b,c,f,h);},Ub:function(a,b,c){Z.samplerParameterf(od[a],b,c);},Vb:function(a,b,c){Z.samplerParameteri(od[a],b,c);},Wb:function(a,b,c){Z.samplerParameteri(od[a],b,R[c>>2]);},Va:function(a,b,c,f){Z.scissor(a,b,c,f);},Wa:function(a,b,c,f){for(var h="",m=0;m<b;++m){var u=f?R[f+4*m>>2]:-1,n=R[c+4*m>>2];u=n?ub(K,n,0>u?void 0:u):"";h+=u;}Z.shaderSource(md[a],h);},Xa:function(a,b,c){Z.stencilFunc(a,b,c);},Ya:function(a,b,c,f){Z.stencilFuncSeparate(a,
8038
- b,c,f);},Za:function(a){Z.stencilMask(a);},_a:function(a,b){Z.stencilMaskSeparate(a,b);},$a:function(a,b,c){Z.stencilOp(a,b,c);},ab:function(a,b,c,f){Z.stencilOpSeparate(a,b,c,f);},bb:function(a,b,c,f,h,m,u,n,p){if(2<=A.version)if(Z.De)Z.texImage2D(a,b,c,f,h,m,u,n,p);else if(p){var v=Nd(n);Z.texImage2D(a,b,c,f,h,m,u,n,v,p>>31-Math.clz32(v.BYTES_PER_ELEMENT));}else Z.texImage2D(a,b,c,f,h,m,u,n,null);else Z.texImage2D(a,b,c,f,h,m,u,n,p?Od(n,u,f,h,p):null);},cb:function(a,b,c){Z.texParameterf(a,b,c);},db:function(a,
8039
- b,c){Z.texParameterf(a,b,V[c>>2]);},eb:function(a,b,c){Z.texParameteri(a,b,c);},fb:function(a,b,c){Z.texParameteri(a,b,R[c>>2]);},oc:function(a,b,c,f,h){Z.texStorage2D(a,b,c,f,h);},gb:function(a,b,c,f,h,m,u,n,p){if(2<=A.version)if(Z.De)Z.texSubImage2D(a,b,c,f,h,m,u,n,p);else if(p){var v=Nd(n);Z.texSubImage2D(a,b,c,f,h,m,u,n,v,p>>31-Math.clz32(v.BYTES_PER_ELEMENT));}else Z.texSubImage2D(a,b,c,f,h,m,u,n,null);else v=null,p&&(v=Od(n,u,h,m,p)),Z.texSubImage2D(a,b,c,f,h,m,u,n,v);},hb:function(a,b){Z.uniform1f(Pd(a),
8040
- b);},ib:function(a,b,c){if(2<=A.version)b&&Z.uniform1fv(Pd(a),V,c>>2,b);else {if(288>=b)for(var f=Qd[b-1],h=0;h<b;++h)f[h]=V[c+4*h>>2];else f=V.subarray(c>>2,c+4*b>>2);Z.uniform1fv(Pd(a),f);}},Zc:function(a,b){Z.uniform1i(Pd(a),b);},_c:function(a,b,c){if(2<=A.version)b&&Z.uniform1iv(Pd(a),R,c>>2,b);else {if(288>=b)for(var f=Rd[b-1],h=0;h<b;++h)f[h]=R[c+4*h>>2];else f=R.subarray(c>>2,c+4*b>>2);Z.uniform1iv(Pd(a),f);}},$c:function(a,b,c){Z.uniform2f(Pd(a),b,c);},ad:function(a,b,c){if(2<=A.version)b&&Z.uniform2fv(Pd(a),
8041
- V,c>>2,2*b);else {if(144>=b)for(var f=Qd[2*b-1],h=0;h<2*b;h+=2)f[h]=V[c+4*h>>2],f[h+1]=V[c+(4*h+4)>>2];else f=V.subarray(c>>2,c+8*b>>2);Z.uniform2fv(Pd(a),f);}},Yc:function(a,b,c){Z.uniform2i(Pd(a),b,c);},Xc:function(a,b,c){if(2<=A.version)b&&Z.uniform2iv(Pd(a),R,c>>2,2*b);else {if(144>=b)for(var f=Rd[2*b-1],h=0;h<2*b;h+=2)f[h]=R[c+4*h>>2],f[h+1]=R[c+(4*h+4)>>2];else f=R.subarray(c>>2,c+8*b>>2);Z.uniform2iv(Pd(a),f);}},Wc:function(a,b,c,f){Z.uniform3f(Pd(a),b,c,f);},Vc:function(a,b,c){if(2<=A.version)b&&
8042
- Z.uniform3fv(Pd(a),V,c>>2,3*b);else {if(96>=b)for(var f=Qd[3*b-1],h=0;h<3*b;h+=3)f[h]=V[c+4*h>>2],f[h+1]=V[c+(4*h+4)>>2],f[h+2]=V[c+(4*h+8)>>2];else f=V.subarray(c>>2,c+12*b>>2);Z.uniform3fv(Pd(a),f);}},Uc:function(a,b,c,f){Z.uniform3i(Pd(a),b,c,f);},Tc:function(a,b,c){if(2<=A.version)b&&Z.uniform3iv(Pd(a),R,c>>2,3*b);else {if(96>=b)for(var f=Rd[3*b-1],h=0;h<3*b;h+=3)f[h]=R[c+4*h>>2],f[h+1]=R[c+(4*h+4)>>2],f[h+2]=R[c+(4*h+8)>>2];else f=R.subarray(c>>2,c+12*b>>2);Z.uniform3iv(Pd(a),f);}},Sc:function(a,
8043
- b,c,f,h){Z.uniform4f(Pd(a),b,c,f,h);},Rc:function(a,b,c){if(2<=A.version)b&&Z.uniform4fv(Pd(a),V,c>>2,4*b);else {if(72>=b){var f=Qd[4*b-1],h=V;c>>=2;for(var m=0;m<4*b;m+=4){var u=c+m;f[m]=h[u];f[m+1]=h[u+1];f[m+2]=h[u+2];f[m+3]=h[u+3];}}else f=V.subarray(c>>2,c+16*b>>2);Z.uniform4fv(Pd(a),f);}},Fc:function(a,b,c,f,h){Z.uniform4i(Pd(a),b,c,f,h);},Gc:function(a,b,c){if(2<=A.version)b&&Z.uniform4iv(Pd(a),R,c>>2,4*b);else {if(72>=b)for(var f=Rd[4*b-1],h=0;h<4*b;h+=4)f[h]=R[c+4*h>>2],f[h+1]=R[c+(4*h+4)>>2],
8044
- f[h+2]=R[c+(4*h+8)>>2],f[h+3]=R[c+(4*h+12)>>2];else f=R.subarray(c>>2,c+16*b>>2);Z.uniform4iv(Pd(a),f);}},Hc:function(a,b,c,f){if(2<=A.version)b&&Z.uniformMatrix2fv(Pd(a),!!c,V,f>>2,4*b);else {if(72>=b)for(var h=Qd[4*b-1],m=0;m<4*b;m+=4)h[m]=V[f+4*m>>2],h[m+1]=V[f+(4*m+4)>>2],h[m+2]=V[f+(4*m+8)>>2],h[m+3]=V[f+(4*m+12)>>2];else h=V.subarray(f>>2,f+16*b>>2);Z.uniformMatrix2fv(Pd(a),!!c,h);}},Ic:function(a,b,c,f){if(2<=A.version)b&&Z.uniformMatrix3fv(Pd(a),!!c,V,f>>2,9*b);else {if(32>=b)for(var h=Qd[9*b-
8045
- 1],m=0;m<9*b;m+=9)h[m]=V[f+4*m>>2],h[m+1]=V[f+(4*m+4)>>2],h[m+2]=V[f+(4*m+8)>>2],h[m+3]=V[f+(4*m+12)>>2],h[m+4]=V[f+(4*m+16)>>2],h[m+5]=V[f+(4*m+20)>>2],h[m+6]=V[f+(4*m+24)>>2],h[m+7]=V[f+(4*m+28)>>2],h[m+8]=V[f+(4*m+32)>>2];else h=V.subarray(f>>2,f+36*b>>2);Z.uniformMatrix3fv(Pd(a),!!c,h);}},Jc:function(a,b,c,f){if(2<=A.version)b&&Z.uniformMatrix4fv(Pd(a),!!c,V,f>>2,16*b);else {if(18>=b){var h=Qd[16*b-1],m=V;f>>=2;for(var u=0;u<16*b;u+=16){var n=f+u;h[u]=m[n];h[u+1]=m[n+1];h[u+2]=m[n+2];h[u+3]=m[n+
8046
- 3];h[u+4]=m[n+4];h[u+5]=m[n+5];h[u+6]=m[n+6];h[u+7]=m[n+7];h[u+8]=m[n+8];h[u+9]=m[n+9];h[u+10]=m[n+10];h[u+11]=m[n+11];h[u+12]=m[n+12];h[u+13]=m[n+13];h[u+14]=m[n+14];h[u+15]=m[n+15];}}else h=V.subarray(f>>2,f+64*b>>2);Z.uniformMatrix4fv(Pd(a),!!c,h);}},Kc:function(a){a=jd[a];Z.useProgram(a);Z.Kf=a;},Lc:function(a,b){Z.vertexAttrib1f(a,b);},Mc:function(a,b){Z.vertexAttrib2f(a,V[b>>2],V[b+4>>2]);},Nc:function(a,b){Z.vertexAttrib3f(a,V[b>>2],V[b+4>>2],V[b+8>>2]);},Oc:function(a,b){Z.vertexAttrib4f(a,V[b>>
8047
- 2],V[b+4>>2],V[b+8>>2],V[b+12>>2]);},pc:function(a,b){Z.vertexAttribDivisor(a,b);},qc:function(a,b,c,f,h){Z.vertexAttribIPointer(a,b,c,f,h);},Pc:function(a,b,c,f,h,m){Z.vertexAttribPointer(a,b,c,!!f,h,m);},Qc:function(a,b,c,f){Z.viewport(a,b,c,f);},rb:function(a,b,c,f){Z.waitSync(pd[a],b,(c>>>0)+4294967296*f);},j:be,n:ce,k:de,I:ee,Lb:fe,Y:ge,X:he,O:ie,o:je,x:ke,r:le,v:me,Kb:ne,Mb:oe,Nb:pe,tb:(a,b,c,f)=>Wd(a,b,c,f)};
8048
- (function(){function a(c){Q=c=c.exports;Ma=Q.bd;Wa();Xa=Q.dd;Za.unshift(Q.cd);db--;w.monitorRunDependencies&&w.monitorRunDependencies(db);if(0==db&&(fb)){var f=fb;fb=null;f();}return c}var b={a:qe};db++;w.monitorRunDependencies&&w.monitorRunDependencies(db);if(w.instantiateWasm)try{return w.instantiateWasm(b,a)}catch(c){Ja("Module.instantiateWasm callback failed with error: "+c),fa(c);}qb(b,function(c){a(c.instance);}).catch(fa);return {}})();
8049
- var wc=w._free=a=>(wc=w._free=Q.ed)(a),Kd=w._malloc=a=>(Kd=w._malloc=Q.fd)(a),vc=a=>(vc=Q.gd)(a);w.__embind_initialize_bindings=()=>(w.__embind_initialize_bindings=Q.hd)();var re=(a,b)=>(re=Q.id)(a,b),se=()=>(se=Q.jd)(),te=a=>(te=Q.kd)(a);w.dynCall_viji=(a,b,c,f,h)=>(w.dynCall_viji=Q.ld)(a,b,c,f,h);w.dynCall_vijiii=(a,b,c,f,h,m,u)=>(w.dynCall_vijiii=Q.md)(a,b,c,f,h,m,u);w.dynCall_viiiiij=(a,b,c,f,h,m,u,n)=>(w.dynCall_viiiiij=Q.nd)(a,b,c,f,h,m,u,n);
8050
- w.dynCall_jiiiijiiiii=(a,b,c,f,h,m,u,n,p,v,E,H)=>(w.dynCall_jiiiijiiiii=Q.od)(a,b,c,f,h,m,u,n,p,v,E,H);w.dynCall_viiij=(a,b,c,f,h,m)=>(w.dynCall_viiij=Q.pd)(a,b,c,f,h,m);w.dynCall_jii=(a,b,c)=>(w.dynCall_jii=Q.qd)(a,b,c);w.dynCall_vij=(a,b,c,f)=>(w.dynCall_vij=Q.rd)(a,b,c,f);w.dynCall_iiij=(a,b,c,f,h)=>(w.dynCall_iiij=Q.sd)(a,b,c,f,h);w.dynCall_iiiij=(a,b,c,f,h,m)=>(w.dynCall_iiiij=Q.td)(a,b,c,f,h,m);w.dynCall_viij=(a,b,c,f,h)=>(w.dynCall_viij=Q.ud)(a,b,c,f,h);
8051
- w.dynCall_ji=(a,b)=>(w.dynCall_ji=Q.vd)(a,b);w.dynCall_iij=(a,b,c,f)=>(w.dynCall_iij=Q.wd)(a,b,c,f);w.dynCall_jiiiiii=(a,b,c,f,h,m,u)=>(w.dynCall_jiiiiii=Q.xd)(a,b,c,f,h,m,u);w.dynCall_jiiiiji=(a,b,c,f,h,m,u,n)=>(w.dynCall_jiiiiji=Q.yd)(a,b,c,f,h,m,u,n);w.dynCall_iijj=(a,b,c,f,h,m)=>(w.dynCall_iijj=Q.zd)(a,b,c,f,h,m);w.dynCall_iiiji=(a,b,c,f,h,m)=>(w.dynCall_iiiji=Q.Ad)(a,b,c,f,h,m);w.dynCall_iiji=(a,b,c,f,h)=>(w.dynCall_iiji=Q.Bd)(a,b,c,f,h);
8052
- w.dynCall_iijjiii=(a,b,c,f,h,m,u,n,p)=>(w.dynCall_iijjiii=Q.Cd)(a,b,c,f,h,m,u,n,p);w.dynCall_vijjjii=(a,b,c,f,h,m,u,n,p,v)=>(w.dynCall_vijjjii=Q.Dd)(a,b,c,f,h,m,u,n,p,v);w.dynCall_jiji=(a,b,c,f,h)=>(w.dynCall_jiji=Q.Ed)(a,b,c,f,h);w.dynCall_viijii=(a,b,c,f,h,m,u)=>(w.dynCall_viijii=Q.Fd)(a,b,c,f,h,m,u);w.dynCall_iiiiij=(a,b,c,f,h,m,u)=>(w.dynCall_iiiiij=Q.Gd)(a,b,c,f,h,m,u);w.dynCall_iiiiijj=(a,b,c,f,h,m,u,n,p)=>(w.dynCall_iiiiijj=Q.Hd)(a,b,c,f,h,m,u,n,p);
8053
- w.dynCall_iiiiiijj=(a,b,c,f,h,m,u,n,p,v)=>(w.dynCall_iiiiiijj=Q.Id)(a,b,c,f,h,m,u,n,p,v);function de(a,b,c,f){var h=se();try{return Xa.get(a)(b,c,f)}catch(m){te(h);if(m!==m+0)throw m;re(1,0);}}function be(a,b){var c=se();try{return Xa.get(a)(b)}catch(f){te(c);if(f!==f+0)throw f;re(1,0);}}function pe(a,b,c,f,h,m,u,n,p,v){var E=se();try{Xa.get(a)(b,c,f,h,m,u,n,p,v);}catch(H){te(E);if(H!==H+0)throw H;re(1,0);}}
8054
- function le(a,b,c,f){var h=se();try{Xa.get(a)(b,c,f);}catch(m){te(h);if(m!==m+0)throw m;re(1,0);}}function ke(a,b,c){var f=se();try{Xa.get(a)(b,c);}catch(h){te(f);if(h!==h+0)throw h;re(1,0);}}function ie(a){var b=se();try{Xa.get(a)();}catch(c){te(b);if(c!==c+0)throw c;re(1,0);}}function me(a,b,c,f,h){var m=se();try{Xa.get(a)(b,c,f,h);}catch(u){te(m);if(u!==u+0)throw u;re(1,0);}}function je(a,b){var c=se();try{Xa.get(a)(b);}catch(f){te(c);if(f!==f+0)throw f;re(1,0);}}
8055
- function ce(a,b,c){var f=se();try{return Xa.get(a)(b,c)}catch(h){te(f);if(h!==h+0)throw h;re(1,0);}}function oe(a,b,c,f,h,m,u){var n=se();try{Xa.get(a)(b,c,f,h,m,u);}catch(p){te(n);if(p!==p+0)throw p;re(1,0);}}function ee(a,b,c,f,h){var m=se();try{return Xa.get(a)(b,c,f,h)}catch(u){te(m);if(u!==u+0)throw u;re(1,0);}}function fe(a,b,c,f,h,m){var u=se();try{return Xa.get(a)(b,c,f,h,m)}catch(n){te(u);if(n!==n+0)throw n;re(1,0);}}
8056
- function ge(a,b,c,f,h,m,u){var n=se();try{return Xa.get(a)(b,c,f,h,m,u)}catch(p){te(n);if(p!==p+0)throw p;re(1,0);}}function ne(a,b,c,f,h,m){var u=se();try{Xa.get(a)(b,c,f,h,m);}catch(n){te(u);if(n!==n+0)throw n;re(1,0);}}function he(a,b,c,f,h,m,u,n,p,v){var E=se();try{return Xa.get(a)(b,c,f,h,m,u,n,p,v)}catch(H){te(E);if(H!==H+0)throw H;re(1,0);}}var ue;fb=function ve(){ue||we();ue||(fb=ve);};
8057
- function we(){function a(){if(!ue&&(ue=true,w.calledRun=true,!Pa)){sb(Za);ba(w);if(w.onRuntimeInitialized)w.onRuntimeInitialized();if(w.postRun)for("function"==typeof w.postRun&&(w.postRun=[w.postRun]);w.postRun.length;){var b=w.postRun.shift();bb.unshift(b);}sb(bb);}}if(!(0<db)){if(w.preRun)for("function"==typeof w.preRun&&(w.preRun=[w.preRun]);w.preRun.length;)cb();sb(Ya);0<db||(w.setStatus?(w.setStatus("Running..."),setTimeout(function(){setTimeout(function(){w.setStatus("");},1);a();},1)):a());}}
8058
- if(w.preInit)for("function"==typeof w.preInit&&(w.preInit=[w.preInit]);0<w.preInit.length;)w.preInit.pop()();we();
8002
+ a.mf();d=d||a.ImageFormat.PNG;g=g||100;return l?this._encodeToBytes(d,g,l):this._encodeToBytes(d,g)};a.Image.prototype.makeShaderCubic=function(d,g,l,t,x){x=G(x);return this._makeShaderCubic(d,g,l,t,x)};a.Image.prototype.makeShaderOptions=function(d,g,l,t,x){x=G(x);return this._makeShaderOptions(d,g,l,t,x)};a.Image.prototype.readPixels=function(d,g,l,t,x){var C=a.mf();return e(this,d,g,l,t,x,C)};a.Canvas.prototype.clear=function(d){a.de(this.be);d=y(d);this._clear(d);};a.Canvas.prototype.clipRRect=
8003
+ function(d,g,l){a.de(this.be);d=sa(d);this._clipRRect(d,g,l);};a.Canvas.prototype.clipRect=function(d,g,l){a.de(this.be);d=S(d);this._clipRect(d,g,l);};a.Canvas.prototype.concat=function(d){a.de(this.be);d=L(d);this._concat(d);};a.Canvas.prototype.drawArc=function(d,g,l,t,x){a.de(this.be);d=S(d);this._drawArc(d,g,l,t,x);};a.Canvas.prototype.drawAtlas=function(d,g,l,t,x,C,K){if(d&&t&&g&&l&&g.length===l.length){a.de(this.be);x||(x=a.BlendMode.SrcOver);var O=v(g,"HEAPF32"),P=v(l,"HEAPF32"),Y=l.length/4,
8004
+ ba=v(m(C),"HEAPU32");if(K&&"B"in K&&"C"in K)this._drawAtlasCubic(d,P,O,ba,Y,x,K.B,K.C,t);else {let r=a.FilterMode.Linear,D=a.MipmapMode.None;K&&(r=K.filter,"mipmap"in K&&(D=K.mipmap));this._drawAtlasOptions(d,P,O,ba,Y,x,r,D,t);}p(O,g);p(P,l);p(ba,C);}};a.Canvas.prototype.drawCircle=function(d,g,l,t){a.de(this.be);this._drawCircle(d,g,l,t);};a.Canvas.prototype.drawColor=function(d,g){a.de(this.be);d=y(d);void 0!==g?this._drawColor(d,g):this._drawColor(d);};a.Canvas.prototype.drawColorInt=function(d,g){a.de(this.be);
8005
+ this._drawColorInt(d,g||a.BlendMode.SrcOver);};a.Canvas.prototype.drawColorComponents=function(d,g,l,t,x){a.de(this.be);d=M(d,g,l,t);void 0!==x?this._drawColor(d,x):this._drawColor(d);};a.Canvas.prototype.drawDRRect=function(d,g,l){a.de(this.be);d=sa(d,$b);g=sa(g,Ec);this._drawDRRect(d,g,l);};a.Canvas.prototype.drawImage=function(d,g,l,t){a.de(this.be);this._drawImage(d,g,l,t||null);};a.Canvas.prototype.drawImageCubic=function(d,g,l,t,x,C){a.de(this.be);this._drawImageCubic(d,g,l,t,x,C||null);};a.Canvas.prototype.drawImageOptions=
8006
+ function(d,g,l,t,x,C){a.de(this.be);this._drawImageOptions(d,g,l,t,x,C||null);};a.Canvas.prototype.drawImageNine=function(d,g,l,t,x){a.de(this.be);g=v(g,"HEAP32",kb);l=S(l);this._drawImageNine(d,g,l,t,x||null);};a.Canvas.prototype.drawImageRect=function(d,g,l,t,x){a.de(this.be);S(g,ka);S(l,Pa);this._drawImageRect(d,ka,Pa,t,!!x);};a.Canvas.prototype.drawImageRectCubic=function(d,g,l,t,x,C){a.de(this.be);S(g,ka);S(l,Pa);this._drawImageRectCubic(d,ka,Pa,t,x,C||null);};a.Canvas.prototype.drawImageRectOptions=
8007
+ function(d,g,l,t,x,C){a.de(this.be);S(g,ka);S(l,Pa);this._drawImageRectOptions(d,ka,Pa,t,x,C||null);};a.Canvas.prototype.drawLine=function(d,g,l,t,x){a.de(this.be);this._drawLine(d,g,l,t,x);};a.Canvas.prototype.drawOval=function(d,g){a.de(this.be);d=S(d);this._drawOval(d,g);};a.Canvas.prototype.drawPaint=function(d){a.de(this.be);this._drawPaint(d);};a.Canvas.prototype.drawParagraph=function(d,g,l){a.de(this.be);this._drawParagraph(d,g,l);};a.Canvas.prototype.drawPatch=function(d,g,l,t,x){if(24>d.length)throw "Need 12 cubic points";
8008
+ if(g&&4>g.length)throw "Need 4 colors";if(l&&8>l.length)throw "Need 4 shader coordinates";a.de(this.be);const C=v(d,"HEAPF32"),K=g?v(m(g),"HEAPU32"):X,O=l?v(l,"HEAPF32"):X;t||(t=a.BlendMode.Modulate);this._drawPatch(C,K,O,t,x);p(O,l);p(K,g);p(C,d);};a.Canvas.prototype.drawPath=function(d,g){a.de(this.be);this._drawPath(d,g);};a.Canvas.prototype.drawPicture=function(d){a.de(this.be);this._drawPicture(d);};a.Canvas.prototype.drawPoints=function(d,g,l){a.de(this.be);var t=v(g,"HEAPF32");this._drawPoints(d,
8009
+ t,g.length/2,l);p(t,g);};a.Canvas.prototype.drawRRect=function(d,g){a.de(this.be);d=sa(d);this._drawRRect(d,g);};a.Canvas.prototype.drawRect=function(d,g){a.de(this.be);d=S(d);this._drawRect(d,g);};a.Canvas.prototype.drawRect4f=function(d,g,l,t,x){a.de(this.be);this._drawRect4f(d,g,l,t,x);};a.Canvas.prototype.drawShadow=function(d,g,l,t,x,C,K){a.de(this.be);var O=v(x,"HEAPF32"),P=v(C,"HEAPF32");g=v(g,"HEAPF32",ac);l=v(l,"HEAPF32",bc);this._drawShadow(d,g,l,t,O,P,K);p(O,x);p(P,C);};a.getShadowLocalBounds=
8010
+ function(d,g,l,t,x,C,K){d=G(d);l=v(l,"HEAPF32",ac);t=v(t,"HEAPF32",bc);if(!this._getShadowLocalBounds(d,g,l,t,x,C,ka))return null;g=Ca.toTypedArray();return K?(K.set(g),K):g.slice()};a.Canvas.prototype.drawTextBlob=function(d,g,l,t){a.de(this.be);this._drawTextBlob(d,g,l,t);};a.Canvas.prototype.drawVertices=function(d,g,l){a.de(this.be);this._drawVertices(d,g,l);};a.Canvas.prototype.getDeviceClipBounds=function(d){this._getDeviceClipBounds(kb);var g=Ab.toTypedArray();d?d.set(g):d=g.slice();return d};
8011
+ a.Canvas.prototype.quickReject=function(d){d=S(d);return this._quickReject(d)};a.Canvas.prototype.getLocalToDevice=function(){this._getLocalToDevice(bb);for(var d=bb,g=Array(16),l=0;16>l;l++)g[l]=a.HEAPF32[d/4+l];return g};a.Canvas.prototype.getTotalMatrix=function(){this._getTotalMatrix(Oa);for(var d=Array(9),g=0;9>g;g++)d[g]=a.HEAPF32[Oa/4+g];return d};a.Canvas.prototype.makeSurface=function(d){d=this._makeSurface(d);d.be=this.be;return d};a.Canvas.prototype.readPixels=function(d,g,l,t,x){a.de(this.be);
8012
+ return e(this,d,g,l,t,x)};a.Canvas.prototype.saveLayer=function(d,g,l,t,x){g=S(g);return this._saveLayer(d||null,g,l||null,t||0,x||a.TileMode.Clamp)};a.Canvas.prototype.writePixels=function(d,g,l,t,x,C,K,O){if(d.byteLength%(g*l))throw "pixels length must be a multiple of the srcWidth * srcHeight";a.de(this.be);var P=d.byteLength/(g*l);C=C||a.AlphaType.Unpremul;K=K||a.ColorType.RGBA_8888;O=O||a.ColorSpace.SRGB;var Y=P*g;P=v(d,"HEAPU8");g=this._writePixels({width:g,height:l,colorType:K,alphaType:C,colorSpace:O},
8013
+ P,Y,t,x);p(P,d);return g};a.ColorFilter.MakeBlend=function(d,g,l){d=y(d);l=l||a.ColorSpace.SRGB;return a.ColorFilter._MakeBlend(d,g,l)};a.ColorFilter.MakeMatrix=function(d){if(!d||20!==d.length)throw "invalid color matrix";var g=v(d,"HEAPF32"),l=a.ColorFilter._makeMatrix(g);p(g,d);return l};a.ContourMeasure.prototype.getPosTan=function(d,g){this._getPosTan(d,ka);d=Ca.toTypedArray();return g?(g.set(d),g):d.slice()};a.ImageFilter.prototype.getOutputBounds=function(d,g,l){d=S(d,ka);g=G(g);this._getOutputBounds(d,
8014
+ g,kb);g=Ab.toTypedArray();return l?(l.set(g),l):g.slice()};a.ImageFilter.MakeDropShadow=function(d,g,l,t,x,C){x=y(x,Va);return a.ImageFilter._MakeDropShadow(d,g,l,t,x,C)};a.ImageFilter.MakeDropShadowOnly=function(d,g,l,t,x,C){x=y(x,Va);return a.ImageFilter._MakeDropShadowOnly(d,g,l,t,x,C)};a.ImageFilter.MakeImage=function(d,g,l,t){l=S(l,ka);t=S(t,Pa);if("B"in g&&"C"in g)return a.ImageFilter._MakeImageCubic(d,g.B,g.C,l,t);const x=g.filter;let C=a.MipmapMode.None;"mipmap"in g&&(C=g.mipmap);return a.ImageFilter._MakeImageOptions(d,
8015
+ x,C,l,t)};a.ImageFilter.MakeMatrixTransform=function(d,g,l){d=G(d);if("B"in g&&"C"in g)return a.ImageFilter._MakeMatrixTransformCubic(d,g.B,g.C,l);const t=g.filter;let x=a.MipmapMode.None;"mipmap"in g&&(x=g.mipmap);return a.ImageFilter._MakeMatrixTransformOptions(d,t,x,l)};a.Paint.prototype.getColor=function(){this._getColor(Va);return T(Va)};a.Paint.prototype.setColor=function(d,g){g=g||null;d=y(d);this._setColor(d,g);};a.Paint.prototype.setColorComponents=function(d,g,l,t,x){x=x||null;d=M(d,g,l,
8016
+ t);this._setColor(d,x);};a.Path.prototype.getPoint=function(d,g){this._getPoint(d,ka);d=Ca.toTypedArray();return g?(g[0]=d[0],g[1]=d[1],g):d.slice(0,2)};a.Picture.prototype.makeShader=function(d,g,l,t,x){t=G(t);x=S(x);return this._makeShader(d,g,l,t,x)};a.Picture.prototype.cullRect=function(d){this._cullRect(ka);var g=Ca.toTypedArray();return d?(d.set(g),d):g.slice()};a.PictureRecorder.prototype.beginRecording=function(d,g){d=S(d);return this._beginRecording(d,!!g)};a.Surface.prototype.getCanvas=function(){var d=
8017
+ this._getCanvas();d.be=this.be;return d};a.Surface.prototype.makeImageSnapshot=function(d){a.de(this.be);d=v(d,"HEAP32",kb);return this._makeImageSnapshot(d)};a.Surface.prototype.makeSurface=function(d){a.de(this.be);d=this._makeSurface(d);d.be=this.be;return d};a.Surface.prototype.Wf=function(d,g){this.Ze||(this.Ze=this.getCanvas());return requestAnimationFrame(function(){a.de(this.be);d(this.Ze);this.flush(g);}.bind(this))};a.Surface.prototype.requestAnimationFrame||(a.Surface.prototype.requestAnimationFrame=
8018
+ a.Surface.prototype.Wf);a.Surface.prototype.Sf=function(d,g){this.Ze||(this.Ze=this.getCanvas());requestAnimationFrame(function(){a.de(this.be);d(this.Ze);this.flush(g);this.dispose();}.bind(this));};a.Surface.prototype.drawOnce||(a.Surface.prototype.drawOnce=a.Surface.prototype.Sf);a.PathEffect.MakeDash=function(d,g){g||(g=0);if(!d.length||1===d.length%2)throw "Intervals array must have even length";var l=v(d,"HEAPF32");g=a.PathEffect._MakeDash(l,d.length,g);p(l,d);return g};a.PathEffect.MakeLine2D=
8019
+ function(d,g){g=G(g);return a.PathEffect._MakeLine2D(d,g)};a.PathEffect.MakePath2D=function(d,g){d=G(d);return a.PathEffect._MakePath2D(d,g)};a.Shader.MakeColor=function(d,g){g=g||null;d=y(d);return a.Shader._MakeColor(d,g)};a.Shader.Blend=a.Shader.MakeBlend;a.Shader.Color=a.Shader.MakeColor;a.Shader.MakeLinearGradient=function(d,g,l,t,x,C,K,O){O=O||null;var P=E(l),Y=v(t,"HEAPF32");K=K||0;C=G(C);var ba=Ca.toTypedArray();ba.set(d);ba.set(g,2);d=a.Shader._MakeLinearGradient(ka,P.te,P.colorType,Y,P.count,
8020
+ x,K,C,O);p(P.te,l);t&&p(Y,t);return d};a.Shader.MakeRadialGradient=function(d,g,l,t,x,C,K,O){O=O||null;var P=E(l),Y=v(t,"HEAPF32");K=K||0;C=G(C);d=a.Shader._MakeRadialGradient(d[0],d[1],g,P.te,P.colorType,Y,P.count,x,K,C,O);p(P.te,l);t&&p(Y,t);return d};a.Shader.MakeSweepGradient=function(d,g,l,t,x,C,K,O,P,Y){Y=Y||null;var ba=E(l),r=v(t,"HEAPF32");K=K||0;O=O||0;P=P||360;C=G(C);d=a.Shader._MakeSweepGradient(d,g,ba.te,ba.colorType,r,ba.count,x,O,P,K,C,Y);p(ba.te,l);t&&p(r,t);return d};a.Shader.MakeTwoPointConicalGradient=
8021
+ function(d,g,l,t,x,C,K,O,P,Y){Y=Y||null;var ba=E(x),r=v(C,"HEAPF32");P=P||0;O=G(O);var D=Ca.toTypedArray();D.set(d);D.set(l,2);d=a.Shader._MakeTwoPointConicalGradient(ka,g,t,ba.te,ba.colorType,r,ba.count,K,P,O,Y);p(ba.te,x);C&&p(r,C);return d};a.Vertices.prototype.bounds=function(d){this._bounds(ka);var g=Ca.toTypedArray();return d?(d.set(g),d):g.slice()};a.ke&&a.ke.forEach(function(d){d();});};a.computeTonalColors=function(e){var d=v(e.ambient,"HEAPF32"),g=v(e.spot,"HEAPF32");this._computeTonalColors(d,
8022
+ g);var l={ambient:T(d),spot:T(g)};p(d,e.ambient);p(g,e.spot);return l};a.LTRBRect=function(e,d,g,l){return Float32Array.of(e,d,g,l)};a.XYWHRect=function(e,d,g,l){return Float32Array.of(e,d,e+g,d+l)};a.LTRBiRect=function(e,d,g,l){return Int32Array.of(e,d,g,l)};a.XYWHiRect=function(e,d,g,l){return Int32Array.of(e,d,e+g,d+l)};a.RRectXY=function(e,d,g){return Float32Array.of(e[0],e[1],e[2],e[3],d,g,d,g,d,g,d,g)};a.MakeAnimatedImageFromEncoded=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);
8023
+ a.HEAPU8.set(e,d);return (e=a._decodeAnimatedImage(d,e.byteLength))?e:null};a.MakeImageFromEncoded=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return (e=a._decodeImage(d,e.byteLength))?e:null};var lb=null;a.MakeImageFromCanvasImageSource=function(e){var d=e.width,g=e.height;lb||(lb=document.createElement("canvas"));lb.width=d;lb.height=g;var l=lb.getContext("2d",{willReadFrequently:true});l.drawImage(e,0,0);e=l.getImageData(0,0,d,g);return a.MakeImage({width:d,height:g,
8024
+ alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},e.data,4*d)};a.MakeImage=function(e,d,g){var l=a._malloc(d.length);a.HEAPU8.set(d,l);return a._MakeImage(e,l,d.length,g)};a.MakeVertices=function(e,d,g,l,t,x){var C=t&&t.length||0,K=0;g&&g.length&&(K|=1);l&&l.length&&(K|=2);void 0===x||x||(K|=4);e=new a._VerticesBuilder(e,d.length/2,C,K);v(d,"HEAPF32",e.positions());e.texCoords()&&v(g,"HEAPF32",e.texCoords());e.colors()&&v(m(l),"HEAPU32",e.colors());e.indices()&&
8025
+ v(t,"HEAPU16",e.indices());return e.detach()};a.Matrix={};a.Matrix.identity=function(){return c(3)};a.Matrix.invert=function(e){var d=e[0]*e[4]*e[8]+e[1]*e[5]*e[6]+e[2]*e[3]*e[7]-e[2]*e[4]*e[6]-e[1]*e[3]*e[8]-e[0]*e[5]*e[7];return d?[(e[4]*e[8]-e[5]*e[7])/d,(e[2]*e[7]-e[1]*e[8])/d,(e[1]*e[5]-e[2]*e[4])/d,(e[5]*e[6]-e[3]*e[8])/d,(e[0]*e[8]-e[2]*e[6])/d,(e[2]*e[3]-e[0]*e[5])/d,(e[3]*e[7]-e[4]*e[6])/d,(e[1]*e[6]-e[0]*e[7])/d,(e[0]*e[4]-e[1]*e[3])/d]:null};a.Matrix.mapPoints=function(e,d){for(var g=0;g<
8026
+ d.length;g+=2){var l=d[g],t=d[g+1],x=e[6]*l+e[7]*t+e[8],C=e[3]*l+e[4]*t+e[5];d[g]=(e[0]*l+e[1]*t+e[2])/x;d[g+1]=C/x;}return d};a.Matrix.multiply=function(){return jb(3,arguments)};a.Matrix.rotated=function(e,d,g){d=d||0;g=g||0;var l=Math.sin(e);e=Math.cos(e);return [e,-l,pa(l,g,1-e,d),l,e,pa(-l,d,1-e,g),0,0,1]};a.Matrix.scaled=function(e,d,g,l){g=g||0;l=l||0;var t=b([e,d],c(3),3,0,1);return b([g-e*g,l-d*l],t,3,2,0)};a.Matrix.skewed=function(e,d,g,l){g=g||0;l=l||0;var t=b([e,d],c(3),3,1,-1);return b([-e*
8027
+ g,-d*l],t,3,2,0)};a.Matrix.translated=function(e,d){return b(arguments,c(3),3,2,0)};a.Vector={};a.Vector.dot=function(e,d){return e.map(function(g,l){return g*d[l]}).reduce(function(g,l){return g+l})};a.Vector.lengthSquared=function(e){return a.Vector.dot(e,e)};a.Vector.length=function(e){return Math.sqrt(a.Vector.lengthSquared(e))};a.Vector.mulScalar=function(e,d){return e.map(function(g){return g*d})};a.Vector.add=function(e,d){return e.map(function(g,l){return g+d[l]})};a.Vector.sub=function(e,
8028
+ d){return e.map(function(g,l){return g-d[l]})};a.Vector.dist=function(e,d){return a.Vector.length(a.Vector.sub(e,d))};a.Vector.normalize=function(e){return a.Vector.mulScalar(e,1/a.Vector.length(e))};a.Vector.cross=function(e,d){return [e[1]*d[2]-e[2]*d[1],e[2]*d[0]-e[0]*d[2],e[0]*d[1]-e[1]*d[0]]};a.M44={};a.M44.identity=function(){return c(4)};a.M44.translated=function(e){return b(e,c(4),4,3,0)};a.M44.scaled=function(e){return b(e,c(4),4,0,1)};a.M44.rotated=function(e,d){return a.M44.rotatedUnitSinCos(a.Vector.normalize(e),
8029
+ Math.sin(d),Math.cos(d))};a.M44.rotatedUnitSinCos=function(e,d,g){var l=e[0],t=e[1];e=e[2];var x=1-g;return [x*l*l+g,x*l*t-d*e,x*l*e+d*t,0,x*l*t+d*e,x*t*t+g,x*t*e-d*l,0,x*l*e-d*t,x*t*e+d*l,x*e*e+g,0,0,0,0,1]};a.M44.lookat=function(e,d,g){d=a.Vector.normalize(a.Vector.sub(d,e));g=a.Vector.normalize(g);g=a.Vector.normalize(a.Vector.cross(d,g));var l=a.M44.identity();b(g,l,4,0,0);b(a.Vector.cross(g,d),l,4,1,0);b(a.Vector.mulScalar(d,-1),l,4,2,0);b(e,l,4,3,0);e=a.M44.invert(l);return null===e?a.M44.identity():
8030
+ e};a.M44.perspective=function(e,d,g){var l=1/(d-e);g/=2;g=Math.cos(g)/Math.sin(g);return [g,0,0,0,0,g,0,0,0,0,(d+e)*l,2*d*e*l,0,0,-1,1]};a.M44.rc=function(e,d,g){return e[4*d+g]};a.M44.multiply=function(){return jb(4,arguments)};a.M44.invert=function(e){var d=e[0],g=e[4],l=e[8],t=e[12],x=e[1],C=e[5],K=e[9],O=e[13],P=e[2],Y=e[6],ba=e[10],r=e[14],D=e[3],U=e[7],ea=e[11];e=e[15];var la=d*C-g*x,ta=d*K-l*x,xa=d*O-t*x,Da=g*K-l*C,fa=g*O-t*C,I=l*O-t*K,k=P*U-Y*D,q=P*ea-ba*D,z=P*e-r*D,A=Y*ea-ba*U,F=Y*e-r*U,H=
8031
+ ba*e-r*ea,N=la*H-ta*F+xa*A+Da*z-fa*q+I*k,V=1/N;if(0===N||Infinity===V)return null;la*=V;ta*=V;xa*=V;Da*=V;fa*=V;I*=V;k*=V;q*=V;z*=V;A*=V;F*=V;H*=V;d=[C*H-K*F+O*A,K*z-x*H-O*q,x*F-C*z+O*k,C*q-x*A-K*k,l*F-g*H-t*A,d*H-l*z+t*q,g*z-d*F-t*k,d*A-g*q+l*k,U*I-ea*fa+e*Da,ea*xa-D*I-e*ta,D*fa-U*xa+e*la,U*ta-D*Da-ea*la,ba*fa-Y*I-r*Da,P*I-ba*xa+r*ta,Y*xa-P*fa-r*la,P*Da-Y*ta+ba*la];return d.every(function(qa){return !isNaN(qa)&&Infinity!==qa&&-Infinity!==qa})?d:null};a.M44.transpose=function(e){return [e[0],e[4],e[8],
8032
+ e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]]};a.M44.mustInvert=function(e){e=a.M44.invert(e);if(null===e)throw "Matrix not invertible";return e};a.M44.setupCamera=function(e,d,g){var l=a.M44.lookat(g.eye,g.coa,g.up);g=a.M44.perspective(g.near,g.far,g.angle);d=[(e[2]-e[0])/2,(e[3]-e[1])/2,d];e=a.M44.multiply(a.M44.translated([(e[0]+e[2])/2,(e[1]+e[3])/2,0]),a.M44.scaled(d));return a.M44.multiply(e,g,l,a.M44.mustInvert(e))};a.ColorMatrix={};a.ColorMatrix.identity=function(){var e=
8033
+ new Float32Array(20);e[0]=1;e[6]=1;e[12]=1;e[18]=1;return e};a.ColorMatrix.scaled=function(e,d,g,l){var t=new Float32Array(20);t[0]=e;t[6]=d;t[12]=g;t[18]=l;return t};var Id=[[6,7,11,12],[0,10,2,12],[0,1,5,6]];a.ColorMatrix.rotated=function(e,d,g){var l=a.ColorMatrix.identity();e=Id[e];l[e[0]]=g;l[e[1]]=d;l[e[2]]=-d;l[e[3]]=g;return l};a.ColorMatrix.postTranslate=function(e,d,g,l,t){e[4]+=d;e[9]+=g;e[14]+=l;e[19]+=t;return e};a.ColorMatrix.concat=function(e,d){for(var g=new Float32Array(20),l=0,t=
8034
+ 0;20>t;t+=5){for(var x=0;4>x;x++)g[l++]=e[t]*d[x]+e[t+1]*d[x+5]+e[t+2]*d[x+10]+e[t+3]*d[x+15];g[l++]=e[t]*d[4]+e[t+1]*d[9]+e[t+2]*d[14]+e[t+3]*d[19]+e[t+4];}return g};(function(e){e.ke=e.ke||[];e.ke.push(function(){function d(r){r&&(r.dir=0===r.dir?e.TextDirection.RTL:e.TextDirection.LTR);return r}function g(r){if(!r||!r.length)return [];for(var D=[],U=0;U<r.length;U+=5){var ea=e.LTRBRect(r[U],r[U+1],r[U+2],r[U+3]),la=e.TextDirection.LTR;0===r[U+4]&&(la=e.TextDirection.RTL);D.push({rect:ea,dir:la});}e._free(r.byteOffset);
8035
+ return D}function l(r){r=r||{};void 0===r.weight&&(r.weight=e.FontWeight.Normal);r.width=r.width||e.FontWidth.Normal;r.slant=r.slant||e.FontSlant.Upright;return r}function t(r){if(!r||!r.length)return X;for(var D=[],U=0;U<r.length;U++){var ea=x(r[U]);D.push(ea);}return v(D,"HEAPU32")}function x(r){if(O[r])return O[r];var D=na(r)+1,U=e._malloc(D);oa(r,J,U,D);return O[r]=U}function C(r){r._colorPtr=y(r.color);r._foregroundColorPtr=X;r._backgroundColorPtr=X;r._decorationColorPtr=X;r.foregroundColor&&
8036
+ (r._foregroundColorPtr=y(r.foregroundColor,P));r.backgroundColor&&(r._backgroundColorPtr=y(r.backgroundColor,Y));r.decorationColor&&(r._decorationColorPtr=y(r.decorationColor,ba));Array.isArray(r.fontFamilies)&&r.fontFamilies.length?(r._fontFamiliesPtr=t(r.fontFamilies),r._fontFamiliesLen=r.fontFamilies.length):(r._fontFamiliesPtr=X,r._fontFamiliesLen=0);if(r.locale){var D=r.locale;r._localePtr=x(D);r._localeLen=na(D);}else r._localePtr=X,r._localeLen=0;if(Array.isArray(r.shadows)&&r.shadows.length){D=
8037
+ r.shadows;var U=D.map(function(fa){return fa.color||e.BLACK}),ea=D.map(function(fa){return fa.blurRadius||0});r._shadowLen=D.length;for(var la=e._malloc(8*D.length),ta=la/4,xa=0;xa<D.length;xa++){var Da=D[xa].offset||[0,0];e.HEAPF32[ta]=Da[0];e.HEAPF32[ta+1]=Da[1];ta+=2;}r._shadowColorsPtr=E(U).te;r._shadowOffsetsPtr=la;r._shadowBlurRadiiPtr=v(ea,"HEAPF32");}else r._shadowLen=0,r._shadowColorsPtr=X,r._shadowOffsetsPtr=X,r._shadowBlurRadiiPtr=X;Array.isArray(r.fontFeatures)&&r.fontFeatures.length?(D=
8038
+ r.fontFeatures,U=D.map(function(fa){return fa.name}),ea=D.map(function(fa){return fa.value}),r._fontFeatureLen=D.length,r._fontFeatureNamesPtr=t(U),r._fontFeatureValuesPtr=v(ea,"HEAPU32")):(r._fontFeatureLen=0,r._fontFeatureNamesPtr=X,r._fontFeatureValuesPtr=X);Array.isArray(r.fontVariations)&&r.fontVariations.length?(D=r.fontVariations,U=D.map(function(fa){return fa.axis}),ea=D.map(function(fa){return fa.value}),r._fontVariationLen=D.length,r._fontVariationAxesPtr=t(U),r._fontVariationValuesPtr=
8039
+ v(ea,"HEAPF32")):(r._fontVariationLen=0,r._fontVariationAxesPtr=X,r._fontVariationValuesPtr=X);}function K(r){e._free(r._fontFamiliesPtr);e._free(r._shadowColorsPtr);e._free(r._shadowOffsetsPtr);e._free(r._shadowBlurRadiiPtr);e._free(r._fontFeatureNamesPtr);e._free(r._fontFeatureValuesPtr);e._free(r._fontVariationAxesPtr);e._free(r._fontVariationValuesPtr);}e.Paragraph.prototype.getRectsForRange=function(r,D,U,ea){r=this._getRectsForRange(r,D,U,ea);return g(r)};e.Paragraph.prototype.getRectsForPlaceholders=
8040
+ function(){var r=this._getRectsForPlaceholders();return g(r)};e.Paragraph.prototype.getGlyphInfoAt=function(r){return d(this._getGlyphInfoAt(r))};e.Paragraph.prototype.getClosestGlyphInfoAtCoordinate=function(r,D){return d(this._getClosestGlyphInfoAtCoordinate(r,D))};e.TypefaceFontProvider.prototype.registerFont=function(r,D){r=e.Typeface.MakeTypefaceFromData(r);if(!r)return null;D=x(D);this._registerFont(r,D);r.delete();};e.ParagraphStyle=function(r){r.disableHinting=r.disableHinting||false;if(r.ellipsis){var D=
8041
+ r.ellipsis;r._ellipsisPtr=x(D);r._ellipsisLen=na(D);}else r._ellipsisPtr=X,r._ellipsisLen=0;null==r.heightMultiplier&&(r.heightMultiplier=-1);r.maxLines=r.maxLines||0;r.replaceTabCharacters=r.replaceTabCharacters||false;D=(D=r.strutStyle)||{};D.strutEnabled=D.strutEnabled||false;D.strutEnabled&&Array.isArray(D.fontFamilies)&&D.fontFamilies.length?(D._fontFamiliesPtr=t(D.fontFamilies),D._fontFamiliesLen=D.fontFamilies.length):(D._fontFamiliesPtr=X,D._fontFamiliesLen=0);D.fontStyle=l(D.fontStyle);null==D.fontSize&&
8042
+ (D.fontSize=-1);null==D.heightMultiplier&&(D.heightMultiplier=-1);D.halfLeading=D.halfLeading||false;D.leading=D.leading||0;D.forceStrutHeight=D.forceStrutHeight||false;r.strutStyle=D;r.textAlign=r.textAlign||e.TextAlign.Start;r.textDirection=r.textDirection||e.TextDirection.LTR;r.textHeightBehavior=r.textHeightBehavior||e.TextHeightBehavior.All;r.textStyle=e.TextStyle(r.textStyle);r.applyRoundingHack=false!==r.applyRoundingHack;return r};e.TextStyle=function(r){r.color||(r.color=e.BLACK);r.decoration=r.decoration||
8043
+ 0;r.decorationThickness=r.decorationThickness||0;r.decorationStyle=r.decorationStyle||e.DecorationStyle.Solid;r.textBaseline=r.textBaseline||e.TextBaseline.Alphabetic;null==r.fontSize&&(r.fontSize=-1);r.letterSpacing=r.letterSpacing||0;r.wordSpacing=r.wordSpacing||0;null==r.heightMultiplier&&(r.heightMultiplier=-1);r.halfLeading=r.halfLeading||false;r.fontStyle=l(r.fontStyle);return r};var O={},P=e._malloc(16),Y=e._malloc(16),ba=e._malloc(16);e.ParagraphBuilder.Make=function(r,D){C(r.textStyle);D=e.ParagraphBuilder._Make(r,
8044
+ D);K(r.textStyle);return D};e.ParagraphBuilder.MakeFromFontProvider=function(r,D){C(r.textStyle);D=e.ParagraphBuilder._MakeFromFontProvider(r,D);K(r.textStyle);return D};e.ParagraphBuilder.MakeFromFontCollection=function(r,D){C(r.textStyle);D=e.ParagraphBuilder._MakeFromFontCollection(r,D);K(r.textStyle);return D};e.ParagraphBuilder.ShapeText=function(r,D,U){let ea=0;for(const la of D)ea+=la.length;if(ea!==r.length)throw "Accumulated block lengths must equal text.length";return e.ParagraphBuilder._ShapeText(r,
8045
+ D,U)};e.ParagraphBuilder.prototype.pushStyle=function(r){C(r);this._pushStyle(r);K(r);};e.ParagraphBuilder.prototype.pushPaintStyle=function(r,D,U){C(r);this._pushPaintStyle(r,D,U);K(r);};e.ParagraphBuilder.prototype.addPlaceholder=function(r,D,U,ea,la){U=U||e.PlaceholderAlignment.Baseline;ea=ea||e.TextBaseline.Alphabetic;this._addPlaceholder(r||0,D||0,U,ea,la||0);};e.ParagraphBuilder.prototype.setWordsUtf8=function(r){var D=v(r,"HEAPU32");this._setWordsUtf8(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setWordsUtf16=
8046
+ function(r){var D=v(r,"HEAPU32");this._setWordsUtf16(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setGraphemeBreaksUtf8=function(r){var D=v(r,"HEAPU32");this._setGraphemeBreaksUtf8(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setGraphemeBreaksUtf16=function(r){var D=v(r,"HEAPU32");this._setGraphemeBreaksUtf16(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setLineBreaksUtf8=function(r){var D=v(r,"HEAPU32");this._setLineBreaksUtf8(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setLineBreaksUtf16=
8047
+ function(r){var D=v(r,"HEAPU32");this._setLineBreaksUtf16(D,r&&r.length||0);p(D,r);};});})(w);a.ke=a.ke||[];a.ke.push(function(){a.Path.prototype.op=function(e,d){return this._op(e,d)?this:null};a.Path.prototype.simplify=function(){return this._simplify()?this:null};});a.ke=a.ke||[];a.ke.push(function(){a.Canvas.prototype.drawText=function(e,d,g,l,t){var x=na(e),C=a._malloc(x+1);oa(e,J,C,x+1);this._drawSimpleText(C,x,d,g,t,l);a._free(C);};a.Canvas.prototype.drawGlyphs=function(e,d,g,l,t,x){if(!(2*e.length<=
8048
+ d.length))throw "Not enough positions for the array of gyphs";a.de(this.be);const C=v(e,"HEAPU16"),K=v(d,"HEAPF32");this._drawGlyphs(e.length,C,K,g,l,t,x);p(K,d);p(C,e);};a.Font.prototype.getGlyphBounds=function(e,d,g){var l=v(e,"HEAPU16"),t=a._malloc(16*e.length);this._getGlyphWidthBounds(l,e.length,X,t,d||null);d=new Float32Array(a.HEAPU8.buffer,t,4*e.length);p(l,e);if(g)return g.set(d),a._free(t),g;e=Float32Array.from(d);a._free(t);return e};a.Font.prototype.getGlyphIDs=function(e,d,g){d||(d=e.length);
8049
+ var l=na(e)+1,t=a._malloc(l);oa(e,J,t,l);e=a._malloc(2*d);d=this._getGlyphIDs(t,l-1,d,e);a._free(t);if(0>d)return a._free(e),null;t=new Uint16Array(a.HEAPU8.buffer,e,d);if(g)return g.set(t),a._free(e),g;g=Uint16Array.from(t);a._free(e);return g};a.Font.prototype.getGlyphIntercepts=function(e,d,g,l){var t=v(e,"HEAPU16"),x=v(d,"HEAPF32");return this._getGlyphIntercepts(t,e.length,!(e&&e._ck),x,d.length,!(d&&d._ck),g,l)};a.Font.prototype.getGlyphWidths=function(e,d,g){var l=v(e,"HEAPU16"),t=a._malloc(4*
8050
+ e.length);this._getGlyphWidthBounds(l,e.length,t,X,d||null);d=new Float32Array(a.HEAPU8.buffer,t,e.length);p(l,e);if(g)return g.set(d),a._free(t),g;e=Float32Array.from(d);a._free(t);return e};a.FontMgr.FromData=function(){if(!arguments.length)return null;var e=arguments;1===e.length&&Array.isArray(e[0])&&(e=arguments[0]);if(!e.length)return null;for(var d=[],g=[],l=0;l<e.length;l++){var t=new Uint8Array(e[l]),x=v(t,"HEAPU8");d.push(x);g.push(t.byteLength);}d=v(d,"HEAPU32");g=v(g,"HEAPU32");e=a.FontMgr._fromData(d,
8051
+ g,e.length);a._free(d);a._free(g);return e};a.Typeface.MakeTypefaceFromData=function(e){e=new Uint8Array(e);var d=v(e,"HEAPU8");return (e=a.Typeface._MakeTypefaceFromData(d,e.byteLength))?e:null};a.Typeface.MakeFreeTypeFaceFromData=a.Typeface.MakeTypefaceFromData;a.Typeface.prototype.getGlyphIDs=function(e,d,g){d||(d=e.length);var l=na(e)+1,t=a._malloc(l);oa(e,J,t,l);e=a._malloc(2*d);d=this._getGlyphIDs(t,l-1,d,e);a._free(t);if(0>d)return a._free(e),null;t=new Uint16Array(a.HEAPU8.buffer,e,d);if(g)return g.set(t),
8052
+ a._free(e),g;g=Uint16Array.from(t);a._free(e);return g};a.TextBlob.MakeOnPath=function(e,d,g,l){if(e&&e.length&&d&&d.countPoints()){if(1===d.countPoints())return this.MakeFromText(e,g);l||(l=0);var t=g.getGlyphIDs(e);t=g.getGlyphWidths(t);var x=[];d=new a.ContourMeasureIter(d,false,1);for(var C=d.next(),K=new Float32Array(4),O=0;O<e.length&&C;O++){var P=t[O];l+=P/2;if(l>C.length()){C.delete();C=d.next();if(!C){e=e.substring(0,O);break}l=P/2;}C.getPosTan(l,K);var Y=K[2],ba=K[3];x.push(Y,ba,K[0]-P/2*Y,
8053
+ K[1]-P/2*ba);l+=P/2;}e=this.MakeFromRSXform(e,x,g);C&&C.delete();d.delete();return e}};a.TextBlob.MakeFromRSXform=function(e,d,g){var l=na(e)+1,t=a._malloc(l);oa(e,J,t,l);e=v(d,"HEAPF32");g=a.TextBlob._MakeFromRSXform(t,l-1,e,g);a._free(t);return g?g:null};a.TextBlob.MakeFromRSXformGlyphs=function(e,d,g){var l=v(e,"HEAPU16");d=v(d,"HEAPF32");g=a.TextBlob._MakeFromRSXformGlyphs(l,2*e.length,d,g);p(l,e);return g?g:null};a.TextBlob.MakeFromGlyphs=function(e,d){var g=v(e,"HEAPU16");d=a.TextBlob._MakeFromGlyphs(g,
8054
+ 2*e.length,d);p(g,e);return d?d:null};a.TextBlob.MakeFromText=function(e,d){var g=na(e)+1,l=a._malloc(g);oa(e,J,l,g);e=a.TextBlob._MakeFromText(l,g-1,d);a._free(l);return e?e:null};a.MallocGlyphIDs=function(e){return a.Malloc(Uint16Array,e)};});a.ke=a.ke||[];a.ke.push(function(){a.MakePicture=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return (e=a._MakePicture(d,e.byteLength))?e:null};});a.ke=a.ke||[];a.ke.push(function(){a.RuntimeEffect.Make=function(e,d){return a.RuntimeEffect._Make(e,
8055
+ {onError:d||function(g){console.log("RuntimeEffect error",g);}})};a.RuntimeEffect.MakeForBlender=function(e,d){return a.RuntimeEffect._MakeForBlender(e,{onError:d||function(g){console.log("RuntimeEffect error",g);}})};a.RuntimeEffect.prototype.makeShader=function(e,d){var g=!e._ck,l=v(e,"HEAPF32");d=G(d);return this._makeShader(l,4*e.length,g,d)};a.RuntimeEffect.prototype.makeShaderWithChildren=function(e,d,g){var l=!e._ck,t=v(e,"HEAPF32");g=G(g);for(var x=[],C=0;C<d.length;C++)x.push(d[C].ae.ie);d=
8056
+ v(x,"HEAPU32");return this._makeShaderWithChildren(t,4*e.length,l,d,x.length,g)};a.RuntimeEffect.prototype.makeBlender=function(e){var d=!e._ck,g=v(e,"HEAPF32");return this._makeBlender(g,4*e.length,d)};});(function(){function e(I){for(var k=0;k<I.length;k++)if(void 0!==I[k]&&!Number.isFinite(I[k]))return false;return true}function d(I){var k=a.getColorComponents(I);I=k[0];var q=k[1],z=k[2];k=k[3];if(1===k)return I=I.toString(16).toLowerCase(),q=q.toString(16).toLowerCase(),z=z.toString(16).toLowerCase(),
8057
+ I=1===I.length?"0"+I:I,q=1===q.length?"0"+q:q,z=1===z.length?"0"+z:z,"#"+I+q+z;k=0===k||1===k?k:k.toFixed(8);return "rgba("+I+", "+q+", "+z+", "+k+")"}function g(I){return a.parseColorString(I,xa)}function l(I){I=Da.exec(I);if(!I)return null;var k=parseFloat(I[4]),q=16;switch(I[5]){case "em":case "rem":q=16*k;break;case "pt":q=4*k/3;break;case "px":q=k;break;case "pc":q=16*k;break;case "in":q=96*k;break;case "cm":q=96*k/2.54;break;case "mm":q=96/25.4*k;break;case "q":q=96/25.4/4*k;break;case "%":q=
8058
+ 16/75*k;}return {style:I[1],variant:I[2],weight:I[3],sizePx:q,family:I[6].trim()}}function t(){fa||(fa={"Noto Mono":{"*":a.Typeface.GetDefault()},monospace:{"*":a.Typeface.GetDefault()}});}function x(I){this.ce=I;this.fe=new a.Paint;this.fe.setAntiAlias(true);this.fe.setStrokeMiter(10);this.fe.setStrokeCap(a.StrokeCap.Butt);this.fe.setStrokeJoin(a.StrokeJoin.Miter);this.kf="10px monospace";this.Fe=new a.Font(a.Typeface.GetDefault(),10);this.Fe.setSubpixel(true);this.se=this.ye=a.BLACK;this.Oe=0;this.af=
8059
+ a.TRANSPARENT;this.Qe=this.Pe=0;this.bf=this.Be=1;this.$e=0;this.Ne=[];this.ee=a.BlendMode.SrcOver;this.fe.setStrokeWidth(this.bf);this.fe.setBlendMode(this.ee);this.he=new a.Path;this.je=a.Matrix.identity();this.Ff=[];this.Ue=[];this.Ee=function(){this.he.delete();this.fe.delete();this.Fe.delete();this.Ue.forEach(function(k){k.Ee();});};Object.defineProperty(this,"currentTransform",{enumerable:true,get:function(){return {a:this.je[0],c:this.je[1],e:this.je[2],b:this.je[3],d:this.je[4],f:this.je[5]}},
8060
+ set:function(k){k.a&&this.setTransform(k.a,k.b,k.c,k.d,k.e,k.f);}});Object.defineProperty(this,"fillStyle",{enumerable:true,get:function(){return f(this.se)?d(this.se):this.se},set:function(k){"string"===typeof k?this.se=g(k):k.Me&&(this.se=k);}});Object.defineProperty(this,"font",{enumerable:true,get:function(){return this.kf},set:function(k){var q=l(k);var z=(q.style||"normal")+"|"+(q.variant||"normal")+"|"+(q.weight||"normal");var A=q.family;t();z=fa[A]?fa[A][z]||fa[A]["*"]:a.Typeface.GetDefault();q.typeface=
8061
+ z;q&&(this.Fe.setSize(q.sizePx),this.Fe.setTypeface(q.typeface),this.kf=k);}});Object.defineProperty(this,"globalAlpha",{enumerable:true,get:function(){return this.Be},set:function(k){!isFinite(k)||0>k||1<k||(this.Be=k);}});Object.defineProperty(this,"globalCompositeOperation",{enumerable:true,get:function(){switch(this.ee){case a.BlendMode.SrcOver:return "source-over";case a.BlendMode.DstOver:return "destination-over";case a.BlendMode.Src:return "copy";case a.BlendMode.Dst:return "destination";case a.BlendMode.Clear:return "clear";
8062
+ case a.BlendMode.SrcIn:return "source-in";case a.BlendMode.DstIn:return "destination-in";case a.BlendMode.SrcOut:return "source-out";case a.BlendMode.DstOut:return "destination-out";case a.BlendMode.SrcATop:return "source-atop";case a.BlendMode.DstATop:return "destination-atop";case a.BlendMode.Xor:return "xor";case a.BlendMode.Plus:return "lighter";case a.BlendMode.Multiply:return "multiply";case a.BlendMode.Screen:return "screen";case a.BlendMode.Overlay:return "overlay";case a.BlendMode.Darken:return "darken";
8063
+ case a.BlendMode.Lighten:return "lighten";case a.BlendMode.ColorDodge:return "color-dodge";case a.BlendMode.ColorBurn:return "color-burn";case a.BlendMode.HardLight:return "hard-light";case a.BlendMode.SoftLight:return "soft-light";case a.BlendMode.Difference:return "difference";case a.BlendMode.Exclusion:return "exclusion";case a.BlendMode.Hue:return "hue";case a.BlendMode.Saturation:return "saturation";case a.BlendMode.Color:return "color";case a.BlendMode.Luminosity:return "luminosity"}},set:function(k){switch(k){case "source-over":this.ee=
8064
+ a.BlendMode.SrcOver;break;case "destination-over":this.ee=a.BlendMode.DstOver;break;case "copy":this.ee=a.BlendMode.Src;break;case "destination":this.ee=a.BlendMode.Dst;break;case "clear":this.ee=a.BlendMode.Clear;break;case "source-in":this.ee=a.BlendMode.SrcIn;break;case "destination-in":this.ee=a.BlendMode.DstIn;break;case "source-out":this.ee=a.BlendMode.SrcOut;break;case "destination-out":this.ee=a.BlendMode.DstOut;break;case "source-atop":this.ee=a.BlendMode.SrcATop;break;case "destination-atop":this.ee=
8065
+ a.BlendMode.DstATop;break;case "xor":this.ee=a.BlendMode.Xor;break;case "lighter":this.ee=a.BlendMode.Plus;break;case "plus-lighter":this.ee=a.BlendMode.Plus;break;case "plus-darker":throw "plus-darker is not supported";case "multiply":this.ee=a.BlendMode.Multiply;break;case "screen":this.ee=a.BlendMode.Screen;break;case "overlay":this.ee=a.BlendMode.Overlay;break;case "darken":this.ee=a.BlendMode.Darken;break;case "lighten":this.ee=a.BlendMode.Lighten;break;case "color-dodge":this.ee=a.BlendMode.ColorDodge;
8066
+ break;case "color-burn":this.ee=a.BlendMode.ColorBurn;break;case "hard-light":this.ee=a.BlendMode.HardLight;break;case "soft-light":this.ee=a.BlendMode.SoftLight;break;case "difference":this.ee=a.BlendMode.Difference;break;case "exclusion":this.ee=a.BlendMode.Exclusion;break;case "hue":this.ee=a.BlendMode.Hue;break;case "saturation":this.ee=a.BlendMode.Saturation;break;case "color":this.ee=a.BlendMode.Color;break;case "luminosity":this.ee=a.BlendMode.Luminosity;break;default:return}this.fe.setBlendMode(this.ee);}});
8067
+ Object.defineProperty(this,"imageSmoothingEnabled",{enumerable:true,get:function(){return true},set:function(){}});Object.defineProperty(this,"imageSmoothingQuality",{enumerable:true,get:function(){return "high"},set:function(){}});Object.defineProperty(this,"lineCap",{enumerable:true,get:function(){switch(this.fe.getStrokeCap()){case a.StrokeCap.Butt:return "butt";case a.StrokeCap.Round:return "round";case a.StrokeCap.Square:return "square"}},set:function(k){switch(k){case "butt":this.fe.setStrokeCap(a.StrokeCap.Butt);
8068
+ break;case "round":this.fe.setStrokeCap(a.StrokeCap.Round);break;case "square":this.fe.setStrokeCap(a.StrokeCap.Square);}}});Object.defineProperty(this,"lineDashOffset",{enumerable:true,get:function(){return this.$e},set:function(k){isFinite(k)&&(this.$e=k);}});Object.defineProperty(this,"lineJoin",{enumerable:true,get:function(){switch(this.fe.getStrokeJoin()){case a.StrokeJoin.Miter:return "miter";case a.StrokeJoin.Round:return "round";case a.StrokeJoin.Bevel:return "bevel"}},set:function(k){switch(k){case "miter":this.fe.setStrokeJoin(a.StrokeJoin.Miter);
8069
+ break;case "round":this.fe.setStrokeJoin(a.StrokeJoin.Round);break;case "bevel":this.fe.setStrokeJoin(a.StrokeJoin.Bevel);}}});Object.defineProperty(this,"lineWidth",{enumerable:true,get:function(){return this.fe.getStrokeWidth()},set:function(k){0>=k||!k||(this.bf=k,this.fe.setStrokeWidth(k));}});Object.defineProperty(this,"miterLimit",{enumerable:true,get:function(){return this.fe.getStrokeMiter()},set:function(k){0>=k||!k||this.fe.setStrokeMiter(k);}});Object.defineProperty(this,"shadowBlur",{enumerable:true,
8070
+ get:function(){return this.Oe},set:function(k){0>k||!isFinite(k)||(this.Oe=k);}});Object.defineProperty(this,"shadowColor",{enumerable:true,get:function(){return d(this.af)},set:function(k){this.af=g(k);}});Object.defineProperty(this,"shadowOffsetX",{enumerable:true,get:function(){return this.Pe},set:function(k){isFinite(k)&&(this.Pe=k);}});Object.defineProperty(this,"shadowOffsetY",{enumerable:true,get:function(){return this.Qe},set:function(k){isFinite(k)&&(this.Qe=k);}});Object.defineProperty(this,"strokeStyle",
8071
+ {enumerable:true,get:function(){return d(this.ye)},set:function(k){"string"===typeof k?this.ye=g(k):k.Me&&(this.ye=k);}});this.arc=function(k,q,z,A,F,H){D(this.he,k,q,z,z,0,A,F,H);};this.arcTo=function(k,q,z,A,F){Y(this.he,k,q,z,A,F);};this.beginPath=function(){this.he.delete();this.he=new a.Path;};this.bezierCurveTo=function(k,q,z,A,F,H){var N=this.he;e([k,q,z,A,F,H])&&(N.isEmpty()&&N.moveTo(k,q),N.cubicTo(k,q,z,A,F,H));};this.clearRect=function(k,q,z,A){this.fe.setStyle(a.PaintStyle.Fill);this.fe.setBlendMode(a.BlendMode.Clear);
8072
+ this.ce.drawRect(a.XYWHRect(k,q,z,A),this.fe);this.fe.setBlendMode(this.ee);};this.clip=function(k,q){"string"===typeof k?(q=k,k=this.he):k&&k.vf&&(k=k.le);k||(k=this.he);k=k.copy();q&&"evenodd"===q.toLowerCase()?k.setFillType(a.FillType.EvenOdd):k.setFillType(a.FillType.Winding);this.ce.clipPath(k,a.ClipOp.Intersect,true);k.delete();};this.closePath=function(){ba(this.he);};this.createImageData=function(){if(1===arguments.length){var k=arguments[0];return new O(new Uint8ClampedArray(4*k.width*k.height),
8073
+ k.width,k.height)}if(2===arguments.length){k=arguments[0];var q=arguments[1];return new O(new Uint8ClampedArray(4*k*q),k,q)}throw "createImageData expects 1 or 2 arguments, got "+arguments.length;};this.createLinearGradient=function(k,q,z,A){if(e(arguments)){var F=new P(k,q,z,A);this.Ue.push(F);return F}};this.createPattern=function(k,q){k=new la(k,q);this.Ue.push(k);return k};this.createRadialGradient=function(k,q,z,A,F,H){if(e(arguments)){var N=new ta(k,q,z,A,F,H);this.Ue.push(N);return N}};this.drawImage=
8074
+ function(k){k instanceof K&&(k=k.Lf());var q=this.jf();if(3===arguments.length||5===arguments.length)var z=a.XYWHRect(arguments[1],arguments[2],arguments[3]||k.width(),arguments[4]||k.height()),A=a.XYWHRect(0,0,k.width(),k.height());else if(9===arguments.length)z=a.XYWHRect(arguments[5],arguments[6],arguments[7],arguments[8]),A=a.XYWHRect(arguments[1],arguments[2],arguments[3],arguments[4]);else throw "invalid number of args for drawImage, need 3, 5, or 9; got "+arguments.length;this.ce.drawImageRect(k,
8075
+ A,z,q,false);q.dispose();};this.ellipse=function(k,q,z,A,F,H,N,V){D(this.he,k,q,z,A,F,H,N,V);};this.jf=function(){var k=this.fe.copy();k.setStyle(a.PaintStyle.Fill);if(f(this.se)){var q=a.multiplyByAlpha(this.se,this.Be);k.setColor(q);}else q=this.se.Me(this.je),k.setColor(a.Color(0,0,0,this.Be)),k.setShader(q);k.dispose=function(){this.delete();};return k};this.fill=function(k,q){"string"===typeof k?(q=k,k=this.he):k&&k.vf&&(k=k.le);if("evenodd"===q)this.he.setFillType(a.FillType.EvenOdd);else {if("nonzero"!==
8076
+ q&&q)throw "invalid fill rule";this.he.setFillType(a.FillType.Winding);}k||(k=this.he);q=this.jf();var z=this.Re(q);z&&(this.ce.save(),this.Ke(),this.ce.drawPath(k,z),this.ce.restore(),z.dispose());this.ce.drawPath(k,q);q.dispose();};this.fillRect=function(k,q,z,A){var F=this.jf(),H=this.Re(F);H&&(this.ce.save(),this.Ke(),this.ce.drawRect(a.XYWHRect(k,q,z,A),H),this.ce.restore(),H.dispose());this.ce.drawRect(a.XYWHRect(k,q,z,A),F);F.dispose();};this.fillText=function(k,q,z){var A=this.jf();k=a.TextBlob.MakeFromText(k,
8077
+ this.Fe);var F=this.Re(A);F&&(this.ce.save(),this.Ke(),this.ce.drawTextBlob(k,q,z,F),this.ce.restore(),F.dispose());this.ce.drawTextBlob(k,q,z,A);k.delete();A.dispose();};this.getImageData=function(k,q,z,A){return (k=this.ce.readPixels(k,q,{width:z,height:A,colorType:a.ColorType.RGBA_8888,alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB}))?new O(new Uint8ClampedArray(k.buffer),z,A):null};this.getLineDash=function(){return this.Ne.slice()};this.Gf=function(k){var q=a.Matrix.invert(this.je);
8078
+ a.Matrix.mapPoints(q,k);return k};this.isPointInPath=function(k,q,z){var A=arguments;if(3===A.length)var F=this.he;else if(4===A.length)F=A[0],k=A[1],q=A[2],z=A[3];else throw "invalid arg count, need 3 or 4, got "+A.length;if(!isFinite(k)||!isFinite(q))return false;z=z||"nonzero";if("nonzero"!==z&&"evenodd"!==z)return false;A=this.Gf([k,q]);k=A[0];q=A[1];F.setFillType("nonzero"===z?a.FillType.Winding:a.FillType.EvenOdd);return F.contains(k,q)};this.isPointInStroke=function(k,q){var z=arguments;if(2===z.length)var A=
8079
+ this.he;else if(3===z.length)A=z[0],k=z[1],q=z[2];else throw "invalid arg count, need 2 or 3, got "+z.length;if(!isFinite(k)||!isFinite(q))return false;z=this.Gf([k,q]);k=z[0];q=z[1];A=A.copy();A.setFillType(a.FillType.Winding);A.stroke({width:this.lineWidth,miter_limit:this.miterLimit,cap:this.fe.getStrokeCap(),join:this.fe.getStrokeJoin(),precision:.3});z=A.contains(k,q);A.delete();return z};this.lineTo=function(k,q){U(this.he,k,q);};this.measureText=function(k){k=this.Fe.getGlyphIDs(k);k=this.Fe.getGlyphWidths(k);
8080
+ let q=0;for(const z of k)q+=z;return {width:q}};this.moveTo=function(k,q){var z=this.he;e([k,q])&&z.moveTo(k,q);};this.putImageData=function(k,q,z,A,F,H,N){if(e([q,z,A,F,H,N]))if(void 0===A)this.ce.writePixels(k.data,k.width,k.height,q,z);else if(A=A||0,F=F||0,H=H||k.width,N=N||k.height,0>H&&(A+=H,H=Math.abs(H)),0>N&&(F+=N,N=Math.abs(N)),0>A&&(H+=A,A=0),0>F&&(N+=F,F=0),!(0>=H||0>=N)){k=a.MakeImage({width:k.width,height:k.height,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},
8081
+ k.data,4*k.width);var V=a.XYWHRect(A,F,H,N);q=a.XYWHRect(q+A,z+F,H,N);z=a.Matrix.invert(this.je);this.ce.save();this.ce.concat(z);this.ce.drawImageRect(k,V,q,null,false);this.ce.restore();k.delete();}};this.quadraticCurveTo=function(k,q,z,A){var F=this.he;e([k,q,z,A])&&(F.isEmpty()&&F.moveTo(k,q),F.quadTo(k,q,z,A));};this.rect=function(k,q,z,A){var F=this.he;k=a.XYWHRect(k,q,z,A);e(k)&&F.addRect(k);};this.resetTransform=function(){this.he.transform(this.je);var k=a.Matrix.invert(this.je);this.ce.concat(k);
8082
+ this.je=this.ce.getTotalMatrix();};this.restore=function(){var k=this.Ff.pop();if(k){var q=a.Matrix.multiply(this.je,a.Matrix.invert(k.ag));this.he.transform(q);this.fe.delete();this.fe=k.sg;this.Ne=k.qg;this.bf=k.Eg;this.ye=k.Dg;this.se=k.fs;this.Pe=k.Bg;this.Qe=k.Cg;this.Oe=k.sb;this.af=k.Ag;this.Be=k.ga;this.ee=k.hg;this.$e=k.rg;this.kf=k.gg;this.ce.restore();this.je=this.ce.getTotalMatrix();}};this.rotate=function(k){if(isFinite(k)){var q=a.Matrix.rotated(-k);this.he.transform(q);this.ce.rotate(k/
8083
+ Math.PI*180,0,0);this.je=this.ce.getTotalMatrix();}};this.save=function(){if(this.se.Le){var k=this.se.Le();this.Ue.push(k);}else k=this.se;if(this.ye.Le){var q=this.ye.Le();this.Ue.push(q);}else q=this.ye;this.Ff.push({ag:this.je.slice(),qg:this.Ne.slice(),Eg:this.bf,Dg:q,fs:k,Bg:this.Pe,Cg:this.Qe,sb:this.Oe,Ag:this.af,ga:this.Be,rg:this.$e,hg:this.ee,sg:this.fe.copy(),gg:this.kf});this.ce.save();};this.scale=function(k,q){if(e(arguments)){var z=a.Matrix.scaled(1/k,1/q);this.he.transform(z);this.ce.scale(k,
8084
+ q);this.je=this.ce.getTotalMatrix();}};this.setLineDash=function(k){for(var q=0;q<k.length;q++)if(!isFinite(k[q])||0>k[q])return;1===k.length%2&&Array.prototype.push.apply(k,k);this.Ne=k;};this.setTransform=function(k,q,z,A,F,H){e(arguments)&&(this.resetTransform(),this.transform(k,q,z,A,F,H));};this.Ke=function(){var k=a.Matrix.invert(this.je);this.ce.concat(k);this.ce.concat(a.Matrix.translated(this.Pe,this.Qe));this.ce.concat(this.je);};this.Re=function(k){var q=a.multiplyByAlpha(this.af,this.Be);
8085
+ if(!a.getColorComponents(q)[3]||!(this.Oe||this.Qe||this.Pe))return null;k=k.copy();k.setColor(q);var z=a.MaskFilter.MakeBlur(a.BlurStyle.Normal,this.Oe/2,false);k.setMaskFilter(z);k.dispose=function(){z.delete();this.delete();};return k};this.xf=function(){var k=this.fe.copy();k.setStyle(a.PaintStyle.Stroke);if(f(this.ye)){var q=a.multiplyByAlpha(this.ye,this.Be);k.setColor(q);}else q=this.ye.Me(this.je),k.setColor(a.Color(0,0,0,this.Be)),k.setShader(q);k.setStrokeWidth(this.bf);if(this.Ne.length){var z=
8086
+ a.PathEffect.MakeDash(this.Ne,this.$e);k.setPathEffect(z);}k.dispose=function(){z&&z.delete();this.delete();};return k};this.stroke=function(k){k=k?k.le:this.he;var q=this.xf(),z=this.Re(q);z&&(this.ce.save(),this.Ke(),this.ce.drawPath(k,z),this.ce.restore(),z.dispose());this.ce.drawPath(k,q);q.dispose();};this.strokeRect=function(k,q,z,A){var F=this.xf(),H=this.Re(F);H&&(this.ce.save(),this.Ke(),this.ce.drawRect(a.XYWHRect(k,q,z,A),H),this.ce.restore(),H.dispose());this.ce.drawRect(a.XYWHRect(k,q,z,
8087
+ A),F);F.dispose();};this.strokeText=function(k,q,z){var A=this.xf();k=a.TextBlob.MakeFromText(k,this.Fe);var F=this.Re(A);F&&(this.ce.save(),this.Ke(),this.ce.drawTextBlob(k,q,z,F),this.ce.restore(),F.dispose());this.ce.drawTextBlob(k,q,z,A);k.delete();A.dispose();};this.translate=function(k,q){if(e(arguments)){var z=a.Matrix.translated(-k,-q);this.he.transform(z);this.ce.translate(k,q);this.je=this.ce.getTotalMatrix();}};this.transform=function(k,q,z,A,F,H){k=[k,z,F,q,A,H,0,0,1];q=a.Matrix.invert(k);
8088
+ this.he.transform(q);this.ce.concat(k);this.je=this.ce.getTotalMatrix();};this.addHitRegion=function(){};this.clearHitRegions=function(){};this.drawFocusIfNeeded=function(){};this.removeHitRegion=function(){};this.scrollPathIntoView=function(){};Object.defineProperty(this,"canvas",{value:null,writable:false});}function C(I){this.yf=I;this.be=new x(I.getCanvas());this.lf=[];this.decodeImage=function(k){k=a.MakeImageFromEncoded(k);if(!k)throw "Invalid input";this.lf.push(k);return new K(k)};this.loadFont=
8089
+ function(k,q){k=a.Typeface.MakeTypefaceFromData(k);if(!k)return null;this.lf.push(k);var z=(q.style||"normal")+"|"+(q.variant||"normal")+"|"+(q.weight||"normal");q=q.family;t();fa[q]||(fa[q]={"*":k});fa[q][z]=k;};this.makePath2D=function(k){k=new ea(k);this.lf.push(k.le);return k};this.getContext=function(k){return "2d"===k?this.be:null};this.toDataURL=function(k,q){this.yf.flush();var z=this.yf.makeImageSnapshot();if(z){k=k||"image/png";var A=a.ImageFormat.PNG;"image/jpeg"===k&&(A=a.ImageFormat.JPEG);
8090
+ if(q=z.encodeToBytes(A,q||.92)){z.delete();k="data:"+k+";base64,";if("undefined"!==typeof Buffer)q=Buffer.from(q).toString("base64");else {z=0;A=q.length;for(var F="",H;z<A;)H=q.slice(z,Math.min(z+32768,A)),F+=String.fromCharCode.apply(null,H),z+=32768;q=btoa(F);}return k+q}}};this.dispose=function(){this.be.Ee();this.lf.forEach(function(k){k.delete();});this.yf.dispose();};}function K(I){this.width=I.width();this.height=I.height();this.naturalWidth=this.width;this.naturalHeight=this.height;this.Lf=function(){return I};}
8091
+ function O(I,k,q){if(!k||0===q)throw new TypeError("invalid dimensions, width and height must be non-zero");if(I.length%4)throw new TypeError("arr must be a multiple of 4");q=q||I.length/(4*k);Object.defineProperty(this,"data",{value:I,writable:false});Object.defineProperty(this,"height",{value:q,writable:false});Object.defineProperty(this,"width",{value:k,writable:false});}function P(I,k,q,z){this.ne=null;this.ue=[];this.qe=[];this.addColorStop=function(A,F){if(0>A||1<A||!isFinite(A))throw "offset must be between 0 and 1 inclusively";
8092
+ F=g(F);var H=this.qe.indexOf(A);if(-1!==H)this.ue[H]=F;else {for(H=0;H<this.qe.length&&!(this.qe[H]>A);H++);this.qe.splice(H,0,A);this.ue.splice(H,0,F);}};this.Le=function(){var A=new P(I,k,q,z);A.ue=this.ue.slice();A.qe=this.qe.slice();return A};this.Ee=function(){this.ne&&(this.ne.delete(),this.ne=null);};this.Me=function(A){var F=[I,k,q,z];a.Matrix.mapPoints(A,F);A=F[0];var H=F[1],N=F[2];F=F[3];this.Ee();return this.ne=a.Shader.MakeLinearGradient([A,H],[N,F],this.ue,this.qe,a.TileMode.Clamp)};}function Y(I,
8093
+ k,q,z,A,F){if(e([k,q,z,A,F])){if(0>F)throw "radii cannot be negative";I.isEmpty()&&I.moveTo(k,q);I.arcToTangent(k,q,z,A,F);}}function ba(I){if(!I.isEmpty()){var k=I.getBounds();(k[3]-k[1]||k[2]-k[0])&&I.close();}}function r(I,k,q,z,A,F,H){H=(H-F)/Math.PI*180;F=F/Math.PI*180;k=a.LTRBRect(k-z,q-A,k+z,q+A);1E-5>Math.abs(Math.abs(H)-360)?(q=H/2,I.arcToOval(k,F,q,false),I.arcToOval(k,F+q,q,false)):I.arcToOval(k,F,H,false);}function D(I,k,q,z,A,F,H,N,V){if(e([k,q,z,A,F,H,N])){if(0>z||0>A)throw "radii cannot be negative";
8094
+ var qa=2*Math.PI,cb=H%qa;0>cb&&(cb+=qa);var db=cb-H;H=cb;N+=db;!V&&N-H>=qa?N=H+qa:V&&H-N>=qa?N=H-qa:!V&&H>N?N=H+(qa-(H-N)%qa):V&&H<N&&(N=H-(qa-(N-H)%qa));F?(V=a.Matrix.rotated(F,k,q),F=a.Matrix.rotated(-F,k,q),I.transform(F),r(I,k,q,z,A,H,N),I.transform(V)):r(I,k,q,z,A,H,N);}}function U(I,k,q){e([k,q])&&(I.isEmpty()&&I.moveTo(k,q),I.lineTo(k,q));}function ea(I){this.le=null;this.le="string"===typeof I?a.Path.MakeFromSVGString(I):I&&I.vf?I.le.copy():new a.Path;this.vf=function(){return this.le};this.addPath=
8095
+ function(k,q){q||(q={a:1,c:0,e:0,b:0,d:1,f:0});this.le.addPath(k.le,[q.a,q.c,q.e,q.b,q.d,q.f]);};this.arc=function(k,q,z,A,F,H){D(this.le,k,q,z,z,0,A,F,H);};this.arcTo=function(k,q,z,A,F){Y(this.le,k,q,z,A,F);};this.bezierCurveTo=function(k,q,z,A,F,H){var N=this.le;e([k,q,z,A,F,H])&&(N.isEmpty()&&N.moveTo(k,q),N.cubicTo(k,q,z,A,F,H));};this.closePath=function(){ba(this.le);};this.ellipse=function(k,q,z,A,F,H,N,V){D(this.le,k,q,z,A,F,H,N,V);};this.lineTo=function(k,q){U(this.le,k,q);};this.moveTo=function(k,
8096
+ q){var z=this.le;e([k,q])&&z.moveTo(k,q);};this.quadraticCurveTo=function(k,q,z,A){var F=this.le;e([k,q,z,A])&&(F.isEmpty()&&F.moveTo(k,q),F.quadTo(k,q,z,A));};this.rect=function(k,q,z,A){var F=this.le;k=a.XYWHRect(k,q,z,A);e(k)&&F.addRect(k);};}function la(I,k){this.ne=null;I instanceof K&&(I=I.Lf());this.Uf=I;this._transform=a.Matrix.identity();""===k&&(k="repeat");switch(k){case "repeat-x":this.Se=a.TileMode.Repeat;this.Te=a.TileMode.Decal;break;case "repeat-y":this.Se=a.TileMode.Decal;this.Te=a.TileMode.Repeat;
8097
+ break;case "repeat":this.Te=this.Se=a.TileMode.Repeat;break;case "no-repeat":this.Te=this.Se=a.TileMode.Decal;break;default:throw "invalid repetition mode "+k;}this.setTransform=function(q){q=[q.a,q.c,q.e,q.b,q.d,q.f,0,0,1];e(q)&&(this._transform=q);};this.Le=function(){var q=new la;q.Se=this.Se;q.Te=this.Te;return q};this.Ee=function(){this.ne&&(this.ne.delete(),this.ne=null);};this.Me=function(){this.Ee();return this.ne=this.Uf.makeShaderCubic(this.Se,this.Te,1/3,1/3,this._transform)};}function ta(I,
8098
+ k,q,z,A,F){this.ne=null;this.ue=[];this.qe=[];this.addColorStop=function(H,N){if(0>H||1<H||!isFinite(H))throw "offset must be between 0 and 1 inclusively";N=g(N);var V=this.qe.indexOf(H);if(-1!==V)this.ue[V]=N;else {for(V=0;V<this.qe.length&&!(this.qe[V]>H);V++);this.qe.splice(V,0,H);this.ue.splice(V,0,N);}};this.Le=function(){var H=new ta(I,k,q,z,A,F);H.ue=this.ue.slice();H.qe=this.qe.slice();return H};this.Ee=function(){this.ne&&(this.ne.delete(),this.ne=null);};this.Me=function(H){var N=[I,k,z,A];
8099
+ a.Matrix.mapPoints(H,N);var V=N[0],qa=N[1],cb=N[2];N=N[3];var db=(Math.abs(H[0])+Math.abs(H[4]))/2;H=q*db;db*=F;this.Ee();return this.ne=a.Shader.MakeTwoPointConicalGradient([V,qa],H,[cb,N],db,this.ue,this.qe,a.TileMode.Clamp)};}a._testing={};var xa={aliceblue:Float32Array.of(.941,.973,1,1),antiquewhite:Float32Array.of(.98,.922,.843,1),aqua:Float32Array.of(0,1,1,1),aquamarine:Float32Array.of(.498,1,.831,1),azure:Float32Array.of(.941,1,1,1),beige:Float32Array.of(.961,.961,.863,1),bisque:Float32Array.of(1,
8100
+ .894,.769,1),black:Float32Array.of(0,0,0,1),blanchedalmond:Float32Array.of(1,.922,.804,1),blue:Float32Array.of(0,0,1,1),blueviolet:Float32Array.of(.541,.169,.886,1),brown:Float32Array.of(.647,.165,.165,1),burlywood:Float32Array.of(.871,.722,.529,1),cadetblue:Float32Array.of(.373,.62,.627,1),chartreuse:Float32Array.of(.498,1,0,1),chocolate:Float32Array.of(.824,.412,.118,1),coral:Float32Array.of(1,.498,.314,1),cornflowerblue:Float32Array.of(.392,.584,.929,1),cornsilk:Float32Array.of(1,.973,.863,1),
8101
+ crimson:Float32Array.of(.863,.078,.235,1),cyan:Float32Array.of(0,1,1,1),darkblue:Float32Array.of(0,0,.545,1),darkcyan:Float32Array.of(0,.545,.545,1),darkgoldenrod:Float32Array.of(.722,.525,.043,1),darkgray:Float32Array.of(.663,.663,.663,1),darkgreen:Float32Array.of(0,.392,0,1),darkgrey:Float32Array.of(.663,.663,.663,1),darkkhaki:Float32Array.of(.741,.718,.42,1),darkmagenta:Float32Array.of(.545,0,.545,1),darkolivegreen:Float32Array.of(.333,.42,.184,1),darkorange:Float32Array.of(1,.549,0,1),darkorchid:Float32Array.of(.6,
8102
+ .196,.8,1),darkred:Float32Array.of(.545,0,0,1),darksalmon:Float32Array.of(.914,.588,.478,1),darkseagreen:Float32Array.of(.561,.737,.561,1),darkslateblue:Float32Array.of(.282,.239,.545,1),darkslategray:Float32Array.of(.184,.31,.31,1),darkslategrey:Float32Array.of(.184,.31,.31,1),darkturquoise:Float32Array.of(0,.808,.82,1),darkviolet:Float32Array.of(.58,0,.827,1),deeppink:Float32Array.of(1,.078,.576,1),deepskyblue:Float32Array.of(0,.749,1,1),dimgray:Float32Array.of(.412,.412,.412,1),dimgrey:Float32Array.of(.412,
8103
+ .412,.412,1),dodgerblue:Float32Array.of(.118,.565,1,1),firebrick:Float32Array.of(.698,.133,.133,1),floralwhite:Float32Array.of(1,.98,.941,1),forestgreen:Float32Array.of(.133,.545,.133,1),fuchsia:Float32Array.of(1,0,1,1),gainsboro:Float32Array.of(.863,.863,.863,1),ghostwhite:Float32Array.of(.973,.973,1,1),gold:Float32Array.of(1,.843,0,1),goldenrod:Float32Array.of(.855,.647,.125,1),gray:Float32Array.of(.502,.502,.502,1),green:Float32Array.of(0,.502,0,1),greenyellow:Float32Array.of(.678,1,.184,1),grey:Float32Array.of(.502,
8104
+ .502,.502,1),honeydew:Float32Array.of(.941,1,.941,1),hotpink:Float32Array.of(1,.412,.706,1),indianred:Float32Array.of(.804,.361,.361,1),indigo:Float32Array.of(.294,0,.51,1),ivory:Float32Array.of(1,1,.941,1),khaki:Float32Array.of(.941,.902,.549,1),lavender:Float32Array.of(.902,.902,.98,1),lavenderblush:Float32Array.of(1,.941,.961,1),lawngreen:Float32Array.of(.486,.988,0,1),lemonchiffon:Float32Array.of(1,.98,.804,1),lightblue:Float32Array.of(.678,.847,.902,1),lightcoral:Float32Array.of(.941,.502,.502,
8105
+ 1),lightcyan:Float32Array.of(.878,1,1,1),lightgoldenrodyellow:Float32Array.of(.98,.98,.824,1),lightgray:Float32Array.of(.827,.827,.827,1),lightgreen:Float32Array.of(.565,.933,.565,1),lightgrey:Float32Array.of(.827,.827,.827,1),lightpink:Float32Array.of(1,.714,.757,1),lightsalmon:Float32Array.of(1,.627,.478,1),lightseagreen:Float32Array.of(.125,.698,.667,1),lightskyblue:Float32Array.of(.529,.808,.98,1),lightslategray:Float32Array.of(.467,.533,.6,1),lightslategrey:Float32Array.of(.467,.533,.6,1),lightsteelblue:Float32Array.of(.69,
8106
+ .769,.871,1),lightyellow:Float32Array.of(1,1,.878,1),lime:Float32Array.of(0,1,0,1),limegreen:Float32Array.of(.196,.804,.196,1),linen:Float32Array.of(.98,.941,.902,1),magenta:Float32Array.of(1,0,1,1),maroon:Float32Array.of(.502,0,0,1),mediumaquamarine:Float32Array.of(.4,.804,.667,1),mediumblue:Float32Array.of(0,0,.804,1),mediumorchid:Float32Array.of(.729,.333,.827,1),mediumpurple:Float32Array.of(.576,.439,.859,1),mediumseagreen:Float32Array.of(.235,.702,.443,1),mediumslateblue:Float32Array.of(.482,
8107
+ .408,.933,1),mediumspringgreen:Float32Array.of(0,.98,.604,1),mediumturquoise:Float32Array.of(.282,.82,.8,1),mediumvioletred:Float32Array.of(.78,.082,.522,1),midnightblue:Float32Array.of(.098,.098,.439,1),mintcream:Float32Array.of(.961,1,.98,1),mistyrose:Float32Array.of(1,.894,.882,1),moccasin:Float32Array.of(1,.894,.71,1),navajowhite:Float32Array.of(1,.871,.678,1),navy:Float32Array.of(0,0,.502,1),oldlace:Float32Array.of(.992,.961,.902,1),olive:Float32Array.of(.502,.502,0,1),olivedrab:Float32Array.of(.42,
8108
+ .557,.137,1),orange:Float32Array.of(1,.647,0,1),orangered:Float32Array.of(1,.271,0,1),orchid:Float32Array.of(.855,.439,.839,1),palegoldenrod:Float32Array.of(.933,.91,.667,1),palegreen:Float32Array.of(.596,.984,.596,1),paleturquoise:Float32Array.of(.686,.933,.933,1),palevioletred:Float32Array.of(.859,.439,.576,1),papayawhip:Float32Array.of(1,.937,.835,1),peachpuff:Float32Array.of(1,.855,.725,1),peru:Float32Array.of(.804,.522,.247,1),pink:Float32Array.of(1,.753,.796,1),plum:Float32Array.of(.867,.627,
8109
+ .867,1),powderblue:Float32Array.of(.69,.878,.902,1),purple:Float32Array.of(.502,0,.502,1),rebeccapurple:Float32Array.of(.4,.2,.6,1),red:Float32Array.of(1,0,0,1),rosybrown:Float32Array.of(.737,.561,.561,1),royalblue:Float32Array.of(.255,.412,.882,1),saddlebrown:Float32Array.of(.545,.271,.075,1),salmon:Float32Array.of(.98,.502,.447,1),sandybrown:Float32Array.of(.957,.643,.376,1),seagreen:Float32Array.of(.18,.545,.341,1),seashell:Float32Array.of(1,.961,.933,1),sienna:Float32Array.of(.627,.322,.176,1),
8110
+ silver:Float32Array.of(.753,.753,.753,1),skyblue:Float32Array.of(.529,.808,.922,1),slateblue:Float32Array.of(.416,.353,.804,1),slategray:Float32Array.of(.439,.502,.565,1),slategrey:Float32Array.of(.439,.502,.565,1),snow:Float32Array.of(1,.98,.98,1),springgreen:Float32Array.of(0,1,.498,1),steelblue:Float32Array.of(.275,.51,.706,1),tan:Float32Array.of(.824,.706,.549,1),teal:Float32Array.of(0,.502,.502,1),thistle:Float32Array.of(.847,.749,.847,1),tomato:Float32Array.of(1,.388,.278,1),transparent:Float32Array.of(0,
8111
+ 0,0,0),turquoise:Float32Array.of(.251,.878,.816,1),violet:Float32Array.of(.933,.51,.933,1),wheat:Float32Array.of(.961,.871,.702,1),white:Float32Array.of(1,1,1,1),whitesmoke:Float32Array.of(.961,.961,.961,1),yellow:Float32Array.of(1,1,0,1),yellowgreen:Float32Array.of(.604,.804,.196,1)};a._testing.parseColor=g;a._testing.colorToString=d;var Da=RegExp("(italic|oblique|normal|)\\s*(small-caps|normal|)\\s*(bold|bolder|lighter|[1-9]00|normal|)\\s*([\\d\\.]+)(px|pt|pc|in|cm|mm|%|em|ex|ch|rem|q)(.+)"),fa;
8112
+ a._testing.parseFontString=l;a.MakeCanvas=function(I,k){return (I=a.MakeSurface(I,k))?new C(I):null};a.ImageData=function(){if(2===arguments.length){var I=arguments[0],k=arguments[1];return new O(new Uint8ClampedArray(4*I*k),I,k)}if(3===arguments.length){var q=arguments[0];if(q.prototype.constructor!==Uint8ClampedArray)throw new TypeError("bytes must be given as a Uint8ClampedArray");I=arguments[1];k=arguments[2];if(q%4)throw new TypeError("bytes must be given in a multiple of 4");if(q%I)throw new TypeError("bytes must divide evenly by width");
8113
+ if(k&&k!==q/(4*I))throw new TypeError("invalid height given");return new O(q,I,q/(4*I))}throw new TypeError("invalid number of arguments - takes 2 or 3, saw "+arguments.length);};})();})(w);var ra=Object.assign({},w),ua="./this.program",va=(a,b)=>{throw b;},wa="object"==typeof window,ya="function"==typeof importScripts,za="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,Aa="",Ba,Ea,Fa;
8114
+ if(za){var fs=require$$0,Ga=require$$1;Aa=ya?Ga.dirname(Aa)+"/":__dirname+"/";Ba=(a,b)=>{a=a.startsWith("file://")?new URL(a):Ga.normalize(a);return fs.readFileSync(a,b?void 0:"utf8")};Fa=a=>{a=Ba(a,true);a.buffer||(a=new Uint8Array(a));return a};Ea=(a,b,c,f=true)=>{a=a.startsWith("file://")?new URL(a):Ga.normalize(a);fs.readFile(a,f?void 0:"utf8",(h,m)=>{h?c(h):b(f?m.buffer:m);});};!w.thisProgram&&1<process.argv.length&&(ua=process.argv[1].replace(/\\/g,"/"));process.argv.slice(2);va=(a,b)=>{process.exitCode=
8115
+ a;throw b;};w.inspect=()=>"[Emscripten Module object]";}else if(wa||ya)ya?Aa=self.location.href:"undefined"!=typeof document&&document.currentScript&&(Aa=document.currentScript.src),_scriptDir&&(Aa=_scriptDir),0!==Aa.indexOf("blob:")?Aa=Aa.substr(0,Aa.replace(/[?#].*/,"").lastIndexOf("/")+1):Aa="",Ba=a=>{var b=new XMLHttpRequest;b.open("GET",a,false);b.send(null);return b.responseText},ya&&(Fa=a=>{var b=new XMLHttpRequest;b.open("GET",a,false);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),
8116
+ Ea=(a,b,c)=>{var f=new XMLHttpRequest;f.open("GET",a,true);f.responseType="arraybuffer";f.onload=()=>{200==f.status||0==f.status&&f.response?b(f.response):c();};f.onerror=c;f.send(null);};var Ha=w.print||console.log.bind(console),Ia=w.printErr||console.error.bind(console);Object.assign(w,ra);ra=null;w.thisProgram&&(ua=w.thisProgram);w.quit&&(va=w.quit);var Ja;w.wasmBinary&&(Ja=w.wasmBinary);w.noExitRuntime||true;"object"!=typeof WebAssembly&&Ka("no native wasm support detected");
8117
+ var La,Ma,Na=false,Qa,J,Ra,Sa,Q,Ta,R,Ua;function Wa(){var a=La.buffer;w.HEAP8=Qa=new Int8Array(a);w.HEAP16=Ra=new Int16Array(a);w.HEAP32=Q=new Int32Array(a);w.HEAPU8=J=new Uint8Array(a);w.HEAPU16=Sa=new Uint16Array(a);w.HEAPU32=Ta=new Uint32Array(a);w.HEAPF32=R=new Float32Array(a);w.HEAPF64=Ua=new Float64Array(a);}var Xa,Ya=[],Za=[],$a=[];function ab(){var a=w.preRun.shift();Ya.unshift(a);}var eb=0,gb=null;
8118
+ function Ka(a){if(w.onAbort)w.onAbort(a);a="Aborted("+a+")";Ia(a);Na=true;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ca(a);throw a;}function hb(a){return a.startsWith("data:application/octet-stream;base64,")}var mb;mb="canvaskit.wasm";if(!hb(mb)){var nb=mb;mb=w.locateFile?w.locateFile(nb,Aa):Aa+nb;}function ob(a){if(a==mb&&Ja)return new Uint8Array(Ja);if(Fa)return Fa(a);throw "both async and sync fetching of the wasm failed";}
8119
+ function pb(a){if(!Ja&&(wa||ya)){if("function"==typeof fetch&&!a.startsWith("file://"))return fetch(a,{credentials:"same-origin"}).then(b=>{if(!b.ok)throw "failed to load wasm binary file at '"+a+"'";return b.arrayBuffer()}).catch(()=>ob(a));if(Ea)return new Promise((b,c)=>{Ea(a,f=>b(new Uint8Array(f)),c);})}return Promise.resolve().then(()=>ob(a))}function qb(a,b,c){return pb(a).then(f=>WebAssembly.instantiate(f,b)).then(f=>f).then(c,f=>{Ia("failed to asynchronously prepare wasm: "+f);Ka(f);})}
8120
+ function rb(a,b){var c=mb;return Ja||"function"!=typeof WebAssembly.instantiateStreaming||hb(c)||c.startsWith("file://")||za||"function"!=typeof fetch?qb(c,a,b):fetch(c,{credentials:"same-origin"}).then(f=>WebAssembly.instantiateStreaming(f,a).then(b,function(h){Ia("wasm streaming compile failed: "+h);Ia("falling back to ArrayBuffer instantiation");return qb(c,a,b)}))}function sb(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a;}
8121
+ var tb=a=>{for(;0<a.length;)a.shift()(w);},ub="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,vb=(a,b,c)=>{var f=b+c;for(c=b;a[c]&&!(c>=f);)++c;if(16<c-b&&a.buffer&&ub)return ub.decode(a.subarray(b,c));for(f="";b<c;){var h=a[b++];if(h&128){var m=a[b++]&63;if(192==(h&224))f+=String.fromCharCode((h&31)<<6|m);else {var u=a[b++]&63;h=224==(h&240)?(h&15)<<12|m<<6|u:(h&7)<<18|m<<12|u<<6|a[b++]&63;65536>h?f+=String.fromCharCode(h):(h-=65536,f+=String.fromCharCode(55296|h>>10,56320|h&1023));}}else f+=
8122
+ String.fromCharCode(h);}return f},wb={};function xb(a){for(;a.length;){var b=a.pop();a.pop()(b);}}function yb(a){return this.fromWireType(Q[a>>2])}var zb={},Bb={},Cb={},Db=void 0;function Eb(a){throw new Db(a);}
8123
+ function Fb(a,b,c){function f(n){n=c(n);n.length!==a.length&&Eb("Mismatched type converter count");for(var p=0;p<a.length;++p)Gb(a[p],n[p]);}a.forEach(function(n){Cb[n]=b;});var h=Array(b.length),m=[],u=0;b.forEach((n,p)=>{Bb.hasOwnProperty(n)?h[p]=Bb[n]:(m.push(n),zb.hasOwnProperty(n)||(zb[n]=[]),zb[n].push(()=>{h[p]=Bb[n];++u;u===m.length&&f(h);}));});0===m.length&&f(h);}
8124
+ function Hb(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${a}`);}}var Ib=void 0;function Jb(a){for(var b="";J[a];)b+=Ib[J[a++]];return b}var Kb=void 0;function W(a){throw new Kb(a);}
8125
+ function Lb(a,b,c={}){var f=b.name;a||W(`type "${f}" must have a positive integer typeid pointer`);if(Bb.hasOwnProperty(a)){if(c.ng)return;W(`Cannot register type '${f}' twice`);}Bb[a]=b;delete Cb[a];zb.hasOwnProperty(a)&&(b=zb[a],delete zb[a],b.forEach(h=>h()));}function Gb(a,b,c={}){if(!("argPackAdvance"in b))throw new TypeError("registerType registeredInstance requires argPackAdvance");Lb(a,b,c);}function Mb(a){W(a.ae.me.ge.name+" instance already deleted");}var Nb=false;function Ob(){}
8126
+ function Pb(a){--a.count.value;0===a.count.value&&(a.pe?a.we.De(a.pe):a.me.ge.De(a.ie));}function Qb(a,b,c){if(b===c)return a;if(void 0===c.re)return null;a=Qb(a,b,c.re);return null===a?null:c.dg(a)}var Rb={},Sb=[];function Tb(){for(;Sb.length;){var a=Sb.pop();a.ae.Xe=false;a["delete"]();}}var Ub=void 0,Vb={};function Wb(a,b){for(void 0===b&&W("ptr should not be undefined");a.re;)b=a.gf(b),a=a.re;return Vb[b]}
8127
+ function cc(a,b){b.me&&b.ie||Eb("makeClassHandle requires ptr and ptrType");!!b.we!==!!b.pe&&Eb("Both smartPtrType and smartPtr must be specified");b.count={value:1};return dc(Object.create(a,{ae:{value:b}}))}function dc(a){if("undefined"===typeof FinalizationRegistry)return dc=b=>b,a;Nb=new FinalizationRegistry(b=>{Pb(b.ae);});dc=b=>{var c=b.ae;c.pe&&Nb.register(b,{ae:c},b);return b};Ob=b=>{Nb.unregister(b);};return dc(a)}function ec(){}
8128
+ function fc(a){if(void 0===a)return "_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a}function gc(a,b){a=fc(a);return {[a]:function(){return b.apply(this,arguments)}}[a]}
8129
+ function hc(a,b,c){if(void 0===a[b].oe){var f=a[b];a[b]=function(){a[b].oe.hasOwnProperty(arguments.length)||W(`Function '${c}' called with an invalid number of arguments (${arguments.length}) - expects one of (${a[b].oe})!`);return a[b].oe[arguments.length].apply(this,arguments)};a[b].oe=[];a[b].oe[f.Ve]=f;}}
8130
+ function ic(a,b,c){w.hasOwnProperty(a)?((void 0===c||void 0!==w[a].oe&&void 0!==w[a].oe[c])&&W(`Cannot register public name '${a}' twice`),hc(w,a,a),w.hasOwnProperty(c)&&W(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`),w[a].oe[c]=b):(w[a]=b,void 0!==c&&(w[a].Lg=c));}function jc(a,b,c,f,h,m,u,n){this.name=a;this.constructor=b;this.Ye=c;this.De=f;this.re=h;this.ig=m;this.gf=u;this.dg=n;this.ug=[];}
8131
+ function kc(a,b,c){for(;b!==c;)b.gf||W(`Expected null or instance of ${c.name}, got an instance of ${b.name}`),a=b.gf(a),b=b.re;return a}function lc(a,b){if(null===b)return this.Bf&&W(`null is not a valid ${this.name}`),0;b.ae||W(`Cannot pass "${mc(b)}" as a ${this.name}`);b.ae.ie||W(`Cannot pass deleted object as a pointer of type ${this.name}`);return kc(b.ae.ie,b.ae.me.ge,this.ge)}
8132
+ function nc(a,b){if(null===b){this.Bf&&W(`null is not a valid ${this.name}`);if(this.pf){var c=this.Cf();null!==a&&a.push(this.De,c);return c}return 0}b.ae||W(`Cannot pass "${mc(b)}" as a ${this.name}`);b.ae.ie||W(`Cannot pass deleted object as a pointer of type ${this.name}`);!this.nf&&b.ae.me.nf&&W(`Cannot convert argument of type ${b.ae.we?b.ae.we.name:b.ae.me.name} to parameter type ${this.name}`);c=kc(b.ae.ie,b.ae.me.ge,this.ge);if(this.pf)switch(void 0===b.ae.pe&&W("Passing raw pointer to smart pointer is illegal"),
8133
+ this.zg){case 0:b.ae.we===this?c=b.ae.pe:W(`Cannot convert argument of type ${b.ae.we?b.ae.we.name:b.ae.me.name} to parameter type ${this.name}`);break;case 1:c=b.ae.pe;break;case 2:if(b.ae.we===this)c=b.ae.pe;else {var f=b.clone();c=this.vg(c,oc(function(){f["delete"]();}));null!==a&&a.push(this.De,c);}break;default:W("Unsupporting sharing policy");}return c}
8134
+ function pc(a,b){if(null===b)return this.Bf&&W(`null is not a valid ${this.name}`),0;b.ae||W(`Cannot pass "${mc(b)}" as a ${this.name}`);b.ae.ie||W(`Cannot pass deleted object as a pointer of type ${this.name}`);b.ae.me.nf&&W(`Cannot convert argument of type ${b.ae.me.name} to parameter type ${this.name}`);return kc(b.ae.ie,b.ae.me.ge,this.ge)}
8135
+ function qc(a,b,c,f,h,m,u,n,p,v,E){this.name=a;this.ge=b;this.Bf=c;this.nf=f;this.pf=h;this.tg=m;this.zg=u;this.Nf=n;this.Cf=p;this.vg=v;this.De=E;h||void 0!==b.re?this.toWireType=nc:(this.toWireType=f?lc:pc,this.ve=null);}function rc(a,b,c){w.hasOwnProperty(a)||Eb("Replacing nonexistant public symbol");void 0!==w[a].oe&&void 0!==c?w[a].oe[c]=b:(w[a]=b,w[a].Ve=c);}
8136
+ var sc=(a,b)=>{var c=[];return function(){c.length=0;Object.assign(c,arguments);if(a.includes("j")){var f=w["dynCall_"+a];f=c&&c.length?f.apply(null,[b].concat(c)):f.call(null,b);}else f=Xa.get(b).apply(null,c);return f}};function tc(a,b){a=Jb(a);var c=a.includes("j")?sc(a,b):Xa.get(b);"function"!=typeof c&&W(`unknown function pointer with signature ${a}: ${b}`);return c}var uc=void 0;function vc(a){a=wc(a);var b=Jb(a);xc(a);return b}
8137
+ function yc(a,b){function c(m){h[m]||Bb[m]||(Cb[m]?Cb[m].forEach(c):(f.push(m),h[m]=true));}var f=[],h={};b.forEach(c);throw new uc(`${a}: `+f.map(vc).join([", "]));}
8138
+ function Fc(a,b,c,f,h){var m=b.length;2>m&&W("argTypes array size mismatch! Must at least get return value and 'this' types!");var u=null!==b[1]&&null!==c,n=false;for(c=1;c<b.length;++c)if(null!==b[c]&&void 0===b[c].ve){n=true;break}var p="void"!==b[0].name,v=m-2,E=Array(v),G=[],L=[];return function(){arguments.length!==v&&W(`function ${a} called with ${arguments.length} arguments, expected ${v} args!`);L.length=0;G.length=u?2:1;G[0]=h;if(u){var y=b[1].toWireType(L,this);G[1]=y;}for(var M=0;M<v;++M)E[M]=
8139
+ b[M+2].toWireType(L,arguments[M]),G.push(E[M]);M=f.apply(null,G);if(n)xb(L);else for(var T=u?1:2;T<b.length;T++){var S=1===T?y:E[T-2];null!==b[T].ve&&b[T].ve(S);}y=p?b[0].fromWireType(M):void 0;return y}}function Gc(a,b){for(var c=[],f=0;f<a;f++)c.push(Ta[b+4*f>>2]);return c}function Hc(){this.Ce=[void 0];this.Kf=[];}var Ic=new Hc;function Jc(a){a>=Ic.df&&0===--Ic.get(a).Of&&Ic.Zf(a);}
8140
+ var Kc=a=>{a||W("Cannot use deleted val. handle = "+a);return Ic.get(a).value},oc=a=>{switch(a){case void 0:return 1;case null:return 2;case true:return 3;case false:return 4;default:return Ic.Yf({Of:1,value:a})}};function Lc(a,b,c){switch(b){case 0:return function(f){return this.fromWireType((c?Qa:J)[f])};case 1:return function(f){return this.fromWireType((c?Ra:Sa)[f>>1])};case 2:return function(f){return this.fromWireType((c?Q:Ta)[f>>2])};default:throw new TypeError("Unknown integer type: "+a);}}
8141
+ function Mc(a,b){var c=Bb[a];void 0===c&&W(b+" has unknown type "+vc(a));return c}function mc(a){if(null===a)return "null";var b=typeof a;return "object"===b||"array"===b||"function"===b?a.toString():""+a}function Nc(a,b){switch(b){case 2:return function(c){return this.fromWireType(R[c>>2])};case 3:return function(c){return this.fromWireType(Ua[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}
8142
+ function Oc(a,b,c){switch(b){case 0:return c?function(f){return Qa[f]}:function(f){return J[f]};case 1:return c?function(f){return Ra[f>>1]}:function(f){return Sa[f>>1]};case 2:return c?function(f){return Q[f>>2]}:function(f){return Ta[f>>2]};default:throw new TypeError("Unknown integer type: "+a);}}
8143
+ var oa=(a,b,c,f)=>{if(!(0<f))return 0;var h=c;f=c+f-1;for(var m=0;m<a.length;++m){var u=a.charCodeAt(m);if(55296<=u&&57343>=u){var n=a.charCodeAt(++m);u=65536+((u&1023)<<10)|n&1023;}if(127>=u){if(c>=f)break;b[c++]=u;}else {if(2047>=u){if(c+1>=f)break;b[c++]=192|u>>6;}else {if(65535>=u){if(c+2>=f)break;b[c++]=224|u>>12;}else {if(c+3>=f)break;b[c++]=240|u>>18;b[c++]=128|u>>12&63;}b[c++]=128|u>>6&63;}b[c++]=128|u&63;}}b[c]=0;return c-h},na=a=>{for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);127>=f?b++:2047>=
8144
+ f?b+=2:55296<=f&&57343>=f?(b+=4,++c):b+=3;}return b},Pc="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,Qc=(a,b)=>{var c=a>>1;for(var f=c+b/2;!(c>=f)&&Sa[c];)++c;c<<=1;if(32<c-a&&Pc)return Pc.decode(J.subarray(a,c));c="";for(f=0;!(f>=b/2);++f){var h=Ra[a+2*f>>1];if(0==h)break;c+=String.fromCharCode(h);}return c},Rc=(a,b,c)=>{ void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var f=b;c=c<2*a.length?c/2:a.length;for(var h=0;h<c;++h)Ra[b>>1]=a.charCodeAt(h),b+=2;Ra[b>>1]=0;return b-f},
8145
+ Sc=a=>2*a.length,Tc=(a,b)=>{for(var c=0,f="";!(c>=b/4);){var h=Q[a+4*c>>2];if(0==h)break;++c;65536<=h?(h-=65536,f+=String.fromCharCode(55296|h>>10,56320|h&1023)):f+=String.fromCharCode(h);}return f},Uc=(a,b,c)=>{ void 0===c&&(c=2147483647);if(4>c)return 0;var f=b;c=f+c-4;for(var h=0;h<a.length;++h){var m=a.charCodeAt(h);if(55296<=m&&57343>=m){var u=a.charCodeAt(++h);m=65536+((m&1023)<<10)|u&1023;}Q[b>>2]=m;b+=4;if(b+4>c)break}Q[b>>2]=0;return b-f},Vc=a=>{for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);
8146
+ 55296<=f&&57343>=f&&++c;b+=4;}return b},Wc={};function Xc(a){var b=Wc[a];return void 0===b?Jb(a):b}var Yc=[];
8147
+ function Zc(){function a(b){b.$$$embind_global$$$=b;var c="object"==typeof $$$embind_global$$$&&b.$$$embind_global$$$==b;c||delete b.$$$embind_global$$$;return c}if("object"==typeof globalThis)return globalThis;if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;"object"==typeof commonjsGlobal&&a(commonjsGlobal)?$$$embind_global$$$=commonjsGlobal:"object"==typeof self&&a(self)&&($$$embind_global$$$=self);if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;throw Error("unable to get global object.");
8148
+ }function $c(a){var b=Yc.length;Yc.push(a);return b}function ad(a,b){for(var c=Array(a),f=0;f<a;++f)c[f]=Mc(Ta[b+4*f>>2],"parameter "+f);return c}var bd=[];function cd(a){var b=Array(a+1);return function(c,f,h){b[0]=c;for(var m=0;m<a;++m){var u=Mc(Ta[f+4*m>>2],"parameter "+m);b[m+1]=u.readValueFromPointer(h);h+=u.argPackAdvance;}c=new (c.bind.apply(c,b));return oc(c)}}var dd={};
8149
+ function ed(a){var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=function(c,f){b.vertexAttribDivisorANGLE(c,f);},a.drawArraysInstanced=function(c,f,h,m){b.drawArraysInstancedANGLE(c,f,h,m);},a.drawElementsInstanced=function(c,f,h,m,u){b.drawElementsInstancedANGLE(c,f,h,m,u);});}
8150
+ function fd(a){var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=function(){return b.createVertexArrayOES()},a.deleteVertexArray=function(c){b.deleteVertexArrayOES(c);},a.bindVertexArray=function(c){b.bindVertexArrayOES(c);},a.isVertexArray=function(c){return b.isVertexArrayOES(c)});}function gd(a){var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=function(c,f){b.drawBuffersWEBGL(c,f);});}
8151
+ var hd=1,jd=[],kd=[],ld=[],md=[],ha=[],nd=[],od=[],ma=[],pd=[],qd=[],rd=[],sd={},td={},ud=4;function vd(a){wd||(wd=a);}function da(a){for(var b=hd++,c=a.length;c<b;c++)a[c]=null;return b}function ia(a,b){a.df||(a.df=a.getContext,a.getContext=function(f,h){h=a.df(f,h);return "webgl"==f==h instanceof WebGLRenderingContext?h:null});var c=1<b.majorVersion?a.getContext("webgl2",b):a.getContext("webgl",b);return c?xd(c,b):0}
8152
+ function xd(a,b){var c=da(ma),f={handle:c,attributes:b,version:b.majorVersion,xe:a};a.canvas&&(a.canvas.Rf=f);ma[c]=f;("undefined"==typeof b.eg||b.eg)&&yd(f);return c}function ja(a){B=ma[a];w.Jg=Z=B&&B.xe;return !(a&&!Z)}
8153
+ function yd(a){a||(a=B);if(!a.og){a.og=true;var b=a.xe;ed(b);fd(b);gd(b);b.If=b.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");b.Mf=b.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");2<=a.version&&(b.ze=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.ze)b.ze=b.getExtension("EXT_disjoint_timer_query");b.Kg=b.getExtension("WEBGL_multi_draw");(b.getSupportedExtensions()||[]).forEach(function(c){c.includes("lose_context")||c.includes("debug")||b.getExtension(c);});}}
8154
+ var B,wd;function zd(a,b){Z.bindFramebuffer(a,ld[b]);}function Ad(a){Z.bindVertexArray(od[a]);}function Bd(a){Z.clear(a);}function Cd(a,b,c,f){Z.clearColor(a,b,c,f);}function Dd(a){Z.clearStencil(a);}function Ed(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2];Z.deleteVertexArray(od[f]);od[f]=null;}}var Fd=[];function Gd(a,b,c,f){Z.drawElements(a,b,c,f);}function Jd(a,b,c,f){for(var h=0;h<a;h++){var m=Z[c](),u=m&&da(f);m?(m.name=u,f[u]=m):vd(1282);Q[b+4*h>>2]=u;}}
8155
+ function Kd(a,b){Jd(a,b,"createVertexArray",od);}function Ld(a,b){Ta[a>>2]=b;Ta[a+4>>2]=(b-Ta[a>>2])/4294967296;}
8156
+ function Md(a,b,c){if(b){var f=void 0;switch(a){case 36346:f=1;break;case 36344:0!=c&&1!=c&&vd(1280);return;case 34814:case 36345:f=0;break;case 34466:var h=Z.getParameter(34467);f=h?h.length:0;break;case 33309:if(2>B.version){vd(1282);return}f=2*(Z.getSupportedExtensions()||[]).length;break;case 33307:case 33308:if(2>B.version){vd(1280);return}f=33307==a?3:0;}if(void 0===f)switch(h=Z.getParameter(a),typeof h){case "number":f=h;break;case "boolean":f=h?1:0;break;case "string":vd(1280);return;case "object":if(null===
8157
+ h)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:f=0;break;default:vd(1280);return}else {if(h instanceof Float32Array||h instanceof Uint32Array||h instanceof Int32Array||h instanceof Array){for(a=0;a<h.length;++a)switch(c){case 0:Q[b+4*a>>2]=h[a];break;case 2:R[b+4*a>>2]=h[a];break;case 4:Qa[b+a>>0]=h[a]?1:0;}return}try{f=h.name|
8158
+ 0;}catch(m){vd(1280);Ia("GL_INVALID_ENUM in glGet"+c+"v: Unknown object returned from WebGL getParameter("+a+")! (error: "+m+")");return}}break;default:vd(1280);Ia("GL_INVALID_ENUM in glGet"+c+"v: Native code calling glGet"+c+"v("+a+") and it returns "+h+" of type "+typeof h+"!");return}switch(c){case 1:Ld(b,f);break;case 0:Q[b>>2]=f;break;case 2:R[b>>2]=f;break;case 4:Qa[b>>0]=f?1:0;}}else vd(1281);}function Nd(a,b){Md(a,b,0);}
8159
+ function Od(a,b,c){if(c){a=pd[a];b=2>B.version?Z.ze.getQueryObjectEXT(a,b):Z.getQueryParameter(a,b);var f;"boolean"==typeof b?f=b?1:0:f=b;Ld(c,f);}else vd(1281);}var Qd=a=>{var b=na(a)+1,c=Pd(b);c&&oa(a,J,c,b);return c};
8160
+ function Rd(a){var b=sd[a];if(!b){switch(a){case 7939:b=Z.getSupportedExtensions()||[];b=b.concat(b.map(function(f){return "GL_"+f}));b=Qd(b.join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=Z.getParameter(a))||vd(1280);b=b&&Qd(b);break;case 7938:b=Z.getParameter(7938);b=2<=B.version?"OpenGL ES 3.0 ("+b+")":"OpenGL ES 2.0 ("+b+")";b=Qd(b);break;case 35724:b=Z.getParameter(35724);var c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b="OpenGL ES GLSL ES "+
8161
+ c[1]+" ("+b+")");b=Qd(b);break;default:vd(1280);}sd[a]=b;}return b}function Sd(a,b){if(2>B.version)return vd(1282),0;var c=td[a];if(c)return 0>b||b>=c.length?(vd(1281),0):c[b];switch(a){case 7939:return c=Z.getSupportedExtensions()||[],c=c.concat(c.map(function(f){return "GL_"+f})),c=c.map(function(f){return Qd(f)}),c=td[a]=c,0>b||b>=c.length?(vd(1281),0):c[b];default:return vd(1280),0}}function Td(a){return "]"==a.slice(-1)&&a.lastIndexOf("[")}
8162
+ function Ud(a){a-=5120;return 0==a?Qa:1==a?J:2==a?Ra:4==a?Q:6==a?R:5==a||28922==a||28520==a||30779==a||30782==a?Ta:Sa}function Vd(a,b,c,f,h){a=Ud(a);var m=31-Math.clz32(a.BYTES_PER_ELEMENT),u=ud;return a.subarray(h>>m,h+f*(c*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*(1<<m)+u-1&-u)>>m)}function Wd(a){var b=Z.bg;if(b){var c=b.ff[a];"number"==typeof c&&(b.ff[a]=c=Z.getUniformLocation(b,b.Pf[a]+(0<c?"["+c+"]":"")));return c}vd(1282);}
8163
+ var Xd=[],Yd=[],Zd={},ae=()=>{if(!$d){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:ua||"./this.program"},b;for(b in Zd) void 0===Zd[b]?delete a[b]:a[b]=Zd[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);$d=c;}return $d},$d,be=[null,[],[]],ce=a=>0===a%4&&(0!==a%100||0===a%400),de=[31,29,31,30,31,30,31,31,30,31,30,31],ee=[31,28,31,30,31,30,31,31,30,31,30,31];
8164
+ function fe(a){var b=Array(na(a)+1);oa(a,b,0,b.length);return b}
8165
+ var ge=(a,b,c,f)=>{function h(y,M,T){for(y="number"==typeof y?y.toString():y||"";y.length<M;)y=T[0]+y;return y}function m(y,M){return h(y,M,"0")}function u(y,M){function T(sa){return 0>sa?-1:0<sa?1:0}var S;0===(S=T(y.getFullYear()-M.getFullYear()))&&0===(S=T(y.getMonth()-M.getMonth()))&&(S=T(y.getDate()-M.getDate()));return S}function n(y){switch(y.getDay()){case 0:return new Date(y.getFullYear()-1,11,29);case 1:return y;case 2:return new Date(y.getFullYear(),0,3);case 3:return new Date(y.getFullYear(),
8166
+ 0,2);case 4:return new Date(y.getFullYear(),0,1);case 5:return new Date(y.getFullYear()-1,11,31);case 6:return new Date(y.getFullYear()-1,11,30)}}function p(y){var M=y.He;for(y=new Date((new Date(y.Ie+1900,0,1)).getTime());0<M;){var T=y.getMonth(),S=(ce(y.getFullYear())?de:ee)[T];if(M>S-y.getDate())M-=S-y.getDate()+1,y.setDate(1),11>T?y.setMonth(T+1):(y.setMonth(0),y.setFullYear(y.getFullYear()+1));else {y.setDate(y.getDate()+M);break}}T=new Date(y.getFullYear()+1,0,4);M=n(new Date(y.getFullYear(),
8167
+ 0,4));T=n(T);return 0>=u(M,y)?0>=u(T,y)?y.getFullYear()+1:y.getFullYear():y.getFullYear()-1}var v=Q[f+40>>2];f={Hg:Q[f>>2],Gg:Q[f+4>>2],tf:Q[f+8>>2],Df:Q[f+12>>2],uf:Q[f+16>>2],Ie:Q[f+20>>2],Ae:Q[f+24>>2],He:Q[f+28>>2],Ng:Q[f+32>>2],Fg:Q[f+36>>2],Ig:v?v?vb(J,v):"":""};c=c?vb(J,c):"";v={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y",
8168
+ "%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var E in v)c=c.replace(new RegExp(E,"g"),v[E]);var G="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),L="January February March April May June July August September October November December".split(" ");v={"%a":y=>G[y.Ae].substring(0,3),"%A":y=>G[y.Ae],"%b":y=>L[y.uf].substring(0,3),"%B":y=>L[y.uf],"%C":y=>m((y.Ie+1900)/
8169
+ 100|0,2),"%d":y=>m(y.Df,2),"%e":y=>h(y.Df,2," "),"%g":y=>p(y).toString().substring(2),"%G":y=>p(y),"%H":y=>m(y.tf,2),"%I":y=>{y=y.tf;0==y?y=12:12<y&&(y-=12);return m(y,2)},"%j":y=>{for(var M=0,T=0;T<=y.uf-1;M+=(ce(y.Ie+1900)?de:ee)[T++]);return m(y.Df+M,3)},"%m":y=>m(y.uf+1,2),"%M":y=>m(y.Gg,2),"%n":()=>"\n","%p":y=>0<=y.tf&&12>y.tf?"AM":"PM","%S":y=>m(y.Hg,2),"%t":()=>"\t","%u":y=>y.Ae||7,"%U":y=>m(Math.floor((y.He+7-y.Ae)/7),2),"%V":y=>{var M=Math.floor((y.He+7-(y.Ae+6)%7)/7);2>=(y.Ae+371-y.He-
8170
+ 2)%7&&M++;if(M)53==M&&(T=(y.Ae+371-y.He)%7,4==T||3==T&&ce(y.Ie)||(M=1));else {M=52;var T=(y.Ae+7-y.He-1)%7;(4==T||5==T&&ce(y.Ie%400-1))&&M++;}return m(M,2)},"%w":y=>y.Ae,"%W":y=>m(Math.floor((y.He+7-(y.Ae+6)%7)/7),2),"%y":y=>(y.Ie+1900).toString().substring(2),"%Y":y=>y.Ie+1900,"%z":y=>{y=y.Fg;var M=0<=y;y=Math.abs(y)/60;return (M?"+":"-")+String("0000"+(y/60*100+y%60)).slice(-4)},"%Z":y=>y.Ig,"%%":()=>"%"};c=c.replace(/%%/g,"\x00\x00");for(E in v)c.includes(E)&&(c=c.replace(new RegExp(E,"g"),v[E](f)));
8171
+ c=c.replace(/\0\0/g,"%");E=fe(c);if(E.length>b)return 0;Qa.set(E,a);return E.length-1};Db=w.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError";}};for(var he=Array(256),ie=0;256>ie;++ie)he[ie]=String.fromCharCode(ie);Ib=he;Kb=w.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError";}};
8172
+ ec.prototype.isAliasOf=function(a){if(!(this instanceof ec&&a instanceof ec))return false;var b=this.ae.me.ge,c=this.ae.ie,f=a.ae.me.ge;for(a=a.ae.ie;b.re;)c=b.gf(c),b=b.re;for(;f.re;)a=f.gf(a),f=f.re;return b===f&&c===a};
8173
+ ec.prototype.clone=function(){this.ae.ie||Mb(this);if(this.ae.ef)return this.ae.count.value+=1,this;var a=dc,b=Object,c=b.create,f=Object.getPrototypeOf(this),h=this.ae;a=a(c.call(b,f,{ae:{value:{count:h.count,Xe:h.Xe,ef:h.ef,ie:h.ie,me:h.me,pe:h.pe,we:h.we}}}));a.ae.count.value+=1;a.ae.Xe=false;return a};ec.prototype["delete"]=function(){this.ae.ie||Mb(this);this.ae.Xe&&!this.ae.ef&&W("Object already scheduled for deletion");Ob(this);Pb(this.ae);this.ae.ef||(this.ae.pe=void 0,this.ae.ie=void 0);};
8174
+ ec.prototype.isDeleted=function(){return !this.ae.ie};ec.prototype.deleteLater=function(){this.ae.ie||Mb(this);this.ae.Xe&&!this.ae.ef&&W("Object already scheduled for deletion");Sb.push(this);1===Sb.length&&Ub&&Ub(Tb);this.ae.Xe=true;return this};w.getInheritedInstanceCount=function(){return Object.keys(Vb).length};w.getLiveInheritedInstances=function(){var a=[],b;for(b in Vb)Vb.hasOwnProperty(b)&&a.push(Vb[b]);return a};w.flushPendingDeletes=Tb;w.setDelayFunction=function(a){Ub=a;Sb.length&&Ub&&Ub(Tb);};
8175
+ qc.prototype.jg=function(a){this.Nf&&(a=this.Nf(a));return a};qc.prototype.Hf=function(a){this.De&&this.De(a);};qc.prototype.argPackAdvance=8;qc.prototype.readValueFromPointer=yb;qc.prototype.deleteObject=function(a){if(null!==a)a["delete"]();};
8176
+ qc.prototype.fromWireType=function(a){function b(){return this.pf?cc(this.ge.Ye,{me:this.tg,ie:c,we:this,pe:a}):cc(this.ge.Ye,{me:this,ie:a})}var c=this.jg(a);if(!c)return this.Hf(a),null;var f=Wb(this.ge,c);if(void 0!==f){if(0===f.ae.count.value)return f.ae.ie=c,f.ae.pe=a,f.clone();f=f.clone();this.Hf(a);return f}f=this.ge.ig(c);f=Rb[f];if(!f)return b.call(this);f=this.nf?f.$f:f.pointerType;var h=Qb(c,this.ge,f.ge);return null===h?b.call(this):this.pf?cc(f.ge.Ye,{me:f,ie:h,we:this,pe:a}):cc(f.ge.Ye,
8177
+ {me:f,ie:h})};uc=w.UnboundTypeError=function(a,b){var c=gc(b,function(f){this.name=b;this.message=f;f=Error(f).stack;void 0!==f&&(this.stack=this.toString()+"\n"+f.replace(/^Error(:[^\n]*)?\n/,""));});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c}(Error,"UnboundTypeError");
8178
+ Object.assign(Hc.prototype,{get(a){return this.Ce[a]},has(a){return void 0!==this.Ce[a]},Yf(a){var b=this.Kf.pop()||this.Ce.length;this.Ce[b]=a;return b},Zf(a){this.Ce[a]=void 0;this.Kf.push(a);}});Ic.Ce.push({value:void 0},{value:null},{value:true},{value:false});Ic.df=Ic.Ce.length;w.count_emval_handles=function(){for(var a=0,b=Ic.df;b<Ic.Ce.length;++b) void 0!==Ic.Ce[b]&&++a;return a};for(var Z,je=0;32>je;++je)Fd.push(Array(je));var ke=new Float32Array(288);
8179
+ for(je=0;288>je;++je)Xd[je]=ke.subarray(0,je+1);var le=new Int32Array(288);for(je=0;288>je;++je)Yd[je]=le.subarray(0,je+1);
8180
+ var De={R:function(){return 0},wb:()=>{},yb:function(){return 0},tb:()=>{},ub:()=>{},S:function(){},vb:()=>{},B:function(a){var b=wb[a];delete wb[a];var c=b.Cf,f=b.De,h=b.Jf,m=h.map(u=>u.mg).concat(h.map(u=>u.xg));Fb([a],m,u=>{var n={};h.forEach((p,v)=>{var E=u[v],G=p.kg,L=p.lg,y=u[v+h.length],M=p.wg,T=p.yg;n[p.fg]={read:S=>E.fromWireType(G(L,S)),write:(S,sa)=>{var pa=[];M(T,S,y.toWireType(pa,sa));xb(pa);}};});return [{name:b.name,fromWireType:function(p){var v={},E;for(E in n)v[E]=n[E].read(p);f(p);
8181
+ return v},toWireType:function(p,v){for(var E in n)if(!(E in v))throw new TypeError(`Missing field: "${E}"`);var G=c();for(E in n)n[E].write(G,v[E]);null!==p&&p.push(f,G);return G},argPackAdvance:8,readValueFromPointer:yb,ve:f}]});},nb:function(){},Cb:function(a,b,c,f,h){var m=Hb(c);b=Jb(b);Gb(a,{name:b,fromWireType:function(u){return !!u},toWireType:function(u,n){return n?f:h},argPackAdvance:8,readValueFromPointer:function(u){if(1===c)var n=Qa;else if(2===c)n=Ra;else if(4===c)n=Q;else throw new TypeError("Unknown boolean type size: "+
8182
+ b);return this.fromWireType(n[u>>m])},ve:null});},n:function(a,b,c,f,h,m,u,n,p,v,E,G,L){E=Jb(E);m=tc(h,m);n&&(n=tc(u,n));v&&(v=tc(p,v));L=tc(G,L);var y=fc(E);ic(y,function(){yc(`Cannot construct ${E} due to unbound types`,[f]);});Fb([a,b,c],f?[f]:[],function(M){M=M[0];if(f){var T=M.ge;var S=T.Ye;}else S=ec.prototype;M=gc(y,function(){if(Object.getPrototypeOf(this)!==sa)throw new Kb("Use 'new' to construct "+E);if(void 0===pa.Ge)throw new Kb(E+" has no accessible constructor");var jb=pa.Ge[arguments.length];
8183
+ if(void 0===jb)throw new Kb(`Tried to invoke ctor of ${E} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(pa.Ge).toString()}) parameters instead!`);return jb.apply(this,arguments)});var sa=Object.create(S,{constructor:{value:M}});M.prototype=sa;var pa=new jc(E,M,sa,L,T,m,n,v);pa.re&&(void 0===pa.re.hf&&(pa.re.hf=[]),pa.re.hf.push(pa));T=new qc(E,pa,true,false,false);S=new qc(E+"*",pa,false,false,false);var ib=new qc(E+" const*",pa,false,true,false);Rb[a]={pointerType:S,$f:ib};rc(y,M);return [T,
8184
+ S,ib]});},f:function(a,b,c,f,h,m,u){var n=Gc(c,f);b=Jb(b);m=tc(h,m);Fb([],[a],function(p){function v(){yc(`Cannot call ${E} due to unbound types`,n);}p=p[0];var E=`${p.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);var G=p.ge.constructor;void 0===G[b]?(v.Ve=c-1,G[b]=v):(hc(G,b,E),G[b].oe[c-1]=v);Fb([],n,function(L){L=[L[0],null].concat(L.slice(1));L=Fc(E,L,null,m,u);void 0===G[b].oe?(L.Ve=c-1,G[b]=L):G[b].oe[c-1]=L;if(p.ge.hf)for(const y of p.ge.hf)y.constructor.hasOwnProperty(b)||(y.constructor[b]=
8185
+ L);return []});return []});},A:function(a,b,c,f,h,m){var u=Gc(b,c);h=tc(f,h);Fb([],[a],function(n){n=n[0];var p=`constructor ${n.name}`;void 0===n.ge.Ge&&(n.ge.Ge=[]);if(void 0!==n.ge.Ge[b-1])throw new Kb(`Cannot register multiple constructors with identical number of parameters (${b-1}) for class '${n.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);n.ge.Ge[b-1]=()=>{yc(`Cannot construct ${n.name} due to unbound types`,u);};Fb([],u,function(v){v.splice(1,
8186
+ 0,null);n.ge.Ge[b-1]=Fc(p,v,null,h,m);return []});return []});},b:function(a,b,c,f,h,m,u,n){var p=Gc(c,f);b=Jb(b);m=tc(h,m);Fb([],[a],function(v){function E(){yc(`Cannot call ${G} due to unbound types`,p);}v=v[0];var G=`${v.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);n&&v.ge.ug.push(b);var L=v.ge.Ye,y=L[b];void 0===y||void 0===y.oe&&y.className!==v.name&&y.Ve===c-2?(E.Ve=c-2,E.className=v.name,L[b]=E):(hc(L,b,G),L[b].oe[c-2]=E);Fb([],p,function(M){M=Fc(G,M,v,m,u);void 0===L[b].oe?(M.Ve=
8187
+ c-2,L[b]=M):L[b].oe[c-2]=M;return []});return []});},t:function(a,b,c){a=Jb(a);Fb([],[b],function(f){f=f[0];w[a]=f.fromWireType(c);return []});},Bb:function(a,b){b=Jb(b);Gb(a,{name:b,fromWireType:function(c){var f=Kc(c);Jc(c);return f},toWireType:function(c,f){return oc(f)},argPackAdvance:8,readValueFromPointer:yb,ve:null});},m:function(a,b,c,f){function h(){}c=Hb(c);b=Jb(b);h.values={};Gb(a,{name:b,constructor:h,fromWireType:function(m){return this.constructor.values[m]},toWireType:function(m,u){return u.value},
8188
+ argPackAdvance:8,readValueFromPointer:Lc(b,c,f),ve:null});ic(b,h);},c:function(a,b,c){var f=Mc(a,"enum");b=Jb(b);a=f.constructor;f=Object.create(f.constructor.prototype,{value:{value:c},constructor:{value:gc(`${f.name}_${b}`,function(){})}});a.values[c]=f;a[b]=f;},U:function(a,b,c){c=Hb(c);b=Jb(b);Gb(a,{name:b,fromWireType:function(f){return f},toWireType:function(f,h){return h},argPackAdvance:8,readValueFromPointer:Nc(b,c),ve:null});},y:function(a,b,c,f,h,m){var u=Gc(b,c);a=Jb(a);h=tc(f,h);ic(a,function(){yc(`Cannot call ${a} due to unbound types`,
8189
+ u);},b-1);Fb([],u,function(n){n=[n[0],null].concat(n.slice(1));rc(a,Fc(a,n,null,h,m),b-1);return []});},E:function(a,b,c,f,h){b=Jb(b);-1===h&&(h=4294967295);h=Hb(c);var m=n=>n;if(0===f){var u=32-8*c;m=n=>n<<u>>>u;}c=b.includes("unsigned")?function(n,p){return p>>>0}:function(n,p){return p};Gb(a,{name:b,fromWireType:m,toWireType:c,argPackAdvance:8,readValueFromPointer:Oc(b,h,0!==f),ve:null});},r:function(a,b,c){function f(m){m>>=2;var u=Ta;return new h(u.buffer,u[m+1],u[m])}var h=[Int8Array,Uint8Array,
8190
+ Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=Jb(c);Gb(a,{name:c,fromWireType:f,argPackAdvance:8,readValueFromPointer:f},{ng:true});},q:function(a,b,c,f,h,m,u,n,p,v,E,G){c=Jb(c);m=tc(h,m);n=tc(u,n);v=tc(p,v);G=tc(E,G);Fb([a],[b],function(L){L=L[0];return [new qc(c,L.ge,false,false,true,L,f,m,n,v,G)]});},T:function(a,b){b=Jb(b);var c="std::string"===b;Gb(a,{name:b,fromWireType:function(f){var h=Ta[f>>2],m=f+4;if(c)for(var u=m,n=0;n<=h;++n){var p=m+n;if(n==h||0==J[p]){u=u?vb(J,u,
8191
+ p-u):"";if(void 0===v)var v=u;else v+=String.fromCharCode(0),v+=u;u=p+1;}}else {v=Array(h);for(n=0;n<h;++n)v[n]=String.fromCharCode(J[m+n]);v=v.join("");}xc(f);return v},toWireType:function(f,h){h instanceof ArrayBuffer&&(h=new Uint8Array(h));var m="string"==typeof h;m||h instanceof Uint8Array||h instanceof Uint8ClampedArray||h instanceof Int8Array||W("Cannot pass non-string to std::string");var u=c&&m?na(h):h.length;var n=Pd(4+u+1),p=n+4;Ta[n>>2]=u;if(c&&m)oa(h,J,p,u+1);else if(m)for(m=0;m<u;++m){var v=
8192
+ h.charCodeAt(m);255<v&&(xc(p),W("String has UTF-16 code units that do not fit in 8 bits"));J[p+m]=v;}else for(m=0;m<u;++m)J[p+m]=h[m];null!==f&&f.push(xc,n);return n},argPackAdvance:8,readValueFromPointer:yb,ve:function(f){xc(f);}});},N:function(a,b,c){c=Jb(c);if(2===b){var f=Qc;var h=Rc;var m=Sc;var u=()=>Sa;var n=1;}else 4===b&&(f=Tc,h=Uc,m=Vc,u=()=>Ta,n=2);Gb(a,{name:c,fromWireType:function(p){for(var v=Ta[p>>2],E=u(),G,L=p+4,y=0;y<=v;++y){var M=p+4+y*b;if(y==v||0==E[M>>n])L=f(L,M-L),void 0===G?G=
8193
+ L:(G+=String.fromCharCode(0),G+=L),L=M+b;}xc(p);return G},toWireType:function(p,v){"string"!=typeof v&&W(`Cannot pass non-string to C++ string type ${c}`);var E=m(v),G=Pd(4+E+b);Ta[G>>2]=E>>n;h(v,G+4,E+b);null!==p&&p.push(xc,G);return G},argPackAdvance:8,readValueFromPointer:yb,ve:function(p){xc(p);}});},C:function(a,b,c,f,h,m){wb[a]={name:Jb(b),Cf:tc(c,f),De:tc(h,m),Jf:[]};},e:function(a,b,c,f,h,m,u,n,p,v){wb[a].Jf.push({fg:Jb(b),mg:c,kg:tc(f,h),lg:m,xg:u,wg:tc(n,p),yg:v});},Db:function(a,b){b=Jb(b);
8194
+ Gb(a,{pg:true,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}});},Ab:()=>true,pb:()=>{throw Infinity;},F:function(a,b,c){a=Kc(a);b=Mc(b,"emval::as");var f=[],h=oc(f);Ta[c>>2]=h;return b.toWireType(f,a)},X:function(a,b,c,f,h){a=Yc[a];b=Kc(b);c=Xc(c);var m=[];Ta[f>>2]=oc(m);return a(b,c,m,h)},x:function(a,b,c,f){a=Yc[a];b=Kc(b);c=Xc(c);a(b,c,null,f);},d:Jc,K:function(a){if(0===a)return oc(Zc());a=Xc(a);return oc(Zc()[a])},u:function(a,b){var c=ad(a,b),f=c[0];b=f.name+"_$"+c.slice(1).map(function(u){return u.name}).join("_")+
8195
+ "$";var h=bd[b];if(void 0!==h)return h;var m=Array(a-1);h=$c((u,n,p,v)=>{for(var E=0,G=0;G<a-1;++G)m[G]=c[G+1].readValueFromPointer(v+E),E+=c[G+1].argPackAdvance;u=u[n].apply(u,m);for(G=0;G<a-1;++G)c[G+1].cg&&c[G+1].cg(m[G]);if(!f.pg)return f.toWireType(p,u)});return bd[b]=h},z:function(a,b){a=Kc(a);b=Kc(b);return oc(a[b])},p:function(a){4<a&&(Ic.get(a).Of+=1);},J:function(a,b,c,f){a=Kc(a);var h=dd[b];h||(h=cd(b),dd[b]=h);return h(a,c,f)},H:function(){return oc([])},g:function(a){return oc(Xc(a))},
8196
+ G:function(){return oc({})},gb:function(a){a=Kc(a);return !a},D:function(a){var b=Kc(a);xb(b);Jc(a);},l:function(a,b,c){a=Kc(a);b=Kc(b);c=Kc(c);a[b]=c;},h:function(a,b){a=Mc(a,"_emval_take_value");a=a.readValueFromPointer(b);return oc(a)},kb:function(){return -52},lb:function(){},a:()=>{Ka("");},zb:()=>performance.now(),sd:function(a){Z.activeTexture(a);},td:function(a,b){Z.attachShader(kd[a],nd[b]);},Yb:function(a,b){Z.beginQuery(a,pd[b]);},Sb:function(a,b){Z.ze.beginQueryEXT(a,pd[b]);},ud:function(a,b,c){Z.bindAttribLocation(kd[a],
8197
+ b,c?vb(J,c):"");},vd:function(a,b){35051==a?Z.zf=b:35052==a&&(Z.We=b);Z.bindBuffer(a,jd[b]);},uc:zd,vc:function(a,b){Z.bindRenderbuffer(a,md[b]);},cc:function(a,b){Z.bindSampler(a,qd[b]);},wd:function(a,b){Z.bindTexture(a,ha[b]);},Pc:Ad,Tc:Ad,Y:function(a,b,c,f){Z.blendColor(a,b,c,f);},Z:function(a){Z.blendEquation(a);},_:function(a,b){Z.blendFunc(a,b);},oc:function(a,b,c,f,h,m,u,n,p,v){Z.blitFramebuffer(a,b,c,f,h,m,u,n,p,v);},$:function(a,b,c,f){2<=B.version?c&&b?Z.bufferData(a,J,f,c,b):Z.bufferData(a,b,
8198
+ f):Z.bufferData(a,c?J.subarray(c,c+b):b,f);},aa:function(a,b,c,f){2<=B.version?c&&Z.bufferSubData(a,b,J,f,c):Z.bufferSubData(a,b,J.subarray(f,f+c));},wc:function(a){return Z.checkFramebufferStatus(a)},ba:Bd,ca:Cd,da:Dd,lc:function(a,b,c,f){return Z.clientWaitSync(rd[a],b,(c>>>0)+4294967296*f)},ea:function(a,b,c,f){Z.colorMask(!!a,!!b,!!c,!!f);},fa:function(a){Z.compileShader(nd[a]);},ga:function(a,b,c,f,h,m,u,n){2<=B.version?Z.We||!u?Z.compressedTexImage2D(a,b,c,f,h,m,u,n):Z.compressedTexImage2D(a,b,
8199
+ c,f,h,m,J,n,u):Z.compressedTexImage2D(a,b,c,f,h,m,n?J.subarray(n,n+u):null);},ha:function(a,b,c,f,h,m,u,n,p){2<=B.version?Z.We||!n?Z.compressedTexSubImage2D(a,b,c,f,h,m,u,n,p):Z.compressedTexSubImage2D(a,b,c,f,h,m,u,J,p,n):Z.compressedTexSubImage2D(a,b,c,f,h,m,u,p?J.subarray(p,p+n):null);},nc:function(a,b,c,f,h){Z.copyBufferSubData(a,b,c,f,h);},ia:function(a,b,c,f,h,m,u,n){Z.copyTexSubImage2D(a,b,c,f,h,m,u,n);},ja:function(){var a=da(kd),b=Z.createProgram();b.name=a;b.sf=b.qf=b.rf=0;b.Ef=1;kd[a]=b;return a},
8200
+ ka:function(a){var b=da(nd);nd[b]=Z.createShader(a);return b},la:function(a){Z.cullFace(a);},ma:function(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2],h=jd[f];h&&(Z.deleteBuffer(h),h.name=0,jd[f]=null,f==Z.zf&&(Z.zf=0),f==Z.We&&(Z.We=0));}},xc:function(a,b){for(var c=0;c<a;++c){var f=Q[b+4*c>>2],h=ld[f];h&&(Z.deleteFramebuffer(h),h.name=0,ld[f]=null);}},na:function(a){if(a){var b=kd[a];b?(Z.deleteProgram(b),b.name=0,kd[a]=null):vd(1281);}},Zb:function(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2],h=pd[f];
8201
+ h&&(Z.deleteQuery(h),pd[f]=null);}},Tb:function(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2],h=pd[f];h&&(Z.ze.deleteQueryEXT(h),pd[f]=null);}},yc:function(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2],h=md[f];h&&(Z.deleteRenderbuffer(h),h.name=0,md[f]=null);}},dc:function(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2],h=qd[f];h&&(Z.deleteSampler(h),h.name=0,qd[f]=null);}},oa:function(a){if(a){var b=nd[a];b?(Z.deleteShader(b),nd[a]=null):vd(1281);}},mc:function(a){if(a){var b=rd[a];b?(Z.deleteSync(b),b.name=
8202
+ 0,rd[a]=null):vd(1281);}},pa:function(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2],h=ha[f];h&&(Z.deleteTexture(h),h.name=0,ha[f]=null);}},Qc:Ed,Uc:Ed,qa:function(a){Z.depthMask(!!a);},ra:function(a){Z.disable(a);},sa:function(a){Z.disableVertexAttribArray(a);},ta:function(a,b,c){Z.drawArrays(a,b,c);},Nc:function(a,b,c,f){Z.drawArraysInstanced(a,b,c,f);},Lc:function(a,b,c,f,h){Z.If.drawArraysInstancedBaseInstanceWEBGL(a,b,c,f,h);},Jc:function(a,b){for(var c=Fd[a],f=0;f<a;f++)c[f]=Q[b+4*f>>2];Z.drawBuffers(c);},
8203
+ ua:Gd,Oc:function(a,b,c,f,h){Z.drawElementsInstanced(a,b,c,f,h);},Mc:function(a,b,c,f,h,m,u){Z.If.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,f,h,m,u);},Dc:function(a,b,c,f,h,m){Gd(a,f,h,m);},va:function(a){Z.enable(a);},wa:function(a){Z.enableVertexAttribArray(a);},_b:function(a){Z.endQuery(a);},Ub:function(a){Z.ze.endQueryEXT(a);},ic:function(a,b){return (a=Z.fenceSync(a,b))?(b=da(rd),a.name=b,rd[b]=a,b):0},xa:function(){Z.finish();},ya:function(){Z.flush();},zc:function(a,b,c,f){Z.framebufferRenderbuffer(a,
8204
+ b,c,md[f]);},Ac:function(a,b,c,f,h){Z.framebufferTexture2D(a,b,c,ha[f],h);},za:function(a){Z.frontFace(a);},Aa:function(a,b){Jd(a,b,"createBuffer",jd);},Bc:function(a,b){Jd(a,b,"createFramebuffer",ld);},$b:function(a,b){Jd(a,b,"createQuery",pd);},Vb:function(a,b){for(var c=0;c<a;c++){var f=Z.ze.createQueryEXT();if(!f){for(vd(1282);c<a;)Q[b+4*c++>>2]=0;break}var h=da(pd);f.name=h;pd[h]=f;Q[b+4*c>>2]=h;}},Cc:function(a,b){Jd(a,b,"createRenderbuffer",md);},ec:function(a,b){Jd(a,b,"createSampler",qd);},Ba:function(a,
8205
+ b){Jd(a,b,"createTexture",ha);},Rc:Kd,Vc:Kd,qc:function(a){Z.generateMipmap(a);},Ca:function(a,b,c){c?Q[c>>2]=Z.getBufferParameter(a,b):vd(1281);},Da:function(){var a=Z.getError()||wd;wd=0;return a},Ea:function(a,b){Md(a,b,2);},rc:function(a,b,c,f){a=Z.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;Q[f>>2]=a;},Fa:Nd,Ga:function(a,b,c,f){a=Z.getProgramInfoLog(kd[a]);null===a&&(a="(unknown error)");b=0<b&&f?oa(a,J,f,b):0;c&&(Q[c>>2]=b);},Ha:function(a,
8206
+ b,c){if(c)if(a>=hd)vd(1281);else if(a=kd[a],35716==b)a=Z.getProgramInfoLog(a),null===a&&(a="(unknown error)"),Q[c>>2]=a.length+1;else if(35719==b){if(!a.sf)for(b=0;b<Z.getProgramParameter(a,35718);++b)a.sf=Math.max(a.sf,Z.getActiveUniform(a,b).name.length+1);Q[c>>2]=a.sf;}else if(35722==b){if(!a.qf)for(b=0;b<Z.getProgramParameter(a,35721);++b)a.qf=Math.max(a.qf,Z.getActiveAttrib(a,b).name.length+1);Q[c>>2]=a.qf;}else if(35381==b){if(!a.rf)for(b=0;b<Z.getProgramParameter(a,35382);++b)a.rf=Math.max(a.rf,
8207
+ Z.getActiveUniformBlockName(a,b).length+1);Q[c>>2]=a.rf;}else Q[c>>2]=Z.getProgramParameter(a,b);else vd(1281);},Pb:Od,Qb:Od,ac:function(a,b,c){if(c){a=Z.getQueryParameter(pd[a],b);var f;"boolean"==typeof a?f=a?1:0:f=a;Q[c>>2]=f;}else vd(1281);},Wb:function(a,b,c){if(c){a=Z.ze.getQueryObjectEXT(pd[a],b);var f;"boolean"==typeof a?f=a?1:0:f=a;Q[c>>2]=f;}else vd(1281);},bc:function(a,b,c){c?Q[c>>2]=Z.getQuery(a,b):vd(1281);},Xb:function(a,b,c){c?Q[c>>2]=Z.ze.getQueryEXT(a,b):vd(1281);},sc:function(a,b,c){c?
8208
+ Q[c>>2]=Z.getRenderbufferParameter(a,b):vd(1281);},Ia:function(a,b,c,f){a=Z.getShaderInfoLog(nd[a]);null===a&&(a="(unknown error)");b=0<b&&f?oa(a,J,f,b):0;c&&(Q[c>>2]=b);},Mb:function(a,b,c,f){a=Z.getShaderPrecisionFormat(a,b);Q[c>>2]=a.rangeMin;Q[c+4>>2]=a.rangeMax;Q[f>>2]=a.precision;},Ja:function(a,b,c){c?35716==b?(a=Z.getShaderInfoLog(nd[a]),null===a&&(a="(unknown error)"),Q[c>>2]=a?a.length+1:0):35720==b?(a=Z.getShaderSource(nd[a]),Q[c>>2]=a?a.length+1:0):Q[c>>2]=Z.getShaderParameter(nd[a],b):vd(1281);},
8209
+ Ka:Rd,Sc:Sd,La:function(a,b){b=b?vb(J,b):"";if(a=kd[a]){var c=a,f=c.ff,h=c.Qf,m;if(!f)for(c.ff=f={},c.Pf={},m=0;m<Z.getProgramParameter(c,35718);++m){var u=Z.getActiveUniform(c,m);var n=u.name;u=u.size;var p=Td(n);p=0<p?n.slice(0,p):n;var v=c.Ef;c.Ef+=u;h[p]=[u,v];for(n=0;n<u;++n)f[v]=n,c.Pf[v++]=p;}c=a.ff;f=0;h=b;m=Td(b);0<m&&(f=parseInt(b.slice(m+1))>>>0,h=b.slice(0,m));if((h=a.Qf[h])&&f<h[0]&&(f+=h[1],c[f]=c[f]||Z.getUniformLocation(a,b)))return f}else vd(1281);return -1},Nb:function(a,b,c){for(var f=
8210
+ Fd[b],h=0;h<b;h++)f[h]=Q[c+4*h>>2];Z.invalidateFramebuffer(a,f);},Ob:function(a,b,c,f,h,m,u){for(var n=Fd[b],p=0;p<b;p++)n[p]=Q[c+4*p>>2];Z.invalidateSubFramebuffer(a,n,f,h,m,u);},jc:function(a){return Z.isSync(rd[a])},Ma:function(a){return (a=ha[a])?Z.isTexture(a):0},Na:function(a){Z.lineWidth(a);},Oa:function(a){a=kd[a];Z.linkProgram(a);a.ff=0;a.Qf={};},Hc:function(a,b,c,f,h,m){Z.Mf.multiDrawArraysInstancedBaseInstanceWEBGL(a,Q,b>>2,Q,c>>2,Q,f>>2,Ta,h>>2,m);},Ic:function(a,b,c,f,h,m,u,n){Z.Mf.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,
8211
+ Q,b>>2,c,Q,f>>2,Q,h>>2,Q,m>>2,Ta,u>>2,n);},Pa:function(a,b){3317==a&&(ud=b);Z.pixelStorei(a,b);},Rb:function(a,b){Z.ze.queryCounterEXT(pd[a],b);},Kc:function(a){Z.readBuffer(a);},Qa:function(a,b,c,f,h,m,u){if(2<=B.version)if(Z.zf)Z.readPixels(a,b,c,f,h,m,u);else {var n=Ud(m);Z.readPixels(a,b,c,f,h,m,n,u>>31-Math.clz32(n.BYTES_PER_ELEMENT));}else (u=Vd(m,h,c,f,u))?Z.readPixels(a,b,c,f,h,m,u):vd(1280);},tc:function(a,b,c,f){Z.renderbufferStorage(a,b,c,f);},pc:function(a,b,c,f,h){Z.renderbufferStorageMultisample(a,
8212
+ b,c,f,h);},fc:function(a,b,c){Z.samplerParameterf(qd[a],b,c);},gc:function(a,b,c){Z.samplerParameteri(qd[a],b,c);},hc:function(a,b,c){Z.samplerParameteri(qd[a],b,Q[c>>2]);},Ra:function(a,b,c,f){Z.scissor(a,b,c,f);},Sa:function(a,b,c,f){for(var h="",m=0;m<b;++m){var u=f?Q[f+4*m>>2]:-1,n=Q[c+4*m>>2];u=n?vb(J,n,0>u?void 0:u):"";h+=u;}Z.shaderSource(nd[a],h);},Ta:function(a,b,c){Z.stencilFunc(a,b,c);},Ua:function(a,b,c,f){Z.stencilFuncSeparate(a,b,c,f);},Va:function(a){Z.stencilMask(a);},Wa:function(a,b){Z.stencilMaskSeparate(a,
8213
+ b);},Xa:function(a,b,c){Z.stencilOp(a,b,c);},Ya:function(a,b,c,f){Z.stencilOpSeparate(a,b,c,f);},Za:function(a,b,c,f,h,m,u,n,p){if(2<=B.version)if(Z.We)Z.texImage2D(a,b,c,f,h,m,u,n,p);else if(p){var v=Ud(n);Z.texImage2D(a,b,c,f,h,m,u,n,v,p>>31-Math.clz32(v.BYTES_PER_ELEMENT));}else Z.texImage2D(a,b,c,f,h,m,u,n,null);else Z.texImage2D(a,b,c,f,h,m,u,n,p?Vd(n,u,f,h,p):null);},_a:function(a,b,c){Z.texParameterf(a,b,c);},$a:function(a,b,c){Z.texParameterf(a,b,R[c>>2]);},ab:function(a,b,c){Z.texParameteri(a,b,
8214
+ c);},bb:function(a,b,c){Z.texParameteri(a,b,Q[c>>2]);},Ec:function(a,b,c,f,h){Z.texStorage2D(a,b,c,f,h);},cb:function(a,b,c,f,h,m,u,n,p){if(2<=B.version)if(Z.We)Z.texSubImage2D(a,b,c,f,h,m,u,n,p);else if(p){var v=Ud(n);Z.texSubImage2D(a,b,c,f,h,m,u,n,v,p>>31-Math.clz32(v.BYTES_PER_ELEMENT));}else Z.texSubImage2D(a,b,c,f,h,m,u,n,null);else v=null,p&&(v=Vd(n,u,h,m,p)),Z.texSubImage2D(a,b,c,f,h,m,u,n,v);},db:function(a,b){Z.uniform1f(Wd(a),b);},eb:function(a,b,c){if(2<=B.version)b&&Z.uniform1fv(Wd(a),R,c>>
8215
+ 2,b);else {if(288>=b)for(var f=Xd[b-1],h=0;h<b;++h)f[h]=R[c+4*h>>2];else f=R.subarray(c>>2,c+4*b>>2);Z.uniform1fv(Wd(a),f);}},od:function(a,b){Z.uniform1i(Wd(a),b);},pd:function(a,b,c){if(2<=B.version)b&&Z.uniform1iv(Wd(a),Q,c>>2,b);else {if(288>=b)for(var f=Yd[b-1],h=0;h<b;++h)f[h]=Q[c+4*h>>2];else f=Q.subarray(c>>2,c+4*b>>2);Z.uniform1iv(Wd(a),f);}},qd:function(a,b,c){Z.uniform2f(Wd(a),b,c);},rd:function(a,b,c){if(2<=B.version)b&&Z.uniform2fv(Wd(a),R,c>>2,2*b);else {if(144>=b)for(var f=Xd[2*b-1],h=0;h<
8216
+ 2*b;h+=2)f[h]=R[c+4*h>>2],f[h+1]=R[c+(4*h+4)>>2];else f=R.subarray(c>>2,c+8*b>>2);Z.uniform2fv(Wd(a),f);}},nd:function(a,b,c){Z.uniform2i(Wd(a),b,c);},md:function(a,b,c){if(2<=B.version)b&&Z.uniform2iv(Wd(a),Q,c>>2,2*b);else {if(144>=b)for(var f=Yd[2*b-1],h=0;h<2*b;h+=2)f[h]=Q[c+4*h>>2],f[h+1]=Q[c+(4*h+4)>>2];else f=Q.subarray(c>>2,c+8*b>>2);Z.uniform2iv(Wd(a),f);}},ld:function(a,b,c,f){Z.uniform3f(Wd(a),b,c,f);},kd:function(a,b,c){if(2<=B.version)b&&Z.uniform3fv(Wd(a),R,c>>2,3*b);else {if(96>=b)for(var f=
8217
+ Xd[3*b-1],h=0;h<3*b;h+=3)f[h]=R[c+4*h>>2],f[h+1]=R[c+(4*h+4)>>2],f[h+2]=R[c+(4*h+8)>>2];else f=R.subarray(c>>2,c+12*b>>2);Z.uniform3fv(Wd(a),f);}},jd:function(a,b,c,f){Z.uniform3i(Wd(a),b,c,f);},id:function(a,b,c){if(2<=B.version)b&&Z.uniform3iv(Wd(a),Q,c>>2,3*b);else {if(96>=b)for(var f=Yd[3*b-1],h=0;h<3*b;h+=3)f[h]=Q[c+4*h>>2],f[h+1]=Q[c+(4*h+4)>>2],f[h+2]=Q[c+(4*h+8)>>2];else f=Q.subarray(c>>2,c+12*b>>2);Z.uniform3iv(Wd(a),f);}},hd:function(a,b,c,f,h){Z.uniform4f(Wd(a),b,c,f,h);},gd:function(a,b,c){if(2<=
8218
+ B.version)b&&Z.uniform4fv(Wd(a),R,c>>2,4*b);else {if(72>=b){var f=Xd[4*b-1],h=R;c>>=2;for(var m=0;m<4*b;m+=4){var u=c+m;f[m]=h[u];f[m+1]=h[u+1];f[m+2]=h[u+2];f[m+3]=h[u+3];}}else f=R.subarray(c>>2,c+16*b>>2);Z.uniform4fv(Wd(a),f);}},Wc:function(a,b,c,f,h){Z.uniform4i(Wd(a),b,c,f,h);},Xc:function(a,b,c){if(2<=B.version)b&&Z.uniform4iv(Wd(a),Q,c>>2,4*b);else {if(72>=b)for(var f=Yd[4*b-1],h=0;h<4*b;h+=4)f[h]=Q[c+4*h>>2],f[h+1]=Q[c+(4*h+4)>>2],f[h+2]=Q[c+(4*h+8)>>2],f[h+3]=Q[c+(4*h+12)>>2];else f=Q.subarray(c>>
8219
+ 2,c+16*b>>2);Z.uniform4iv(Wd(a),f);}},Yc:function(a,b,c,f){if(2<=B.version)b&&Z.uniformMatrix2fv(Wd(a),!!c,R,f>>2,4*b);else {if(72>=b)for(var h=Xd[4*b-1],m=0;m<4*b;m+=4)h[m]=R[f+4*m>>2],h[m+1]=R[f+(4*m+4)>>2],h[m+2]=R[f+(4*m+8)>>2],h[m+3]=R[f+(4*m+12)>>2];else h=R.subarray(f>>2,f+16*b>>2);Z.uniformMatrix2fv(Wd(a),!!c,h);}},Zc:function(a,b,c,f){if(2<=B.version)b&&Z.uniformMatrix3fv(Wd(a),!!c,R,f>>2,9*b);else {if(32>=b)for(var h=Xd[9*b-1],m=0;m<9*b;m+=9)h[m]=R[f+4*m>>2],h[m+1]=R[f+(4*m+4)>>2],h[m+2]=R[f+
8220
+ (4*m+8)>>2],h[m+3]=R[f+(4*m+12)>>2],h[m+4]=R[f+(4*m+16)>>2],h[m+5]=R[f+(4*m+20)>>2],h[m+6]=R[f+(4*m+24)>>2],h[m+7]=R[f+(4*m+28)>>2],h[m+8]=R[f+(4*m+32)>>2];else h=R.subarray(f>>2,f+36*b>>2);Z.uniformMatrix3fv(Wd(a),!!c,h);}},_c:function(a,b,c,f){if(2<=B.version)b&&Z.uniformMatrix4fv(Wd(a),!!c,R,f>>2,16*b);else {if(18>=b){var h=Xd[16*b-1],m=R;f>>=2;for(var u=0;u<16*b;u+=16){var n=f+u;h[u]=m[n];h[u+1]=m[n+1];h[u+2]=m[n+2];h[u+3]=m[n+3];h[u+4]=m[n+4];h[u+5]=m[n+5];h[u+6]=m[n+6];h[u+7]=m[n+7];h[u+8]=m[n+
8221
+ 8];h[u+9]=m[n+9];h[u+10]=m[n+10];h[u+11]=m[n+11];h[u+12]=m[n+12];h[u+13]=m[n+13];h[u+14]=m[n+14];h[u+15]=m[n+15];}}else h=R.subarray(f>>2,f+64*b>>2);Z.uniformMatrix4fv(Wd(a),!!c,h);}},$c:function(a){a=kd[a];Z.useProgram(a);Z.bg=a;},ad:function(a,b){Z.vertexAttrib1f(a,b);},bd:function(a,b){Z.vertexAttrib2f(a,R[b>>2],R[b+4>>2]);},cd:function(a,b){Z.vertexAttrib3f(a,R[b>>2],R[b+4>>2],R[b+8>>2]);},dd:function(a,b){Z.vertexAttrib4f(a,R[b>>2],R[b+4>>2],R[b+8>>2],R[b+12>>2]);},Fc:function(a,b){Z.vertexAttribDivisor(a,
8222
+ b);},Gc:function(a,b,c,f,h){Z.vertexAttribIPointer(a,b,c,f,h);},ed:function(a,b,c,f,h,m){Z.vertexAttribPointer(a,b,c,!!f,h,m);},fd:function(a,b,c,f){Z.viewport(a,b,c,f);},kc:function(a,b,c,f){Z.waitSync(rd[a],b,(c>>>0)+4294967296*f);},qb:a=>{var b=J.length;a>>>=0;if(2147483648<a)return false;for(var c=1;4>=c;c*=2){var f=b*(1+.2/c);f=Math.min(f,a+100663296);var h=Math;f=Math.max(a,f);a:{h=h.min.call(h,2147483648,f+(65536-f%65536)%65536)-La.buffer.byteLength+65535>>>16;try{La.grow(h);Wa();var m=1;break a}catch(u){}m=
8223
+ void 0;}if(m)return true}return false},hb:function(){return B?B.handle:0},rb:(a,b)=>{var c=0;ae().forEach(function(f,h){var m=b+c;h=Ta[a+4*h>>2]=m;for(m=0;m<f.length;++m)Qa[h++>>0]=f.charCodeAt(m);Qa[h>>0]=0;c+=f.length+1;});return 0},sb:(a,b)=>{var c=ae();Ta[a>>2]=c.length;var f=0;c.forEach(function(h){f+=h.length+1;});Ta[b>>2]=f;return 0},Eb:a=>{va(a,new sb(a));},M:()=>52,jb:function(){return 52},xb:()=>52,mb:function(){return 70},Q:(a,b,c,f)=>{for(var h=0,
8224
+ m=0;m<c;m++){var u=Ta[b>>2],n=Ta[b+4>>2];b+=8;for(var p=0;p<n;p++){var v=J[u+p],E=be[a];0===v||10===v?((1===a?Ha:Ia)(vb(E,0)),E.length=0):E.push(v);}h+=n;}Ta[f>>2]=h;return 0},yd:zd,ib:Bd,xd:Cd,Kb:Dd,L:Nd,P:Rd,fb:Sd,Ib:me,j:ne,o:oe,k:pe,I:qe,Hb:re,Fb:se,W:te,V:ue,O:ve,i:we,w:xe,v:ye,s:ze,Gb:Ae,Jb:Be,Lb:Ce,ob:(a,b,c,f)=>ge(a,b,c,f)};
8225
+ (function(){function a(c){Ma=c=c.exports;La=Ma.zd;Wa();Xa=Ma.Cd;Za.unshift(Ma.Ad);eb--;w.monitorRunDependencies&&w.monitorRunDependencies(eb);if(0==eb&&(gb)){var f=gb;gb=null;f();}return c}var b={a:De};eb++;w.monitorRunDependencies&&w.monitorRunDependencies(eb);if(w.instantiateWasm)try{return w.instantiateWasm(b,a)}catch(c){Ia("Module.instantiateWasm callback failed with error: "+c),ca(c);}rb(b,function(c){a(c.instance);}).catch(ca);return {}})();
8226
+ var Pd=w._malloc=a=>(Pd=w._malloc=Ma.Bd)(a),xc=w._free=a=>(xc=w._free=Ma.Dd)(a),wc=a=>(wc=Ma.Ed)(a);w.__embind_initialize_bindings=()=>(w.__embind_initialize_bindings=Ma.Fd)();var Ee=(a,b)=>(Ee=Ma.Gd)(a,b),Fe=()=>(Fe=Ma.Hd)(),Ge=a=>(Ge=Ma.Id)(a);w.dynCall_viji=(a,b,c,f,h)=>(w.dynCall_viji=Ma.Jd)(a,b,c,f,h);w.dynCall_vijiii=(a,b,c,f,h,m,u)=>(w.dynCall_vijiii=Ma.Kd)(a,b,c,f,h,m,u);w.dynCall_viiiiij=(a,b,c,f,h,m,u,n)=>(w.dynCall_viiiiij=Ma.Ld)(a,b,c,f,h,m,u,n);
8227
+ w.dynCall_jii=(a,b,c)=>(w.dynCall_jii=Ma.Md)(a,b,c);w.dynCall_vij=(a,b,c,f)=>(w.dynCall_vij=Ma.Nd)(a,b,c,f);w.dynCall_jiiiiii=(a,b,c,f,h,m,u)=>(w.dynCall_jiiiiii=Ma.Od)(a,b,c,f,h,m,u);w.dynCall_jiiiiji=(a,b,c,f,h,m,u,n)=>(w.dynCall_jiiiiji=Ma.Pd)(a,b,c,f,h,m,u,n);w.dynCall_ji=(a,b)=>(w.dynCall_ji=Ma.Qd)(a,b);w.dynCall_iijj=(a,b,c,f,h,m)=>(w.dynCall_iijj=Ma.Rd)(a,b,c,f,h,m);w.dynCall_iiiji=(a,b,c,f,h,m)=>(w.dynCall_iiiji=Ma.Sd)(a,b,c,f,h,m);
8228
+ w.dynCall_iiji=(a,b,c,f,h)=>(w.dynCall_iiji=Ma.Td)(a,b,c,f,h);w.dynCall_iijjiii=(a,b,c,f,h,m,u,n,p)=>(w.dynCall_iijjiii=Ma.Ud)(a,b,c,f,h,m,u,n,p);w.dynCall_iij=(a,b,c,f)=>(w.dynCall_iij=Ma.Vd)(a,b,c,f);w.dynCall_vijjjii=(a,b,c,f,h,m,u,n,p,v)=>(w.dynCall_vijjjii=Ma.Wd)(a,b,c,f,h,m,u,n,p,v);w.dynCall_jiji=(a,b,c,f,h)=>(w.dynCall_jiji=Ma.Xd)(a,b,c,f,h);w.dynCall_viijii=(a,b,c,f,h,m,u)=>(w.dynCall_viijii=Ma.Yd)(a,b,c,f,h,m,u);w.dynCall_iiiiij=(a,b,c,f,h,m,u)=>(w.dynCall_iiiiij=Ma.Zd)(a,b,c,f,h,m,u);
8229
+ w.dynCall_iiiiijj=(a,b,c,f,h,m,u,n,p)=>(w.dynCall_iiiiijj=Ma._d)(a,b,c,f,h,m,u,n,p);w.dynCall_iiiiiijj=(a,b,c,f,h,m,u,n,p,v)=>(w.dynCall_iiiiiijj=Ma.$d)(a,b,c,f,h,m,u,n,p,v);function pe(a,b,c,f){var h=Fe();try{return Xa.get(a)(b,c,f)}catch(m){Ge(h);if(m!==m+0)throw m;Ee(1,0);}}function Ce(a,b,c,f,h,m,u,n,p,v){var E=Fe();try{Xa.get(a)(b,c,f,h,m,u,n,p,v);}catch(G){Ge(E);if(G!==G+0)throw G;Ee(1,0);}}function ye(a,b,c,f){var h=Fe();try{Xa.get(a)(b,c,f);}catch(m){Ge(h);if(m!==m+0)throw m;Ee(1,0);}}
8230
+ function xe(a,b,c){var f=Fe();try{Xa.get(a)(b,c);}catch(h){Ge(f);if(h!==h+0)throw h;Ee(1,0);}}function ve(a){var b=Fe();try{Xa.get(a)();}catch(c){Ge(b);if(c!==c+0)throw c;Ee(1,0);}}function ne(a,b){var c=Fe();try{return Xa.get(a)(b)}catch(f){Ge(c);if(f!==f+0)throw f;Ee(1,0);}}function ze(a,b,c,f,h){var m=Fe();try{Xa.get(a)(b,c,f,h);}catch(u){Ge(m);if(u!==u+0)throw u;Ee(1,0);}}function we(a,b){var c=Fe();try{Xa.get(a)(b);}catch(f){Ge(c);if(f!==f+0)throw f;Ee(1,0);}}
8231
+ function oe(a,b,c){var f=Fe();try{return Xa.get(a)(b,c)}catch(h){Ge(f);if(h!==h+0)throw h;Ee(1,0);}}function Be(a,b,c,f,h,m,u){var n=Fe();try{Xa.get(a)(b,c,f,h,m,u);}catch(p){Ge(n);if(p!==p+0)throw p;Ee(1,0);}}function me(a){var b=Fe();try{return Xa.get(a)()}catch(c){Ge(b);if(c!==c+0)throw c;Ee(1,0);}}function re(a,b,c,f,h,m){var u=Fe();try{return Xa.get(a)(b,c,f,h,m)}catch(n){Ge(u);if(n!==n+0)throw n;Ee(1,0);}}
8232
+ function te(a,b,c,f,h,m,u,n){var p=Fe();try{return Xa.get(a)(b,c,f,h,m,u,n)}catch(v){Ge(p);if(v!==v+0)throw v;Ee(1,0);}}function Ae(a,b,c,f,h,m){var u=Fe();try{Xa.get(a)(b,c,f,h,m);}catch(n){Ge(u);if(n!==n+0)throw n;Ee(1,0);}}function qe(a,b,c,f,h){var m=Fe();try{return Xa.get(a)(b,c,f,h)}catch(u){Ge(m);if(u!==u+0)throw u;Ee(1,0);}}function ue(a,b,c,f,h,m,u,n,p,v){var E=Fe();try{return Xa.get(a)(b,c,f,h,m,u,n,p,v)}catch(G){Ge(E);if(G!==G+0)throw G;Ee(1,0);}}
8233
+ function se(a,b,c,f,h,m,u){var n=Fe();try{return Xa.get(a)(b,c,f,h,m,u)}catch(p){Ge(n);if(p!==p+0)throw p;Ee(1,0);}}var He;gb=function Ie(){He||Je();He||(gb=Ie);};
8234
+ function Je(){function a(){if(!He&&(He=true,w.calledRun=true,!Na)){tb(Za);aa(w);if(w.onRuntimeInitialized)w.onRuntimeInitialized();if(w.postRun)for("function"==typeof w.postRun&&(w.postRun=[w.postRun]);w.postRun.length;){var b=w.postRun.shift();$a.unshift(b);}tb($a);}}if(!(0<eb)){if(w.preRun)for("function"==typeof w.preRun&&(w.preRun=[w.preRun]);w.preRun.length;)ab();tb(Ya);0<eb||(w.setStatus?(w.setStatus("Running..."),setTimeout(function(){setTimeout(function(){w.setStatus("");},1);a();},1)):a());}}
8235
+ if(w.preInit)for("function"==typeof w.preInit&&(w.preInit=[w.preInit]);0<w.preInit.length;)w.preInit.pop()();Je();
8059
8236
 
8060
8237
 
8061
8238
  return moduleArg.ready
@@ -8248,7 +8425,7 @@ class SoundManager {
8248
8425
  get audioContext() {
8249
8426
  if (!this._audioContext) {
8250
8427
  if (!navigator.userActivation.hasBeenActive) {
8251
- throw new Error(
8428
+ throw new M2Error(
8252
8429
  "AudioContext cannot be created until user has interacted with the page"
8253
8430
  );
8254
8431
  }
@@ -8325,7 +8502,7 @@ class SoundManager {
8325
8502
  return fetch(m2Sound.url).then((response) => {
8326
8503
  if (!response.ok) {
8327
8504
  m2Sound.status = M2SoundStatus.Error;
8328
- throw new Error(
8505
+ throw new M2Error(
8329
8506
  `cannot fetch sound ${m2Sound.soundName} at url ${m2Sound.url}: ${response.statusText}`
8330
8507
  );
8331
8508
  }
@@ -8390,7 +8567,7 @@ class SoundManager {
8390
8567
  */
8391
8568
  async decodeSound(sound) {
8392
8569
  if (!sound.data) {
8393
- throw new Error(
8570
+ throw new M2Error(
8394
8571
  `data is undefined for sound ${sound.soundName} (url ${sound.url})`
8395
8572
  );
8396
8573
  }
@@ -8404,7 +8581,7 @@ class SoundManager {
8404
8581
  );
8405
8582
  } catch {
8406
8583
  sound.status = M2SoundStatus.Error;
8407
- throw new Error(
8584
+ throw new M2Error(
8408
8585
  `error decoding sound ${sound.soundName} (url: ${sound.url})`
8409
8586
  );
8410
8587
  }
@@ -8424,7 +8601,7 @@ class SoundManager {
8424
8601
  getSound(soundName) {
8425
8602
  const sound = this.sounds[soundName];
8426
8603
  if (!sound) {
8427
- throw new Error(`getSound(): sound ${soundName} not found`);
8604
+ throw new M2Error(`getSound(): sound ${soundName} not found`);
8428
8605
  }
8429
8606
  return sound;
8430
8607
  }
@@ -8550,7 +8727,7 @@ class EventMaterializer {
8550
8727
  if (node.type === M2NodeType.Composite) {
8551
8728
  node.handleCompositeEvent(event);
8552
8729
  } else {
8553
- throw new Error(
8730
+ throw new M2Error(
8554
8731
  `EventMaterializer: node was expected to be composite, but was of type ${node.type}`
8555
8732
  );
8556
8733
  }
@@ -8579,14 +8756,14 @@ class EventMaterializer {
8579
8756
  (n) => n.uuid === nodePropertyChangeEvent.uuid
8580
8757
  );
8581
8758
  if (!node) {
8582
- throw new Error(
8759
+ throw new M2Error(
8583
8760
  `EventMaterializer: node with uuid ${nodePropertyChangeEvent.uuid} not found`
8584
8761
  );
8585
8762
  }
8586
8763
  if (nodePropertyChangeEvent.property in node) {
8587
8764
  node[nodePropertyChangeEvent.property] = nodePropertyChangeEvent.value;
8588
8765
  } else {
8589
- throw new Error(
8766
+ throw new M2Error(
8590
8767
  `EventMaterializer: on node ${node.name}, type ${node.type}, nodePropertyChangeEvent tried to set unknown property ${nodePropertyChangeEvent.property} to value ${JSON.stringify(nodePropertyChangeEvent.value)}`
8591
8768
  );
8592
8769
  }
@@ -8596,7 +8773,7 @@ class EventMaterializer {
8596
8773
  (n) => n.uuid === nodeAddChildEvent.uuid
8597
8774
  );
8598
8775
  if (!parent) {
8599
- throw new Error(
8776
+ throw new M2Error(
8600
8777
  `EventMaterializer: parent node with uuid ${nodeAddChildEvent.uuid} not found`
8601
8778
  );
8602
8779
  }
@@ -8604,7 +8781,7 @@ class EventMaterializer {
8604
8781
  (n) => n.uuid === nodeAddChildEvent.childUuid
8605
8782
  );
8606
8783
  if (!child) {
8607
- throw new Error(
8784
+ throw new M2Error(
8608
8785
  `EventMaterializer: child node with uuid ${nodeAddChildEvent.childUuid} not found`
8609
8786
  );
8610
8787
  }
@@ -8615,7 +8792,7 @@ class EventMaterializer {
8615
8792
  (n) => n.uuid === nodeRemoveChildEvent.uuid
8616
8793
  );
8617
8794
  if (!parent) {
8618
- throw new Error(
8795
+ throw new M2Error(
8619
8796
  `EventMaterializer: parent node with uuid ${nodeRemoveChildEvent.uuid} not found`
8620
8797
  );
8621
8798
  }
@@ -8623,7 +8800,7 @@ class EventMaterializer {
8623
8800
  (n) => n.uuid === nodeRemoveChildEvent.childUuid
8624
8801
  );
8625
8802
  if (!child) {
8626
- throw new Error(
8803
+ throw new M2Error(
8627
8804
  `EventMaterializer: child node with uuid ${nodeRemoveChildEvent.childUuid} not found`
8628
8805
  );
8629
8806
  }
@@ -8683,17 +8860,17 @@ class EventMaterializer {
8683
8860
  let transition = Transition.none();
8684
8861
  if (scenePresentEvent.transitionType === TransitionType.Slide) {
8685
8862
  if (scenePresentEvent.direction === void 0) {
8686
- throw new Error(
8863
+ throw new M2Error(
8687
8864
  "EventMaterializer: ScenePresentEvent direction is undefined for slide transition"
8688
8865
  );
8689
8866
  }
8690
8867
  if (scenePresentEvent.duration === void 0) {
8691
- throw new Error(
8868
+ throw new M2Error(
8692
8869
  "EventMaterializer: ScenePresentEvent duration is undefined for slide transition"
8693
8870
  );
8694
8871
  }
8695
8872
  if (scenePresentEvent.easingType === void 0) {
8696
- throw new Error(
8873
+ throw new M2Error(
8697
8874
  "EventMaterializer: ScenePresentEvent easingType is undefined for slide transition"
8698
8875
  );
8699
8876
  }
@@ -8701,7 +8878,7 @@ class EventMaterializer {
8701
8878
  (s) => s.uuid === scenePresentEvent.uuid
8702
8879
  );
8703
8880
  if (!incomingScene) {
8704
- throw new Error(
8881
+ throw new M2Error(
8705
8882
  `EventMaterializer: Scene with uuid ${scenePresentEvent.uuid} not found`
8706
8883
  );
8707
8884
  }
@@ -8744,7 +8921,7 @@ class Game {
8744
8921
  this.sessionUuid = "";
8745
8922
  this.uuid = Uuid.generate();
8746
8923
  this.publishUuid = "";
8747
- this.canvasKitWasmVersion = "0.39.1";
8924
+ this.canvasKitWasmVersion = "0.40.0";
8748
8925
  this.beginTimestamp = NaN;
8749
8926
  this.beginIso8601Timestamp = "";
8750
8927
  this.eventListeners = new Array();
@@ -8760,7 +8937,8 @@ class Game {
8760
8937
  /** Nodes created during event replay */
8761
8938
  this.materializedNodes = new Array();
8762
8939
  this.data = {
8763
- trials: new Array()
8940
+ trials: new Array(),
8941
+ scoring: {}
8764
8942
  };
8765
8943
  /** The 0-based index of the current trial */
8766
8944
  this.trialIndex = 0;
@@ -8781,11 +8959,74 @@ class Game {
8781
8959
  });
8782
8960
  this.incomingSceneTransitions = new Array();
8783
8961
  this.replayEventsButtonEnabled = true;
8962
+ /**
8963
+ * The m2c2kit engine will automatically include these schema and their
8964
+ * values in the scoring data.
8965
+ */
8966
+ this.automaticScoringSchema = {
8967
+ data_type: {
8968
+ type: "string",
8969
+ description: "Type of data."
8970
+ },
8971
+ study_id: {
8972
+ type: ["string", "null"],
8973
+ description: "The short human-readable text ID of the study (protocol, experiment, or other aggregate) that contains the administration of this activity."
8974
+ },
8975
+ study_uuid: {
8976
+ type: ["string", "null"],
8977
+ format: "uuid",
8978
+ description: "Unique identifier of the study (protocol, experiment, or other aggregate) that contains the administration of this activity."
8979
+ },
8980
+ document_uuid: {
8981
+ type: "string",
8982
+ format: "uuid",
8983
+ description: "Unique identifier for this data document."
8984
+ },
8985
+ session_uuid: {
8986
+ type: "string",
8987
+ format: "uuid",
8988
+ description: "Unique identifier for all activities in this administration of the session. This identifier changes each time a new session starts."
8989
+ },
8990
+ activity_uuid: {
8991
+ type: "string",
8992
+ format: "uuid",
8993
+ description: "Unique identifier for all trials in this administration of the activity. This identifier changes each time the activity starts."
8994
+ },
8995
+ activity_id: {
8996
+ type: "string",
8997
+ description: "Human-readable identifier of the activity."
8998
+ },
8999
+ activity_publish_uuid: {
9000
+ type: "string",
9001
+ format: "uuid",
9002
+ description: "Persistent unique identifier of the activity. This identifier never changes. It can be used to identify the activity across different studies and sessions."
9003
+ },
9004
+ activity_version: {
9005
+ type: "string",
9006
+ description: "Version of the activity."
9007
+ },
9008
+ device_timezone: {
9009
+ type: "string",
9010
+ description: "Timezone of the device. Calculated from Intl.DateTimeFormat().resolvedOptions().timeZone."
9011
+ },
9012
+ device_timezone_offset_minutes: {
9013
+ type: "integer",
9014
+ description: "Difference in minutes between UTC and device timezone. Calculated from Date.getTimezoneOffset()."
9015
+ },
9016
+ locale: {
9017
+ type: ["string", "null"],
9018
+ description: "Locale of the trial. null if the activity does not support localization."
9019
+ }
9020
+ };
8784
9021
  /**
8785
9022
  * The m2c2kit engine will automatically include these schema and their
8786
9023
  * values in the trial data.
8787
9024
  */
8788
9025
  this.automaticTrialSchema = {
9026
+ data_type: {
9027
+ type: "string",
9028
+ description: "Type of data."
9029
+ },
8789
9030
  study_id: {
8790
9031
  type: ["string", "null"],
8791
9032
  description: "The short human-readable text ID of the study (protocol, experiment, or other aggregate) that contains the administration of this activity."
@@ -8838,7 +9079,7 @@ class Game {
8838
9079
  };
8839
9080
  this.snapshots = new Array();
8840
9081
  if (!options.id || options.id.trim() === "") {
8841
- throw new Error("id is required in GameOptions");
9082
+ throw new M2Error("id is required in GameOptions");
8842
9083
  }
8843
9084
  if (!Uuid.isValid(options.publishUuid)) {
8844
9085
  const providedPublishUuid = options.publishUuid ? `Provided publishUuid was ${options.publishUuid}. ` : "";
@@ -8873,6 +9114,9 @@ class Game {
8873
9114
  if (!this.options.trialSchema) {
8874
9115
  this.options.trialSchema = {};
8875
9116
  }
9117
+ if (!this.options.scoringSchema) {
9118
+ this.options.scoringSchema = {};
9119
+ }
8876
9120
  if (options.moduleMetadata) {
8877
9121
  this.moduleMetadata = options.moduleMetadata;
8878
9122
  } else {
@@ -8910,7 +9154,7 @@ class Game {
8910
9154
  const regex = new RegExp(`^.*${packageName}[^\\/]*`);
8911
9155
  const matches = moduleUrl.match(regex);
8912
9156
  if (!matches || matches.length === 0) {
8913
- throw new Error(
9157
+ throw new M2Error(
8914
9158
  `Could not calculate imported assessment package base URL. Package name: ${packageName}, module URL: ${moduleUrl}`
8915
9159
  );
8916
9160
  }
@@ -8970,7 +9214,7 @@ class Game {
8970
9214
  canvasKitWasmBaseUrl = game.getImportedModuleBaseUrl("@m2c2kit/core", coreModuleUrl) + "/assets";
8971
9215
  } catch {
8972
9216
  if (isImportedModule) {
8973
- throw new Error(
9217
+ throw new M2Error(
8974
9218
  `the package ${game.moduleMetadata.name} has been imported from a module URL (${moduleUrl}), but the @m2c2kit/core package module URL could not be determined.`
8975
9219
  );
8976
9220
  }
@@ -8983,7 +9227,7 @@ class Game {
8983
9227
  async configureI18n(localizationOptions) {
8984
9228
  this.i18n = new I18n(this, localizationOptions);
8985
9229
  if (!this.i18n) {
8986
- throw new Error("I18n object is undefined");
9230
+ throw new M2Error("I18n object is undefined");
8987
9231
  }
8988
9232
  await this.i18n.initialize();
8989
9233
  this.eventStore.addEvent({
@@ -9032,7 +9276,7 @@ class Game {
9032
9276
  try {
9033
9277
  this.canvasKit = await this.loadCanvasKit(manifestCanvasKitWasmUrl);
9034
9278
  } catch (err) {
9035
- throw new Error(
9279
+ throw new M2Error(
9036
9280
  `game ${this.id} could not load canvaskit wasm file from ${manifestCanvasKitWasmUrl}`
9037
9281
  );
9038
9282
  }
@@ -9076,24 +9320,24 @@ class Game {
9076
9320
  try {
9077
9321
  manifestResponse = await fetch(manifestJsonUrl);
9078
9322
  if (!manifestResponse.ok) {
9079
- throw new Error(
9323
+ throw new M2Error(
9080
9324
  `Error ${manifestResponse.status} on GET manifest.json from ${manifestJsonUrl}.`
9081
9325
  );
9082
9326
  }
9083
9327
  } catch {
9084
- throw new Error(
9328
+ throw new M2Error(
9085
9329
  `Network error on GET manifest.json from ${manifestJsonUrl}.`
9086
9330
  );
9087
9331
  }
9088
9332
  try {
9089
9333
  return await manifestResponse.json();
9090
9334
  } catch {
9091
- throw new Error(`Error parsing manifest.json from ${manifestJsonUrl}.`);
9335
+ throw new M2Error(`Error parsing manifest.json from ${manifestJsonUrl}.`);
9092
9336
  }
9093
9337
  }
9094
9338
  get fontManager() {
9095
9339
  if (!this._fontManager) {
9096
- throw new Error("fontManager is undefined");
9340
+ throw new M2Error("fontManager is undefined");
9097
9341
  }
9098
9342
  return this._fontManager;
9099
9343
  }
@@ -9102,7 +9346,7 @@ class Game {
9102
9346
  }
9103
9347
  get imageManager() {
9104
9348
  if (!this._imageManager) {
9105
- throw new Error("imageManager is undefined");
9349
+ throw new M2Error("imageManager is undefined");
9106
9350
  }
9107
9351
  return this._imageManager;
9108
9352
  }
@@ -9111,7 +9355,7 @@ class Game {
9111
9355
  }
9112
9356
  get soundManager() {
9113
9357
  if (!this._soundManager) {
9114
- throw new Error("soundManager is undefined");
9358
+ throw new M2Error("soundManager is undefined");
9115
9359
  }
9116
9360
  return this._soundManager;
9117
9361
  }
@@ -9120,7 +9364,7 @@ class Game {
9120
9364
  }
9121
9365
  get eventMaterializer() {
9122
9366
  if (!this._eventMaterializer) {
9123
- throw new Error("eventMaterializer is undefined");
9367
+ throw new M2Error("eventMaterializer is undefined");
9124
9368
  }
9125
9369
  return this._eventMaterializer;
9126
9370
  }
@@ -9145,7 +9389,7 @@ class Game {
9145
9389
  if (this.studyId && this.studyUuid) {
9146
9390
  k = this.studyId.concat(":", this.studyUuid, ":");
9147
9391
  } else if (this.studyId || this.studyUuid) {
9148
- throw new Error(
9392
+ throw new M2Error(
9149
9393
  `study_id and study_uuid must both be set or unset. Values are study_id: ${this.studyId}, study_uuid: ${this.studyUuid}`
9150
9394
  );
9151
9395
  }
@@ -9276,7 +9520,7 @@ class Game {
9276
9520
  }
9277
9521
  get dataStores() {
9278
9522
  if (!this._dataStores) {
9279
- throw new Error("dataStores is undefined");
9523
+ throw new M2Error("dataStores is undefined");
9280
9524
  }
9281
9525
  return this._dataStores;
9282
9526
  }
@@ -9309,7 +9553,7 @@ class Game {
9309
9553
  void 0
9310
9554
  );
9311
9555
  if (locale === "") {
9312
- throw new Error(
9556
+ throw new M2Error(
9313
9557
  "Empty string in locale. Leave locale undefined or null to prevent localization."
9314
9558
  );
9315
9559
  }
@@ -9325,6 +9569,9 @@ class Game {
9325
9569
  setParameters(additionalParameters) {
9326
9570
  const { parameters } = this.options;
9327
9571
  Object.keys(additionalParameters).forEach((key) => {
9572
+ if (key === "diagnostics") {
9573
+ return;
9574
+ }
9328
9575
  if (key === "eruda") {
9329
9576
  const erudaRequested = additionalParameters[key] === true;
9330
9577
  if (erudaRequested) {
@@ -9354,7 +9601,7 @@ class Game {
9354
9601
  this.options.parameters[key].type
9355
9602
  );
9356
9603
  } catch (e) {
9357
- throw new Error(
9604
+ throw new M2Error(
9358
9605
  "Error setting parameter " + key + ": " + e.message
9359
9606
  );
9360
9607
  }
@@ -9372,7 +9619,7 @@ class Game {
9372
9619
  }
9373
9620
  get canvasKit() {
9374
9621
  if (!this._canvasKit) {
9375
- throw new Error("canvaskit is undefined");
9622
+ throw new M2Error("canvaskit is undefined");
9376
9623
  }
9377
9624
  return this._canvasKit;
9378
9625
  }
@@ -9414,7 +9661,7 @@ class Game {
9414
9661
  if (typeof node === "string") {
9415
9662
  const child = this.freeNodesScene.children.filter((child2) => child2.name === node).find(Boolean);
9416
9663
  if (!child) {
9417
- throw new Error(
9664
+ throw new M2Error(
9418
9665
  `cannot remove free node named "${node}" because it is not currently part of the game's free nodes. `
9419
9666
  );
9420
9667
  }
@@ -9516,7 +9763,7 @@ class Game {
9516
9763
  if (this.scenes.includes(scene)) {
9517
9764
  this.scenes = this.scenes.filter((s) => s !== scene);
9518
9765
  } else {
9519
- throw new Error(
9766
+ throw new M2Error(
9520
9767
  `cannot remove scene ${scene} from game because the scene is not currently added to the game`
9521
9768
  );
9522
9769
  }
@@ -9524,7 +9771,7 @@ class Game {
9524
9771
  if (this.scenes.map((s) => s.name).includes(scene)) {
9525
9772
  this.scenes = this.scenes.filter((s) => s.name !== scene);
9526
9773
  } else {
9527
- throw new Error(
9774
+ throw new M2Error(
9528
9775
  `cannot remove scene named "${scene}" from game because the scene is not currently added to the game`
9529
9776
  );
9530
9777
  }
@@ -9544,11 +9791,11 @@ class Game {
9544
9791
  incomingScene = this.scenes.filter((scene_) => scene_.uuid === scene).find(Boolean);
9545
9792
  }
9546
9793
  if (incomingScene === void 0) {
9547
- throw new Error(`scene ${scene} not found`);
9794
+ throw new M2Error(`scene ${scene} not found`);
9548
9795
  }
9549
9796
  } else {
9550
9797
  if (!this.scenes.some((scene_) => scene_ === scene)) {
9551
- throw new Error(
9798
+ throw new M2Error(
9552
9799
  `scene ${scene} exists, but it has not been added to the game object`
9553
9800
  );
9554
9801
  }
@@ -9594,7 +9841,7 @@ class Game {
9594
9841
  if (this.options.parameters !== void 0 && Object.keys(this.options.parameters).includes(parameterName)) {
9595
9842
  return this.options.parameters[parameterName].default;
9596
9843
  } else {
9597
- throw new Error(`game parameter ${parameterName} not found`);
9844
+ throw new M2Error(`game parameter ${parameterName} not found`);
9598
9845
  }
9599
9846
  }
9600
9847
  /**
@@ -9671,13 +9918,13 @@ class Game {
9671
9918
  startingScene = this.scenes.find(Boolean);
9672
9919
  }
9673
9920
  if (startingScene === void 0) {
9674
- throw new Error(
9921
+ throw new M2Error(
9675
9922
  "cannot start game. entry scene has not been added to the game object."
9676
9923
  );
9677
9924
  }
9678
9925
  this.presentScene(startingScene);
9679
9926
  if (this.surface === void 0) {
9680
- throw new Error("CanvasKit surface is undefined");
9927
+ throw new M2Error("CanvasKit surface is undefined");
9681
9928
  }
9682
9929
  if (this.options.timeStepping) {
9683
9930
  this.addTimeSteppingControlsToDom();
@@ -9915,7 +10162,7 @@ class Game {
9915
10162
  );
9916
10163
  }
9917
10164
  if (!this.surface) {
9918
- throw new Error("surface is undefined");
10165
+ throw new M2Error("surface is undefined");
9919
10166
  }
9920
10167
  const surfaceWidth = this.surface.width();
9921
10168
  const surfaceHeight = this.surface.height();
@@ -10015,7 +10262,7 @@ class Game {
10015
10262
  if (images[imageName].status === M2ImageStatus.Ready) {
10016
10263
  const image = images[imageName].canvaskitImage;
10017
10264
  if (!image) {
10018
- throw new Error(`image ${imageName} is undefined`);
10265
+ throw new M2Error(`image ${imageName} is undefined`);
10019
10266
  }
10020
10267
  canvas.drawImage(image, 0, 0);
10021
10268
  }
@@ -10025,7 +10272,7 @@ class Game {
10025
10272
  const whitePaint = new this.canvasKit.Paint();
10026
10273
  whitePaint.setColor(this.canvasKit.Color(255, 255, 255, 1));
10027
10274
  if (!this.surface) {
10028
- throw new Error("surface is undefined");
10275
+ throw new M2Error("surface is undefined");
10029
10276
  }
10030
10277
  canvas.drawRect(
10031
10278
  [0, 0, this.surface.width(), this.surface.height()],
@@ -10053,13 +10300,19 @@ class Game {
10053
10300
  initData() {
10054
10301
  this.trialIndex = 0;
10055
10302
  this.data = {
10056
- trials: new Array()
10303
+ trials: new Array(),
10304
+ scoring: {}
10057
10305
  };
10058
10306
  const trialSchema = this.options.trialSchema ?? {};
10059
- const variables = Object.entries(trialSchema);
10307
+ const scoringSchema = this.options.scoringSchema ?? {};
10308
+ this.validateSchema(trialSchema);
10309
+ this.validateSchema(scoringSchema);
10310
+ }
10311
+ validateSchema(schema) {
10312
+ const variables = Object.entries(schema);
10060
10313
  for (const [variableName, propertySchema] of variables) {
10061
10314
  if (propertySchema.type !== void 0 && !this.propertySchemaDataTypeIsValid(propertySchema.type)) {
10062
- throw new Error(
10315
+ throw new M2Error(
10063
10316
  `invalid schema. variable ${variableName} is type ${propertySchema.type}. type must be number, string, boolean, object, or array`
10064
10317
  );
10065
10318
  }
@@ -10086,7 +10339,7 @@ class Game {
10086
10339
  }
10087
10340
  });
10088
10341
  } else {
10089
- throw new Error(`Invalid data type: ${propertySchemaType}`);
10342
+ throw new M2Error(`Invalid data type: ${propertySchemaType}`);
10090
10343
  }
10091
10344
  return dataTypeIsValid;
10092
10345
  }
@@ -10128,17 +10381,17 @@ class Game {
10128
10381
  /**
10129
10382
  * Adds data to the game's TrialData object.
10130
10383
  *
10131
- * @remarks The variableName must be previously defined in the trialSchema
10132
- * object passed in during game initialization through
10133
- * {@link GameInitOptions.trialSchema}. The type of the value must match
10134
- * what was defined in the trialSchema, otherwise an error is thrown.
10384
+ * @remarks `variableName` must be previously defined in the
10385
+ * {@link TrialSchema} object in {@link GameOptions}. The type of the value
10386
+ * must match what was defined in the trial schema, otherwise an error is
10387
+ * thrown.
10135
10388
  *
10136
10389
  * @param variableName - variable to be set
10137
10390
  * @param value - value of the variable to set
10138
10391
  */
10139
10392
  addTrialData(variableName, value) {
10140
10393
  if (!this.options.trialSchema) {
10141
- throw new Error(
10394
+ throw new M2Error(
10142
10395
  "no trial schema were provided in GameOptions. cannot add trial data"
10143
10396
  );
10144
10397
  }
@@ -10149,6 +10402,7 @@ class Game {
10149
10402
  emptyTrial[variableName2] = null;
10150
10403
  }
10151
10404
  this.data.trials.push({
10405
+ data_type: "trial",
10152
10406
  document_uuid: Uuid.generate(),
10153
10407
  study_id: this.studyId ?? null,
10154
10408
  study_uuid: this.studyUuid ?? null,
@@ -10165,7 +10419,7 @@ class Game {
10165
10419
  });
10166
10420
  }
10167
10421
  if (!(variableName in this.options.trialSchema)) {
10168
- throw new Error(`trial variable ${variableName} not defined in schema`);
10422
+ throw new M2Error(`trial variable ${variableName} not defined in schema`);
10169
10423
  }
10170
10424
  let expectedDataTypes;
10171
10425
  if (Array.isArray(this.options.trialSchema[variableName].type)) {
@@ -10185,12 +10439,120 @@ class Game {
10185
10439
  providedDataType = "null";
10186
10440
  }
10187
10441
  if (!expectedDataTypes.includes(providedDataType) && !(providedDataType === "number" && Number.isInteger(value) && expectedDataTypes.includes("integer"))) {
10188
- throw new Error(
10442
+ throw new M2Error(
10189
10443
  `type for variable ${variableName} (value: ${value}) is "${providedDataType}". Based on schema for this variable, expected type was "${expectedDataTypes}"`
10190
10444
  );
10191
10445
  }
10192
10446
  this.data.trials[this.trialIndex][variableName] = value;
10193
10447
  }
10448
+ /**
10449
+ * Adds data to the game's scoring data.
10450
+ *
10451
+ * @remarks The variable name (or object property names) must be previously
10452
+ * defined in the {@link ScoringSchema} object in {@link GameOptions}.
10453
+ * The type of the value must match what was defined in the scoring schema,
10454
+ * otherwise an error is thrown.
10455
+ *
10456
+ * @param variableNameOrObject - Either a variable name (string) or an object
10457
+ * containing multiple key-value pairs to add all at once.
10458
+ * @param value - Value of the variable to set (only used when
10459
+ * variableNameOrObject is a variable name string).
10460
+ */
10461
+ addScoringData(variableNameOrObject, value) {
10462
+ if (!this.options.scoringSchema) {
10463
+ throw new M2Error(
10464
+ "no scoring schema were provided in GameOptions. cannot add scoring data"
10465
+ );
10466
+ }
10467
+ if (Object.keys(this.data.scoring).length === 0) {
10468
+ const emptyScoring = {
10469
+ data_type: "scoring",
10470
+ document_uuid: Uuid.generate(),
10471
+ study_id: this.studyId ?? null,
10472
+ study_uuid: this.studyUuid ?? null,
10473
+ session_uuid: this.sessionUuid,
10474
+ activity_uuid: this.uuid,
10475
+ activity_id: this.options.id,
10476
+ activity_publish_uuid: this.options.publishUuid,
10477
+ activity_version: this.options.version,
10478
+ device_timezone: Intl?.DateTimeFormat()?.resolvedOptions()?.timeZone ?? "",
10479
+ device_timezone_offset_minutes: (/* @__PURE__ */ new Date()).getTimezoneOffset(),
10480
+ locale: this.i18n?.locale ?? null,
10481
+ device_metadata: this.getDeviceMetadata()
10482
+ };
10483
+ const variables = Object.entries(this.options.scoringSchema);
10484
+ for (const [variableName2] of variables) {
10485
+ emptyScoring[variableName2] = null;
10486
+ }
10487
+ this.data.scoring = emptyScoring;
10488
+ }
10489
+ if (typeof variableNameOrObject === "object") {
10490
+ let scoringObject;
10491
+ if (Array.isArray(variableNameOrObject)) {
10492
+ if (variableNameOrObject.length !== 1) {
10493
+ console.warn(
10494
+ `Array of objects passed to addScoringData() is length ${variableNameOrObject.length}. This is likely an error in the assessment's code for calculateScores().`
10495
+ );
10496
+ }
10497
+ scoringObject = variableNameOrObject[0];
10498
+ } else {
10499
+ scoringObject = variableNameOrObject;
10500
+ }
10501
+ for (const [key, val] of Object.entries(scoringObject)) {
10502
+ this.validateAndSetScoringVariable(key, val);
10503
+ }
10504
+ return;
10505
+ }
10506
+ const variableName = variableNameOrObject;
10507
+ if (value === void 0) {
10508
+ throw new M2Error(
10509
+ "Value must be provided when adding a single scoring variable"
10510
+ );
10511
+ }
10512
+ this.validateAndSetScoringVariable(variableName, value);
10513
+ }
10514
+ /**
10515
+ * Helper method to validate and set a single scoring variable
10516
+ *
10517
+ * @param variableName - Name of the variable to set
10518
+ * @param value - Value to set
10519
+ * @private
10520
+ */
10521
+ validateAndSetScoringVariable(variableName, value) {
10522
+ if (!this.options.scoringSchema) {
10523
+ throw new M2Error(
10524
+ "no scoring schema were provided in GameOptions. cannot add scoring data"
10525
+ );
10526
+ }
10527
+ if (!(variableName in this.options.scoringSchema)) {
10528
+ throw new M2Error(
10529
+ `scoring variable ${variableName} not defined in schema`
10530
+ );
10531
+ }
10532
+ let expectedDataTypes;
10533
+ if (Array.isArray(this.options.scoringSchema[variableName].type)) {
10534
+ expectedDataTypes = this.options.scoringSchema[variableName].type;
10535
+ } else {
10536
+ expectedDataTypes = [
10537
+ this.options.scoringSchema[variableName].type
10538
+ ];
10539
+ }
10540
+ let providedDataType = typeof value;
10541
+ if (providedDataType === "object") {
10542
+ if (Object.prototype.toString.call(value) === "[object Array]") {
10543
+ providedDataType = "array";
10544
+ }
10545
+ }
10546
+ if (value === void 0 || value === null) {
10547
+ providedDataType = "null";
10548
+ }
10549
+ if (!expectedDataTypes.includes(providedDataType) && !(providedDataType === "number" && Number.isInteger(value) && expectedDataTypes.includes("integer"))) {
10550
+ throw new M2Error(
10551
+ `type for variable ${variableName} (value: ${value}) is "${providedDataType}". Based on schema for this variable, expected type was "${expectedDataTypes}"`
10552
+ );
10553
+ }
10554
+ this.data.scoring[variableName] = value;
10555
+ }
10194
10556
  /**
10195
10557
  * Adds custom trial schema to the game's trialSchema object.
10196
10558
  *
@@ -10205,7 +10567,7 @@ class Game {
10205
10567
  const keys = Object.keys(schema);
10206
10568
  keys.forEach((key) => {
10207
10569
  if (!this.options.trialSchema) {
10208
- throw new Error("trial schema is undefined");
10570
+ throw new M2Error("trial schema is undefined");
10209
10571
  }
10210
10572
  this.options.trialSchema[key] = schema[key];
10211
10573
  });
@@ -10237,10 +10599,10 @@ class Game {
10237
10599
  */
10238
10600
  addStaticTrialData(variableName, value) {
10239
10601
  if (!this.options.trialSchema) {
10240
- throw new Error("trial schema is undefined");
10602
+ throw new M2Error("trial schema is undefined");
10241
10603
  }
10242
10604
  if (this.options.trialSchema[variableName] === void 0) {
10243
- throw new Error(`trial variable ${variableName} not defined in schema`);
10605
+ throw new M2Error(`trial variable ${variableName} not defined in schema`);
10244
10606
  }
10245
10607
  this.staticTrialSchema[variableName] = value;
10246
10608
  }
@@ -10289,6 +10651,36 @@ class Game {
10289
10651
  };
10290
10652
  this.raiseActivityEventOnListeners(resultsEvent);
10291
10653
  }
10654
+ /**
10655
+ * Marks scoring as complete.
10656
+ *
10657
+ * @remarks This method must be called after the game has finished adding
10658
+ * scores using addScoringData(). Calling will trigger the onActivityResults
10659
+ * callback function, if one was provided in SessionOptions. This is how the
10660
+ * game communicates scoring data to the parent session, which can then save
10661
+ * or process the data. It is the responsibility of the the game programmer
10662
+ * to call this at the appropriate time. It is not triggered automatically.
10663
+ */
10664
+ scoringComplete() {
10665
+ const resultsEvent = {
10666
+ type: M2EventType.ActivityData,
10667
+ ...M2c2KitHelpers.createFrameUpdateTimestamps(),
10668
+ target: this,
10669
+ newData: this.data.scoring,
10670
+ newDataSchema: this.makeScoringDataSchema(),
10671
+ data: this.data.scoring,
10672
+ dataSchema: this.makeScoringDataSchema(),
10673
+ dataType: "Scoring",
10674
+ activityConfiguration: this.makeGameActivityConfiguration(
10675
+ this.options.parameters ?? {}
10676
+ ),
10677
+ activityConfigurationSchema: this.makeGameActivityConfigurationSchema(
10678
+ this.options.parameters ?? {}
10679
+ ),
10680
+ activityMetrics: this.gameMetrics
10681
+ };
10682
+ this.raiseActivityEventOnListeners(resultsEvent);
10683
+ }
10292
10684
  makeNewGameDataSchema() {
10293
10685
  const newDataSchema = {
10294
10686
  description: `A single trial and metadata from the assessment ${this.name}.`,
@@ -10391,6 +10783,20 @@ class Game {
10391
10783
  properties: result
10392
10784
  };
10393
10785
  }
10786
+ makeScoringDataSchema() {
10787
+ const scoringDataSchema = {
10788
+ description: `Scoring data and metadata from the assessment ${this.name}.`,
10789
+ $comment: `Activity identifier: ${this.options.id}, version: ${this.options.version}.`,
10790
+ $schema: "https://json-schema.org/draft/2019-09/schema",
10791
+ type: "object",
10792
+ properties: {
10793
+ ...this.automaticScoringSchema,
10794
+ ...this.options.scoringSchema,
10795
+ device_metadata: deviceMetadataSchema
10796
+ }
10797
+ };
10798
+ return scoringDataSchema;
10799
+ }
10394
10800
  /**
10395
10801
  * Should be called when current game has ended successfully.
10396
10802
  *
@@ -10464,7 +10870,7 @@ class Game {
10464
10870
  (canvas) => !canvas.id.startsWith("m2c2kit-scratch-canvas")
10465
10871
  );
10466
10872
  if (canvases.length === 0) {
10467
- throw new Error("no html canvas tag was found in the html");
10873
+ throw new M2Error("no html canvas tag was found in the html");
10468
10874
  }
10469
10875
  const m2c2kitCanvas = canvases.filter(
10470
10876
  (c) => c.id === "m2c2kit-canvas"
@@ -10483,7 +10889,7 @@ class Game {
10483
10889
  } else {
10484
10890
  htmlCanvas = document.getElementById(canvasId);
10485
10891
  if (htmlCanvas === void 0) {
10486
- throw new Error(
10892
+ throw new M2Error(
10487
10893
  `could not find canvas HTML element with id "${canvasId}"`
10488
10894
  );
10489
10895
  }
@@ -10509,7 +10915,7 @@ class Game {
10509
10915
  }
10510
10916
  setupCanvasKitSurface() {
10511
10917
  if (this.htmlCanvas === void 0) {
10512
- throw new Error("main html canvas is undefined");
10918
+ throw new M2Error("main html canvas is undefined");
10513
10919
  }
10514
10920
  window.logWebGl = this.options.logWebGl;
10515
10921
  this.interceptWebGlCalls();
@@ -10521,7 +10927,7 @@ class Game {
10521
10927
  }
10522
10928
  const surface = this.canvasKit.MakeWebGLCanvasSurface(this.htmlCanvas);
10523
10929
  if (surface === null) {
10524
- throw new Error(
10930
+ throw new M2Error(
10525
10931
  `could not make CanvasKit surface from canvas HTML element`
10526
10932
  );
10527
10933
  }
@@ -10579,7 +10985,7 @@ class Game {
10579
10985
  }
10580
10986
  setupCanvasDomEventHandlers() {
10581
10987
  if (this.htmlCanvas === void 0) {
10582
- throw new Error("main html canvas is undefined");
10988
+ throw new M2Error("main html canvas is undefined");
10583
10989
  }
10584
10990
  this.htmlCanvas.addEventListener(
10585
10991
  "pointerdown",
@@ -10608,7 +11014,7 @@ class Game {
10608
11014
  }
10609
11015
  loop(canvas) {
10610
11016
  if (!this.surface) {
10611
- throw new Error("surface is undefined");
11017
+ throw new M2Error("surface is undefined");
10612
11018
  }
10613
11019
  if (this.warmupFunctionQueue.length > 0) {
10614
11020
  const warmup = this.warmupFunctionQueue.shift();
@@ -10637,7 +11043,9 @@ class Game {
10637
11043
  this.animationFramesRequested++;
10638
11044
  if (!this.limitFps || this.animationFramesRequested % Math.round(60 / Constants.LIMITED_FPS_RATE) === 0) {
10639
11045
  if (this.currentScene === void 0 && this.incomingSceneTransitions.length === 0 && this.eventStore.mode !== EventStoreMode.Replay) {
10640
- throw new Error("Can not run game without a current or incoming scene");
11046
+ throw new M2Error(
11047
+ "Can not run game without a current or incoming scene"
11048
+ );
10641
11049
  }
10642
11050
  this.updateGameTime();
10643
11051
  if (this.eventStore.mode === EventStoreMode.Replay) {
@@ -10683,7 +11091,7 @@ class Game {
10683
11091
  if (this.snapshots.length > 0 || incomingSceneTransitions[0].transition.type === TransitionType.None) {
10684
11092
  const incomingSceneTransition = incomingSceneTransitions.shift();
10685
11093
  if (incomingSceneTransition === void 0) {
10686
- throw new Error("no incoming scene transition");
11094
+ throw new M2Error("no incoming scene transition");
10687
11095
  }
10688
11096
  const incomingScene = incomingSceneTransition.scene;
10689
11097
  const transition = incomingSceneTransition.transition;
@@ -10699,7 +11107,7 @@ class Game {
10699
11107
  }
10700
11108
  this.currentSceneSnapshot = this.snapshots.shift();
10701
11109
  if (!this.currentSceneSnapshot) {
10702
- throw new Error("No snapshot available for outgoing scene");
11110
+ throw new M2Error("No snapshot available for outgoing scene");
10703
11111
  }
10704
11112
  const outgoingScene = this.createOutgoingScene(this.currentSceneSnapshot);
10705
11113
  outgoingScene._active = true;
@@ -10755,12 +11163,12 @@ class Game {
10755
11163
  */
10756
11164
  async registerPlugin(plugin) {
10757
11165
  if (plugin.type !== ActivityType.Game) {
10758
- throw new Error(
11166
+ throw new M2Error(
10759
11167
  `registerPlugin(): plugin ${plugin.id} is not a game plugin. It is a ${plugin.type} plugin.`
10760
11168
  );
10761
11169
  }
10762
11170
  if (this.plugins.includes(plugin) || this.plugins.map((p) => p.id).includes(plugin.id)) {
10763
- throw new Error(
11171
+ throw new M2Error(
10764
11172
  `registerPlugin(): plugin ${plugin.id} already registered.`
10765
11173
  );
10766
11174
  }
@@ -10840,13 +11248,13 @@ class Game {
10840
11248
  }
10841
11249
  takeCurrentSceneSnapshot() {
10842
11250
  if (this.surface === void 0) {
10843
- throw new Error("CanvasKit surface is undefined");
11251
+ throw new M2Error("CanvasKit surface is undefined");
10844
11252
  }
10845
11253
  return this.surface.makeImageSnapshot();
10846
11254
  }
10847
11255
  handlePendingScreenshot(pendingScreenshot) {
10848
11256
  if (!this.surface) {
10849
- throw new Error("no surface");
11257
+ throw new M2Error("no surface");
10850
11258
  }
10851
11259
  let image;
10852
11260
  if (pendingScreenshot.rect.length == 4) {
@@ -10879,7 +11287,7 @@ class Game {
10879
11287
  */
10880
11288
  takeScreenshot(sx, sy, sw, sh) {
10881
11289
  if (!this.surface) {
10882
- throw new Error("no canvaskit surface. unable to take screenshot.");
11290
+ throw new M2Error("no canvaskit surface. unable to take screenshot.");
10883
11291
  }
10884
11292
  const missingParametersCount = [sx, sy, sw, sh].map((x) => x ? 0 : 1).reduce((a, b) => a + b);
10885
11293
  return new Promise((resolve, reject) => {
@@ -11083,12 +11491,12 @@ class Game {
11083
11491
  );
11084
11492
  break;
11085
11493
  default:
11086
- throw new Error("unknown transition direction");
11494
+ throw new M2Error("unknown transition direction");
11087
11495
  }
11088
11496
  break;
11089
11497
  }
11090
11498
  default:
11091
- throw new Error("unknown transition type");
11499
+ throw new M2Error("unknown transition type");
11092
11500
  }
11093
11501
  }
11094
11502
  drawFps(canvas) {
@@ -11096,7 +11504,7 @@ class Game {
11096
11504
  const drawScale = m2c2Globals.canvasScale;
11097
11505
  canvas.scale(1 / drawScale, 1 / drawScale);
11098
11506
  if (!this.fpsTextFont || !this.fpsTextPaint) {
11099
- throw new Error("fps font or paint is undefined");
11507
+ throw new M2Error("fps font or paint is undefined");
11100
11508
  }
11101
11509
  canvas.drawText(
11102
11510
  "FPS: " + this.fpsRate.toFixed(2),
@@ -11126,12 +11534,12 @@ class Game {
11126
11534
  }
11127
11535
  const node = nodes.filter((node2) => node2.name === nodeName).find(Boolean);
11128
11536
  if (node === void 0) {
11129
- throw new Error(
11537
+ throw new M2Error(
11130
11538
  `could not create event listener. node with name ${nodeName} could not be found in the game node tree`
11131
11539
  );
11132
11540
  }
11133
11541
  if (!Object.values(M2EventType).includes(type)) {
11134
- throw new Error(
11542
+ throw new M2Error(
11135
11543
  `game ${this.id}: could not create event listener. event type ${type} is not known`
11136
11544
  );
11137
11545
  }
@@ -11170,7 +11578,7 @@ class Game {
11170
11578
  return;
11171
11579
  }
11172
11580
  if (!this.htmlCanvas) {
11173
- throw new Error("main html canvas is undefined");
11581
+ throw new M2Error("main html canvas is undefined");
11174
11582
  }
11175
11583
  const domPointerDownEvent = {
11176
11584
  type: "DomPointerDown",
@@ -11855,7 +12263,7 @@ const _LegacyTimer = class _LegacyTimer {
11855
12263
  this._timers.push(timer);
11856
12264
  } else {
11857
12265
  if (timer.stopped == false) {
11858
- throw new Error(
12266
+ throw new M2Error(
11859
12267
  `can't start timer. timer with name ${name} is already started`
11860
12268
  );
11861
12269
  }
@@ -11877,12 +12285,12 @@ const _LegacyTimer = class _LegacyTimer {
11877
12285
  static stop(name) {
11878
12286
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
11879
12287
  if (timer === void 0) {
11880
- throw new Error(
12288
+ throw new M2Error(
11881
12289
  `can't stop timer. timer with name ${name} does not exist`
11882
12290
  );
11883
12291
  }
11884
12292
  if (timer.stopped === true) {
11885
- throw new Error(
12293
+ throw new M2Error(
11886
12294
  `can't stop timer. timer with name ${name} is already stopped`
11887
12295
  );
11888
12296
  }
@@ -11905,7 +12313,7 @@ const _LegacyTimer = class _LegacyTimer {
11905
12313
  static restart(name) {
11906
12314
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
11907
12315
  if (timer === void 0) {
11908
- throw new Error(
12316
+ throw new M2Error(
11909
12317
  `can't restart timer. timer with name ${name} does not exist`
11910
12318
  );
11911
12319
  }
@@ -11928,7 +12336,7 @@ const _LegacyTimer = class _LegacyTimer {
11928
12336
  static elapsed(name) {
11929
12337
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
11930
12338
  if (timer === void 0) {
11931
- throw new Error(
12339
+ throw new M2Error(
11932
12340
  `can't get elapsed time. timer with name ${name} does not exist`
11933
12341
  );
11934
12342
  }
@@ -11952,7 +12360,7 @@ const _LegacyTimer = class _LegacyTimer {
11952
12360
  static remove(name) {
11953
12361
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
11954
12362
  if (timer === void 0) {
11955
- throw new Error(
12363
+ throw new M2Error(
11956
12364
  `can't remove timer. timer with name ${name} does not exist`
11957
12365
  );
11958
12366
  }
@@ -12012,7 +12420,7 @@ class RandomDraws {
12012
12420
  */
12013
12421
  static FromRangeWithoutReplacement(n, minimumInclusive, maximumInclusive) {
12014
12422
  if (n > maximumInclusive - minimumInclusive + 1) {
12015
- throw new Error(
12423
+ throw new M2Error(
12016
12424
  `number of requested draws (n = ${n}) is greater than number of integers in range [ ${minimumInclusive}, ${maximumInclusive}]`
12017
12425
  );
12018
12426
  }
@@ -12147,7 +12555,7 @@ class SoundPlayer extends M2Node {
12147
12555
  */
12148
12556
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
12149
12557
  duplicate(newName) {
12150
- throw new Error("Method not implemented.");
12558
+ throw new M2Error("Method not implemented.");
12151
12559
  }
12152
12560
  }
12153
12561
 
@@ -12205,7 +12613,7 @@ class SoundRecorder extends M2Node {
12205
12613
  */
12206
12614
  async start() {
12207
12615
  if (this.isRecording) {
12208
- throw new Error(
12616
+ throw new M2Error(
12209
12617
  "cannot start SoundRecorder because it is already started."
12210
12618
  );
12211
12619
  }
@@ -12213,7 +12621,7 @@ class SoundRecorder extends M2Node {
12213
12621
  this.endIso8601Timestamp = void 0;
12214
12622
  const supportedMimeTypes = this.getMediaRecorderSupportedAudioMimeTypes();
12215
12623
  if (supportedMimeTypes.length === 0) {
12216
- throw new Error(
12624
+ throw new M2Error(
12217
12625
  "SoundRecorder found no supported MIME types for MediaRecorder."
12218
12626
  );
12219
12627
  }
@@ -12227,10 +12635,10 @@ class SoundRecorder extends M2Node {
12227
12635
  audio: this.audioTrackConstraints ? this.audioTrackConstraints : true
12228
12636
  });
12229
12637
  } catch (error) {
12230
- throw new Error(`Error getting user media: ${error}.`);
12638
+ throw new M2Error(`Error getting user media: ${error}.`);
12231
12639
  }
12232
12640
  if (!stream) {
12233
- throw new Error("no stream.");
12641
+ throw new M2Error("no stream.");
12234
12642
  }
12235
12643
  const audioTracks = stream.getAudioTracks();
12236
12644
  this.mediaTrackSettings = audioTracks?.map((track) => track.getSettings());
@@ -12239,7 +12647,7 @@ class SoundRecorder extends M2Node {
12239
12647
  this.audioChunks.push(event.data);
12240
12648
  };
12241
12649
  this.mediaRecorder.onerror = (event) => {
12242
- throw new Error(
12650
+ throw new M2Error(
12243
12651
  `MediaRecorder error: ${event?.error?.message} ${event?.message}`
12244
12652
  );
12245
12653
  };
@@ -12262,15 +12670,17 @@ class SoundRecorder extends M2Node {
12262
12670
  */
12263
12671
  async stop() {
12264
12672
  if (!this.isRecording) {
12265
- throw new Error("cannot stop SoundRecorder because it has not started.");
12673
+ throw new M2Error(
12674
+ "cannot stop SoundRecorder because it has not started."
12675
+ );
12266
12676
  }
12267
12677
  return new Promise((resolve) => {
12268
12678
  if (!this.mediaRecorder) {
12269
- throw new Error("no media recorder");
12679
+ throw new M2Error("no media recorder");
12270
12680
  }
12271
12681
  this.mediaRecorder.onstop = async () => {
12272
12682
  if (!this.mimeType) {
12273
- throw new Error("no mimeType");
12683
+ throw new M2Error("no mimeType");
12274
12684
  }
12275
12685
  this._isRecording = false;
12276
12686
  this._isPaused = false;
@@ -12297,10 +12707,12 @@ class SoundRecorder extends M2Node {
12297
12707
  }
12298
12708
  pause() {
12299
12709
  if (!this.isRecording) {
12300
- throw new Error("cannot pause SoundRecorder because it is not started.");
12710
+ throw new M2Error(
12711
+ "cannot pause SoundRecorder because it is not started."
12712
+ );
12301
12713
  }
12302
12714
  if (this.isPaused) {
12303
- throw new Error(
12715
+ throw new M2Error(
12304
12716
  "cannot pause SoundRecorder because it is already paused."
12305
12717
  );
12306
12718
  }
@@ -12310,10 +12722,14 @@ class SoundRecorder extends M2Node {
12310
12722
  }
12311
12723
  resume() {
12312
12724
  if (!this.isRecording) {
12313
- throw new Error("cannot resume SoundRecorder because it is not started.");
12725
+ throw new M2Error(
12726
+ "cannot resume SoundRecorder because it is not started."
12727
+ );
12314
12728
  }
12315
12729
  if (!this.isPaused) {
12316
- throw new Error("cannot resume SoundRecorder because it is not paused.");
12730
+ throw new M2Error(
12731
+ "cannot resume SoundRecorder because it is not paused."
12732
+ );
12317
12733
  }
12318
12734
  this.mediaRecorder?.resume();
12319
12735
  this._isPaused = false;
@@ -12472,7 +12888,7 @@ class SoundRecorder extends M2Node {
12472
12888
  reader.onloadend = () => {
12473
12889
  const base64WithoutPrefix = reader.result?.toString().split(",").pop();
12474
12890
  if (base64WithoutPrefix === void 0) {
12475
- throw new Error("base64WithoutPrefix is undefined.");
12891
+ throw new M2Error("base64WithoutPrefix is undefined.");
12476
12892
  }
12477
12893
  resolve(base64WithoutPrefix);
12478
12894
  };
@@ -12506,7 +12922,7 @@ class SoundRecorder extends M2Node {
12506
12922
  * provided, name will be the new uuid
12507
12923
  */
12508
12924
  duplicate(newName) {
12509
- throw new Error(`Method not implemented. ${newName}`);
12925
+ throw new M2Error(`Method not implemented. ${newName}`);
12510
12926
  }
12511
12927
  }
12512
12928
 
@@ -12518,7 +12934,7 @@ class Story {
12518
12934
  }
12519
12935
  }
12520
12936
 
12521
- console.log("\u26AA @m2c2kit/core version 0.3.29 (d1ad307f)");
12937
+ console.log("\u26AA @m2c2kit/core version 0.3.30 (9f27c146)");
12522
12938
 
12523
- export { Action, ActivityType, CanvasKitHelpers, ColorfulMutablePath, Composite, Constants, ConstraintType, CustomAction, Dimensions, Easings, Equal, Equals, EventStore, EventStoreMode, FadeAlphaAction, FontManager, Game, GroupAction, I18n, ImageManager, Label, LabelHorizontalAlignmentMode, LayoutConstraint, LegacyTimer, M2EventType, M2ImageStatus, M2Node, M2NodeFactory, M2NodeType, M2SoundStatus, M2c2KitHelpers, MoveAction, MutablePath, NoneTransition, PlayAction, RandomDraws, RepeatAction, RepeatForeverAction, RotateAction, ScaleAction, Scene, SceneTransition, SequenceAction, Shape, ShapeType, SlideTransition, SoundManager, SoundPlayer, SoundRecorder, Sprite, Story, TextLine, Timer, Transition, TransitionDirection, TransitionType, Uuid, WaitAction, WebColors, WebGlInfo, handleInterfaceOptions };
12939
+ export { Action, ActivityType, CanvasKitHelpers, ColorfulMutablePath, Composite, Constants, ConstraintType, CustomAction, Dimensions, Easings, Equal, Equals, EventStore, EventStoreMode, FadeAlphaAction, FontManager, Game, GroupAction, I18n, ImageManager, Label, LabelHorizontalAlignmentMode, LayoutConstraint, LegacyTimer, M2Error, M2EventType, M2ImageStatus, M2Node, M2NodeFactory, M2NodeType, M2SoundStatus, M2c2KitHelpers, MoveAction, MutablePath, NoneTransition, PlayAction, RandomDraws, RepeatAction, RepeatForeverAction, RotateAction, ScaleAction, Scene, SceneTransition, SequenceAction, Shape, ShapeType, SlideTransition, SoundManager, SoundPlayer, SoundRecorder, Sprite, Story, TextLine, Timer, Transition, TransitionDirection, TransitionType, Uuid, WaitAction, WebColors, WebGlInfo, handleInterfaceOptions };
12524
12940
  //# sourceMappingURL=index.js.map