{"version":3,"sources":["jsdelivr-header.js","/npm/libpag@4.5.52/src/utils/polyfills.ts","/npm/libpag@4.5.52/src/pag-module.ts","/npm/libpag@4.5.52/src/utils/decorators.ts","/npm/libpag@4.5.52/src/types.ts","/npm/libpag@4.5.52/src/core/matrix.ts","/npm/libpag@4.5.52/src/utils/type-utils.ts","/npm/libpag@4.5.52/src/pag-layer.ts","/npm/libpag@4.5.52/src/pag-composition.ts","/npm/libpag@4.5.52/src/utils/common.ts","/npm/libpag@4.5.52/src/pag-file.ts","/npm/libpag@4.5.52/src/pag-surface.ts","/npm/libpag@4.5.52/src/video-reader-manager.ts","/npm/libpag@4.5.52/src/pag-player.ts","/npm/libpag@4.5.52/src/pag-image.ts","/npm/libpag@4.5.52/src/utils/event-manager.ts","/npm/libpag@4.5.52/src/constant.ts","/npm/libpag@4.5.52/src/core/backend-context.ts","/npm/libpag@4.5.52/src/core/render-canvas.ts","/npm/libpag@4.5.52/src/utils/clock.ts","/npm/third_party/tgfx/web/src/constant.ts","/npm/third_party/tgfx/web/src/utils/type-utils.ts","/npm/third_party/tgfx/web/src/utils/ua.ts","/npm/third_party/tgfx/web/src/utils/canvas.ts","/npm/libpag@4.5.52/src/pag-view.ts","/npm/third_party/tgfx/web/src/utils/font-family.ts","/npm/libpag@4.5.52/src/pag-font.ts","/npm/libpag@4.5.52/src/utils/video-listener.ts","/npm/libpag@4.5.52/src/utils/ua.ts","/npm/libpag@4.5.52/src/core/video-reader.ts","/npm/libpag@4.5.52/src/core/global-canvas.ts","/npm/libpag@4.5.52/src/pag-text-layer.ts","/npm/libpag@4.5.52/src/pag-image-layer.ts","/npm/libpag@4.5.52/src/pag-solid-layer.ts","/npm/third_party/tgfx/web/src/tgfx-module.ts","/npm/third_party/tgfx/web/src/core/bitmap-image.ts","/npm/third_party/tgfx/web/src/tgfx.ts","/npm/third_party/tgfx/web/src/types.ts","/npm/third_party/tgfx/web/src/core/matrix.ts","/npm/third_party/tgfx/web/src/utils/decorators.ts","/npm/third_party/tgfx/web/src/utils/measure-text.ts","/npm/third_party/tgfx/web/src/core/scaler-context.ts","/npm/third_party/tgfx/web/src/core/path-rasterizer.ts","/npm/third_party/tgfx/web/src/binding.ts","/npm/libpag@4.5.52/src/binding.ts","/npm/libpag@4.5.52/src/utils/mixin.ts","/npm/libpag@4.5.52/src/wasm/libpag.js","/npm/libpag@4.5.52/src/utils/queue.ts","/npm/libpag@4.5.52/src/pag.ts"],"names":[],"mappings":"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","file":"/npm/libpag@4.5.52/lib/libpag.umd.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/libpag@4.5.52/lib/libpag.umd.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const getGlobalObject = (): typeof globalThis => {\n  if (typeof globalThis !== 'undefined') {\n    return globalThis;\n  }\n  if (typeof window !== 'undefined') {\n    return window as unknown as typeof globalThis;\n  }\n  if (typeof global !== 'undefined') {\n    return global as unknown as typeof globalThis;\n  }\n  if (typeof self !== 'undefined') {\n    return self as unknown as typeof globalThis;\n  }\n  throw new Error('unable to locate global object');\n};\n\nconst globalObject = getGlobalObject();\n\nif (typeof globalObject.globalThis === 'undefined') {\n  Object.defineProperty(globalObject, 'globalThis', {\n    get() {\n      return globalObject;\n    },\n  });\n}\n","import type { PAG } from './types';\n\nexport let PAGModule: PAG;\n\nexport const setPAGModule = (module: PAG) => {\n  PAGModule = module;\n};\n\nexport const getPAGModule = () => PAGModule;\n","import { PAGModule } from '../pag-module';\n\nexport function destroyVerify(constructor: any) {\n  let functions = Object.getOwnPropertyNames(constructor.prototype).filter(\n    (name) => name !== 'constructor' && typeof constructor.prototype[name] === 'function',\n  );\n\n  const proxyFn = (target: { [prop: string]: any }, methodName: string) => {\n    const fn = target[methodName];\n    target[methodName] = function (...args: any[]) {\n      if (this['isDestroyed']) {\n        console.error(`Don't call ${methodName} of the ${constructor.name} that is destroyed.`);\n        return;\n      }\n      return fn.call(this, ...args);\n    };\n  };\n  functions.forEach((name) => proxyFn(constructor.prototype, name));\n}\n","/* global EmscriptenModule */\n\nimport { PAGFile } from './pag-file';\nimport { PAGImage } from './pag-image';\nimport { PAGSurface } from './pag-surface';\nimport { WebAssemblyQueue } from './utils/queue';\nimport { PAGView } from './pag-view';\nimport { PAGFont } from './pag-font';\nimport { PAGPlayer } from './pag-player';\nimport { PAGLayer } from './pag-layer';\nimport { PAGComposition } from './pag-composition';\nimport { PAGTextLayer } from './pag-text-layer';\nimport { GlobalCanvas } from './core/global-canvas';\nimport { BackendContext } from './core/backend-context';\nimport { PAGImageLayer } from './pag-image-layer';\nimport { PAGSolidLayer } from './pag-solid-layer';\nimport { Matrix as ClassMatrix } from './core/matrix';\nimport { RenderCanvas } from './core/render-canvas';\nimport {VideoReader, VideoReaderManager} from \"./interfaces\";\nimport type { ScalerContextConstructor, VideoDecoderConstructor } from './interfaces';\n\nimport type { ArrayBufferImage } from '@tgfx/wechat/array-buffer-image';\nimport type { TGFXPathFillType, TGFXLineCap, TGFXLineJoin, EmscriptenGL, ctor, Point, Vector, Rect, } from '@tgfx/types';\nexport type { EmscriptenGL, ctor, Point, Vector, Rect };\n\ndeclare global {\n  interface Window {\n    WeixinJSBridge?: any;\n  }\n}\n\nexport interface PAG extends EmscriptenModule {\n  _PAGFile: {\n    _Load: (buffer: Uint8Array) => any;\n    _MaxSupportedTagLevel: () => number;\n  };\n  _PAGImage: {\n    _FromNativeImage: (source: TexImageSource | ArrayBufferImage) => any;\n    _FromPixels: (\n      pixels: Uint8Array,\n      width: number,\n      height: number,\n      rowBytes: number,\n      colorType: ColorType,\n      alphaType: AlphaType,\n    ) => any;\n    _FromTexture: (textureID: number, width: number, height: number, flipY: boolean) => any;\n  };\n  _PAGPlayer: any;\n  _PAGSurface: {\n    _FromCanvas: (canvasID: string) => any;\n    _FromTexture: (textureID: number, width: number, height: number, flipY: boolean) => any;\n    _FromRenderTarget: (framebufferID: number, width: number, height: number, flipY: boolean) => any;\n  };\n  _PAGComposition: {\n    _Make: (width: number, height: number) => any;\n  };\n  _PAGTextLayer: {\n    _Make: ((duration: number, text: string, fontSize: number, fontFamily: string, fontStyle: string) => any) &\n      ((duration: number, textDocumentHandle: TextDocument) => any);\n  };\n  _PAGImageLayer: {\n    _Make: (width: number, height: number, duration: number) => any;\n  };\n  _PAGSolidLayer: {\n    _Make: (duration: number, width: number, height: number, solidColor: Color, opacity: number) => any;\n  };\n  _PAGFont: {\n    _create: (fontFamily: string, fontStyle: string) => any;\n    _SetFallbackFontNames: (fontName: any) => void;\n  };\n  _Matrix: {\n    _MakeAll: (\n      scaleX: number,\n      skewX: number,\n      transX: number,\n      skewY: number,\n      scaleY: number,\n      transY: number,\n      pers0: number,\n      pers1: number,\n      pers2: number,\n    ) => any;\n    _MakeScale: ((sx: number, sy: number) => any) & ((scale: number) => any);\n    _MakeTrans: (dx: number, dy: number) => any;\n  };\n  _registerSoftwareDecoderFactory: (factory: SoftwareDecoderFactory | null) => void;\n  VectorString: any;\n  webAssemblyQueue: WebAssemblyQueue;\n  GL: EmscriptenGL;\n  TGFXPathFillType: TGFXPathFillType;\n  TGFXLineCap: TGFXLineCap;\n  TGFXLineJoin: TGFXLineJoin;\n  globalCanvas: GlobalCanvas;\n  module: PAG;\n  PAGPlayer: typeof PAGPlayer;\n  PAGFile: typeof PAGFile;\n  PAGView: typeof PAGView;\n  PAGFont: typeof PAGFont;\n  PAGImage: typeof PAGImage;\n  PAGLayer: typeof PAGLayer;\n  PAGComposition: typeof PAGComposition;\n  PAGSurface: typeof PAGSurface;\n  PAGTextLayer: typeof PAGTextLayer;\n  PAGImageLayer: typeof PAGImageLayer;\n  PAGSolidLayer: typeof PAGSolidLayer;\n  ScalerContext: ScalerContextConstructor;\n  VideoReader: VideoDecoderConstructor;\n  GlobalCanvas: typeof GlobalCanvas;\n  BackendContext: typeof BackendContext;\n  Matrix: typeof ClassMatrix;\n  RenderCanvas: typeof RenderCanvas;\n  traceImage: (info: { width: number; height: number }, pixels: Uint8Array, tag: string) => void;\n  registerSoftwareDecoderFactory: (factory: SoftwareDecoderFactory | null) => void;\n  SDKVersion: () => string;\n  currentPlayer: PAGPlayer | null;\n  videoReaderManager: VideoReaderManager | null;\n  _videoInfoManager: {\n    _Make: (pagFile:any) => any;\n    _HasVideo:(pagFile:any) => any;\n  };\n  _useSoftwareDecoder: boolean;\n  [key: string]: any;\n}\n\n/**\n * Defines the rules on how to scale the content to fit the specified area.\n */\nexport const enum PAGScaleMode {\n  /**\n   * The content is not scaled.\n   */\n  None = 0,\n  /**\n   * The content is stretched to fit.\n   */\n  Stretch = 1,\n  /**\n   * The content is scaled with respect to the original unscaled image's aspect ratio.\n   * This is the default value.\n   */\n  LetterBox = 2,\n  /**\n   * The content is scaled to fit with respect to the original unscaled image's aspect ratio.\n   * This results in cropping on one axis.\n   */\n  Zoom = 3,\n}\n\n// [Deprecated]\nexport const enum PAGViewListenerEvent {\n  /**\n   * Notifies the start of the animation.\n   */\n  onAnimationStart = 'onAnimationStart',\n  /**\n   * Notifies the end of the animation.\n   */\n  onAnimationEnd = 'onAnimationEnd',\n  /**\n   * Notifies the cancellation of the animation.\n   */\n  onAnimationCancel = 'onAnimationCancel',\n  /**\n   * Notifies the repetition of the animation.\n   */\n  onAnimationRepeat = 'onAnimationRepeat',\n  /**\n   * Notifies the update of the animation.\n   */\n  onAnimationUpdate = 'onAnimationUpdate',\n  /**\n   * Notifies the play of the animation.\n   */\n  onAnimationPlay = 'onAnimationPlay',\n  /**\n   * Notifies the pause of the animation.\n   */\n  onAnimationPause = 'onAnimationPause',\n  /**\n   * [Deprecated]\n   * Notifies the flushed of the animation.\n   */\n  onAnimationFlushed = 'onAnimationFlushed',\n}\n\nexport interface PAGViewEventMap {\n  /**\n   * Notifies the start of the animation.\n   */\n  onAnimationStart: PAGView;\n  /**\n   * Notifies the end of the animation.\n   */\n  onAnimationEnd: PAGView;\n  /**\n   * Notifies the cancellation of the animation.\n   */\n  onAnimationCancel: PAGView;\n  /**\n   * Notifies the repetition of the animation.\n   */\n  onAnimationRepeat: PAGView;\n  /**\n   * Notifies the update of the animation.\n   */\n  onAnimationUpdate: PAGView;\n  /**\n   * [Deprecated]\n   * Notifies the play of the animation.\n   */\n  onAnimationPlay: PAGView;\n  /**\n   * Notifies the pause of the animation.\n   */\n  onAnimationPause: PAGView;\n  /**\n   * [Deprecated]\n   * Notifies the flushed of the animation.\n   */\n  onAnimationFlushed: PAGView;\n}\n\nexport const enum ParagraphJustification {\n  LeftJustify = 0,\n  CenterJustify = 1,\n  RightJustify = 2,\n  FullJustifyLastLineLeft = 3,\n  FullJustifyLastLineRight = 4,\n  FullJustifyLastLineCenter = 5,\n  FullJustifyLastLineFull = 6,\n}\n\nexport const enum TextDirection {\n  Default = 0,\n  Horizontal = 1,\n  Vertical = 2,\n}\n\n/**\n * Layers are always one of the following types.\n */\nexport const enum LayerType {\n  Unknown,\n  Null,\n  Solid,\n  Text,\n  Shape,\n  Image,\n  PreCompose,\n}\n\n/**\n * Defines the rules on how to stretch the timeline of content to fit the specified duration.\n */\nexport const enum PAGTimeStretchMode {\n  /**\n   * Keep the original playing speed, and display the last frame if the content's duration is less\n   * than target duration.\n   */\n  None = 0,\n  /*\n   * Change the playing speed of the content to fit target duration.\n   */\n  Scale = 1,\n  /**\n   * Keep the original playing speed, but repeat the content if the content's duration is less than\n   * target duration. This is the default mode.\n   */\n  Repeat = 2,\n  /**\n   * Keep the original playing speed, but repeat the content in reversed if the content's duration\n   * is less than target duration.\n   */\n  RepeatInverted = 3,\n}\n\nexport const enum MatrixIndex {\n  a,\n  c,\n  tx,\n  b,\n  d,\n  ty,\n}\n\nexport const enum DecoderResult {\n  /**\n   * The calling is successful.\n   */\n  Success = 0,\n  /**\n   * Output is not available in this state, need more input buffers.\n   */\n  TryAgainLater = -1,\n  /**\n   * The calling fails.\n   */\n  Error = -2,\n}\n\n/**\n * Describes how pixel bits encode color. These values match up with the enum in Bitmap.Config on\n * Android platform.\n */\nexport const enum ColorType {\n  /**\n   * uninitialized.\n   */\n  Unknown,\n  /**\n   * Each pixel is stored as a single translucency (alpha) channel. This is very useful to\n   * efficiently store masks for instance. No color information is stored. With this configuration,\n   * each pixel requires 1 byte of memory.\n   */\n  ALPHA_8,\n  /**\n   * Each pixel is stored on 4 bytes. Each channel (RGB and alpha for translucency) is stored with 8\n   * bits of precision (256 possible values). The channel order is: red, green, blue, alpha.\n   */\n  RGBA_8888,\n  /**\n   * Each pixel is stored on 4 bytes. Each channel (RGB and alpha for translucency) is stored with 8\n   * bits of precision (256 possible values). The channel order is: blue, green, red, alpha.\n   */\n  BGRA_8888,\n}\n\n/**\n * Describes how to interpret the alpha component of a pixel.\n */\nexport const enum AlphaType {\n  /**\n   * uninitialized.\n   */\n  Unknown,\n  /**\n   * pixel is opaque.\n   */\n  Opaque,\n  /**\n   * pixel components are premultiplied by alpha.\n   */\n  Premultiplied,\n  /**\n   * pixel components are independent of alpha.\n   */\n  Unpremultiplied,\n}\n\n/**\n * Marker stores comments and other metadata and mark important times in a composition or layer.\n */\nexport interface Marker {\n  startTime: number;\n  duration: number;\n  comment: string;\n}\n\nexport interface Color {\n  red: number;\n  green: number;\n  blue: number;\n}\nexport interface YUVBuffer {\n  data: number[];\n  lineSize: number[];\n}\n\nexport interface DebugData {\n  FPS?: number;\n  flushTime?: number;\n}\n\nexport interface PAGVideoRange {\n  /**\n   * The start time of the source video, in microseconds.\n   */\n  startTime: number;\n  /**\n   * The end time of the source video (not included), in microseconds.\n   */\n  endTime: number;\n  /**\n   * The duration for playing after applying speed.\n   */\n  playDuration: number;\n  /**\n   * Indicates whether the video should play backward.\n   */\n  reversed: boolean;\n}\n\nexport declare class Matrix {\n  /**\n   * The entry at position [1,1] in the matrix.\n   */\n  public a: number;\n  /**\n   * The entry at position [1,2] in the matrix.\n   */\n  public b: number;\n  /**\n   * The entry at position [2,1] in the matrix.\n   */\n  public c: number;\n  /**\n   * The entry at position [2,2] in the matrix.\n   */\n  public d: number;\n  /**\n   * The entry at position [3,1] in the matrix.\n   */\n  public tx: number;\n  /**\n   * The entry at position [3,2] in the matrix.\n   */\n  public ty: number;\n  /**\n   * Sets Matrix value.\n   */\n  public set: (index: number, value: number) => {};\n  public setAffine: (a: number, b: number, c: number, d: number, tx: number, ty: number) => {};\n\n  private constructor();\n}\n\nexport declare class TextDocument {\n  /**\n   * When true, the text layer shows a fill.\n   */\n  public applyFill: boolean;\n  /**\n   * When true, the text layer shows a stroke.\n   */\n  public applyStroke: boolean;\n\n  public baselineShift: number;\n  /**\n   * When true, the text layer is paragraph (bounded) text.\n   */\n  public boxText: boolean;\n\n  public boxTextPos: Readonly<Point>;\n  /**\n   * For box text, the pixel dimensions for the text bounds.\n   */\n  public boxTextSize: Readonly<Point>;\n\n  public firstBaseLine: number;\n\n  public fauxBold: boolean;\n\n  public fauxItalic: boolean;\n  /**\n   * The text layer’s fill color.\n   */\n  public fillColor: Readonly<Color>;\n  /**\n   * A string with the name of the font family.\n   **/\n  public fontFamily: string;\n  /**\n   * A string with the style information — e.g., “bold”, “italic”.\n   **/\n  public fontStyle: string;\n  /**\n   * The text layer’s font size in pixels.\n   */\n  public fontSize: number;\n  /**\n   * The text layer’s stroke color.\n   */\n  public strokeColor: Readonly<Color>;\n  /**\n   * Indicates the rendering order for the fill and stroke of a text layer.\n   */\n  public strokeOverFill: boolean;\n  /**\n   * The text layer’s stroke thickness.\n   */\n  public strokeWidth: number;\n  /**\n   * The text layer’s Source Text value.\n   */\n  public text: string;\n  /**\n   * The paragraph justification for the text layer.\n   */\n  public justification: ParagraphJustification;\n  /**\n   * The space between lines, 0 indicates 'auto', which is fontSize * 1.2\n   */\n  public leading: number;\n  /**\n   * The text layer’s spacing between characters.\n   */\n  public tracking: number;\n  /**\n   *  The text layer’s background color\n   */\n  public backgroundColor: Readonly<Color>;\n  /**\n   *  The text layer’s background alpha. 0 = 100% transparent, 255 = 100% opaque.\n   */\n  public backgroundAlpha: number;\n\n  public direction: TextDirection;\n\n  public delete: () => void;\n\n  private constructor();\n}\n\nexport declare class SoftwareDecoder {\n  public onConfigure(headers: Uint8Array[], mimeType: string, width: number, height: number): boolean;\n  public onSendBytes(bytes: Uint8Array, timestamp: number): number; // 0:Success -1:TryAgainLater -2:Error\n  public onDecodeFrame(): number; // 0:Success -1:TryAgainLater -2:Error\n  public onEndOfStream(): number; // 0:Success -1:TryAgainLater -2:Error\n  public onFlush(): void;\n  public onRenderFrame(): YUVBuffer | null;\n  public onRelease(): void;\n}\n\nexport declare class SoftwareDecoderFactory {\n  public createSoftwareDecoder(pag: PAG): SoftwareDecoder | null;\n}\n\n\nexport class VecArray extends Array {\n  private isDeleted = false;\n\n  private constructor(...items: any[]) {\n    super(...items);\n    Object.setPrototypeOf(this, VecArray.prototype);\n  }\n\n  public static create(): VecArray {\n    return new VecArray();\n  }\n\n  public get(index: number): any {\n    this.ensureNotDeleted();\n    if (index < 0 || index >= this.length) {\n      throw new RangeError('Index out of bounds');\n    }\n    return this[index];\n  }\n\n  public push_back(value: any): void {\n    this.ensureNotDeleted();\n    this.push(value);\n  }\n\n  public size(): number {\n    this.ensureNotDeleted();\n    return this.length;\n  }\n\n  public delete(): void {\n    this.ensureNotDeleted();\n    this.length = 0;\n    this.isDeleted = true;\n  }\n\n  private ensureNotDeleted(): void {\n    if (this.isDeleted) {\n      throw new Error('This VecArray instance has been deleted.');\n    }\n  }\n}","import { PAGModule } from '../pag-module';\nimport { destroyVerify } from '../utils/decorators';\nimport { MatrixIndex } from '../types';\n\n@destroyVerify\nexport class Matrix {\n  /**\n   * Sets Matrix to:\n   *\n   *      | scaleX  skewX transX |\n   *      |  skewY scaleY transY |\n   *      |  pers0  pers1  pers2 |\n   *\n   * @param scaleX  horizontal scale factor\n   * @param skewX   horizontal skew factor\n   * @param transX  horizontal translation\n   * @param skewY   vertical skew factor\n   * @param scaleY  vertical scale factor\n   * @param transY  vertical translation\n   * @param pers0   input x-axis perspective factor\n   * @param pers1   input y-axis perspective factor\n   * @param pers2   perspective scale factor\n   * @return        Matrix constructed from parameters\n   */\n  public static makeAll(\n    scaleX: number,\n    skewX: number,\n    transX: number,\n    skewY: number,\n    scaleY: number,\n    transY: number,\n    pers0 = 0,\n    pers1 = 0,\n    pers2 = 1,\n  ): Matrix {\n    const wasmIns = PAGModule._Matrix._MakeAll(scaleX, skewX, transX, skewY, scaleY, transY, pers0, pers1, pers2);\n    if (!wasmIns) throw new Error('Matrix.makeAll fail, please check parameters valid!');\n    return new Matrix(wasmIns);\n  }\n  /**\n   * Sets Matrix to scale by (sx, sy). Returned matrix is:\n   *\n   *       | sx  0  0 |\n   *       |  0 sy  0 |\n   *       |  0  0  1 |\n   *\n   *  @param scaleX  horizontal scale factor\n   *  @param scaleY  [optionals] vertical scale factor, default equal scaleX.\n   *  @return    Matrix with scale\n   */\n  public static makeScale(scaleX: number, scaleY?: number): Matrix {\n    let wasmIns;\n    if (scaleY !== undefined) {\n      wasmIns = PAGModule._Matrix._MakeScale(scaleX, scaleY);\n    } else {\n      wasmIns = PAGModule._Matrix._MakeScale(scaleX);\n    }\n    if (!wasmIns) throw new Error('Matrix.makeScale fail, please check parameters valid!');\n    return new Matrix(wasmIns);\n  }\n  /**\n   * Sets Matrix to translate by (dx, dy). Returned matrix is:\n   *\n   *       | 1 0 dx |\n   *       | 0 1 dy |\n   *       | 0 0  1 |\n   *\n   * @param dx  horizontal translation\n   * @param dy  vertical translation\n   * @return    Matrix with translation\n   */\n  public static makeTrans(dx: number, dy: number): Matrix {\n    const wasmIns = PAGModule._Matrix._MakeTrans(dx, dy);\n    if (!wasmIns) throw new Error('Matrix.makeTrans fail, please check parameters valid!');\n    return new Matrix(wasmIns);\n  }\n\n  public wasmIns;\n  public isDestroyed = false;\n\n  public constructor(wasmIns: any) {\n    this.wasmIns = wasmIns;\n  }\n\n  /**\n   * scaleX; horizontal scale factor to store\n   */\n  public get a(): number {\n    return this.wasmIns ? this.wasmIns._get(MatrixIndex.a) : 0;\n  }\n  public set a(value: number) {\n    this.wasmIns?._set(MatrixIndex.a, value);\n  }\n  /**\n   * skewY; vertical skew factor to store\n   */\n  public get b(): number {\n    return this.wasmIns ? this.wasmIns._get(MatrixIndex.b) : 0;\n  }\n  public set b(value: number) {\n    this.wasmIns?._set(MatrixIndex.b, value);\n  }\n  /**\n   * skewX; horizontal skew factor to store\n   */\n  public get c(): number {\n    return this.wasmIns ? this.wasmIns._get(MatrixIndex.c) : 0;\n  }\n  public set c(value: number) {\n    this.wasmIns?._set(MatrixIndex.c, value);\n  }\n  /**\n   * scaleY; vertical scale factor to store\n   */\n  public get d(): number {\n    return this.wasmIns ? this.wasmIns._get(MatrixIndex.d) : 0;\n  }\n  public set d(value: number) {\n    this.wasmIns?._set(MatrixIndex.d, value);\n  }\n  /**\n   * transX; horizontal translation to store\n   */\n  public get tx(): number {\n    return this.wasmIns ? this.wasmIns._get(MatrixIndex.tx) : 0;\n  }\n  public set tx(value: number) {\n    this.wasmIns?._set(MatrixIndex.tx, value);\n  }\n  /**\n   * transY; vertical translation to store\n   */\n  public get ty(): number {\n    return this.wasmIns ? this.wasmIns._get(MatrixIndex.ty) : 0;\n  }\n  public set ty(value: number) {\n    this.wasmIns?._set(MatrixIndex.ty, value);\n  }\n\n  /**\n   * Returns one matrix value.\n   */\n  public get(index: MatrixIndex): number {\n    return this.wasmIns ? this.wasmIns._get(index) : 0;\n  }\n  /**\n   * Sets Matrix value.\n   */\n  public set(index: MatrixIndex, value: number) {\n    this.wasmIns?._set(index, value);\n  }\n  /**\n   * Sets all values from parameters. Sets matrix to:\n   *\n   *      | scaleX  skewX transX |\n   *      |  skewY scaleY transY |\n   *      | persp0 persp1 persp2 |\n   *\n   * @param scaleX  horizontal scale factor to store\n   * @param skewX   horizontal skew factor to store\n   * @param transX  horizontal translation to store\n   * @param skewY   vertical skew factor to store\n   * @param scaleY  vertical scale factor to store\n   * @param transY  vertical translation to store\n   */\n  public setAll(scaleX: number, skewX: number, transX: number, skewY: number, scaleY: number, transY: number) {\n    this.wasmIns?._setAll(scaleX, skewX, transX, skewY, scaleY, transY, 0, 0, 1);\n  }\n\n  public setAffine(a: number, b: number, c: number, d: number, tx: number, ty: number) {\n    this.wasmIns?._setAffine(a, b, c, d, tx, ty);\n  }\n  /**\n   * Sets Matrix to identity; which has no effect on mapped Point. Sets Matrix to:\n   *\n   *       | 1 0 0 |\n   *       | 0 1 0 |\n   *       | 0 0 1 |\n   *\n   * Also called setIdentity(); use the one that provides better inline documentation.\n   */\n  public reset() {\n    this.wasmIns?._reset();\n  }\n  /**\n   * Sets Matrix to translate by (dx, dy).\n   * @param dx  horizontal translation\n   * @param dy  vertical translation\n   */\n  public setTranslate(dx: number, dy: number) {\n    this.wasmIns?._setTranslate(dx, dy);\n  }\n  /**\n   * Sets Matrix to scale by sx and sy, about a pivot point at (px, py). The pivot point is\n   * unchanged when mapped with Matrix.\n   * @param sx  horizontal scale factor\n   * @param sy  vertical scale factor\n   * @param px  pivot on x-axis\n   * @param py  pivot on y-axis\n   */\n  public setScale(sx: number, sy: number, px = 0, py = 0) {\n    this.wasmIns?._setScale(sx, sy, px, py);\n  }\n  /**\n   * Sets Matrix to rotate by degrees about a pivot point at (px, py). The pivot point is\n   * unchanged when mapped with Matrix. Positive degrees rotates clockwise.\n   *  @param degrees  angle of axes relative to upright axes\n   *  @param px       pivot on x-axis\n   *  @param py       pivot on y-axis\n   */\n  public setRotate(degrees: number, px = 0, py = 0) {\n    this.wasmIns?._setRotate(degrees, px, py);\n  }\n  /**\n   * Sets Matrix to rotate by sinValue and cosValue, about a pivot point at (px, py).\n   * The pivot point is unchanged when mapped with Matrix.\n   * Vector (sinValue, cosValue) describes the angle of rotation relative to (0, 1).\n   * Vector length specifies scale.\n   */\n  public setSinCos(sinV: number, cosV: number, px = 0, py = 0) {\n    this.wasmIns?._setSinCos(sinV, cosV, px, py);\n  }\n  /**\n   * Sets Matrix to skew by kx and ky, about a pivot point at (px, py). The pivot point is\n   * unchanged when mapped with Matrix.\n   * @param kx  horizontal skew factor\n   * @param ky  vertical skew factor\n   * @param px  pivot on x-axis\n   * @param py  pivot on y-axis\n   */\n  public setSkew(kx: number, ky: number, px = 0, py = 0) {\n    this.wasmIns?._setSkew(kx, ky, px, py);\n  }\n  /**\n   * Sets Matrix to Matrix a multiplied by Matrix b. Either a or b may be this.\n   *\n   * Given:\n   *\n   *          | A B C |      | J K L |\n   *      a = | D E F |, b = | M N O |\n   *          | G H I |      | P Q R |\n   *\n   * sets Matrix to:\n   *\n   *              | A B C |   | J K L |   | AJ+BM+CP AK+BN+CQ AL+BO+CR |\n   *      a * b = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR |\n   *              | G H I |   | P Q R |   | GJ+HM+IP GK+HN+IQ GL+HO+IR |\n   *\n   * @param a  Matrix on left side of multiply expression\n   * @param b  Matrix on right side of multiply expression\n   */\n  public setConcat(a: Matrix, b: Matrix) {\n    this.wasmIns?._setConcat(a.wasmIns, b.wasmIns);\n  }\n  /**\n   * Preconcats the matrix with the specified scale. M' = M * S(sx, sy)\n   */\n  public preTranslate(dx: number, dy: number) {\n    this.wasmIns?._preTranslate(dx, dy);\n  }\n  /**\n   * Postconcats the matrix with the specified scale. M' = S(sx, sy, px, py) * M\n   */\n  public preScale(sx: number, sy: number, px = 0, py = 0) {\n    this.wasmIns?._preScale(sx, sy, px, py);\n  }\n  /**\n   * Preconcats the matrix with the specified rotation. M' = M * R(degrees, px, py)\n   */\n  public preRotate(degrees: number, px = 0, py = 0) {\n    this.wasmIns?._preRotate(degrees, px, py);\n  }\n  /**\n   * Preconcats the matrix with the specified skew. M' = M * K(kx, ky, px, py)\n   */\n  public preSkew(kx: number, ky: number, px = 0, py = 0) {\n    this.wasmIns?._preSkew(kx, ky, px, py);\n  }\n  /**\n   * Preconcats the matrix with the specified matrix. M' = M * other\n   */\n  public preConcat(other: Matrix) {\n    this.wasmIns?._preConcat(other.wasmIns);\n  }\n  /**\n   * Postconcats the matrix with the specified translation. M' = T(dx, dy) * M\n   */\n  public postTranslate(dx: number, dy: number) {\n    this.wasmIns?._postTranslate(dx, dy);\n  }\n  /**\n   * Postconcats the matrix with the specified scale. M' = S(sx, sy, px, py) * M\n   */\n  public postScale(sx: number, sy: number, px = 0, py = 0) {\n    this.wasmIns?._postScale(sx, sy, px, py);\n  }\n  /**\n   * Postconcats the matrix with the specified rotation. M' = R(degrees, px, py) * M\n   */\n  public postRotate(degrees: number, px = 0, py = 0) {\n    this.wasmIns?._postRotate(degrees, px, py);\n  }\n  /**\n   * Postconcats the matrix with the specified skew. M' = K(kx, ky, px, py) * M\n   */\n  public postSkew(kx: number, ky: number, px = 0, py = 0) {\n    this.wasmIns?._postSkew(kx, ky, px, py);\n  }\n  /**\n   * Postconcats the matrix with the specified matrix. M' = other * M\n   */\n  public postConcat(other: Matrix) {\n    this.wasmIns?._postConcat(other.wasmIns);\n  }\n\n  public destroy() {\n    this.wasmIns.delete();\n  }\n}\n","import { PAGModule } from '../pag-module';\nimport { LayerType, Vector } from '../types';\n\nimport type { PAGLayer } from '../pag-layer';\nimport type { PAGImageLayer } from '../pag-image-layer';\nimport type { PAGSolidLayer } from '../pag-solid-layer';\nimport type { PAGTextLayer } from '../pag-text-layer';\n\nconst rewindData = (fn: (...args: any[]) => any, scope: any, ...args: any[]) => {\n  return fn.call(scope, ...args);\n};\n\nexport const proxyVector = <T extends (...args: any) => any>(\n  vector: Vector<any>,\n  process: T,\n): Vector<ReturnType<T>> => {\n  const proxy = new Proxy(vector, {\n    get(target, property, receiver) {\n      switch (property) {\n        case 'get':\n          return (index: number) => {\n            const wasmIns = rewindData(target.get, target, index);\n            return !wasmIns ? wasmIns : process(wasmIns);\n          };\n        case 'push_back':\n          return (value: ReturnType<T>) => {\n            rewindData(target.push_back, target, value.wasmIns || value);\n            return undefined;\n          };\n        case 'size':\n          return () => {\n            return rewindData(target.size, target);\n          };\n        default:\n          return Reflect.get(target, property, receiver);\n      }\n    },\n  });\n  return proxy;\n};\n\nexport const layer2typeLayer = (wasmIns: any): PAGSolidLayer | PAGTextLayer | PAGImageLayer | PAGLayer => {\n  switch (rewindData(wasmIns._layerType, wasmIns)) {\n    case LayerType.Solid:\n      return new PAGModule.PAGSolidLayer(wasmIns);\n    case LayerType.Text:\n      return new PAGModule.PAGTextLayer(wasmIns);\n    case LayerType.Image:\n      return new PAGModule.PAGImageLayer(wasmIns);\n    default:\n      return new PAGModule.PAGLayer(wasmIns);\n  }\n};\n\nexport const getLayerTypeName = (layerType: LayerType) => {\n  switch (layerType) {\n    case LayerType.Solid:\n      return 'Solid';\n    case LayerType.Text:\n      return 'Text';\n    case LayerType.Shape:\n      return 'Shape';\n    case LayerType.Image:\n      return 'Image';\n    case LayerType.PreCompose:\n      return 'PreCompose';\n    default:\n      return 'Unknown';\n  }\n};\n\nexport const getWasmIns = (value: any) => {\n  if (value?.wasmIns) {\n    return value.wasmIns;\n  }\n  return value;\n};\n\nexport const isInstanceOf = (value: any, type: any) => typeof type !== 'undefined' && value instanceof type;\n","import { PAGComposition } from './pag-composition';\nimport { destroyVerify } from './utils/decorators';\nimport { Matrix } from './core/matrix';\nimport { layer2typeLayer, proxyVector } from './utils/type-utils';\n\nimport type { LayerType, Marker, Rect } from './types';\n\n@destroyVerify\nexport class PAGLayer {\n  public wasmIns: any;\n  public isDestroyed = false;\n\n  public constructor(wasmIns: any) {\n    this.wasmIns = wasmIns;\n  }\n  /**\n   * Returns a globally unique id for this object.\n   */\n  public uniqueID(): number {\n    return this.wasmIns._uniqueID() as number;\n  }\n  /**\n   * Returns the type of layer.\n   */\n  public layerType(): LayerType {\n    return this.wasmIns._layerType() as LayerType;\n  }\n  /**\n   * Returns the name of the layer.\n   */\n  public layerName(): string {\n    return this.wasmIns._layerName() as string;\n  }\n  /**\n   * A matrix object containing values that alter the scaling, rotation, and translation of the\n   * layer. Altering it does not change the animation matrix, and it will be concatenated to current\n   * animation matrix for displaying.\n   */\n  public matrix(): Matrix {\n    const wasmIns = this.wasmIns._matrix();\n    if (!wasmIns) throw new Error('Get matrix fail!');\n    return new Matrix(wasmIns);\n  }\n\n  public setMatrix(matrix: Matrix) {\n    this.wasmIns._setMatrix(matrix.wasmIns);\n  }\n  /**\n   * Resets the matrix to its default value.\n   */\n  public resetMatrix() {\n    this.wasmIns._resetMatrix();\n  }\n  /**\n   * Returns the layer's display matrix by combining its matrix) property with the current animation\n   * matrix from the AE timeline. This does not include the parent layer's matrix.\n   * To calculate the final bounds relative to the PAGSurface, use the PAGPlayer::getBounds(PAGLayer layer)\n   * method directly.\n   */\n  public getTotalMatrix(): Matrix {\n    const wasmIns = this.wasmIns._getTotalMatrix();\n    if (!wasmIns) throw new Error('Get total matrix fail!');\n    return new Matrix(this.wasmIns._getTotalMatrix());\n  }\n  /**\n   * Returns the current alpha of the layer if previously set.\n   */\n  public alpha(): number {\n    return this.wasmIns._alpha() as number;\n  }\n  /**\n   * Set the alpha of the layer, which will be concatenated to the current animation opacity for\n   * displaying.\n   */\n  public setAlpha(opacity: Number): void {\n    this.wasmIns._setAlpha(opacity);\n  }\n  /**\n   * Whether or not the layer is visible.\n   */\n\n  public visible(): boolean {\n    return this.wasmIns._visible() as boolean;\n  }\n  /**\n   * Set the visible of the layer.\n   */\n  public setVisible(visible: boolean): void {\n    this.wasmIns._setVisible(visible);\n  }\n  /**\n   * Ranges from 0 to PAGFile.numTexts - 1 if the layer type is text, or from 0 to PAGFile.numImages\n   * -1 if the layer type is image, otherwise returns -1.\n   */\n  public editableIndex(): number {\n    return this.wasmIns._editableIndex() as number;\n  }\n  /**\n   * Returns the parent PAGComposition of current PAGLayer.\n   */\n  public parent(): PAGComposition {\n    const wasmIns = this.wasmIns._parent();\n    if (!wasmIns) throw new Error('Get total matrix fail!');\n    return new PAGComposition(wasmIns);\n  }\n  /**\n   * Returns the markers of this layer.\n   */\n  public markers() {\n    const wasmIns = this.wasmIns._markers();\n    if (!wasmIns) throw new Error('Get markers fail!');\n    return proxyVector(wasmIns, (wasmIns: any) => wasmIns as Marker);\n  }\n  /**\n   * Converts the time from the PAGLayer's (local) timeline to the PAGSurface (global) timeline. The\n   * time is in microseconds.\n   */\n  public localTimeToGlobal(localTime: number): number {\n    return this.wasmIns._localTimeToGlobal(localTime) as number;\n  }\n  /**\n   * Converts the time from the PAGSurface (global) to the PAGLayer's (local) timeline timeline. The\n   * time is in microseconds.\n   */\n  public globalToLocalTime(globalTime: number): number {\n    return this.wasmIns._globalToLocalTime(globalTime) as number;\n  }\n  /**\n   * The duration of the layer in microseconds, indicates the length of the visible range.\n   */\n  public duration(): number {\n    return this.wasmIns._duration() as number;\n  }\n  /**\n   * Returns the frame rate of this layer.\n   */\n  public frameRate(): number {\n    return this.wasmIns._frameRate() as number;\n  }\n  /**\n   * The start time of the layer in microseconds, indicates the start position of the visible range\n   * in parent composition. It could be negative value.\n   */\n  public startTime(): number {\n    return this.wasmIns._startTime() as number;\n  }\n  /**\n   * Set the start time of the layer, in microseconds.\n   */\n  public setStartTime(time: number) {\n    this.wasmIns._setStartTime(time);\n  }\n  /**\n   * The current time of the layer in microseconds, the layer is invisible if currentTime is not in\n   * the visible range (startTime <= currentTime < startTime + duration).\n   */\n  public currentTime(): number {\n    return this.wasmIns._currentTime() as number;\n  }\n  /**\n   * Set the current time of the layer, in microseconds.\n   */\n  public setCurrentTime(time: number) {\n    this.wasmIns._setCurrentTime(time);\n  }\n  /**\n   * Returns the current progress of play position, the value ranges from 0.0 to 1.0.\n   */\n  public getProgress(): number {\n    return this.wasmIns._getProgress() as number;\n  }\n  /**\n   * Set the progress of play position, the value ranges from 0.0 to 1.0. A value of 0.0 represents\n   * the frame at startTime. A value of 1.0 represents the frame at the end of duration.\n   */\n  public setProgress(percent: number) {\n    this.wasmIns._setProgress(percent);\n  }\n  /**\n   * Set the progress of play position to the previous frame.\n   */\n  public preFrame() {\n    this.wasmIns._preFrame();\n  }\n  /**\n   * Set the progress of play position to the next frame.\n   */\n  public nextFrame() {\n    this.wasmIns._nextFrame();\n  }\n  /**\n   * Returns a rectangle that defines the original area of the layer, which is not transformed by\n   * the matrix.\n   */\n  public getBounds(): Rect {\n    return this.wasmIns._getBounds() as Rect;\n  }\n  /**\n   * Returns trackMatte layer of this layer.\n   */\n  public trackMatteLayer(): PAGLayer {\n    const wasmIns = this.wasmIns._trackMatteLayer();\n    if (!wasmIns) throw new Error('Get track matte layer fail!');\n    return layer2typeLayer(wasmIns);\n  }\n  /**\n   * Indicate whether this layer is excluded from parent's timeline. If set to true, this layer's\n   * current time will not change when parent's current time changes.\n   */\n  public excludedFromTimeline(): boolean {\n    return this.wasmIns._excludedFromTimeline() as boolean;\n  }\n  /**\n   * Set the excludedFromTimeline flag of this layer.\n   */\n  public setExcludedFromTimeline(value: boolean): void {\n    this.wasmIns._setExcludedFromTimeline(value);\n  }\n  /**\n   * Returns true if this layer is a PAGFile.\n   */\n  public isPAGFile(): boolean {\n    return this.wasmIns._isPAGFile() as boolean;\n  }\n  /**\n   * Returns this layer as a type layer.\n   */\n  public asTypeLayer() {\n    return layer2typeLayer(this.wasmIns);\n  }\n\n  public isDelete(): boolean {\n    return this.wasmIns.isDelete();\n  }\n\n  public destroy(): void {\n    this.wasmIns.delete();\n    this.isDestroyed = true;\n  }\n}\n","import {PAGModule} from './pag-module';\nimport {PAGLayer} from './pag-layer';\nimport {destroyVerify} from './utils/decorators';\nimport {layer2typeLayer, proxyVector} from './utils/type-utils';\n\nimport {type Marker, VecArray} from './types';\n\n@destroyVerify\nexport class PAGComposition extends PAGLayer {\n    /**\n     * Make a empty PAGComposition with specified size.\n     */\n    public static make(width: number, height: number): PAGComposition {\n        const wasmIns = PAGModule._PAGComposition._Make(width, height);\n        if (!wasmIns) throw new Error('Make PAGComposition fail!');\n        return new PAGComposition(wasmIns);\n    }\n\n    /**\n     * Returns the width of the Composition.\n     */\n    public width(): number {\n        return this.wasmIns._width() as number;\n    }\n\n    /**\n     * Returns the height of the Composition.\n     */\n    public height(): number {\n        return this.wasmIns._height() as number;\n    }\n\n    /**\n     * Set the width and height of the Composition.\n     */\n    public setContentSize(width: number, height: number): void {\n        this.wasmIns._setContentSize(width, height);\n    }\n\n    /**\n     * Returns the number of child layers of this composition.\n     */\n    public numChildren(): number {\n        return this.wasmIns._numChildren() as number;\n    }\n\n    /**\n     * Returns the child layer that exists at the specified index.\n     * @param index The index position of the child layer.\n     * @returns The child layer at the specified index position.\n     */\n    public getLayerAt(index: number) {\n        const wasmIns = this.wasmIns._getLayerAt(index);\n        if (!wasmIns) throw new Error(`Get layer at ${index} fail!`);\n        return layer2typeLayer(wasmIns);\n    }\n\n    /**\n     * Returns the index position of a child layer.\n     * @param pagLayer The layer instance to identify.\n     * @returns The index position of the child layer to identify.\n     */\n    public getLayerIndex(pagLayer: PAGLayer): number {\n        return this.wasmIns._getLayerIndex(pagLayer.wasmIns) as number;\n    }\n\n    /**\n     * Changes the position of an existing child layer in the composition. This affects the layering\n     * of child layers.\n     * @param pagLayer The child layer for which you want to change the index number.\n     * @param index The resulting index number for the child layer.\n     */\n    public setLayerIndex(pagLayer: PAGLayer, index: number): number {\n        return this.wasmIns._setLayerIndex(pagLayer.wasmIns, index) as number;\n    }\n\n    /**\n     * Add a PAGLayer to current PAGComposition at the top. If you add a layer that already has a\n     * different PAGComposition object as a parent, the layer is removed from the other PAGComposition\n     * object.\n     */\n    public addLayer(pagLayer: PAGLayer): boolean {\n        return this.wasmIns._addLayer(pagLayer.wasmIns) as boolean;\n    }\n\n    /**\n     * Add a PAGLayer to current PAGComposition at the top. If you add a layer that already has a\n     * different PAGComposition object as a parent, the layer is removed from the other PAGComposition\n     * object.\n     */\n    public addLayerAt(pagLayer: PAGLayer, index: number): boolean {\n        return this.wasmIns._addLayerAt(pagLayer.wasmIns, index) as boolean;\n    }\n\n    /**\n     * Check whether current PAGComposition contains the specified pagLayer.\n     */\n    public contains(pagLayer: PAGLayer): boolean {\n        return this.wasmIns._contains(pagLayer.wasmIns) as boolean;\n    }\n\n    /**\n     * Remove the specified PAGLayer from current PAGComposition.\n     */\n    public removeLayer(pagLayer: PAGLayer) {\n        const wasmIns = this.wasmIns._removeLayer(pagLayer.wasmIns);\n        if (!wasmIns) throw new Error('Remove layer fail!');\n        return layer2typeLayer(wasmIns);\n    }\n\n    /**\n     * Remove the specified PAGLayer from current PAGComposition.\n     */\n    public removeLayerAt(index: number) {\n        const wasmIns = this.wasmIns._removeLayerAt(index);\n        if (!wasmIns) throw new Error(`Remove layer at ${index} fail!`);\n        return layer2typeLayer(wasmIns);\n    }\n\n    /**\n     * Remove all PAGLayers from current PAGComposition.\n     */\n    public removeAllLayers(): void {\n        this.wasmIns._removeAllLayers();\n    }\n\n    /**\n     * Swap the layers at the specified index.\n     */\n    public swapLayer(pagLayer1: PAGLayer, pagLayer2: PAGLayer): void {\n        this.wasmIns._swapLayer(pagLayer1.wasmIns, pagLayer2.wasmIns);\n    }\n\n    /**\n     * Swap the layers at the specified index.\n     */\n    public swapLayerAt(index1: number, index2: number): void {\n        this.wasmIns._swapLayerAt(index1, index2);\n    }\n\n    /**\n     * The audio data of this composition, which is an AAC audio in an MPEG-4 container.\n     */\n    public audioBytes(): Uint8Array | null {\n        return this.wasmIns._audioBytes();\n    }\n\n    /**\n     * Returns the audio markers of this composition.\n     */\n    public audioMarkers() {\n        const wasmIns = this.wasmIns._audioMarkers();\n        if (!wasmIns) throw new Error(`Get audioMarkers fail!`);\n        return proxyVector(wasmIns, (wasmIns: any) => wasmIns as Marker);\n    }\n\n    /**\n     * Indicates when the first frame of the audio plays in the composition's timeline.\n     */\n    public audioStartTime(): number {\n        return this.wasmIns._audioStartTime() as number;\n    }\n\n    /**\n     * Returns an array of layers that match the specified layer name.\n     */\n    public getLayersByName(layerName: string) {\n        const wasmIns = this.wasmIns._getLayersByName(layerName);\n        if (!wasmIns) throw new Error(`Get layers by ${layerName} fail!`);\n        const layerArray = VecArray.create();\n        for (const wasmIn of wasmIns) {\n            layerArray.push(layer2typeLayer(wasmIn));\n        }\n        return layerArray;\n    }\n\n    /**\n     * Returns an array of layers that lie under the specified point. The point is in pixels and from\n     * this PAGComposition's local coordinates.\n     */\n    public getLayersUnderPoint(localX: number, localY: number) {\n        const wasmIns = this.wasmIns._getLayersUnderPoint(localX, localY);\n        if (!wasmIns) throw new Error(`Get layers under point ${localX},${localY} fail!`);\n        const layerArray = VecArray.create();\n        for (const wasmIn of wasmIns) {\n            layerArray.push(layer2typeLayer(wasmIn));\n        }\n        return layerArray;\n    }\n}\n","import { isInstanceOf } from './type-utils';\n\nexport const readFile = (file: File) =>\n  new Promise<ArrayBuffer | null>((resolve) => {\n    const reader = new FileReader();\n    reader.onload = () => {\n      resolve(reader.result as ArrayBuffer | null);\n    };\n    reader.onerror = () => {\n      console.error((reader.error as DOMException).message);\n    };\n    reader.readAsArrayBuffer(file);\n  });\n\nexport const transferToArrayBuffer = (data: File | Blob | ArrayBuffer) => {\n  if (isInstanceOf(data, globalThis.File)) {\n    return readFile(data as File);\n  } else if (isInstanceOf(data, globalThis.Blob)) {\n    return readFile(new File([data as Blob], ''));\n  } else if (isInstanceOf(data, globalThis.ArrayBuffer)) {\n    return Promise.resolve(data as ArrayBuffer);\n  }\n  return Promise.resolve(null);\n};\n\nexport const concatUint8Arrays = (arrays: Array<Uint8Array>) => {\n  let totalLength = 0;\n  for (const arr of arrays) {\n    totalLength += arr.byteLength;\n  }\n  const result = new Uint8Array(totalLength);\n  let offset = 0;\n  for (const arr of arrays) {\n    result.set(arr, offset);\n    offset += arr.byteLength;\n  }\n  return result;\n};\n","import {PAGModule} from './pag-module';\nimport {PAGComposition} from './pag-composition';\nimport {transferToArrayBuffer} from './utils/common';\nimport {destroyVerify} from './utils/decorators';\nimport {getLayerTypeName, layer2typeLayer, proxyVector} from './utils/type-utils';\n\nimport type {PAGImage} from './pag-image';\nimport {LayerType, PAGTimeStretchMode, TextDocument, VecArray} from './types';\n\n@destroyVerify\nexport class PAGFile extends PAGComposition {\n    /**\n     * Load pag file from file.\n     */\n    public static async load(data: File | Blob | ArrayBuffer) {\n        const buffer = await transferToArrayBuffer(data);\n        if (!buffer)\n            throw new Error(\n                'Initialize PAGFile data type error, please put check data type must to be File ｜ Blob | ArrayBuffer!',\n            );\n        return PAGFile.loadFromBuffer(buffer);\n    }\n\n    /**\n     * Load pag file from arrayBuffer\n     */\n    public static loadFromBuffer(buffer: ArrayBuffer) {\n        if (!buffer || !(buffer.byteLength > 0)) throw new Error('Initialize PAGFile data not be empty!');\n        const uint8Buffer = new Uint8Array(buffer);\n        const wasmIns = PAGModule._PAGFile._Load(uint8Buffer);\n        if (!wasmIns) throw new Error('Load PAGFile fail!');\n        const pagFile = new PAGFile(wasmIns);\n        return pagFile;\n    }\n\n    /**\n     * The maximum tag level current SDK supports.\n     */\n    public static maxSupportedTagLevel(): number {\n        return PAGModule._PAGFile._MaxSupportedTagLevel() as number;\n    }\n\n    /**\n     * The tag level this pag file requires.\n     */\n    public tagLevel(): number {\n        return this.wasmIns._tagLevel() as number;\n    }\n\n    /**\n     * The number of replaceable texts.\n     */\n    public numTexts(): number {\n        return this.wasmIns._numTexts() as number;\n    }\n\n    /**\n     * The number of replaceable images.\n     */\n    public numImages(): number {\n        return this.wasmIns._numImages() as number;\n    }\n\n    /**\n     * The number of video compositions.\n     */\n    public numVideos(): number {\n        return this.wasmIns._numVideos() as number;\n    }\n\n    /**\n     * Get a text data of the specified index. The index ranges from 0 to numTexts - 1.\n     * Note: It always returns the default text data.\n     */\n    public getTextData(editableTextIndex: number): TextDocument {\n        return this.wasmIns._getTextData(editableTextIndex) as TextDocument;\n    }\n\n    /**\n     * Replace the text data of the specified index. The index ranges from 0 to PAGFile.numTexts - 1.\n     * Passing in null for the textData parameter will reset it to default text data.\n     */\n    public replaceText(editableTextIndex: number, textData: TextDocument): void {\n        this.wasmIns._replaceText(editableTextIndex, textData);\n    }\n\n    /**\n     * Replace the image content of the specified index with a PAGImage object. The index ranges from\n     * 0 to PAGFile.numImages - 1. Passing in null for the image parameter will reset it to default\n     * image content.\n     */\n    public replaceImage(editableImageIndex: number, pagImage: PAGImage): void {\n        this.wasmIns._replaceImage(editableImageIndex, pagImage.wasmIns);\n    }\n\n    /**\n     * Return an array of layers by specified editable index and layer type.\n     */\n    public getLayersByEditableIndex(editableIndex: Number, layerType: LayerType) {\n        const wasmIns = this.wasmIns._getLayersByEditableIndex(editableIndex, layerType);\n        if (!wasmIns) throw new Error(`Get ${getLayerTypeName(layerType)} layers by ${editableIndex} fail!`);\n\n        const layerArray = VecArray.create();\n        for (const wasmIn of wasmIns) {\n          layerArray.push(layer2typeLayer(wasmIn));\n        }\n        return layerArray;\n    }\n\n    /**\n     * Returns the indices of the editable layers in this PAGFile.\n     * If the editableIndex of a PAGLayer is not present in the returned indices, the PAGLayer should\n     * not be treated as editable.\n     */\n    public getEditableIndices(layerType: LayerType): Array<number> {\n        return this.wasmIns._getEditableIndices(layerType);\n    }\n\n    /**\n     * Indicate how to stretch the original duration to fit target duration when file's duration is\n     * changed. The default value is PAGTimeStretchMode::Repeat.\n     */\n    public timeStretchMode(): PAGTimeStretchMode {\n        return this.wasmIns._timeStretchMode() as PAGTimeStretchMode;\n    }\n\n    /**\n     * Set the timeStretchMode of this file.\n     */\n    public setTimeStretchMode(value: PAGTimeStretchMode): void {\n        this.wasmIns._setTimeStretchMode(value);\n    }\n\n    /**\n     * Set the duration of this PAGFile. Passing a value less than or equal to 0 resets the duration\n     * to its default value.\n     */\n    public setDuration(duration: number): void {\n        this.wasmIns._setDuration(duration);\n    }\n\n    /**\n     * Make a copy of the original file, any modification to current file has no effect on the result\n     * file.\n     */\n    public copyOriginal(): PAGFile {\n        const wasmIns = this.wasmIns._copyOriginal();\n        if (!wasmIns) throw new Error(`Copy original fail!`);\n        return new PAGFile(wasmIns);\n    }\n}\n","import { PAGModule } from './pag-module';\nimport { AlphaType, ColorType } from './types';\nimport { destroyVerify } from './utils/decorators';\n\n@destroyVerify\nexport class PAGSurface {\n  /**\n   * Make a PAGSurface from canvas.\n   */\n  public static fromCanvas(canvasID: string): PAGSurface {\n    const wasmIns = PAGModule._PAGSurface._FromCanvas(canvasID);\n    if (!wasmIns) throw new Error(`Make PAGSurface from canvas ${canvasID} fail!`);\n    return new PAGSurface(wasmIns);\n  }\n  /**\n   * Make a PAGSurface from texture.\n   */\n  public static fromTexture(textureID: number, width: number, height: number, flipY: boolean): PAGSurface {\n    const wasmIns = PAGModule._PAGSurface._FromTexture(textureID, width, height, flipY);\n    if (!wasmIns) throw new Error(`Make PAGSurface from texture ${textureID} fail!`);\n    return new PAGSurface(wasmIns);\n  }\n  /**\n   * Make a PAGSurface from frameBuffer.\n   */\n  public static fromRenderTarget(frameBufferID: number, width: number, height: number, flipY: boolean): PAGSurface {\n    const wasmIns = PAGModule._PAGSurface._FromRenderTarget(frameBufferID, width, height, flipY);\n    if (!wasmIns) throw new Error(`Make PAGSurface from frameBuffer ${frameBufferID} fail!`);\n    return new PAGSurface(wasmIns);\n  }\n\n  public wasmIns;\n  public isDestroyed = false;\n\n  public constructor(wasmIns: any) {\n    this.wasmIns = wasmIns;\n  }\n  /**\n   * The width of surface in pixels.\n   */\n  public width(): number {\n    return this.wasmIns._width() as number;\n  }\n  /**\n   * The height of surface in pixels.\n   */\n  public height(): number {\n    return this.wasmIns._height() as number;\n  }\n  /**\n   * Update the size of surface, and reset the internal surface.\n   */\n  public updateSize(): void {\n    this.wasmIns._updateSize();\n  }\n  /**\n   * Erases all pixels of this surface with transparent color. Returns true if the content has\n   * changed.\n   */\n  public clearAll(): boolean {\n    return this.wasmIns._clearAll() as boolean;\n  }\n  /**\n   * Free the cache created by the surface immediately. Can be called to reduce memory pressure.\n   */\n  public freeCache(): void {\n    this.wasmIns._freeCache();\n  }\n  /**\n   * Copies pixels from current PAGSurface to dstPixels with specified color type, alpha type and\n   * row bytes. Returns true if pixels are copied to dstPixels.\n   */\n  public readPixels(colorType: ColorType, alphaType: AlphaType): Uint8Array | null {\n    if (colorType === ColorType.Unknown) return null;\n    const rowBytes = this.wasmIns._width() * (colorType === ColorType.ALPHA_8 ? 1 : 4);\n    return this.wasmIns._readPixels(colorType, alphaType, rowBytes);\n  }\n\n  public destroy(): void {\n    this.wasmIns.delete();\n    this.isDestroyed = true;\n  }\n}\n","import {PAGModule} from \"./pag-module\";\nimport type {VideoReader} from \"./interfaces\";\nimport {transferToArrayBuffer} from \"./utils/common\";\nimport type {VideoReaderManager as VideoReaderManageInterfaces} from './interfaces';\nimport {destroyVerify} from \"./utils/decorators\";\n\n/**\n * VideoReaderManager is responsible for managing multiple VideoReader instances.\n * It handles video decoder initialization, frame preparation, and lifecycle management.\n */\n@destroyVerify\nexport class VideoReaderManager {\n\n    /**\n     * Checks whether the given PAG composition contains any video content.\n     * @param wasmIns - The WebAssembly instance to check\n     * @returns True if the composition contains video, false otherwise\n     */\n    public static HasVideo(wasmIns: any){\n        return PAGModule._videoInfoManager._HasVideo(wasmIns) as boolean;\n    }\n\n\n    /**\n     * Factory method to create and initialize a VideoReaderManager instance.\n     * @param wasmIns - The WebAssembly instance containing video information\n     * @returns A promise that resolves to a fully initialized VideoReaderManager instance\n     */\n    public static async make(wasmIns: any): Promise<VideoReaderManager> {\n        const videoManage = new VideoReaderManager(wasmIns);\n        await videoManage.createVideoReader();\n        return videoManage;\n    }\n\n    /** WebAssembly instance for video information management */\n    public wasmIns: any;\n    /** Array of video IDs managed by this instance */\n    public videoIDs: Array<number> = [];\n    /** Flag indicating whether this instance has been destroyed */\n    public isDestroyed = false;\n\n    /** Map storing VideoReader instances indexed by video ID */\n    private videoReaderMap: Map<number, VideoReader> = new Map<number, VideoReader>();\n\n    /**\n     * Constructor for VideoReaderManager.\n     * Initializes the WASM instance and retrieves all video IDs.\n     * @param wasmIns - The WebAssembly instance\n     * @throws Error if VideoReaderManager creation fails\n     */\n    public constructor(\n        wasmIns: any\n    ) {\n        this.wasmIns = PAGModule._videoInfoManager._Make(wasmIns);\n        if (!this.wasmIns) {\n            throw new Error('create VideoReaderManager fail!');\n        }\n        this.videoIDs = this.wasmIns._getVideoIDs() as Array<number>;\n        if (this.wasmIns._hasTimeRangeOverlap() as boolean) {\n            console.error(\"The current file contains multiple layers referencing the same video with overlapping timelines. \" +\n                \"This scenario is not supported, and the rendered result may not match expectations. It is recommended to offset the timelines of these layers.\");\n        }\n    }\n\n    /**\n     * Creates VideoReader instances for all videos in the PAG file.\n     * For each video ID, retrieves MP4 data and initializes the corresponding VideoReader.\n     * Also prepares the first frame with the initial playback rate.\n     */\n    public async createVideoReader() {\n        for (const id of this.videoIDs) {\n            // Retrieve MP4 data for the current video ID\n            const mp4Data = this.wasmIns._getMp4DataByID(id);\n            if (mp4Data !== null) {\n                // Create VideoReader with video metadata (width, height, frame rate, static time ranges)\n                this.videoReaderMap.set(id, await PAGModule.VideoReader.create(mp4Data, this.wasmIns._getWidthByID(id), this.wasmIns._getHeightByID(id),\n                    this.wasmIns._getFrameRateByID(id), this.wasmIns._getStaticTimeRangesByID(id)));\n                // Prepare the first frame (frame 0) with the current playback rate\n                await this.videoReaderMap.get(id)?.prepare(0, this.wasmIns._getPlaybackRateByID(id));\n            }\n\n        }\n    }\n\n    /**\n     * Retrieves a VideoReader instance by video ID.\n     * Marks the video as using hardware decoding (software decode disabled).\n     * @param id - The video ID\n     * @returns The VideoReader instance or undefined if not found\n     * @throws Error if VideoReader is not found for the given ID\n     */\n    public getVideoReaderByID(id: number): VideoReader | undefined {\n        if (this.videoReaderMap.get(id) === undefined) {\n            console.error(`get VideoReader fail!,id:${id}`);\n            return undefined;\n        }\n        return this.videoReaderMap.get(id);\n    }\n\n    /**\n     * Prepares target frames for all videos based on current playback position.\n     * This method is called during rendering to ensure the correct frames are decoded.\n     * It handles both hardware and software decoding modes.\n     */\n    public async prepareTargetFrame() {\n        for (const id of this.videoIDs) {\n            if (this.isDestroyed) return;\n            // Get the target frame index from WASM\n            const targetFrame = this.wasmIns._getTargetFrameByID(id) as number;\n            if (targetFrame < 0) {\n                continue;\n            }\n            if (this.videoReaderMap.get(id) !== undefined) {\n                // Prepare the target frame with current playback rate.\n                await this.videoReaderMap.get(id)?.prepare(targetFrame, this.wasmIns._getPlaybackRateByID(id));\n            } else {\n                console.error(\"videoReader is undefined,id:\", id);\n            }\n\n        }\n    }\n\n    /**\n     * Destroys the VideoReaderManager instance and cleans up all resources.\n     * This includes destroying the WASM instance, all VideoReader instances,\n     * and clearing internal maps.\n     */\n    public destroy(): void {\n        // Delete the WASM instance\n        this.wasmIns.delete();\n        // Destroy all VideoReader instances\n        for (const key of this.videoReaderMap.keys()) {\n            this.videoReaderMap.get(key)?.onDestroy();\n        }\n        // Clear all internal maps\n        this.videoReaderMap.clear();\n        // Mark as destroyed\n        this.isDestroyed = true;\n    }\n\n}","import {PAGModule} from './pag-module';\nimport {PAGFile} from './pag-file';\nimport {PAGSurface} from './pag-surface';\nimport {destroyVerify} from './utils/decorators';\nimport {getWasmIns, layer2typeLayer, proxyVector} from './utils/type-utils';\nimport {Matrix} from './core/matrix';\n\nimport {PAGComposition} from './pag-composition';\nimport type {PAGLayer} from './pag-layer';\nimport {type PAGScaleMode, type Rect, VecArray} from './types';\nimport type {VideoReader} from './interfaces';\nimport {VideoReaderManager} from \"./video-reader-manager\";\n\n@destroyVerify\nexport class PAGPlayer {\n    public static create(): PAGPlayer {\n        const wasmIns = new PAGModule._PAGPlayer();\n        if (!wasmIns) throw new Error('Create PAGPlayer fail!');\n        return new PAGPlayer(wasmIns);\n    }\n\n    public wasmIns;\n    public isDestroyed = false;\n    public videoReaders: VideoReader[] = [];\n\n    protected pagComposition: PAGComposition | null = null;\n    protected videoReaderManager: VideoReaderManager | null = null;\n\n    public constructor(wasmIns: any) {\n        this.wasmIns = wasmIns;\n    }\n\n    /**\n     * Set the progress of play position, the value is from 0.0 to 1.0.\n     */\n    public setProgress(progress: number): void {\n        this.wasmIns._setProgress(progress);\n    }\n\n    /**\n     * Apply all pending changes to the target surface immediately. Returns true if the content has\n     * changed.\n     */\n    public async flush() {\n        PAGModule.currentPlayer = this;\n        await this.prepareVideoFrame();\n        return PAGModule.webAssemblyQueue.exec<boolean>(async () => {\n            const res = await this.wasmIns._flush();\n            PAGModule.currentPlayer = null;\n            return res;\n        }, this.wasmIns);\n    }\n\n    /**\n     * [Internal] Apply all pending changes to the target surface immediately. Returns true if the content has\n     * changed.\n     */\n    public async flushInternal(callback: (res: boolean) => void) {\n        PAGModule.currentPlayer = this;\n        await this.prepareVideoFrame();\n        const res = await PAGModule.webAssemblyQueue.exec<boolean>(async () => {\n            const res = await this.wasmIns._flush();\n            PAGModule.currentPlayer = null;\n            callback(res);\n            return res;\n        }, this.wasmIns);\n        // Log video reader errors but don't throw - video decoding failures shouldn't stop playback\n        for (const videoReader of this.videoReaders) {\n            const error = await videoReader.getError();\n            if (error !== null) {\n                console.warn('[PAGPlayer] VideoReader error:', error);\n            }\n        }\n        return res;\n    }\n\n    /**\n     * The duration of current composition in microseconds.\n     */\n    public duration(): number {\n        return this.wasmIns._duration() as number;\n    }\n\n    /**\n     * Returns the current progress of play position, the value is from 0.0 to 1.0.\n     */\n    public getProgress(): number {\n        return this.wasmIns._getProgress() as number;\n    }\n\n    /**\n     * Returns the current frame.\n     */\n    public currentFrame(): number {\n        return this.wasmIns._currentFrame() as number;\n    }\n\n    /**\n     * If set to false, the player skips rendering for video composition.\n     */\n    public videoEnabled(): boolean {\n        return this.wasmIns._videoEnabled() as boolean;\n    }\n\n    /**\n     * Set the value of videoEnabled property.\n     */\n    public setVideoEnabled(enabled: boolean): void {\n        this.wasmIns._setVideoEnabled(enabled);\n    }\n\n    /**\n     * If set to true, PAGPlayer caches an internal bitmap representation of the static content for each\n     * layer. This caching can increase performance for layers that contain complex vector content. The\n     * execution speed can be significantly faster depending on the complexity of the content, but it\n     * requires extra graphics memory. The default value is true.\n     */\n    public cacheEnabled(): boolean {\n        return this.wasmIns._cacheEnabled() as boolean;\n    }\n\n    /**\n     * Set the value of cacheEnabled property.\n     */\n    public setCacheEnabled(enabled: boolean): void {\n        this.wasmIns._setCacheEnabled(enabled);\n    }\n\n    /**\n     * This value defines the scale factor for internal graphics caches, ranges from 0.0 to 1.0. The\n     * scale factors less than 1.0 may result in blurred output, but it can reduce the usage of graphics\n     * memory which leads to better performance. The default value is 1.0.\n     */\n    public cacheScale(): number {\n        return this.wasmIns._cacheScale() as number;\n    }\n\n    /**\n     * Set the value of cacheScale property.\n     */\n    public setCacheScale(value: number): void {\n        this.wasmIns._setCacheScale(value);\n    }\n\n    /**\n     * The maximum frame rate for rendering, ranges from 1 to 60. If set to a value less than the actual\n     * frame rate from composition, it drops frames but increases performance. Otherwise, it has no\n     * effect. The default value is 60.\n     */\n    public maxFrameRate(): number {\n        return this.wasmIns._maxFrameRate() as number;\n    }\n\n    /**\n     * Set the maximum frame rate for rendering.\n     */\n    public setMaxFrameRate(value: number): void {\n        this.wasmIns._setMaxFrameRate(value);\n    }\n\n    /**\n     * Returns the current scale mode.\n     */\n    public scaleMode(): PAGScaleMode {\n        return this.wasmIns._scaleMode() as PAGScaleMode;\n    }\n\n    /**\n     * Specifies the rule of how to scale the pag content to fit the surface size. The matrix\n     * changes when this method is called.\n     */\n    public setScaleMode(value: PAGScaleMode): void {\n        this.wasmIns._setScaleMode(value);\n    }\n\n    /**\n     * Set the PAGSurface object for PAGPlayer to render onto.\n     */\n    public setSurface(pagSurface: PAGSurface | null): void {\n        this.wasmIns._setSurface(getWasmIns(pagSurface));\n    }\n\n    /**\n     *\n     * Returns the current PAGComposition for PAGPlayer to render as content.\n     */\n    public getComposition(): PAGComposition {\n        const wasmIns = this.wasmIns._getComposition();\n        if (!wasmIns) throw new Error('Get composition fail!');\n        if (wasmIns._isPAGFile()) {\n            return new PAGFile(wasmIns);\n        }\n        return new PAGComposition(wasmIns);\n    }\n\n    /**\n     *\n     * Sets a new PAGComposition for PAGPlayer to render as content.\n     */\n\n    public setComposition(pagComposition: PAGComposition | null) {\n        this.destroyVideoReaderManager();\n        this.pagComposition = pagComposition;\n        this.wasmIns._setComposition(getWasmIns(pagComposition));\n    }\n\n    /**\n     * Returns the PAGSurface object for PAGPlayer to render onto.\n     */\n    public getSurface(): PAGSurface {\n        const wasmIns = this.wasmIns._getSurface();\n        if (!wasmIns) throw new Error('Get surface fail!');\n        return new PAGSurface(wasmIns);\n    }\n\n    /**\n     * Returns a copy of current matrix.\n     */\n    public matrix(): Matrix {\n        const wasmIns = this.wasmIns._matrix();\n        if (!wasmIns) throw new Error('Get matrix fail!');\n        return new Matrix(wasmIns);\n    }\n\n    /**\n     * Set the transformation which will be applied to the composition. The scaleMode property\n     * will be set to PAGScaleMode::None when this method is called.\n     */\n    public setMatrix(matrix: Matrix) {\n        this.wasmIns._setMatrix(matrix.wasmIns);\n    }\n\n    /**\n     * Set the progress of play position to next frame. It is applied only when the composition is not\n     * null.\n     */\n    public nextFrame() {\n        this.wasmIns._nextFrame();\n    }\n\n    /**\n     * Set the progress of play position to previous frame. It is applied only when the composition is\n     * not null.\n     */\n    public preFrame() {\n        this.wasmIns._preFrame();\n    }\n\n    /**\n     * If true, PAGPlayer clears the whole content of PAGSurface before drawing anything new to it.\n     * The default value is true.\n     */\n    public autoClear(): boolean {\n        return this.wasmIns._autoClear() as boolean;\n    }\n\n    /**\n     * Sets the autoClear property.\n     */\n    public setAutoClear(value: boolean) {\n        this.wasmIns._setAutoClear(value);\n    }\n\n    /**\n     * Returns a rectangle that defines the original area of the layer, which is not transformed by\n     * the matrix.\n     */\n    public getBounds(pagLayer: PAGLayer): Rect {\n        return this.wasmIns._getBounds(pagLayer.wasmIns) as Rect;\n    }\n\n    /**\n     * Returns an array of layers that lie under the specified point. The point is in pixels and from\n     *\n     * this PAGComposition's local coordinates.\n     */\n    public getLayersUnderPoint(localX: number, localY: number) {\n        const wasmIns = this.wasmIns._getLayersUnderPoint(localX, localY);\n        if (!wasmIns) throw new Error(`Get layers under point, x: ${localX} y:${localY} fail!`);\n        const layerArray = VecArray.create();\n        for (const wasmIn of wasmIns) {\n            layerArray.push(layer2typeLayer(wasmIn));\n        }\n        return layerArray;\n    }\n\n    /**\n     * Evaluates the PAGLayer to see if it overlaps or intersects with the specified point. The point\n     *\n     * is in the coordinate space of the PAGSurface, not the PAGComposition that contains the\n     * PAGLayer. It always returns false if the PAGLayer or its parent (or parent's parent...) has not\n     * been added to this PAGPlayer. The pixelHitTest parameter indicates whether or not to check\n     * against the actual pixels of the object (true) or the bounding box (false). Returns true if the\n     * PAGLayer overlaps or intersects with the specified point.\n     */\n    public hitTestPoint(pagLayer: PAGLayer, surfaceX: number, surfaceY: number, pixelHitTest = false): boolean {\n        return this.wasmIns._hitTestPoint(pagLayer.wasmIns, surfaceX, surfaceY, pixelHitTest) as boolean;\n    }\n\n    /**\n     * The time cost by rendering in microseconds.\n     */\n    public renderingTime(): number {\n        return this.wasmIns._renderingTime() as number;\n    }\n\n    /**\n     * The time cost by image decoding in microseconds.\n     */\n    public imageDecodingTime(): number {\n        return this.wasmIns._imageDecodingTime() as number;\n    }\n\n    /**\n     * The time cost by presenting in microseconds.\n     */\n    public presentingTime(): number {\n        return this.wasmIns._presentingTime() as number;\n    }\n\n    /**\n     * The memory cost by graphics in bytes.\n     */\n    public graphicsMemory(): number {\n        return this.wasmIns._graphicsMemory() as number;\n    }\n\n    /**\n     * Prepares the player for the next flush() call. It collects all CPU tasks from the current\n     * progress of the composition and runs them asynchronously in parallel. It is usually used for\n     * speeding up the first frame rendering.\n     */\n    public prepare(): Promise<void> {\n        return PAGModule.webAssemblyQueue.exec(async () => {\n            PAGModule.currentPlayer = this;\n            await this.wasmIns._prepare();\n            PAGModule.currentPlayer = null;\n        }, this.wasmIns);\n    }\n\n    public destroy() {\n        this.destroyVideoReaderManager();\n        this.wasmIns.delete();\n        this.isDestroyed = true;\n    }\n\n    /**\n     * Link VideoReader to PAGPlayer.\n     */\n    public linkVideoReader(videoReader: VideoReader) {\n        this.videoReaders.push(videoReader);\n    }\n\n    /**\n     * Unlink VideoReader from PAGPlayer.\n     */\n    public unlinkVideoReader(videoReader: VideoReader) {\n        const index = this.videoReaders.indexOf(videoReader);\n        if (index !== -1) {\n            this.videoReaders.splice(index, 1);\n        }\n    }\n\n    /**\n     * Prepares the video frame for the current composition before rendering.\n     */\n    private async prepareVideoFrame() {\n        if (PAGModule._useSoftwareDecoder !== undefined && !PAGModule._useSoftwareDecoder) {\n            if (this.pagComposition !== null) {\n                if (this.videoReaderManager === null && VideoReaderManager.HasVideo(this.pagComposition?.wasmIns)) {\n                    this.videoReaderManager = await VideoReaderManager.make(this.pagComposition?.wasmIns);\n                    PAGModule.videoReaderManager = this.videoReaderManager;\n                }\n                if (this.videoReaderManager !== null) {\n                    await this.videoReaderManager.prepareTargetFrame();\n                }\n            } else {\n                console.error(\"PAGComposition is null. A valid PAG file is missing.\");\n            }\n        }\n    }\n\n    /**\n     * Destroys the video reader manager and releases all associated resources.\n     */\n    public destroyVideoReaderManager() {\n        if (this.videoReaderManager !== null) {\n            this.videoReaderManager.destroy();\n            this.videoReaderManager = null;\n            PAGModule.videoReaderManage = null;\n        }\n    }\n\n}\n","import { AlphaType, ColorType, PAGScaleMode } from './types';\nimport { destroyVerify } from './utils/decorators';\nimport { PAGModule } from './pag-module';\nimport { Matrix } from './core/matrix';\n\n@destroyVerify\nexport class PAGImage {\n  /**\n   * Create pag image from image file.\n   */\n  public static async fromFile(data: File): Promise<PAGImage> {\n    return new Promise((resolve, reject) => {\n      const image = new Image();\n      image.onload = async () => {\n        resolve(PAGImage.fromSource(image));\n      };\n      image.onerror = (error) => {\n        reject(error);\n      };\n      image.src = URL.createObjectURL(data);\n    });\n  }\n  /**\n   * Create pag image from image source or video source.\n   * Make sure the target pixel is shown on the screen.\n   * Like\n   * ``` javascript\n   * Image.onload = async () => {\n   *   return await PAGImage.fromSource(Image)\n   * }\n   * ```\n   */\n  public static fromSource(source: TexImageSource): PAGImage {\n    const wasmIns = PAGModule._PAGImage._FromNativeImage(source);\n    if (!wasmIns) throw new Error('Make PAGImage from source fail!');\n    return new PAGImage(wasmIns);\n  }\n  /**\n   *  Creates a PAGImage object from an array of pixel data, return null if it's not valid pixels.\n   */\n  public static fromPixels(\n    pixels: Uint8Array,\n    width: number,\n    height: number,\n    colorType: ColorType,\n    alphaType: AlphaType,\n  ): PAGImage {\n    const rowBytes = width * (colorType === ColorType.ALPHA_8 ? 1 : 4);\n    const wasmIns = PAGModule._PAGImage._FromPixels(pixels, width, height, rowBytes, colorType, alphaType);\n    if (!wasmIns) throw new Error('Make PAGImage from pixels fail!');\n    return new PAGImage(wasmIns);\n  }\n  /**\n   * Creates a PAGImage object from the specified backend texture, return null if the texture is\n   * invalid.\n   */\n  public static fromTexture(textureID: number, width: number, height: number, flipY: boolean) {\n    const wasmIns = PAGModule._PAGImage._FromTexture(textureID, width, height, flipY);\n    if (!wasmIns) throw new Error('Make PAGImage from texture fail!');\n    return new PAGImage(wasmIns);\n  }\n\n  public wasmIns;\n  public isDestroyed = false;\n\n  public constructor(wasmIns: any) {\n    this.wasmIns = wasmIns;\n  }\n  /**\n   * Returns the width in pixels.\n   */\n  public width(): number {\n    return this.wasmIns._width() as number;\n  }\n  /**\n   * Returns the height in pixels.\n   */\n  public height(): number {\n    return this.wasmIns._height() as number;\n  }\n  /**\n   * Returns the current scale mode. The default value is PAGScaleMode::LetterBox.\n   */\n  public scaleMode(): PAGScaleMode {\n    return this.wasmIns._scaleMode() as PAGScaleMode;\n  }\n  /**\n   * Specifies the rule of how to scale the content to fit the image layer's original size.\n   * The matrix changes when this method is called.\n   */\n  public setScaleMode(scaleMode: PAGScaleMode) {\n    this.wasmIns._setScaleMode(scaleMode);\n  }\n  /**\n   * Returns a copy of current matrix.\n   */\n  public matrix(): Matrix {\n    const wasmIns = this.wasmIns._matrix();\n    if (!wasmIns) throw new Error('Get matrix fail!');\n    return new Matrix(wasmIns);\n  }\n  /**\n   * Set the transformation which will be applied to the content.\n   * The scaleMode property will be set to PAGScaleMode::None when this method is called.\n   */\n  public setMatrix(matrix: Matrix) {\n    this.wasmIns._setMatrix(matrix.wasmIns);\n  }\n  /**\n   * Destroy the pag image.\n   */\n  public destroy(): void {\n    this.wasmIns.delete();\n    this.isDestroyed = true;\n  }\n}\n","export type Listener<K> = (event: K) => void;\n\nexport class EventManager<K, V> {\n  private listenerMap: Map<keyof K, Array<(event: V) => void>>;\n\n  public constructor() {\n    this.listenerMap = new Map();\n  }\n\n  public on(eventName: keyof K, listener: Listener<V>) {\n    let listenerList: Listener<V>[] = [];\n    if (this.listenerMap.has(eventName)) {\n      listenerList = this.listenerMap.get(eventName) as Array<(event: V) => void>;\n    }\n    listenerList.push(listener);\n    this.listenerMap.set(eventName, listenerList);\n  }\n\n  public off(eventName: keyof K, listener?: Listener<V>): boolean {\n    if (!this.listenerMap.has(eventName)) return false;\n    const listenerList: Listener<V>[] = this.listenerMap.get(eventName) as Listener<V>[];\n    if (listenerList.length === 0) return false;\n    if (!listener) {\n      this.listenerMap.delete(eventName);\n      return true;\n    }\n    const index = listenerList.indexOf(listener);\n    if (index === -1) return false;\n    listenerList.splice(index, 1);\n    return true;\n  }\n\n  public emit(eventName: keyof K, event: V): boolean {\n    if (!this.listenerMap.has(eventName)) return false;\n    const listenerList: Listener<V>[] = this.listenerMap.get(eventName) as Listener<V>[];\n    if (listenerList.length === 0) return false;\n    listenerList.forEach((listener: Listener<V>) => listener(event));\n    return true;\n  }\n}\n","/**\n * VideoDecode wait frame num.\n */\nexport const VIDEO_DECODE_WAIT_FRAME = 1;\n/**\n * VideoDecode seek timeout frame num.\n */\nexport const VIDEO_DECODE_SEEK_TIMEOUT_FRAME = 12;\n/**\n * NAL unit length. [ 0, 0, 0, 1 ]\n */\nexport const NALU_HEADER_LENGTH = 4;\n/**\n * Web safe font.\n */\nexport const WEB_SAFE_FONT = 'Arial';\n/**\n * Default render canvas size.\n */\nexport const DEFAULT_CANVAS_SIZE = 2560;\n/**\n * Default WebGL ContextAttributes\n */\nexport const WEBGL_CONTEXT_ATTRIBUTES = {\n  depth: false,\n  stencil: false,\n  antialias: false,\n};\n\nexport const VIDEO_PLAYBACK_RATE_MIN = 0.125;\nexport const VIDEO_PLAYBACK_RATE_MAX = 4;\n\nexport const CANVAS_POOL_MAX_SIZE = 10;\n","import { PAGModule } from '../pag-module';\nimport { WEBGL_CONTEXT_ATTRIBUTES } from '../constant';\nimport { isInstanceOf } from '../utils/type-utils';\n\nexport class BackendContext {\n  public static from(gl: WebGLRenderingContext | WebGL2RenderingContext | BackendContext): BackendContext {\n    if (gl instanceof BackendContext) {\n      return new BackendContext(gl.handle, true);\n    } else {\n      const majorVersion = isInstanceOf(gl, globalThis.WebGL2RenderingContext) ? 2 : 1;\n      const { GL } = PAGModule;\n      let id = 0;\n      if (GL.contexts.length > 0) {\n        id = GL.contexts.findIndex((context) => context?.GLctx === gl);\n      }\n      if (id < 1) {\n        id = GL.registerContext(gl, {\n          majorVersion: majorVersion,\n          minorVersion: 0,\n          ...WEBGL_CONTEXT_ATTRIBUTES,\n        });\n        return new BackendContext(id);\n      }\n      return new BackendContext(id, true);\n    }\n  }\n\n  public handle: number;\n\n  private externallyOwned: boolean;\n  private isDestroyed = false;\n  private oldHandle = 0;\n\n  public constructor(handle: number, externallyOwned = false) {\n    this.handle = handle;\n    this.externallyOwned = externallyOwned;\n  }\n\n  public getContext(): WebGLRenderingContext | null {\n    return PAGModule.GL.getContext(this.handle)!.GLctx;\n  }\n\n  public makeCurrent(): boolean {\n    if (this.isDestroyed) return false;\n    this.oldHandle = PAGModule.GL.currentContext?.handle || 0;\n    if (this.oldHandle === this.handle) return true;\n    return PAGModule.GL.makeContextCurrent(this.handle);\n  }\n\n  public clearCurrent() {\n    if (this.isDestroyed) return;\n    if (this.oldHandle === this.handle) return;\n    PAGModule.GL.makeContextCurrent(0);\n    if (this.oldHandle) {\n      PAGModule.GL.makeContextCurrent(this.oldHandle);\n    }\n  }\n  /**\n   * Register WebGLTexture in EmscriptenGL, And return handle.\n   */\n  public registerTexture(texture: WebGLTexture) {\n    return this.register(PAGModule.GL.textures, texture);\n  }\n  /**\n   * Get WebGLTexture by handle.\n   */\n  public getTexture(handled: number): WebGLTexture | null {\n    return PAGModule.GL.textures[handled];\n  }\n  /**\n   * Unregister WebGLTexture reference in EmscriptenGL.\n   */\n  public unregisterTexture(handle: number) {\n    PAGModule.GL.textures[handle] = null;\n  }\n  /**\n   * Register WebGLFramebuffer in EmscriptenGL, And return handle.\n   */\n  public registerRenderTarget(framebuffer: WebGLFramebuffer) {\n    return this.register(PAGModule.GL.framebuffers, framebuffer);\n  }\n  /**\n   * Get WebGLFramebuffer by handle.\n   */\n  public getRenderTarget(handle: number): WebGLFramebuffer | null {\n    return PAGModule.GL.framebuffers[handle];\n  }\n  /**\n   * Unregister WebGLTexture reference in EmscriptenGL.\n   */\n  public unregisterRenderTarget(handle: number) {\n    PAGModule.GL.framebuffers[handle] = null;\n  }\n\n  public destroy(): void {\n    if (this.externallyOwned) {\n      return;\n    }\n    PAGModule.GL.deleteContext(this.handle);\n  }\n\n  private register<T>(table: (T | null)[], item: T): number {\n    const handle = PAGModule.GL.getNewId(table);\n    table[handle] = item;\n    return handle;\n  }\n}\n","import { WEBGL_CONTEXT_ATTRIBUTES } from '../constant';\nimport { BackendContext } from './backend-context';\n\nconst renderCanvasList: RenderCanvas[] = [];\n\nexport class RenderCanvas {\n  public static from(canvas: HTMLCanvasElement | OffscreenCanvas, contextAttributes?: WebGLContextAttributes) {\n    let renderCanvas = renderCanvasList.find((targetCanvas) => targetCanvas.canvas === canvas);\n    if (renderCanvas) return renderCanvas;\n    renderCanvas = new RenderCanvas(canvas, contextAttributes);\n    renderCanvasList.push(renderCanvas);\n    return renderCanvas;\n  }\n\n  private _canvas: HTMLCanvasElement | OffscreenCanvas | null = null;\n  private _glContext: BackendContext | null = null;\n  private retainCount = 0;\n\n  public constructor(canvas: HTMLCanvasElement | OffscreenCanvas, contextAttributes?: WebGLContextAttributes) {\n    this._canvas = canvas;\n    const gl = canvas.getContext('webgl', {\n      ...WEBGL_CONTEXT_ATTRIBUTES,\n      ...contextAttributes,\n    }) as WebGLRenderingContext;\n    if (!gl) throw new Error('Canvas context is not WebGL!');\n    this._glContext = BackendContext.from(gl);\n  }\n\n  public retain() {\n    this.retainCount += 1;\n  }\n\n  public release() {\n    this.retainCount -= 1;\n    if (this.retainCount === 0) {\n      if (!this._glContext) return;\n      this._glContext.destroy();\n      this._glContext = null;\n      this._canvas = null;\n    }\n  }\n\n  public get canvas() {\n    return this._canvas;\n  }\n\n  public get glContext() {\n    return this._glContext;\n  }\n}\n","let getTime: () => number;\ntry {\n  getTime = performance.now.bind(performance);\n} catch (e) {\n  getTime = Date.now.bind(Date);\n}\n\nexport class Clock {\n  private startTime: number;\n  private markers: { [key: string]: number };\n\n  public constructor() {\n    this.startTime = getTime();\n    this.markers = {};\n  }\n\n  public reset() {\n    this.startTime = getTime();\n    this.markers = {};\n  }\n\n  public mark(key: string) {\n    if (!key) {\n      console.log('Clock.mark(): An empty marker name was specified!');\n      return;\n    }\n    if (Object.keys(this.markers).find((markerKey) => markerKey === key)) {\n      console.log(`Clock.mark(): The specified marker name '${key}' already exists!`);\n      return;\n    }\n    this.markers[key] = getTime();\n  }\n\n  public measure(makerFrom: string, makerTo: string) {\n    let start;\n    let end;\n    if (!makerFrom) {\n      start = this.startTime;\n    } else {\n      if (!Object.keys(this.markers).find((markerKey) => markerKey === makerFrom)) {\n        console.log(`Clock.measure(): The specified makerFrom '${makerFrom}' does not exist!`);\n        return 0;\n      }\n      start = this.markers[makerFrom];\n    }\n    if (!makerTo) {\n      end = getTime();\n    } else {\n      if (!Object.keys(this.markers).find((markerKey) => markerKey === makerTo)) {\n        console.log(`Clock.measure(): The specified makerTo '${makerTo}' does not exist!`);\n        return 0;\n      }\n      end = this.markers[makerTo];\n    }\n    return end - start;\n  }\n}\n","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const CANVAS_POOL_MAX_SIZE = 10;\n","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const isInstanceOf = (value: any, type: any) => typeof type !== 'undefined' && value instanceof type;","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nconst nav = navigator?.userAgent || '';\nexport const ANDROID = /android|adr/i.test(nav);\nexport const MOBILE = /(mobile)/i.test(nav) && ANDROID;\nexport const MACOS = !(/(mobile)/i.test(nav) || MOBILE) && /Mac OS X/i.test(nav);\nexport const IPHONE = /(iphone|ipad|ipod)/i.test(nav);\nexport const WECHAT = /MicroMessenger/i.test(nav);\nexport const SAFARI_OR_IOS_WEBVIEW = /^((?!chrome|android).)*safari/i.test(nav) || IPHONE;\nexport const WORKER = typeof (globalThis as any).importScripts === 'function';\n","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nimport {CANVAS_POOL_MAX_SIZE} from '../constant';\nimport {isInstanceOf} from './type-utils';\nimport {SAFARI_OR_IOS_WEBVIEW, WORKER} from './ua';\n\nconst canvasPool = new Array<HTMLCanvasElement | OffscreenCanvas>();\n\nexport const isOffscreenCanvas = (element: any) => isInstanceOf(element, globalThis.OffscreenCanvas);\n\nexport const isCanvas = (element: any) =>\n    isOffscreenCanvas(element) || isInstanceOf(element, globalThis.HTMLCanvasElement);\n\nexport const getCanvas2D = (width: number, height: number) => {\n    let canvas = canvasPool.pop() || createCanvas2D();\n    if (canvas !== null) {\n        canvas.width = width;\n        canvas.height = height;\n    }\n    return canvas;\n};\n\nexport const releaseCanvas2D = (canvas: HTMLCanvasElement | OffscreenCanvas) => {\n    if (canvasPool.length < CANVAS_POOL_MAX_SIZE) {\n        canvasPool.push(canvas);\n    }\n};\n\nconst createCanvas2D = () => {\n    /**\n     * Safari browser does not support OffscreenCanvas before version 16.4.\n     * After version 16.4, OffscreenCanvas is supported, but type checking errors still exist for WebGL interfaces on OffscreenCanvas.\n     * Therefore, HTMLCanvas Element is used uniformly in Safari.\n     */\n    if (SAFARI_OR_IOS_WEBVIEW && !WORKER) {\n        return document.createElement('canvas');\n    }\n    try {\n        const offscreenCanvas = new OffscreenCanvas(0, 0);\n        const context = offscreenCanvas.getContext('2d') as OffscreenCanvasRenderingContext2D;\n        if (typeof context.measureText === 'function') return offscreenCanvas;\n        return document.createElement('canvas');\n    } catch (err) {\n        return document.createElement('canvas');\n    }\n};\n\nexport const calculateDisplaySize = (canvas: HTMLCanvasElement) => {\n    const styleDeclaration = globalThis.getComputedStyle(canvas, null);\n    const computedSize = {\n        width: Number(styleDeclaration.width.replace('px', '')),\n        height: Number(styleDeclaration.height.replace('px', '')),\n    };\n    if (computedSize.width > 0 && computedSize.height > 0) {\n        return computedSize;\n    } else {\n        const styleSize = {\n            width: Number(canvas.style.width.replace('px', '')),\n            height: Number(canvas.style.height.replace('px', '')),\n        };\n        if (styleSize.width > 0 && styleSize.height > 0) {\n            return styleSize;\n        } else {\n            return {\n                width: canvas.width,\n                height: canvas.height,\n            };\n        }\n    }\n};\n","import { DebugData, PAGScaleMode, PAGViewEventMap, PAGViewListenerEvent } from './types';\nimport { PAGPlayer } from './pag-player';\nimport { EventManager, Listener } from './utils/event-manager';\nimport { PAGSurface } from './pag-surface';\nimport { destroyVerify } from './utils/decorators';\nimport { BackendContext } from './core/backend-context';\nimport { PAGModule } from './pag-module';\nimport { RenderCanvas } from './core/render-canvas';\nimport { Clock } from './utils/clock';\nimport { isInstanceOf } from './utils/type-utils';\n\nimport type { PAGComposition } from './pag-composition';\nimport type { Matrix } from './core/matrix';\nimport { calculateDisplaySize, isOffscreenCanvas } from '@tgfx/utils/canvas';\n\nexport interface PAGViewOptions {\n  /**\n   * Use style to scale canvas. default false.\n   * When target canvas is offscreen canvas, useScale is false.\n   */\n  useScale?: boolean;\n  /**\n   * Can choose Canvas2D mode in chrome. default false.\n   */\n  useCanvas2D?: boolean;\n  /**\n   * Render first frame when pag view init. default true.\n   */\n  firstFrame?: boolean;\n}\n\n@destroyVerify\nexport class PAGView {\n  /**\n   * Create pag view.\n   * @param file pag file.\n   * @param canvas target render canvas.\n   * @param initOptions pag view options\n   * @returns\n   */\n  public static async init(\n    file: PAGComposition,\n    canvas: string | HTMLCanvasElement | OffscreenCanvas,\n    initOptions: PAGViewOptions = {},\n  ): Promise<PAGView | undefined> {\n    let canvasElement: HTMLCanvasElement | OffscreenCanvas | null = null;\n    if (typeof canvas === 'string') {\n      canvasElement = document.getElementById(canvas.substr(1)) as HTMLCanvasElement;\n    } else if (typeof window !== 'undefined' && isInstanceOf(canvas, globalThis.HTMLCanvasElement)) {\n      canvasElement = canvas;\n    } else if (isOffscreenCanvas(canvas)) {\n      canvasElement = canvas;\n    }\n    if (!canvasElement) throw new Error('Canvas is not found!');\n\n    const pagPlayer = PAGModule.PAGPlayer.create();\n    const pagView = new PAGView(pagPlayer, canvasElement);\n    pagView.pagViewOptions = { ...pagView.pagViewOptions, ...initOptions };\n\n    if (pagView.pagViewOptions.useCanvas2D) {\n      PAGModule.globalCanvas.retain();\n      pagView.pagGlContext = BackendContext.from(PAGModule.globalCanvas.glContext as BackendContext);\n    } else {\n      pagView.renderCanvas = RenderCanvas.from(canvasElement);\n      pagView.renderCanvas.retain();\n      pagView.pagGlContext = BackendContext.from(pagView.renderCanvas.glContext as BackendContext);\n    }\n    pagView.resetSize(pagView.pagViewOptions.useScale);\n    pagView.frameRate = file.frameRate();\n    pagView.pagSurface = this.makePAGSurface(pagView.pagGlContext, pagView.rawWidth, pagView.rawHeight);\n    pagView.player.setSurface(pagView.pagSurface);\n    pagView.player.setComposition(file);\n    pagView.setProgress(0);\n    if (pagView.pagViewOptions.firstFrame) {\n      await pagView.flush();\n      pagView.playFrame = 0;\n    }\n    return pagView;\n  }\n\n  protected static makePAGSurface(pagGlContext: BackendContext, width: number, height: number): PAGSurface {\n    if (!pagGlContext.makeCurrent()) throw new Error('Make context current fail!');\n    const pagSurface = PAGSurface.fromRenderTarget(0, width, height, true);\n    pagGlContext.clearCurrent();\n    return pagSurface;\n  }\n\n  /**\n   * The repeat count of player.\n   */\n  public repeatCount = 0;\n  /**\n   * Indicates whether or not this pag view is playing.\n   */\n  public isPlaying = false;\n  /**\n   * Indicates whether or not this pag view is destroyed.\n   */\n  public isDestroyed = false;\n\n  protected pagViewOptions: PAGViewOptions = {\n    useScale: true,\n    useCanvas2D: false,\n    firstFrame: true,\n  };\n  protected renderCanvas: RenderCanvas | null = null;\n  protected pagGlContext: BackendContext | null = null;\n  protected frameRate = 0;\n  protected pagSurface: PAGSurface | null = null;\n  protected player: PAGPlayer;\n  protected playFrame = -1;\n  protected canvasElement: HTMLCanvasElement | OffscreenCanvas | null;\n  protected timer: number | null = null;\n  protected flushingNextFrame = false;\n  protected playTime = 0;\n  protected startTime = 0;\n  protected repeatedTimes = 0;\n  protected eventManager: EventManager<PAGViewEventMap, PAGView> = new EventManager();\n\n  private canvasContext: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null | undefined;\n  private rawWidth = 0;\n  private rawHeight = 0;\n  private debugData: DebugData = {\n    FPS: 0,\n    flushTime: 0,\n  };\n  private fpsBuffer: number[] = [];\n\n  public constructor(pagPlayer: PAGPlayer, canvasElement: HTMLCanvasElement | OffscreenCanvas) {\n    this.player = pagPlayer;\n    this.canvasElement = canvasElement;\n  }\n\n  /**\n   * The duration of current composition in microseconds.\n   */\n  public duration() {\n    return this.player.duration();\n  }\n  /**\n   * Adds a listener to the set of listeners that are sent events through the life of an animation,\n   * such as start, repeat, and end.\n   */\n  public addListener<K extends keyof PAGViewEventMap>(eventName: K, listener: Listener<PAGViewEventMap[K]>) {\n    return this.eventManager.on(eventName, listener);\n  }\n  /**\n   * Removes a listener from the set listening to this animation.\n   */\n  public removeListener<K extends keyof PAGViewEventMap>(eventName: K, listener?: Listener<PAGViewEventMap[K]>) {\n    return this.eventManager.off(eventName, listener);\n  }\n  /**\n   * Start the animation.\n   */\n  public async play() {\n    if (this.isPlaying) return;\n    this.isPlaying = true;\n    this.startTime = this.getNowTime() * 1000 - this.playTime;\n    for (const videoReader of this.player.videoReaders) {\n      videoReader.isPlaying = true;\n    }\n    const playTime = this.playTime;\n    await this.flushLoop(true);\n    if (playTime === 0) {\n      this.eventManager.emit('onAnimationStart', this);\n    }\n    this.eventManager.emit('onAnimationPlay', this);\n    if (this.playFrame === 0) {\n      this.eventManager.emit('onAnimationUpdate', this);\n    }\n  }\n  /**\n   * Pause the animation.\n   */\n  public pause() {\n    if (!this.isPlaying) return;\n    this.clearTimer();\n    for (const videoReader of this.player.videoReaders) {\n      videoReader.pause();\n    }\n    this.isPlaying = false;\n    this.eventManager.emit('onAnimationPause', this);\n  }\n  /**\n   * Stop the animation.\n   */\n  public async stop(notification = true) {\n    this.clearTimer();\n    this.playTime = 0;\n    this.player.setProgress(0);\n    this.playFrame = 0;\n    await this.flush();\n    for (const videoReader of this.player.videoReaders) {\n      videoReader.stop();\n    }\n    this.isPlaying = false;\n    if (notification) {\n      this.eventManager.emit('onAnimationCancel', this);\n    }\n  }\n  /**\n   * Set the number of times the animation will repeat. The default is 1, which means the animation\n   * will play only once. 0 means the animation will play infinity times.\n   */\n  public setRepeatCount(repeatCount: number) {\n    this.repeatCount = repeatCount < 0 ? 0 : repeatCount - 1;\n  }\n  /**\n   * Returns the current progress of play position, the value is from 0.0 to 1.0. It is applied only\n   * when the composition is not null.\n   */\n  public getProgress(): number {\n    return this.player.getProgress();\n  }\n  /**\n   * Returns the current frame.\n   */\n  public currentFrame(): number {\n    return this.player.currentFrame();\n  }\n  /**\n   * Set the progress of play position, the value is from 0.0 to 1.0.\n   */\n  public setProgress(progress: number): number {\n    this.playTime = progress * this.duration();\n    this.startTime = this.getNowTime() * 1000 - this.playTime;\n    if (!this.isPlaying) {\n      this.player.setProgress(progress);\n    }\n    return progress;\n  }\n  /**\n   * Return the value of videoEnabled property.\n   */\n  public videoEnabled(): boolean {\n    return this.player.videoEnabled();\n  }\n  /**\n   * If set false, will skip video layer drawing.\n   */\n  public setVideoEnabled(enable: boolean) {\n    this.player.setVideoEnabled(enable);\n  }\n  /**\n   * If set to true, PAG renderer caches an internal bitmap representation of the static content for\n   * each layer. This caching can increase performance for layers that contain complex vector content.\n   * The execution speed can be significantly faster depending on the complexity of the content, but\n   * it requires extra graphics memory. The default value is true.\n   */\n  public cacheEnabled(): boolean {\n    return this.player.cacheEnabled();\n  }\n  /**\n   * Set the value of cacheEnabled property.\n   */\n  public setCacheEnabled(enable: boolean) {\n    this.player.setCacheEnabled(enable);\n  }\n  /**\n   * This value defines the scale factor for internal graphics caches, ranges from 0.0 to 1.0. The\n   * scale factors less than 1.0 may result in blurred output, but it can reduce the usage of graphics\n   * memory which leads to better performance. The default value is 1.0.\n   */\n  public cacheScale(): number {\n    return this.player.cacheScale();\n  }\n  /**\n   * Set the value of cacheScale property.\n   */\n  public setCacheScale(value: number) {\n    this.player.setCacheScale(value);\n  }\n  /**\n   * The maximum frame rate for rendering. If set to a value less than the actual frame rate from\n   * PAGFile, it drops frames but increases performance. Otherwise, it has no effect. The default\n   * value is 60.\n   */\n  public maxFrameRate(): number {\n    return this.player.maxFrameRate();\n  }\n  /**\n   * Set the maximum frame rate for rendering.\n   */\n  public setMaxFrameRate(value: number) {\n    this.player.setMaxFrameRate(value);\n  }\n  /**\n   * Returns the current scale mode.\n   */\n  public scaleMode(): PAGScaleMode {\n    return this.player.scaleMode();\n  }\n  /**\n   * Specifies the rule of how to scale the pag content to fit the surface size. The matrix\n   * changes when this method is called.\n   */\n  public setScaleMode(value: PAGScaleMode) {\n    this.player.setScaleMode(value);\n  }\n  /**\n   * Call this method to render current position immediately. If the play() method is already\n   * called, there is no need to call it. Returns true if the content has changed.\n   */\n  public async flush() {\n    const clock = new Clock();\n    const res = await this.player.flushInternal((res) => {\n      if (this.pagViewOptions.useCanvas2D && res && PAGModule.globalCanvas.canvas) {\n        if (!this.canvasContext) this.canvasContext = this.canvasElement?.getContext('2d') as CanvasRenderingContext2D;\n        const compositeOperation = this.canvasContext!.globalCompositeOperation;\n        this.canvasContext!.globalCompositeOperation = 'copy';\n        this.canvasContext?.drawImage(\n          PAGModule.globalCanvas.canvas,\n          0,\n          PAGModule.globalCanvas.canvas.height - this.rawHeight,\n          this.rawWidth,\n          this.rawHeight,\n          0,\n          0,\n          this.canvasContext.canvas.width,\n          this.canvasContext.canvas.height,\n        );\n        this.canvasContext!.globalCompositeOperation = compositeOperation;\n      }\n      clock.mark('flush');\n      this.setDebugData({ flushTime: clock.measure('', 'flush') });\n      this.updateFPS();\n    });\n    this.eventManager.emit('onAnimationUpdate', this);\n    if (res) {\n      this.eventManager.emit('onAnimationFlushed', this);\n    }\n    return res;\n  }\n  /**\n   * Free the cache created by the pag view immediately. Can be called to reduce memory pressure.\n   */\n  public freeCache() {\n    this.pagSurface?.freeCache();\n  }\n  /**\n   * Returns the current PAGComposition for PAGView to render as content.\n   */\n  public getComposition() {\n    return this.player.getComposition();\n  }\n  /**\n   * Sets a new PAGComposition for PAGView to render as content.\n   * Note: If the composition is already added to another PAGView, it will be removed from\n   * the previous PAGView.\n   */\n  public setComposition(pagComposition: PAGComposition) {\n    this.player.setComposition(pagComposition);\n  }\n  /**\n   * Returns a copy of current matrix.\n   */\n  public matrix() {\n    return this.player.matrix();\n  }\n  /**\n   * Set the transformation which will be applied to the composition. The scaleMode property\n   * will be set to PAGScaleMode::None when this method is called.\n   */\n  public setMatrix(matrix: Matrix) {\n    this.player.setMatrix(matrix);\n  }\n\n  public getLayersUnderPoint(localX: number, localY: number) {\n    return this.player.getLayersUnderPoint(localX, localY);\n  }\n  /**\n   * Update size when changed canvas size.\n   */\n  public updateSize() {\n    if (!this.canvasElement) {\n      throw new Error('Canvas element is not found!');\n    }\n    this.rawWidth = this.canvasElement.width;\n    this.rawHeight = this.canvasElement.height;\n    if (!this.pagGlContext) return;\n    const pagSurface = PAGView.makePAGSurface(this.pagGlContext, this.rawWidth, this.rawHeight);\n    this.player.setSurface(pagSurface);\n    this.pagSurface?.destroy();\n    this.pagSurface = pagSurface;\n  }\n  /**\n   * Prepares the player for the next flush() call. It collects all CPU tasks from the current\n   * progress of the composition and runs them asynchronously in parallel. It is usually used for\n   * speeding up the first frame rendering.\n   */\n  public prepare() {\n    return this.player.prepare();\n  }\n  /**\n   * Returns a ImageBitmap object capturing the contents of the PAGView. Subsequent rendering of\n   * the PAGView will not be captured. Returns null if the PAGView hasn't been presented yet.\n   */\n  public async makeSnapshot() {\n    return await createImageBitmap(this.canvasElement!);\n  }\n\n  public destroy() {\n    this.clearTimer();\n    this.player.destroy();\n    this.pagSurface?.destroy();\n    if (this.pagViewOptions.useCanvas2D) {\n      PAGModule.globalCanvas.release();\n    } else {\n      this.renderCanvas?.release();\n    }\n    this.pagGlContext?.destroy();\n    this.pagGlContext = null;\n    this.canvasContext = null;\n    this.canvasElement = null;\n    this.isDestroyed = true;\n  }\n\n  public getDebugData() {\n    return this.debugData;\n  }\n\n  public setDebugData(data: DebugData) {\n    this.debugData = { ...this.debugData, ...data };\n  }\n\n  protected async flushLoop(force = false) {\n    if (!this.isPlaying || this.isDestroyed) {\n      return;\n    }\n    this.setTimer();\n    if (this.flushingNextFrame) return;\n    try {\n      this.flushingNextFrame = true;\n      await this.flushNextFrame(force);\n      this.flushingNextFrame = false;\n    } catch (e: any) {\n      this.flushingNextFrame = false;\n      if (e.message !== 'The play() request was interrupted because the document was hidden!') {\n        this.clearTimer();\n      }\n      console.error(e);\n    }\n  }\n\n  protected async flushNextFrame(force = false) {\n    const duration = this.duration();\n    this.playTime = this.getNowTime() * 1000 - this.startTime;\n    const playFrame = Math.floor((this.playTime / 1000000) * this.frameRate);\n    const count = Math.floor(this.playTime / duration);\n    if (!force && this.repeatCount >= 0 && count > this.repeatCount) {\n      this.clearTimer();\n      this.player.setProgress(1);\n      await this.flush();\n      this.playTime = 0;\n      this.isPlaying = false;\n      this.repeatedTimes = 0;\n      this.eventManager.emit('onAnimationEnd', this);\n      return true;\n    }\n    if (!force && this.repeatedTimes === count && this.playFrame === playFrame) {\n      return false;\n    }\n    if (this.repeatedTimes < count) {\n      this.eventManager.emit('onAnimationRepeat', this);\n    }\n    this.player.setProgress((this.playTime % duration) / duration);\n    const res = await this.flush();\n    if (this.needResetStartTime()) {\n      // Decoding BMP takes too much time and makes the video reader seek repeatedly.\n      this.startTime = this.getNowTime() * 1000 - this.playTime;\n    }\n    this.playFrame = playFrame;\n    this.repeatedTimes = count;\n    return res;\n  }\n\n  protected getNowTime() {\n    try {\n      return performance.now();\n    } catch {\n      return Date.now();\n    }\n  }\n\n  protected setTimer() {\n      this.timer = globalThis.requestAnimationFrame(() => {\n        this.flushLoop();\n      });\n  }\n\n  protected clearTimer(): void {\n    if (this.timer) {\n      globalThis.cancelAnimationFrame(this.timer);\n      this.timer = null;\n    }\n  }\n\n  protected resetSize(useScale = true) {\n    if (!this.canvasElement) {\n      throw new Error('Canvas element is not found!');\n    }\n    if (!useScale || isOffscreenCanvas(this.canvasElement)) {\n      this.rawWidth = this.canvasElement.width;\n      this.rawHeight = this.canvasElement.height;\n      return;\n    }\n    const canvas = this.canvasElement as HTMLCanvasElement;\n    const displaySize = calculateDisplaySize(canvas);\n    canvas.style.width = `${displaySize.width}px`;\n    canvas.style.height = `${displaySize.height}px`;\n    this.rawWidth = displaySize.width * globalThis.devicePixelRatio;\n    this.rawHeight = displaySize.height * globalThis.devicePixelRatio;\n    canvas.width = this.rawWidth;\n    canvas.height = this.rawHeight;\n  }\n\n  protected needResetStartTime() {\n    for (const VideoReader of this.player.videoReaders) {\n      if (VideoReader.isSought) return true;\n    }\n    return false;\n  }\n\n  private updateFPS() {\n    let now: number;\n    try {\n      now = performance.now();\n    } catch {\n      now = Date.now();\n    }\n    this.fpsBuffer = this.fpsBuffer.filter((value) => now - value <= 1000);\n    this.fpsBuffer.push(now);\n    this.setDebugData({ FPS: this.fpsBuffer.length });\n  }\n\n\n}\n","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nconst fontNames = ['Arial', '\"Courier New\"', 'Georgia', '\"Times New Roman\"', '\"Trebuchet MS\"', 'Verdana'];\n\nexport const defaultFontNames = (() => {\n    return ['emoji'].concat(...fontNames);\n})();\n\nexport const getFontFamilies = (name: string, style = ''): string[] => {\n    if (!name) return [];\n    const nameChars = name.split(' ');\n    let names = [];\n    if (nameChars.length === 1) {\n        names.push(name);\n    } else {\n        names.push(nameChars.join(''));\n        names.push(nameChars.join(' '));\n    }\n    const fontFamilies = names.reduce((pre: string[], cur: string) => {\n        if (!style) {\n            pre.push(`\"${cur}\"`);\n        } else {\n            pre.push(`\"${cur} ${style}\"`);\n            pre.push(`\"${cur}-${style}\"`);\n        }\n        return pre;\n    }, []);\n    // Fallback font when style is not found.\n    if (style !== '') {\n        fontFamilies.push(`\"${name}\"`);\n    }\n    return fontFamilies;\n};","import { readFile } from './utils/common';\nimport { defaultFontNames } from '@tgfx/utils/font-family';\nimport { destroyVerify } from './utils/decorators';\nimport { PAGModule } from './pag-module';\n\n@destroyVerify\nexport class PAGFont {\n  /**\n   * Create PAGFont instance.\n   */\n  public static create(fontFamily: string, fontStyle: string) {\n    const wasmIns = PAGModule._PAGFont._create(fontFamily, fontStyle);\n    if (!wasmIns) throw new Error('Create PAGFont fail!');\n    return new PAGFont(wasmIns);\n  }\n\n  /**\n   * Register custom font family in the browser.\n   */\n  public static async registerFont(family: string, data: File) {\n    const buffer = (await readFile(data)) as ArrayBuffer;\n    if (!buffer || !(buffer.byteLength > 0)) {\n      throw new Error('Initialize PAGFont data not be empty!');\n    }\n    const dataUint8Array = new Uint8Array(buffer);\n    const fontFace = new FontFace(family, dataUint8Array);\n    document.fonts.add(fontFace);\n    await fontFace.load();\n  }\n\n  /**\n   * Register fallback font names from pag.\n   */\n  public static registerFallbackFontNames(fontNames: String[] = []) {\n    /**\n     * Cannot determine whether a certain word exists in the font on the web environment.\n     * Because the canvas has font fallback when drawing.\n     * The fonts registered here are mainly used to put words in a list in order, and the list can put up to UINT16_MAX words.\n     * The emoji font family also has emoji words.\n     */\n    const vectorNames = new PAGModule.VectorString();\n    const names = fontNames.concat(defaultFontNames);\n    for (const name of names) {\n      vectorNames.push_back(name);\n    }\n    PAGModule._PAGFont._SetFallbackFontNames(vectorNames);\n    vectorNames.delete();\n  }\n\n  public wasmIns: any;\n  public isDestroyed = false;\n\n  public readonly fontFamily: string;\n  public readonly fontStyle: string;\n\n  public constructor(wasmIns: any) {\n    this.wasmIns = wasmIns;\n    this.fontFamily = this.wasmIns.fontFamily;\n    this.fontStyle = this.wasmIns.fontStyle;\n  }\n\n  public destroy() {\n    this.wasmIns.delete();\n    this.isDestroyed = true;\n  }\n}\n","type K = keyof HTMLVideoElementEventMap;\n\nlet eventHandlers: {\n  [key in K]?: {\n    node: HTMLVideoElement;\n    handler: (this: HTMLVideoElement, ev: HTMLVideoElementEventMap[K]) => any;\n    capture: boolean;\n  }[];\n} = {};\n\nexport const addListener = (\n  node: HTMLVideoElement,\n  event: K,\n  handler: (this: HTMLVideoElement, ev: HTMLVideoElementEventMap[K]) => any,\n  capture = false,\n) => {\n  if (!(event in eventHandlers)) {\n    eventHandlers[event] = [];\n  }\n  eventHandlers[event]?.push({ node: node, handler: handler, capture: capture });\n  node.addEventListener(event, handler, capture);\n};\n\nexport const removeListener = (\n  targetNode: HTMLElement,\n  event: K,\n  targetHandler: (this: HTMLVideoElement, ev: HTMLVideoElementEventMap[K]) => any,\n) => {\n  if (!(event in eventHandlers)) return;\n  eventHandlers[event]\n    ?.filter(({ node, handler }) => node === targetNode && handler === targetHandler)\n    .forEach(({ node, handler, capture }) => node.removeEventListener(event, handler, capture));\n};\n\nexport const removeAllListeners = (targetNode: HTMLElement, event: K) => {\n  if (!(event in eventHandlers)) return;\n  eventHandlers[event]\n    ?.filter(({ node }) => node === targetNode)\n    .forEach(({ node, handler, capture }) => node.removeEventListener(event, handler, capture));\n\n  eventHandlers[event] = eventHandlers[event]?.filter(({ node }) => node !== targetNode);\n};\n","const nav = navigator?.userAgent || '';\nexport const ANDROID = /android|adr/i.test(nav);\nexport const MOBILE = /(mobile)/i.test(nav) && ANDROID;\nexport const MACOS = !(/(mobile)/i.test(nav) || MOBILE) && /Mac OS X/i.test(nav);\nexport const IPHONE = /(iphone|ipad|ipod)/i.test(nav);\nexport const WECHAT = /MicroMessenger/i.test(nav);\nexport const SAFARI_OR_IOS_WEBVIEW = /^((?!chrome|android).)*safari/i.test(nav) || IPHONE;\n","import {\n    VIDEO_DECODE_WAIT_FRAME,\n    VIDEO_DECODE_SEEK_TIMEOUT_FRAME,\n    VIDEO_PLAYBACK_RATE_MAX,\n    VIDEO_PLAYBACK_RATE_MIN,\n} from '../constant';\nimport {addListener, removeListener, removeAllListeners} from '../utils/video-listener';\nimport {IPHONE, WECHAT, SAFARI_OR_IOS_WEBVIEW} from '../utils/ua';\nimport {PAGModule} from '../pag-module';\n\nimport type {TimeRange, VideoReader as VideoReaderInterfaces} from '../interfaces';\nimport type {PAGPlayer} from '../pag-player';\nimport {isInstanceOf} from '../utils/type-utils';\nimport {destroyVerify} from \"../utils/decorators\";\n\nconst UHD_RESOLUTION = 3840;\n\n// Get video initiated token on Wechat browser.\nconst getWechatNetwork = () => {\n    return new Promise<void>((resolve) => {\n        window.WeixinJSBridge.invoke(\n            'getNetworkType',\n            {},\n            () => {\n                resolve();\n            },\n            () => {\n                resolve();\n            },\n        );\n    });\n};\n\nconst waitVideoCanPlay = (videoElement: HTMLVideoElement) => {\n    return new Promise((resolve) => {\n        const canplayHandle = () => {\n            removeListener(videoElement, 'canplay', canplayHandle);\n            clearTimeout(timer);\n            resolve(true);\n        };\n        addListener(videoElement, 'canplay', canplayHandle);\n        const timer = setTimeout(() => {\n            removeListener(videoElement, 'canplay', canplayHandle);\n            resolve(false);\n        }, 1000);\n    });\n};\n\n@destroyVerify\nexport class VideoReader {\n    public static async create(\n        source: Uint8Array | HTMLVideoElement,\n        width: number,\n        height: number,\n        frameRate: number,\n        staticTimeRanges: TimeRange[],\n    ): Promise<VideoReaderInterfaces> {\n        return new VideoReader(source, width, height, frameRate, staticTimeRanges);\n    }\n\n    public isSought = false;\n    public isPlaying = false;\n    public bitmap: ImageBitmap | null = null;\n    public isDestroyed = false;\n\n\n    private videoEl: HTMLVideoElement | null = null;\n    private frameRate = 0;\n    private canplay = false;\n    private staticTimeRanges: StaticTimeRanges | null = null;\n    private disablePlaybackRate = false;\n    private error: any = null;\n    private player: PAGPlayer | null = null;\n    private width = 0;\n    private height = 0;\n    private bitmapCanvas: OffscreenCanvas | null = null;\n    private bitmapCtx: OffscreenCanvasRenderingContext2D | null = null;\n    private currentFrame = -1;\n    private targetFrame = -1;\n    private visibilityHandle: (() => void) | null = null;\n\n    public constructor(\n        source: Uint8Array | HTMLVideoElement,\n        width: number,\n        height: number,\n        frameRate: number,\n        staticTimeRanges: TimeRange[],\n    ) {\n        if (isInstanceOf(source, globalThis.HTMLVideoElement)) {\n            this.videoEl = source as HTMLVideoElement;\n            this.canplay = true;\n        } else {\n            this.videoEl = document.createElement('video');\n            this.videoEl.style.display = 'none';\n            this.videoEl.muted = true;\n            this.videoEl.playsInline = true;\n            this.videoEl.preload = 'auto'; // use load() will make a bug on Chrome.\n            this.videoEl.width = width;\n            this.videoEl.height = height;\n            waitVideoCanPlay(this.videoEl).then(() => {\n                this.canplay = true;\n            });\n            const buffer = (source as Uint8Array).slice();\n            const blob = new Blob([buffer], {type: 'video/mp4'});\n            this.videoEl.src = URL.createObjectURL(blob);\n            if (IPHONE) {\n                // use load() will make a bug on Chrome.\n                this.videoEl.load();\n            }\n        }\n        this.frameRate = frameRate;\n        this.width = width;\n        this.height = height;\n        this.staticTimeRanges = new StaticTimeRanges(staticTimeRanges);\n        if (UHD_RESOLUTION < width || UHD_RESOLUTION < height) {\n            this.disablePlaybackRate = true;\n        }\n        this.linkPlayer(PAGModule.currentPlayer);\n    }\n\n    public async prepare(targetFrame: number, playbackRate: number): Promise<void> {\n        if (this.isDestroyed || targetFrame === this.currentFrame) {\n            return;\n        }\n        const promise = new Promise<void>(async (resolve) => {\n            this.setError(null); // reset error\n            this.isSought = false; // reset seek status\n            const {currentTime} = this.videoEl!;\n            const targetTime = targetFrame / this.frameRate;\n\n            if (currentTime === 0 && targetTime === 0) {\n                if (!this.canplay && !SAFARI_OR_IOS_WEBVIEW) {\n                    await waitVideoCanPlay(this.videoEl!);\n                } else {\n                    try {\n                        await waitVideoCanPlay(this.videoEl!);\n                        await this.play();\n                    } catch (e) {\n                        this.setError(e);\n                        this.currentFrame = targetFrame;\n                        resolve();\n                        return;\n                    }\n                    await new Promise<void>((resolveInner) => {\n                        requestAnimationFrame(() => {\n                            if (!this.isDestroyed) {\n                                this.pause();\n                            }\n                            resolveInner();\n                        });\n                    });\n                }\n            } else {\n                if (Math.round(targetTime * this.frameRate) === Math.round(currentTime * this.frameRate)) {\n                    // Current frame\n                } else if (this.staticTimeRanges?.contains(targetFrame)) {\n                    // Static frame\n                    await this.seek(targetTime, false);\n                    this.currentFrame = targetFrame;\n                    resolve();\n                    return;\n                } else if ((Math.abs(currentTime - targetTime) < (1 / this.frameRate) * VIDEO_DECODE_WAIT_FRAME) && !this.videoEl!.paused) {\n                    // Within tolerable frame rate deviation\n                } else {\n                    // Seek and play\n                    this.isSought = true;\n                    await this.seek(targetTime);\n                    this.currentFrame = targetFrame;\n                    resolve();\n                    return;\n                }\n            }\n\n            if (this.isDestroyed || !this.videoEl) {\n                resolve();\n                return;\n            }\n            const targetPlaybackRate = Math.min(Math.max(playbackRate, VIDEO_PLAYBACK_RATE_MIN), VIDEO_PLAYBACK_RATE_MAX);\n            if (!this.disablePlaybackRate && this.videoEl.playbackRate !== targetPlaybackRate) {\n                this.videoEl.playbackRate = targetPlaybackRate;\n            }\n\n            if (this.isPlaying && this.videoEl.paused) {\n                try {\n                    await this.play();\n                } catch (e) {\n                    this.setError(e);\n                    this.currentFrame = targetFrame;\n                    resolve();\n                    return;\n                }\n            }\n            this.currentFrame = targetFrame;\n            resolve();\n        });\n        await promise;\n    }\n\n    public getCurrentFrame(): number {\n        return this.currentFrame;\n    }\n\n    public getVideo() {\n        return this.videoEl;\n    }\n\n    public async play() {\n        if (!this.videoEl!.paused) return;\n        if (WECHAT && window.WeixinJSBridge) {\n            await getWechatNetwork();\n        }\n        if (document.visibilityState !== 'visible') {\n            // Page is hidden, defer video play until visible\n            this.clearVisibilityListener();\n            this.visibilityHandle = () => {\n                if (this.isDestroyed) {\n                    this.clearVisibilityListener();\n                    return;\n                }\n                if (document.visibilityState === 'visible') {\n                    if (this.videoEl) this.videoEl.play().catch((e) => { this.setError(e); });\n                    this.clearVisibilityListener();\n                }\n            };\n            window.addEventListener('visibilitychange', this.visibilityHandle);\n            throw new Error('The play() request was interrupted because the document was hidden!');\n        }\n        await this.videoEl?.play();\n    }\n\n    public pause() {\n        this.isPlaying = false;\n        if (this.videoEl!.paused) return;\n        this.videoEl?.pause();\n    }\n\n    public stop() {\n        this.isPlaying = false;\n        if (!this.videoEl!.paused) {\n            this.videoEl?.pause();\n        }\n    }\n\n    public getError() {\n        return this.error;\n    }\n\n    public onDestroy() {\n        this.isDestroyed = true;\n        if (this.player) {\n            this.player.unlinkVideoReader(this);\n            this.player = null;\n        }\n        this.clearVisibilityListener();\n        removeAllListeners(this.videoEl!, 'playing');\n        removeAllListeners(this.videoEl!, 'timeupdate');\n        removeAllListeners(this.videoEl!, 'seeked');\n        removeAllListeners(this.videoEl!, 'canplay');\n        this.videoEl = null;\n        this.bitmapCanvas = null;\n        this.bitmapCtx = null;\n    }\n\n    private seek(targetTime: number, play = true) {\n        return new Promise<void>((resolve, reject) => {\n            if (!this.videoEl) {\n                reject(new Error('Video element is not initialized.'));\n                return;\n            }\n\n            const onSeeked = () => {\n                if (!this.videoEl || this.isDestroyed) {\n                    clearTimeout(seekTimeout);\n                    resolve();\n                    return;\n                }\n                removeListener(this.videoEl, 'seeked', onSeeked);\n                clearTimeout(seekTimeout);\n                if (play) {\n                    // After seeking, the video might still be in 'ended' state\n                    // Reset it by setting currentTime to itself to clear the ended flag\n                    if (this.videoEl.ended) {\n                        this.videoEl.currentTime = this.videoEl.currentTime;\n                    }\n                    this.videoEl.play().catch((e) => {\n                        this.setError(e);\n                    });\n                } else if (!play && !this.videoEl.paused) {\n                    this.videoEl.pause();\n                }\n                resolve();\n            };\n\n            const onCanPlay = () => {\n                if (!this.videoEl || this.isDestroyed) {\n                    clearTimeout(seekTimeout);\n                    resolve();\n                    return;\n                }\n                removeListener(this.videoEl, 'canplay', onCanPlay);\n                // Now that we have enough data, perform the seek.\n                this.videoEl.currentTime = targetTime;\n                addListener(this.videoEl, 'seeked', onSeeked);\n            };\n\n            const seekTimeout = setTimeout(() => {\n                if (this.videoEl) {\n                    removeListener(this.videoEl, 'canplay', onCanPlay);\n                    removeListener(this.videoEl, 'seeked', onSeeked);\n                }\n                this.setError('Seek operation timed out.');\n                resolve();\n            }, (1000 / this.frameRate) * VIDEO_DECODE_SEEK_TIMEOUT_FRAME);\n\n            // Check if we need to wait for 'canplay' event before seeking.\n            if (this.videoEl.readyState < HTMLMediaElement.HAVE_FUTURE_DATA) {\n                addListener(this.videoEl, 'canplay', onCanPlay);\n            } else {\n                // We already have enough data to perform the seek.\n                this.videoEl!.currentTime = targetTime;\n                addListener(this.videoEl, 'seeked', onSeeked);\n            }\n        });\n    }\n\n    private setError(e: any) {\n        this.error = e;\n    }\n\n    private clearVisibilityListener() {\n        if (this.visibilityHandle) {\n            window.removeEventListener('visibilitychange', this.visibilityHandle);\n            this.visibilityHandle = null;\n        }\n    }\n\n    private linkPlayer(player: PAGPlayer | null) {\n        this.player = player;\n        if (player) {\n            player.linkVideoReader(this);\n        }\n    }\n}\n\nexport class StaticTimeRanges {\n    private timeRanges: TimeRange[];\n\n    public constructor(timeRanges: TimeRange[]) {\n        this.timeRanges = timeRanges;\n    }\n\n    public contains(targetFrame: number) {\n        if (this.timeRanges.length === 0) return false;\n        for (let timeRange of this.timeRanges) {\n            if (timeRange.start <= targetFrame && targetFrame < timeRange.end) {\n                return true;\n            }\n        }\n        return false;\n    }\n}\n","import { DEFAULT_CANVAS_SIZE, WEBGL_CONTEXT_ATTRIBUTES } from '../constant';\nimport { BackendContext } from './backend-context';\n\nexport class GlobalCanvas {\n  private _canvas: HTMLCanvasElement | OffscreenCanvas | null = null;\n  private _glContext: BackendContext | null = null;\n  private width = DEFAULT_CANVAS_SIZE;\n  private height = DEFAULT_CANVAS_SIZE;\n  private retainCount = 0;\n\n  public retain() {\n    if (this.retainCount === 0) {\n      try {\n        this._canvas = new OffscreenCanvas(0, 0);\n      } catch (error) {\n        this._canvas = document.createElement('canvas');\n      }\n      this._canvas.width = this.width;\n      this._canvas.height = this.height;\n\n      const gl = this._canvas.getContext('webgl', WEBGL_CONTEXT_ATTRIBUTES) as WebGLRenderingContext;\n      if (!gl) throw new Error('Canvas context is not WebGL!');\n      this._glContext = BackendContext.from(gl);\n    }\n    this.retainCount += 1;\n  }\n\n  public release() {\n    this.retainCount -= 1;\n    if (this.retainCount === 0) {\n      if (!this._glContext) return;\n      this._glContext.destroy();\n      this._glContext = null;\n      this._canvas = null;\n    }\n  }\n\n  public get canvas() {\n    return this._canvas;\n  }\n\n  public get glContext() {\n    return this._glContext;\n  }\n\n  public setCanvasSize(width = DEFAULT_CANVAS_SIZE, height = DEFAULT_CANVAS_SIZE) {\n    this.width = width;\n    this.height = height;\n    if (this._glContext && this._canvas) {\n      this._canvas.width = width;\n      this._canvas.height = height;\n    }\n  }\n}\n","import { PAGModule } from './pag-module';\nimport { PAGFont } from './pag-font';\nimport { PAGLayer } from './pag-layer';\nimport { destroyVerify } from './utils/decorators';\n\nimport type { Color, TextDocument } from './types';\n\n@destroyVerify\nexport class PAGTextLayer extends PAGLayer {\n  public static make(\n    duration: number,\n    text: string,\n    fontSize: number,\n    fontFamily: string,\n    fontStyle: string,\n  ): PAGTextLayer;\n  public static make(duration: number, textDocumentHandle: TextDocument): PAGTextLayer;\n  public static make(\n    duration: number,\n    text: string | TextDocument,\n    fontSize = 0,\n    fontFamily = '',\n    fontStyle = '',\n  ): PAGTextLayer {\n    if (typeof text === 'string') {\n      return new PAGTextLayer(PAGModule._PAGTextLayer._Make(duration, text, fontSize, fontFamily, fontStyle));\n    } else {\n      return new PAGTextLayer(PAGModule._PAGTextLayer._Make(duration, text));\n    }\n  }\n\n  /**\n   * Returns the text layer’s fill color.\n   */\n  public fillColor(): Color {\n    return this.wasmIns._fillColor() as Color;\n  }\n  /**\n   * Set the text layer’s fill color.\n   */\n  public setFillColor(value: Color) {\n    this.wasmIns._setFillColor(value);\n  }\n  /**\n   * Returns the text layer's font.\n   */\n  public font(): PAGFont {\n    return new PAGFont(this.wasmIns._font());\n  }\n  /**\n   * Set the text layer's font.\n   */\n  public setFont(pagFont: PAGFont) {\n    this.wasmIns._setFont(pagFont.wasmIns);\n  }\n  /**\n   * Returns the text layer's font size.\n   */\n  public fontSize(): number {\n    return this.wasmIns._fontSize() as number;\n  }\n  /**\n   * Set the text layer's font size.\n   */\n  public setFontSize(size: number) {\n    this.wasmIns._setFontSize(size);\n  }\n  /**\n   * Returns the text layer's stroke color.\n   */\n  public strokeColor(): Color {\n    return this.wasmIns._strokeColor() as Color;\n  }\n  /**\n   * Set the text layer's stroke color.\n   */\n  public setStrokeColor(value: Color) {\n    this.wasmIns._setStrokeColor(value);\n  }\n  /**\n   * Returns the text layer's text.\n   */\n  public text(): string {\n    return this.wasmIns._text() as string;\n  }\n  /**\n   * Set the text layer's text.\n   */\n  public setText(text: string) {\n    this.wasmIns._setText(text);\n  }\n  /**\n   * Reset the text layer to its default text data.\n   */\n  public reset() {\n    this.wasmIns._reset();\n  }\n}\n","import { PAGModule } from './pag-module';\nimport { PAGLayer } from './pag-layer';\nimport { destroyVerify } from './utils/decorators';\nimport { proxyVector } from './utils/type-utils';\n\nimport type { PAGImage } from './pag-image';\nimport type { PAGVideoRange } from './types';\n\n@destroyVerify\nexport class PAGImageLayer extends PAGLayer {\n  /**\n   * Make a empty PAGImageLayer with specified size.\n   */\n  public static make(width: number, height: number, duration: number): PAGImageLayer {\n    const wasmIns = PAGModule._PAGImageLayer._Make(width, height, duration);\n    if (!wasmIns) throw new Error('Make PAGImageLayer fail!');\n    return new PAGImageLayer(wasmIns);\n  }\n\n  /**\n   * Returns the content duration in microseconds, which indicates the minimal length required for\n   * replacement.\n   */\n  public contentDuration(): number {\n    return this.wasmIns._contentDuration() as number;\n  }\n  /**\n   * Returns the time ranges of the source video for replacement.\n   */\n  public getVideoRanges(): PAGVideoRange[] {\n    return this.wasmIns._getVideoRanges();\n  }\n  /**\n   * [Deprecated]\n   * Replace the original image content with the specified PAGImage object.\n   * Passing in null for the image parameter resets the layer to its default image content.\n   * The replaceImage() method modifies all associated PAGImageLayers that have the same\n   * editableIndex to this layer.\n   *\n   * @param image The PAGImage object to replace with.\n   */\n  public replaceImage(pagImage: PAGImage) {\n    this.wasmIns._replaceImage(pagImage.wasmIns);\n  }\n  /**\n   * Replace the original image content with the specified PAGImage object.\n   * Passing in null for the image parameter resets the layer to its default image content.\n   * The setImage() method only modifies the content of the calling PAGImageLayer.\n   *\n   * @param image The PAGImage object to replace with.\n   */\n  public setImage(pagImage: PAGImage) {\n    this.wasmIns._setImage(pagImage.wasmIns);\n  }\n  /**\n   * Converts the time from the PAGImageLayer's timeline to the replacement content's timeline. The\n   * time is in microseconds.\n   */\n  public layerTimeToContent(layerTime: number): number {\n    return this.wasmIns._layerTimeToContent(layerTime) as number;\n  }\n  /**\n   * Converts the time from the replacement content's timeline to the PAGLayer's timeline. The time\n   * is in microseconds.\n   */\n  public contentTimeToLayer(contentTime: number): number {\n    return this.wasmIns._contentTimeToLayer(contentTime) as number;\n  }\n  /**\n   * The default image data of this layer, which is webp format.\n   */\n  public imageBytes(): Uint8Array | null {\n    return this.wasmIns._imageBytes();\n  }\n}\n","import { PAGModule } from './pag-module';\nimport { PAGLayer } from './pag-layer';\nimport { destroyVerify } from './utils/decorators';\n\nimport type { Color } from './types';\n\n@destroyVerify\nexport class PAGSolidLayer extends PAGLayer {\n  /**\n   * Make a empty PAGSolidLayer with specified size.\n   */\n  public static make(duration: number, width: number, height: number, solidColor: Color, opacity: number) {\n    const wasmIns = PAGModule._PAGSolidLayer._Make(duration, width, height, solidColor, opacity);\n    if (!wasmIns) throw new Error('Make PAGSolidLayer fail!');\n    return new PAGSolidLayer(wasmIns);\n  }\n  /**\n   * Returns the layer's solid color.\n   */\n  public solidColor(): Color {\n    return this.wasmIns._solidColor() as Color;\n  }\n  /**\n   * Set the the layer's solid color.\n   */\n  public setSolidColor(color: Color) {\n    this.wasmIns._setSolidColor(color);\n  }\n}\n","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nimport type {TGFX} from './types';\n\nexport let TGFXModule: TGFX;\n\nexport const setTGFXModule = (module: TGFX) => {\n    TGFXModule = module;\n};\n\nexport const getTGFXModule = () => TGFXModule;\n","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport class BitmapImage {\n    public bitmap: ImageBitmap | null;\n\n    public constructor(bitmap: ImageBitmap | null) {\n        this.bitmap = bitmap;\n    }\n\n    public setBitmap(bitmap: ImageBitmap) {\n        if (this.bitmap) {\n            this.bitmap.close();\n        }\n        this.bitmap = bitmap;\n    }\n}\n","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nimport {getCanvas2D, releaseCanvas2D, isCanvas} from './utils/canvas';\nimport {BitmapImage} from './core/bitmap-image';\nimport {isInstanceOf} from './utils/type-utils';\n\nimport type {EmscriptenGL, TGFX} from './types';\nimport type {wx} from './wechat/interfaces';\n\ndeclare const wx: wx;\n\nexport const createImage = (source: string) => {\n    return new Promise<HTMLImageElement | null>((resolve) => {\n        const image = new Image();\n        image.onload = function () {\n            resolve(image);\n        };\n        image.onerror = function () {\n            console.error('image create from bytes error.');\n            resolve(null);\n        };\n        image.src = source;\n    });\n};\n\nexport const createImageFromBytes = (bytes: ArrayBuffer) => {\n    const uint8Array = new Uint8Array(bytes);\n    const blob = new Blob([uint8Array], {type: 'image/*'});\n    return createImage(URL.createObjectURL(blob));\n};\n\nexport const readImagePixels = (module: TGFX, image: CanvasImageSource, width: number, height: number) => {\n    if (!image) {\n        return null;\n    }\n    const canvas = getCanvas2D(width, height);\n    const ctx = canvas.getContext('2d', {willReadFrequently: true}) as CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null;\n    if (!ctx) {\n        return null;\n    }\n    ctx.drawImage(image, 0, 0, width, height);\n    const {data} = ctx.getImageData(0, 0, width, height);\n    releaseCanvas2D(canvas);\n    if (data.length === 0) {\n        return null;\n    }\n    return new Uint8Array(data);\n};\n\nexport const hasWebpSupport = () => {\n    try {\n        return document.createElement('canvas').toDataURL('image/webp', 0.5).indexOf('data:image/webp') === 0;\n    } catch (err) {\n        return false;\n    }\n};\n\nexport const getSourceSize = (source: TexImageSource | OffscreenCanvas) => {\n    if (isInstanceOf(source, globalThis.HTMLVideoElement)) {\n        return {\n            width: (source as HTMLVideoElement).videoWidth,\n            height: (source as HTMLVideoElement).videoHeight,\n        };\n    }\n    return {width: source.width, height: source.height};\n};\n\nexport const uploadToTexture = (\n    GL: EmscriptenGL,\n    source: TexImageSource | OffscreenCanvas | BitmapImage,\n    textureID: number,\n    alphaOnly: boolean,\n) => {\n    let renderSource = source instanceof BitmapImage ? source.bitmap : source;\n    if (!renderSource) return;\n    const gl = GL.currentContext?.GLctx as WebGLRenderingContext;\n    gl.bindTexture(gl.TEXTURE_2D, GL.textures[textureID]);\n    if (alphaOnly) {\n        gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n        gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.ALPHA, gl.UNSIGNED_BYTE, renderSource);\n    } else {\n        gl.pixelStorei(gl.UNPACK_ALIGNMENT, 4);\n        gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n        gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, renderSource);\n        gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);\n    }\n};\n\nexport const isAndroidMiniprogram = () => {\n    if (typeof wx !== 'undefined' && wx.getSystemInfoSync) {\n        return wx.getSystemInfoSync().platform === 'android';\n    }\n};\n\nexport const releaseNativeImage = (source: TexImageSource | OffscreenCanvas) => {\n    if (isInstanceOf(source, globalThis.ImageBitmap)) {\n        (source as ImageBitmap).close();\n    } else if (isCanvas(source)) {\n        releaseCanvas2D(source as OffscreenCanvas | HTMLCanvasElement);\n    }\n};\n\nexport const getBytesFromPath = async (module: TGFX, path: string) => {\n    const buffer = await fetch(path).then((res) => res.arrayBuffer());\n    return new Uint8Array(buffer);\n};\n\nexport {getCanvas2D as createCanvas2D};","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport declare class Vector<T> {\n    private constructor();\n\n    /**\n     * Get item from Vector by index.\n     */\n    public get(index: number): T;\n\n    /**\n     * Push item into Vector.\n     */\n    public push_back(value: T): void;\n\n    /**\n     * Get item number in Vector.\n     */\n    public size(): number;\n\n    /**\n     * Delete Vector instance.\n     */\n    public delete(): void;\n}\n\n\nexport const enum MatrixIndex {\n    a,\n    c,\n    tx,\n    b,\n    d,\n    ty,\n}\n\nexport interface ctor {\n    value: number;\n}\n\nexport interface Point {\n    x: number;\n    y: number;\n}\n\nexport interface Rect {\n    /**\n     * smaller x-axis bounds.\n     */\n    left: number;\n    /**\n     * smaller y-axis bounds.\n     */\n    top: number;\n    /**\n     * larger x-axis bounds.\n     */\n    right: number;\n    /**\n     * larger y-axis bounds.\n     */\n    bottom: number;\n}\n\nexport interface TGFXLineCap {\n    /**\n     * No stroke extension.\n     */\n    Butt: ctor;\n    /**\n     * Adds circle\n     */\n    Round: ctor;\n    /**\n     * Adds square\n     */\n    Square: ctor;\n}\n\nexport interface TGFXLineJoin {\n    /**\n     * Extends to miter limit.\n     */\n    Miter: ctor;\n    /**\n     * Adds circle.\n     */\n    Round: ctor;\n    /**\n     * Connects outside edges.\n     */\n    Bevel: ctor;\n}\n\nexport interface TGFXPathFillType {\n    /**\n     * Enclosed by a non-zero sum of contour directions.\n     */\n    Winding: ctor;\n    /**\n     * Enclosed by an odd number of contours.\n     */\n    EvenOdd: ctor;\n    /**\n     * Enclosed by a zero sum of contour directions.\n     */\n    InverseWinding: ctor;\n    /**\n     * Enclosed by an even number of contours.\n     */\n    InverseEvenOdd: ctor;\n}\n\n\nexport interface EmscriptenGLContext {\n    handle: number;\n    GLctx: WebGLRenderingContext;\n    attributes: EmscriptenGLContextAttributes;\n    initExtensionsDone: boolean;\n    version: number;\n}\n\nexport type EmscriptenGLContextAttributes =\n    { majorVersion: number; minorVersion: number }\n    & WebGLContextAttributes;\n\nexport interface EmscriptenGL {\n    contexts: (EmscriptenGLContext | null)[];\n    createContext: (\n        canvas: HTMLCanvasElement | OffscreenCanvas,\n        webGLContextAttributes: EmscriptenGLContextAttributes,\n    ) => number;\n    currentContext?: EmscriptenGLContext;\n    deleteContext: (contextHandle: number) => void;\n    framebuffers: (WebGLFramebuffer | null)[];\n    getContext: (contextHandle: number) => EmscriptenGLContext;\n    getNewId: (array: any[]) => number;\n    makeContextCurrent: (contextHandle: number) => boolean;\n    registerContext: (ctx: WebGLRenderingContext, webGLContextAttributes: EmscriptenGLContextAttributes) => number;\n    textures: (WebGLTexture | null)[];\n}\n\nexport interface TGFX extends EmscriptenModule {\n    TGFXLineCap: TGFXLineCap;\n    TGFXLineJoin: TGFXLineJoin;\n    GL: EmscriptenGL;\n    TGFXPathFillType: TGFXPathFillType;\n    _Matrix: {\n        _MakeAll: (\n            scaleX: number,\n            skewX: number,\n            transX: number,\n            skewY: number,\n            scaleY: number,\n            transY: number,\n            pers0: number,\n            pers1: number,\n            pers2: number,\n        ) => any;\n        _MakeScale: ((sx: number, sy: number) => any) & ((scale: number) => any);\n        _MakeTrans: (dx: number, dy: number) => any;\n    };\n\n    [key: string]: any;\n}","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nimport {destroyVerify} from '../utils/decorators';\nimport {MatrixIndex} from '../types';\n\n@destroyVerify\nexport class Matrix {\n    public wasmIns;\n    public isDestroyed = false;\n\n    public constructor(wasmIns: any) {\n        this.wasmIns = wasmIns;\n    }\n\n    /**\n     * scaleX; horizontal scale factor to store\n     */\n    public get a(): number {\n        return this.wasmIns ? this.wasmIns._get(MatrixIndex.a) : 0;\n    }\n\n    public set a(value: number) {\n        this.wasmIns?._set(MatrixIndex.a, value);\n    }\n\n    /**\n     * skewY; vertical skew factor to store\n     */\n    public get b(): number {\n        return this.wasmIns ? this.wasmIns._get(MatrixIndex.b) : 0;\n    }\n\n    public set b(value: number) {\n        this.wasmIns?._set(MatrixIndex.b, value);\n    }\n\n    /**\n     * skewX; horizontal skew factor to store\n     */\n    public get c(): number {\n        return this.wasmIns ? this.wasmIns._get(MatrixIndex.c) : 0;\n    }\n\n    public set c(value: number) {\n        this.wasmIns?._set(MatrixIndex.c, value);\n    }\n\n    /**\n     * scaleY; vertical scale factor to store\n     */\n    public get d(): number {\n        return this.wasmIns ? this.wasmIns._get(MatrixIndex.d) : 0;\n    }\n\n    public set d(value: number) {\n        this.wasmIns?._set(MatrixIndex.d, value);\n    }\n\n    /**\n     * transX; horizontal translation to store\n     */\n    public get tx(): number {\n        return this.wasmIns ? this.wasmIns._get(MatrixIndex.tx) : 0;\n    }\n\n    public set tx(value: number) {\n        this.wasmIns?._set(MatrixIndex.tx, value);\n    }\n\n    /**\n     * transY; vertical translation to store\n     */\n    public get ty(): number {\n        return this.wasmIns ? this.wasmIns._get(MatrixIndex.ty) : 0;\n    }\n\n    public set ty(value: number) {\n        this.wasmIns?._set(MatrixIndex.ty, value);\n    }\n\n    /**\n     * Returns one matrix value.\n     */\n    public get(index: MatrixIndex): number {\n        return this.wasmIns ? this.wasmIns._get(index) : 0;\n    }\n\n    /**\n     * Sets Matrix value.\n     */\n    public set(index: MatrixIndex, value: number) {\n        this.wasmIns?._set(index, value);\n    }\n\n    public destroy() {\n        this.wasmIns.delete();\n    }\n}","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nimport {TGFXModule} from '../tgfx-module';\n\nexport function destroyVerify(constructor: any) {\n    let functions = Object.getOwnPropertyNames(constructor.prototype).filter(\n        (name) => name !== 'constructor' && typeof constructor.prototype[name] === 'function',\n    );\n\n    const proxyFn = (target: { [prop: string]: any }, methodName: string) => {\n        const fn = target[methodName];\n        target[methodName] = function (...args: any[]) {\n            if (this['isDestroyed']) {\n                console.error(`Don't call ${methodName} of the ${constructor.name} that is destroyed.`);\n                return;\n            }\n            return fn.call(this, ...args);\n        };\n    };\n    functions.forEach((name) => proxyFn(constructor.prototype, name));\n}\n","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const measureText = (imageData: ImageData) => {\n    const imageDataInt32Array = new Int32Array(imageData.data.buffer);\n    let left = getLeftPixel(imageDataInt32Array, imageData.width, imageData.height);\n    let top = getTopPixel(imageDataInt32Array, imageData.width, imageData.height);\n    let right = getRightPixel(imageDataInt32Array, imageData.width, imageData.height);\n    let bottom = getBottomPixel(imageDataInt32Array, imageData.width, imageData.height);\n    if (left > right || top > bottom) {\n        left = 0;\n        top = 0;\n        right = 0;\n        bottom = 0;\n    }\n    return {left, top, right, bottom};\n};\n\nexport const getLeftPixel = (imageDataArray: Int32Array, width: number, height: number) => {\n    const verticalCount = imageDataArray.length / width;\n    const acrossCount = imageDataArray.length / height;\n    for (let i = 0; i < acrossCount; i++) {\n        for (let j = 0; j < verticalCount; j++) {\n            if (imageDataArray[i + j * width] !== 0) return i;\n        }\n    }\n    return acrossCount;\n};\n\nexport const getTopPixel = (imageDataArray: Int32Array, width: number, height: number) => {\n    const verticalCount = imageDataArray.length / width;\n    const acrossCount = imageDataArray.length / height;\n    for (let i = 0; i < verticalCount; i++) {\n        for (let j = 0; j < acrossCount; j++) {\n            if (imageDataArray[i * width + j] !== 0) return i;\n        }\n    }\n    return verticalCount;\n};\n\nexport const getRightPixel = (imageDataArray: Int32Array, width: number, height: number) => {\n    const verticalCount = imageDataArray.length / width;\n    const acrossCount = imageDataArray.length / height;\n    for (let i = acrossCount - 1; i > 0; i--) {\n        for (let j = verticalCount - 1; j > 0; j--) {\n            if (imageDataArray[i + width * j] !== 0) return i;\n        }\n    }\n    return 0;\n};\n\nexport const getBottomPixel = (imageDataArray: Int32Array, width: number, height: number) => {\n    const verticalCount = imageDataArray.length / width;\n    const acrossCount = imageDataArray.length / height;\n    for (let i = verticalCount - 1; i > 0; i--) {\n        for (let j = acrossCount - 1; j > 0; j--) {\n            if (imageDataArray[i * width + j] !== 0) return i;\n        }\n    }\n    return 0;\n};","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nimport {measureText} from '../utils/measure-text';\nimport {defaultFontNames, getFontFamilies} from '../utils/font-family';\nimport {getCanvas2D, releaseCanvas2D} from '../utils/canvas';\nimport {TGFXModule} from '../tgfx-module';\nimport {ctor, Rect} from '../types';\n\nexport class ScalerContext {\n    public static canvas: HTMLCanvasElement | OffscreenCanvas;\n    public static context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D;\n    private static hasMeasureBoundsAPI: boolean | undefined = undefined;\n\n    public static getLineCap(cap: ctor): CanvasLineCap {\n        switch (cap) {\n            case TGFXModule.TGFXLineCap.Round:\n                return 'round';\n            case TGFXModule.TGFXLineCap.Square:\n                return 'square';\n            default:\n                return 'butt';\n        }\n    }\n\n    public static getLineJoin(join: ctor): CanvasLineJoin {\n        switch (join) {\n            case TGFXModule.TGFXLineJoin.Round:\n                return 'round';\n            case TGFXModule.TGFXLineJoin.Bevel:\n                return 'bevel';\n            default:\n                return 'miter';\n        }\n    }\n\n    public static setCanvas(canvas: HTMLCanvasElement | OffscreenCanvas) {\n        ScalerContext.canvas = canvas;\n    }\n\n    public static setContext(context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D) {\n        ScalerContext.context = context;\n    }\n\n    public static isUnicodePropertyEscapeSupported(): boolean {\n        try {\n            // eslint-disable-next-line prefer-regex-literals\n            const regex = new RegExp(\"\\\\p{L}\", \"u\");\n            return true;\n        } catch (e) {\n            return false;\n        }\n    }\n\n    public static isEmoji(text: string): boolean {\n        let emojiRegExp: RegExp;\n        if (this.isUnicodePropertyEscapeSupported()) {\n            emojiRegExp = /\\p{Extended_Pictographic}|[#*0-9]\\uFE0F?\\u20E3|[\\uD83C\\uDDE6-\\uD83C\\uDDFF]/u;\n        } else {\n            emojiRegExp = /(\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/;\n        }\n        return emojiRegExp.test(text);\n    }\n\n    private static measureDirectly(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): boolean {\n        if (ScalerContext.hasMeasureBoundsAPI === undefined) {\n            const metrics = ctx.measureText('x');\n            ScalerContext.hasMeasureBoundsAPI = metrics && metrics.actualBoundingBoxAscent > 0;\n        }\n        return ScalerContext.hasMeasureBoundsAPI;\n    }\n\n    private readonly fontName: string;\n    private readonly fontStyle: string;\n    private readonly size: number;\n    private fontMetrics!: {\n        ascent: number;\n        descent: number;\n        xHeight: number;\n        capHeight: number;\n    };\n\n    private fontBoundingBoxMap: { key: string; value: Rect }[] = [];\n\n    public constructor(fontName: string, fontStyle: string, size: number) {\n        this.fontName = fontName;\n        this.fontStyle = fontStyle;\n        this.size = size;\n        this.loadCanvas();\n    }\n\n    public fontString(fauxBold: boolean, fauxItalic: boolean) {\n        const attributes = [];\n        // css font-style\n        if (fauxItalic) {\n            attributes.push('italic');\n        }\n        // css font-weight\n        if (fauxBold) {\n            attributes.push('bold');\n        }\n        // css font-size\n        attributes.push(`${this.size}px`);\n        // css font-family\n        const fallbackFontNames = defaultFontNames.concat();\n        fallbackFontNames.unshift(...getFontFamilies(this.fontName, this.fontStyle));\n        attributes.push(`${fallbackFontNames.join(',')}`);\n        return attributes.join(' ');\n    }\n\n    public getFontMetrics() {\n        if (this.fontMetrics) {\n            return this.fontMetrics;\n        }\n        const {context} = ScalerContext;\n        context.font = this.fontString(false, false);\n        const metrics = this.measureText(context, 'H');\n        const capHeight = metrics.actualBoundingBoxAscent;\n        const xMetrics = this.measureText(context, 'x');\n        const xHeight = xMetrics.actualBoundingBoxAscent;\n        this.fontMetrics = {\n            ascent: -metrics.fontBoundingBoxAscent,\n            descent: metrics.fontBoundingBoxDescent,\n            xHeight,\n            capHeight,\n        };\n        return this.fontMetrics;\n    }\n\n    public getBounds(text: string, fauxBold: boolean, fauxItalic: boolean) {\n        const {context} = ScalerContext;\n        context.font = this.fontString(fauxBold, fauxItalic);\n        const metrics = this.measureText(context, text);\n        const bounds: Rect = {\n            left: Math.floor(-metrics.actualBoundingBoxLeft),\n            top: Math.floor(-metrics.actualBoundingBoxAscent),\n            right: Math.ceil(metrics.actualBoundingBoxRight),\n            bottom: Math.ceil(metrics.actualBoundingBoxDescent),\n        };\n        if (bounds.left >= bounds.right || bounds.top >= bounds.bottom) {\n            bounds.left = 0;\n            bounds.top = 0;\n            bounds.right = 0;\n            bounds.bottom = 0;\n        }\n        return bounds;\n    }\n\n    public getAdvance(text: string) {\n        const {context} = ScalerContext;\n        context.font = this.fontString(false, false);\n        return context.measureText(text).width;\n    }\n\n    public readPixels(\n        text: string,\n        bounds: Rect,\n        fauxBold: boolean,\n        stroke ?: { width: number; cap: ctor; join: ctor; miterLimit: number }\n    ) {\n        const width = bounds.right - bounds.left;\n        const height = bounds.bottom - bounds.top\n        const canvas = getCanvas2D(width, height);\n        const context = canvas.getContext('2d',{willReadFrequently: true}) as CanvasRenderingContext2D;\n        context.clearRect(0, 0, width, height);\n        context.font = this.fontString(fauxBold, false);\n        if (stroke){\n            context.lineJoin = ScalerContext.getLineJoin(stroke.join);\n            context.miterLimit = stroke.miterLimit;\n            context.lineCap = ScalerContext.getLineCap(stroke.cap);\n            context.lineWidth = stroke.width;\n            context.strokeText(text, -bounds.left, -bounds.top);\n        } else {\n            context.fillText(text, -bounds.left, -bounds.top);\n        }\n        const {data} = context.getImageData(0, 0, width, height);\n        releaseCanvas2D(canvas);\n        if (data.length === 0) {\n            return null;\n        }\n        return new Uint8Array(data);\n    }\n\n    protected loadCanvas() {\n        if (!ScalerContext.canvas) {\n            ScalerContext.setCanvas(getCanvas2D(10, 10));\n            // https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently\n            ScalerContext.setContext(\n                (ScalerContext.canvas as HTMLCanvasElement | OffscreenCanvas).getContext('2d', {willReadFrequently: true}) as\n                    | CanvasRenderingContext2D\n                    | OffscreenCanvasRenderingContext2D,\n            );\n        }\n    }\n\n    private measureText(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, text: string): TextMetrics {\n        if (ScalerContext.measureDirectly(ctx)) {\n            return ctx.measureText(text);\n        }\n        ctx.canvas.width = this.size * 1.5;\n        ctx.canvas.height = this.size * 1.5;\n        const pos = [0, this.size];\n        ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n        ctx.fillText(text, pos[0], pos[1]);\n        const imageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);\n        const {left, top, right, bottom} = measureText(imageData);\n        ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n\n        let fontMeasure: Rect;\n        const fontBoundingBox = this.fontBoundingBoxMap.find((item) => item.key === this.fontName);\n        if (fontBoundingBox) {\n            fontMeasure = fontBoundingBox.value;\n        } else {\n            ctx.fillText('测', pos[0], pos[1]);\n            const fontImageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);\n            fontMeasure = measureText(fontImageData);\n            this.fontBoundingBoxMap.push({key: this.fontName, value: fontMeasure});\n            ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n        }\n\n        return {\n            actualBoundingBoxAscent: pos[1] - top,\n            actualBoundingBoxRight: right - pos[0],\n            actualBoundingBoxDescent: bottom - pos[1],\n            actualBoundingBoxLeft: pos[0] - left,\n            fontBoundingBoxAscent: fontMeasure.bottom - fontMeasure.top,\n            fontBoundingBoxDescent: 0,\n            width: fontMeasure.right - fontMeasure.left,\n        };\n    }\n\n}\n","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2025 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nimport {TGFXModule} from '../tgfx-module';\nimport {ctor} from '../types';\nimport {getCanvas2D, releaseCanvas2D} from '../utils/canvas';\n\nexport class PathRasterizer {\n    public static readPixels(width: number, height: number, path: Path2D, fillType: ctor) {\n        let canvas = getCanvas2D(width, height);\n        if (canvas == null) {\n            return null;\n        }\n        let context = canvas.getContext('2d', {willReadFrequently: true}) as CanvasRenderingContext2D;\n        context.setTransform(1, 0, 0, 1, 0, 0);\n        if (fillType === TGFXModule.TGFXPathFillType.InverseWinding ||\n            fillType === TGFXModule.TGFXPathFillType.InverseEvenOdd) {\n            context.clip(path, fillType === TGFXModule.TGFXPathFillType.InverseEvenOdd ? 'evenodd' : 'nonzero');\n            context.fillRect(0, 0, width, height);\n        } else {\n            context.fill(path, fillType === TGFXModule.TGFXPathFillType.EvenOdd ? 'evenodd' : 'nonzero');\n        }\n        const {data} = context.getImageData(0, 0, width, height);\n        releaseCanvas2D(canvas);\n        if (data.length === 0) {\n            return null;\n        }\n        return new Uint8Array(data);\n    }\n}\n","/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//  Tencent is pleased to support the open source community by making tgfx available.\n//\n//  Copyright (C) 2023 Tencent. All rights reserved.\n//\n//  Licensed under the BSD 3-Clause License (the \"License\"); you may not use this file except\n//  in compliance with the License. You may obtain a copy of the License at\n//\n//      https://opensource.org/licenses/BSD-3-Clause\n//\n//  unless required by applicable law or agreed to in writing, software distributed under the\n//  license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n//  either express or implied. see the license for the specific language governing permissions\n//  and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nimport {TGFX} from './types'\nimport {setTGFXModule} from './tgfx-module'\nimport * as tgfx from './tgfx'\nimport {Matrix} from './core/matrix'\nimport {ScalerContext} from './core/scaler-context';\nimport {PathRasterizer} from './core/path-rasterizer';\n\nexport const TGFXBind = (module: TGFX) => {\n    setTGFXModule(module)\n    module.module = module\n    module.ScalerContext = ScalerContext\n    module.WebMask = PathRasterizer\n    module.Matrix = Matrix\n    module.tgfx = {...tgfx};\n}\n","import { PAG } from './types';\nimport { setPAGModule } from './pag-module';\nimport { PAGFile } from './pag-file';\nimport { PAGSurface } from './pag-surface';\nimport { PAGPlayer } from './pag-player';\nimport { PAGImage } from './pag-image';\nimport { PAGView } from './pag-view';\nimport { PAGFont } from './pag-font';\nimport { PAGLayer } from './pag-layer';\nimport { VideoReader } from './core/video-reader';\nimport { GlobalCanvas } from './core/global-canvas';\nimport { BackendContext } from './core/backend-context';\nimport { PAGComposition } from './pag-composition';\nimport { PAGTextLayer } from './pag-text-layer';\nimport { PAGImageLayer } from './pag-image-layer';\nimport { PAGSolidLayer } from './pag-solid-layer';\nimport { Matrix } from './core/matrix';\nimport { RenderCanvas } from './core/render-canvas';\nimport { setMixin } from './utils/mixin';\nimport { TGFXBind } from '@tgfx/binding';\n\n/**\n * Binding pag js module on pag webassembly module.\n */\nexport const PAGBind = (module: PAG) => {\n  TGFXBind(module);\n  setPAGModule(module);\n  module.module = module;\n  module.PAGFile = PAGFile;\n  module.PAGPlayer = PAGPlayer;\n  module.PAGView = PAGView;\n  module.PAGFont = PAGFont;\n  module.PAGImage = PAGImage;\n  module.PAGLayer = PAGLayer;\n  module.PAGComposition = PAGComposition;\n  module.PAGSurface = PAGSurface;\n  module.PAGTextLayer = PAGTextLayer;\n  module.PAGImageLayer = PAGImageLayer;\n  module.PAGSolidLayer = PAGSolidLayer;\n  module.VideoReader = VideoReader;\n  module.GlobalCanvas = GlobalCanvas;\n  module.BackendContext = BackendContext;\n  module.Matrix = Matrix;\n  module.RenderCanvas = RenderCanvas;\n  module._useSoftwareDecoder = false;\n  setMixin(module);\n};\n","import { IPHONE } from './ua';\n\nimport type { PAG } from '../types';\n\nexport const setMixin = (module: PAG) => {\n  module.traceImage = function (info, pixels) {\n    const canvas = document.createElement('canvas');\n    canvas.width = info.width;\n    canvas.height = info.height;\n    const context = canvas.getContext('2d') as CanvasRenderingContext2D;\n    const imageData = new ImageData(new Uint8ClampedArray(pixels), canvas.width, canvas.height);\n    context.putImageData(imageData, 0, 0);\n    document.body.appendChild(canvas);\n  };\n  module.registerSoftwareDecoderFactory = function (factory = null) {\n    module._registerSoftwareDecoderFactory(factory);\n    module._useSoftwareDecoder = true;\n  };\n  module.SDKVersion = function () {\n    return module._SDKVersion();\n  };\n  module.isIPhone = () => IPHONE;\n};\n","async function PAGInit(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!=\"undefined\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&process.versions?.node&&process.type!=\"renderer\";var arguments_=[];var thisProgram=\"./this.program\";var _scriptName=import.meta.url;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(\".\",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:\"same-origin\"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+\" : \"+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var readyPromiseResolve,readyPromiseReject;var wasmMemory;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var HEAP64,HEAPU64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.initialized)FS.init();TTY.init();wasmExports[\"Bc\"]();FS.ignorePermissions=false}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module[\"onAbort\"]?.(what);what=\"Aborted(\"+what+\")\";err(what);ABORT=true;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module[\"locateFile\"]){return locateFile(\"libpag.wasm\")}return new URL(\"libpag.wasm\",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\"both async and sync fetching of the wasm failed\"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary){try{var response=fetch(binaryFile,{credentials:\"same-origin\"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports[\"Ac\"];updateMemoryViews();wasmTable=wasmExports[\"Dc\"];assignWasmExports(wasmExports);return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result[\"instance\"])}var info=getWasmImports();if(Module[\"instantiateWasm\"]){return new Promise((resolve,reject)=>{Module[\"instantiateWasm\"](info,(mod,inst)=>{resolve(receiveInstance(mod,inst))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name=\"ExitStatus\";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\\/]+|\\/)\\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join(\"/\")),join2:(l,r)=>PATH.normalize(l+\"/\"+r)};var initRandomFill=()=>view=>crypto.getRandomValues(view);var randomFill=view=>{(randomFill=initRandomFill())(view)};var PATH_FS={resolve:(...args)=>{var resolvedPath=\"\",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!==\"\")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push(\"..\")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join(\"/\")}};var UTF8Decoder=new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(heapOrArray.buffer?heapOrArray.subarray(idx,endPtr):new Uint8Array(heapOrArray.slice(idx,endPtr)))};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.codePointAt(i);if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.atime=Date.now()}return bytesRead},write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.mtime=stream.node.ctime=Date.now()}return i}},default_tty_ops:{get_char(tty){return FS_stdin_getChar()},put_char(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,\"/\",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of[\"mode\",\"atime\",\"mtime\",\"ctime\"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=\"<generic error, no stack>\"}throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[\".\",\"..\",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}if(contents){if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}HEAP8.set(contents,ptr)}}return{ptr,allocated}},msync(stream,buffer,offset,length,mmapFlags){MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS_modeStringToFlags=str=>{var flagModes={r:0,\"r+\":2,w:512|64|1,\"w+\":512|64|2,a:1024|64|1,\"a+\":1024|64|2};var flags=flagModes[str];if(typeof flags==\"undefined\"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module[\"monitorRunDependencies\"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module[\"monitorRunDependencies\"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!=\"undefined\")Browser.init();for(var plugin of preloadPlugins){if(plugin[\"canHandle\"](fullname)){return plugin[\"handle\"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url==\"string\"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{FS_preloadFile(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish).then(onload).catch(onerror)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,filesystems:null,syncFSRequests:0,readFiles:{},ErrnoError:class{name=\"ErrnoError\";constructor(errno){this.errno=errno}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+\"/\"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split(\"/\").filter(p=>!!p);var current=FS.root;var current_path=\"/\";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}if(parts[i]===\".\"){continue}if(parts[i]===\"..\"){current_path=PATH.dirname(current_path);if(FS.isRoot(current)){path=current_path+\"/\"+parts.slice(i+1).join(\"/\");nlinks--;continue linkloop}else{current=current.parent}continue}current_path=PATH.join2(current_path,parts[i]);try{current=FS.lookupNode(current,parts[i])}catch(e){if(e?.errno===44&&islast&&opts.noent_okay){return{path:current_path}}throw e}if(FS.isMountpoint(current)&&(!islast||opts.follow_mount)){current=current.mounted.root}if(FS.isLink(current.mode)&&(!islast||opts.follow)){if(!current.node_ops.readlink){throw new FS.ErrnoError(52)}var link=current.node_ops.readlink(current);if(!PATH.isAbs(link)){link=PATH.dirname(current_path)+\"/\"+link}path=link+\"/\"+parts.slice(i+1).join(\"/\");continue linkloop}}return{path:current_path,node:current}}throw new FS.ErrnoError(32)},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&(512|64)){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);setattr(arg,attr)},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name===\".\"||name===\"..\"){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+=\"/\";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS_modeStringToFlags(flags):flags;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path==\"object\"){node=path}else{isDirPath=path.endsWith(\"/\");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error(`Invalid encoding type \"${opts.encoding}\"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){data=new Uint8Array(intArrayFromString(data,true))}if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice(\"/dev\",\"random\",randomByte);FS.createDevice(\"/dev\",\"urandom\",randomByte);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount(){var node=FS.createNode(proc_self,\"fd\",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},\"/proc/self/fd\")},createStandardStreams(input,output,error){if(input){FS.createDevice(\"/dev\",\"stdin\",input)}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(output){FS.createDevice(\"/dev\",\"stdout\",null,output)}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(error){FS.createDevice(\"/dev\",\"stderr\",null,error)}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module[\"stdin\"];output??=Module[\"stdout\"];error??=Module[\"stderr\"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.atime=Date.now()}return bytesRead},write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.mtime=stream.node.ctime=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else{try{obj.contents=readBinary(obj.url)}catch(e){throw new FS.ErrnoError(29)}}},createLazyFile(parent,name,url,canRead,canWrite){class LazyUint8Array{lengthKnown=false;chunks=[];get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||\"\",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size}stream_ops.read=(stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>{if(!ptr)return\"\";var end=findStringEnd(HEAPU8,ptr,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(HEAPU8.subarray(ptr,end))};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+\"/\"+path},writeStat(buf,stat){HEAPU32[buf>>2]=stat.dev;HEAPU32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAPU32[buf+12>>2]=stat.uid;HEAPU32[buf+16>>2]=stat.gid;HEAPU32[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;HEAPU32[buf+60>>2]=stats.bsize;HEAP64[buf+8>>3]=BigInt(stats.blocks);HEAP64[buf+16>>3]=BigInt(stats.bfree);HEAP64[buf+24>>3]=BigInt(stats.bavail);HEAP64[buf+32>>3]=BigInt(stats.files);HEAP64[buf+40>>3]=BigInt(stats.ffree);HEAPU32[buf+48>>2]=stats.fsid;HEAPU32[buf+64>>2]=stats.flags;HEAPU32[buf+56>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getdents64(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);stream.getdents||=FS.readdir(stream.path);var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var startIdx=Math.floor(off/struct_size);var endIdx=Math.min(stream.getdents.length,startIdx+Math.floor(count/struct_size));for(var idx=startIdx;idx<endIdx;idx++){var id;var type;var name=stream.getdents[idx];if(name===\".\"){id=stream.node.id;type=4}else if(name===\"..\"){var lookup=FS.lookupPath(stream.path,{parent:true});id=lookup.node.id;type=4}else{var child;try{child=FS.lookupNode(stream.node,name)}catch(e){if(e?.errno===28){continue}throw e}id=child.id;type=FS.isChrdev(child.mode)?2:FS.isDir(child.mode)?4:FS.isLink(child.mode)?10:8}HEAP64[dirp+pos>>3]=BigInt(id);HEAP64[dirp+pos+8>>3]=BigInt((idx+1)*struct_size);HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var __abort_js=()=>abort(\"\");var structRegistrations={};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function readPointer(pointer){return this.fromWireType(HEAPU32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var InternalError=class InternalError extends Error{constructor(message){super(message);this.name=\"InternalError\"}};var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(type=>typeDependencies[type]=dependentTypes);function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i<myTypes.length;++i){registerType(myTypes[i],myTypeConverters[i])}}var typeConverters=new Array(dependentTypes.length);var unregisteredTypes=[];var registered=0;dependentTypes.forEach((dt,i)=>{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};var __embind_finalize_value_object=structType=>{var reg=structRegistrations[structType];delete structRegistrations[structType];var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;var fieldRecords=reg.fields;var fieldTypes=fieldRecords.map(field=>field.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName;var getterReturnType=fieldTypes[i];var optional=fieldTypes[i].optional;var getter=field.getter;var getterContext=field.getterContext;var setterArgumentType=fieldTypes[i+fieldRecords.length];var setter=field.setter;var setterContext=field.setterContext;fields[fieldName]={read:ptr=>getterReturnType.fromWireType(getter(getterContext,ptr)),write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType.toWireType(destructors,o));runDestructors(destructors)},optional}});return[{name:reg.name,fromWireType:ptr=>{var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},toWireType:(destructors,o)=>{for(var fieldName in fields){if(!(fieldName in o)&&!fields[fieldName].optional){throw new TypeError(`Missing field: \"${fieldName}\"`)}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},readValueFromPointer:readPointer,destructorFunction:rawDestructor}]})};var AsciiToString=ptr=>{var str=\"\";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}};var BindingError=class BindingError extends Error{constructor(message){super(message);this.name=\"BindingError\"}};var throwBindingError=message=>{throw new BindingError(message)};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type \"${name}\" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer]:pointer=>HEAPU8[pointer];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];case 8:return signed?pointer=>HEAP64[pointer>>3]:pointer=>HEAPU64[pointer>>3];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{name=AsciiToString(name);const isUnsignedType=minRange===0n;let fromWireType=value=>value;if(isUnsignedType){const bitSize=size*8;fromWireType=value=>BigInt.asUintN(bitSize,value);maxRange=fromWireType(maxRange)}registerType(primitiveType,{name,fromWireType,toWireType:(destructors,value)=>{if(typeof value==\"number\"){value=BigInt(value)}return value},readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=AsciiToString(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},readValueFromPointer:function(pointer){return this.fromWireType(HEAPU8[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var attachFinalizer=handle=>{if(\"undefined\"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}};var delayFunction;var init_ClassHandle=()=>{let proto=ClassHandle.prototype;Object.assign(proto,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}});const symbolDispose=Symbol.dispose;if(symbolDispose){proto[symbolDispose]=proto[\"delete\"]}};function ClassHandle(){}var createNamedFunction=(name,func)=>Object.defineProperty(func,\"name\",{value:name});var registeredPointers={};var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module[name].overloadTable.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};var embindRepr=v=>{if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle[\"delete\"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError(\"Unsupporting sharing policy\")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError(\"ptr should not be undefined\")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else{var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&&registeredClass.baseClass===undefined){if(isConst){this.toWireType=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this.toWireType=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this.toWireType=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistent public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var wasmTable;var getWasmTableEntry=funcPtr=>wasmTable.get(funcPtr);var embind__requireFunction=(signature,rawFunction,isAsync=false)=>{signature=AsciiToString(signature);function makeDynCaller(){var rtn=getWasmTableEntry(rawFunction);return rtn}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};class UnboundTypeError extends Error{}var getTypeName=type=>{var ptr=___getTypeName(type);var rv=AsciiToString(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([\", \"]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=AsciiToString(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(`Use 'new' to construct ${name}`)}if(undefined===registeredClass.constructor_body){throw new BindingError(`${name} has no accessible constructor`)}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};function usesDestructorStack(argTypes){for(var i=1;i<argTypes.length;++i){if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){return true}}return false}function createJsInvoker(argTypes,isClassMethodFunc,returns,isAsync){var needsDestructorStack=usesDestructorStack(argTypes);var argCount=argTypes.length-2;var argsList=[];var argsListWired=[\"fn\"];if(isClassMethodFunc){argsListWired.push(\"thisWired\")}for(var i=0;i<argCount;++i){argsList.push(`arg${i}`);argsListWired.push(`arg${i}Wired`)}argsList=argsList.join(\",\");argsListWired=argsListWired.join(\",\");var invokerFnBody=`return function (${argsList}) {\\n`;if(needsDestructorStack){invokerFnBody+=\"var destructors = [];\\n\"}var dtorStack=needsDestructorStack?\"destructors\":\"null\";var args1=[\"humanName\",\"throwBindingError\",\"invoker\",\"fn\",\"runDestructors\",\"fromRetWire\",\"toClassParamWire\"];if(isClassMethodFunc){invokerFnBody+=`var thisWired = toClassParamWire(${dtorStack}, this);\\n`}for(var i=0;i<argCount;++i){var argName=`toArg${i}Wire`;invokerFnBody+=`var arg${i}Wired = ${argName}(${dtorStack}, arg${i});\\n`;args1.push(argName)}invokerFnBody+=(returns||isAsync?\"var rv = \":\"\")+`invoker(${argsListWired});\\n`;if(needsDestructorStack){invokerFnBody+=\"runDestructors(destructors);\\n\"}else{for(var i=isClassMethodFunc?1:2;i<argTypes.length;++i){var paramName=i===1?\"thisWired\":\"arg\"+(i-2)+\"Wired\";if(argTypes[i].destructorFunction!==null){invokerFnBody+=`${paramName}_dtor(${paramName});\\n`;args1.push(`${paramName}_dtor`)}}}if(returns){invokerFnBody+=\"var ret = fromRetWire(rv);\\n\"+\"return ret;\\n\"}else{}invokerFnBody+=\"}\\n\";return new Function(args1,invokerFnBody)}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc,isAsync){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=usesDestructorStack(argTypes);var returns=!argTypes[0].isVoid;var retType=argTypes[0];var instType=argTypes[1];var closureArgs=[humanName,throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,retType.fromWireType.bind(retType),instType?.toWireType.bind(instType)];for(var i=2;i<argCount;++i){var argType=argTypes[i];closureArgs.push(argType.toWireType.bind(argType))}if(!needsDestructorStack){for(var i=isClassMethodFunc?1:2;i<argTypes.length;++i){if(argTypes[i].destructorFunction!==null){closureArgs.push(argTypes[i].destructorFunction)}}}let invokerFactory=createJsInvoker(argTypes,isClassMethodFunc,returns,isAsync);var invokerFn=invokerFactory(...closureArgs);return createNamedFunction(humanName,invokerFn)}var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i<count;i++){array.push(HEAPU32[firstElement+i*4>>2])}return array};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf(\"(\");if(argsIndex===-1)return signature;return signature.slice(0,argsIndex)};var __embind_register_class_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,fn,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=AsciiToString(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker,isAsync);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}if(methodName.startsWith(\"@@\")){methodName=Symbol[methodName.substring(2)]}var proto=classType.registeredClass.constructor;if(undefined===proto[methodName]){unboundTypesHandler.argCount=argCount-1;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-1]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));var func=craftInvokerFunction(humanName,invokerArgsArray,null,rawInvoker,fn,isAsync);if(undefined===proto[methodName].overloadTable){func.argCount=argCount-1;proto[methodName]=func}else{proto[methodName].overloadTable[argCount-1]=func}if(classType.registeredClass.__derivedClasses){for(const derivedClass of classType.registeredClass.__derivedClasses){if(!derivedClass.constructor.hasOwnProperty(methodName)){derivedClass.constructor[methodName]=func}}}return[]});return[]})};var __embind_register_class_constructor=(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=AsciiToString(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker,isAsync);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith(\"@@\")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var validateThis=(this_,classType,humanName)=>{if(!(this_ instanceof Object)){throwBindingError(`${humanName} with invalid \"this\": ${this_}`)}if(!(this_ instanceof classType.registeredClass.constructor)){throwBindingError(`${humanName} incompatible with \"this\" of type ${this_.constructor.name}`)}if(!this_.$$.ptr){throwBindingError(`cannot call emscripten binding method ${humanName} on deleted object`)}return upcastPointer(this_.$$.ptr,this_.$$.ptrType.registeredClass,classType.registeredClass)};var __embind_register_class_property=(classType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{fieldName=AsciiToString(fieldName);getter=embind__requireFunction(getterSignature,getter);whenDependentTypesAreResolved([],[classType],classType=>{classType=classType[0];var humanName=`${classType.name}.${fieldName}`;var desc={get(){throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType])},enumerable:true,configurable:true};if(setter){desc.set=()=>throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType])}else{desc.set=v=>throwBindingError(humanName+\" is a read-only property\")}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],types=>{var getterReturnType=types[0];var desc={get(){var ptr=validateThis(this,classType,humanName+\" getter\");return getterReturnType.fromWireType(getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+\" setter\");var destructors=[];setter(setterContext,ptr,setterArgumentType.toWireType(destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})};var emval_freelist=[];var emval_handles=[0,1,,1,null,1,true,1,false,1];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var Emval={toValue:handle=>{if(!handle){throwBindingError(`Cannot use deleted val. handle = ${handle}`)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:\"emscripten::val\",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var enumReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?function(pointer){return this.fromWireType(HEAP8[pointer])}:function(pointer){return this.fromWireType(HEAPU8[pointer])};case 2:return signed?function(pointer){return this.fromWireType(HEAP16[pointer>>1])}:function(pointer){return this.fromWireType(HEAPU16[pointer>>1])};case 4:return signed?function(pointer){return this.fromWireType(HEAP32[pointer>>2])}:function(pointer){return this.fromWireType(HEAPU32[pointer>>2])};default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_enum=(rawType,name,size,isSigned)=>{name=AsciiToString(name);function ctor(){}ctor.values={};registerType(rawType,{name,constructor:ctor,fromWireType:function(c){return this.constructor.values[c]},toWireType:(destructors,c)=>c.value,readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var __embind_register_enum_value=(rawEnumType,name,enumValue)=>{var enumType=requireRegisteredType(rawEnumType,\"enum\");name=AsciiToString(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(`${enumType.name}_${name}`,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this.fromWireType(HEAPF32[pointer>>2])};case 8:return function(pointer){return this.fromWireType(HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=AsciiToString(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync,isNonnullReturn)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=AsciiToString(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker,isAsync);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=AsciiToString(name);const isUnsignedType=minRange===0;let fromWireType=value=>value;if(isUnsignedType){var bitshift=32-8*size;fromWireType=value=>value<<bitshift>>>bitshift;maxRange=fromWireType(maxRange)}registerType(primitiveType,{name,fromWireType,toWireType:(destructors,value)=>value,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=AsciiToString(name);registerType(rawType,{name,fromWireType:decodeMemoryView,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var EmValOptionalType=Object.assign({optional:true},EmValType);var __embind_register_optional=(rawOptionalType,rawType)=>{registerType(rawOptionalType,EmValOptionalType)};var __embind_register_smart_ptr=(rawType,rawPointeeType,name,sharingPolicy,getPointeeSignature,rawGetPointee,constructorSignature,rawConstructor,shareSignature,rawShare,destructorSignature,rawDestructor)=>{name=AsciiToString(name);rawGetPointee=embind__requireFunction(getPointeeSignature,rawGetPointee);rawConstructor=embind__requireFunction(constructorSignature,rawConstructor);rawShare=embind__requireFunction(shareSignature,rawShare);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);whenDependentTypesAreResolved([rawType],[rawPointeeType],pointeeType=>{pointeeType=pointeeType[0];var registeredPointer=new RegisteredPointer(name,pointeeType.registeredClass,false,false,true,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor);return[registeredPointer]})};var __embind_register_std_string=(rawType,name)=>{name=AsciiToString(name);var stdStringIsUTF8=true;registerType(rawType,{name,fromWireType(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){str=UTF8ToString(payload,length,true)}else{str=\"\";for(var i=0;i<length;++i){str+=String.fromCharCode(HEAPU8[payload+i])}}_free(value);return str},toWireType(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value)}var length;var valueIsOfTypeString=typeof value==\"string\";if(!(valueIsOfTypeString||ArrayBuffer.isView(value)&&value.BYTES_PER_ELEMENT==1)){throwBindingError(\"Cannot pass non-string to std::string\")}if(stdStringIsUTF8&&valueIsOfTypeString){length=lengthBytesUTF8(value)}else{length=value.length}var base=_malloc(4+length+1);var ptr=base+4;HEAPU32[base>>2]=length;if(valueIsOfTypeString){if(stdStringIsUTF8){stringToUTF8(value,ptr,length+1)}else{for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);if(charCode>255){_free(base);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+i]=charCode}}}else{HEAPU8.set(value,ptr)}if(destructors!==null){destructors.push(_free,base)}return base},readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var UTF16Decoder=new TextDecoder(\"utf-16le\");var UTF16ToString=(ptr,maxBytesToRead,ignoreNul)=>{var idx=ptr>>1;var endIdx=findStringEnd(HEAPU16,idx,maxBytesToRead/2,ignoreNul);return UTF16Decoder.decode(HEAPU16.subarray(idx,endIdx))};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead,ignoreNul)=>{var str=\"\";var startIdx=ptr>>2;for(var i=0;!(i>=maxBytesToRead/4);i++){var utf32=HEAPU32[startIdx+i];if(!utf32&&!ignoreNul)break;str+=String.fromCodePoint(utf32)}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codePoint=str.codePointAt(i);if(codePoint>65535){i++}HEAP32[outPtr>>2]=codePoint;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i<str.length;++i){var codePoint=str.codePointAt(i);if(codePoint>65535){i++}len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=AsciiToString(name);var decodeString,encodeString,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16}else{decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32}registerType(rawType,{name,fromWireType:value=>{var length=HEAPU32[value>>2];var str=decodeString(value+4,length*charSize,true);_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value==\"string\")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_value_object=(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor)=>{structRegistrations[rawType]={name:AsciiToString(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}};var __embind_register_value_object_field=(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{structRegistrations[structType].fields.push({fieldName:AsciiToString(fieldName),getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext,setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext})};var __embind_register_void=(rawType,name)=>{name=AsciiToString(name);registerType(rawType,{isVoid:true,name,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var emval_methodCallers=[];var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i<argCount;++i){a[i]=requireRegisteredType(HEAPU32[argTypes+i*4>>2],`parameter ${i}`)}return a};var emval_returnValue=(toReturnWire,destructorsRef,handle)=>{var destructors=[];var result=toReturnWire(destructors,handle);if(destructors.length){HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return AsciiToString(address)}return symbol};var __emval_create_invoker=(argCount,argTypesPtr,kind)=>{var GenericWireTypeSize=8;var[retType,...argTypes]=emval_lookupTypes(argCount,argTypesPtr);var toReturnWire=retType.toWireType.bind(retType);var argFromPtr=argTypes.map(type=>type.readValueFromPointer.bind(type));argCount--;var captures={toValue:Emval.toValue};var args=argFromPtr.map((argFromPtr,i)=>{var captureName=`argFromPtr${i}`;captures[captureName]=argFromPtr;return`${captureName}(args${i?\"+\"+i*GenericWireTypeSize:\"\"})`});var functionBody;switch(kind){case 0:functionBody=\"toValue(handle)\";break;case 2:functionBody=\"new (toValue(handle))\";break;case 3:functionBody=\"\";break;case 1:captures[\"getStringOrSymbol\"]=getStringOrSymbol;functionBody=\"toValue(handle)[getStringOrSymbol(methodName)]\";break}functionBody+=`(${args})`;if(!retType.isVoid){captures[\"toReturnWire\"]=toReturnWire;captures[\"emval_returnValue\"]=emval_returnValue;functionBody=`return emval_returnValue(toReturnWire, destructorsRef, ${functionBody})`}functionBody=`return function (handle, methodName, destructorsRef, args) {\\n  ${functionBody}\\n  }`;var invokerFunction=new Function(Object.keys(captures),functionBody)(...Object.values(captures));var functionName=`methodCaller<(${argTypes.map(t=>t.name)}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_equals=(first,second)=>{first=Emval.toValue(first);second=Emval.toValue(second);return first==second};var emval_get_global=()=>globalThis;var __emval_get_global=name=>{if(name===0){return Emval.toHandle(emval_get_global())}else{name=getStringOrSymbol(name);return Emval.toHandle(emval_get_global()[name])}};var __emval_get_module_property=name=>{name=getStringOrSymbol(name);return Emval.toHandle(Module[name])};var __emval_get_property=(handle,key)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(handle[key])};var __emval_incref=handle=>{if(handle>9){emval_handles[handle+1]+=1}};var __emval_instanceof=(object,constructor)=>{object=Emval.toValue(object);constructor=Emval.toValue(constructor);return object instanceof constructor};var __emval_invoke=(caller,handle,methodName,destructorsRef,args)=>emval_methodCallers[caller](handle,methodName,destructorsRef,args);var __emval_new_array=()=>Emval.toHandle([]);var __emval_new_cstring=v=>Emval.toHandle(getStringOrSymbol(v));var __emval_new_object=()=>Emval.toHandle({});var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var __emval_set_property=(handle,key,value)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);value=Emval.toValue(value);handle[key]=value};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>num<INT53_MIN||num>INT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var maybeCStringToJsString=cString=>cString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!=\"undefined\"?document:0,typeof window!=\"undefined\"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=\"undefined\"?document.querySelector(target):null);return domElement};var findCanvasEventTarget=findEventTarget;var _emscripten_get_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height};var GLctx;var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=(index,divisor)=>ext[\"vertexAttribDivisorANGLE\"](index,divisor);ctx[\"drawArraysInstanced\"]=(mode,first,count,primcount)=>ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount);ctx[\"drawElementsInstanced\"]=(mode,count,type,indices,primcount)=>ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=()=>ext[\"createVertexArrayOES\"]();ctx[\"deleteVertexArray\"]=vao=>ext[\"deleteVertexArrayOES\"](vao);ctx[\"bindVertexArray\"]=vao=>ext[\"bindVertexArrayOES\"](vao);ctx[\"isVertexArray\"]=vao=>ext[\"isVertexArrayOES\"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=(n,bufs)=>ext[\"drawBuffersWEBGL\"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension(\"WEBGL_draw_instanced_base_vertex_base_instance\"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension(\"WEBGL_multi_draw_instanced_base_vertex_base_instance\"));var webgl_enable_EXT_polygon_offset_clamp=ctx=>!!(ctx.extPolygonOffsetClamp=ctx.getExtension(\"EXT_polygon_offset_clamp\"));var webgl_enable_EXT_clip_control=ctx=>!!(ctx.extClipControl=ctx.getExtension(\"EXT_clip_control\"));var webgl_enable_WEBGL_polygon_mode=ctx=>!!(ctx.webglPolygonMode=ctx.getExtension(\"WEBGL_polygon_mode\"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension(\"WEBGL_multi_draw\"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=[\"ANGLE_instanced_arrays\",\"EXT_blend_minmax\",\"EXT_disjoint_timer_query\",\"EXT_frag_depth\",\"EXT_shader_texture_lod\",\"EXT_sRGB\",\"OES_element_index_uint\",\"OES_fbo_render_mipmap\",\"OES_standard_derivatives\",\"OES_texture_float\",\"OES_texture_half_float\",\"OES_texture_half_float_linear\",\"OES_vertex_array_object\",\"WEBGL_color_buffer_float\",\"WEBGL_depth_texture\",\"WEBGL_draw_buffers\",\"EXT_color_buffer_float\",\"EXT_conservative_depth\",\"EXT_disjoint_timer_query_webgl2\",\"EXT_texture_norm16\",\"NV_shader_noperspective_interpolation\",\"WEBGL_clip_cull_distance\",\"EXT_clip_control\",\"EXT_color_buffer_half_float\",\"EXT_depth_clamp\",\"EXT_float_blend\",\"EXT_polygon_offset_clamp\",\"EXT_texture_compression_bptc\",\"EXT_texture_compression_rgtc\",\"EXT_texture_filter_anisotropic\",\"KHR_parallel_shader_compile\",\"OES_texture_float_linear\",\"WEBGL_blend_func_extended\",\"WEBGL_compressed_texture_astc\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_etc1\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_compressed_texture_s3tc_srgb\",\"WEBGL_debug_renderer_info\",\"WEBGL_debug_shaders\",\"WEBGL_lose_context\",\"WEBGL_multi_draw\",\"WEBGL_polygon_mode\"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,unpackRowLength:0,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},genObject:(n,buffers,createFunction,objectTable)=>{for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}},getSource:(shader,count,string,length)=>{var source=\"\";for(var i=0;i<count;++i){var len=length?HEAPU32[length+i*4>>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver==\"webgl\"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext(\"webgl2\",webGLContextAttributes):canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module[\"ctx\"]=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents==\"object\"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]?.GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_multi_draw(GLctx);webgl_enable_EXT_polygon_offset_clamp(GLctx);webgl_enable_EXT_clip_control(GLctx);webgl_enable_WEBGL_polygon_mode(GLctx);webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query_webgl2\")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\")}getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes(\"lose_context\")&&!ext.includes(\"debug\")){GLctx.getExtension(ext)}})}};var _glActiveTexture=x0=>GLctx.activeTexture(x0);var _emscripten_glActiveTexture=_glActiveTexture;var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glAttachShader=_glAttachShader;var _glBindAttribLocation=(program,index,name)=>{GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _emscripten_glBindAttribLocation=_glBindAttribLocation;var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _emscripten_glBindBuffer=_glBindBuffer;var _glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferBase=_glBindBufferBase;var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindFramebuffer=_glBindFramebuffer;var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTexture=_glBindTexture;var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;var _glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _emscripten_glBlendColor=_glBlendColor;var _glBlendEquation=x0=>GLctx.blendEquation(x0);var _emscripten_glBlendEquation=_glBlendEquation;var _glBlendEquationSeparate=(x0,x1)=>GLctx.blendEquationSeparate(x0,x1);var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _emscripten_glBlendFunc=_glBlendFunc;var _glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;var _glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferData=_glBufferData;var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glBufferSubData=_glBufferSubData;var _glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;var _glClear=x0=>GLctx.clear(x0);var _emscripten_glClear=_glClear;var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _emscripten_glClearColor=_glClearColor;var _glClearDepthf=x0=>GLctx.clearDepth(x0);var _emscripten_glClearDepthf=_glClearDepthf;var _glClearStencil=x0=>GLctx.clearStencil(x0);var _emscripten_glClearStencil=_glClearStencil;var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorMask=_glColorMask;var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _emscripten_glCompileShader=_glCompileShader;var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8.subarray(data,data+imageSize))};var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;var _glCompressedTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8.subarray(data,data+imageSize))};var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;var _glCopyTexSubImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _emscripten_glCreateProgram=_glCreateProgram;var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _emscripten_glCreateShader=_glCreateShader;var _glCullFace=x0=>GLctx.cullFace(x0);var _emscripten_glCullFace=_glCullFace;var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteBuffers=_glDeleteBuffers;var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _emscripten_glDeleteProgram=_glDeleteProgram;var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _emscripten_glDeleteShader=_glDeleteShader;var _glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteSync=_glDeleteSync;var _glDeleteTextures=(n,textures)=>{for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTextures=_glDeleteTextures;var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;var _glDepthFunc=x0=>GLctx.depthFunc(x0);var _emscripten_glDepthFunc=_glDepthFunc;var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _emscripten_glDepthMask=_glDepthMask;var _glDisable=x0=>GLctx.disable(x0);var _emscripten_glDisable=_glDisable;var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _emscripten_glDrawArrays=_glDrawArrays;var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _emscripten_glDrawElements=_glDrawElements;var _glEnable=x0=>GLctx.enable(x0);var _emscripten_glEnable=_glEnable;var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;var _glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFenceSync=_glFenceSync;var _glFinish=()=>GLctx.finish();var _emscripten_glFinish=_glFinish;var _glFlush=()=>GLctx.flush();var _emscripten_glFlush=_glFlush;var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;var _glFrontFace=x0=>GLctx.frontFace(x0);var _emscripten_glFrontFace=_glFrontFace;var _glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,\"createBuffer\",GL.buffers)};var _emscripten_glGenBuffers=_glGenBuffers;var _glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,\"createFramebuffer\",GL.framebuffers)};var _emscripten_glGenFramebuffers=_glGenFramebuffers;var _glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,\"createRenderbuffer\",GL.renderbuffers)};var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;var _glGenTextures=(n,textures)=>{GL.genObject(n,textures,\"createTexture\",GL.textures)};var _emscripten_glGenTextures=_glGenTextures;var _glGenVertexArrays=(n,arrays)=>{GL.genObject(n,arrays,\"createVertexArray\",GL.vaos)};var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;var _glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var _emscripten_glGenerateMipmap=_glGenerateMipmap;var _glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetAttribLocation=_glGetAttribLocation;var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=()=>{var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>\"GL_\"+e));return exts};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case\"number\":ret=result;break;case\"boolean\":ret=result?1:0;break;case\"string\":GL.recordError(1280);return;case\"object\":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);return}}break;default:GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetBooleanv=(name_,p)=>emscriptenWebGLGet(name_,p,4);var _emscripten_glGetBooleanv=_glGetBooleanv;var _glGetBufferParameteriv=(target,value,data)=>{if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)};var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;var _glGetError=()=>{var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetError=_glGetError;var _glGetFramebufferAttachmentParameteriv=(target,attachment,pname,params)=>{var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result};var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;var _glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _emscripten_glGetIntegerv=_glGetIntegerv;var _glGetInternalformativ=(target,internalformat,pname,bufSize,params)=>{if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i<ret.length&&i<bufSize;++i){HEAP32[params+i*4>>2]=ret[i]}};var _emscripten_glGetInternalformativ=_glGetInternalformativ;var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log=\"(unknown error)\";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log=\"(unknown error)\";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){var numActiveUniforms=GLctx.getProgramParameter(program,35718);for(var i=0;i<numActiveUniforms;++i){program.maxUniformLength=Math.max(program.maxUniformLength,GLctx.getActiveUniform(program,i).name.length+1)}}HEAP32[p>>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){var numActiveAttributes=GLctx.getProgramParameter(program,35721);for(var i=0;i<numActiveAttributes;++i){program.maxAttributeLength=Math.max(program.maxAttributeLength,GLctx.getActiveAttrib(program,i).name.length+1)}}HEAP32[p>>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){var numActiveUniformBlocks=GLctx.getProgramParameter(program,35382);for(var i=0;i<numActiveUniformBlocks;++i){program.maxUniformBlockNameLength=Math.max(program.maxUniformBlockNameLength,GLctx.getActiveUniformBlockName(program,i).length+1)}}HEAP32[p>>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _emscripten_glGetProgramiv=_glGetProgramiv;var _glGetRenderbufferParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)};var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log=\"(unknown error)\";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;var _glGetShaderPrecisionFormat=(shaderType,precisionType,range,precision)=>{var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision};var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log=\"(unknown error)\";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _emscripten_glGetShaderiv=_glGetShaderiv;var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(\" \"));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var webGLVersion=GLctx.getParameter(7938);var glVersion=`OpenGL ES 2.0 (${webGLVersion})`;if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${webGLVersion})`;ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+\"0\";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _emscripten_glGetString=_glGetString;var _glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetStringi=_glGetStringi;var _glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;var jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)==\"]\"&&name.lastIndexOf(\"[\");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};var numActiveUniforms=GLctx.getProgramParameter(program,35718);for(i=0;i<numActiveUniforms;++i){var u=GLctx.getActiveUniform(program,i);var nm=u.name;var sz=u.size;var lb=webglGetLeftBracePos(nm);var arrayName=lb>0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j<sz;++j){uniformLocsById[id]=j;program.uniformArrayNamesById[id++]=arrayName}}}};var _glGetUniformLocation=(program,name)=>{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex<sizeAndId[0]){arrayIndex+=sizeAndId[1];if(uniformLocsById[arrayIndex]=uniformLocsById[arrayIndex]||GLctx.getUniformLocation(program,name)){return arrayIndex}}}else{GL.recordError(1281)}return-1};var _emscripten_glGetUniformLocation=_glGetUniformLocation;var _glGetVertexAttribPointerv=(index,pname,pointer)=>{if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)};var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;var emscriptenWebGLGetVertexAttrib=(index,pname,params,type)=>{if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data[\"name\"]}else if(typeof data==\"number\"||typeof data==\"boolean\"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}};var _glGetVertexAttribiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;var _glIsEnabled=x0=>GLctx.isEnabled(x0);var _emscripten_glIsEnabled=_glIsEnabled;var _glIsTexture=id=>{var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTexture=_glIsTexture;var _glLineWidth=x0=>GLctx.lineWidth(x0);var _emscripten_glLineWidth=_glLineWidth;var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _emscripten_glLinkProgram=_glLinkProgram;var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}else if(pname==3314){GL.unpackRowLength=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPixelStorei=_glPixelStorei;var computeUnpackAlignedImageSize=(width,height,sizePerPixel)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=(GL.unpackRowLength||width)*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,GL.unpackAlignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _glReadPixels=(x,y,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels);return}var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target);return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReadPixels=_glReadPixels;var _glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;var _glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;var _glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _emscripten_glScissor=_glScissor;var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _emscripten_glShaderSource=_glShaderSource;var _glStencilFunc=(x0,x1,x2)=>GLctx.stencilFunc(x0,x1,x2);var _emscripten_glStencilFunc=_glStencilFunc;var _glStencilFuncSeparate=(x0,x1,x2,x3)=>GLctx.stencilFuncSeparate(x0,x1,x2,x3);var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;var _glStencilMask=x0=>GLctx.stencilMask(x0);var _emscripten_glStencilMask=_glStencilMask;var _glStencilMaskSeparate=(x0,x1)=>GLctx.stencilMaskSeparate(x0,x1);var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;var _glStencilOp=(x0,x1,x2)=>GLctx.stencilOp(x0,x1,x2);var _emscripten_glStencilOp=_glStencilOp;var _glStencilOpSeparate=(x0,x1,x2,x3)=>GLctx.stencilOpSeparate(x0,x1,x2,x3);var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);var index=toTypedArrayIndex(pixels,heap);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,index);return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null;GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixelData)};var _emscripten_glTexImage2D=_glTexImage2D;var _glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _emscripten_glTexParameterf=_glTexParameterf;var _glTexParameterfv=(target,pname,params)=>{var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameterfv=_glTexParameterfv;var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _emscripten_glTexParameteri=_glTexParameteri;var _glTexParameteriv=(target,pname,params)=>{var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexParameteriv=_glTexParameteriv;var _glTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage2D=_glTexSubImage2D;var webglGetUniformLocation=location=>{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc==\"number\"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:\"\"))}return webglLoc}else{GL.recordError(1282)}};var _glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1f=_glUniform1f;var miniTempWebGLFloatBuffers=[];var _glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1fv=_glUniform1fv;var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1i=_glUniform1i;var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1iv=_glUniform1iv;var _glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2f=_glUniform2f;var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){count*=2;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i<count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2fv=_glUniform2fv;var _glUniform2i=(location,v0,v1)=>{GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2i=_glUniform2i;var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){count*=2;var view=miniTempWebGLIntBuffers[count];for(var i=0;i<count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2iv=_glUniform2iv;var _glUniform3f=(location,v0,v1,v2)=>{GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3f=_glUniform3f;var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){count*=3;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i<count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3fv=_glUniform3fv;var _glUniform3i=(location,v0,v1,v2)=>{GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3i=_glUniform3i;var _glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){count*=3;var view=miniTempWebGLIntBuffers[count];for(var i=0;i<count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3iv=_glUniform3iv;var _glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4f=_glUniform4f;var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count];var heap=HEAPF32;value=value>>2;count*=4;for(var i=0;i<count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4fv=_glUniform4fv;var _glUniform4i=(location,v0,v1,v2,v3)=>{GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4i=_glUniform4i;var _glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){count*=4;var view=miniTempWebGLIntBuffers[count];for(var i=0;i<count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4iv=_glUniform4iv;var _glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;var _glUniformMatrix2fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){count*=4;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i<count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;var _glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){count*=9;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i<count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count];var heap=HEAPF32;value=value>>2;count*=16;for(var i=0;i<count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _emscripten_glUseProgram=_glUseProgram;var _glVertexAttrib1f=(x0,x1)=>GLctx.vertexAttrib1f(x0,x1);var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;var _glVertexAttrib2fv=(index,v)=>{GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;var _glVertexAttrib3fv=(index,v)=>{GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;var _glVertexAttrib4fv=(index,v)=>{GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var _emscripten_glViewport=_glViewport;var _glWaitSync=(sync,flags,timeout)=>{timeout=Number(timeout);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glWaitSync=_glWaitSync;var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var webglPowerPreferences=[\"default\",\"low-power\",\"high-performance\"];var _emscripten_webgl_do_create_context=(target,attributes)=>{var attr32=attributes>>2;var powerPreference=HEAP32[attr32+(8>>2)];var contextAttributes={alpha:!!HEAP8[attributes+0],depth:!!HEAP8[attributes+1],stencil:!!HEAP8[attributes+2],antialias:!!HEAP8[attributes+3],premultipliedAlpha:!!HEAP8[attributes+4],preserveDrawingBuffer:!!HEAP8[attributes+5],powerPreference:webglPowerPreferences[powerPreference],failIfMajorPerformanceCaveat:!!HEAP8[attributes+12],majorVersion:HEAP32[attr32+(16>>2)],minorVersion:HEAP32[attr32+(20>>2)],enableExtensionsByDefault:HEAP8[attributes+24],explicitSwapControl:HEAP8[attributes+25],proxyContextToMainThread:HEAP32[attr32+(28>>2)],renderViaOffscreenBackBuffer:HEAP8[attributes+32]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle};var _emscripten_webgl_create_context=_emscripten_webgl_do_create_context;var _emscripten_webgl_destroy_context=contextHandle=>{if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)};var _emscripten_webgl_do_get_current_context=()=>GL.currentContext?GL.currentContext.handle:0;var _emscripten_webgl_get_current_context=_emscripten_webgl_do_get_current_context;var _emscripten_webgl_make_context_current=contextHandle=>{var success=GL.makeContextCurrent(contextHandle);return success?0:-5};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break;if(typeof offset!=\"undefined\"){offset+=curr}}return ret};function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len){break}if(typeof offset!=\"undefined\"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();init_ClassHandle();init_RegisteredPointer();var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<=288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<=288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i)}{if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(Module[\"preloadPlugins\"])preloadPlugins=Module[\"preloadPlugins\"];if(Module[\"print\"])out=Module[\"print\"];if(Module[\"printErr\"])err=Module[\"printErr\"];if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].shift()()}}}Module[\"GL\"]=GL;var ___getTypeName,_malloc,_free;function assignWasmExports(wasmExports){___getTypeName=wasmExports[\"Cc\"];Module[\"_malloc\"]=_malloc=wasmExports[\"Ec\"];Module[\"_free\"]=_free=wasmExports[\"Fc\"]}var wasmImports={w:___cxa_throw,K:___syscall_fcntl64,hb:___syscall_getdents64,pb:___syscall_ioctl,fb:___syscall_mkdirat,L:___syscall_openat,kb:___syscall_renameat,lb:___syscall_rmdir,gb:___syscall_stat64,mb:___syscall_unlinkat,qb:__abort_js,u:__embind_finalize_value_object,H:__embind_register_bigint,db:__embind_register_bool,i:__embind_register_class,h:__embind_register_class_class_function,v:__embind_register_class_constructor,a:__embind_register_class_function,g:__embind_register_class_property,bb:__embind_register_emval,B:__embind_register_enum,o:__embind_register_enum_value,G:__embind_register_float,I:__embind_register_function,p:__embind_register_integer,j:__embind_register_memory_view,y:__embind_register_optional,n:__embind_register_smart_ptr,cb:__embind_register_std_string,D:__embind_register_std_wstring,t:__embind_register_value_object,l:__embind_register_value_object_field,eb:__embind_register_void,c:__emval_create_invoker,d:__emval_decref,F:__emval_equals,x:__emval_get_global,k:__emval_get_module_property,q:__emval_get_property,f:__emval_incref,_a:__emval_instanceof,b:__emval_invoke,ab:__emval_new_array,s:__emval_new_cstring,$a:__emval_new_object,e:__emval_run_destructors,C:__emval_set_property,ib:_clock_time_get,M:_emscripten_get_canvas_element_size,Za:_emscripten_glActiveTexture,Ya:_emscripten_glAttachShader,Wa:_emscripten_glBindAttribLocation,Va:_emscripten_glBindBuffer,vc:_emscripten_glBindBufferBase,Ua:_emscripten_glBindFramebuffer,Ta:_emscripten_glBindRenderbuffer,Sa:_emscripten_glBindTexture,Ab:_emscripten_glBindVertexArray,yb:_emscripten_glBindVertexArrayOES,Ra:_emscripten_glBlendColor,Qa:_emscripten_glBlendEquation,Bb:_emscripten_glBlendEquationSeparate,Pa:_emscripten_glBlendFunc,Oa:_emscripten_glBlendFuncSeparate,tb:_emscripten_glBlitFramebuffer,Na:_emscripten_glBufferData,Ma:_emscripten_glBufferSubData,La:_emscripten_glCheckFramebufferStatus,Ka:_emscripten_glClear,Ja:_emscripten_glClearColor,Ia:_emscripten_glClearDepthf,Ha:_emscripten_glClearStencil,Ga:_emscripten_glColorMask,Fa:_emscripten_glCompileShader,Ea:_emscripten_glCompressedTexImage2D,Da:_emscripten_glCompressedTexSubImage2D,Ca:_emscripten_glCopyTexSubImage2D,Ba:_emscripten_glCreateProgram,Aa:_emscripten_glCreateShader,za:_emscripten_glCullFace,ya:_emscripten_glDeleteBuffers,xa:_emscripten_glDeleteFramebuffers,wa:_emscripten_glDeleteProgram,va:_emscripten_glDeleteRenderbuffers,ua:_emscripten_glDeleteShader,ub:_emscripten_glDeleteSync,ta:_emscripten_glDeleteTextures,sa:_emscripten_glDeleteVertexArrays,xb:_emscripten_glDeleteVertexArraysOES,ra:_emscripten_glDepthFunc,qa:_emscripten_glDepthMask,pa:_emscripten_glDisable,oa:_emscripten_glDisableVertexAttribArray,na:_emscripten_glDrawArrays,ma:_emscripten_glDrawElements,la:_emscripten_glEnable,ka:_emscripten_glEnableVertexAttribArray,vb:_emscripten_glFenceSync,ja:_emscripten_glFinish,ia:_emscripten_glFlush,ha:_emscripten_glFramebufferRenderbuffer,ga:_emscripten_glFramebufferTexture2D,fa:_emscripten_glFrontFace,ea:_emscripten_glGenBuffers,da:_emscripten_glGenFramebuffers,ba:_emscripten_glGenRenderbuffers,aa:_emscripten_glGenTextures,zb:_emscripten_glGenVertexArrays,wb:_emscripten_glGenVertexArraysOES,ca:_emscripten_glGenerateMipmap,Cb:_emscripten_glGetAttribLocation,W:_emscripten_glGetBooleanv,$:_emscripten_glGetBufferParameteriv,_:_emscripten_glGetError,Z:_emscripten_glGetFramebufferAttachmentParameteriv,Y:_emscripten_glGetIntegerv,X:_emscripten_glGetInternalformativ,V:_emscripten_glGetProgramInfoLog,U:_emscripten_glGetProgramiv,T:_emscripten_glGetRenderbufferParameteriv,S:_emscripten_glGetShaderInfoLog,R:_emscripten_glGetShaderPrecisionFormat,Q:_emscripten_glGetShaderiv,P:_emscripten_glGetString,O:_emscripten_glGetStringi,xc:_emscripten_glGetUniformBlockIndex,yc:_emscripten_glGetUniformLocation,zc:_emscripten_glGetVertexAttribPointerv,N:_emscripten_glGetVertexAttribiv,Xa:_emscripten_glIsEnabled,uc:_emscripten_glIsTexture,tc:_emscripten_glLineWidth,sc:_emscripten_glLinkProgram,rc:_emscripten_glPixelStorei,qc:_emscripten_glReadPixels,pc:_emscripten_glRenderbufferStorage,sb:_emscripten_glRenderbufferStorageMultisample,oc:_emscripten_glScissor,nc:_emscripten_glShaderSource,mc:_emscripten_glStencilFunc,lc:_emscripten_glStencilFuncSeparate,kc:_emscripten_glStencilMask,jc:_emscripten_glStencilMaskSeparate,ic:_emscripten_glStencilOp,hc:_emscripten_glStencilOpSeparate,gc:_emscripten_glTexImage2D,fc:_emscripten_glTexParameterf,ec:_emscripten_glTexParameterfv,dc:_emscripten_glTexParameteri,cc:_emscripten_glTexParameteriv,bc:_emscripten_glTexSubImage2D,ac:_emscripten_glUniform1f,$b:_emscripten_glUniform1fv,_b:_emscripten_glUniform1i,Zb:_emscripten_glUniform1iv,Yb:_emscripten_glUniform2f,Xb:_emscripten_glUniform2fv,Wb:_emscripten_glUniform2i,Vb:_emscripten_glUniform2iv,Ub:_emscripten_glUniform3f,Tb:_emscripten_glUniform3fv,Sb:_emscripten_glUniform3i,Rb:_emscripten_glUniform3iv,Qb:_emscripten_glUniform4f,Pb:_emscripten_glUniform4fv,Ob:_emscripten_glUniform4i,Nb:_emscripten_glUniform4iv,wc:_emscripten_glUniformBlockBinding,Mb:_emscripten_glUniformMatrix2fv,Lb:_emscripten_glUniformMatrix3fv,Kb:_emscripten_glUniformMatrix4fv,Jb:_emscripten_glUseProgram,Ib:_emscripten_glVertexAttrib1f,Hb:_emscripten_glVertexAttrib2fv,Gb:_emscripten_glVertexAttrib3fv,Fb:_emscripten_glVertexAttrib4fv,Eb:_emscripten_glVertexAttribPointer,Db:_emscripten_glViewport,rb:_emscripten_glWaitSync,jb:_emscripten_resize_heap,E:_emscripten_webgl_create_context,A:_emscripten_webgl_destroy_context,r:_emscripten_webgl_get_current_context,m:_emscripten_webgl_make_context_current,z:_fd_close,ob:_fd_read,nb:_fd_seek,J:_fd_write};function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module[\"onRuntimeInitialized\"]?.();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(()=>{setTimeout(()=>Module[\"setStatus\"](\"\"),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})}\n;return moduleRtn}export default PAGInit;\n","export interface Task {\n  fn: () => Promise<any>;\n}\n\nexport class WebAssemblyQueue {\n  private executing = false;\n  private queue: Task[] = [];\n\n  public exec<T>(fn: (...args: any[]) => any, scope: any, ...args: any[]): Promise<T> {\n    return new Promise((resolve, reject) => {\n      const copyFn = async () => {\n        if (!fn) {\n          reject(new Error('Function is null!'));\n          return;\n        }\n        try {\n          const res = await fn.call(scope, ...args);\n          resolve(res);\n        } catch (e) {\n          reject(e);\n        }\n      };\n      this.queue.push({\n        fn: copyFn,\n      });\n      if (this.executing) return;\n      this.execNextTask();\n    });\n  }\n\n  private execNextTask() {\n    if (this.queue.length < 1) {\n      this.executing = false;\n      return;\n    }\n    this.executing = true;\n    const task = this.queue.shift() as Task;\n    task.fn().then(() => {\n      this.execNextTask();\n    });\n  }\n}\n","import './utils/polyfills';\nimport { PAGBind } from './binding';\nimport * as types from './types';\nimport createPAG from './wasm/libpag';\nimport { WebAssemblyQueue } from './utils/queue';\n\nexport interface ModuleOption {\n  /**\n   * Link to wasm file.\n   */\n  locateFile?: (file: 'libpag.wasm') => string;\n}\n\n/**\n * Initialize pag webassembly module.\n */\nconst PAGInit = (moduleOption: ModuleOption = {}): Promise<types.PAG> =>\n  createPAG(moduleOption)\n    .then((module: types.PAG) => {\n      PAGBind(module);\n      module.webAssemblyQueue = new WebAssemblyQueue();\n      module.globalCanvas = new module.GlobalCanvas();\n      module.PAGFont.registerFallbackFontNames();\n      return module;\n    })\n    .catch((error: any) => {\n      console.error(error);\n      throw new Error('PAGInit fail! Please check .wasm file path valid.');\n    });\n\nexport { PAGInit, types };\n"]}