pixi.js 8.7.0 → 8.7.1-dev.12cf665

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.
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * PixiJS - v8.7.0
3
- * Compiled Thu, 23 Jan 2025 15:04:23 UTC
2
+ * PixiJS - v8.7.1
3
+ * Compiled Thu, 23 Jan 2025 20:50:46 UTC
4
4
  *
5
5
  * PixiJS is licensed under the MIT License.
6
6
  * http://www.opensource.org/licenses/mit-license
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * PixiJS - v8.7.0
3
- * Compiled Thu, 23 Jan 2025 15:04:23 UTC
2
+ * PixiJS - v8.7.1
3
+ * Compiled Thu, 23 Jan 2025 20:50:46 UTC
4
4
  *
5
5
  * PixiJS is licensed under the MIT License.
6
6
  * http://www.opensource.org/licenses/mit-license
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * PixiJS - v8.7.0
3
- * Compiled Thu, 23 Jan 2025 15:04:23 UTC
2
+ * PixiJS - v8.7.1
3
+ * Compiled Thu, 23 Jan 2025 20:50:46 UTC
4
4
  *
5
5
  * PixiJS is licensed under the MIT License.
6
6
  * http://www.opensource.org/licenses/mit-license
@@ -881,9 +881,6 @@ var gif_js = (function (exports) {
881
881
  }
882
882
  };
883
883
 
884
- "use strict";
885
- PIXI.extensions.add(GifAsset);
886
-
887
884
  "use strict";
888
885
  var __defProp = Object.defineProperty;
