adofai 2.13.1 → 2.14.0

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.
@@ -0,0 +1,196 @@
1
+ import Parser from "./Parser";
2
+ import StringParser from "./StringParser";
3
+ let BOM;
4
+ let COMMA;
5
+ let BufferAvailable = true;
6
+ try {
7
+ BOM = Buffer.of(0xef, 0xbb, 0xbf);
8
+ COMMA = Buffer.from(",");
9
+ }
10
+ catch (e) {
11
+ BufferAvailable = false;
12
+ console.warn('Buffer is not available in current environment, try to use ArrayBufferParser');
13
+ // minimal shims to keep types happy; won't be used when BufferUnavailable
14
+ BOM = { equals: () => false, subarray: () => null };
15
+ COMMA = { equals: () => false, subarray: () => null };
16
+ }
17
+ /**
18
+ * Inspect buffer to detect an unescaped raw newline inside a quoted string.
19
+ * If found, we must fallback to the more tolerant StringParser.
20
+ */
21
+ function hasRawNewlineInStringBuffer(buf) {
22
+ let last = "other";
23
+ for (let i = 0; i < buf.length; i++) {
24
+ const c = buf[i];
25
+ if (last === "escape") {
26
+ last = "string";
27
+ continue;
28
+ }
29
+ switch (c) {
30
+ case 34: // "
31
+ if (last === "string") {
32
+ last = "other";
33
+ }
34
+ else {
35
+ if (last === "comma") {
36
+ // entering string after comma
37
+ }
38
+ last = "string";
39
+ }
40
+ break;
41
+ case 92: // \
42
+ if (last === "string")
43
+ last = "escape";
44
+ break;
45
+ case 44: // ,
46
+ if (last === "other")
47
+ last = "comma";
48
+ break;
49
+ case 93: // ]
50
+ case 125: // }
51
+ if (last === "comma")
52
+ last = "other";
53
+ break;
54
+ // whitespace bytes
55
+ case 9:
56
+ case 10:
57
+ case 11:
58
+ case 12:
59
+ case 13:
60
+ case 32:
61
+ // If we see newline (10) or carriage (13) while inside a string AND not escaped,
62
+ // that's a raw newline in string -> not valid strict JSON; detect and return true.
63
+ if ((c === 10 || c === 13) && last === "string") {
64
+ return true;
65
+ }
66
+ break;
67
+ default:
68
+ if (last === "comma") {
69
+ last = "other";
70
+ }
71
+ break;
72
+ }
73
+ }
74
+ return false;
75
+ }
76
+ /**
77
+ * Normalize buffer by removing insignificant whitespace outside strings.
78
+ * Works on Uint8Array and returns Buffer (for node) or Uint8Array (for arraybuffer flow).
79
+ * This function keeps contents inside strings untouched.
80
+ */
81
+ function normalizeJsonUint8(buf) {
82
+ const builder = [];
83
+ let last = "other";
84
+ let from = 0;
85
+ for (let i = 0; i < buf.length; i++) {
86
+ const charCode = buf[i];
87
+ if (last === "escape") {
88
+ last = "string";
89
+ continue;
90
+ }
91
+ else {
92
+ switch (charCode) {
93
+ case 34: // "
94
+ switch (last) {
95
+ case "string":
96
+ last = "other";
97
+ break;
98
+ case "comma":
99
+ // when we hit a quote after a comma we keep the comma boundary
100
+ builder.push(COMMA ? COMMA : new Uint8Array([44]));
101
+ default:
102
+ last = "string";
103
+ break;
104
+ }
105
+ break;
106
+ case 92: // \
107
+ if (last === "string")
108
+ last = "escape";
109
+ break;
110
+ case 44: // ,
111
+ builder.push(buf.subarray(from, i));
112
+ from = i + 1;
113
+ if (last === "other")
114
+ last = "comma";
115
+ break;
116
+ case 93:
117
+ case 125:
118
+ if (last === "comma")
119
+ last = "other";
120
+ break;
121
+ case 9:
122
+ case 10:
123
+ case 11:
124
+ case 12:
125
+ case 13:
126
+ case 32:
127
+ // ignore whitespace outside strings
128
+ break;
129
+ default:
130
+ if (last === "comma") {
131
+ builder.push(COMMA ? COMMA : new Uint8Array([44]));
132
+ last = "other";
133
+ }
134
+ break;
135
+ }
136
+ }
137
+ }
138
+ builder.push(buf.subarray(from));
139
+ // concat
140
+ let total = 0;
141
+ for (const piece of builder)
142
+ total += piece.length;
143
+ const out = new Uint8Array(total);
144
+ let offset = 0;
145
+ for (const piece of builder) {
146
+ out.set(piece, offset);
147
+ offset += piece.length;
148
+ }
149
+ return out;
150
+ }
151
+ export class BufferParser extends Parser {
152
+ parse(input) {
153
+ // string input: delegate to StringParser (keeps current behavior)
154
+ if (typeof input === "string") {
155
+ return StringParser.prototype.parse.call(StringParser.prototype, input);
156
+ }
157
+ // Node Buffer path
158
+ const nodeBuf = input;
159
+ // strip BOM quickly
160
+ const stripped = stripBOM(nodeBuf);
161
+ const u8 = new Uint8Array(stripped);
162
+ // If there is any raw newline inside a quoted string, fallback to StringParser
163
+ if (hasRawNewlineInStringBuffer(u8)) {
164
+ // decode exactly and let StringParser tolerant-parse it
165
+ return StringParser.prototype.parse.call(StringParser.prototype, decodeStringFromUTF8BOM(stripped));
166
+ }
167
+ // Fast path: normalize then try JSON.parse (much faster than StringParser).
168
+ try {
169
+ const normalized = normalizeJsonUint8(u8);
170
+ const text = decodeStringFromUTF8BOM(Buffer.from(normalized));
171
+ return JSON.parse(text);
172
+ }
173
+ catch (e) {
174
+ // Fallback to StringParser if anything unexpected occurs
175
+ return StringParser.prototype.parse.call(StringParser.prototype, decodeStringFromUTF8BOM(stripped));
176
+ }
177
+ }
178
+ stringify(obj) {
179
+ return JSON.stringify(obj);
180
+ }
181
+ }
182
+ export function stripBOM(buffer) {
183
+ if (buffer.length >= 3 && BOM.equals(buffer.subarray(0, 3))) {
184
+ return buffer.subarray(3);
185
+ }
186
+ return buffer;
187
+ }
188
+ export function normalizeJsonBuffer(text) {
189
+ // keep backward compatibility: use the Uint8 normalizer and return a Buffer
190
+ const u8 = normalizeJsonUint8(new Uint8Array(text));
191
+ return Buffer.from(u8);
192
+ }
193
+ export function decodeStringFromUTF8BOM(buffer) {
194
+ return stripBOM(buffer).toString("utf-8");
195
+ }
196
+ export default BufferParser;
@@ -20,7 +20,6 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  };
21
21
  import pathData from '../pathdata';
22
22
  import exportAsADOFAI from './format';
23
- import BaseParser from '../parser';
24
23
  import effectProcessor from '../filter/effectProcessor';
25
24
  import { EffectCleanerType } from '../filter/effectProcessor';
26
25
  import { v4 as uuid } from 'uuid';
@@ -133,7 +132,6 @@ export class Level {
133
132
  }
134
133
  return Object.values(this._precomputedEvents).reduce((sum, arr) => sum + arr.length, 0);
135
134
  }