889
886
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -1185,6 +1182,9 @@ var gif_js = (function (exports) {
1185
1182
 
1186
1183
  "use strict";
1187
1184
 
1185
+ "use strict";
1186
+ PIXI.extensions.add(GifAsset);
1187
+
1188
1188
  "use strict";
1189
1189
 
1190
1190
  exports.GifAsset = GifAsset;
@@ -1 +1 @@
1
- {"version":3,"file":"gif.js","sources":["../../node_modules/js-binary-schema-parser/lib/index.js","../../node_modules/js-binary-schema-parser/lib/parsers/uint8.js","../../node_modules/js-binary-schema-parser/lib/schemas/gif.js","../../node_modules/gifuct-js/lib/deinterlace.js","../../node_modules/gifuct-js/lib/lzw.js","../../node_modules/gifuct-js/lib/index.js","../../src/gif/GifSource.ts","../../src/gif/GifAsset.ts","../../src/gif/init.ts","../../src/gif/GifSprite.ts"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.loop = exports.conditional = exports.parse = void 0;\n\nvar parse = function parse(stream, schema) {\n var result = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var parent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : result;\n\n if (Array.isArray(schema)) {\n schema.forEach(function (partSchema) {\n return parse(stream, partSchema, result, parent);\n });\n } else if (typeof schema === 'function') {\n schema(stream, result, parent, parse);\n } else {\n var key = Object.keys(schema)[0];\n\n if (Array.isArray(schema[key])) {\n parent[key] = {};\n parse(stream, schema[key], result, parent[key]);\n } else {\n parent[key] = schema[key](stream, result, parent, parse);\n }\n }\n\n return result;\n};\n\nexports.parse = parse;\n\nvar conditional = function conditional(schema, conditionFunc) {\n return function (stream, result, parent, parse) {\n if (conditionFunc(stream, result, parent)) {\n parse(stream, schema, result, parent);\n }\n };\n};\n\nexports.conditional = conditional;\n\nvar loop = function loop(schema, continueFunc) {\n return function (stream, result, parent, parse) {\n var arr = [];\n var lastStreamPos = stream.pos;\n\n while (continueFunc(stream, result, parent)) {\n var newParent = {};\n parse(stream, schema, result, newParent); // cases when whole file is parsed but no termination is there and stream position is not getting updated as well\n // it falls into infinite recursion, null check to avoid the same\n\n if (stream.pos === lastStreamPos) {\n break;\n }\n\n lastStreamPos = stream.pos;\n arr.push(newParent);\n }\n\n return arr;\n };\n};\n\nexports.loop = loop;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.readBits = exports.readArray = exports.readUnsigned = exports.readString = exports.peekBytes = exports.readBytes = exports.peekByte = exports.readByte = exports.buildStream = void 0;\n\n// Default stream and parsers for Uint8TypedArray data type\nvar buildStream = function buildStream(uint8Data) {\n return {\n data: uint8Data,\n pos: 0\n };\n};\n\nexports.buildStream = buildStream;\n\nvar readByte = function readByte() {\n return function (stream) {\n return stream.data[stream.pos++];\n };\n};\n\nexports.readByte = readByte;\n\nvar peekByte = function peekByte() {\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return function (stream) {\n return stream.data[stream.pos + offset];\n };\n};\n\nexports.peekByte = peekByte;\n\nvar readBytes = function readBytes(length) {\n return function (stream) {\n return stream.data.subarray(stream.pos, stream.pos += length);\n };\n};\n\nexports.readBytes = readBytes;\n\nvar peekBytes = function peekBytes(length) {\n return function (stream) {\n return stream.data.subarray(stream.pos, stream.pos + length);\n };\n};\n\nexports.peekBytes = peekBytes;\n\nvar readString = function readString(length) {\n return function (stream) {\n return Array.from(readBytes(length)(stream)).map(function (value) {\n return String.fromCharCode(value);\n }).join('');\n };\n};\n\nexports.readString = readString;\n\nvar readUnsigned = function readUnsigned(littleEndian) {\n return function (stream) {\n var bytes = readBytes(2)(stream);\n return littleEndian ? (bytes[1] << 8) + bytes[0] : (bytes[0] << 8) + bytes[1];\n };\n};\n\nexports.readUnsigned = readUnsigned;\n\nvar readArray = function readArray(byteSize, totalOrFunc) {\n return function (stream, result, parent) {\n var total = typeof totalOrFunc === 'function' ? totalOrFunc(stream, result, parent) : totalOrFunc;\n var parser = readBytes(byteSize);\n var arr = new Array(total);\n\n for (var i = 0; i < total; i++) {\n arr[i] = parser(stream);\n }\n\n return arr;\n };\n};\n\nexports.readArray = readArray;\n\nvar subBitsTotal = function subBitsTotal(bits, startIndex, length) {\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += bits[startIndex + i] && Math.pow(2, length - i - 1);\n }\n\n return result;\n};\n\nvar readBits = function readBits(schema) {\n return function (stream) {\n var _byte = readByte()(stream); // convert the byte to bit array\n\n\n var bits = new Array(8);\n\n for (var i = 0; i < 8; i++) {\n bits[7 - i] = !!(_byte & 1 << i);\n } // convert the bit array to values based on the schema\n\n\n return Object.keys(schema).reduce(function (res, key) {\n var def = schema[key];\n\n if (def.length) {\n res[key] = subBitsTotal(bits, def.index, def.length);\n } else {\n res[key] = bits[def.index];\n }\n\n return res;\n }, {});\n };\n};\n\nexports.readBits = readBits;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _ = require(\"../\");\n\nvar _uint = require(\"../parsers/uint8\");\n\n// a set of 0x00 terminated subblocks\nvar subBlocksSchema = {\n blocks: function blocks(stream) {\n var terminator = 0x00;\n var chunks = [];\n var streamSize = stream.data.length;\n var total = 0;\n\n for (var size = (0, _uint.readByte)()(stream); size !== terminator; size = (0, _uint.readByte)()(stream)) {\n // size becomes undefined for some case when file is corrupted and terminator is not proper \n // null check to avoid recursion\n if (!size) break; // catch corrupted files with no terminator\n\n if (stream.pos + size >= streamSize) {\n var availableSize = streamSize - stream.pos;\n chunks.push((0, _uint.readBytes)(availableSize)(stream));\n total += availableSize;\n break;\n }\n\n chunks.push((0, _uint.readBytes)(size)(stream));\n total += size;\n }\n\n var result = new Uint8Array(total);\n var offset = 0;\n\n for (var i = 0; i < chunks.length; i++) {\n result.set(chunks[i], offset);\n offset += chunks[i].length;\n }\n\n return result;\n }\n}; // global control extension\n\nvar gceSchema = (0, _.conditional)({\n gce: [{\n codes: (0, _uint.readBytes)(2)\n }, {\n byteSize: (0, _uint.readByte)()\n }, {\n extras: (0, _uint.readBits)({\n future: {\n index: 0,\n length: 3\n },\n disposal: {\n index: 3,\n length: 3\n },\n userInput: {\n index: 6\n },\n transparentColorGiven: {\n index: 7\n }\n })\n }, {\n delay: (0, _uint.readUnsigned)(true)\n }, {\n transparentColorIndex: (0, _uint.readByte)()\n }, {\n terminator: (0, _uint.readByte)()\n }]\n}, function (stream) {\n var codes = (0, _uint.peekBytes)(2)(stream);\n return codes[0] === 0x21 && codes[1] === 0xf9;\n}); // image pipeline block\n\nvar imageSchema = (0, _.conditional)({\n image: [{\n code: (0, _uint.readByte)()\n }, {\n descriptor: [{\n left: (0, _uint.readUnsigned)(true)\n }, {\n top: (0, _uint.readUnsigned)(true)\n }, {\n width: (0, _uint.readUnsigned)(true)\n }, {\n height: (0, _uint.readUnsigned)(true)\n }, {\n lct: (0, _uint.readBits)({\n exists: {\n index: 0\n },\n interlaced: {\n index: 1\n },\n sort: {\n index: 2\n },\n future: {\n index: 3,\n length: 2\n },\n size: {\n index: 5,\n length: 3\n }\n })\n }]\n }, (0, _.conditional)({\n lct: (0, _uint.readArray)(3, function (stream, result, parent) {\n return Math.pow(2, parent.descriptor.lct.size + 1);\n })\n }, function (stream, result, parent) {\n return parent.descriptor.lct.exists;\n }), {\n data: [{\n minCodeSize: (0, _uint.readByte)()\n }, subBlocksSchema]\n }]\n}, function (stream) {\n return (0, _uint.peekByte)()(stream) === 0x2c;\n}); // plain text block\n\nvar textSchema = (0, _.conditional)({\n text: [{\n codes: (0, _uint.readBytes)(2)\n }, {\n blockSize: (0, _uint.readByte)()\n }, {\n preData: function preData(stream, result, parent) {\n return (0, _uint.readBytes)(parent.text.blockSize)(stream);\n }\n }, subBlocksSchema]\n}, function (stream) {\n var codes = (0, _uint.peekBytes)(2)(stream);\n return codes[0] === 0x21 && codes[1] === 0x01;\n}); // application block\n\nvar applicationSchema = (0, _.conditional)({\n application: [{\n codes: (0, _uint.readBytes)(2)\n }, {\n blockSize: (0, _uint.readByte)()\n }, {\n id: function id(stream, result, parent) {\n return (0, _uint.readString)(parent.blockSize)(stream);\n }\n }, subBlocksSchema]\n}, function (stream) {\n var codes = (0, _uint.peekBytes)(2)(stream);\n return codes[0] === 0x21 && codes[1] === 0xff;\n}); // comment block\n\nvar commentSchema = (0, _.conditional)({\n comment: [{\n codes: (0, _uint.readBytes)(2)\n }, subBlocksSchema]\n}, function (stream) {\n var codes = (0, _uint.peekBytes)(2)(stream);\n return codes[0] === 0x21 && codes[1] === 0xfe;\n});\nvar schema = [{\n header: [{\n signature: (0, _uint.readString)(3)\n }, {\n version: (0, _uint.readString)(3)\n }]\n}, {\n lsd: [{\n width: (0, _uint.readUnsigned)(true)\n }, {\n height: (0, _uint.readUnsigned)(true)\n }, {\n gct: (0, _uint.readBits)({\n exists: {\n index: 0\n },\n resolution: {\n index: 1,\n length: 3\n },\n sort: {\n index: 4\n },\n size: {\n index: 5,\n length: 3\n }\n })\n }, {\n backgroundColorIndex: (0, _uint.readByte)()\n }, {\n pixelAspectRatio: (0, _uint.readByte)()\n }]\n}, (0, _.conditional)({\n gct: (0, _uint.readArray)(3, function (stream, result) {\n return Math.pow(2, result.lsd.gct.size + 1);\n })\n}, function (stream, result) {\n return result.lsd.gct.exists;\n}), // content frames\n{\n frames: (0, _.loop)([gceSchema, applicationSchema, commentSchema, imageSchema, textSchema], function (stream) {\n var nextCode = (0, _uint.peekByte)()(stream); // rather than check for a terminator, we should check for the existence\n // of an ext or image block to avoid infinite loops\n //var terminator = 0x3B;\n //return nextCode !== terminator;\n\n return nextCode === 0x21 || nextCode === 0x2c;\n })\n}];\nvar _default = schema;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.deinterlace = void 0;\n\n/**\r\n * Deinterlace function from https://github.com/shachaf/jsgif\r\n */\nvar deinterlace = function deinterlace(pixels, width) {\n var newPixels = new Array(pixels.length);\n var rows = pixels.length / width;\n\n var cpRow = function cpRow(toRow, fromRow) {\n var fromPixels = pixels.slice(fromRow * width, (fromRow + 1) * width);\n newPixels.splice.apply(newPixels, [toRow * width, width].concat(fromPixels));\n }; // See appendix E.\n\n\n var offsets = [0, 4, 2, 1];\n var steps = [8, 8, 4, 2];\n var fromRow = 0;\n\n for (var pass = 0; pass < 4; pass++) {\n for (var toRow = offsets[pass]; toRow < rows; toRow += steps[pass]) {\n cpRow(toRow, fromRow);\n fromRow++;\n }\n }\n\n return newPixels;\n};\n\nexports.deinterlace = deinterlace;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.lzw = void 0;\n\n/**\r\n * javascript port of java LZW decompression\r\n * Original java author url: https://gist.github.com/devunwired/4479231\r\n */\nvar lzw = function lzw(minCodeSize, data, pixelCount) {\n var MAX_STACK_SIZE = 4096;\n var nullCode = -1;\n var npix = pixelCount;\n var available, clear, code_mask, code_size, end_of_information, in_code, old_code, bits, code, i, datum, data_size, first, top, bi, pi;\n var dstPixels = new Array(pixelCount);\n var prefix = new Array(MAX_STACK_SIZE);\n var suffix = new Array(MAX_STACK_SIZE);\n var pixelStack = new Array(MAX_STACK_SIZE + 1); // Initialize GIF data stream decoder.\n\n data_size = minCodeSize;\n clear = 1 << data_size;\n end_of_information = clear + 1;\n available = clear + 2;\n old_code = nullCode;\n code_size = data_size + 1;\n code_mask = (1 << code_size) - 1;\n\n for (code = 0; code < clear; code++) {\n prefix[code] = 0;\n suffix[code] = code;\n } // Decode GIF pixel stream.\n\n\n var datum, bits, count, first, top, pi, bi;\n datum = bits = count = first = top = pi = bi = 0;\n\n for (i = 0; i < npix;) {\n if (top === 0) {\n if (bits < code_size) {\n // get the next byte\n datum += data[bi] << bits;\n bits += 8;\n bi++;\n continue;\n } // Get the next code.\n\n\n code = datum & code_mask;\n datum >>= code_size;\n bits -= code_size; // Interpret the code\n\n if (code > available || code == end_of_information) {\n break;\n }\n\n if (code == clear) {\n // Reset decoder.\n code_size = data_size + 1;\n code_mask = (1 << code_size) - 1;\n available = clear + 2;\n old_code = nullCode;\n continue;\n }\n\n if (old_code == nullCode) {\n pixelStack[top++] = suffix[code];\n old_code = code;\n first = code;\n continue;\n }\n\n in_code = code;\n\n if (code == available) {\n pixelStack[top++] = first;\n code = old_code;\n }\n\n while (code > clear) {\n pixelStack[top++] = suffix[code];\n code = prefix[code];\n }\n\n first = suffix[code] & 0xff;\n pixelStack[top++] = first; // add a new string to the table, but only if space is available\n // if not, just continue with current table until a clear code is found\n // (deferred clear code implementation as per GIF spec)\n\n if (available < MAX_STACK_SIZE) {\n prefix[available] = old_code;\n suffix[available] = first;\n available++;\n\n if ((available & code_mask) === 0 && available < MAX_STACK_SIZE) {\n code_size++;\n code_mask += available;\n }\n }\n\n old_code = in_code;\n } // Pop a pixel off the pixel stack.\n\n\n top--;\n dstPixels[pi++] = pixelStack[top];\n i++;\n }\n\n for (i = pi; i < npix; i++) {\n dstPixels[i] = 0; // clear missing pixels\n }\n\n return dstPixels;\n};\n\nexports.lzw = lzw;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decompressFrames = exports.decompressFrame = exports.parseGIF = void 0;\n\nvar _gif = _interopRequireDefault(require(\"js-binary-schema-parser/lib/schemas/gif\"));\n\nvar _jsBinarySchemaParser = require(\"js-binary-schema-parser\");\n\nvar _uint = require(\"js-binary-schema-parser/lib/parsers/uint8\");\n\nvar _deinterlace = require(\"./deinterlace\");\n\nvar _lzw = require(\"./lzw\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar parseGIF = function parseGIF(arrayBuffer) {\n var byteData = new Uint8Array(arrayBuffer);\n return (0, _jsBinarySchemaParser.parse)((0, _uint.buildStream)(byteData), _gif[\"default\"]);\n};\n\nexports.parseGIF = parseGIF;\n\nvar generatePatch = function generatePatch(image) {\n var totalPixels = image.pixels.length;\n var patchData = new Uint8ClampedArray(totalPixels * 4);\n\n for (var i = 0; i < totalPixels; i++) {\n var pos = i * 4;\n var colorIndex = image.pixels[i];\n var color = image.colorTable[colorIndex] || [0, 0, 0];\n patchData[pos] = color[0];\n patchData[pos + 1] = color[1];\n patchData[pos + 2] = color[2];\n patchData[pos + 3] = colorIndex !== image.transparentIndex ? 255 : 0;\n }\n\n return patchData;\n};\n\nvar decompressFrame = function decompressFrame(frame, gct, buildImagePatch) {\n if (!frame.image) {\n console.warn('gif frame does not have associated image.');\n return;\n }\n\n var image = frame.image; // get the number of pixels\n\n var totalPixels = image.descriptor.width * image.descriptor.height; // do lzw decompression\n\n var pixels = (0, _lzw.lzw)(image.data.minCodeSize, image.data.blocks, totalPixels); // deal with interlacing if necessary\n\n if (image.descriptor.lct.interlaced) {\n pixels = (0, _deinterlace.deinterlace)(pixels, image.descriptor.width);\n }\n\n var resultImage = {\n pixels: pixels,\n dims: {\n top: frame.image.descriptor.top,\n left: frame.image.descriptor.left,\n width: frame.image.descriptor.width,\n height: frame.image.descriptor.height\n }\n }; // color table\n\n if (image.descriptor.lct && image.descriptor.lct.exists) {\n resultImage.colorTable = image.lct;\n } else {\n resultImage.colorTable = gct;\n } // add per frame relevant gce information\n\n\n if (frame.gce) {\n resultImage.delay = (frame.gce.delay || 10) * 10; // convert to ms\n\n resultImage.disposalType = frame.gce.extras.disposal; // transparency\n\n if (frame.gce.extras.transparentColorGiven) {\n resultImage.transparentIndex = frame.gce.transparentColorIndex;\n }\n } // create canvas usable imagedata if desired\n\n\n if (buildImagePatch) {\n resultImage.patch = generatePatch(resultImage);\n }\n\n return resultImage;\n};\n\nexports.decompressFrame = decompressFrame;\n\nvar decompressFrames = function decompressFrames(parsedGif, buildImagePatches) {\n return parsedGif.frames.filter(function (f) {\n return f.image;\n }).map(function (f) {\n return decompressFrame(f, parsedGif.gct, buildImagePatches);\n });\n};\n\nexports.decompressFrames = decompressFrames;","import { decompressFrames, type ParsedFrame, parseGIF } from 'gifuct-js';\nimport { DOMAdapter } from '../environment/adapter';\nimport { CanvasSource } from '../rendering/renderers/shared/texture/sources/CanvasSource';\nimport { Texture } from '../rendering/renderers/shared/texture/Texture';\n\n/**\n * Represents a single frame of a GIF. Includes image and timing data.\n * @memberof gif\n */\ninterface GifFrame\n{\n /** Image data for the current frame */\n texture: Texture<CanvasSource>;\n /** The start of the current frame, in milliseconds */\n start: number;\n /** The end of the current frame, in milliseconds */\n end: number;\n}\n\n/**\n * Options when constructing from buffer\n * @memberof gif\n */\ninterface GifBufferOptions\n{\n /** FPS to use when the GIF animation doesn't define any delay between frames */\n fps: number;\n}\n\n/**\n * Resource provided to GifSprite instances. This is very similar to using a shared\n * Texture between Sprites. This source contains all the frames and animation needed\n * to support playback.\n * @memberof gif\n */\nclass GifSource\n{\n /** Width of the animation */\n public readonly width: number;\n\n /** Height of the animation */\n public readonly height: number;\n\n /** The total time to play the animation in milliseconds */\n public readonly duration: number;\n\n /** Animation frames */\n public readonly frames: GifFrame[];\n\n /** Textures */\n public readonly textures: Texture<CanvasSource>[];\n\n /** Total number of frames in the animation */\n public readonly totalFrames: number;\n\n /**\n * @param frames - Array of GifFrame instances.\n */\n constructor(frames: GifFrame[])\n {\n // #if _DEBUG\n if (!frames || !frames.length) throw new Error('Invalid frames');\n // #endif\n\n // All frames are the same size, get the first frame's size\n const [{ texture: { width, height } }] = frames;\n\n this.width = width;\n this.height = height;\n this.frames = frames;\n this.textures = this.frames.map((frame) => frame.texture);\n this.totalFrames = this.frames.length;\n this.duration = this.frames[this.totalFrames - 1].end;\n }\n\n /** Destroy animation data and don't use after this */\n public destroy()\n {\n for (const texture of this.textures)\n {\n texture.destroy(true);\n }\n for (const frame of this.frames)\n {\n frame.texture = null;\n }\n this.frames.length = 0;\n this.textures.length = 0;\n Object.assign(this, {\n frames: null,\n textures: null,\n width: 0,\n height: 0,\n duration: 0,\n totalFrames: 0,\n });\n }\n\n /**\n * Create an animated GIF animation from a GIF image's ArrayBuffer. The easiest way to get\n * the buffer is to use Assets.\n * @example\n * import { GifSource, GifSprite } from 'pixi.js/gif';\n *\n * const buffer = await fetch('./file.gif').then(res => res.arrayBuffer());\n * const source = GifSource.from(buffer);\n * const sprite = new GifSprite(source);\n * @param buffer - GIF image arraybuffer from Assets.\n * @param options - Optional options to use when building from buffer.\n */\n public static from(buffer: ArrayBuffer, options?: GifBufferOptions): GifSource\n {\n if (!buffer || buffer.byteLength === 0)\n {\n throw new Error('Invalid buffer');\n }\n\n // fix https://github.com/matt-way/gifuct-js/issues/30\n const validateAndFix = (gif: any): void =>\n {\n let currentGce = null;\n\n for (const frame of gif.frames)\n {\n currentGce = frame.gce ?? currentGce;\n\n // fix loosing graphic control extension for same frames\n if ('image' in frame && !('gce' in frame))\n {\n frame.gce = currentGce;\n }\n }\n };\n\n const gif = parseGIF(buffer);\n\n validateAndFix(gif);\n const gifFrames = decompressFrames(gif, true);\n const frames: GifFrame[] = [];\n const animWidth = gif.lsd.width;\n const animHeight = gif.lsd.height;\n\n // Temporary canvases required for compositing frames\n const canvas = DOMAdapter.get().createCanvas(animWidth, animHeight);\n const context = canvas.getContext('2d', { willReadFrequently: true });\n const patchCanvas = DOMAdapter.get().createCanvas();\n const patchContext = patchCanvas.getContext('2d');\n\n let time = 0;\n let previousFrame: ImageData | null = null;\n\n // Some GIFs have a non-zero frame delay, so we need to calculate the fallback\n const defaultDelay = 1000 / (options?.fps ?? 30);\n\n // Precompute each frame and store as ImageData\n for (let i = 0; i < gifFrames.length; i++)\n {\n // Some GIF's omit the disposalType, so let's assume clear if missing\n const {\n disposalType = 2,\n delay = defaultDelay,\n patch,\n dims: { width, height, left, top },\n } = gifFrames[i] as ParsedFrame;\n\n patchCanvas.width = width;\n patchCanvas.height = height;\n patchContext.clearRect(0, 0, width, height);\n const patchData = patchContext.createImageData(width, height);\n\n patchData.data.set(patch);\n patchContext.putImageData(patchData, 0, 0);\n\n if (disposalType === 3)\n {\n previousFrame = context.getImageData(0, 0, animWidth, animHeight);\n }\n\n context.drawImage(patchCanvas as CanvasImageSource, left, top);\n const imageData = context.getImageData(0, 0, animWidth, animHeight);\n\n if (disposalType === 2)\n {\n context.clearRect(0, 0, animWidth, animHeight);\n }\n else if (disposalType === 3)\n {\n context.putImageData(previousFrame as ImageData, 0, 0);\n }\n\n // Create new texture\n const resource = DOMAdapter.get().createCanvas(\n imageData.width,\n imageData.height\n ) as HTMLCanvasElement;\n const resourceContext = resource.getContext('2d');\n\n resourceContext.putImageData(imageData, 0, 0);\n\n frames.push({\n start: time,\n end: time + delay,\n texture: new Texture({\n source: new CanvasSource({\n resource,\n }),\n }),\n });\n time += delay;\n }\n\n // clear the canvases\n canvas.width = canvas.height = 0;\n patchCanvas.width = patchCanvas.height = 0;\n\n return new GifSource(frames);\n }\n}\n\nexport { GifBufferOptions, GifFrame, GifSource };\n","import { DOMAdapter } from '../environment/adapter';\nimport { ExtensionType } from '../extensions/Extensions';\nimport { path } from '../utils/path';\nimport { type GifBufferOptions, GifSource } from './GifSource';\n\nimport type { AssetExtension } from '../assets/AssetExtension';\n\n/**\n * Handle the loading of GIF images. Registering this loader plugin will\n * load all `.gif` images as an ArrayBuffer and transform into an\n * GifSource object.\n * @memberof gif\n */\nconst GifAsset = {\n extension: ExtensionType.Asset,\n detection: {\n test: async () => true,\n add: async (formats) => [...formats, 'gif'],\n remove: async (formats) => formats.filter((format) => format !== 'gif'),\n },\n loader: {\n name: 'gifLoader',\n test: (url) => path.extname(url) === '.gif',\n load: async (url, asset) =>\n {\n const response = await DOMAdapter.get().fetch(url);\n const buffer = await response.arrayBuffer();\n\n return GifSource.from(buffer, asset?.data);\n },\n unload: async (asset) =>\n {\n asset.destroy();\n },\n }\n} as AssetExtension<GifSource, GifBufferOptions>;\n\nexport { GifAsset };\n","import { extensions } from '../extensions/Extensions';\nimport { GifAsset } from './GifAsset';\n\nextensions.add(GifAsset);\n\n","import { Texture } from '../rendering/renderers/shared/texture/Texture';\nimport { Sprite, type SpriteOptions } from '../scene/sprite/Sprite';\nimport { UPDATE_PRIORITY } from '../ticker/const';\nimport { Ticker } from '../ticker/Ticker';\nimport { GifSource } from './GifSource';\n\nimport type { SCALE_MODE } from '../rendering/renderers/shared/texture/const';\n\n/**\n * Optional module to import to decode and play animated GIFs.\n * @example\n * import { Assets } from 'pixi.js';\n * import { GifSprite } from 'pixi.js/gif';\n *\n * const source = await Assets.load('example.gif');\n * const gif = new GifSprite({ source });\n * @namespace gif\n */\n\n/**\n * Default options for all GifSprite objects.\n * @memberof gif\n */\ninterface GifSpriteOptions extends Omit<SpriteOptions, 'texture'>\n{\n /** Source to the GIF frame and animation data */\n source: GifSource;\n /** Whether to start playing right away */\n autoPlay?: boolean;\n /**\n * Scale Mode to use for the texture\n * @type {PIXI.SCALE_MODE}\n */\n scaleMode?: SCALE_MODE;\n /** To enable looping */\n loop?: boolean;\n /** Speed of the animation */\n animationSpeed?: number;\n /** Set to `false` to manage updates yourself */\n autoUpdate?: boolean;\n /** The completed callback, optional */\n onComplete?: null | (() => void);\n /** The loop callback, optional */\n onLoop?: null | (() => void);\n /** The frame callback, optional */\n onFrameChange?: null | ((currentFrame: number) => void);\n /** Fallback FPS if GIF contains no time information */\n fps?: number;\n}\n\n/**\n * Runtime object to play animated GIFs. This object is similar to an AnimatedSprite.\n * It support playback (seek, play, stop) as well as animation speed and looping.\n * @memberof gif\n * @see Thanks to {@link https://github.com/matt-way/gifuct-js/ gifuct-js}\n */\nclass GifSprite extends Sprite\n{\n /**\n * Default options for all GifSprite objects.\n * @property {PIXI.SCALE_MODE} [scaleMode='linear'] - Scale mode to use for the texture.\n * @property {boolean} [loop=true] - To enable looping.\n * @property {number} [animationSpeed=1] - Speed of the animation.\n * @property {boolean} [autoUpdate=true] - Set to `false` to manage updates yourself.\n * @property {boolean} [autoPlay=true] - To start playing right away.\n * @property {Function} [onComplete=null] - The completed callback, optional.\n * @property {Function} [onLoop=null] - The loop callback, optional.\n * @property {Function} [onFrameChange=null] - The frame callback, optional.\n * @property {number} [fps=30] - Fallback FPS if GIF contains no time information.\n */\n public static defaultOptions: Omit<GifSpriteOptions, 'source'> = {\n scaleMode: 'linear',\n fps: 30,\n loop: true,\n animationSpeed: 1,\n autoPlay: true,\n autoUpdate: true,\n onComplete: null,\n onFrameChange: null,\n onLoop: null,\n };\n\n /**\n * The speed that the animation will play at. Higher is faster, lower is slower.\n * @default 1\n */\n public animationSpeed = 1;\n\n /**\n * Whether or not the animate sprite repeats after playing.\n * @default true\n */\n public loop = true;\n\n /**\n * User-assigned function to call when animation finishes playing. This only happens\n * if loop is set to `false`.\n * @example\n * animation.onComplete = () => {\n * // finished!\n * };\n */\n public onComplete?: () => void;\n\n /**\n * User-assigned function to call when animation changes which texture is being rendered.\n * @example\n * animation.onFrameChange = () => {\n * // updated!\n * };\n */\n public onFrameChange?: (currentFrame: number) => void;\n\n /**\n * User-assigned function to call when `loop` is true, and animation is played and\n * loops around to start again. This only happens if loop is set to `true`.\n * @example\n * animation.onLoop = () => {\n * // looped!\n * };\n */\n public onLoop?: () => void;\n\n /** The total duration of animation in milliseconds. */\n public readonly duration: number = 0;\n\n /** Whether to play the animation after constructing. */\n public readonly autoPlay: boolean = true;\n\n /** Collection of frame to render. */\n private _source: GifSource;\n\n /** Dirty means the image needs to be redrawn. Set to `true` to force redraw. */\n public dirty = false;\n\n /** The current frame number (zero-based index). */\n private _currentFrame = 0;\n\n /** `true` uses PIXI.Ticker.shared to auto update animation time.*/\n private _autoUpdate = false;\n\n /** `true` if the instance is currently connected to PIXI.Ticker.shared to auto update animation time. */\n private _isConnectedToTicker = false;\n\n /** If animation is currently playing. */\n private _playing = false;\n\n /** Current playback position in milliseconds. */\n private _currentTime = 0;\n\n /**\n * @param source - Source, default options will be used.\n */\n constructor(source: GifSource);\n\n /**\n * @param options - Options for the GifSprite\n */\n constructor(options: GifSpriteOptions);\n\n /** @ignore */\n constructor(...args: [GifSource] | [GifSpriteOptions])\n {\n const options = args[0] instanceof GifSource ? { source: args[0] } : args[0];\n\n // Get the options, apply defaults\n const {\n scaleMode,\n source,\n fps,\n loop,\n animationSpeed,\n autoPlay,\n autoUpdate,\n onComplete,\n onFrameChange,\n onLoop,\n ...rest\n } = Object.assign({},\n GifSprite.defaultOptions,\n options\n );\n\n super({ texture: Texture.EMPTY, ...rest });\n\n // Handle rerenders\n this.onRender = () => this._updateFrame();\n\n this.texture = source.textures[0];\n\n this.duration = source.frames[source.frames.length - 1].end;\n this._source = source;\n this._playing = false;\n this._currentTime = 0;\n this._isConnectedToTicker = false;\n Object.assign(this, {\n fps,\n loop,\n animationSpeed,\n autoPlay,\n autoUpdate,\n onComplete,\n onFrameChange,\n onLoop,\n });\n\n // Draw the first frame\n this.currentFrame = 0;\n if (autoPlay)\n {\n this.play();\n }\n }\n\n /** Stops the animation. */\n public stop(): void\n {\n if (!this._playing)\n {\n return;\n }\n\n this._playing = false;\n if (this._autoUpdate && this._isConnectedToTicker)\n {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n }\n\n /** Plays the animation. */\n public play(): void\n {\n if (this._playing)\n {\n return;\n }\n\n this._playing = true;\n if (this._autoUpdate && !this._isConnectedToTicker)\n {\n Ticker.shared.add(this.update, this, UPDATE_PRIORITY.HIGH);\n this._isConnectedToTicker = true;\n }\n\n // If were on the last frame and stopped, play should resume from beginning\n if (!this.loop && this.currentFrame === this._source.frames.length - 1)\n {\n this._currentTime = 0;\n }\n }\n\n /**\n * Get the current progress of the animation from 0 to 1.\n * @readonly\n */\n public get progress(): number\n {\n return this._currentTime / this.duration;\n }\n\n /** `true` if the current animation is playing */\n public get playing(): boolean\n {\n return this._playing;\n }\n\n /**\n * Updates the object transform for rendering. You only need to call this\n * if the `autoUpdate` property is set to `false`.\n * @param ticker - Ticker instance\n */\n public update(ticker: Ticker): void\n {\n if (!this._playing)\n {\n return;\n }\n\n const elapsed = this.animationSpeed * ticker.deltaTime / Ticker.targetFPMS;\n const currentTime = this._currentTime + elapsed;\n const localTime = currentTime % this.duration;\n\n const localFrame = this._source.frames.findIndex((frame) =>\n frame.start <= localTime && frame.end > localTime);\n\n if (currentTime >= this.duration)\n {\n if (this.loop)\n {\n this._currentTime = localTime;\n this._updateFrameIndex(localFrame);\n this.onLoop?.();\n }\n else\n {\n this._currentTime = this.duration;\n this._updateFrameIndex(this.totalFrames - 1);\n this.onComplete?.();\n this.stop();\n }\n }\n else\n {\n this._currentTime = localTime;\n this._updateFrameIndex(localFrame);\n }\n }\n\n /** Redraw the current frame, is necessary for the animation to work when */\n private _updateFrame(): void\n {\n if (!this.dirty)\n {\n return;\n }\n\n // Update the current frame\n this.texture = this._source.frames[this._currentFrame].texture;\n\n // Mark as clean\n this.dirty = false;\n }\n\n /**\n * Whether to use PIXI.Ticker.shared to auto update animation time.\n * @default true\n */\n get autoUpdate(): boolean\n {\n return this._autoUpdate;\n }\n\n set autoUpdate(value: boolean)\n {\n if (value !== this._autoUpdate)\n {\n this._autoUpdate = value;\n\n if (!this._autoUpdate && this._isConnectedToTicker)\n {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n else if (this._autoUpdate && !this._isConnectedToTicker && this._playing)\n {\n Ticker.shared.add(this.update, this);\n this._isConnectedToTicker = true;\n }\n }\n }\n\n /** Set the current frame number */\n get currentFrame(): number\n {\n return this._currentFrame;\n }\n set currentFrame(value: number)\n {\n this._updateFrameIndex(value);\n this._currentTime = this._source.frames[value].start;\n }\n\n /** Instance of the data, contains frame textures */\n get source(): GifSource\n {\n return this._source;\n }\n\n /**\n * Internally handle updating the frame index\n * @param value\n */\n private _updateFrameIndex(value: number): void\n {\n if (value < 0 || value >= this.totalFrames)\n {\n throw new Error(`Frame index out of range, expecting 0 to ${this.totalFrames}, got ${value}`);\n }\n if (this._currentFrame !== value)\n {\n this._currentFrame = value;\n this.dirty = true;\n this.onFrameChange?.(value);\n }\n }\n\n /** Get the total number of frame in the GIF. */\n get totalFrames(): number\n {\n return this._source.totalFrames;\n }\n\n /**\n * Destroy and don't use after this.\n * @param destroyData - Destroy the data, cannot be used again.\n */\n public destroy(destroyData: boolean = false): void\n {\n this.stop();\n super.destroy();\n\n if (destroyData)\n {\n this._source.destroy();\n }\n\n const forceClear = null as any;\n\n this._source = forceClear;\n this.onComplete = forceClear;\n this.onFrameChange = forceClear;\n this.onLoop = forceClear;\n }\n\n /**\n * Cloning the animation is a useful way to create a duplicate animation.\n * This maintains all the properties of the original animation but allows\n * you to control playback independent of the original animation.\n * If you want to create a simple copy, and not control independently,\n * then you can simply create a new Sprite, e.g. `const sprite = new Sprite(animation.texture)`.\n *\n * The clone will be flagged as `dirty` to immediatly trigger an update\n */\n public clone(): GifSprite\n {\n const clone = new GifSprite({\n source: this._source,\n autoUpdate: this._autoUpdate,\n loop: this.loop,\n autoPlay: this.autoPlay,\n scaleMode: this.texture.source.scaleMode,\n animationSpeed: this.animationSpeed,\n onComplete: this.onComplete,\n onFrameChange: this.onFrameChange,\n onLoop: this.onLoop,\n });\n\n clone.dirty = true;\n\n return clone;\n }\n}\n\nexport { GifSprite };\nexport type { GifSpriteOptions };\n"],"names":["require$$0","require$$1","deinterlace_1","lzw_1","lib","require$$2","require$$3","require$$4","parseGIF","decompressFrames"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
1
+ {"version":3,"file":"gif.js","sources":["../../node_modules/js-binary-schema-parser/lib/index.js","../../node_modules/js-binary-schema-parser/lib/parsers/uint8.js","../../node_modules/js-binary-schema-parser/lib/schemas/gif.js","../../node_modules/gifuct-js/lib/deinterlace.js","../../node_modules/gifuct-js/lib/lzw.js","../../node_modules/gifuct-js/lib/index.js","../../src/gif/GifSource.ts","../../src/gif/GifAsset.ts","../../src/gif/GifSprite.ts","../../src/gif/init.ts"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.loop = exports.conditional = exports.parse = void 0;\n\nvar parse = function parse(stream, schema) {\n var result = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var parent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : result;\n\n if (Array.isArray(schema)) {\n schema.forEach(function (partSchema) {\n return parse(stream, partSchema, result, parent);\n });\n } else if (typeof schema === 'function') {\n schema(stream, result, parent, parse);\n } else {\n var key = Object.keys(schema)[0];\n\n if (Array.isArray(schema[key])) {\n parent[key] = {};\n parse(stream, schema[key], result, parent[key]);\n } else {\n parent[key] = schema[key](stream, result, parent, parse);\n }\n }\n\n return result;\n};\n\nexports.parse = parse;\n\nvar conditional = function conditional(schema, conditionFunc) {\n return function (stream, result, parent, parse) {\n if (conditionFunc(stream, result, parent)) {\n parse(stream, schema, result, parent);\n }\n };\n};\n\nexports.conditional = conditional;\n\nvar loop = function loop(schema, continueFunc) {\n return function (stream, result, parent, parse) {\n var arr = [];\n var lastStreamPos = stream.pos;\n\n while (continueFunc(stream, result, parent)) {\n var newParent = {};\n parse(stream, schema, result, newParent); // cases when whole file is parsed but no termination is there and stream position is not getting updated as well\n // it falls into infinite recursion, null check to avoid the same\n\n if (stream.pos === lastStreamPos) {\n break;\n }\n\n lastStreamPos = stream.pos;\n arr.push(newParent);\n }\n\n return arr;\n };\n};\n\nexports.loop = loop;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.readBits = exports.readArray = exports.readUnsigned = exports.readString = exports.peekBytes = exports.readBytes = exports.peekByte = exports.readByte = exports.buildStream = void 0;\n\n// Default stream and parsers for Uint8TypedArray data type\nvar buildStream = function buildStream(uint8Data) {\n return {\n data: uint8Data,\n pos: 0\n };\n};\n\nexports.buildStream = buildStream;\n\nvar readByte = function readByte() {\n return function (stream) {\n return stream.data[stream.pos++];\n };\n};\n\nexports.readByte = readByte;\n\nvar peekByte = function peekByte() {\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return function (stream) {\n return stream.data[stream.pos + offset];\n };\n};\n\nexports.peekByte = peekByte;\n\nvar readBytes = function readBytes(length) {\n return function (stream) {\n return stream.data.subarray(stream.pos, stream.pos += length);\n };\n};\n\nexports.readBytes = readBytes;\n\nvar peekBytes = function peekBytes(length) {\n return function (stream) {\n return stream.data.subarray(stream.pos, stream.pos + length);\n };\n};\n\nexports.peekBytes = peekBytes;\n\nvar readString = function readString(length) {\n return function (stream) {\n return Array.from(readBytes(length)(stream)).map(function (value) {\n return String.fromCharCode(value);\n }).join('');\n };\n};\n\nexports.readString = readString;\n\nvar readUnsigned = function readUnsigned(littleEndian) {\n return function (stream) {\n var bytes = readBytes(2)(stream);\n return littleEndian ? (bytes[1] << 8) + bytes[0] : (bytes[0] << 8) + bytes[1];\n };\n};\n\nexports.readUnsigned = readUnsigned;\n\nvar readArray = function readArray(byteSize, totalOrFunc) {\n return function (stream, result, parent) {\n var total = typeof totalOrFunc === 'function' ? totalOrFunc(stream, result, parent) : totalOrFunc;\n var parser = readBytes(byteSize);\n var arr = new Array(total);\n\n for (var i = 0; i < total; i++) {\n arr[i] = parser(stream);\n }\n\n return arr;\n };\n};\n\nexports.readArray = readArray;\n\nvar subBitsTotal = function subBitsTotal(bits, startIndex, length) {\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += bits[startIndex + i] && Math.pow(2, length - i - 1);\n }\n\n return result;\n};\n\nvar readBits = function readBits(schema) {\n return function (stream) {\n var _byte = readByte()(stream); // convert the byte to bit array\n\n\n var bits = new Array(8);\n\n for (var i = 0; i < 8; i++) {\n bits[7 - i] = !!(_byte & 1 << i);\n } // convert the bit array to values based on the schema\n\n\n return Object.keys(schema).reduce(function (res, key) {\n var def = schema[key];\n\n if (def.length) {\n res[key] = subBitsTotal(bits, def.index, def.length);\n } else {\n res[key] = bits[def.index];\n }\n\n return res;\n }, {});\n };\n};\n\nexports.readBits = readBits;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _ = require(\"../\");\n\nvar _uint = require(\"../parsers/uint8\");\n\n// a set of 0x00 terminated subblocks\nvar subBlocksSchema = {\n blocks: function blocks(stream) {\n var terminator = 0x00;\n var chunks = [];\n var streamSize = stream.data.length;\n var total = 0;\n\n for (var size = (0, _uint.readByte)()(stream); size !== terminator; size = (0, _uint.readByte)()(stream)) {\n // size becomes undefined for some case when file is corrupted and terminator is not proper \n // null check to avoid recursion\n if (!size) break; // catch corrupted files with no terminator\n\n if (stream.pos + size >= streamSize) {\n var availableSize = streamSize - stream.pos;\n chunks.push((0, _uint.readBytes)(availableSize)(stream));\n total += availableSize;\n break;\n }\n\n chunks.push((0, _uint.readBytes)(size)(stream));\n total += size;\n }\n\n var result = new Uint8Array(total);\n var offset = 0;\n\n for (var i = 0; i < chunks.length; i++) {\n result.set(chunks[i], offset);\n offset += chunks[i].length;\n }\n\n return result;\n }\n}; // global control extension\n\nvar gceSchema = (0, _.conditional)({\n gce: [{\n codes: (0, _uint.readBytes)(2)\n }, {\n byteSize: (0, _uint.readByte)()\n }, {\n extras: (0, _uint.readBits)({\n future: {\n index: 0,\n length: 3\n },\n disposal: {\n index: 3,\n length: 3\n },\n userInput: {\n index: 6\n },\n transparentColorGiven: {\n index: 7\n }\n })\n }, {\n delay: (0, _uint.readUnsigned)(true)\n }, {\n transparentColorIndex: (0, _uint.readByte)()\n }, {\n terminator: (0, _uint.readByte)()\n }]\n}, function (stream) {\n var codes = (0, _uint.peekBytes)(2)(stream);\n return codes[0] === 0x21 && codes[1] === 0xf9;\n}); // image pipeline block\n\nvar imageSchema = (0, _.conditional)({\n image: [{\n code: (0, _uint.readByte)()\n }, {\n descriptor: [{\n left: (0, _uint.readUnsigned)(true)\n }, {\n top: (0, _uint.readUnsigned)(true)\n }, {\n width: (0, _uint.readUnsigned)(true)\n }, {\n height: (0, _uint.readUnsigned)(true)\n }, {\n lct: (0, _uint.readBits)({\n exists: {\n index: 0\n },\n interlaced: {\n index: 1\n },\n sort: {\n index: 2\n },\n future: {\n index: 3,\n length: 2\n },\n size: {\n index: 5,\n length: 3\n }\n })\n }]\n }, (0, _.conditional)({\n lct: (0, _uint.readArray)(3, function (stream, result, parent) {\n return Math.pow(2, parent.descriptor.lct.size + 1);\n })\n }, function (stream, result, parent) {\n return parent.descriptor.lct.exists;\n }), {\n data: [{\n minCodeSize: (0, _uint.readByte)()\n }, subBlocksSchema]\n }]\n}, function (stream) {\n return (0, _uint.peekByte)()(stream) === 0x2c;\n}); // plain text block\n\nvar textSchema = (0, _.conditional)({\n text: [{\n codes: (0, _uint.readBytes)(2)\n }, {\n blockSize: (0, _uint.readByte)()\n }, {\n preData: function preData(stream, result, parent) {\n return (0, _uint.readBytes)(parent.text.blockSize)(stream);\n }\n }, subBlocksSchema]\n}, function (stream) {\n var codes = (0, _uint.peekBytes)(2)(stream);\n return codes[0] === 0x21 && codes[1] === 0x01;\n}); // application block\n\nvar applicationSchema = (0, _.conditional)({\n application: [{\n codes: (0, _uint.readBytes)(2)\n }, {\n blockSize: (0, _uint.readByte)()\n }, {\n id: function id(stream, result, parent) {\n return (0, _uint.readString)(parent.blockSize)(stream);\n }\n }, subBlocksSchema]\n}, function (stream) {\n var codes = (0, _uint.peekBytes)(2)(stream);\n return codes[0] === 0x21 && codes[1] === 0xff;\n}); // comment block\n\nvar commentSchema = (0, _.conditional)({\n comment: [{\n codes: (0, _uint.readBytes)(2)\n }, subBlocksSchema]\n}, function (stream) {\n var codes = (0, _uint.peekBytes)(2)(stream);\n return codes[0] === 0x21 && codes[1] === 0xfe;\n});\nvar schema = [{\n header: [{\n signature: (0, _uint.readString)(3)\n }, {\n version: (0, _uint.readString)(3)\n }]\n}, {\n lsd: [{\n width: (0, _uint.readUnsigned)(true)\n }, {\n height: (0, _uint.readUnsigned)(true)\n }, {\n gct: (0, _uint.readBits)({\n exists: {\n index: 0\n },\n resolution: {\n index: 1,\n length: 3\n },\n sort: {\n index: 4\n },\n size: {\n index: 5,\n length: 3\n }\n })\n }, {\n backgroundColorIndex: (0, _uint.readByte)()\n }, {\n pixelAspectRatio: (0, _uint.readByte)()\n }]\n}, (0, _.conditional)({\n gct: (0, _uint.readArray)(3, function (stream, result) {\n return Math.pow(2, result.lsd.gct.size + 1);\n })\n}, function (stream, result) {\n return result.lsd.gct.exists;\n}), // content frames\n{\n frames: (0, _.loop)([gceSchema, applicationSchema, commentSchema, imageSchema, textSchema], function (stream) {\n var nextCode = (0, _uint.peekByte)()(stream); // rather than check for a terminator, we should check for the existence\n // of an ext or image block to avoid infinite loops\n //var terminator = 0x3B;\n //return nextCode !== terminator;\n\n return nextCode === 0x21 || nextCode === 0x2c;\n })\n}];\nvar _default = schema;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.deinterlace = void 0;\n\n/**\r\n * Deinterlace function from https://github.com/shachaf/jsgif\r\n */\nvar deinterlace = function deinterlace(pixels, width) {\n var newPixels = new Array(pixels.length);\n var rows = pixels.length / width;\n\n var cpRow = function cpRow(toRow, fromRow) {\n var fromPixels = pixels.slice(fromRow * width, (fromRow + 1) * width);\n newPixels.splice.apply(newPixels, [toRow * width, width].concat(fromPixels));\n }; // See appendix E.\n\n\n var offsets = [0, 4, 2, 1];\n var steps = [8, 8, 4, 2];\n var fromRow = 0;\n\n for (var pass = 0; pass < 4; pass++) {\n for (var toRow = offsets[pass]; toRow < rows; toRow += steps[pass]) {\n cpRow(toRow, fromRow);\n fromRow++;\n }\n }\n\n return newPixels;\n};\n\nexports.deinterlace = deinterlace;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.lzw = void 0;\n\n/**\r\n * javascript port of java LZW decompression\r\n * Original java author url: https://gist.github.com/devunwired/4479231\r\n */\nvar lzw = function lzw(minCodeSize, data, pixelCount) {\n var MAX_STACK_SIZE = 4096;\n var nullCode = -1;\n var npix = pixelCount;\n var available, clear, code_mask, code_size, end_of_information, in_code, old_code, bits, code, i, datum, data_size, first, top, bi, pi;\n var dstPixels = new Array(pixelCount);\n var prefix = new Array(MAX_STACK_SIZE);\n var suffix = new Array(MAX_STACK_SIZE);\n var pixelStack = new Array(MAX_STACK_SIZE + 1); // Initialize GIF data stream decoder.\n\n data_size = minCodeSize;\n clear = 1 << data_size;\n end_of_information = clear + 1;\n available = clear + 2;\n old_code = nullCode;\n code_size = data_size + 1;\n code_mask = (1 << code_size) - 1;\n\n for (code = 0; code < clear; code++) {\n prefix[code] = 0;\n suffix[code] = code;\n } // Decode GIF pixel stream.\n\n\n var datum, bits, count, first, top, pi, bi;\n datum = bits = count = first = top = pi = bi = 0;\n\n for (i = 0; i < npix;) {\n if (top === 0) {\n if (bits < code_size) {\n // get the next byte\n datum += data[bi] << bits;\n bits += 8;\n bi++;\n continue;\n } // Get the next code.\n\n\n code = datum & code_mask;\n datum >>= code_size;\n bits -= code_size; // Interpret the code\n\n if (code > available || code == end_of_information) {\n break;\n }\n\n if (code == clear) {\n // Reset decoder.\n code_size = data_size + 1;\n code_mask = (1 << code_size) - 1;\n available = clear + 2;\n old_code = nullCode;\n continue;\n }\n\n if (old_code == nullCode) {\n pixelStack[top++] = suffix[code];\n old_code = code;\n first = code;\n continue;\n }\n\n in_code = code;\n\n if (code == available) {\n pixelStack[top++] = first;\n code = old_code;\n }\n\n while (code > clear) {\n pixelStack[top++] = suffix[code];\n code = prefix[code];\n }\n\n first = suffix[code] & 0xff;\n pixelStack[top++] = first; // add a new string to the table, but only if space is available\n // if not, just continue with current table until a clear code is found\n // (deferred clear code implementation as per GIF spec)\n\n if (available < MAX_STACK_SIZE) {\n prefix[available] = old_code;\n suffix[available] = first;\n available++;\n\n if ((available & code_mask) === 0 && available < MAX_STACK_SIZE) {\n code_size++;\n code_mask += available;\n }\n }\n\n old_code = in_code;\n } // Pop a pixel off the pixel stack.\n\n\n top--;\n dstPixels[pi++] = pixelStack[top];\n i++;\n }\n\n for (i = pi; i < npix; i++) {\n dstPixels[i] = 0; // clear missing pixels\n }\n\n return dstPixels;\n};\n\nexports.lzw = lzw;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decompressFrames = exports.decompressFrame = exports.parseGIF = void 0;\n\nvar _gif = _interopRequireDefault(require(\"js-binary-schema-parser/lib/schemas/gif\"));\n\nvar _jsBinarySchemaParser = require(\"js-binary-schema-parser\");\n\nvar _uint = require(\"js-binary-schema-parser/lib/parsers/uint8\");\n\nvar _deinterlace = require(\"./deinterlace\");\n\nvar _lzw = require(\"./lzw\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar parseGIF = function parseGIF(arrayBuffer) {\n var byteData = new Uint8Array(arrayBuffer);\n return (0, _jsBinarySchemaParser.parse)((0, _uint.buildStream)(byteData), _gif[\"default\"]);\n};\n\nexports.parseGIF = parseGIF;\n\nvar generatePatch = function generatePatch(image) {\n var totalPixels = image.pixels.length;\n var patchData = new Uint8ClampedArray(totalPixels * 4);\n\n for (var i = 0; i < totalPixels; i++) {\n var pos = i * 4;\n var colorIndex = image.pixels[i];\n var color = image.colorTable[colorIndex] || [0, 0, 0];\n patchData[pos] = color[0];\n patchData[pos + 1] = color[1];\n patchData[pos + 2] = color[2];\n patchData[pos + 3] = colorIndex !== image.transparentIndex ? 255 : 0;\n }\n\n return patchData;\n};\n\nvar decompressFrame = function decompressFrame(frame, gct, buildImagePatch) {\n if (!frame.image) {\n console.warn('gif frame does not have associated image.');\n return;\n }\n\n var image = frame.image; // get the number of pixels\n\n var totalPixels = image.descriptor.width * image.descriptor.height; // do lzw decompression\n\n var pixels = (0, _lzw.lzw)(image.data.minCodeSize, image.data.blocks, totalPixels); // deal with interlacing if necessary\n\n if (image.descriptor.lct.interlaced) {\n pixels = (0, _deinterlace.deinterlace)(pixels, image.descriptor.width);\n }\n\n var resultImage = {\n pixels: pixels,\n dims: {\n top: frame.image.descriptor.top,\n left: frame.image.descriptor.left,\n width: frame.image.descriptor.width,\n height: frame.image.descriptor.height\n }\n }; // color table\n\n if (image.descriptor.lct && image.descriptor.lct.exists) {\n resultImage.colorTable = image.lct;\n } else {\n resultImage.colorTable = gct;\n } // add per frame relevant gce information\n\n\n if (frame.gce) {\n resultImage.delay = (frame.gce.delay || 10) * 10; // convert to ms\n\n resultImage.disposalType = frame.gce.extras.disposal; // transparency\n\n if (frame.gce.extras.transparentColorGiven) {\n resultImage.transparentIndex = frame.gce.transparentColorIndex;\n }\n } // create canvas usable imagedata if desired\n\n\n if (buildImagePatch) {\n resultImage.patch = generatePatch(resultImage);\n }\n\n return resultImage;\n};\n\nexports.decompressFrame = decompressFrame;\n\nvar decompressFrames = function decompressFrames(parsedGif, buildImagePatches) {\n return parsedGif.frames.filter(function (f) {\n return f.image;\n }).map(function (f) {\n return decompressFrame(f, parsedGif.gct, buildImagePatches);\n });\n};\n\nexports.decompressFrames = decompressFrames;","import { decompressFrames, type ParsedFrame, parseGIF } from 'gifuct-js';\nimport { DOMAdapter } from '../environment/adapter';\nimport { CanvasSource } from '../rendering/renderers/shared/texture/sources/CanvasSource';\nimport { Texture } from '../rendering/renderers/shared/texture/Texture';\n\n/**\n * Represents a single frame of a GIF. Includes image and timing data.\n * @memberof gif\n */\ninterface GifFrame\n{\n /** Image data for the current frame */\n texture: Texture<CanvasSource>;\n /** The start of the current frame, in milliseconds */\n start: number;\n /** The end of the current frame, in milliseconds */\n end: number;\n}\n\n/**\n * Options when constructing from buffer\n * @memberof gif\n */\ninterface GifBufferOptions\n{\n /** FPS to use when the GIF animation doesn't define any delay between frames */\n fps: number;\n}\n\n/**\n * Resource provided to GifSprite instances. This is very similar to using a shared\n * Texture between Sprites. This source contains all the frames and animation needed\n * to support playback.\n * @memberof gif\n */\nclass GifSource\n{\n /** Width of the animation */\n public readonly width: number;\n\n /** Height of the animation */\n public readonly height: number;\n\n /** The total time to play the animation in milliseconds */\n public readonly duration: number;\n\n /** Animation frames */\n public readonly frames: GifFrame[];\n\n /** Textures */\n public readonly textures: Texture<CanvasSource>[];\n\n /** Total number of frames in the animation */\n public readonly totalFrames: number;\n\n /**\n * @param frames - Array of GifFrame instances.\n */\n constructor(frames: GifFrame[])\n {\n // #if _DEBUG\n if (!frames || !frames.length) throw new Error('Invalid frames');\n // #endif\n\n // All frames are the same size, get the first frame's size\n const [{ texture: { width, height } }] = frames;\n\n this.width = width;\n this.height = height;\n this.frames = frames;\n this.textures = this.frames.map((frame) => frame.texture);\n this.totalFrames = this.frames.length;\n this.duration = this.frames[this.totalFrames - 1].end;\n }\n\n /** Destroy animation data and don't use after this */\n public destroy()\n {\n for (const texture of this.textures)\n {\n texture.destroy(true);\n }\n for (const frame of this.frames)\n {\n frame.texture = null;\n }\n this.frames.length = 0;\n this.textures.length = 0;\n Object.assign(this, {\n frames: null,\n textures: null,\n width: 0,\n height: 0,\n duration: 0,\n totalFrames: 0,\n });\n }\n\n /**\n * Create an animated GIF animation from a GIF image's ArrayBuffer. The easiest way to get\n * the buffer is to use Assets.\n * @example\n * import { GifSource, GifSprite } from 'pixi.js/gif';\n *\n * const buffer = await fetch('./file.gif').then(res => res.arrayBuffer());\n * const source = GifSource.from(buffer);\n * const sprite = new GifSprite(source);\n * @param buffer - GIF image arraybuffer from Assets.\n * @param options - Optional options to use when building from buffer.\n */\n public static from(buffer: ArrayBuffer, options?: GifBufferOptions): GifSource\n {\n if (!buffer || buffer.byteLength === 0)\n {\n throw new Error('Invalid buffer');\n }\n\n // fix https://github.com/matt-way/gifuct-js/issues/30\n const validateAndFix = (gif: any): void =>\n {\n let currentGce = null;\n\n for (const frame of gif.frames)\n {\n currentGce = frame.gce ?? currentGce;\n\n // fix loosing graphic control extension for same frames\n if ('image' in frame && !('gce' in frame))\n {\n frame.gce = currentGce;\n }\n }\n };\n\n const gif = parseGIF(buffer);\n\n validateAndFix(gif);\n const gifFrames = decompressFrames(gif, true);\n const frames: GifFrame[] = [];\n const animWidth = gif.lsd.width;\n const animHeight = gif.lsd.height;\n\n // Temporary canvases required for compositing frames\n const canvas = DOMAdapter.get().createCanvas(animWidth, animHeight);\n const context = canvas.getContext('2d', { willReadFrequently: true });\n const patchCanvas = DOMAdapter.get().createCanvas();\n const patchContext = patchCanvas.getContext('2d');\n\n let time = 0;\n let previousFrame: ImageData | null = null;\n\n // Some GIFs have a non-zero frame delay, so we need to calculate the fallback\n const defaultDelay = 1000 / (options?.fps ?? 30);\n\n // Precompute each frame and store as ImageData\n for (let i = 0; i < gifFrames.length; i++)\n {\n // Some GIF's omit the disposalType, so let's assume clear if missing\n const {\n disposalType = 2,\n delay = defaultDelay,\n patch,\n dims: { width, height, left, top },\n } = gifFrames[i] as ParsedFrame;\n\n patchCanvas.width = width;\n patchCanvas.height = height;\n patchContext.clearRect(0, 0, width, height);\n const patchData = patchContext.createImageData(width, height);\n\n patchData.data.set(patch);\n patchContext.putImageData(patchData, 0, 0);\n\n if (disposalType === 3)\n {\n previousFrame = context.getImageData(0, 0, animWidth, animHeight);\n }\n\n context.drawImage(patchCanvas as CanvasImageSource, left, top);\n const imageData = context.getImageData(0, 0, animWidth, animHeight);\n\n if (disposalType === 2)\n {\n context.clearRect(0, 0, animWidth, animHeight);\n }\n else if (disposalType === 3)\n {\n context.putImageData(previousFrame as ImageData, 0, 0);\n }\n\n // Create new texture\n const resource = DOMAdapter.get().createCanvas(\n imageData.width,\n imageData.height\n ) as HTMLCanvasElement;\n const resourceContext = resource.getContext('2d');\n\n resourceContext.putImageData(imageData, 0, 0);\n\n frames.push({\n start: time,\n end: time + delay,\n texture: new Texture({\n source: new CanvasSource({\n resource,\n }),\n }),\n });\n time += delay;\n }\n\n // clear the canvases\n canvas.width = canvas.height = 0;\n patchCanvas.width = patchCanvas.height = 0;\n\n return new GifSource(frames);\n }\n}\n\nexport { GifBufferOptions, GifFrame, GifSource };\n","import { DOMAdapter } from '../environment/adapter';\nimport { ExtensionType } from '../extensions/Extensions';\nimport { path } from '../utils/path';\nimport { type GifBufferOptions, GifSource } from './GifSource';\n\nimport type { AssetExtension } from '../assets/AssetExtension';\n\n/**\n * Handle the loading of GIF images. Registering this loader plugin will\n * load all `.gif` images as an ArrayBuffer and transform into an\n * GifSource object.\n * @memberof gif\n */\nconst GifAsset = {\n extension: ExtensionType.Asset,\n detection: {\n test: async () => true,\n add: async (formats) => [...formats, 'gif'],\n remove: async (formats) => formats.filter((format) => format !== 'gif'),\n },\n loader: {\n name: 'gifLoader',\n test: (url) => path.extname(url) === '.gif',\n load: async (url, asset) =>\n {\n const response = await DOMAdapter.get().fetch(url);\n const buffer = await response.arrayBuffer();\n\n return GifSource.from(buffer, asset?.data);\n },\n unload: async (asset) =>\n {\n asset.destroy();\n },\n }\n} as AssetExtension<GifSource, GifBufferOptions>;\n\nexport { GifAsset };\n","import { Texture } from '../rendering/renderers/shared/texture/Texture';\nimport { Sprite, type SpriteOptions } from '../scene/sprite/Sprite';\nimport { UPDATE_PRIORITY } from '../ticker/const';\nimport { Ticker } from '../ticker/Ticker';\nimport { GifSource } from './GifSource';\n\nimport type { SCALE_MODE } from '../rendering/renderers/shared/texture/const';\n\n/**\n * Optional module to import to decode and play animated GIFs.\n * @example\n * import { Assets } from 'pixi.js';\n * import { GifSprite } from 'pixi.js/gif';\n *\n * const source = await Assets.load('example.gif');\n * const gif = new GifSprite({ source });\n * @namespace gif\n */\n\n/**\n * Default options for all GifSprite objects.\n * @memberof gif\n */\ninterface GifSpriteOptions extends Omit<SpriteOptions, 'texture'>\n{\n /** Source to the GIF frame and animation data */\n source: GifSource;\n /** Whether to start playing right away */\n autoPlay?: boolean;\n /**\n * Scale Mode to use for the texture\n * @type {PIXI.SCALE_MODE}\n */\n scaleMode?: SCALE_MODE;\n /** To enable looping */\n loop?: boolean;\n /** Speed of the animation */\n animationSpeed?: number;\n /** Set to `false` to manage updates yourself */\n autoUpdate?: boolean;\n /** The completed callback, optional */\n onComplete?: null | (() => void);\n /** The loop callback, optional */\n onLoop?: null | (() => void);\n /** The frame callback, optional */\n onFrameChange?: null | ((currentFrame: number) => void);\n /** Fallback FPS if GIF contains no time information */\n fps?: number;\n}\n\n/**\n * Runtime object to play animated GIFs. This object is similar to an AnimatedSprite.\n * It support playback (seek, play, stop) as well as animation speed and looping.\n * @memberof gif\n * @see Thanks to {@link https://github.com/matt-way/gifuct-js/ gifuct-js}\n */\nclass GifSprite extends Sprite\n{\n /**\n * Default options for all GifSprite objects.\n * @property {PIXI.SCALE_MODE} [scaleMode='linear'] - Scale mode to use for the texture.\n * @property {boolean} [loop=true] - To enable looping.\n * @property {number} [animationSpeed=1] - Speed of the animation.\n * @property {boolean} [autoUpdate=true] - Set to `false` to manage updates yourself.\n * @property {boolean} [autoPlay=true] - To start playing right away.\n * @property {Function} [onComplete=null] - The completed callback, optional.\n * @property {Function} [onLoop=null] - The loop callback, optional.\n * @property {Function} [onFrameChange=null] - The frame callback, optional.\n * @property {number} [fps=30] - Fallback FPS if GIF contains no time information.\n */\n public static defaultOptions: Omit<GifSpriteOptions, 'source'> = {\n scaleMode: 'linear',\n fps: 30,\n loop: true,\n animationSpeed: 1,\n autoPlay: true,\n autoUpdate: true,\n onComplete: null,\n onFrameChange: null,\n onLoop: null,\n };\n\n /**\n * The speed that the animation will play at. Higher is faster, lower is slower.\n * @default 1\n */\n public animationSpeed = 1;\n\n /**\n * Whether or not the animate sprite repeats after playing.\n * @default true\n */\n public loop = true;\n\n /**\n * User-assigned function to call when animation finishes playing. This only happens\n * if loop is set to `false`.\n * @example\n * animation.onComplete = () => {\n * // finished!\n * };\n */\n public onComplete?: () => void;\n\n /**\n * User-assigned function to call when animation changes which texture is being rendered.\n * @example\n * animation.onFrameChange = () => {\n * // updated!\n * };\n */\n public onFrameChange?: (currentFrame: number) => void;\n\n /**\n * User-assigned function to call when `loop` is true, and animation is played and\n * loops around to start again. This only happens if loop is set to `true`.\n * @example\n * animation.onLoop = () => {\n * // looped!\n * };\n */\n public onLoop?: () => void;\n\n /** The total duration of animation in milliseconds. */\n public readonly duration: number = 0;\n\n /** Whether to play the animation after constructing. */\n public readonly autoPlay: boolean = true;\n\n /** Collection of frame to render. */\n private _source: GifSource;\n\n /** Dirty means the image needs to be redrawn. Set to `true` to force redraw. */\n public dirty = false;\n\n /** The current frame number (zero-based index). */\n private _currentFrame = 0;\n\n /** `true` uses PIXI.Ticker.shared to auto update animation time.*/\n private _autoUpdate = false;\n\n /** `true` if the instance is currently connected to PIXI.Ticker.shared to auto update animation time. */\n private _isConnectedToTicker = false;\n\n /** If animation is currently playing. */\n private _playing = false;\n\n /** Current playback position in milliseconds. */\n private _currentTime = 0;\n\n /**\n * @param source - Source, default options will be used.\n */\n constructor(source: GifSource);\n\n /**\n * @param options - Options for the GifSprite\n */\n constructor(options: GifSpriteOptions);\n\n /** @ignore */\n constructor(...args: [GifSource] | [GifSpriteOptions])\n {\n const options = args[0] instanceof GifSource ? { source: args[0] } : args[0];\n\n // Get the options, apply defaults\n const {\n scaleMode,\n source,\n fps,\n loop,\n animationSpeed,\n autoPlay,\n autoUpdate,\n onComplete,\n onFrameChange,\n onLoop,\n ...rest\n } = Object.assign({},\n GifSprite.defaultOptions,\n options\n );\n\n super({ texture: Texture.EMPTY, ...rest });\n\n // Handle rerenders\n this.onRender = () => this._updateFrame();\n\n this.texture = source.textures[0];\n\n this.duration = source.frames[source.frames.length - 1].end;\n this._source = source;\n this._playing = false;\n this._currentTime = 0;\n this._isConnectedToTicker = false;\n Object.assign(this, {\n fps,\n loop,\n animationSpeed,\n autoPlay,\n autoUpdate,\n onComplete,\n onFrameChange,\n onLoop,\n });\n\n // Draw the first frame\n this.currentFrame = 0;\n if (autoPlay)\n {\n this.play();\n }\n }\n\n /** Stops the animation. */\n public stop(): void\n {\n if (!this._playing)\n {\n return;\n }\n\n this._playing = false;\n if (this._autoUpdate && this._isConnectedToTicker)\n {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n }\n\n /** Plays the animation. */\n public play(): void\n {\n if (this._playing)\n {\n return;\n }\n\n this._playing = true;\n if (this._autoUpdate && !this._isConnectedToTicker)\n {\n Ticker.shared.add(this.update, this, UPDATE_PRIORITY.HIGH);\n this._isConnectedToTicker = true;\n }\n\n // If were on the last frame and stopped, play should resume from beginning\n if (!this.loop && this.currentFrame === this._source.frames.length - 1)\n {\n this._currentTime = 0;\n }\n }\n\n /**\n * Get the current progress of the animation from 0 to 1.\n * @readonly\n */\n public get progress(): number\n {\n return this._currentTime / this.duration;\n }\n\n /** `true` if the current animation is playing */\n public get playing(): boolean\n {\n return this._playing;\n }\n\n /**\n * Updates the object transform for rendering. You only need to call this\n * if the `autoUpdate` property is set to `false`.\n * @param ticker - Ticker instance\n */\n public update(ticker: Ticker): void\n {\n if (!this._playing)\n {\n return;\n }\n\n const elapsed = this.animationSpeed * ticker.deltaTime / Ticker.targetFPMS;\n const currentTime = this._currentTime + elapsed;\n const localTime = currentTime % this.duration;\n\n const localFrame = this._source.frames.findIndex((frame) =>\n frame.start <= localTime && frame.end > localTime);\n\n if (currentTime >= this.duration)\n {\n if (this.loop)\n {\n this._currentTime = localTime;\n this._updateFrameIndex(localFrame);\n this.onLoop?.();\n }\n else\n {\n this._currentTime = this.duration;\n this._updateFrameIndex(this.totalFrames - 1);\n this.onComplete?.();\n this.stop();\n }\n }\n else\n {\n this._currentTime = localTime;\n this._updateFrameIndex(localFrame);\n }\n }\n\n /** Redraw the current frame, is necessary for the animation to work when */\n private _updateFrame(): void\n {\n if (!this.dirty)\n {\n return;\n }\n\n // Update the current frame\n this.texture = this._source.frames[this._currentFrame].texture;\n\n // Mark as clean\n this.dirty = false;\n }\n\n /**\n * Whether to use PIXI.Ticker.shared to auto update animation time.\n * @default true\n */\n get autoUpdate(): boolean\n {\n return this._autoUpdate;\n }\n\n set autoUpdate(value: boolean)\n {\n if (value !== this._autoUpdate)\n {\n this._autoUpdate = value;\n\n if (!this._autoUpdate && this._isConnectedToTicker)\n {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n else if (this._autoUpdate && !this._isConnectedToTicker && this._playing)\n {\n Ticker.shared.add(this.update, this);\n this._isConnectedToTicker = true;\n }\n }\n }\n\n /** Set the current frame number */\n get currentFrame(): number\n {\n return this._currentFrame;\n }\n set currentFrame(value: number)\n {\n this._updateFrameIndex(value);\n this._currentTime = this._source.frames[value].start;\n }\n\n /** Instance of the data, contains frame textures */\n get source(): GifSource\n {\n return this._source;\n }\n\n /**\n * Internally handle updating the frame index\n * @param value\n */\n private _updateFrameIndex(value: number): void\n {\n if (value < 0 || value >= this.totalFrames)\n {\n throw new Error(`Frame index out of range, expecting 0 to ${this.totalFrames}, got ${value}`);\n }\n if (this._currentFrame !== value)\n {\n this._currentFrame = value;\n this.dirty = true;\n this.onFrameChange?.(value);\n }\n }\n\n /** Get the total number of frame in the GIF. */\n get totalFrames(): number\n {\n return this._source.totalFrames;\n }\n\n /**\n * Destroy and don't use after this.\n * @param destroyData - Destroy the data, cannot be used again.\n */\n public destroy(destroyData: boolean = false): void\n {\n this.stop();\n super.destroy();\n\n if (destroyData)\n {\n this._source.destroy();\n }\n\n const forceClear = null as any;\n\n this._source = forceClear;\n this.onComplete = forceClear;\n this.onFrameChange = forceClear;\n this.onLoop = forceClear;\n }\n\n /**\n * Cloning the animation is a useful way to create a duplicate animation.\n * This maintains all the properties of the original animation but allows\n * you to control playback independent of the original animation.\n * If you want to create a simple copy, and not control independently,\n * then you can simply create a new Sprite, e.g. `const sprite = new Sprite(animation.texture)`.\n *\n * The clone will be flagged as `dirty` to immediatly trigger an update\n */\n public clone(): GifSprite\n {\n const clone = new GifSprite({\n source: this._source,\n autoUpdate: this._autoUpdate,\n loop: this.loop,\n autoPlay: this.autoPlay,\n scaleMode: this.texture.source.scaleMode,\n animationSpeed: this.animationSpeed,\n onComplete: this.onComplete,\n onFrameChange: this.onFrameChange,\n onLoop: this.onLoop,\n });\n\n clone.dirty = true;\n\n return clone;\n }\n}\n\nexport { GifSprite };\nexport type { GifSpriteOptions };\n","import { extensions } from '../extensions/Extensions';\nimport { GifAsset } from './GifAsset';\n\nexport * from './index';\n\nextensions.add(GifAsset);\n"],"names":["require$$0","require$$1","deinterlace_1","lzw_1","lib","require$$2","require$$3","require$$4","parseGIF","decompressFrames"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA,YAAY,CAAC;AACb;CACA,MAAM,CAAC,cAAc,CAAC,GAAO,EAAE,YAAY,EAAE;CAC7C,EAAE,KAAK,EAAE,IAAI;CACb,CAAC,CAAC,CAAC;CACH,IAAA,MAAA,GAAA,GAAA,CAAA,IAAY,GAAG,aAAmB,GAAA,GAAA,CAAA,WAAA,GAAG,mBAAa,GAAG,KAAK,CAAC,CAAC;AAC5D;CACA,IAAI,KAAK,GAAG,SAAS,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE;CAC3C,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACtF,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC1F;CACA,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;CAC7B,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,UAAU,EAAE;CACzC,MAAM,OAAO,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACvD,KAAK,CAAC,CAAC;CACP,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;CAC3C,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;CAC1C,GAAG,MAAM;CACT,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC;CACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;CACpC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;CACvB,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CACtD,KAAK,MAAM;CACX,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;CAC/D,KAAK;CACL,GAAG;AACH;CACA,EAAE,OAAO,MAAM,CAAC;CAChB,CAAC,CAAC;AACF;CACA,IAAa,OAAA,GAAA,GAAA,CAAA,KAAA,GAAG,KAAK,CAAC;AACtB;CACA,IAAI,WAAW,GAAG,SAAS,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE;CAC9D,EAAE,OAAO,UAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;CAClD,IAAI,IAAI,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;CAC/C,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C,KAAK;CACL,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,IAAmB,aAAA,GAAA,GAAA,CAAA,WAAA,GAAG,WAAW,CAAC;AAClC;CACA,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE;CAC/C,EAAE,OAAO,UAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;CAClD,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;CACjB,IAAI,IAAI,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC;AACnC;CACA,IAAI,OAAO,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;CACjD,MAAM,IAAI,SAAS,GAAG,EAAE,CAAC;CACzB,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;CAC/C;AACA;CACA,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,aAAa,EAAE;CACxC,QAAQ,MAAM;CACd,OAAO;AACP;CACA,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC;CACjC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CAC1B,KAAK;AACL;CACA,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,MAAA,GAAA,GAAA,CAAA,IAAY,GAAG,IAAI;;;;CCjEnB,YAAY,CAAC;AACb;CACA,MAAM,CAAC,cAAc,CAAC,KAAO,EAAE,YAAY,EAAE;CAC7C,EAAE,KAAK,EAAE,IAAI;CACb,CAAC,CAAC,CAAC;CACH,IAAA,UAAA,GAAA,KAAA,CAAA,QAAgB,GAAG,WAAiB,GAAA,KAAA,CAAA,SAAA,GAAG,mCAAoB,GAAG,YAAA,GAAA,KAAA,CAAA,UAAkB,GAAG,WAAiB,GAAA,KAAA,CAAA,SAAA,GAAG,6BAAiB,GAAG,UAAA,GAAA,KAAA,CAAA,QAAgB,GAAG,UAAgB,GAAA,KAAA,CAAA,QAAA,GAAG,iCAAmB,GAAG,KAAK,CAAC,CAAC;AAC9L;CACA;CACA,IAAI,WAAW,GAAG,SAAS,WAAW,CAAC,SAAS,EAAE;CAClD,EAAE,OAAO;CACT,IAAI,IAAI,EAAE,SAAS;CACnB,IAAI,GAAG,EAAE,CAAC;CACV,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,IAAmB,aAAA,GAAA,KAAA,CAAA,WAAA,GAAG,WAAW,CAAC;AAClC;CACA,IAAI,QAAQ,GAAG,SAAS,QAAQ,GAAG;CACnC,EAAE,OAAO,UAAU,MAAM,EAAE;CAC3B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;CACrC,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,IAAgB,UAAA,GAAA,KAAA,CAAA,QAAA,GAAG,QAAQ,CAAC;AAC5B;CACA,IAAI,QAAQ,GAAG,SAAS,QAAQ,GAAG;CACnC,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACrF,EAAE,OAAO,UAAU,MAAM,EAAE;CAC3B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;CAC5C,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,IAAgB,UAAA,GAAA,KAAA,CAAA,QAAA,GAAG,QAAQ,CAAC;AAC5B;CACA,IAAI,SAAS,GAAG,SAAS,SAAS,CAAC,MAAM,EAAE;CAC3C,EAAE,OAAO,UAAU,MAAM,EAAE;CAC3B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC;CAClE,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,IAAiB,WAAA,GAAA,KAAA,CAAA,SAAA,GAAG,SAAS,CAAC;AAC9B;CACA,IAAI,SAAS,GAAG,SAAS,SAAS,CAAC,MAAM,EAAE;CAC3C,EAAE,OAAO,UAAU,MAAM,EAAE;CAC3B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;CACjE,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,IAAiB,WAAA,GAAA,KAAA,CAAA,SAAA,GAAG,SAAS,CAAC;AAC9B;CACA,IAAI,UAAU,GAAG,SAAS,UAAU,CAAC,MAAM,EAAE;CAC7C,EAAE,OAAO,UAAU,MAAM,EAAE;CAC3B,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE;CACtE,MAAM,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;CACxC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CAChB,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,IAAkB,YAAA,GAAA,KAAA,CAAA,UAAA,GAAG,UAAU,CAAC;AAChC;CACA,IAAI,YAAY,GAAG,SAAS,YAAY,CAAC,YAAY,EAAE;CACvD,EAAE,OAAO,UAAU,MAAM,EAAE;CAC3B,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CACrC,IAAI,OAAO,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CAClF,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,IAAoB,cAAA,GAAA,KAAA,CAAA,YAAA,GAAG,YAAY,CAAC;AACpC;CACA,IAAI,SAAS,GAAG,SAAS,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE;CAC1D,EAAE,OAAO,UAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;CAC3C,IAAI,IAAI,KAAK,GAAG,OAAO,WAAW,KAAK,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC;CACtG,IAAI,IAAI,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;CACrC,IAAI,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/B;CACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;CACpC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;CAC9B,KAAK;AACL;CACA,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,IAAiB,WAAA,GAAA,KAAA,CAAA,SAAA,GAAG,SAAS,CAAC;AAC9B;CACA,IAAI,YAAY,GAAG,SAAS,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;CACnE,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC;AACjB;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;CACnC,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CAClE,GAAG;AACH;CACA,EAAE,OAAO,MAAM,CAAC;CAChB,CAAC,CAAC;AACF;CACA,IAAI,QAAQ,GAAG,SAAS,QAAQ,CAAC,MAAM,EAAE;CACzC,EAAE,OAAO,UAAU,MAAM,EAAE;CAC3B,IAAI,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;AACnC;AACA;CACA,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B;CACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAChC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;CACvC,KAAK;AACL;AACA;CACA,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,EAAE;CAC1D,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B;CACA,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;CACtB,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7D,OAAO,MAAM;CACb,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACnC,OAAO;AACP;CACA,MAAM,OAAO,GAAG,CAAC;CACjB,KAAK,EAAE,EAAE,CAAC,CAAC;CACX,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,UAAA,GAAA,KAAA,CAAA,QAAgB,GAAG,QAAQ;;;CCzH3B,CAAA,YAAY,CAAC;AACb;CACA,CAAA,MAAM,CAAC,cAAc,CAAU,OAAA,EAAA,YAAY,EAAE;IAC3C,KAAK,EAAE,IAAI;CACb,EAAC,CAAC,CAAC;CACH,CAAA,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC;AAC5B;EACA,IAAI,CAAC,GAAGA,GAAc,CAAC;AACvB;EACA,IAAI,KAAK,GAAGC,KAA2B,CAAC;AACxC;CACA;CACA,CAAA,IAAI,eAAe,GAAG;CACtB,GAAE,MAAM,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE;CAClC,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC;CAC1B,KAAI,IAAI,MAAM,GAAG,EAAE,CAAC;MAChB,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;CACxC,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB;CACA,KAAI,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,EAAE;CAC9G;CACA;CACA,OAAM,IAAI,CAAC,IAAI,EAAE,MAAM;AACvB;QACM,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,IAAI,UAAU,EAAE;UACnC,IAAI,aAAa,GAAG,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;CACpD,SAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;UACzD,KAAK,IAAI,aAAa,CAAC;CAC/B,SAAQ,MAAM;SACP;AACP;CACA,OAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,KAAK,IAAI,IAAI,CAAC;OACf;AACL;MACI,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;CACvC,KAAI,IAAI,MAAM,GAAG,CAAC,CAAC;AACnB;CACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9B,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;OAC5B;AACL;MACI,OAAO,MAAM,CAAC;KACf;CACH,EAAC,CAAC;AACF;EACA,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;IACjC,GAAG,EAAE,CAAC;MACJ,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;CAClC,IAAG,EAAE;MACD,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG;CACnC,IAAG,EAAE;MACD,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE;CAChC,OAAM,MAAM,EAAE;UACN,KAAK,EAAE,CAAC;UACR,MAAM,EAAE,CAAC;SACV;CACP,OAAM,QAAQ,EAAE;UACR,KAAK,EAAE,CAAC;UACR,MAAM,EAAE,CAAC;SACV;CACP,OAAM,SAAS,EAAE;UACT,KAAK,EAAE,CAAC;SACT;CACP,OAAM,qBAAqB,EAAE;UACrB,KAAK,EAAE,CAAC;SACT;CACP,MAAK,CAAC;CACN,IAAG,EAAE;MACD,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC;CACxC,IAAG,EAAE;MACD,qBAAqB,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG;CAChD,IAAG,EAAE;MACD,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG;CACrC,IAAG,CAAC;GACH,EAAE,UAAU,MAAM,EAAE;CACrB,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CAC9C,GAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAChD,EAAC,CAAC,CAAC;AACH;EACA,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;IACnC,KAAK,EAAE,CAAC;MACN,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG;CAC/B,IAAG,EAAE;MACD,UAAU,EAAE,CAAC;QACX,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC;CACzC,MAAK,EAAE;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC;CACxC,MAAK,EAAE;QACD,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC;CAC1C,MAAK,EAAE;QACD,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC;CAC3C,MAAK,EAAE;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE;CAC/B,SAAQ,MAAM,EAAE;YACN,KAAK,EAAE,CAAC;WACT;CACT,SAAQ,UAAU,EAAE;YACV,KAAK,EAAE,CAAC;WACT;CACT,SAAQ,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC;WACT;CACT,SAAQ,MAAM,EAAE;YACN,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;WACV;CACT,SAAQ,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;WACV;CACT,QAAO,CAAC;CACR,MAAK,CAAC;CACN,IAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;CACxB,KAAI,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,UAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;CACnE,OAAM,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;CACzD,MAAK,CAAC;CACN,IAAG,EAAE,UAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;MACnC,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;CACxC,IAAG,CAAC,EAAE;MACF,IAAI,EAAE,CAAC;QACL,WAAW,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG;OACnC,EAAE,eAAe,CAAC;CACvB,IAAG,CAAC;GACH,EAAE,UAAU,MAAM,EAAE;CACrB,GAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;CAChD,EAAC,CAAC,CAAC;AACH;EACA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;IAClC,IAAI,EAAE,CAAC;MACL,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;CAClC,IAAG,EAAE;MACD,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG;CACpC,IAAG,EAAE;MACD,OAAO,EAAE,SAAS,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;CACtD,OAAM,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;OAC5D;KACF,EAAE,eAAe,CAAC;GACpB,EAAE,UAAU,MAAM,EAAE;CACrB,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CAC9C,GAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAChD,EAAC,CAAC,CAAC;AACH;EACA,IAAI,iBAAiB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;IACzC,WAAW,EAAE,CAAC;MACZ,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;CAClC,IAAG,EAAE;MACD,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG;CACpC,IAAG,EAAE;MACD,EAAE,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;CAC5C,OAAM,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;OACxD;KACF,EAAE,eAAe,CAAC;GACpB,EAAE,UAAU,MAAM,EAAE;CACrB,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CAC9C,GAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAChD,EAAC,CAAC,CAAC;AACH;EACA,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;IACrC,OAAO,EAAE,CAAC;MACR,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;KAC/B,EAAE,eAAe,CAAC;GACpB,EAAE,UAAU,MAAM,EAAE;CACrB,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CAC9C,GAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAChD,EAAC,CAAC,CAAC;EACH,IAAI,MAAM,GAAG,CAAC;IACZ,MAAM,EAAE,CAAC;MACP,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;CACvC,IAAG,EAAE;MACD,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;CACrC,IAAG,CAAC;CACJ,EAAC,EAAE;IACD,GAAG,EAAE,CAAC;MACJ,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC;CACxC,IAAG,EAAE;MACD,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC;CACzC,IAAG,EAAE;MACD,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE;CAC7B,OAAM,MAAM,EAAE;UACN,KAAK,EAAE,CAAC;SACT;CACP,OAAM,UAAU,EAAE;UACV,KAAK,EAAE,CAAC;UACR,MAAM,EAAE,CAAC;SACV;CACP,OAAM,IAAI,EAAE;UACJ,KAAK,EAAE,CAAC;SACT;CACP,OAAM,IAAI,EAAE;UACJ,KAAK,EAAE,CAAC;UACR,MAAM,EAAE,CAAC;SACV;CACP,MAAK,CAAC;CACN,IAAG,EAAE;MACD,oBAAoB,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG;CAC/C,IAAG,EAAE;MACD,gBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG;CAC3C,IAAG,CAAC;CACJ,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;CACtB,GAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,UAAU,MAAM,EAAE,MAAM,EAAE;CACzD,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;CAChD,IAAG,CAAC;CACJ,EAAC,EAAE,UAAU,MAAM,EAAE,MAAM,EAAE;IAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;CAC/B,EAAC,CAAC;CACF,CAAA;IACE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,UAAU,MAAM,EAAE;CAChH,KAAI,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC;CACjD;CACA;CACA;AACA;MACI,OAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,CAAC;CAClD,IAAG,CAAC;CACJ,EAAC,CAAC,CAAC;EACH,IAAI,QAAQ,GAAG,MAAM,CAAC;CACtB,CAAA,OAAO,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAA;;;;;;;CC1N7B,YAAY,CAAC;AACb;CACA,MAAM,CAAC,cAAc,CAACC,aAAO,EAAE,YAAY,EAAE;CAC7C,EAAE,KAAK,EAAE,IAAI;CACb,CAAC,CAAC,CAAC;CACH,IAAmB,aAAA,GAAAA,aAAA,CAAA,WAAA,GAAG,KAAK,CAAC,CAAC;AAC7B;CACA;CACA;CACA;CACA,IAAI,WAAW,GAAG,SAAS,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE;CACtD,EAAE,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAC3C,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AACnC;CACA,EAAE,IAAI,KAAK,GAAG,SAAS,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;CAC7C,IAAI,IAAI,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC;CAC1E,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;CACjF,GAAG,CAAC;AACJ;AACA;CACA,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7B,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC;AAClB;CACA,EAAE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE;CACvC,IAAI,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;CACxE,MAAM,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CAC5B,MAAM,OAAO,EAAE,CAAC;CAChB,KAAK;CACL,GAAG;AACH;CACA,EAAE,OAAO,SAAS,CAAC;CACnB,CAAC,CAAC;AACF;CACA,aAAA,GAAAA,aAAA,CAAA,WAAmB,GAAG,WAAW;;;;CClCjC,YAAY,CAAC;AACb;CACA,MAAM,CAAC,cAAc,CAACC,KAAO,EAAE,YAAY,EAAE;CAC7C,EAAE,KAAK,EAAE,IAAI;CACb,CAAC,CAAC,CAAC;CACH,IAAW,KAAA,GAAAA,KAAA,CAAA,GAAA,GAAG,KAAK,CAAC,CAAC;AACrB;CACA;CACA;CACA;CACA;CACA,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE;CACtD,EAAE,IAAI,cAAc,GAAG,IAAI,CAAC;CAC5B,EAAE,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,IAAI,GAAG,UAAU,CAAC;CACxB,EAAE,IAAI,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;CACzI,EAAE,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;CACxC,EAAE,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;CACzC,EAAE,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;CACzC,EAAE,IAAI,UAAU,GAAG,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;AACjD;CACA,EAAE,SAAS,GAAG,WAAW,CAAC;CAC1B,EAAE,KAAK,GAAG,CAAC,IAAI,SAAS,CAAC;CACzB,EAAE,kBAAkB,GAAG,KAAK,GAAG,CAAC,CAAC;CACjC,EAAE,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;CACxB,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACtB,EAAE,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC;CAC5B,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC;AACnC;CACA,EAAE,KAAK,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE;CACvC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACrB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACxB,GAAG;AACH;AACA;CACA,EAAE,IAAI,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;CAC7C,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACnD;CACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG;CACzB,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE;CACnB,MAAM,IAAI,IAAI,GAAG,SAAS,EAAE;CAC5B;CACA,QAAQ,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;CAClC,QAAQ,IAAI,IAAI,CAAC,CAAC;CAClB,QAAQ,EAAE,EAAE,CAAC;CACb,QAAQ,SAAS;CACjB,OAAO;AACP;AACA;CACA,MAAM,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;CAC/B,MAAM,KAAK,KAAK,SAAS,CAAC;CAC1B,MAAM,IAAI,IAAI,SAAS,CAAC;AACxB;CACA,MAAM,IAAI,IAAI,GAAG,SAAS,IAAI,IAAI,IAAI,kBAAkB,EAAE;CAC1D,QAAQ,MAAM;CACd,OAAO;AACP;CACA,MAAM,IAAI,IAAI,IAAI,KAAK,EAAE;CACzB;CACA,QAAQ,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC;CAClC,QAAQ,SAAS,GAAG,CAAC,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC;CACzC,QAAQ,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;CAC9B,QAAQ,QAAQ,GAAG,QAAQ,CAAC;CAC5B,QAAQ,SAAS;CACjB,OAAO;AACP;CACA,MAAM,IAAI,QAAQ,IAAI,QAAQ,EAAE;CAChC,QAAQ,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;CACzC,QAAQ,QAAQ,GAAG,IAAI,CAAC;CACxB,QAAQ,KAAK,GAAG,IAAI,CAAC;CACrB,QAAQ,SAAS;CACjB,OAAO;AACP;CACA,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB;CACA,MAAM,IAAI,IAAI,IAAI,SAAS,EAAE;CAC7B,QAAQ,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;CAClC,QAAQ,IAAI,GAAG,QAAQ,CAAC;CACxB,OAAO;AACP;CACA,MAAM,OAAO,IAAI,GAAG,KAAK,EAAE;CAC3B,QAAQ,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;CACzC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;CAC5B,OAAO;AACP;CACA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClC,MAAM,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;CAChC;CACA;AACA;CACA,MAAM,IAAI,SAAS,GAAG,cAAc,EAAE;CACtC,QAAQ,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;CACrC,QAAQ,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;CAClC,QAAQ,SAAS,EAAE,CAAC;AACpB;CACA,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,MAAM,CAAC,IAAI,SAAS,GAAG,cAAc,EAAE;CACzE,UAAU,SAAS,EAAE,CAAC;CACtB,UAAU,SAAS,IAAI,SAAS,CAAC;CACjC,SAAS;CACT,OAAO;AACP;CACA,MAAM,QAAQ,GAAG,OAAO,CAAC;CACzB,KAAK;AACL;AACA;CACA,IAAI,GAAG,EAAE,CAAC;CACV,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;CACtC,IAAI,CAAC,EAAE,CAAC;CACR,GAAG;AACH;CACA,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;CAC9B,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACrB,GAAG;AACH;CACA,EAAE,OAAO,SAAS,CAAC;CACnB,CAAC,CAAC;AACF;CACA,KAAA,GAAAA,KAAA,CAAA,GAAW,GAAG,GAAG;;CCrHjB,YAAY,CAAC;AACb;CACA,MAAM,CAAC,cAAc,CAACC,KAAO,EAAE,YAAY,EAAE;CAC7C,EAAE,KAAK,EAAE,IAAI;CACb,CAAC,CAAC,CAAC;CACH,IAAA,kBAAA,GAAAA,KAAA,CAAA,gBAAwB,GAAG,iBAAuB,GAAAA,KAAA,CAAA,eAAA,GAAG,2BAAgB,GAAG,KAAK,CAAC,CAAC;AAC/E;CACA,IAAI,IAAI,GAAG,sBAAsB,CAACJ,KAAkD,CAAC,CAAC;AACtF;CACA,IAAI,qBAAqB,GAAGC,GAAkC,CAAC;AAC/D;CACA,IAAI,KAAK,GAAGI,KAAoD,CAAC;AACjE;CACA,IAAI,YAAY,GAAGC,aAAwB,CAAC;AAC5C;CACA,IAAI,IAAI,GAAGC,KAAgB,CAAC;AAC5B;CACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;AACjG;CACA,IAAI,QAAQ,GAAG,SAAS,QAAQ,CAAC,WAAW,EAAE;CAC9C,EAAE,IAAI,QAAQ,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;CAC7C,EAAE,OAAO,CAAC,CAAC,EAAE,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;CAC7F,CAAC,CAAC;AACF;CACA,IAAgB,UAAA,GAAAH,KAAA,CAAA,QAAA,GAAG,QAAQ,CAAC;AAC5B;CACA,IAAI,aAAa,GAAG,SAAS,aAAa,CAAC,KAAK,EAAE;CAClD,EAAE,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;CACxC,EAAE,IAAI,SAAS,GAAG,IAAI,iBAAiB,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AACzD;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;CACpB,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACrC,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1D,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAC9B,IAAI,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAClC,IAAI,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAClC,IAAI,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,UAAU,KAAK,KAAK,CAAC,gBAAgB,GAAG,GAAG,GAAG,CAAC,CAAC;CACzE,GAAG;AACH;CACA,EAAE,OAAO,SAAS,CAAC;CACnB,CAAC,CAAC;AACF;CACA,IAAI,eAAe,GAAG,SAAS,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE;CAC5E,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;CACpB,IAAI,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;CAC9D,IAAI,OAAO;CACX,GAAG;AACH;CACA,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC1B;CACA,EAAE,IAAI,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;AACrE;CACA,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACrF;CACA,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE;CACvC,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;CAC3E,GAAG;AACH;CACA,EAAE,IAAI,WAAW,GAAG;CACpB,IAAI,MAAM,EAAE,MAAM;CAClB,IAAI,IAAI,EAAE;CACV,MAAM,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG;CACrC,MAAM,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI;CACvC,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK;CACzC,MAAM,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;CAC3C,KAAK;CACL,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE;CAC3D,IAAI,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC;CACvC,GAAG,MAAM;CACT,IAAI,WAAW,CAAC,UAAU,GAAG,GAAG,CAAC;CACjC,GAAG;AACH;AACA;CACA,EAAE,IAAI,KAAK,CAAC,GAAG,EAAE;CACjB,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC;AACrD;CACA,IAAI,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACzD;CACA,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE;CAChD,MAAM,WAAW,CAAC,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC;CACrE,KAAK;CACL,GAAG;AACH;AACA;CACA,EAAE,IAAI,eAAe,EAAE;CACvB,IAAI,WAAW,CAAC,KAAK,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;CACnD,GAAG;AACH;CACA,EAAE,OAAO,WAAW,CAAC;CACrB,CAAC,CAAC;AACF;CACA,IAAuB,iBAAA,GAAAA,KAAA,CAAA,eAAA,GAAG,eAAe,CAAC;AAC1C;CACA,IAAI,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,EAAE;CAC/E,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;CAC9C,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC;CACnB,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;CACtB,IAAI,OAAO,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;CAChE,GAAG,CAAC,CAAC;CACL,CAAC,CAAC;AACF;CACA,kBAAA,GAAAA,KAAA,CAAA,gBAAwB,GAAG,gBAAgB;;;ACvGhB;AACE;AACL;CAgCxB,MAAA,SAAA,CAAA;CACA;CAAA;CAAA;CAAA,EAAA,WAAA,CAAA,MAAA,EAAA;CAyBQ,IAAA,IAAA,CAAA,MAAA,IAAA,CAAA,MAAA,CAAA,MAAA;CAA+B,MAAA,MAAA,IAAA,KAAA,CAAA,gBAAA,CAAA,CAAA;CAI/B,IAAA,MAAA,CAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,CAAA,GAAA,MAAA,CAAA;CAEA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;CACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;CACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;CACA,IAAA,IAAA,CAAA,QAAA,GAAA,IAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,KAAA,KAAA,KAAA,CAAA,OAAA,CAAA,CAAA;CACA,IAAA,IAAA,CAAA,WAAA,GAAA,IAAA,CAAA,MAAA,CAAA,MAAA,CAAA;CACA,IAAA,IAAA,CAAA,QAAA,GAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,WAAA,GAAA,CAAA,CAAA,CAAA,GAAA,CAAA;CAAkD,GAAA;CACtD;CAAA,EAAA,OAAA,GAAA;CAKI,IAAA,KAAA,MAAA,OAAA,IAAA,IAAA,CAAA,QAAA,EAAA;CAEI,MAAA,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;CAAoB,KAAA;CAExB,IAAA,KAAA,MAAA,KAAA,IAAA,IAAA,CAAA,MAAA,EAAA;CAEI,MAAA,KAAA,CAAA,OAAA,GAAA,IAAA,CAAA;CAAgB,KAAA;CAEpB,IAAA,IAAA,CAAA,MAAA,CAAA,MAAA,GAAA,CAAA,CAAA;CACA,IAAA,IAAA,CAAA,QAAA,CAAA,MAAA,GAAA,CAAA,CAAA;CACA,IAAA,MAAA,CAAA,MAAA,CAAA,IAAA,EAAA;CAAoB,MAAA,MAAA,EAAA,IAAA;CACR,MAAA,QAAA,EAAA,IAAA;CACE,MAAA,KAAA,EAAA,CAAA;CACH,MAAA,MAAA,EAAA,CAAA;CACC,MAAA,QAAA,EAAA,CAAA;CACE,MAAA,WAAA,EAAA,CAAA;CACG,KAAA,CAAA,CAAA;CAChB,GAAA;CACL;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA,EAAA,OAAA,IAAA,CAAA,MAAA,EAAA,OAAA,EAAA;CAhGJ,IAAA,IAAA,EAAA,CAAA;CAgHQ,IAAA,IAAA,CAAA,MAAA,IAAA,MAAA,CAAA,UAAA,KAAA,CAAA,EAAA;CAEI,MAAA,MAAA,IAAA,KAAA,CAAA,gBAAA,CAAA,CAAA;CAAgC,KAAA;CAIpC,IAAA,MAAA,cAAA,GAAA,CAAA,IAAA,KAAA;CAtHR,MAAA,IAAA,GAAA,CAAA;CAwHY,MAAA,IAAA,UAAA,GAAA,IAAA,CAAA;CAEA,MAAA,KAAA,MAAA,KAAA,IAAA,IAAA,CAAA,MAAA,EAAA;CAEI,QAAA,UAAA,GAAA,CAAA,GAAA,GAAA,KAAA,CAAA,GAAA,KAAA,IAAA,GAAA,GAAA,GAAA,UAAA,CAAA;CAGA,QAAA,IAAA,OAAA,IAAA,KAAA,IAAA,EAAA,KAAA,IAAA,KAAA,CAAA,EAAA;CAEI,UAAA,KAAA,CAAA,GAAA,GAAA,UAAA,CAAA;CAAY,SAAA;CAChB,OAAA;CACJ,KAAA,CAAA;CAGJ,IAAA,MAAA,GAAA,GAAAI,UAAA,CAAA,MAAA,CAAA,CAAA;CAEA,IAAA,cAAA,CAAA,GAAA,CAAA,CAAA;CACA,IAAA,MAAA,SAAA,GAAAC,kBAAA,CAAA,GAAA,EAAA,IAAA,CAAA,CAAA;CACA,IAAA,MAAA,MAAA,GAAA,EAAA,CAAA;CACA,IAAA,MAAA,SAAA,GAAA,GAAA,CAAA,GAAA,CAAA,KAAA,CAAA;CACA,IAAA,MAAA,UAAA,GAAA,GAAA,CAAA,GAAA,CAAA,MAAA,CAAA;CAGA,IAAA,MAAA,MAAA,GAAe,IAAW,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,YAAA,CAAA,SAAA,EAAA,UAAA,CAAA,CAAA;CAC1B,IAAA,MAAA,OAAA,GAAA,MAAA,CAAA,UAAA,CAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,CAAA,CAAA;CACA,IAAA,MAAA,WAAA,GAAoB,IAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,YAAA,EAAA,CAAA;CACpB,IAAA,MAAA,YAAA,GAAA,WAAA,CAAA,UAAA,CAAA,IAAA,CAAA,CAAA;CAEA,IAAA,IAAA,IAAA,GAAA,CAAA,CAAA;CACA,IAAA,IAAA,aAAA,GAAA,IAAA,CAAA;CAGA,IAAA,MAAA,YAAA,GAAA,GAAA,IAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,GAAA,KAAA,IAAA,GAAA,EAAA,GAAA,EAAA,CAAA,CAAA;CAGA,IAAA,KAAA,IAAA,CAAA,GAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,MAAA,EAAA,CAAA,EAAA,EAAA;CAGI,MAAA,MAAA;CAAM,QAAA,YAAA,GAAA,CAAA;CACa,QAAA,KAAA,GAAA,YAAA;CACP,QAAA,KAAA;CACR,QAAA,IAAA,EAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,EAAA;CACiC,OAAA,GAAA,SAAA,CAAA,CAAA,CAAA,CAAA;CAGrC,MAAA,WAAA,CAAA,KAAA,GAAA,KAAA,CAAA;CACA,MAAA,WAAA,CAAA,MAAA,GAAA,MAAA,CAAA;CACA,MAAA,YAAA,CAAA,SAAA,CAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,MAAA,CAAA,CAAA;CACA,MAAA,MAAA,SAAA,GAAA,YAAA,CAAA,eAAA,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA;CAEA,MAAA,SAAA,CAAA,IAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;CACA,MAAA,YAAA,CAAA,YAAA,CAAA,SAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;CAEA,MAAA,IAAA,YAAA,KAAA,CAAA,EAAA;CAEI,QAAA,aAAA,GAAA,OAAA,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,UAAA,CAAA,CAAA;CAAgE,OAAA;CAGpE,MAAA,OAAA,CAAA,SAAA,CAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,CAAA;CACA,MAAA,MAAA,SAAA,GAAA,OAAA,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,UAAA,CAAA,CAAA;CAEA,MAAA,IAAA,YAAA,KAAA,CAAA,EAAA;CAEI,QAAA,OAAA,CAAA,SAAA,CAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,UAAA,CAAA,CAAA;CAA6C,OAAA,MAAA,IAAA,YAAA,KAAA,CAAA,EAAA;CAI7C,QAAA,OAAA,CAAA,YAAA,CAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;CAAqD,OAAA;CAIzD,MAAA,MAAA,QAAA,GAAiB,IAAW,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,YAAA;CAAM,QAAA,SAAA,CAAA,KAAA;CACpB,QAAA,SAAA,CAAA,MAAA;CACA,OAAA,CAAA;CAEd,MAAA,MAAA,eAAA,GAAA,QAAA,CAAA,UAAA,CAAA,IAAA,CAAA,CAAA;CAEA,MAAA,eAAA,CAAA,YAAA,CAAA,SAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;CAEA,MAAA,MAAA,CAAA,IAAA,CAAA;CAAY,QAAA,KAAA,EAAA,IAAA;CACD,QAAA,GAAA,EAAA,IAAA,GAAA,KAAA;CACK,QAAA,OAAA,EAAA,IACC,IAAQ,CAAA,OAAA,CAAA;CAAA,UAAA,MAAA,EAAA,IACL,IAAa,CAAA,YAAA,CAAA;CAAA,YAAA,QAAA;CACrB,WAAA,CAAA;CACH,SAAA,CAAA;CACJ,OAAA,CAAA,CAAA;CAEL,MAAA,IAAA,IAAA,KAAA,CAAA;CAAQ,KAAA;CAIZ,IAAA,MAAA,CAAA,KAAA,GAAA,MAAA,CAAA,MAAA,GAAA,CAAA,CAAA;CACA,IAAA,WAAA,CAAA,KAAA,GAAA,WAAA,CAAA,MAAA,GAAA,CAAA,CAAA;CAEA,IAAA,OAAA,IAAA,SAAA,CAAA,MAAA,CAAA,CAAA;CAA2B,GAAA;CAEnC;;;AC5MA,OAAA,QAAA,GAAA;CAAiB,EAAA,SAAA,EACF,IAAc,CAAA,aAAA,CAAA,KAAA;CAAA,EAAA,SAAA,EAAA;CACd,IAAA,IAAA,EAAA,YAAA,IAAA;CACW,IAAA,GAAA,EAAA,OAAA,OAAA,KAAA,CAAA,GAAA,OAAA,EAAA,KAAA,CAAA;CACwB,IAAA,MAAA,EAAA,OAAA,OAAA,KAAA,OAAA,CAAA,MAAA,CAAA,CAAA,MAAA,KAAA,MAAA,KAAA,KAAA,CAAA;CAC4B,GAAA;CAC1E,EAAA,MAAA,EAAA;CACQ,IAAA,IAAA,EAAA,WAAA;CACE,IAAA,IAAA,EAAA,CAAA,GAAA,KACS,IAAK,CAAA,IAAA,CAAA,OAAA,CAAA,GAAA,CAAA,KAAA,MAAA;CAAiB,IAAA,IAAA,EAAA,OAAA,GAAA,EAAA,KAAA,KAAA;CAGjC,MAAA,MAAA,QAAA,GAAA,MAAuB,IAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA;CACvB,MAAA,MAAA,MAAA,GAAA,MAAA,QAAA,CAAA,WAAA,EAAA,CAAA;CAEA,MAAA,OAAA,SAAA,CAAA,IAAA,CAAA,MAAA,EAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,IAAA,CAAA,CAAA;CAAyC,KAAA;CAC7C,IAAA,MAAA,EAAA,OAAA,KAAA,KAAA;CAGI,MAAA,KAAA,CAAA,OAAA,EAAA,CAAA;CAAc,KAAA;CAClB,GAAA;CAER;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CCqBA,MAAA,UAAA,GAAA,MAAA,UAAA,SAAwB,IACxB,CAAA,MAAA,CAAA;CAAA;CAAA,EAAA,WAAA,CAAA,GAAA,IAAA,EAAA;CA0GQ,IAAA,MAAA,OAAA,GAAA,IAAA,CAAA,CAAA,CAAA,YAAA,SAAA,GAAA,EAAA,MAAA,EAAA,IAAA,CAAA,CAAA,CAAA,EAAA,GAAA,IAAA,CAAA,CAAA,CAAA,CAAA;CAGA,IAAA,MAAA,EAAA,GAAA,MAAA,CAAA,MAAA;CAYW,MAAA,EAAA;CAAQ,MAAA,UAAA,CAAA,cAAA;CACL,MAAA,OAAA;CACV,KAAA,EAAA;CAbA,MAAA,SAAA;CAAA,MAAA,MAAA;CACA,MAAA,GAAA;CACA,MAAA,IAAA;CACA,MAAA,cAAA;CACA,MAAA,QAAA;CACA,MAAA,UAAA;CACA,MAAA,UAAA;CACA,MAAA,aAAA;CACA,MAAA,MAAA;CACA,KAAA,GAAA,EAAA,EAAA,IAAA,GAAA,SAAA,CAAA,EAAA,EAAA;CACG,MAAA,WAAA;CAVH,MAAA,QAAA;CACA,MAAA,KAAA;CACA,MAAA,MAAA;CACA,MAAA,gBAAA;CACA,MAAA,UAAA;CACA,MAAA,YAAA;CACA,MAAA,YAAA;CACA,MAAA,eAAA;CACA,MAAA,QAAA;CACA,KAAA,CAAA,CAAA;CAOJ,IAAA,KAAA,CAAA,cAAA,CAAA,EAAA,OAAA,EAAiB,IAAQ,CAAA,OAAA,CAAA,KAAA,EAAA,EAAA,IAAA,CAAA,CAAA,CAAA;CAjG7B;CAAA;CAAA;CAAA;CAAA,IAAA,IAAA,CAAA,cAAA,GAAA,CAAA,CAAA;CAMA;CAAA;CAAA;CAAA;CAAA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA,CAAA;CAgCA;CAAA,IAAA,IAAA,CAAA,QAAA,GAAA,CAAA,CAAA;CAGA;CAAA,IAAA,IAAA,CAAA,QAAA,GAAA,IAAA,CAAA;CAMA;CAAA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;CAGA;CAAA,IAAA,IAAA,CAAA,aAAA,GAAA,CAAA,CAAA;CAGA;CAAA,IAAA,IAAA,CAAA,WAAA,GAAA,KAAA,CAAA;CAGA;CAAA,IAAA,IAAA,CAAA,oBAAA,GAAA,KAAA,CAAA;CAGA;CAAA,IAAA,IAAA,CAAA,QAAA,GAAA,KAAA,CAAA;CAGA;CAAA,IAAA,IAAA,CAAA,YAAA,GAAA,CAAA,CAAA;CAsCI,IAAA,IAAA,CAAA,QAAA,GAAA,MAAA,IAAA,CAAA,YAAA,EAAA,CAAA;CAEA,IAAA,IAAA,CAAA,OAAA,GAAA,MAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA;CAEA,IAAA,IAAA,CAAA,QAAA,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA,GAAA,CAAA;CACA,IAAA,IAAA,CAAA,OAAA,GAAA,MAAA,CAAA;CACA,IAAA,IAAA,CAAA,QAAA,GAAA,KAAA,CAAA;CACA,IAAA,IAAA,CAAA,YAAA,GAAA,CAAA,CAAA;CACA,IAAA,IAAA,CAAA,oBAAA,GAAA,KAAA,CAAA;CACA,IAAA,MAAA,CAAA,MAAA,CAAA,IAAA,EAAA;CAAoB,MAAA,GAAA;CAChB,MAAA,IAAA;CACA,MAAA,cAAA;CACA,MAAA,QAAA;CACA,MAAA,UAAA;CACA,MAAA,UAAA;CACA,MAAA,aAAA;CACA,MAAA,MAAA;CACA,KAAA,CAAA,CAAA;CAIJ,IAAA,IAAA,CAAA,YAAA,GAAA,CAAA,CAAA;CACA,IAAA,IAAA,QAAA,EAAA;CAEI,MAAA,IAAA,CAAA,IAAA,EAAA,CAAA;CAAU,KAAA;CACd,GAAA;CACJ;CAAA,EAAA,IAAA,GAAA;CAKI,IAAA,IAAA,CAAA,IAAA,CAAA,QAAA,EAAA;CAEI,MAAA,OAAA;CAAA,KAAA;CAGJ,IAAA,IAAA,CAAA,QAAA,GAAA,KAAA,CAAA;CACA,IAAA,IAAA,IAAA,CAAA,WAAA,IAAA,IAAA,CAAA,oBAAA,EAAA;CAEI,MAAA,IAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,IAAA,CAAA,MAAA,EAAA,IAAA,CAAA,CAAA;CACA,MAAA,IAAA,CAAA,oBAAA,GAAA,KAAA,CAAA;CAA4B,KAAA;CAChC,GAAA;CACJ;CAAA,EAAA,IAAA,GAAA;CAKI,IAAA,IAAA,IAAA,CAAA,QAAA,EAAA;CAEI,MAAA,OAAA;CAAA,KAAA;CAGJ,IAAA,IAAA,CAAA,QAAA,GAAA,IAAA,CAAA;CACA,IAAA,IAAA,IAAA,CAAA,WAAA,IAAA,CAAA,IAAA,CAAA,oBAAA,EAAA;CAEI,MAAA,IAAA,CAAA,MAAA,+BAAqC;CACrC,MAAA,IAAA,CAAA,oBAAA,GAAA,IAAA,CAAA;CAA4B,KAAA;CAIhC,IAAA,IAAA,CAAA,IAAA,CAAA,IAAA,IAAA,IAAA,CAAA,YAAA,KAAA,IAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,GAAA,CAAA,EAAA;CAEI,MAAA,IAAA,CAAA,YAAA,GAAA,CAAA,CAAA;CAAoB,KAAA;CACxB,GAAA;CACJ;CAAA;CAAA;CAAA;CAAA,EAAA,IAAA,QAAA,GAAA;CAQI,IAAA,OAAA,IAAA,CAAA,YAAA,GAAA,IAAA,CAAA,QAAA,CAAA;CAAgC,GAAA;CACpC;CAAA,EAAA,IAAA,OAAA,GAAA;CAKI,IAAA,OAAA,IAAA,CAAA,QAAA,CAAA;CAAY,GAAA;CAChB;CAAA;CAAA;CAAA;CAAA;CAAA,EAAA,MAAA,CAAA,MAAA,EAAA;CAzQJ,IAAA,IAAA,EAAA,EAAA,EAAA,CAAA;CAkRQ,IAAA,IAAA,CAAA,IAAA,CAAA,QAAA,EAAA;CAEI,MAAA,OAAA;CAAA,KAAA;CAGJ,IAAA,MAAA,OAAA,GAAA,IAAA,CAAA,cAAA,GAAA,MAAA,CAAA,SAAA,GAAyD,IAAO,CAAA,MAAA,CAAA,UAAA,CAAA;CAChE,IAAA,MAAA,WAAA,GAAA,IAAA,CAAA,YAAA,GAAA,OAAA,CAAA;CACA,IAAA,MAAA,SAAA,GAAA,WAAA,GAAA,IAAA,CAAA,QAAA,CAAA;CAEA,IAAA,MAAA,UAAA,GAAA,IAAA,CAAA,OAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA,KAAA,KAAA,KAAA,CAAA,KAAA,IAAA,SAAA,IAAA,KAAA,CAAA,GAAA,GAAA,SAAA,CAAA,CAAA;CAGA,IAAA,IAAA,WAAA,IAAA,IAAA,CAAA,QAAA,EAAA;CAEI,MAAA,IAAA,IAAA,CAAA,IAAA,EAAA;CAEI,QAAA,IAAA,CAAA,YAAA,GAAA,SAAA,CAAA;CACA,QAAA,IAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,CAAA;CACA,QAAA,CAAA,EAAA,GAAA,IAAA,CAAA,MAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;CAAA,OAAA,MAAA;CAIA,QAAA,IAAA,CAAA,YAAA,GAAA,IAAA,CAAA,QAAA,CAAA;CACA,QAAA,IAAA,CAAA,iBAAA,CAAA,IAAA,CAAA,WAAA,GAAA,CAAA,CAAA,CAAA;CACA,QAAA,CAAA,EAAA,GAAA,IAAA,CAAA,UAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;CACA,QAAA,IAAA,CAAA,IAAA,EAAA,CAAA;CAAU,OAAA;CACd,KAAA,MAAA;CAIA,MAAA,IAAA,CAAA,YAAA,GAAA,SAAA,CAAA;CACA,MAAA,IAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,CAAA;CAAiC,KAAA;CACrC,GAAA;CACJ;CAAA,EAAA,YAAA,GAAA;CAKI,IAAA,IAAA,CAAA,IAAA,CAAA,KAAA,EAAA;CAEI,MAAA,OAAA;CAAA,KAAA;CAIJ,IAAA,IAAA,CAAA,OAAA,GAAA,IAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,CAAA,aAAA,CAAA,CAAA,OAAA,CAAA;CAGA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;CAAa,GAAA;CACjB;CAAA;CAAA;CAAA;CAAA,EAAA,IAAA,UAAA,GAAA;CAQI,IAAA,OAAA,IAAA,CAAA,WAAA,CAAA;CAAY,GAAA;CAChB,EAAA,IAAA,UAAA,CAAA,KAAA,EAAA;CAII,IAAA,IAAA,KAAA,KAAA,IAAA,CAAA,WAAA,EAAA;CAEI,MAAA,IAAA,CAAA,WAAA,GAAA,KAAA,CAAA;CAEA,MAAA,IAAA,CAAA,IAAA,CAAA,WAAA,IAAA,IAAA,CAAA,oBAAA,EAAA;CAEI,QAAA,IAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,IAAA,CAAA,MAAA,EAAA,IAAA,CAAA,CAAA;CACA,QAAA,IAAA,CAAA,oBAAA,GAAA,KAAA,CAAA;CAA4B,OAAA,MAAA,IAAA,IAAA,CAAA,WAAA,IAAA,CAAA,IAAA,CAAA,oBAAA,IAAA,IAAA,CAAA,QAAA,EAAA;CAI5B,QAAA,IAAA,CAAA,MAAA,CAAA,MAAA,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,EAAA,IAAA,CAAA,CAAA;CACA,QAAA,IAAA,CAAA,oBAAA,GAAA,IAAA,CAAA;CAA4B,OAAA;CAChC,KAAA;CACJ,GAAA;CACJ;CAAA,EAAA,IAAA,YAAA,GAAA;CAKI,IAAA,OAAA,IAAA,CAAA,aAAA,CAAA;CAAY,GAAA;CAChB,EAAA,IAAA,YAAA,CAAA,KAAA,EAAA;CAGI,IAAA,IAAA,CAAA,iBAAA,CAAA,KAAA,CAAA,CAAA;CACA,IAAA,IAAA,CAAA,YAAA,GAAA,IAAA,CAAA,OAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA,KAAA,CAAA;CAA+C,GAAA;CACnD;CAAA,EAAA,IAAA,MAAA,GAAA;CAKI,IAAA,OAAA,IAAA,CAAA,OAAA,CAAA;CAAY,GAAA;CAChB;CAAA;CAAA;CAAA;CAAA,EAAA,iBAAA,CAAA,KAAA,EAAA;CA/WJ,IAAA,IAAA,EAAA,CAAA;CAuXQ,IAAA,IAAA,KAAA,GAAA,CAAA,IAAA,KAAA,IAAA,IAAA,CAAA,WAAA,EAAA;CAEI,MAAA,MAAA,IAAA,KAAA,CAAA,CAAA,yCAAA,EAAA,IAAA,CAAA,WAAA,CAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA,CAAA;CAA4F,KAAA;CAEhG,IAAA,IAAA,IAAA,CAAA,aAAA,KAAA,KAAA,EAAA;CAEI,MAAA,IAAA,CAAA,aAAA,GAAA,KAAA,CAAA;CACA,MAAA,IAAA,CAAA,KAAA,GAAA,IAAA,CAAA;CACA,MAAA,CAAA,EAAA,GAAA,IAAA,CAAA,aAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;CAAqB,KAAA;CACzB,GAAA;CACJ;CAAA,EAAA,IAAA,WAAA,GAAA;CAKI,IAAA,OAAA,IAAA,CAAA,OAAA,CAAA,WAAA,CAAA;CAAoB,GAAA;CACxB;CAAA;CAAA;CAAA;CAAA,EAAA,OAAA,CAAA,WAAA,GAAA,KAAA,EAAA;CAQI,IAAA,IAAA,CAAA,IAAA,EAAA,CAAA;CACA,IAAA,KAAA,CAAA,OAAA,EAAA,CAAA;CAEA,IAAA,IAAA,WAAA,EAAA;CAEI,MAAA,IAAA,CAAA,OAAA,CAAA,OAAA,EAAA,CAAA;CAAqB,KAAA;CAGzB,IAAA,MAAA,UAAA,GAAA,IAAA,CAAA;CAEA,IAAA,IAAA,CAAA,OAAA,GAAA,UAAA,CAAA;CACA,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA,CAAA;CACA,IAAA,IAAA,CAAA,aAAA,GAAA,UAAA,CAAA;CACA,IAAA,IAAA,CAAA,MAAA,GAAA,UAAA,CAAA;CAAc,GAAA;CAClB;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA,EAAA,KAAA,GAAA;CAaI,IAAA,MAAA,KAAA,GAAA,IAAA,UAAA,CAAA;CAA4B,MAAA,MAAA,EAAA,IAAA,CAAA,OAAA;CACX,MAAA,UAAA,EAAA,IAAA,CAAA,WAAA;CACI,MAAA,IAAA,EAAA,IAAA,CAAA,IAAA;CACN,MAAA,QAAA,EAAA,IAAA,CAAA,QAAA;CACI,MAAA,SAAA,EAAA,IAAA,CAAA,OAAA,CAAA,MAAA,CAAA,SAAA;CACgB,MAAA,cAAA,EAAA,IAAA,CAAA,cAAA;CACV,MAAA,UAAA,EAAA,IAAA,CAAA,UAAA;CACJ,MAAA,aAAA,EAAA,IAAA,CAAA,aAAA;CACG,MAAA,MAAA,EAAA,IAAA,CAAA,MAAA;CACP,KAAA,CAAA,CAAA;CAGjB,IAAA,KAAA,CAAA,KAAA,GAAA,IAAA,CAAA;CAEA,IAAA,OAAA,KAAA,CAAA;CAAO,GAAA;CAEf,CAAA,CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAlYM,UAAA,CAAA,cAAA,GAAA;CAc+D,EAAA,SAAA,EAAA,QAAA;CAClD,EAAA,GAAA,EAAA,EAAA;CACN,EAAA,IAAA,EAAA,IAAA;CACC,EAAA,cAAA,EAAA,CAAA;CACU,EAAA,QAAA,EAAA,IAAA;CACN,EAAA,UAAA,EAAA,IAAA;CACE,EAAA,UAAA,EAAA,IAAA;CACA,EAAA,aAAA,EAAA,IAAA;CACG,EAAA,MAAA,EAAA,IAAA;CAEnB,CAAA,CAAA;AAxBJ,KAAA,SAAA,GAAA;;;;;CCnDA,IAAA,CAAA,UAAA,CAAA,GAAA,CAAA,QAAA,CAAA;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0,1,2,3,4,5]}
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * PixiJS - v8.7.0
3
- * Compiled Thu, 23 Jan 2025 15:04:23 UTC
2
+ * PixiJS - v8.7.1
3
+ * Compiled Thu, 23 Jan 2025 20:50:46 UTC
4
4
  *
5
5
  * PixiJS is licensed under the MIT License.
6
6
  * http://www.opensource.org/licenses/mit-license
7
- */this.PIXI=this.PIXI||{};var gif_js=function(k){"use strict";var Xe=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Z(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function ze(r){return r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function Ee(r){return r&&Object.prototype.hasOwnProperty.call(r,"default")&&Object.keys(r).length===1?r.default:r}function Ge(r){if(r.__esModule)return r;var t=r.default;if(typeof t=="function"){var e=function a(){return this instanceof a?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};e.prototype=t.prototype}else e={};return Object.defineProperty(e,"__esModule",{value:!0}),Object.keys(r).forEach(function(a){var n=Object.getOwnPropertyDescriptor(r,a);Object.defineProperty(e,a,n.get?n:{enumerable:!0,get:function(){return r[a]}})}),e}var S={},M={},P={};Object.defineProperty(P,"__esModule",{value:!0});var J=P.loop=ee=P.conditional=V=P.parse=void 0,Q=function r(t,e){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:a;if(Array.isArray(e))e.forEach(function(u){return r(t,u,a,n)});else if(typeof e=="function")e(t,a,n,r);else{var i=Object.keys(e)[0];Array.isArray(e[i])?(n[i]={},r(t,e[i],a,n[i])):n[i]=e[i](t,a,n,r)}return a},V=P.parse=Q,W=function(t,e){return function(a,n,i,u){e(a,n,i)&&u(a,t,n,i)}},ee=P.conditional=W,te=function(t,e){return function(a,n,i,u){for(var o=[],c=a.pos;e(a,n,i);){var p={};if(u(a,t,n,p),a.pos===c)break;c=a.pos,o.push(p)}return o}};J=P.loop=te;var f={};Object.defineProperty(f,"__esModule",{value:!0});var re=f.readBits=ve=f.readArray=fe=f.readUnsigned=pe=f.readString=ce=f.peekBytes=de=f.readBytes=oe=f.peekByte=ie=f.readByte=ne=f.buildStream=void 0,ae=function(t){return{data:t,pos:0}},ne=f.buildStream=ae,E=function(){return function(t){return t.data[t.pos++]}},ie=f.readByte=E,se=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return function(e){return e.data[e.pos+t]}},oe=f.peekByte=se,O=function(t){return function(e){return e.data.subarray(e.pos,e.pos+=t)}},de=f.readBytes=O,ue=function(t){return function(e){return e.data.subarray(e.pos,e.pos+t)}},ce=f.peekBytes=ue,le=function(t){return function(e){return Array.from(O(t)(e)).map(function(a){return String.fromCharCode(a)}).join("")}},pe=f.readString=le,he=function(t){return function(e){var a=O(2)(e);return t?(a[1]<<8)+a[0]:(a[0]<<8)+a[1]}},fe=f.readUnsigned=he,ge=function(t,e){return function(a,n,i){for(var u=typeof e=="function"?e(a,n,i):e,o=O(t),c=new Array(u),p=0;p<u;p++)c[p]=o(a);return c}},ve=f.readArray=ge,ye=function(t,e,a){for(var n=0,i=0;i<a;i++)n+=t[e+i]&&Math.pow(2,a-i-1);return n},me=function(t){return function(e){for(var a=E()(e),n=new Array(8),i=0;i<8;i++)n[7-i]=!!(a&1<<i);return Object.keys(t).reduce(function(u,o){var c=t[o];return c.length?u[o]=ye(n,c.index,c.length):u[o]=n[c.index],u},{})}};re=f.readBits=me,function(r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var t=P,e=f,a={blocks:function(s){for(var h=0,d=[],x=s.data.length,w=0,v=(0,e.readByte)()(s);v!==h&&v;v=(0,e.readByte)()(s)){if(s.pos+v>=x){var b=x-s.pos;d.push((0,e.readBytes)(b)(s)),w+=b;break}d.push((0,e.readBytes)(v)(s)),w+=v}for(var y=new Uint8Array(w),m=0,_=0;_<d.length;_++)y.set(d[_],m),m+=d[_].length;return y}},n=(0,t.conditional)({gce:[{codes:(0,e.readBytes)(2)},{byteSize:(0,e.readByte)()},{extras:(0,e.readBits)({future:{index:0,length:3},disposal:{index:3,length:3},userInput:{index:6},transparentColorGiven:{index:7}})},{delay:(0,e.readUnsigned)(!0)},{transparentColorIndex:(0,e.readByte)()},{terminator:(0,e.readByte)()}]},function(l){var s=(0,e.peekBytes)(2)(l);return s[0]===33&&s[1]===249}),i=(0,t.conditional)({image:[{code:(0,e.readByte)()},{descriptor:[{left:(0,e.readUnsigned)(!0)},{top:(0,e.readUnsigned)(!0)},{width:(0,e.readUnsigned)(!0)},{height:(0,e.readUnsigned)(!0)},{lct:(0,e.readBits)({exists:{index:0},interlaced:{index:1},sort:{index:2},future:{index:3,length:2},size:{index:5,length:3}})}]},(0,t.conditional)({lct:(0,e.readArray)(3,function(l,s,h){return Math.pow(2,h.descriptor.lct.size+1)})},function(l,s,h){return h.descriptor.lct.exists}),{data:[{minCodeSize:(0,e.readByte)()},a]}]},function(l){return(0,e.peekByte)()(l)===44}),u=(0,t.conditional)({text:[{codes:(0,e.readBytes)(2)},{blockSize:(0,e.readByte)()},{preData:function(s,h,d){return(0,e.readBytes)(d.text.blockSize)(s)}},a]},function(l){var s=(0,e.peekBytes)(2)(l);return s[0]===33&&s[1]===1}),o=(0,t.conditional)({application:[{codes:(0,e.readBytes)(2)},{blockSize:(0,e.readByte)()},{id:function(s,h,d){return(0,e.readString)(d.blockSize)(s)}},a]},function(l){var s=(0,e.peekBytes)(2)(l);return s[0]===33&&s[1]===255}),c=(0,t.conditional)({comment:[{codes:(0,e.readBytes)(2)},a]},function(l){var s=(0,e.peekBytes)(2)(l);return s[0]===33&&s[1]===254}),p=[{header:[{signature:(0,e.readString)(3)},{version:(0,e.readString)(3)}]},{lsd:[{width:(0,e.readUnsigned)(!0)},{height:(0,e.readUnsigned)(!0)},{gct:(0,e.readBits)({exists:{index:0},resolution:{index:1,length:3},sort:{index:4},size:{index:5,length:3}})},{backgroundColorIndex:(0,e.readByte)()},{pixelAspectRatio:(0,e.readByte)()}]},(0,t.conditional)({gct:(0,e.readArray)(3,function(l,s){return Math.pow(2,s.lsd.gct.size+1)})},function(l,s){return s.lsd.gct.exists}),{frames:(0,t.loop)([n,o,c,i,u],function(l){var s=(0,e.peekByte)()(l);return s===33||s===44})}],g=p;r.default=g}(M);var Le=Z(M),A={};Object.defineProperty(A,"__esModule",{value:!0});var _e=A.deinterlace=void 0,xe=function(t,e){for(var a=new Array(t.length),n=t.length/e,i=function(s,h){var d=t.slice(h*e,(h+1)*e);a.splice.apply(a,[s*e,e].concat(d))},u=[0,4,2,1],o=[8,8,4,2],c=0,p=0;p<4;p++)for(var g=u[p];g<n;g+=o[p])i(g,c),c++;return a};_e=A.deinterlace=xe;var U={};Object.defineProperty(U,"__esModule",{value:!0});var be=U.lzw=void 0,Ie=function(t,e,a){var n=4096,i=-1,u=a,o,c,p,g,l,s,h,B,d,x,_,w,F,I,C,T,v=new Array(a),b=new Array(n),y=new Array(n),m=new Array(n+1);for(w=t,c=1<<w,l=c+1,o=c+2,h=i,g=w+1,p=(1<<g)-1,d=0;d<c;d++)b[d]=0,y[d]=d;var _,B,X,F,I,T,C;for(_=B=X=F=I=T=C=0,x=0;x<u;){if(I===0){if(B<g){_+=e[C]<<B,B+=8,C++;continue}if(d=_&p,_>>=g,B-=g,d>o||d==l)break;if(d==c){g=w+1,p=(1<<g)-1,o=c+2,h=i;continue}if(h==i){m[I++]=y[d],h=d,F=d;continue}for(s=d,d==o&&(m[I++]=F,d=h);d>c;)m[I++]=y[d],d=b[d];F=y[d]&255,m[I++]=F,o<n&&(b[o]=h,y[o]=F,o++,!(o&p)&&o<n&&(g++,p+=o)),h=s}I--,v[T++]=m[I],x++}for(x=T;x<u;x++)v[x]=0;return v};be=U.lzw=Ie,Object.defineProperty(S,"__esModule",{value:!0});var G=S.decompressFrames=Oe=S.decompressFrame=L=S.parseGIF=void 0,we=Se(M),Be=P,Pe=f,Fe=A,Te=U;function Se(r){return r&&r.__esModule?r:{default:r}}var Ce=function(t){var e=new Uint8Array(t);return(0,Be.parse)((0,Pe.buildStream)(e),we.default)},L=S.parseGIF=Ce,ke=function(t){for(var e=t.pixels.length,a=new Uint8ClampedArray(e*4),n=0;n<e;n++){var i=n*4,u=t.pixels[n],o=t.colorTable[u]||[0,0,0];a[i]=o[0],a[i+1]=o[1],a[i+2]=o[2],a[i+3]=u!==t.transparentIndex?255:0}return a},R=function(t,e,a){if(!t.image){console.warn("gif frame does not have associated image.");return}var n=t.image,i=n.descriptor.width*n.descriptor.height,u=(0,Te.lzw)(n.data.minCodeSize,n.data.blocks,i);n.descriptor.lct.interlaced&&(u=(0,Fe.deinterlace)(u,n.descriptor.width));var o={pixels:u,dims:{top:t.image.descriptor.top,left:t.image.descriptor.left,width:t.image.descriptor.width,height:t.image.descriptor.height}};return n.descriptor.lct&&n.descriptor.lct.exists?o.colorTable=n.lct:o.colorTable=e,t.gce&&(o.delay=(t.gce.delay||10)*10,o.disposalType=t.gce.extras.disposal,t.gce.extras.transparentColorGiven&&(o.transparentIndex=t.gce.transparentColorIndex)),a&&(o.patch=ke(o)),o},Oe=S.decompressFrame=R,Ae=function(t,e){return t.frames.filter(function(a){return a.image}).map(function(a){return R(a,t.gct,e)})};G=S.decompressFrames=Ae;let D=class K{constructor(t){const[{texture:{width:e,height:a}}]=t;this.width=e,this.height=a,this.frames=t,this.textures=this.frames.map(n=>n.texture),this.totalFrames=this.frames.length,this.duration=this.frames[this.totalFrames-1].end}destroy(){for(const t of this.textures)t.destroy(!0);for(const t of this.frames)t.texture=null;this.frames.length=0,this.textures.length=0,Object.assign(this,{frames:null,textures:null,width:0,height:0,duration:0,totalFrames:0})}static from(t,e){var a;if(!t||t.byteLength===0)throw new Error("Invalid buffer");const n=v=>{var b;let y=null;for(const m of v.frames)y=(b=m.gce)!=null?b:y,"image"in m&&!("gce"in m)&&(m.gce=y)},i=L(t);n(i);const u=G(i,!0),o=[],c=i.lsd.width,p=i.lsd.height,g=PIXI.DOMAdapter.get().createCanvas(c,p),l=g.getContext("2d",{willReadFrequently:!0}),s=PIXI.DOMAdapter.get().createCanvas(),h=s.getContext("2d");let d=0,x=null;const w=1e3/((a=e==null?void 0:e.fps)!=null?a:30);for(let v=0;v<u.length;v++){const{disposalType:b=2,delay:y=w,patch:m,dims:{width:_,height:B,left:X,top:F}}=u[v];s.width=_,s.height=B,h.clearRect(0,0,_,B);const I=h.createImageData(_,B);I.data.set(m),h.putImageData(I,0,0),b===3&&(x=l.getImageData(0,0,c,p)),l.drawImage(s,X,F);const T=l.getImageData(0,0,c,p);b===2?l.clearRect(0,0,c,p):b===3&&l.putImageData(x,0,0);const C=PIXI.DOMAdapter.get().createCanvas(T.width,T.height);C.getContext("2d").putImageData(T,0,0),o.push({start:d,end:d+y,texture:new PIXI.Texture({source:new PIXI.CanvasSource({resource:C})})}),d+=y}return g.width=g.height=0,s.width=s.height=0,new K(o)}};const $={extension:PIXI.ExtensionType.Asset,detection:{test:async()=>!0,add:async r=>[...r,"gif"],remove:async r=>r.filter(t=>t!=="gif")},loader:{name:"gifLoader",test:r=>PIXI.path.extname(r)===".gif",load:async(r,t)=>{const e=await(await PIXI.DOMAdapter.get().fetch(r)).arrayBuffer();return D.from(e,t==null?void 0:t.data)},unload:async r=>{r.destroy()}}};PIXI.extensions.add($);var Ue=Object.defineProperty,j=Object.getOwnPropertySymbols,N=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable,H=(r,t,e)=>t in r?Ue(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,je=(r,t)=>{for(var e in t||(t={}))N.call(t,e)&&H(r,e,t[e]);if(j)for(var e of j(t))q.call(t,e)&&H(r,e,t[e]);return r},Me=(r,t)=>{var e={};for(var a in r)N.call(r,a)&&t.indexOf(a)<0&&(e[a]=r[a]);if(r!=null&&j)for(var a of j(r))t.indexOf(a)<0&&q.call(r,a)&&(e[a]=r[a]);return e};const Y=class z extends PIXI.Sprite{constructor(...t){const e=t[0]instanceof D?{source:t[0]}:t[0],a=Object.assign({},z.defaultOptions,e),{scaleMode:n,source:i,fps:u,loop:o,animationSpeed:c,autoPlay:p,autoUpdate:g,onComplete:l,onFrameChange:s,onLoop:h}=a,d=Me(a,["scaleMode","source","fps","loop","animationSpeed","autoPlay","autoUpdate","onComplete","onFrameChange","onLoop"]);super(je({texture:PIXI.Texture.EMPTY},d)),this.animationSpeed=1,this.loop=!0,this.duration=0,this.autoPlay=!0,this.dirty=!1,this._currentFrame=0,this._autoUpdate=!1,this._isConnectedToTicker=!1,this._playing=!1,this._currentTime=0,this.onRender=()=>this._updateFrame(),this.texture=i.textures[0],this.duration=i.frames[i.frames.length-1].end,this._source=i,this._playing=!1,this._currentTime=0,this._isConnectedToTicker=!1,Object.assign(this,{fps:u,loop:o,animationSpeed:c,autoPlay:p,autoUpdate:g,onComplete:l,onFrameChange:s,onLoop:h}),this.currentFrame=0,p&&this.play()}stop(){this._playing&&(this._playing=!1,this._autoUpdate&&this._isConnectedToTicker&&(PIXI.Ticker.shared.remove(this.update,this),this._isConnectedToTicker=!1))}play(){this._playing||(this._playing=!0,this._autoUpdate&&!this._isConnectedToTicker&&(PIXI.Ticker.shared.add(this.update,this,PIXI.UPDATE_PRIORITY.HIGH),this._isConnectedToTicker=!0),!this.loop&&this.currentFrame===this._source.frames.length-1&&(this._currentTime=0))}get progress(){return this._currentTime/this.duration}get playing(){return this._playing}update(t){var e,a;if(!this._playing)return;const n=this.animationSpeed*t.deltaTime/PIXI.Ticker.targetFPMS,i=this._currentTime+n,u=i%this.duration,o=this._source.frames.findIndex(c=>c.start<=u&&c.end>u);i>=this.duration?this.loop?(this._currentTime=u,this._updateFrameIndex(o),(e=this.onLoop)==null||e.call(this)):(this._currentTime=this.duration,this._updateFrameIndex(this.totalFrames-1),(a=this.onComplete)==null||a.call(this),this.stop()):(this._currentTime=u,this._updateFrameIndex(o))}_updateFrame(){this.dirty&&(this.texture=this._source.frames[this._currentFrame].texture,this.dirty=!1)}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,!this._autoUpdate&&this._isConnectedToTicker?(PIXI.Ticker.shared.remove(this.update,this),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&(PIXI.Ticker.shared.add(this.update,this),this._isConnectedToTicker=!0))}get currentFrame(){return this._currentFrame}set currentFrame(t){this._updateFrameIndex(t),this._currentTime=this._source.frames[t].start}get source(){return this._source}_updateFrameIndex(t){var e;if(t<0||t>=this.totalFrames)throw new Error(`Frame index out of range, expecting 0 to ${this.totalFrames}, got ${t}`);this._currentFrame!==t&&(this._currentFrame=t,this.dirty=!0,(e=this.onFrameChange)==null||e.call(this,t))}get totalFrames(){return this._source.totalFrames}destroy(t=!1){this.stop(),super.destroy(),t&&this._source.destroy();const e=null;this._source=e,this.onComplete=e,this.onFrameChange=e,this.onLoop=e}clone(){const t=new z({source:this._source,autoUpdate:this._autoUpdate,loop:this.loop,autoPlay:this.autoPlay,scaleMode:this.texture.source.scaleMode,animationSpeed:this.animationSpeed,onComplete:this.onComplete,onFrameChange:this.onFrameChange,onLoop:this.onLoop});return t.dirty=!0,t}};Y.defaultOptions={scaleMode:"linear",fps:30,loop:!0,animationSpeed:1,autoPlay:!0,autoUpdate:!0,onComplete:null,onFrameChange:null,onLoop:null};let De=Y;return k.GifAsset=$,k.GifSource=D,k.GifSprite=De,k}({});Object.assign(this.PIXI,gif_js);
7
+ */this.PIXI=this.PIXI||{};var gif_js=function(k){"use strict";var Xe=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Z(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function ze(r){return r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function Ee(r){return r&&Object.prototype.hasOwnProperty.call(r,"default")&&Object.keys(r).length===1?r.default:r}function Ge(r){if(r.__esModule)return r;var t=r.default;if(typeof t=="function"){var e=function a(){return this instanceof a?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};e.prototype=t.prototype}else e={};return Object.defineProperty(e,"__esModule",{value:!0}),Object.keys(r).forEach(function(a){var n=Object.getOwnPropertyDescriptor(r,a);Object.defineProperty(e,a,n.get?n:{enumerable:!0,get:function(){return r[a]}})}),e}var S={},M={},P={};Object.defineProperty(P,"__esModule",{value:!0});var J=P.loop=ee=P.conditional=V=P.parse=void 0,Q=function r(t,e){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:a;if(Array.isArray(e))e.forEach(function(u){return r(t,u,a,n)});else if(typeof e=="function")e(t,a,n,r);else{var i=Object.keys(e)[0];Array.isArray(e[i])?(n[i]={},r(t,e[i],a,n[i])):n[i]=e[i](t,a,n,r)}return a},V=P.parse=Q,W=function(t,e){return function(a,n,i,u){e(a,n,i)&&u(a,t,n,i)}},ee=P.conditional=W,te=function(t,e){return function(a,n,i,u){for(var o=[],c=a.pos;e(a,n,i);){var p={};if(u(a,t,n,p),a.pos===c)break;c=a.pos,o.push(p)}return o}};J=P.loop=te;var f={};Object.defineProperty(f,"__esModule",{value:!0});var re=f.readBits=ve=f.readArray=fe=f.readUnsigned=pe=f.readString=ce=f.peekBytes=de=f.readBytes=oe=f.peekByte=ie=f.readByte=ne=f.buildStream=void 0,ae=function(t){return{data:t,pos:0}},ne=f.buildStream=ae,E=function(){return function(t){return t.data[t.pos++]}},ie=f.readByte=E,se=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return function(e){return e.data[e.pos+t]}},oe=f.peekByte=se,O=function(t){return function(e){return e.data.subarray(e.pos,e.pos+=t)}},de=f.readBytes=O,ue=function(t){return function(e){return e.data.subarray(e.pos,e.pos+t)}},ce=f.peekBytes=ue,le=function(t){return function(e){return Array.from(O(t)(e)).map(function(a){return String.fromCharCode(a)}).join("")}},pe=f.readString=le,he=function(t){return function(e){var a=O(2)(e);return t?(a[1]<<8)+a[0]:(a[0]<<8)+a[1]}},fe=f.readUnsigned=he,ge=function(t,e){return function(a,n,i){for(var u=typeof e=="function"?e(a,n,i):e,o=O(t),c=new Array(u),p=0;p<u;p++)c[p]=o(a);return c}},ve=f.readArray=ge,ye=function(t,e,a){for(var n=0,i=0;i<a;i++)n+=t[e+i]&&Math.pow(2,a-i-1);return n},me=function(t){return function(e){for(var a=E()(e),n=new Array(8),i=0;i<8;i++)n[7-i]=!!(a&1<<i);return Object.keys(t).reduce(function(u,o){var c=t[o];return c.length?u[o]=ye(n,c.index,c.length):u[o]=n[c.index],u},{})}};re=f.readBits=me,function(r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var t=P,e=f,a={blocks:function(s){for(var h=0,d=[],x=s.data.length,w=0,v=(0,e.readByte)()(s);v!==h&&v;v=(0,e.readByte)()(s)){if(s.pos+v>=x){var b=x-s.pos;d.push((0,e.readBytes)(b)(s)),w+=b;break}d.push((0,e.readBytes)(v)(s)),w+=v}for(var y=new Uint8Array(w),m=0,_=0;_<d.length;_++)y.set(d[_],m),m+=d[_].length;return y}},n=(0,t.conditional)({gce:[{codes:(0,e.readBytes)(2)},{byteSize:(0,e.readByte)()},{extras:(0,e.readBits)({future:{index:0,length:3},disposal:{index:3,length:3},userInput:{index:6},transparentColorGiven:{index:7}})},{delay:(0,e.readUnsigned)(!0)},{transparentColorIndex:(0,e.readByte)()},{terminator:(0,e.readByte)()}]},function(l){var s=(0,e.peekBytes)(2)(l);return s[0]===33&&s[1]===249}),i=(0,t.conditional)({image:[{code:(0,e.readByte)()},{descriptor:[{left:(0,e.readUnsigned)(!0)},{top:(0,e.readUnsigned)(!0)},{width:(0,e.readUnsigned)(!0)},{height:(0,e.readUnsigned)(!0)},{lct:(0,e.readBits)({exists:{index:0},interlaced:{index:1},sort:{index:2},future:{index:3,length:2},size:{index:5,length:3}})}]},(0,t.conditional)({lct:(0,e.readArray)(3,function(l,s,h){return Math.pow(2,h.descriptor.lct.size+1)})},function(l,s,h){return h.descriptor.lct.exists}),{data:[{minCodeSize:(0,e.readByte)()},a]}]},function(l){return(0,e.peekByte)()(l)===44}),u=(0,t.conditional)({text:[{codes:(0,e.readBytes)(2)},{blockSize:(0,e.readByte)()},{preData:function(s,h,d){return(0,e.readBytes)(d.text.blockSize)(s)}},a]},function(l){var s=(0,e.peekBytes)(2)(l);return s[0]===33&&s[1]===1}),o=(0,t.conditional)({application:[{codes:(0,e.readBytes)(2)},{blockSize:(0,e.readByte)()},{id:function(s,h,d){return(0,e.readString)(d.blockSize)(s)}},a]},function(l){var s=(0,e.peekBytes)(2)(l);return s[0]===33&&s[1]===255}),c=(0,t.conditional)({comment:[{codes:(0,e.readBytes)(2)},a]},function(l){var s=(0,e.peekBytes)(2)(l);return s[0]===33&&s[1]===254}),p=[{header:[{signature:(0,e.readString)(3)},{version:(0,e.readString)(3)}]},{lsd:[{width:(0,e.readUnsigned)(!0)},{height:(0,e.readUnsigned)(!0)},{gct:(0,e.readBits)({exists:{index:0},resolution:{index:1,length:3},sort:{index:4},size:{index:5,length:3}})},{backgroundColorIndex:(0,e.readByte)()},{pixelAspectRatio:(0,e.readByte)()}]},(0,t.conditional)({gct:(0,e.readArray)(3,function(l,s){return Math.pow(2,s.lsd.gct.size+1)})},function(l,s){return s.lsd.gct.exists}),{frames:(0,t.loop)([n,o,c,i,u],function(l){var s=(0,e.peekByte)()(l);return s===33||s===44})}],g=p;r.default=g}(M);var Le=Z(M),A={};Object.defineProperty(A,"__esModule",{value:!0});var _e=A.deinterlace=void 0,xe=function(t,e){for(var a=new Array(t.length),n=t.length/e,i=function(s,h){var d=t.slice(h*e,(h+1)*e);a.splice.apply(a,[s*e,e].concat(d))},u=[0,4,2,1],o=[8,8,4,2],c=0,p=0;p<4;p++)for(var g=u[p];g<n;g+=o[p])i(g,c),c++;return a};_e=A.deinterlace=xe;var U={};Object.defineProperty(U,"__esModule",{value:!0});var be=U.lzw=void 0,Ie=function(t,e,a){var n=4096,i=-1,u=a,o,c,p,g,l,s,h,B,d,x,_,w,F,I,C,T,v=new Array(a),b=new Array(n),y=new Array(n),m=new Array(n+1);for(w=t,c=1<<w,l=c+1,o=c+2,h=i,g=w+1,p=(1<<g)-1,d=0;d<c;d++)b[d]=0,y[d]=d;var _,B,X,F,I,T,C;for(_=B=X=F=I=T=C=0,x=0;x<u;){if(I===0){if(B<g){_+=e[C]<<B,B+=8,C++;continue}if(d=_&p,_>>=g,B-=g,d>o||d==l)break;if(d==c){g=w+1,p=(1<<g)-1,o=c+2,h=i;continue}if(h==i){m[I++]=y[d],h=d,F=d;continue}for(s=d,d==o&&(m[I++]=F,d=h);d>c;)m[I++]=y[d],d=b[d];F=y[d]&255,m[I++]=F,o<n&&(b[o]=h,y[o]=F,o++,!(o&p)&&o<n&&(g++,p+=o)),h=s}I--,v[T++]=m[I],x++}for(x=T;x<u;x++)v[x]=0;return v};be=U.lzw=Ie,Object.defineProperty(S,"__esModule",{value:!0});var G=S.decompressFrames=Oe=S.decompressFrame=L=S.parseGIF=void 0,we=Se(M),Be=P,Pe=f,Fe=A,Te=U;function Se(r){return r&&r.__esModule?r:{default:r}}var Ce=function(t){var e=new Uint8Array(t);return(0,Be.parse)((0,Pe.buildStream)(e),we.default)},L=S.parseGIF=Ce,ke=function(t){for(var e=t.pixels.length,a=new Uint8ClampedArray(e*4),n=0;n<e;n++){var i=n*4,u=t.pixels[n],o=t.colorTable[u]||[0,0,0];a[i]=o[0],a[i+1]=o[1],a[i+2]=o[2],a[i+3]=u!==t.transparentIndex?255:0}return a},R=function(t,e,a){if(!t.image){console.warn("gif frame does not have associated image.");return}var n=t.image,i=n.descriptor.width*n.descriptor.height,u=(0,Te.lzw)(n.data.minCodeSize,n.data.blocks,i);n.descriptor.lct.interlaced&&(u=(0,Fe.deinterlace)(u,n.descriptor.width));var o={pixels:u,dims:{top:t.image.descriptor.top,left:t.image.descriptor.left,width:t.image.descriptor.width,height:t.image.descriptor.height}};return n.descriptor.lct&&n.descriptor.lct.exists?o.colorTable=n.lct:o.colorTable=e,t.gce&&(o.delay=(t.gce.delay||10)*10,o.disposalType=t.gce.extras.disposal,t.gce.extras.transparentColorGiven&&(o.transparentIndex=t.gce.transparentColorIndex)),a&&(o.patch=ke(o)),o},Oe=S.decompressFrame=R,Ae=function(t,e){return t.frames.filter(function(a){return a.image}).map(function(a){return R(a,t.gct,e)})};G=S.decompressFrames=Ae;let D=class K{constructor(t){const[{texture:{width:e,height:a}}]=t;this.width=e,this.height=a,this.frames=t,this.textures=this.frames.map(n=>n.texture),this.totalFrames=this.frames.length,this.duration=this.frames[this.totalFrames-1].end}destroy(){for(const t of this.textures)t.destroy(!0);for(const t of this.frames)t.texture=null;this.frames.length=0,this.textures.length=0,Object.assign(this,{frames:null,textures:null,width:0,height:0,duration:0,totalFrames:0})}static from(t,e){var a;if(!t||t.byteLength===0)throw new Error("Invalid buffer");const n=v=>{var b;let y=null;for(const m of v.frames)y=(b=m.gce)!=null?b:y,"image"in m&&!("gce"in m)&&(m.gce=y)},i=L(t);n(i);const u=G(i,!0),o=[],c=i.lsd.width,p=i.lsd.height,g=PIXI.DOMAdapter.get().createCanvas(c,p),l=g.getContext("2d",{willReadFrequently:!0}),s=PIXI.DOMAdapter.get().createCanvas(),h=s.getContext("2d");let d=0,x=null;const w=1e3/((a=e==null?void 0:e.fps)!=null?a:30);for(let v=0;v<u.length;v++){const{disposalType:b=2,delay:y=w,patch:m,dims:{width:_,height:B,left:X,top:F}}=u[v];s.width=_,s.height=B,h.clearRect(0,0,_,B);const I=h.createImageData(_,B);I.data.set(m),h.putImageData(I,0,0),b===3&&(x=l.getImageData(0,0,c,p)),l.drawImage(s,X,F);const T=l.getImageData(0,0,c,p);b===2?l.clearRect(0,0,c,p):b===3&&l.putImageData(x,0,0);const C=PIXI.DOMAdapter.get().createCanvas(T.width,T.height);C.getContext("2d").putImageData(T,0,0),o.push({start:d,end:d+y,texture:new PIXI.Texture({source:new PIXI.CanvasSource({resource:C})})}),d+=y}return g.width=g.height=0,s.width=s.height=0,new K(o)}};const $={extension:PIXI.ExtensionType.Asset,detection:{test:async()=>!0,add:async r=>[...r,"gif"],remove:async r=>r.filter(t=>t!=="gif")},loader:{name:"gifLoader",test:r=>PIXI.path.extname(r)===".gif",load:async(r,t)=>{const e=await(await PIXI.DOMAdapter.get().fetch(r)).arrayBuffer();return D.from(e,t==null?void 0:t.data)},unload:async r=>{r.destroy()}}};var Ue=Object.defineProperty,j=Object.getOwnPropertySymbols,N=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable,H=(r,t,e)=>t in r?Ue(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,je=(r,t)=>{for(var e in t||(t={}))N.call(t,e)&&H(r,e,t[e]);if(j)for(var e of j(t))q.call(t,e)&&H(r,e,t[e]);return r},Me=(r,t)=>{var e={};for(var a in r)N.call(r,a)&&t.indexOf(a)<0&&(e[a]=r[a]);if(r!=null&&j)for(var a of j(r))t.indexOf(a)<0&&q.call(r,a)&&(e[a]=r[a]);return e};const Y=class z extends PIXI.Sprite{constructor(...t){const e=t[0]instanceof D?{source:t[0]}:t[0],a=Object.assign({},z.defaultOptions,e),{scaleMode:n,source:i,fps:u,loop:o,animationSpeed:c,autoPlay:p,autoUpdate:g,onComplete:l,onFrameChange:s,onLoop:h}=a,d=Me(a,["scaleMode","source","fps","loop","animationSpeed","autoPlay","autoUpdate","onComplete","onFrameChange","onLoop"]);super(je({texture:PIXI.Texture.EMPTY},d)),this.animationSpeed=1,this.loop=!0,this.duration=0,this.autoPlay=!0,this.dirty=!1,this._currentFrame=0,this._autoUpdate=!1,this._isConnectedToTicker=!1,this._playing=!1,this._currentTime=0,this.onRender=()=>this._updateFrame(),this.texture=i.textures[0],this.duration=i.frames[i.frames.length-1].end,this._source=i,this._playing=!1,this._currentTime=0,this._isConnectedToTicker=!1,Object.assign(this,{fps:u,loop:o,animationSpeed:c,autoPlay:p,autoUpdate:g,onComplete:l,onFrameChange:s,onLoop:h}),this.currentFrame=0,p&&this.play()}stop(){this._playing&&(this._playing=!1,this._autoUpdate&&this._isConnectedToTicker&&(PIXI.Ticker.shared.remove(this.update,this),this._isConnectedToTicker=!1))}play(){this._playing||(this._playing=!0,this._autoUpdate&&!this._isConnectedToTicker&&(PIXI.Ticker.shared.add(this.update,this,PIXI.UPDATE_PRIORITY.HIGH),this._isConnectedToTicker=!0),!this.loop&&this.currentFrame===this._source.frames.length-1&&(this._currentTime=0))}get progress(){return this._currentTime/this.duration}get playing(){return this._playing}update(t){var e,a;if(!this._playing)return;const n=this.animationSpeed*t.deltaTime/PIXI.Ticker.targetFPMS,i=this._currentTime+n,u=i%this.duration,o=this._source.frames.findIndex(c=>c.start<=u&&c.end>u);i>=this.duration?this.loop?(this._currentTime=u,this._updateFrameIndex(o),(e=this.onLoop)==null||e.call(this)):(this._currentTime=this.duration,this._updateFrameIndex(this.totalFrames-1),(a=this.onComplete)==null||a.call(this),this.stop()):(this._currentTime=u,this._updateFrameIndex(o))}_updateFrame(){this.dirty&&(this.texture=this._source.frames[this._currentFrame].texture,this.dirty=!1)}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,!this._autoUpdate&&this._isConnectedToTicker?(PIXI.Ticker.shared.remove(this.update,this),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&(PIXI.Ticker.shared.add(this.update,this),this._isConnectedToTicker=!0))}get currentFrame(){return this._currentFrame}set currentFrame(t){this._updateFrameIndex(t),this._currentTime=this._source.frames[t].start}get source(){return this._source}_updateFrameIndex(t){var e;if(t<0||t>=this.totalFrames)throw new Error(`Frame index out of range, expecting 0 to ${this.totalFrames}, got ${t}`);this._currentFrame!==t&&(this._currentFrame=t,this.dirty=!0,(e=this.onFrameChange)==null||e.call(this,t))}get totalFrames(){return this._source.totalFrames}destroy(t=!1){this.stop(),super.destroy(),t&&this._source.destroy();const e=null;this._source=e,this.onComplete=e,this.onFrameChange=e,this.onLoop=e}clone(){const t=new z({source:this._source,autoUpdate:this._autoUpdate,loop:this.loop,autoPlay:this.autoPlay,scaleMode:this.texture.source.scaleMode,animationSpeed:this.animationSpeed,onComplete:this.onComplete,onFrameChange:this.onFrameChange,onLoop:this.onLoop});return t.dirty=!0,t}};Y.defaultOptions={scaleMode:"linear",fps:30,loop:!0,animationSpeed:1,autoPlay:!0,autoUpdate:!0,onComplete:null,onFrameChange:null,onLoop:null};let De=Y;return PIXI.extensions.add($),k.GifAsset=$,k.GifSource=D,k.GifSprite=De,k}({});Object.assign(this.PIXI,gif_js);
8
8
  //# sourceMappingURL=gif.min.js.map