136
- // ==================== 轻量级预计算 API(用于大物量渲染) ====================
137
135
  /**
138
136
  * 获取轻量级预计算数据
139
137
  * 只包含渲染必需的数据:angles, positions, twirlFlags
@@ -235,26 +233,30 @@ export class Level {
235
233
  }
236
234
  load() {
237
235
  return new Promise((resolve, reject) => {
236
+ var _a;
238
237
  let opt = this._options;
239
238
  let options;
240
- // 阶段1: 解析输入
241
239
  this._emitProgress('start', 0, 0);
242
- switch (typeof opt) {
243
- case 'string':
244
- try {
245
- options = BaseParser.parseAsObject(opt, this._provider);
246
- }
247
- catch (e) {
248
- reject(e);
249
- return;
250
- }
251
- break;
252
- case 'object':
253
- options = Object.assign({}, opt);
254
- break;
255
- default:
256
- reject("Options must be String or Object");
240
+ const isArrayBuffer = opt instanceof ArrayBuffer;
241
+ const isUint8Array = opt instanceof Uint8Array;
242
+ const isBuffer = typeof Buffer !== 'undefined' && Buffer.isBuffer(opt);
243
+ if (typeof opt === 'string' || isArrayBuffer || isUint8Array || isBuffer) {
244
+ try {
245
+ let input = isArrayBuffer ? new Uint8Array(opt) : opt;
246
+ // 确保此时 input 是 string, Uint8Array 或 Buffer
247
+ options = (_a = this._provider) === null || _a === void 0 ? void 0 : _a.parse(input);
248
+ }
249
+ catch (e) {
250
+ reject("解析失败: " + e);
257
251
  return;
252
+ }
253
+ }
254
+ else if (typeof opt === 'object' && opt !== null) {
255
+ options = Object.assign({}, opt);
256
+ }
257
+ else {
258
+ reject("Options must be String, Buffer, ArrayBuffer or Object");
259
+ return;
258
260
  }
259
261
  // 阶段2: 处理 pathData 或 angleData
260
262
  const hasPathData = options && typeof options === 'object' && options !== null && typeof options.pathData !== 'undefined';
@@ -346,31 +348,65 @@ export class Level {
346
348
  }
347
349
  _createArray(xLength, opt) {
348
350
  return __awaiter(this, void 0, void 0, function* () {
349
- const tiles = [];
350
- const batchSize = Math.max(1, Math.floor(xLength / 100)); // 每批处理的数量,至少1个
351
+ const tiles = new Array(xLength);
352
+ const batchSize = Math.max(100, Math.floor(xLength / 100)); // 每批处理的数量,提高最小批量
353
+ // 性能优化:预先按 floor 分组 actions 和 decorations
354
+ const actionsByFloor = new Map();
355
+ if (Array.isArray(opt.actions)) {
356
+ for (const action of opt.actions) {
357
+ if (!actionsByFloor.has(action.floor)) {
358
+ actionsByFloor.set(action.floor, []);
359
+ }
360
+ actionsByFloor.get(action.floor).push(action);
361
+ }
362
+ }
363
+ const decorationsByFloor = new Map();
364
+ if (Array.isArray(opt.decorations)) {
365
+ for (const deco of opt.decorations) {
366
+ if (!decorationsByFloor.has(deco.floor)) {
367
+ decorationsByFloor.set(deco.floor, []);
368
+ }
369
+ decorationsByFloor.get(deco.floor).push(deco);
370
+ }
371
+ }
351
372
  for (let i = 0; i < xLength; i++) {
352
- // 注意顺序:先 _filterByFloor 更新 _twirlCount,再 _parseAngle 计算角度
353
- const actions = this._filterByFloor(opt.actions, i);
373
+ // Map 中直接获取当前 floor actions
374
+ const floorActions = actionsByFloor.get(i) || [];
375
+ const floorDecos = decorationsByFloor.get(i) || [];
376
+ // 更新 _twirlCount
377
+ for (const action of floorActions) {
378
+ if (action.eventType === 'Twirl') {
379
+ this._twirlCount++;
380
+ }
381
+ }
382
+ // 计算相对角度
354
383
  const angle = this._parseAngle(opt.angleData, i, this._twirlCount % 2);
355
- const tile = {
384
+ // 移除 floor 属性并创建 tile
385
+ const tileActions = floorActions.map((_a) => {
386
+ var { floor } = _a, rest = __rest(_a, ["floor"]);
387
+ return rest;
388
+ });
389
+ const tileDecos = floorDecos.map((_a) => {
390
+ var { floor } = _a, rest = __rest(_a, ["floor"]);
391
+ return rest;
392
+ });
393
+ tiles[i] = {
356
394
  direction: opt.angleData[i],
357
395
  _lastdir: opt.angleData[i - 1] || 0,
358
- actions: actions,
396
+ actions: tileActions,
359
397
  angle: angle,
360
- addDecorations: this._filterByFloorwithDeco(opt.decorations, i),
398
+ addDecorations: tileDecos,
361
399
  twirl: this._twirlCount,
362
400
  extraProps: {}
363
401
  };
364
- tiles.push(tile);
365
- // 每处理一批或最后一个时触发进度事件
402
+ // 降低进度汇报和让出循环的频率
366
403
  if (i % batchSize === 0 || i === xLength - 1) {
367
- // 轻量级事件数据 - 不存储完整 tile 对象,只存储渲染必需数据
368
404
  this._emitProgress('relativeAngle', i + 1, xLength, {
369
405
  tileIndex: i,
370
406
  angle: opt.angleData[i],
371
407
  relativeAngle: angle
372
408
  });
373
- // 让出事件循环,避免阻塞
409
+ // 每 10% 让出一次,或者对于超大谱面增加频率
374
410
  if (i % (batchSize * 10) === 0) {
375
411
  yield new Promise(r => setTimeout(r, 0));
376
412
  }
package/dist/umd/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see index.js.LICENSE.txt */
2
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ADOFAI=e():t.ADOFAI=e()}(globalThis,(()=>(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{Level:()=>_t,Parsers:()=>r,Presets:()=>n,Structure:()=>i,pathData:()=>a});var r={};t.r(r),t.d(r,{ArrayBufferParser:()=>Q,BufferParser:()=>F,StringParser:()=>T,default:()=>q});var n={};t.r(n),t.d(n,{preset_inner_no_deco:()=>at,preset_noeffect:()=>rt,preset_noeffect_completely:()=>ot,preset_noholds:()=>nt,preset_nomovecamera:()=>it});var i={};t.r(i),t.d(i,{default:()=>_t});var o={R:0,p:15,J:30,E:45,T:60,o:75,U:90,q:105,G:120,Q:135,H:150,W:165,L:180,x:195,N:210,Z:225,F:240,V:255,D:270,Y:285,B:300,C:315,M:330,A:345,5:555,6:666,7:777,8:888,"!":999};const a={pathDataTable:o,parseToangleData:function(t){return Array.from(t).map((function(t){return o[t]}))}};function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function u(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,l(n.key),n)}}function l(t){var e=function(t){if("object"!=s(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=s(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==s(e)?e:e+""}const c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,r=[{key:"parseError",value:function(t){return t}},{key:"parseAsObject",value:function(e,r){return(r||JSON).parse(t.parseAsText(e))}},{key:"parseAsText",value:function(t){return this.parseError(t)}}],null&&u(e.prototype,null),r&&u(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r}();function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function h(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,y(n.key),n)}}function p(t,e,r){return e&&h(t.prototype,e),r&&h(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function y(t){var e=function(t){if("object"!=f(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=f(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==f(e)?e:e+""}const v=p((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}));function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function g(t){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},g(t)}function b(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function m(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,O(n.key),n)}}function w(t,e,r){return e&&m(t.prototype,e),r&&m(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function O(t){var e=function(t){if("object"!=g(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=g(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==g(e)?e:e+""}function S(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(S=function(){return!!t})()}function _(t){return _=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_(t)}function k(t,e){return k=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},k(t,e)}var E=function(t){function e(){return b(this,e),t=this,n=arguments,r=_(r=e),function(t,e){if(e&&("object"==g(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,S()?Reflect.construct(r,n||[],_(t).constructor):r.apply(t,n));var t,r,n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&k(t,e)}(e,t),w(e,[{key:"parse",value:function(t,r){if(null==t)return null;var n=new A(t).parseValue();return"function"==typeof r?e._applyReviver("",n,r):n}},{key:"stringify",value:function(t,e,r){return new j(e,r).serialize(t)}}],[{key:"_applyReviver",value:function(t,r,n){if(r&&"object"===g(r))if(Array.isArray(r))for(var i=0;i<r.length;i++)r[i]=e._applyReviver(i.toString(),r[i],n);else for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(r[o]=e._applyReviver(o,r[o],n));return n(t,r)}}])}(v),A=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;b(this,t),this.json=e,this.position=0,this.endSection=r,65279===this.peek()&&this.read()}return w(t,[{key:"parseValue",value:function(){return this.parseByToken(this.nextToken)}},{key:"parseObject",value:function(){var e={};for(this.read();;){var r=void 0;do{if((r=this.nextToken)===t.TOKEN.NONE)return null;if(r===t.TOKEN.CURLY_CLOSE)return e}while(r===t.TOKEN.COMMA);var n=this.parseString();if(null===n)return null;if(this.nextToken!==t.TOKEN.COLON)return null;if(null!=this.endSection&&n===this.endSection)return e;this.read(),e[n]=this.parseValue()}}},{key:"parseArray",value:function(){var e=[];this.read();for(var r=!0;r;){var n=this.nextToken;switch(n){case t.TOKEN.NONE:return null;case t.TOKEN.SQUARED_CLOSE:r=!1;break;case t.TOKEN.COMMA:break;default:var i=this.parseByToken(n);e.push(i)}}return e}},{key:"parseByToken",value:function(e){switch(e){case t.TOKEN.CURLY_OPEN:return this.parseObject();case t.TOKEN.SQUARED_OPEN:return this.parseArray();case t.TOKEN.STRING:return this.parseString();case t.TOKEN.NUMBER:return this.parseNumber();case t.TOKEN.TRUE:return!0;case t.TOKEN.FALSE:return!1;case t.TOKEN.NULL:default:return null}}},{key:"parseString",value:function(){var t="";this.read();for(var e=!0;e&&-1!==this.peek();){var r=this.nextChar;switch(r){case'"':e=!1;break;case"\\":if(-1===this.peek()){e=!1;break}var n=this.nextChar;switch(n){case'"':case"/":case"\\":t+=n;break;case"b":t+="\b";break;case"f":t+="\f";break;case"n":t+="\n";break;case"r":t+="\r";break;case"t":t+="\t";break;case"u":for(var i="",o=0;o<4;o++)i+=this.nextChar;t+=String.fromCharCode(Number.parseInt(i,16))}break;default:t+=r}}return t}},{key:"parseNumber",value:function(){var t=this.nextWord;return-1===t.indexOf(".")?Number.parseInt(t,10)||0:Number.parseFloat(t)||0}},{key:"eatWhitespace",value:function(){for(;-1!==t.WHITE_SPACE.indexOf(this.peekChar)&&(this.read(),-1!==this.peek()););}},{key:"peek",value:function(){return this.position>=this.json.length?-1:this.json.charCodeAt(this.position)}},{key:"read",value:function(){return this.position>=this.json.length?-1:this.json.charCodeAt(this.position++)}},{key:"peekChar",get:function(){var t=this.peek();return-1===t?"\0":String.fromCharCode(t)}},{key:"nextChar",get:function(){var t=this.read();return-1===t?"\0":String.fromCharCode(t)}},{key:"nextWord",get:function(){for(var e="";-1===t.WORD_BREAK.indexOf(this.peekChar)&&(e+=this.nextChar,-1!==this.peek()););return e}},{key:"nextToken",get:function(){if(this.eatWhitespace(),-1===this.peek())return t.TOKEN.NONE;switch(this.peekChar){case'"':return t.TOKEN.STRING;case",":return this.read(),t.TOKEN.COMMA;case"-":case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return t.TOKEN.NUMBER;case":":return t.TOKEN.COLON;case"[":return t.TOKEN.SQUARED_OPEN;case"]":return this.read(),t.TOKEN.SQUARED_CLOSE;case"{":return t.TOKEN.CURLY_OPEN;case"}":return this.read(),t.TOKEN.CURLY_CLOSE;default:switch(this.nextWord){case"false":return t.TOKEN.FALSE;case"true":return t.TOKEN.TRUE;case"null":return t.TOKEN.NULL;default:return t.TOKEN.NONE}}}}])}();A.WHITE_SPACE=" \t\n\r\ufeff",A.WORD_BREAK=' \t\n\r{}[],:"',A.TOKEN={NONE:0,CURLY_OPEN:1,CURLY_CLOSE:2,SQUARED_OPEN:3,SQUARED_CLOSE:4,COLON:5,COMMA:6,STRING:7,NUMBER:8,TRUE:9,FALSE:10,NULL:11};var j=function(){return w((function t(e,r){b(this,t),this.result="",this.indent=0,this.indentStr="",this.replacer=e||null,this.space=r||null,"number"==typeof r?this.indentStr=" ".repeat(Math.min(10,Math.max(0,r))):"string"==typeof r&&(this.indentStr=r.slice(0,10))}),[{key:"serialize",value:function(t){return this.result="",this.serializeValue(t,""),this.result}},{key:"serializeValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";"function"==typeof this.replacer&&(t=this.replacer(e,t)),null==t?this.result+="null":"string"==typeof t?this.serializeString(t):"boolean"==typeof t?this.result+=t.toString():Array.isArray(t)?this.serializeArray(t):"object"===g(t)?this.serializeObject(t):this.serializeOther(t)}},{key:"serializeObject",value:function(t){var e=!0;for(var r in this.result+="{",this.indentStr&&(this.result+="\n",this.indent++),t)if(Object.prototype.hasOwnProperty.call(t,r)){if(Array.isArray(this.replacer)&&!this.replacer.includes(r))continue;e||(this.result+=",",this.indentStr&&(this.result+="\n")),this.indentStr&&(this.result+=this.indentStr.repeat(this.indent)),this.serializeString(r.toString()),this.result+=":",this.indentStr&&(this.result+=" "),this.serializeValue(t[r],r),e=!1}this.indentStr&&(this.result+="\n",this.indent--,this.result+=this.indentStr.repeat(this.indent)),this.result+="}"}},{key:"serializeArray",value:function(t){this.result+="[",this.indentStr&&t.length>0&&(this.result+="\n",this.indent++);for(var e=!0,r=0;r<t.length;r++)e||(this.result+=",",this.indentStr&&(this.result+="\n")),this.indentStr&&(this.result+=this.indentStr.repeat(this.indent)),this.serializeValue(t[r],r.toString()),e=!1;this.indentStr&&t.length>0&&(this.result+="\n",this.indent--,this.result+=this.indentStr.repeat(this.indent)),this.result+="]"}},{key:"serializeString",value:function(t){this.result+='"';var e,r=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return d(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,o=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}(t);try{for(r.s();!(e=r.n()).done;){var n=e.value;switch(n){case"\b":this.result+="\\b";break;case"\t":this.result+="\\t";break;case"\n":this.result+="\\n";break;case"\f":this.result+="\\f";break;case"\r":this.result+="\\r";break;case'"':this.result+='\\"';break;case"\\":this.result+="\\\\";break;default:var i=n.charCodeAt(0);this.result+=i>=32&&i<=126?n:"\\u"+i.toString(16).padStart(4,"0")}}}catch(t){r.e(t)}finally{r.f()}this.result+='"'}},{key:"serializeOther",value:function(t){"number"==typeof t?isFinite(t)?this.result+=t.toString():this.result+="null":this.serializeString(t.toString())}}])}();const T=E;function P(t){return P="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},P(t)}function D(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,x(n.key),n)}}function x(t){var e=function(t){if("object"!=P(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=P(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==P(e)?e:e+""}function N(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(N=function(){return!!t})()}function C(t){return C=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},C(t)}function M(t,e){return M=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},M(t,e)}var R,U;try{R=Buffer.of(239,187,191),U=Buffer.from(",")}catch(t){console.warn("Buffer is not available in current environment, try to use ArrayBufferParser"),R={equals:function(){return!1},subarray:function(){return null}},U={equals:function(){return!1},subarray:function(){return null}}}function I(t){return t.length>=3&&R.equals(t.subarray(0,3))?t.subarray(3):t}function B(t){return I(t).toString("utf-8")}const F=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=C(e),function(t,e){if(e&&("object"==P(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,N()?Reflect.construct(e,r||[],C(t).constructor):e.apply(t,r))}(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&M(t,e)}(e,t),r=e,(n=[{key:"parse",value:function(t){if("string"==typeof t)return T.prototype.parse.call(T.prototype,t);var e=I(t),r=new Uint8Array(e);if(function(t){for(var e="other",r=0;r<t.length;r++){var n=t[r];if("escape"!==e)switch(n){case 34:e="string"===e?"other":"string";break;case 92:"string"===e&&(e="escape");break;case 44:"other"===e&&(e="comma");break;case 93:case 125:default:"comma"===e&&(e="other");break;case 9:case 10:case 11:case 12:case 13:case 32:if((10===n||13===n)&&"string"===e)return!0}else e="string"}return!1}(r))return T.prototype.parse.call(T.prototype,B(e));try{var n=function(t){for(var e=[],r="other",n=0,i=0;i<t.length;i++){var o=t[i];if("escape"!==r)switch(o){case 34:switch(r){case"string":r="other";break;case"comma":e.push(U||new Uint8Array([44]));default:r="string"}break;case 92:"string"===r&&(r="escape");break;case 44:e.push(t.subarray(n,i)),n=i+1,"other"===r&&(r="comma");break;case 93:case 125:"comma"===r&&(r="other");break;case 9:case 10:case 11:case 12:case 13:case 32:break;default:"comma"===r&&(e.push(U||new Uint8Array([44])),r="other")}else r="string"}e.push(t.subarray(n));for(var a=0,s=0,u=e;s<u.length;s++)a+=u[s].length;for(var l=new Uint8Array(a),c=0,f=0,h=e;f<h.length;f++){var p=h[f];l.set(p,c),c+=p.length}return l}(r),i=B(Buffer.from(n));return JSON.parse(i)}catch(t){return T.prototype.parse.call(T.prototype,B(e))}}},{key:"stringify",value:function(t){return JSON.stringify(t)}}])&&D(r.prototype,n),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n}(v);function L(t){return L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},L(t)}function K(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,z(n.key),n)}}function z(t){var e=function(t){if("object"!=L(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=L(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==L(e)?e:e+""}function G(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(G=function(){return!!t})()}function W(t){return W=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},W(t)}function V(t,e){return V=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},V(t,e)}var H=new Uint8Array([239,187,191]),J=new Uint8Array([44]);function Y(t){var e=new Uint8Array(t);return e.length>=3&&e[0]===H[0]&&e[1]===H[1]&&e[2]===H[2]?t.slice(3):t}const Q=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=W(e),function(t,e){if(e&&("object"==L(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,G()?Reflect.construct(e,r||[],W(t).constructor):e.apply(t,r))}(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&V(t,e)}(e,t),r=e,(n=[{key:"parse",value:function(t){return"string"==typeof t?T.prototype.parse.call(T.prototype,t):T.prototype.parse.call(T.prototype,(e=function(t){for(var e=new Uint8Array(t),r=[],n="other",i=0,o=0;o<e.length;o++){var a=e[o];if("escape"==n)n="string";else switch(a){case 34:switch(n){case"string":n="other";break;case"comma":r.push(J);default:n="string"}break;case 92:"string"===n&&(n="escape");break;case 44:r.push(e.subarray(i,o)),i=o+1,"other"===n&&(n="comma");break;case 93:case 125:"comma"===n&&(n="other");break;case 9:case 10:case 11:case 12:case 13:case 32:break;default:"comma"===n&&(r.push(J),n="other")}}r.push(e.subarray(i));for(var s=0,u=0,l=r;u<l.length;u++)s+=l[u].length;for(var c=new Uint8Array(s),f=0,h=0,p=r;h<p.length;h++){var y=p[h];c.set(y,f),f+=y.length}return c.buffer}(Y(t)),r=Y(e),new TextDecoder("utf-8").decode(r)));var e,r}},{key:"stringify",value:function(t){return JSON.stringify(t)}}])&&K(r.prototype,n),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n}(v),q=c;function $(t){return $="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},$(t)}function Z(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"\t",i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1;if("object"!==$(t)||null===t)return JSON.stringify(t);if(Array.isArray(t)){if(t.every((function(t){return"object"!==$(t)||null===t})))return"["+t.map((function(t){return Z(t,0,!1,n,i)})).join(",")+"]";var o=n.repeat(e),a=n.repeat(e+i);return"[\n"+t.map((function(t){return a+X(t,n)})).join(",\n")+"\n"+o+"]"}var s=n.repeat(e),u=Object.keys(t);if(r){var l=n.repeat(i);return"{\n"+u.map((function(e){return l+JSON.stringify(e)+": "+Z(t[e],i,!1,n,i)})).join(",\n")+"\n}"}return"{\n"+u.map((function(r){return s+n.repeat(i)+JSON.stringify(r)+": "+Z(t[r],e+i,!1,n,i)})).join(",\n")+"\n"+s+"}"}function X(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"\t";return"object"!==$(t)||null===t?Z(t,0,!1,e):Array.isArray(t)?"["+t.map((function(t){return X(t,e)})).join(",")+"]":"{"+Object.keys(t).map((function(r){return JSON.stringify(r)+": "+X(t[r],e)})).join(", ")+"}"}const tt=Z;var et,rt={type:"exclude",events:["Flash","SetFilter","SetFilterAdvanced","HallOfMirrors","Bloom","ScalePlanets","ScreenTile","ScreenScroll","ShakeScreen"]},nt={type:"exclude",events:["Hold"]},it={type:"exclude",events:["MoveCamera"]},ot={type:"exclude",events:["AddDecoration","AddText","AddObject","Checkpoint","SetHitsound","PlaySound","SetPlanetRotation","ScalePlanets","ColorTrack","AnimateTrack","RecolorTrack","MoveTrack","PositionTrack","MoveDecorations","SetText","SetObject","SetDefaultText","CustomBackground","Flash","MoveCamera","SetFilter","HallOfMirrors","ShakeScreen","Bloom","ScreenTile","ScreenScroll","SetFrameRate","RepeatEvents","SetConditionalEvents","EditorComment","Bookmark","Hold","SetHoldSound","Hide","ScaleMargin","ScaleRadius"]},at={type:"special",events:["MoveDecorations","SetText","SetObject","SetDefaultText"]};!function(t){t.include="include",t.exclude="exclude",t.special="special"}(et||(et={}));const st=function(t){if(!Array.isArray(t))throw new Error("Arguments are not supported.");return t.map((function(t){var e=Object.assign({},t);return e.hasOwnProperty("addDecorations")&&(e.addDecorations=[]),Array.isArray(e.actions)&&(e.actions=e.actions.filter((function(t){return!at.events.includes(t.eventType)}))),e}))},ut=function(t,e){return e.map((function(e){var r=Object.assign({},e);return Array.isArray(e.actions)&&(r.actions=e.actions.filter((function(e){return!t.includes(e.eventType)}))),r}))},lt=function(t,e){return e.map((function(e){var r=Object.assign({},e);return Array.isArray(e.actions)&&(r.actions=e.actions.filter((function(e){return t.includes(e.eventType)}))),r}))},ct={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let ft;const ht=new Uint8Array(16),pt=[];for(let t=0;t<256;++t)pt.push((t+256).toString(16).slice(1));function yt(t,e,r){const n=(t=t||{}).random??t.rng?.()??function(){if(!ft){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");ft=crypto.getRandomValues.bind(crypto)}return ft(ht)}();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,e){if((r=r||0)<0||r+16>e.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let t=0;t<16;++t)e[r+t]=n[t];return e}return function(t,e=0){return(pt[t[e+0]]+pt[t[e+1]]+pt[t[e+2]]+pt[t[e+3]]+"-"+pt[t[e+4]]+pt[t[e+5]]+"-"+pt[t[e+6]]+pt[t[e+7]]+"-"+pt[t[e+8]]+pt[t[e+9]]+"-"+pt[t[e+10]]+pt[t[e+11]]+pt[t[e+12]]+pt[t[e+13]]+pt[t[e+14]]+pt[t[e+15]]).toLowerCase()}(n)}function vt(){vt=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function u(t,e,r,n){return Object.defineProperty(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n})}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function l(e,r,n,i){var o=r&&r.prototype instanceof h?r:h,a=Object.create(o.prototype);return u(a,"_invoke",function(e,r,n){var i=1;return function(o,a){if(3===i)throw Error("Generator is already running");if(4===i){if("throw"===o)throw a;return{value:t,done:!0}}for(n.method=o,n.arg=a;;){var s=n.delegate;if(s){var u=O(s,n);if(u){if(u===f)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(1===i)throw i=4,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=3;var l=c(e,r,n);if("normal"===l.type){if(i=n.done?4:2,l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(i=4,n.method="throw",n.arg=l.arg)}}}(e,n,new k(i||[])),!0),a}function c(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var f={};function h(){}function p(){}function y(){}var v={};u(v,o,(function(){return this}));var d=Object.getPrototypeOf,g=d&&d(d(E([])));g&&g!==r&&n.call(g,o)&&(v=g);var b=y.prototype=h.prototype=Object.create(v);function m(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function r(i,o,a,s){var u=c(t[i],t,o);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==dt(f)&&n.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,a,s)}),(function(t){r("throw",t,a,s)})):e.resolve(f).then((function(t){l.value=t,a(l)}),(function(t){return r("throw",t,a,s)}))}s(u.arg)}var i;u(this,"_invoke",(function(t,n){function o(){return new e((function(e,i){r(t,n,e,i)}))}return i=i?i.then(o,o):o()}),!0)}function O(e,r){var n=r.method,i=e.i[n];if(i===t)return r.delegate=null,"throw"===n&&e.i.return&&(r.method="return",r.arg=t,O(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=c(i,e.i,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,f;var a=o.arg;return a?a.done?(r[e.r]=a.value,r.next=e.n,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,f):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,f)}function S(t){this.tryEntries.push(t)}function _(e){var r=e[4]||{};r.type="normal",r.arg=t,e[4]=r}function k(t){this.tryEntries=[[-1]],t.forEach(S,this),this.reset(!0)}function E(e){if(null!=e){var r=e[o];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,a=function r(){for(;++i<e.length;)if(n.call(e,i))return r.value=e[i],r.done=!1,r;return r.value=t,r.done=!0,r};return a.next=a}}throw new TypeError(dt(e)+" is not iterable")}return p.prototype=y,u(b,"constructor",y),u(y,"constructor",p),p.displayName=u(y,s,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,y):(t.__proto__=y,u(t,s,"GeneratorFunction")),t.prototype=Object.create(b),t},e.awrap=function(t){return{__await:t}},m(w.prototype),u(w.prototype,a,(function(){return this})),e.AsyncIterator=w,e.async=function(t,r,n,i,o){void 0===o&&(o=Promise);var a=new w(l(t,r,n,i),o);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},m(b),u(b,s,"Generator"),u(b,o,(function(){return this})),u(b,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.unshift(n);return function t(){for(;r.length;)if((n=r.pop())in e)return t.value=n,t.done=!1,t;return t.done=!0,t}},e.values=E,k.prototype={constructor:k,reset:function(e){if(this.prev=this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(_),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0][4];if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function n(t){a.type="throw",a.arg=e,r.next=t}for(var i=r.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],a=o[4],s=this.prev,u=o[1],l=o[2];if(-1===o[0])return n("end"),!1;if(!u&&!l)throw Error("try statement without catch or finally");if(null!=o[0]&&o[0]<=s){if(s<u)return this.method="next",this.arg=t,n(u),!0;if(s<l)return n(l),!1}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n[0]>-1&&n[0]<=this.prev&&this.prev<n[2]){var i=n;break}}i&&("break"===t||"continue"===t)&&i[0]<=e&&e<=i[2]&&(i=null);var o=i?i[4]:{};return o.type=t,o.arg=e,i?(this.method="next",this.next=i[2],f):this.complete(o)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r[2]===t)return this.complete(r[4],r[3]),_(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r[0]===t){var n=r[4];if("throw"===n.type){var i=n.arg;_(r)}return i}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={i:E(e),r,n},"next"===this.method&&(this.arg=t),f}},e}function dt(t){return dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},dt(t)}function gt(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=bt(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,o=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function bt(t,e){if(t){if("string"==typeof t)return mt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?mt(t,e):void 0}}function mt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function wt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Ot(n.key),n)}}function Ot(t){var e=function(t){if("object"!=dt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=dt(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==dt(e)?e:e+""}var St=function(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]])}return r},_t=function(){return t=function t(e,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this._precomputedEvents=null,this._precomputeMode=!1,this._lightweightData=null,this._events=new Map,this.guidCallbacks=new Map,this._options=e,this._provider=r},e=[{key:"generateGUID",value:function(){return"event_".concat(!ct.randomUUID||e||t?yt(t,e,r):ct.randomUUID());var t,e,r}},{key:"_emitProgress",value:function(t,e,r,n){var i={stage:t,current:e,total:r,percent:r>0?Math.round(e/r*100):0,data:n};this._precomputeMode&&this._precomputedEvents?this._precomputedEvents[t].push(i):(this.trigger("parse:progress",i),this.trigger("parse:".concat(t),i))}},{key:"enablePrecomputeMode",value:function(){this._precomputeMode=!0,this._precomputedEvents={start:[],pathData:[],angleData:[],relativeAngle:[],tilePosition:[],complete:[]}}},{key:"disablePrecomputeMode",value:function(){this._precomputeMode=!1}},{key:"getPrecomputedEvents",value:function(){return this._precomputedEvents}},{key:"clearPrecomputedEvents",value:function(){this._precomputedEvents=null}},{key:"getEventsAtPercent",value:function(t,e){if(!this._precomputedEvents)return[];for(var r=[],n=0,i=e?[e]:["start","pathData","angleData","relativeAngle","tilePosition","complete"];n<i.length;n++){var o,a=i[n],s=gt(this._precomputedEvents[a]);try{for(s.s();!(o=s.n()).done;){var u=o.value;if(u.percent<=t&&(0===r.length||r[r.length-1].percent<=u.percent)){var l=r[r.length-1];l&&l.stage===u.stage&&l.current===u.current||r.push(u)}}}catch(t){s.e(t)}finally{s.f()}}return r}},{key:"getPrecomputedEventCount",value:function(t){return this._precomputedEvents?t?this._precomputedEvents[t].length:Object.values(this._precomputedEvents).reduce((function(t,e){return t+e.length}),0):0}},{key:"getLightweightData",value:function(){return this._lightweightData}},{key:"precomputeLightweight",value:function(){for(var t,e,r,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.tiles.length,o=new Array(i),a=n?[]:new Array(i),s=new Array(i),u=0;u<i;u++){var l=this.tiles[u];o[u]=null!==(t=l.angle)&&void 0!==t?t:0,s[u]=(null!==(e=l.twirl)&&void 0!==e?e:0)%2==1}if(!n){var c,f=[0,0],h=this.angleData,p=new Map,y=gt(this.actions);try{for(y.s();!(c=y.n()).done;){var v=c.value;"PositionTrack"===v.eventType&&v.positionOffset&&!0!==v.editorOnly&&"Enabled"!==v.editorOnly&&p.set(v.floor,v)}}catch(t){y.e(t)}finally{y.f()}for(var d=0;d<i;d++){var g=p.get(d);(null==g?void 0:g.positionOffset)&&(f[0]+=g.positionOffset[0],f[1]+=g.positionOffset[1]),a[d]=[f[0],f[1]];var b=(999===h[d]?(null!==(r=h[d-1])&&void 0!==r?r:0)+180:h[d])*Math.PI/180;f[0]+=Math.cos(b),f[1]+=Math.sin(b)}}return this._lightweightData={totalTiles:i,angles:o,positions:a,twirlFlags:s,computed:!0},this._lightweightData}},{key:"getLightweightDataRange",value:function(t,e){if(!this._lightweightData)return null;var r=Math.min(t+e,this._lightweightData.totalTiles);return{angles:this._lightweightData.angles.slice(t,r),positions:this._lightweightData.positions.slice(t,r),twirlFlags:this._lightweightData.twirlFlags.slice(t,r)}}},{key:"clearLightweightData",value:function(){this._lightweightData=null}},{key:"getTileRenderData",value:function(t){var e,r;if(t<0||t>=this.tiles.length)return null;var n=this.tiles[t];return{angle:null!==(e=n.angle)&&void 0!==e?e:0,position:n.position?[n.position[0],n.position[1]]:null,hasTwirl:(null!==(r=n.twirl)&&void 0!==r?r:0)%2==1}}},{key:"load",value:function(){var t=this;return new Promise((function(e,r){var n,i=t._options;switch(t._emitProgress("start",0,0),dt(i)){case"string":try{n=q.parseAsObject(i,t._provider)}catch(t){return void r(t)}break;case"object":n=Object.assign({},i);break;default:return void r("Options must be String or Object")}var o=n&&"object"===dt(n)&&null!==n&&void 0!==n.pathData,s=n&&"object"===dt(n)&&null!==n&&void 0!==n.angleData;if(o){var u=n.pathData;t._emitProgress("pathData",0,u.length,{source:u}),t.angleData=a.parseToangleData(u),t._emitProgress("pathData",u.length,u.length,{source:u,processed:t.angleData})}else{if(!s)return void r("There is not any angle datas.");t.angleData=n.angleData,t._emitProgress("angleData",t.angleData.length,t.angleData.length,{processed:t.angleData})}n&&"object"===dt(n)&&null!==n&&Array.isArray(n.actions)?t.actions=n.actions:t.actions=[],n&&"object"===dt(n)&&null!==n&&void 0!==n.settings?(t.settings=n.settings,n&&"object"===dt(n)&&null!==n&&Array.isArray(n.decorations)?t.__decorations=n.decorations:t.__decorations=[],t.tiles=[],t._angleDir=-180,t._twirlCount=0,t._createArray(t.angleData.length,{angleData:t.angleData,actions:t.actions,decorations:t.__decorations}).then((function(r){t.tiles=r,t._emitProgress("complete",t.angleData.length,t.angleData.length),t.trigger("load",t),e(!0)})).catch((function(t){r(t)}))):r("There is no ADOFAI settings.")}))}},{key:"on",value:function(t,e){this._events.has(t)||this._events.set(t,[]);var r=this.generateGUID();return this._events.get(t).push({guid:r,callback:e}),this.guidCallbacks.set(r,{eventName:t,callback:e}),r}},{key:"trigger",value:function(t,e){this._events.has(t)&&this._events.get(t).forEach((function(t){return(0,t.callback)(e)}))}},{key:"off",value:function(t){if(this.guidCallbacks.has(t)){var e=this.guidCallbacks.get(t).eventName;if(this.guidCallbacks.delete(t),this._events.has(e)){var r=this._events.get(e),n=r.findIndex((function(e){return e.guid===t}));-1!==n&&r.splice(n,1)}}}},{key:"_createArray",value:function(t,e){return r=this,n=void 0,i=void 0,o=vt().mark((function r(){var n,i,o,a,s,u;return vt().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:n=[],i=Math.max(1,Math.floor(t/100)),o=0;case 3:if(!(o<t)){r.next=16;break}if(a=this._filterByFloor(e.actions,o),s=this._parseAngle(e.angleData,o,this._twirlCount%2),u={direction:e.angleData[o],_lastdir:e.angleData[o-1]||0,actions:a,angle:s,addDecorations:this._filterByFloorwithDeco(e.decorations,o),twirl:this._twirlCount,extraProps:{}},n.push(u),o%i!==0&&o!==t-1){r.next=13;break}if(this._emitProgress("relativeAngle",o+1,t,{tileIndex:o,angle:e.angleData[o],relativeAngle:s}),o%(10*i)!=0){r.next=13;break}return r.next=13,new Promise((function(t){return setTimeout(t,0)}));case 13:o++,r.next=3;break;case 16:return r.abrupt("return",n);case 17:case"end":return r.stop()}}),r,this)})),new(i||(i=Promise))((function(t,e){function a(t){try{u(o.next(t))}catch(t){e(t)}}function s(t){try{u(o.throw(t))}catch(t){e(t)}}function u(e){var r;e.done?t(e.value):(r=e.value,r instanceof i?r:new i((function(t){t(r)}))).then(a,s)}u((o=o.apply(r,n||[])).next())}));var r,n,i,o}},{key:"_changeAngle",value:function(){var t=this,e=0;return this.tiles.map((function(r){return e++,r.angle=t._parsechangedAngle(r.direction,e,r.twirl,r._lastdir),r}))}},{key:"_normalizeAngle",value:function(t){return(t%360+360)%360}},{key:"_parsechangedAngle",value:function(t,e,r,n){var i=0;if(0===e&&(this._angleDir=180),999===t)this._angleDir=this._normalizeAngle(n),isNaN(this._angleDir)&&(this._angleDir=0),i=0;else{var o=this._normalizeAngle(this._angleDir-t);0===(i=0===r?o:this._normalizeAngle(360-o))&&(i=360),this._angleDir=this._normalizeAngle(t+180)}return i}},{key:"_filterByFloor",value:function(t,e){if(!Array.isArray(t))return[];var r=t.filter((function(t){return t.floor===e}));return this._twirlCount+=r.filter((function(t){return"Twirl"===t.eventType})).length,r.map((function(t){return t.floor,St(t,["floor"])}))}},{key:"_flattenAngleDatas",value:function(t){return t.map((function(t){return t.direction}))}},{key:"_flattenActionsWithFloor",value:function(t){return t.flatMap((function(t,e){return(Array.isArray(null==t?void 0:t.actions)?t.actions:[]).map((function(t){t.floor;var r=St(t,["floor"]);return Object.assign({floor:e},r)}))}))}},{key:"_filterByFloorwithDeco",value:function(t,e){return Array.isArray(t)?t.filter((function(t){return t.floor===e})).map((function(t){return t.floor,St(t,["floor"])})):[]}},{key:"_flattenDecorationsWithFloor",value:function(t){return t.flatMap((function(t,e){return(Array.isArray(null==t?void 0:t.addDecorations)?t.addDecorations:[]).map((function(t){t.floor;var r=St(t,["floor"]);return Object.assign({floor:e},r)}))}))}},{key:"_parseAngle",value:function(t,e,r){var n=0;if(0===e&&(this._angleDir=180),999===t[e])this._angleDir=this._normalizeAngle(t[e-1]),isNaN(this._angleDir)&&(this._angleDir=0),n=0;else{var i=this._normalizeAngle(this._angleDir-t[e]);0===(n=0===r?i:this._normalizeAngle(360-i))&&(n=360),this._angleDir=this._normalizeAngle(t[e]+180)}return n}},{key:"filterActionsByEventType",value:function(t){return Object.entries(this.tiles).flatMap((function(t){var e=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,o,a,s=[],u=!0,l=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,i=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw i}}return s}}(t,e)||bt(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t,2),r=e[0],n=e[1];return(Array.isArray(n.actions)?n.actions:[]).map((function(t){return{b:t,index:r}}))})).filter((function(e){return e.b.eventType===t})).map((function(t){var e=t.b,r=t.index;return{index:Number(r),action:e}}))}},{key:"getActionsByIndex",value:function(t,e){var r=this.filterActionsByEventType(t).filter((function(t){return t.index===e}));return{count:r.length,actions:r.map((function(t){return t.action}))}}},{key:"calculateTileCoordinates",value:function(){console.warn("calculateTileCoordinates is deprecated. Use calculateTilePosition instead.")}},{key:"calculateTilePosition",value:function(){var t,e=this.angleData,r=this.tiles.length,n=[],i=[0,0],o=new Map,a=gt(this.actions);try{for(a.s();!(t=a.n()).done;){var s=t.value;"PositionTrack"===s.eventType&&s.positionOffset&&!0!==s.editorOnly&&"Enabled"!==s.editorOnly&&o.set(s.floor,s)}}catch(t){a.e(t)}finally{a.f()}this._emitProgress("tilePosition",0,r);for(var u=new Array(r),l=0;l<r;l++)u[l]=999===e[l]?e[l-1]+180:e[l];for(var c=Math.max(100,Math.floor(r/100)),f=0;f<=r;f++){var h=f===r,p=h?u[f-1]||0:u[f],y=0===f?0:u[f-1]||0,v=this.tiles[f],d=o.get(f);(null==d?void 0:d.positionOffset)&&(i[0]+=d.positionOffset[0],i[1]+=d.positionOffset[1]);var g=[i[0],i[1]];n.push(g),v&&(v.position=g,v.extraProps.angle1=p,v.extraProps.angle2=y-180,v.extraProps.cangle=h?u[f-1]+180:u[f]);var b=p*Math.PI/180;i[0]+=Math.cos(b),i[1]+=Math.sin(b),(f%c===0||h)&&this._emitProgress("tilePosition",f,r,{tileIndex:f,position:[g[0],g[1]],angle:p})}return this._emitProgress("tilePosition",r,r,{processed:n.flat()}),n}},{key:"floorOperation",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{type:"append",direction:0};switch(t.type){case"append":this.appendFloor(t);break;case"insert":"number"==typeof t.id&&this.tiles.splice(t.id,0,{direction:t.direction||0,angle:0,actions:[],addDecorations:[],_lastdir:this.tiles[t.id-1].direction,twirl:this.tiles[t.id-1].twirl});break;case"delete":"number"==typeof t.id&&this.tiles.splice(t.id,1)}this._changeAngle()}},{key:"appendFloor",value:function(t){this.tiles.push({direction:t.direction,angle:0,actions:[],addDecorations:[],_lastdir:this.tiles[this.tiles.length-1].direction,twirl:this.tiles[this.tiles.length-1].twirl,extraProps:{}}),this._changeAngle()}},{key:"clearDeco",value:function(){return this.tiles=st(this.tiles),!0}},{key:"clearEffect",value:function(t){this.clearEvent(n[t])}},{key:"clearEvent",value:function(t){t.type==et.include?this.tiles=lt(t.events,this.tiles):t.type==et.exclude&&(this.tiles=ut(t.events,this.tiles))}},{key:"export",value:function(t,e){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0,o={angleData:this._flattenAngleDatas(this.tiles),settings:this.settings,actions:this._flattenActionsWithFloor(this.tiles),decorations:this._flattenDecorationsWithFloor(this.tiles)};return"object"===t?o:tt(o,e,r,n,i)}}],e&&wt(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();return e})()));
2
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ADOFAI=e():t.ADOFAI=e()}(globalThis,()=>(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{Level:()=>_t,Parsers:()=>r,Presets:()=>n,Structure:()=>i,pathData:()=>a});var r={};t.r(r),t.d(r,{ArrayBufferParser:()=>Y,BufferParser:()=>E,StringParser:()=>B,default:()=>$});var n={};t.r(n),t.d(n,{preset_inner_no_deco:()=>at,preset_noeffect:()=>rt,preset_noeffect_completely:()=>ot,preset_noholds:()=>nt,preset_nomovecamera:()=>it});var i={};t.r(i),t.d(i,{default:()=>_t});var o={R:0,p:15,J:30,E:45,T:60,o:75,U:90,q:105,G:120,Q:135,H:150,W:165,L:180,x:195,N:210,Z:225,F:240,V:255,D:270,Y:285,B:300,C:315,M:330,A:345,5:555,6:666,7:777,8:888,"!":999};const a={pathDataTable:o,parseToangleData:function(t){return Array.from(t).map(function(t){return o[t]})}};function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function u(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,l(n.key),n)}}function l(t){var e=function(t){if("object"!=s(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=s(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==s(e)?e:e+""}const c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,r=[{key:"parseError",value:function(t){return t}},{key:"parseAsObject",value:function(e,r){return(r||JSON).parse(t.parseAsText(e))}},{key:"parseAsText",value:function(t){return this.parseError(t)}}],null&&u(e.prototype,null),r&&u(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r}();function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function h(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,y(n.key),n)}}function p(t,e,r){return e&&h(t.prototype,e),r&&h(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function y(t){var e=function(t){if("object"!=f(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=f(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==f(e)?e:e+""}const v=p(function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)});function d(t){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},d(t)}function b(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function g(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,O(n.key),n)}}function m(t,e,r){return e&&g(t.prototype,e),r&&g(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function O(t){var e=function(t){if("object"!=d(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=d(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==d(e)?e:e+""}function S(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(S=function(){return!!t})()}function k(t){return k=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},k(t)}function w(t,e){return w=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},w(t,e)}var _=function(t){function e(){return b(this,e),t=this,n=arguments,r=k(r=e),function(t,e){if(e&&("object"==d(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,S()?Reflect.construct(r,n||[],k(t).constructor):r.apply(t,n));var t,r,n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&w(t,e)}(e,t),m(e,[{key:"parse",value:function(t){var e,r;return e="string"==typeof t?(new TextEncoder).encode(t):(r=t).length>=3&&239===r[0]&&187===r[1]&&191===r[2]?r.subarray(3):r,new A(e).parseValue()}},{key:"stringify",value:function(t){return JSON.stringify(t)}}])}(v),A=function(){return m(function t(e){b(this,t),this.data=e,this.pos=0,this.decoder=new TextDecoder("utf-8"),this.length=e.length},[{key:"parseValue",value:function(){this.eatWhitespace();var t=this.peek();if(-1===t)return null;switch(t){case 123:return this.parseObject();case 91:return this.parseArray();case 34:return this.parseString();case 116:return this.parseKeyword(!0);case 102:return this.parseKeyword(!1);case 110:return this.parseKeyword(null);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.parseNumber();default:return this.pos++,null}}},{key:"parseObject",value:function(){var t={};for(this.pos++;;){if(this.eatWhitespace(),125===this.peek()){this.pos++;break}var e=this.parseString();if(this.eatWhitespace(),58!==this.peek())break;this.pos++,t[e]=this.parseValue(),this.eatWhitespace(),44===this.peek()&&this.pos++}return t}},{key:"parseArray",value:function(){var t=[];for(this.pos++;;){if(this.eatWhitespace(),93===this.peek()){this.pos++;break}t.push(this.parseValue()),this.eatWhitespace(),44===this.peek()&&this.pos++}return t}},{key:"parseString",value:function(){this.pos++;for(var t=this.pos,e=!1;this.pos<this.length;){var r=this.data[this.pos];if(34===r)break;92===r?(e=!0,this.pos+=2):this.pos++}var n=this.pos;this.pos++;var i=this.data.subarray(t,n);return e?this.processEscapes(i):this.decoder.decode(i)}},{key:"processEscapes",value:function(t){for(var e=this.decoder.decode(t),r="",n=0;n<e.length;n++)if("\\"===e[n]&&n+1<e.length){var i=e[++n];switch(i){case'"':case"\\":case"/":r+=i;break;case"b":r+="\b";break;case"f":r+="\f";break;case"n":r+="\n";break;case"r":r+="\r";break;case"t":r+="\t";break;case"u":r+=String.fromCharCode(parseInt(e.substr(n+1,4),16)),n+=4}}else r+=e[n];return r}},{key:"parseNumber",value:function(){for(var t=this.pos;this.pos<this.length;){var e=this.data[this.pos];if(!(e>=48&&e<=57||46===e||101===e||69===e||43===e||45===e))break;this.pos++}var r=this.decoder.decode(this.data.subarray(t,this.pos));return parseFloat(r)}},{key:"parseKeyword",value:function(t){var e=this.data[this.pos];return 116===e?this.pos+=4:102===e?this.pos+=5:110===e&&(this.pos+=4),t}},{key:"eatWhitespace",value:function(){for(;this.pos<this.length;){var t=this.data[this.pos];if(32!==t&&10!==t&&13!==t&&9!==t)break;this.pos++}}},{key:"peek",value:function(){return this.pos<this.length?this.data[this.pos]:-1}}])}();const E=_;function j(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function T(t){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},T(t)}function P(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function D(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,C(n.key),n)}}function N(t,e,r){return e&&D(t.prototype,e),r&&D(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function C(t){var e=function(t){if("object"!=T(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=T(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==T(e)?e:e+""}function x(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(x=function(){return!!t})()}function M(t){return M=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},M(t)}function R(t,e){return R=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},R(t,e)}var U=function(t){function e(){return P(this,e),t=this,n=arguments,r=M(r=e),function(t,e){if(e&&("object"==T(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,x()?Reflect.construct(r,n||[],M(t).constructor):r.apply(t,n));var t,r,n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&R(t,e)}(e,t),N(e,[{key:"parse",value:function(t,r){if(null==t)return null;var n=new I(t).parseValue();return"function"==typeof r?e._applyReviver("",n,r):n}},{key:"stringify",value:function(t,e,r){return new K(e,r).serialize(t)}}],[{key:"_applyReviver",value:function(t,r,n){if(r&&"object"===T(r))if(Array.isArray(r))for(var i=0;i<r.length;i++)r[i]=e._applyReviver(i.toString(),r[i],n);else for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(r[o]=e._applyReviver(o,r[o],n));return n(t,r)}}])}(v),I=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;P(this,t),this.json=e,this.position=0,this.endSection=r,65279===this.peek()&&this.read()}return N(t,[{key:"parseValue",value:function(){return this.parseByToken(this.nextToken)}},{key:"parseObject",value:function(){var e={};for(this.read();;){var r=void 0;do{if((r=this.nextToken)===t.TOKEN.NONE)return null;if(r===t.TOKEN.CURLY_CLOSE)return e}while(r===t.TOKEN.COMMA);var n=this.parseString();if(null===n)return null;if(this.nextToken!==t.TOKEN.COLON)return null;if(null!=this.endSection&&n===this.endSection)return e;this.read(),e[n]=this.parseValue()}}},{key:"parseArray",value:function(){var e=[];this.read();for(var r=!0;r;){var n=this.nextToken;switch(n){case t.TOKEN.NONE:return null;case t.TOKEN.SQUARED_CLOSE:r=!1;break;case t.TOKEN.COMMA:break;default:var i=this.parseByToken(n);e.push(i)}}return e}},{key:"parseByToken",value:function(e){switch(e){case t.TOKEN.CURLY_OPEN:return this.parseObject();case t.TOKEN.SQUARED_OPEN:return this.parseArray();case t.TOKEN.STRING:return this.parseString();case t.TOKEN.NUMBER:return this.parseNumber();case t.TOKEN.TRUE:return!0;case t.TOKEN.FALSE:return!1;case t.TOKEN.NULL:default:return null}}},{key:"parseString",value:function(){var t="";this.read();for(var e=!0;e&&-1!==this.peek();){var r=this.nextChar;switch(r){case'"':e=!1;break;case"\\":if(-1===this.peek()){e=!1;break}var n=this.nextChar;switch(n){case'"':case"/":case"\\":t+=n;break;case"b":t+="\b";break;case"f":t+="\f";break;case"n":t+="\n";break;case"r":t+="\r";break;case"t":t+="\t";break;case"u":for(var i="",o=0;o<4;o++)i+=this.nextChar;t+=String.fromCharCode(Number.parseInt(i,16))}break;default:t+=r}}return t}},{key:"parseNumber",value:function(){var t=this.nextWord;return-1===t.indexOf(".")?Number.parseInt(t,10)||0:Number.parseFloat(t)||0}},{key:"eatWhitespace",value:function(){for(;-1!==t.WHITE_SPACE.indexOf(this.peekChar)&&(this.read(),-1!==this.peek()););}},{key:"peek",value:function(){return this.position>=this.json.length?-1:this.json.charCodeAt(this.position)}},{key:"read",value:function(){return this.position>=this.json.length?-1:this.json.charCodeAt(this.position++)}},{key:"peekChar",get:function(){var t=this.peek();return-1===t?"\0":String.fromCharCode(t)}},{key:"nextChar",get:function(){var t=this.read();return-1===t?"\0":String.fromCharCode(t)}},{key:"nextWord",get:function(){for(var e="";-1===t.WORD_BREAK.indexOf(this.peekChar)&&(e+=this.nextChar,-1!==this.peek()););return e}},{key:"nextToken",get:function(){if(this.eatWhitespace(),-1===this.peek())return t.TOKEN.NONE;switch(this.peekChar){case'"':return t.TOKEN.STRING;case",":return this.read(),t.TOKEN.COMMA;case"-":case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return t.TOKEN.NUMBER;case":":return t.TOKEN.COLON;case"[":return t.TOKEN.SQUARED_OPEN;case"]":return this.read(),t.TOKEN.SQUARED_CLOSE;case"{":return t.TOKEN.CURLY_OPEN;case"}":return this.read(),t.TOKEN.CURLY_CLOSE;default:switch(this.nextWord){case"false":return t.TOKEN.FALSE;case"true":return t.TOKEN.TRUE;case"null":return t.TOKEN.NULL;default:return t.TOKEN.NONE}}}}])}();I.WHITE_SPACE=" \t\n\r\ufeff",I.WORD_BREAK=' \t\n\r{}[],:"',I.TOKEN={NONE:0,CURLY_OPEN:1,CURLY_CLOSE:2,SQUARED_OPEN:3,SQUARED_CLOSE:4,COLON:5,COMMA:6,STRING:7,NUMBER:8,TRUE:9,FALSE:10,NULL:11};var K=function(){return N(function t(e,r){P(this,t),this.result="",this.indent=0,this.indentStr="",this.replacer=e||null,this.space=r||null,"number"==typeof r?this.indentStr=" ".repeat(Math.min(10,Math.max(0,r))):"string"==typeof r&&(this.indentStr=r.slice(0,10))},[{key:"serialize",value:function(t){return this.result="",this.serializeValue(t,""),this.result}},{key:"serializeValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";"function"==typeof this.replacer&&(t=this.replacer(e,t)),null==t?this.result+="null":"string"==typeof t?this.serializeString(t):"boolean"==typeof t?this.result+=t.toString():Array.isArray(t)?this.serializeArray(t):"object"===T(t)?this.serializeObject(t):this.serializeOther(t)}},{key:"serializeObject",value:function(t){var e=!0;for(var r in this.result+="{",this.indentStr&&(this.result+="\n",this.indent++),t)if(Object.prototype.hasOwnProperty.call(t,r)){if(Array.isArray(this.replacer)&&!this.replacer.includes(r))continue;e||(this.result+=",",this.indentStr&&(this.result+="\n")),this.indentStr&&(this.result+=this.indentStr.repeat(this.indent)),this.serializeString(r.toString()),this.result+=":",this.indentStr&&(this.result+=" "),this.serializeValue(t[r],r),e=!1}this.indentStr&&(this.result+="\n",this.indent--,this.result+=this.indentStr.repeat(this.indent)),this.result+="}"}},{key:"serializeArray",value:function(t){this.result+="[",this.indentStr&&t.length>0&&(this.result+="\n",this.indent++);for(var e=!0,r=0;r<t.length;r++)e||(this.result+=",",this.indentStr&&(this.result+="\n")),this.indentStr&&(this.result+=this.indentStr.repeat(this.indent)),this.serializeValue(t[r],r.toString()),e=!1;this.indentStr&&t.length>0&&(this.result+="\n",this.indent--,this.result+=this.indentStr.repeat(this.indent)),this.result+="]"}},{key:"serializeString",value:function(t){this.result+='"';var e,r=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return j(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?j(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,o=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}(t);try{for(r.s();!(e=r.n()).done;){var n=e.value;switch(n){case"\b":this.result+="\\b";break;case"\t":this.result+="\\t";break;case"\n":this.result+="\\n";break;case"\f":this.result+="\\f";break;case"\r":this.result+="\\r";break;case'"':this.result+='\\"';break;case"\\":this.result+="\\\\";break;default:var i=n.charCodeAt(0);this.result+=i>=32&&i<=126?n:"\\u"+i.toString(16).padStart(4,"0")}}}catch(t){r.e(t)}finally{r.f()}this.result+='"'}},{key:"serializeOther",value:function(t){"number"==typeof t?isFinite(t)?this.result+=t.toString():this.result+="null":this.serializeString(t.toString())}}])}();const B=U;function L(t){return L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},L(t)}function F(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,z(n.key),n)}}function z(t){var e=function(t){if("object"!=L(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=L(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==L(e)?e:e+""}function W(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(W=function(){return!!t})()}function V(t){return V=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},V(t)}function G(t,e){return G=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},G(t,e)}var H=new Uint8Array([239,187,191]),J=new Uint8Array([44]);function Q(t){var e=new Uint8Array(t);return e.length>=3&&e[0]===H[0]&&e[1]===H[1]&&e[2]===H[2]?t.slice(3):t}const Y=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=V(e),function(t,e){if(e&&("object"==L(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,W()?Reflect.construct(e,r||[],V(t).constructor):e.apply(t,r))}(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&G(t,e)}(e,t),r=e,(n=[{key:"parse",value:function(t){return"string"==typeof t?B.prototype.parse.call(B.prototype,t):B.prototype.parse.call(B.prototype,(e=function(t){for(var e=new Uint8Array(t),r=[],n="other",i=0,o=0;o<e.length;o++){var a=e[o];if("escape"==n)n="string";else switch(a){case 34:switch(n){case"string":n="other";break;case"comma":r.push(J);default:n="string"}break;case 92:"string"===n&&(n="escape");break;case 44:r.push(e.subarray(i,o)),i=o+1,"other"===n&&(n="comma");break;case 93:case 125:"comma"===n&&(n="other");break;case 9:case 10:case 11:case 12:case 13:case 32:break;default:"comma"===n&&(r.push(J),n="other")}}r.push(e.subarray(i));for(var s=0,u=0,l=r;u<l.length;u++)s+=l[u].length;for(var c=new Uint8Array(s),f=0,h=0,p=r;h<p.length;h++){var y=p[h];c.set(y,f),f+=y.length}return c.buffer}(Q(t)),r=Q(e),new TextDecoder("utf-8").decode(r)));var e,r}},{key:"stringify",value:function(t){return JSON.stringify(t)}}])&&F(r.prototype,n),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n}(v),$=c;function q(t){return q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},q(t)}function Z(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"\t",i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1;if("object"!==q(t)||null===t)return JSON.stringify(t);if(Array.isArray(t)){if(t.every(function(t){return"object"!==q(t)||null===t}))return"["+t.map(function(t){return Z(t,0,!1,n,i)}).join(",")+"]";var o=n.repeat(e),a=n.repeat(e+i);return"[\n"+t.map(function(t){return a+X(t,n)}).join(",\n")+"\n"+o+"]"}var s=n.repeat(e),u=Object.keys(t);if(r){var l=n.repeat(i);return"{\n"+u.map(function(e){return l+JSON.stringify(e)+": "+Z(t[e],i,!1,n,i)}).join(",\n")+"\n}"}return"{\n"+u.map(function(r){return s+n.repeat(i)+JSON.stringify(r)+": "+Z(t[r],e+i,!1,n,i)}).join(",\n")+"\n"+s+"}"}function X(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"\t";return"object"!==q(t)||null===t?Z(t,0,!1,e):Array.isArray(t)?"["+t.map(function(t){return X(t,e)}).join(",")+"]":"{"+Object.keys(t).map(function(r){return JSON.stringify(r)+": "+X(t[r],e)}).join(", ")+"}"}const tt=Z;var et,rt={type:"exclude",events:["Flash","SetFilter","SetFilterAdvanced","HallOfMirrors","Bloom","ScalePlanets","ScreenTile","ScreenScroll","ShakeScreen"]},nt={type:"exclude",events:["Hold"]},it={type:"exclude",events:["MoveCamera"]},ot={type:"exclude",events:["AddDecoration","AddText","AddObject","Checkpoint","SetHitsound","PlaySound","SetPlanetRotation","ScalePlanets","ColorTrack","AnimateTrack","RecolorTrack","MoveTrack","PositionTrack","MoveDecorations","SetText","SetObject","SetDefaultText","CustomBackground","Flash","MoveCamera","SetFilter","HallOfMirrors","ShakeScreen","Bloom","ScreenTile","ScreenScroll","SetFrameRate","RepeatEvents","SetConditionalEvents","EditorComment","Bookmark","Hold","SetHoldSound","Hide","ScaleMargin","ScaleRadius"]},at={type:"special",events:["MoveDecorations","SetText","SetObject","SetDefaultText"]};!function(t){t.include="include",t.exclude="exclude",t.special="special"}(et||(et={}));const st=function(t){if(!Array.isArray(t))throw new Error("Arguments are not supported.");return t.map(function(t){var e=Object.assign({},t);return e.hasOwnProperty("addDecorations")&&(e.addDecorations=[]),Array.isArray(e.actions)&&(e.actions=e.actions.filter(function(t){return!at.events.includes(t.eventType)})),e})},ut=function(t,e){return e.map(function(e){var r=Object.assign({},e);return Array.isArray(e.actions)&&(r.actions=e.actions.filter(function(e){return!t.includes(e.eventType)})),r})},lt=function(t,e){return e.map(function(e){var r=Object.assign({},e);return Array.isArray(e.actions)&&(r.actions=e.actions.filter(function(e){return t.includes(e.eventType)})),r})},ct={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let ft;const ht=new Uint8Array(16),pt=[];for(let t=0;t<256;++t)pt.push((t+256).toString(16).slice(1));function yt(t,e,r){const n=(t=t||{}).random??t.rng?.()??function(){if(!ft){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");ft=crypto.getRandomValues.bind(crypto)}return ft(ht)}();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,e){if((r=r||0)<0||r+16>e.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let t=0;t<16;++t)e[r+t]=n[t];return e}return function(t,e=0){return(pt[t[e+0]]+pt[t[e+1]]+pt[t[e+2]]+pt[t[e+3]]+"-"+pt[t[e+4]]+pt[t[e+5]]+"-"+pt[t[e+6]]+pt[t[e+7]]+"-"+pt[t[e+8]]+pt[t[e+9]]+"-"+pt[t[e+10]]+pt[t[e+11]]+pt[t[e+12]]+pt[t[e+13]]+pt[t[e+14]]+pt[t[e+15]]).toLowerCase()}(n)}function vt(){var t,e,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",i=r.toStringTag||"@@toStringTag";function o(r,n,i,o){var u=n&&n.prototype instanceof s?n:s,l=Object.create(u.prototype);return dt(l,"_invoke",function(r,n,i){var o,s,u,l=0,c=i||[],f=!1,h={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(e,r){return o=e,s=0,u=t,h.n=r,a}};function p(r,n){for(s=r,u=n,e=0;!f&&l&&!i&&e<c.length;e++){var i,o=c[e],p=h.p,y=o[2];r>3?(i=y===n)&&(u=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=t):o[0]<=p&&((i=r<2&&p<o[1])?(s=0,h.v=n,h.n=o[1]):p<y&&(i=r<3||o[0]>n||n>y)&&(o[4]=r,o[5]=n,h.n=y,s=0))}if(i||r>1)return a;throw f=!0,n}return function(i,c,y){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&p(c,y),s=c,u=y;(e=s<2?t:u)||!f;){o||(s?s<3?(s>1&&(h.n=-1),p(s,u)):h.n=u:h.v=u);try{if(l=2,o){if(s||(i="next"),e=o[i]){if(!(e=e.call(o,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,s<2&&(s=0)}else 1===s&&(e=o.return)&&e.call(o),s<2&&(u=TypeError("The iterator does not provide a '"+i+"' method"),s=1);o=t}else if((e=(f=h.n<0)?u:r.call(n,h))!==a)break}catch(e){o=t,s=1,u=e}finally{l=1}}return{value:e,done:f}}}(r,i,o),!0),l}var a={};function s(){}function u(){}function l(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(dt(e={},n,function(){return this}),e),f=l.prototype=s.prototype=Object.create(c);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,l):(t.__proto__=l,dt(t,i,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=l,dt(f,"constructor",l),dt(l,"constructor",u),u.displayName="GeneratorFunction",dt(l,i,"GeneratorFunction"),dt(f),dt(f,i,"Generator"),dt(f,n,function(){return this}),dt(f,"toString",function(){return"[object Generator]"}),(vt=function(){return{w:o,m:h}})()}function dt(t,e,r,n){var i=Object.defineProperty;try{i({},"",{})}catch(t){i=0}dt=function(t,e,r,n){function o(e,r){dt(t,e,function(t){return this._invoke(e,r,t)})}e?i?i(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(o("next",0),o("throw",1),o("return",2))},dt(t,e,r,n)}function bt(t){return bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},bt(t)}function gt(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=mt(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,o=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function mt(t,e){if(t){if("string"==typeof t)return Ot(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ot(t,e):void 0}}function Ot(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function St(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,kt(n.key),n)}}function kt(t){var e=function(t){if("object"!=bt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=bt(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==bt(e)?e:e+""}var wt=function(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]])}return r},_t=function(){return t=function t(e,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this._precomputedEvents=null,this._precomputeMode=!1,this._lightweightData=null,this._events=new Map,this.guidCallbacks=new Map,this._options=e,this._provider=r},e=[{key:"generateGUID",value:function(){return"event_".concat(!ct.randomUUID||e||t?yt(t,e,r):ct.randomUUID());var t,e,r}},{key:"_emitProgress",value:function(t,e,r,n){var i={stage:t,current:e,total:r,percent:r>0?Math.round(e/r*100):0,data:n};this._precomputeMode&&this._precomputedEvents?this._precomputedEvents[t].push(i):(this.trigger("parse:progress",i),this.trigger("parse:".concat(t),i))}},{key:"enablePrecomputeMode",value:function(){this._precomputeMode=!0,this._precomputedEvents={start:[],pathData:[],angleData:[],relativeAngle:[],tilePosition:[],complete:[]}}},{key:"disablePrecomputeMode",value:function(){this._precomputeMode=!1}},{key:"getPrecomputedEvents",value:function(){return this._precomputedEvents}},{key:"clearPrecomputedEvents",value:function(){this._precomputedEvents=null}},{key:"getEventsAtPercent",value:function(t,e){if(!this._precomputedEvents)return[];for(var r=[],n=0,i=e?[e]:["start","pathData","angleData","relativeAngle","tilePosition","complete"];n<i.length;n++){var o,a=i[n],s=gt(this._precomputedEvents[a]);try{for(s.s();!(o=s.n()).done;){var u=o.value;if(u.percent<=t&&(0===r.length||r[r.length-1].percent<=u.percent)){var l=r[r.length-1];l&&l.stage===u.stage&&l.current===u.current||r.push(u)}}}catch(t){s.e(t)}finally{s.f()}}return r}},{key:"getPrecomputedEventCount",value:function(t){return this._precomputedEvents?t?this._precomputedEvents[t].length:Object.values(this._precomputedEvents).reduce(function(t,e){return t+e.length},0):0}},{key:"getLightweightData",value:function(){return this._lightweightData}},{key:"precomputeLightweight",value:function(){for(var t,e,r,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.tiles.length,o=new Array(i),a=n?[]:new Array(i),s=new Array(i),u=0;u<i;u++){var l=this.tiles[u];o[u]=null!==(t=l.angle)&&void 0!==t?t:0,s[u]=(null!==(e=l.twirl)&&void 0!==e?e:0)%2==1}if(!n){var c,f=[0,0],h=this.angleData,p=new Map,y=gt(this.actions);try{for(y.s();!(c=y.n()).done;){var v=c.value;"PositionTrack"===v.eventType&&v.positionOffset&&!0!==v.editorOnly&&"Enabled"!==v.editorOnly&&p.set(v.floor,v)}}catch(t){y.e(t)}finally{y.f()}for(var d=0;d<i;d++){var b=p.get(d);(null==b?void 0:b.positionOffset)&&(f[0]+=b.positionOffset[0],f[1]+=b.positionOffset[1]),a[d]=[f[0],f[1]];var g=(999===h[d]?(null!==(r=h[d-1])&&void 0!==r?r:0)+180:h[d])*Math.PI/180;f[0]+=Math.cos(g),f[1]+=Math.sin(g)}}return this._lightweightData={totalTiles:i,angles:o,positions:a,twirlFlags:s,computed:!0},this._lightweightData}},{key:"getLightweightDataRange",value:function(t,e){if(!this._lightweightData)return null;var r=Math.min(t+e,this._lightweightData.totalTiles);return{angles:this._lightweightData.angles.slice(t,r),positions:this._lightweightData.positions.slice(t,r),twirlFlags:this._lightweightData.twirlFlags.slice(t,r)}}},{key:"clearLightweightData",value:function(){this._lightweightData=null}},{key:"getTileRenderData",value:function(t){var e,r;if(t<0||t>=this.tiles.length)return null;var n=this.tiles[t];return{angle:null!==(e=n.angle)&&void 0!==e?e:0,position:n.position?[n.position[0],n.position[1]]:null,hasTwirl:(null!==(r=n.twirl)&&void 0!==r?r:0)%2==1}}},{key:"load",value:function(){var t=this;return new Promise(function(e,r){var n,i,o=t._options;t._emitProgress("start",0,0);var s=o instanceof ArrayBuffer,u=o instanceof Uint8Array,l="undefined"!=typeof Buffer&&Buffer.isBuffer(o);if("string"==typeof o||s||u||l)try{var c=s?new Uint8Array(o):o;i=null===(n=t._provider)||void 0===n?void 0:n.parse(c)}catch(t){return void r("解析失败: "+t)}else{if("object"!==bt(o)||null===o)return void r("Options must be String, Buffer, ArrayBuffer or Object");i=Object.assign({},o)}var f=i&&"object"===bt(i)&&null!==i&&void 0!==i.pathData,h=i&&"object"===bt(i)&&null!==i&&void 0!==i.angleData;if(f){var p=i.pathData;t._emitProgress("pathData",0,p.length,{source:p}),t.angleData=a.parseToangleData(p),t._emitProgress("pathData",p.length,p.length,{source:p,processed:t.angleData})}else{if(!h)return void r("There is not any angle datas.");t.angleData=i.angleData,t._emitProgress("angleData",t.angleData.length,t.angleData.length,{processed:t.angleData})}i&&"object"===bt(i)&&null!==i&&Array.isArray(i.actions)?t.actions=i.actions:t.actions=[],i&&"object"===bt(i)&&null!==i&&void 0!==i.settings?(t.settings=i.settings,i&&"object"===bt(i)&&null!==i&&Array.isArray(i.decorations)?t.__decorations=i.decorations:t.__decorations=[],t.tiles=[],t._angleDir=-180,t._twirlCount=0,t._createArray(t.angleData.length,{angleData:t.angleData,actions:t.actions,decorations:t.__decorations}).then(function(r){t.tiles=r,t._emitProgress("complete",t.angleData.length,t.angleData.length),t.trigger("load",t),e(!0)}).catch(function(t){r(t)})):r("There is no ADOFAI settings.")})}},{key:"on",value:function(t,e){this._events.has(t)||this._events.set(t,[]);var r=this.generateGUID();return this._events.get(t).push({guid:r,callback:e}),this.guidCallbacks.set(r,{eventName:t,callback:e}),r}},{key:"trigger",value:function(t,e){this._events.has(t)&&this._events.get(t).forEach(function(t){return(0,t.callback)(e)})}},{key:"off",value:function(t){if(this.guidCallbacks.has(t)){var e=this.guidCallbacks.get(t).eventName;if(this.guidCallbacks.delete(t),this._events.has(e)){var r=this._events.get(e),n=r.findIndex(function(e){return e.guid===t});-1!==n&&r.splice(n,1)}}}},{key:"_createArray",value:function(t,e){return r=this,n=void 0,i=void 0,o=vt().m(function r(){var n,i,o,a,s,u,l,c,f,h,p,y,v,d,b,g,m,O;return vt().w(function(r){for(;;)switch(r.n){case 0:if(n=new Array(t),i=Math.max(100,Math.floor(t/100)),o=new Map,Array.isArray(e.actions)){a=gt(e.actions);try{for(a.s();!(s=a.n()).done;)u=s.value,o.has(u.floor)||o.set(u.floor,[]),o.get(u.floor).push(u)}catch(t){a.e(t)}finally{a.f()}}if(l=new Map,Array.isArray(e.decorations)){c=gt(e.decorations);try{for(c.s();!(f=c.n()).done;)h=f.value,l.has(h.floor)||l.set(h.floor,[]),l.get(h.floor).push(h)}catch(t){c.e(t)}finally{c.f()}}p=0;case 1:if(!(p<t)){r.n=3;break}y=o.get(p)||[],v=l.get(p)||[],d=gt(y);try{for(d.s();!(b=d.n()).done;)"Twirl"===b.value.eventType&&this._twirlCount++}catch(t){d.e(t)}finally{d.f()}if(g=this._parseAngle(e.angleData,p,this._twirlCount%2),m=y.map(function(t){return t.floor,wt(t,["floor"])}),O=v.map(function(t){return t.floor,wt(t,["floor"])}),n[p]={direction:e.angleData[p],_lastdir:e.angleData[p-1]||0,actions:m,angle:g,addDecorations:O,twirl:this._twirlCount,extraProps:{}},p%i!==0&&p!==t-1){r.n=2;break}if(this._emitProgress("relativeAngle",p+1,t,{tileIndex:p,angle:e.angleData[p],relativeAngle:g}),p%(10*i)!=0){r.n=2;break}return r.n=2,new Promise(function(t){return setTimeout(t,0)});case 2:p++,r.n=1;break;case 3:return r.a(2,n)}},r,this)}),new(i||(i=Promise))(function(t,e){function a(t){try{u(o.next(t))}catch(t){e(t)}}function s(t){try{u(o.throw(t))}catch(t){e(t)}}function u(e){var r;e.done?t(e.value):(r=e.value,r instanceof i?r:new i(function(t){t(r)})).then(a,s)}u((o=o.apply(r,n||[])).next())});var r,n,i,o}},{key:"_changeAngle",value:function(){var t=this,e=0;return this.tiles.map(function(r){return e++,r.angle=t._parsechangedAngle(r.direction,e,r.twirl,r._lastdir),r})}},{key:"_normalizeAngle",value:function(t){return(t%360+360)%360}},{key:"_parsechangedAngle",value:function(t,e,r,n){var i=0;if(0===e&&(this._angleDir=180),999===t)this._angleDir=this._normalizeAngle(n),isNaN(this._angleDir)&&(this._angleDir=0),i=0;else{var o=this._normalizeAngle(this._angleDir-t);0===(i=0===r?o:this._normalizeAngle(360-o))&&(i=360),this._angleDir=this._normalizeAngle(t+180)}return i}},{key:"_filterByFloor",value:function(t,e){if(!Array.isArray(t))return[];var r=t.filter(function(t){return t.floor===e});return this._twirlCount+=r.filter(function(t){return"Twirl"===t.eventType}).length,r.map(function(t){return t.floor,wt(t,["floor"])})}},{key:"_flattenAngleDatas",value:function(t){return t.map(function(t){return t.direction})}},{key:"_flattenActionsWithFloor",value:function(t){return t.flatMap(function(t,e){return(Array.isArray(null==t?void 0:t.actions)?t.actions:[]).map(function(t){t.floor;var r=wt(t,["floor"]);return Object.assign({floor:e},r)})})}},{key:"_filterByFloorwithDeco",value:function(t,e){return Array.isArray(t)?t.filter(function(t){return t.floor===e}).map(function(t){return t.floor,wt(t,["floor"])}):[]}},{key:"_flattenDecorationsWithFloor",value:function(t){return t.flatMap(function(t,e){return(Array.isArray(null==t?void 0:t.addDecorations)?t.addDecorations:[]).map(function(t){t.floor;var r=wt(t,["floor"]);return Object.assign({floor:e},r)})})}},{key:"_parseAngle",value:function(t,e,r){var n=0;if(0===e&&(this._angleDir=180),999===t[e])this._angleDir=this._normalizeAngle(t[e-1]),isNaN(this._angleDir)&&(this._angleDir=0),n=0;else{var i=this._normalizeAngle(this._angleDir-t[e]);0===(n=0===r?i:this._normalizeAngle(360-i))&&(n=360),this._angleDir=this._normalizeAngle(t[e]+180)}return n}},{key:"filterActionsByEventType",value:function(t){return Object.entries(this.tiles).flatMap(function(t){var e=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,o,a,s=[],u=!0,l=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,i=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw i}}return s}}(t,e)||mt(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t,2),r=e[0],n=e[1];return(Array.isArray(n.actions)?n.actions:[]).map(function(t){return{b:t,index:r}})}).filter(function(e){return e.b.eventType===t}).map(function(t){var e=t.b,r=t.index;return{index:Number(r),action:e}})}},{key:"getActionsByIndex",value:function(t,e){var r=this.filterActionsByEventType(t).filter(function(t){return t.index===e});return{count:r.length,actions:r.map(function(t){return t.action})}}},{key:"calculateTileCoordinates",value:function(){console.warn("calculateTileCoordinates is deprecated. Use calculateTilePosition instead.")}},{key:"calculateTilePosition",value:function(){var t,e=this.angleData,r=this.tiles.length,n=[],i=[0,0],o=new Map,a=gt(this.actions);try{for(a.s();!(t=a.n()).done;){var s=t.value;"PositionTrack"===s.eventType&&s.positionOffset&&!0!==s.editorOnly&&"Enabled"!==s.editorOnly&&o.set(s.floor,s)}}catch(t){a.e(t)}finally{a.f()}this._emitProgress("tilePosition",0,r);for(var u=new Array(r),l=0;l<r;l++)u[l]=999===e[l]?e[l-1]+180:e[l];for(var c=Math.max(100,Math.floor(r/100)),f=0;f<=r;f++){var h=f===r,p=h?u[f-1]||0:u[f],y=0===f?0:u[f-1]||0,v=this.tiles[f],d=o.get(f);(null==d?void 0:d.positionOffset)&&(i[0]+=d.positionOffset[0],i[1]+=d.positionOffset[1]);var b=[i[0],i[1]];n.push(b),v&&(v.position=b,v.extraProps.angle1=p,v.extraProps.angle2=y-180,v.extraProps.cangle=h?u[f-1]+180:u[f]);var g=p*Math.PI/180;i[0]+=Math.cos(g),i[1]+=Math.sin(g),(f%c===0||h)&&this._emitProgress("tilePosition",f,r,{tileIndex:f,position:[b[0],b[1]],angle:p})}return this._emitProgress("tilePosition",r,r,{processed:n.flat()}),n}},{key:"floorOperation",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{type:"append",direction:0};switch(t.type){case"append":this.appendFloor(t);break;case"insert":"number"==typeof t.id&&this.tiles.splice(t.id,0,{direction:t.direction||0,angle:0,actions:[],addDecorations:[],_lastdir:this.tiles[t.id-1].direction,twirl:this.tiles[t.id-1].twirl});break;case"delete":"number"==typeof t.id&&this.tiles.splice(t.id,1)}this._changeAngle()}},{key:"appendFloor",value:function(t){this.tiles.push({direction:t.direction,angle:0,actions:[],addDecorations:[],_lastdir:this.tiles[this.tiles.length-1].direction,twirl:this.tiles[this.tiles.length-1].twirl,extraProps:{}}),this._changeAngle()}},{key:"clearDeco",value:function(){return this.tiles=st(this.tiles),!0}},{key:"clearEffect",value:function(t){this.clearEvent(n[t])}},{key:"clearEvent",value:function(t){t.type==et.include?this.tiles=lt(t.events,this.tiles):t.type==et.exclude&&(this.tiles=ut(t.events,this.tiles))}},{key:"export",value:function(t,e){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0,o={angleData:this._flattenAngleDatas(this.tiles),settings:this.settings,actions:this._flattenActionsWithFloor(this.tiles),decorations:this._flattenDecorationsWithFloor(this.tiles)};return"object"===t?o:tt(o,e,r,n,i)}}],e&&St(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();return e})());